{ "version": 3, "sources": ["../../javascript/controllers/accordion-controller.js", "../../javascript/controllers/accordion2-controller.js", "../../javascript/controllers/admin-beer-controller.js", "../../javascript/controllers/admin-merge-controller.js", "../../javascript/vendor/aria-autocomplete.min.js", "../../javascript/controllers/aria-autocomplete-controller.js", "../../javascript/controllers/auto-save-controller.js", "../../javascript/controllers/auto-textfield-height-controller.js", "../../javascript/controllers/autocomplete-controller.js", "../../javascript/controllers/availability-promo-controller.js", "../../javascript/controllers/beacon-controller.js", "../../javascript/controllers/product-autocomplete-controller.js", "../../javascript/controllers/beer-autocomplete-controller.js", "../../javascript/controllers/beer-info-controller.js", "../../javascript/controllers/beer-suggestions-controller.js", "../../javascript/controllers/beers-added-modal-controller.js", "../../javascript/controllers/block-modal-controller.js", "../../javascript/controllers/brewery-autocomplete-controller.js", "../../javascript/controllers/brewery-multi-select-controller.js", "../../javascript/controllers/bulk-move-controller.js", "../../javascript/controllers/calculator-controller.js", "../../javascript/controllers/calendly-controller.js", "../../javascript/controllers/charts-controller.js", "../../javascript/controllers/checkbox-counter-controller.js", "../../javascript/controllers/checkbox-submit-controller.js", "../../javascript/controllers/checkbox-toggle-controller.js", "../../javascript/controllers/checklist-accordion-controller.js", "../../javascript/controllers/checklists-controller.js", "../../javascript/controllers/choose-saved-card-controller.js", "../../javascript/controllers/clipboard_controller.js", "../../javascript/controllers/closeable-controller.js", "../../javascript/controllers/codemirror-controller.js", "../../javascript/controllers/collapsible-controller.js", "../../javascript/controllers/collapsible-simple-controller.js", "../../javascript/controllers/condition-ids-controller.js", "../../javascript/controllers/conditional-input-controller.js", "../../javascript/controllers/custom-product-autocomplete-controller.js", "../../javascript/controllers/date-input-controller.js", "../../javascript/controllers/digital-display-controller.js", "../../../node_modules/ev-emitter/ev-emitter.js", "../../../node_modules/get-size/get-size.js", "../../../node_modules/desandro-matches-selector/matches-selector.js", "../../../node_modules/fizzy-ui-utils/utils.js", "../../../node_modules/outlayer/item.js", "../../../node_modules/outlayer/outlayer.js", "../../../node_modules/masonry-layout/masonry.js", "../../../node_modules/imagesloaded/imagesloaded.js", "../../javascript/controllers/filter-templates-controller.js", "../../javascript/controllers/fonts-controller.js", "../../javascript/controllers/google-autocomplete-controller.js", "../../javascript/controllers/hamburger-menu-controller.js", "../../javascript/models/debouncer.js", "../../javascript/controllers/hiding-header-controller.js", "../../javascript/controllers/honeybadger-controller.js", "../../javascript/controllers/image-background-remover-controller.js", "../../javascript/lib/load-styles.js", "../../javascript/controllers/image-editor-controller.js", "../../javascript/controllers/location-autocomplete-controller.js", "../../javascript/controllers/masonry-grid-controller.js", "../../javascript/controllers/menu-controller.js", "../../javascript/controllers/menu-search-controller.js", "../../javascript/controllers/menu-section-controller.js", "../../javascript/controllers/menu-sections-controller.js", "../../javascript/controllers/modular-controller.js", "../../javascript/controllers/multi-select-controller.js", "../../javascript/controllers/order-search-controller.js", "../../javascript/controllers/orders-controller.js", "../../javascript/controllers/pickup-locations-controller.js", "../../javascript/controllers/place-lead-controller.js", "../../javascript/controllers/price-calculator-controller.js", "../../javascript/controllers/print-iframe-controller.js", "../../javascript/controllers/print-menu-landing-page-controller.js", "../../javascript/controllers/print-menus-controller.js", "../../javascript/controllers/print-preview-controller.js", "../../javascript/controllers/product-type-controller.js", "../../javascript/controllers/property-segments-controller.js", "../../javascript/controllers/purchase-limit-controller.js", "../../javascript/controllers/remote-file-form-controller.js", "../../javascript/controllers/scroll-to-top-controller.js", "../../javascript/controllers/segmented_field_controller.js", "../../javascript/controllers/segments-controller.js", "../../javascript/controllers/select-all-controller.js", "../../javascript/controllers/serving-controller.js", "../../javascript/controllers/servings-controller.js", "../../javascript/controllers/shoelace-controller.js", "../../javascript/controllers/show-more-controller.js", "../../javascript/controllers/simple-beer-autocomplete-controller.js", "../../javascript/controllers/simple-modular-controller.js", "../../javascript/controllers/smooth-scroller-controller.js", "../../javascript/controllers/sort-store-controller.js", "../../javascript/controllers/sortable-controller.js", "../../javascript/controllers/sortablejs-controller.js", "../../javascript/controllers/sticky-controller.js", "../../javascript/controllers/streamlined-menu-controller.js", "../../javascript/controllers/stripe-controller.js", "../../javascript/controllers/structured-data-controller.js", "../../javascript/controllers/tabs-controller.js", "../../javascript/controllers/tabs2-controller.js", "../../javascript/controllers/textfit-controller.js", "../../javascript/controllers/tracked-clicks-controller.js", "../../javascript/controllers/trix-controller.js", "../../javascript/controllers/turnstile_controller.js", "../../javascript/controllers/tv-preview-controller.js", "../../javascript/controllers/user-preferences-controller.js", "../../javascript/controllers/video-modal-controller.js", "../../javascript/controllers/viewport-calculate-controller.js", "../../javascript/controllers/viewport-entrance-toggle-controller.js", "../../javascript/controllers/visible-anchor-controller.js", "../../javascript/controllers/visible-controller.js", "../../javascript/controllers/visible-from-radio-controller.js", "../../javascript/controllers/web-menu-preview-sizes-controller.js", "import-glob:./controllers/**/*.js", "../../../node_modules/@stimulus-components/dialog/dist/stimulus-dialog.mjs", "../../../node_modules/stimulus-use/dist/index.js", "../../../node_modules/@stimulus-components/dropdown/dist/stimulus-dropdown.mjs", "../../javascript/shared/beermenus.js", "../../javascript/shared/analytics.js"], "sourcesContent": ["import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"section\", \"expanded\", \"content\", \"collapse\"]\n\n async connect() {\n await Accordion.import()\n this.initializeAccordion()\n }\n\n collapse(event) {\n event.preventDefault()\n\n const index = this.collapseTargets.indexOf(event.currentTarget)\n this.$accordions[index].accordion(\"option\", \"active\", false)\n this.scrollTo(this.$accordions[index])\n }\n\n // private\n\n initializeAccordion() {\n this.$accordions = []\n\n this.sectionTargets.forEach((section, index) => {\n // 0 expands the first element, the only one in this case.\n const active = this.expandedTargets[index].value === \"true\" ? 0 : false\n\n const accordion = $(section).accordion({\n header: \".accordion-tab\",\n autoHeight: false,\n collapsible: true,\n heightStyle: \"content\",\n active: active,\n animate: this.animations,\n icons: this.icons,\n beforeActivate: this.beforeActivate.bind(this),\n activate: this.activate.bind(this)\n })\n this.$accordions[index] = accordion\n })\n\n this.contentTargets.forEach(el => el.classList.remove(\"hidden\"))\n }\n\n beforeActivate(event, ui) {\n BeerMenus.Checklists.closeDriver()\n\n if (ui.newHeader.length) {\n this.scrollTo(ui.newHeader)\n }\n }\n\n activate(event, ui) {\n const expandedIndex = this.contentTargets.indexOf(ui.newPanel[0])\n if (expandedIndex >= 0) {\n this.expandedTargets[expandedIndex].value = true\n }\n\n const collapsedIndex = this.contentTargets.indexOf(ui.oldPanel[0])\n if (collapsedIndex >= 0) {\n this.expandedTargets[collapsedIndex].value = false\n }\n }\n\n scrollTo(header) {\n const scrollTop = header.offset().top +\n ($(\".accordion-scroll-window\").scrollTop() || 0)\n const offset = parseInt(this.data.get(\"offset\")) || 0\n\n if ($(this.element).hasClass('no-body-scroll')){\n $(\".accordion-scroll-window\").animate(\n { scrollTop: scrollTop - offset },\n this.animationDuration,\n \"easeOutQuad\"\n )\n }\n\n else {\n $(\".accordion-scroll-window,html,body\").animate(\n { scrollTop: scrollTop - offset },\n this.animationDuration,\n \"easeOutQuad\"\n )\n }\n }\n\n get animations() {\n return {\n easing: \"easeInOutQuint\",\n duration: this.animationDuration,\n down: {\n easing: \"easeInOutQuart\",\n duration: this.animationDuration\n }\n }\n }\n\n get icons() {\n if (this.data.has(\"icon\") && this.data.has(\"iconActive\")){\n return {\n \"header\": this.data.get(\"icon\"),\n \"activeHeader\": this.data.get(\"iconActive\")\n }\n }\n\n else {\n return {\n \"header\": \"pure-icon pure-icon-angle-down\",\n \"activeHeader\": \"pure-icon pure-icon-angle-up\"\n }\n }\n }\n\n get animationDuration() {\n return 850\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener(\"sl-show\", (event) => {\n setTimeout(\n () => event.target.scrollIntoView({ behavior: \"smooth\" }),\n 300\n );\n if (event.target.localName === \"sl-details\") {\n [...this.element.querySelectorAll(\"sl-details\")].map(\n (details) => (details.open = event.target === details)\n );\n }\n });\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"beer\", \"producer\", \"styleSelect\", \"actions\", \"warning\", \"error\"]\n\n connect() {\n $(this.element).on(\"ajax:beforeSend\", this.beforeSend.bind(this))\n $(this.element).on(\"ajax:success\", this.success.bind(this))\n $(this.element).on(\"ajax:error\", this.error.bind(this))\n }\n\n changeProductType(event) {\n const type = event.currentTarget.value\n\n this.styleSelectTargets.forEach(select => {\n const disabled = select.dataset.type != type\n select.classList.toggle(\"hidden\", disabled)\n select.disabled = disabled\n })\n\n this.producerTargets.forEach(target => {\n const disabled = target.dataset.type != type\n target.classList.toggle(\"hidden\", disabled)\n\n const producerIDInput = target.querySelector(\"input[type=hidden]\")\n if (producerIDInput) {\n producerIDInput.disabled = disabled\n }\n })\n }\n\n // private\n\n beforeSend() {\n this.beerTarget.classList.remove(\"box-shadow-left-green\")\n this.actionsTarget.classList.remove(\"box-shadow-right-green\")\n\n this.beerTarget.classList.remove(\"box-shadow-left-red\")\n this.actionsTarget.classList.remove(\"box-shadow-right-red\")\n\n this.errorTarget.classList.add(\"hidden\")\n }\n\n success(event, data, status, xhr) {\n if (xhr.getResponseHeader(\"SUCCESS\") == \"true\") {\n this.replaceHTML(data)\n this.noteRemovedDuplicates(xhr.getResponseHeader(\"DUPLICATE_IDS\"))\n } else {\n this.scrollToElement()\n this.replaceHTML(data)\n }\n }\n\n error() {\n this.scrollToElement()\n\n this.beerTarget.classList.add(\"box-shadow-left-red\")\n this.actionsTarget.classList.add(\"box-shadow-right-red\")\n this.errorTarget.classList.remove(\"hidden\")\n }\n\n replaceHTML(html) {\n this.element.outerHTML = html\n }\n\n noteRemovedDuplicates(duplicateIDsJSON) {\n if (duplicateIDsJSON) {\n JSON.parse(duplicateIDsJSON).forEach(id => {\n const form = document.querySelector(`[data-id='${id}']`)\n if (form) {\n const inputs = form.elements\n for (var i = 0; i < inputs.length; i++) {\n inputs[i].disabled = true\n }\n\n form.querySelector(\"[data-admin-beer-target='warning']\")\n .classList.remove(\"hidden\")\n form.querySelector(\"[data-admin-beer-target='beer']\")\n .classList.add(\"box-shadow-left-yellow\")\n form.querySelector(\"[data-admin-beer-target='actions']\")\n .classList.add(\"box-shadow-right-yellow\")\n }\n })\n }\n }\n\n scrollToElement() {\n $(\"html, body\").animate({\n scrollTop: $(this.element).offset().top\n }, \"normal\");\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"keeperID\"]\n\n keep(event) {\n event.preventDefault()\n\n this.keeperIDTarget.value = event.currentTarget.dataset.id\n\n const keeper = document.querySelector(`.${this.keeperClass}`)\n if (keeper) {\n keeper.classList.remove(this.keeperClass)\n }\n event.currentTarget.classList.add(this.keeperClass)\n }\n\n // private\n\n get keeperClass() {\n return \"keeper\"\n }\n}\n", "/**\n * aria-autocomplete v1.5.1\n * modified so as to allow non-escaped HTML for result rendering\n * fork: https://github.com/whitefusionhq/aria-autocomplete\n * original: https://github.com/mynamesleon/aria-autocomplete\n * demo: \n */\n!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var i=e();for(var s in i)(\"object\"==typeof exports?exports:t)[s]=i[s]}}(self,(function(){return function(){var t={342:function(t){window,t.exports=function(t){var e={};function i(s){if(e[s])return e[s].exports;var n=e[s]={i:s,l:!1,exports:{}};return t[s].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.d=function(t,e,s){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:s})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var s=Object.create(null);if(i.r(s),Object.defineProperty(s,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)i.d(s,n,function(e){return t[e]}.bind(null,n));return s},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=0)}([function(t,e,i){\"use strict\";var s;function n(t,e){if(t)for(var i in e){var s=\"number\"==typeof e[i]?e[i]+\"px\":e[i];t.style[i]=s+\"\"}}i.r(e),i.d(e,\"InputAutoWidth\",(function(){return r}));var r=function(){function t(t,e){this.cache={},this.options=e,this.input=t,this.trigger(),this.eventHandler=this.trigger.bind(this),this.input.addEventListener(\"blur\",this.eventHandler),this.input.addEventListener(\"input\",this.eventHandler),this.input.addEventListener(\"keyup\",this.eventHandler),this.input.addEventListener(\"keydown\",this.eventHandler)}return t.prototype.measureString=function(t){return t?this.cache&&\"number\"==typeof this.cache[t]?this.cache[t]:(s||(n(s=document.createElement(\"span\"),{position:\"absolute\",top:-99999,left:-99999,width:\"auto\",padding:0,whiteSpace:\"pre\"}),document.body.appendChild(s)),s.textContent=t,function(t,e,i){if(t&&e){var s=getComputedStyle(t),r={};if(i&&i.length)for(var o=0,l=i.length;o=48&&e<=57||e>=65&&e<=90||e>=96&&e<=111||e>=186&&e<=222||32===e||8===e||46===e){var a=String.fromCharCode(n);s+=a=t.shiftKey?a.toUpperCase():a.toLowerCase()}}!s&&(i=this.input.getAttribute(\"placeholder\"))&&(s=i);var c=this.measureString(s)+4;this.options&&this.options.cache&&this.cache&&(this.cache[s]=c);var h=this.options&&this.options.minWidth;\"number\"==typeof h&&cu&&(c=u),c!==this.currentWidth&&(this.currentWidth=c,this.input.style.width=c+\"px\")}},t.prototype.destroy=function(){this.input.removeEventListener(\"blur\",this.eventHandler),this.input.removeEventListener(\"input\",this.eventHandler),this.input.removeEventListener(\"keyup\",this.eventHandler),this.input.removeEventListener(\"keydown\",this.eventHandler),this.input=this.cache=null},t}();e.default=r}])},771:function(){var t=Element.prototype;t.matches||(t.matches=t.msMatchesSelector||t.webkitMatchesSelector),t.closest||(t.closest=function(t){var e=this;do{if(e.matches(t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null})}},e={};function i(s){var n=e[s];if(void 0!==n)return n.exports;var r=e[s]={exports:{}};return t[s](r,r.exports,i),r.exports}i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var s={};return function(){\"use strict\";i.r(s),i.d(s,{AriaAutocomplete:function(){return F},default:function(){return D}});var t=i(342),e=i.n(t),n=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;function r(t,e){if(t&&1===t.nodeType&&\"string\"==typeof e)!function(t,e){for(var i=t.getAttribute&&t.getAttribute(\"class\")||\"\",s=\" \"+i+\" \",r=0,o=e.split(\" \"),l=o.length;r\"']/g,f={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"},m=function(){function t(t){this.list=t.list,this.input=t.input,this.wrapper=t.wrapper,this.options=t.options,this.selected=t.selected,this.open=this.open.bind(t),this.close=this.close.bind(t),this.enable=this.enable.bind(t),this.disable=this.disable.bind(t),this.filter=this.filter.bind(t),this.setOption=this.setOption.bind(t),this.destroy=this.destroy.bind(t),this.delete=this.delete.bind(t),this.deleteAll=this.deleteAll.bind(t),t.element[c]=this}return t.prototype.open=function(){this.show.call(this)},t.prototype.close=function(){this.hide.call(this)},t.prototype.enable=function(){this.enable.call(this)},t.prototype.disable=function(t){this.disable.call(this,t)},t.prototype.filter=function(t){this.filter.call(this,t)},t.prototype.setOption=function(t,e){this.options[t]=e},t.prototype.destroy=function(){this.destroy.call(this)},t.prototype.delete=function(t){this.deleteEntry.call(this,this.multiple?t:null)},t.prototype.deleteAll=function(){this.multiple?this.deleteAllSelected.call(this):this.deleteEntry.call(this)},t}(),v=0,b=function(t,e,i){v+=1,this.ELEMENT=t;var s=i||t||\"\";this.PREFIX=\"\".concat(s,\"aria-autocomplete-\").concat(v),this.LIST=\"\".concat(this.PREFIX,\"-list\"),this.BUTTON=\"\".concat(this.PREFIX,\"-button\"),this.OPTION=\"\".concat(this.PREFIX,\"-option\"),this.WRAPPER=\"\".concat(this.PREFIX,\"-wrapper\"),this.LABEL=e||\"\".concat(this.PREFIX,\"-label\"),this.INPUT=i||\"\".concat(this.PREFIX,\"-input\"),this.SR_ASSISTANCE=\"\".concat(this.PREFIX,\"-sr-assistance\"),this.OPTION_SELECTED=\"\".concat(this.PREFIX,\"-option-selected\"),this.SR_ANNOUNCEMENTS=\"\".concat(this.PREFIX,\"-sr-announcements\")};function y(t){return null==t?\"\":(t+\"\").trim()}function g(t){return\"string\"==typeof t&&t?t.replace(d,(function(t){return f[t]})):\"\"}i(771);var A=/&/g,S=/\\s\\s+/g,w=/[\\u2018\\u2019',:\\u2013-]/g,E=/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g;function x(t,e){return void 0===e&&(e=!1),t=y(t).toLowerCase().replace(w,\"\").replace(A,\"and\").replace(S,\" \"),e&&(t=t.replace(E,\"\\\\$&\")),t}function T(){for(var t=[],e=0;e-1)&&i.clearAnnouncement(\"number\"==typeof e?e:1e4)};0!==e?(clearTimeout(this.announcementTimer),this.announcementTimer=setTimeout((function(){return s()}),e)):s()}},t.prototype.setInputDescription=function(){var t=this.input.getAttribute(\"aria-describedby\"),e=y(t),i=e.replace(this.ids.SR_ASSISTANCE,\"\");this.input.value.length||(i=\"\".concat(i,\" \").concat(this.ids.SR_ASSISTANCE)),(i=y(i))?i!==e&&this.input.setAttribute(\"aria-describedby\",i):t&&this.input.removeAttribute(\"aria-describedby\")},t.prototype.isSelectedElem=function(t){var e=t&&t[u];return!(!this.multiple||\"object\"!=typeof e)},t.prototype.getSelectedElems=function(){for(var t=[],e=0,i=this.wrapper.childNodes.length;e-1&&this.selected[i]){var r=T(this.selected[i]),o=r.label;I(r.element,!1,this),this.selected.splice(i,1),this.triggerOptionCallback(\"onDelete\",[r]),this.setSourceElementValues(),this.buildMultiSelected(e?i:null),this.triggerAutoGrow(),this.announce(\"\".concat(o,\" \").concat(this.options.srDeletedText),0)}}},t.prototype.deleteEntry=function(t){var e=null==t;e&&this.selected.length&&(t=this.selected[this.selected.length-1]),e||\"object\"==typeof t||(t={value:t}),this.removeEntryFromSelected(t),this.multiple||(this.setOriginalElementValue(\"\"),this.setInputValue(\"\",!0))},t.prototype.createSelectedElemFrom=function(t,e){var i=t.label,s=this.cssNameSpace,n=\"\".concat(s,\"__selected\"),r=document.createElement(\"span\"),o=e?\"\".concat(s,\"__delete-all \").concat(n,\" \").concat(n,\"--delete-all\"):n;return r.setAttribute(\"aria-describedby\",this.ids.LABEL),r.setAttribute(\"class\",o),r.setAttribute(\"role\",\"button\"),r.setAttribute(\"tabindex\",\"0\"),r.textContent=i,e||(r.setAttribute(\"aria-label\",\"\".concat(this.options.srDeleteText,\" \").concat(i)),r[u]=t),r},t.prototype.buildMultiSelected=function(t){var e=this;if(this.multiple){this.multiple&&this.selected.length>=this.options.maxItems?this.disable():this.enable();var i=this.getSelectedElems();if(this.selected.length||i.length){var s=[];i.forEach((function(t){for(var i=t[u],n=0,r=e.selected.length;n=s.length)return this.currentSelectedIndex=s.length-1,void this.setOptionFocus(t,this.currentSelectedIndex);var n=s[e];if(n&&\"string\"==typeof n.getAttribute(\"tabindex\"))return this.currentSelectedIndex=e,l(n,\"\".concat(this.cssNameSpace,\"__option--focused focused focus\")),\"true\"!==n.getAttribute(\"aria-disabled\")&&n.setAttribute(\"aria-selected\",\"true\"),void(i&&n.focus());this.currentSelectedIndex=-1},t.prototype.setSourceElementValues=function(){for(var t=[],e=0,i=this.selected.length;e=this.options.maxItems)&&this.filteredSource.length&&this.filteredSource[e]){var s=T(this.filteredSource[e]);if(!(s.disabled||s.element&&s.element.disabled)){for(var n=!1,r=0,o=this.selected.length;r-1||this.indexOfValueIn(this.source,n,\"label\")>-1)){var o;if(i){var l=this.element.querySelector(\"option\"),a=l.cloneNode(!0);a.textContent=n,a.value=r,o=a,l.parentNode.insertBefore(a,l)}else if(s){var c=this.element.querySelector('input[type=\"checkbox\"]'),h=c.cloneNode(!0),u=c.closest(\"label\"),p=document.createElement(\"label\");p.textContent=n,h.value=r,o=h,p.appendChild(h);var d=u||c;d.parentNode.insertBefore(p,d)}o&&(t.element=o,o.removeAttribute(\"id\")),this.source.unshift(t)}}},t.prototype.prependEntryInCreateMode=function(t,e){var i=this.options.create;if((!0===i||\"function\"==typeof i)&&x(t)){var s,n=y(t),r=this.options.sourceMapping;if(!0===i&&(s=_(n,r)),\"function\"==typeof i){var o=this.triggerOptionCallback(\"create\",[n]),l=typeof o;o&&(\"string\"===l||\"object\"===l&&!Array.isArray(o))&&(s=_(o,r))}!s||!s.label||!s.value||this.indexOfValueIn(e,s[h],h)>-1||this.indexOfValueIn(e,s.value,\"value\")>-1||e.unshift(s)}},t.prototype.setListOptions=function(t){var e=this.options.sourceMapping;this.prependEntryInCreateMode(this.term,t);var i=this.removeSelectedFromResults(t),s=this.triggerOptionCallback(\"onResponse\",[i.slice()]);this.filteredSource=Array.isArray(s)?L(s,e):i;for(var n=this.ids.OPTION,o=this.cssNameSpace,a=\"\".concat(o,\"__option\"),c=this.filteredSource.length,h=\"function\"==typeof this.options.onItemRender,u=this.forceShowAll?9999:this.options.maxResults,p=u').concat(b,\"\"))}var S,w=!d.length;w?(r(this.list,\"\".concat(o,\"__list--has-results\")),l(this.list,\"\".concat(o,\"__list--no-results\"))):(l(this.list,\"\".concat(o,\"__list--has-results\")),r(this.list,\"\".concat(o,\"__list--no-results\")));var E=this.options.noResultsText;w&&\"string\"==typeof E&&E.length&&(S=E,d.push('
  • ').concat(g(E),\"
  • \"))),this.cancelFilterPrep(),S||(S=this.triggerOptionCallback(\"srResultsText\",[p])),S&&this.announce(S);var x=d.join(\"\");if(this.currentListHtml!==x?(this.currentListHtml=x,this.list.innerHTML=x):this.resetOptionAttributes(),!d.length)return this.hide(),void(this.forceShowAll=!1);this.show(),this.forceShowAll=!1},t.prototype.handleAsync=function(t,e){var i=this;void 0===e&&(e=!1),this.xhr&&\"function\"==typeof this.xhr.abort&&this.xhr.abort();var s=new XMLHttpRequest,n=this.forceShowAll,r=e?null:this.api,o=this.multiple?this.selected.length:0,l=n||e||9999===this.options.maxResults,a=this.source+(/\\?/.test(this.source)?\"&\":\"?\")+\"\".concat(encodeURIComponent(this.options.asyncQueryParam),\"=\").concat(encodeURIComponent(t),\"&\")+\"\".concat(encodeURIComponent(this.options.asyncMaxResultsParam),\"=\")+\"\".concat(l?9999:o+this.options.maxResults),c=this.triggerOptionCallback(\"onAsyncPrep\",[a,s,e],r);c&&\"string\"==typeof c&&(a=c),s.open(\"GET\",a),s.onload=function(){if(s.readyState===s.DONE&&s.status>=200&&s.status<300){i.forceShowAll=n;var o=L(i.triggerOptionCallback(\"onAsyncSuccess\",[t,s,e],r)||s.responseText,i.options.sourceMapping);e?(i.prepSelectedFromArray(o),i.setInputStartingStates(!1)):i.setListOptions(o),i.triggerOptionCallback(\"onAsyncComplete\",[t,s,e],r)}},s.onerror=function(){i.triggerOptionCallback(\"onAsyncError\",[t,s,e],r)},e||(this.xhr=s),this.triggerOptionCallback(\"onAsyncBeforeSend\",[t,s,e],r),s.send()},t.prototype.filter=function(t){var e=this;if(\"string\"==typeof t){var i=this.forceShowAll;if(!i){var s=this.triggerOptionCallback(\"onSearch\",[t]);\"string\"==typeof s&&(t=s)}if(this.term=t,\"string\"==typeof this.source&&this.source.length)return this.handleAsync(t),void(this.forceShowAll=!1);if(\"function\"!=typeof this.source){t||(i=!0);var n=[],r=this.source;if(r&&r.length){var o=[h];if(!i){t=x(t,!0);var l=this.options.alsoSearchIn;Array.isArray(l)&&l.length&&(o=function(t){var e=[];return t.forEach((function(t){if(\"string\"==typeof t){for(var i=y(t),s=\"label\"!==i,n=0,r=e.length;s&&n-1&&N(n,e,s))return!0}return!1}(e,t,o))&&n.push(e)}))}this.setListOptions(n)}else{var a=function(t){var i=L(t,e.options.sourceMapping);e.setListOptions(i)},c=this.source.call(this.api,this.term,a,!1);c&&\"function\"==typeof c.then&&c.then((function(t){return a(t)}))}}else this.cancelFilterPrep()},t.prototype.cancelFilterPrep=function(){clearTimeout(this.filterTimer),r(this.wrapper,\"\".concat(this.cssNameSpace,\"__wrapper--loading loading\")),r(this.input,\"\".concat(this.cssNameSpace,\"__input--loading loading\")),this.filtering=!1},t.prototype.filterPrep=function(t,e,i){var s=this;void 0===e&&(e=!1),void 0===i&&(i=!1);var n=this.forceShowAll,r=n||i?0:this.options.delay;this.cancelFilterPrep(),this.filtering=!0,this.filterTimer=setTimeout((function(){var i=s.input.value;if(s.inputPollingValue=i,(n||\"\"===i||e&&!s.multiple&&s.selected.length&&y(s.selected[0].label)===y(i))&&(i=\"\"),t&&t.type&&s.options.srAssistiveTextAutoClear&&s.setInputDescription(),!n&&i.length=e)&&this.filterPrep(t)}if(this.menuOpen&&!this.filtering){var i=this.currentSelectedIndex;\"number\"!=typeof i||i<0?this.setOptionFocus(t,0):this.setOptionFocus(t,i+1)}},t.prototype.handleEndKey=function(t){if(!this.disabled&&this.menuOpen&&t.target!==this.input){var e=C(this.list);e.length&&(t.preventDefault(),this.setOptionFocus(t,e.length-1))}},t.prototype.handleHomeKey=function(t){!this.disabled&&this.menuOpen&&t.target!==this.input&&(t.preventDefault(),this.setOptionFocus(t,0))},t.prototype.handlePageUpKey=function(t){if(!this.disabled&&this.menuOpen&&t.target!==this.input){t.preventDefault();var e=this.currentSelectedIndex,i=e>0&&e-10<0?0:0===e?-1:e-10;this.setOptionFocus(t,i)}},t.prototype.handlePageDownKey=function(t){if(!this.disabled&&this.menuOpen&&t.target!==this.input){t.preventDefault();var e=this.currentSelectedIndex;this.setOptionFocus(t,e<0?0:e+10)}},t.prototype.handleEnterKey=function(t){var e=t.target;this.isSelectedElem(e)?this.removeEntryFromSelected(e[u],!0):this.deleteAll&&e===this.deleteAll?this.deleteAllSelected():this.disabled||(this.showAll&&e===this.showAll?this.filterPrepShowAll(t):(this.menuOpen&&(t.preventDefault(),this.currentSelectedIndex>-1&&this.handleOptionSelect(t,this.currentSelectedIndex)),e===this.input&&this.filterPrep(t,!1,!0)))},t.prototype.handleKeyDownDefault=function(t){var e=t.keyCode,i=t.target===this.input;if(32===e&&!i||this.isSelectedElem(t.target)&&46===e)return t.preventDefault(),void this.handleEnterKey(t);if(!this.disabled){var s=this.selected&&this.selected.length;this.options.deleteOnBackspace&&8===e&&\"\"===this.input.value&&s&&i&&this.multiple&&this.removeEntryFromSelected(this.selected[s-1]);var n=function(t){return t>=48&&t<=57||t>=65&&t<=90||t>=96&&t<=111||t>=186&&t<=222||32===t||8===t||46===t}(e),r=!i&&n;r&&this.input.focus(),(r||i&&n)&&this.filterPrep(t)}},t.prototype.prepKeyDown=function(t){switch(t.keyCode){case 38:this.handleUpKey(t);break;case 40:this.handleDownKey(t);break;case 35:this.handleEndKey(t);break;case 36:this.handleHomeKey(t);break;case 13:this.handleEnterKey(t);break;case 33:this.handlePageUpKey(t);break;case 34:this.handlePageDownKey(t);break;case 27:this.handleComponentBlur(t,!0);break;default:this.handleKeyDownDefault(t)}},t.prototype.cancelPolling=function(){clearTimeout(this.pollingTimer)},t.prototype.startPolling=function(){var t=this;this.filtering||this.input.value===this.inputPollingValue||this.filterPrep({}),this.pollingTimer=setTimeout((function(){t.startPolling()}),200)},t.prototype.bindEvents=function(){var t=this;this.wrapper.addEventListener(\"focusout\",(function(e){t.handleComponentBlur(e,!1)})),this.wrapper.addEventListener(\"focusin\",(function(e){t.list.contains(e.target)||(t.currentSelectedIndex=-1),t.isFocused||t.triggerOptionCallback(\"onFocus\",[t.wrapper]),t.isFocused=!0})),this.wrapper.addEventListener(\"keydown\",(function(e){t.prepKeyDown(e)})),this.wrapper.addEventListener(\"click\",(function(e){e.target!==t.wrapper?(t.isSelectedElem(e.target)&&t.removeEntryFromSelected(e.target[u],!0),t.deleteAll&&e.target===t.deleteAll&&t.deleteAllSelected()):t.input.focus()}));var i=\"\".concat(this.cssNameSpace,\"__wrapper--focused focused focus\"),s=\"\".concat(this.cssNameSpace,\"__input--focused focused focus\");this.input.addEventListener(\"blur\",(function(){r(t.wrapper,i),r(t.input,s),t.cancelPolling()})),this.input.addEventListener(\"input\",(function(e){document.activeElement===t.input&&t.filterPrep(e)})),this.input.addEventListener(\"click\",(function(e){!t.menuOpen&&t.input.value.length>=t.options.minLength&&t.filterPrep(e,!0)})),this.input.addEventListener(\"focusin\",(function(e){l(t.wrapper,i),l(t.input,s),t.startPolling(),t.disabled||t.menuOpen||t.filterPrep(e,!0)})),this.showAll&&this.showAll.addEventListener(\"click\",(function(e){t.filterPrepShowAll(e)})),this.list.addEventListener(\"mouseenter\",(function(e){t.resetOptionAttributes()})),this.list.addEventListener(\"click\",(function(e){if(e.target!==t.list){var i=C(t.list);if(i.length){var s=i.indexOf(e.target);t.handleOptionSelect(e,s)}}})),this.autoGrow&&(this.inputAutoWidth=new(e())(this.input))},t.prototype.prepListSourceCheckboxes=function(){this.multiple=!0,this.source=[];for(var t=this.element.querySelectorAll('input[type=\"checkbox\"]'),e=0,i=t.length;e1&&(this.options.maxItems=1),this.source=[];for(var e=this.element.querySelectorAll(\"option\"),i=0,s=e.length;i-1&&e.selected.push(l[i])}}))}},t.prototype.prepListSourceArray=function(){this.source=L(this.source,this.options.sourceMapping),this.prepSelectedFromArray(this.source)},t.prototype.prepListSourceAsync=function(){var t=this.element;this.elementIsInput&&t.value&&this.handleAsync(t.value,!0)},t.prototype.prepListSourceFunction=function(){var t=this,e=this.element;if(this.elementIsInput&&e.value){var i=function(e){var i=L(e,t.options.sourceMapping);t.prepSelectedFromArray(i),t.setInputStartingStates(!1)},s=this.source.call(void 0,e.value,i,!0);s&&\"function\"==typeof s.then&&s.then((function(t){return i(t)}))}},t.prototype.prepListSource=function(){return\"function\"==typeof this.source?this.prepListSourceFunction():\"string\"==typeof this.source&&this.source.length?this.prepListSourceAsync():Array.isArray(this.source)&&this.source.length?this.prepListSourceArray():(this.sourceFromSelect=\"SELECT\"===this.element.nodeName,this.sourceFromSelect?this.prepListSourceDdl():(this.sourceFromCheckboxList=!!this.element.querySelector('input[type=\"checkbox\"]'),this.sourceFromCheckboxList?this.prepListSourceCheckboxes():void(this.source=[])))},t.prototype.setInputStartingStates=function(t){if(void 0===t&&(t=!0),t){this.label&&(this.label[p]=this.ids.ELEMENT,this.label.setAttribute(\"for\",this.ids.INPUT));var e=this.element.getAttribute(\"aria-describedby\");e&&this.input.setAttribute(\"aria-describedby\",e);var i=this.element.getAttribute(\"aria-labelledby\");i&&this.input.setAttribute(\"aria-labelledby\",i)}this.selected.length&&(this.multiple?(this.buildMultiSelected(),this.triggerAutoGrow()):this.setInputValue(this.selected[0].label||\"\",!0)),this.element.disabled&&this.disable(!0)},t.prototype.setHtml=function(){var t=this.options,e=this.cssNameSpace,i=t.wrapperClassName?\" \".concat(t.wrapperClassName):\"\",s=['
    ')];s.push('

    '));var n=t.name?' name=\"'.concat(t.name,'\"'):\"\",r=t.inputClassName?\" \".concat(t.inputClassName):\"\",o=t.placeholder?' placeholder=\"'.concat(t.placeholder,'\" aria-placeholder=\"').concat(t.placeholder,'\"'):\"\";s.push('\")),t.showAllControl&&s.push(''));var l=t.srListLabelText,a=t.listClassName?\" \".concat(t.listClassName):\"\",c=l?' aria-label=\"'.concat(l,'\"'):\"\";s.push('\")),s.push('

    ').concat(g(t.srAssistiveText),\"

    \")),s.push(\"
    \"),this.element.insertAdjacentHTML(\"afterend\",s.join(\"\"))},t.prototype.destroy=function(){var t=this;this.label&&this.label[p]&&(this.label.setAttribute(\"for\",this.label[p]),delete this.label[p]),this.documentClickBound&&document.removeEventListener(\"click\",this.documentClick),this.autoGrow&&this.inputAutoWidth&&this.inputAutoWidth.destroy(),this.wrapper.parentNode.removeChild(this.wrapper),delete this.element[c],this.show(this.element),clearTimeout(this.filterTimer),clearTimeout(this.pollingTimer),clearTimeout(this.showAllPrepTimer),clearTimeout(this.announcementTimer),clearTimeout(this.componentBlurTimer),clearTimeout(this.clearAnnouncementTimer),clearTimeout(this.elementChangeEventTimer),[\"list\",\"input\",\"label\",\"element\",\"wrapper\",\"showAll\",\"deleteAll\",\"srAssistance\",\"srAnnouncements\"].forEach((function(e){return t[e]=null}))},t.prototype.init=function(t,e){this.selected=[],this.element=t,this.label=document.querySelector('[for=\"'+this.element.id+'\"]'),this.ids=new b(this.element.id,this.label?this.label.id:null,e.id),this.elementIsInput=\"INPUT\"===t.nodeName,this.options=new a(e),this.label&&!this.label.id&&(this.label.id=this.ids.LABEL),this.source=this.options.source,this.multiple=this.options.multiple,this.autoGrow=this.options.autoGrow,this.cssNameSpace=this.options.cssNameSpace,this.documentClick=this.handleComponentBlur.bind(this),this.setHtml(),this.list=document.getElementById(this.ids.LIST),this.input=document.getElementById(this.ids.INPUT),this.wrapper=document.getElementById(this.ids.WRAPPER),this.showAll=document.getElementById(this.ids.BUTTON),this.srAssistance=document.getElementById(this.ids.SR_ASSISTANCE),this.srAnnouncements=document.getElementById(this.ids.SR_ANNOUNCEMENTS),this.prepListSource();var i=[];this.options.showAllControl&&i.push(\"\".concat(this.cssNameSpace,\"__wrapper--show-all\")),this.autoGrow&&i.push(\"\".concat(this.cssNameSpace,\"__wrapper--autogrow\")),this.multiple&&i.push(\"\".concat(this.cssNameSpace,\"__wrapper--multiple\")),i.length&&l(this.wrapper,i.join(\" \")),this.hide(this.list),this.hide(this.element),this.setInputStartingStates(),this.bindEvents(),this.api=new m(this),this.triggerOptionCallback(\"onReady\",[this.wrapper])},t}(),k=P;function F(t,e){return t&&t[c]&&t[c].open?t[c]:new k(t,e).api}var D=F}(),s}()}));", "import { Controller } from \"@hotwired/stimulus\"\nimport AriaAutocomplete from \"../vendor/aria-autocomplete.min.js\"\n\nexport default class extends Controller {\n static targets = [ \"field\" ]\n\n // TODO: this only currently supports a simple use-case of selecting a font\n connect() {\n AriaAutocomplete(this.fieldTarget, {\n showAllControl: true,\n placeholder: this.fieldTarget.placeholder,\n onItemRender: (itemData) => {\n return `${itemData.label}`\n },\n onChange: (selectedItems) => {\n this.element.parentElement.querySelector(\"input\").style.fontFamily = selectedItems[0].value\n }\n })\n this.element.parentElement.querySelector(\"input\").style.fontFamily = this.fieldTarget.value\n\n /* Example of multiple selection: */\n\n // AriaAutocomplete(this.fieldTarget, {\n // multiple: true,\n // placeholder: this.fieldTarget.placeholder,\n // source: async (query, render, isFirstCall) => {\n // const toRender = [{label: \"Foo\", description: \"Wow\", value: \"bar\"}];\n // // build up your Array here, then render...\n // render(toRender);\n // },\n // onItemRender: (itemData) => {\n // return `${itemData.label} (${itemData.value})
    ${itemData.description}`;\n // }\n // })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"form\" ]\n\n connect() {\n this.submitOnChange()\n this.submitOnEvent()\n\n $(this.formTarget).on(\"ajax:success\", this.success.bind(this))\n $(this.formTarget).on(\"ajax:error\", this.error.bind(this))\n }\n\n submitForm(event) {\n if (this.formTarget.dataset.turbo === \"true\") {\n this.formTarget.requestSubmit(this.formTarget.querySelector(\"button[type='submit']\"))\n } else {\n $.rails.fire($(this.formTarget), \"submit\")\n }\n }\n\n // private\n\n submitOnChange() {\n [...this.formTarget.elements].forEach(element => {\n if (!element.dataset.ignore) {\n element.addEventListener(\"change\", this.submitForm.bind(this))\n }\n })\n }\n\n submitOnEvent() {\n document.body.addEventListener(\"sortable:didSort\",\n this.submitForm.bind(this))\n\n document.body.addEventListener(\"customFont:selected\",\n this.submitForm.bind(this))\n\n document.body.addEventListener(\"sl-change\",\n this.submitForm.bind(this))\n\n document.body.addEventListener(\"cme-blur\",\n this.submitForm.bind(this))\n }\n\n success(event, data, status, xhr) {\n this.submitOnChange()\n }\n\n error(event, xhr) {\n console.log(\"ERROR, status: \", xhr.status)\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"textfield\"]\n\n connect() {\n if (!Browser.isIE()) {\n this.textfieldTarget.style.resize = \"none\"\n this.defaultRows = this.textfieldTarget.rows\n this.textChanged()\n } else {\n this.textfieldTarget.rows = 3\n }\n }\n\n textChanged() {\n if (!Browser.isIE()) {\n this.textfieldTarget.rows = this.defaultRows\n const rows = Math.ceil(this.textfieldTarget.scrollHeight / this.lineHeight)\n this.textfieldTarget.rows = Math.min(rows, this.maxRows)\n }\n }\n\n // private\n\n get lineHeight() {\n return 25\n }\n\n get maxRows() {\n return 6\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"search\", \"field1\", \"field2\" ]\n\n async connect() {\n let libraries = await AlgoliaSource.importLibraries()\n this.source = new AlgoliaSource(libraries[0], this.data.get(\"index\")).source\n\n $(this.searchTarget).autocomplete({ autoselect: true }, [{\n source: this.source,\n displayKey: (obj) => { return obj.name },\n templates: { suggestion: this.suggestion },\n }]).on(\"autocomplete:selected\", this.selected.bind(this))\n }\n\n // private\n\n suggestion(hit) {\n return `

    ${hit.name}

    `\n }\n\n selected(event, suggestion, dataset, context) {\n if (this.hasField1Target && this.field1 && suggestion[this.field1]) {\n this.field1Target.value = suggestion[this.field1]\n }\n\n if (this.hasField2Target && this.field2 && suggestion[this.field2]) {\n this.field2Target.value = suggestion[this.field2]\n }\n }\n\n get field1() {\n return this.data.get(\"field1\")\n }\n\n get field2() {\n return this.data.get(\"field2\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"availableCheckbox\"]\n\n clickedComingSoon(event) {\n event.preventDefault()\n this.availableCheckboxTarget.checked = true\n\n $(\"#coming-soon-promo\").modal()\n BeerMenus.Analytics.track(\"Viewed coming soon um modal\", {\n \"pro promo page\": \"Edit menu\",\n \"Pro promo feature\": \"Coming Soon\"\n })\n }\n\n clickedPrivate(event) {\n event.preventDefault()\n this.availableCheckboxTarget.checked = true\n\n $(\"#private-promo\").modal()\n BeerMenus.Analytics.track(\"Viewed private um modal\", {\n \"pro promo page\": \"Edit menu\",\n \"Pro promo feature\": \"Private\"\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n messageId: String,\n name: String,\n email: String,\n subject: String,\n text: String\n }\n\n open(event) {\n event.preventDefault()\n\n this.target.Beacon(\"open\")\n this.target.Beacon(\"navigate\", \"/ask\")\n }\n\n prefill(event) {\n event.preventDefault()\n\n this.target.Beacon(\"open\")\n this.target.Beacon(\"navigate\", \"/ask/message/\")\n this.target.Beacon(\"prefill\", {\n name: this.nameValue,\n email: this.emailValue,\n subject: this.subjectValue,\n text: this.textValue\n })\n }\n\n showMessage(event) {\n event.preventDefault()\n this.target.Beacon(\"show-message\", this.messageIdValue, { delay: 1, force: true })\n }\n\n // private\n\n get target() {\n return parent ? parent : window\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.state = \"closed\"\n\n document.addEventListener(\"tab:changed\", (event) => {\n this.tabChanged(event.detail)\n })\n }\n\n // private\n\n tabChanged(tab) {\n if (tab == this.productName.toLowerCase()) {\n this.searchTarget.nextSibling.focus()\n }\n }\n\n get limit() {\n return parseInt(this.data.get(\"limit\")) || 10\n }\n\n get barID() {\n return this.data.get(\"bar-id\")\n }\n\n get productType() {\n return this.data.get(\"product-type\")\n }\n\n get productName() {\n return this.data.get(\"product-name\")\n }\n}\n", "import ProductAutocompleteController from \"./product-autocomplete-controller\"\n\nexport default class extends ProductAutocompleteController {\n static targets = [\"beerID\", \"beerName\", \"container\", \"description\", \"beerStyle\", \"beerAbv\",\n \"metaDataContainer\", \"descriptionContainer\", \"descriptionRevert\", \"styleRevert\", \"abvRevert\",\n \"modal\", \"search\", \"submit\", \"suggestions\", \"template\"]\n\n static values = {\n hasGlobalDescription: Boolean,\n styleId: Number,\n abv: Number,\n skipFocus: Boolean\n }\n\n async connect() {\n let libraries = await AlgoliaSource.importLibraries()\n const filter = `product_type = ${this.productType}`\n this.algolia = new AlgoliaSource(libraries[0], \"Beer\", filter)\n this.showDescriptionRevertTarget = this.hasGlobalDescriptionValue != \"false\"\n this.connected()\n }\n\n populate(id, name, style_id, abv) {\n this.beerIDTarget.value = id\n this.search.val(name)\n\n this.descriptionTarget.value = \"\"\n this.fetchDescription(id, true)\n\n const data = {\n beer_style_id: style_id,\n abv: abv\n }\n this.setStyleAndAbv(data)\n\n if (this.validateSelection()) {\n this.containerTarget.focus()\n }\n }\n\n showNewBeerModal(event) {\n event && event.preventDefault()\n this.algolia.index.clearCache()\n\n $.ajax({\n url: \"/beers/new.js\",\n context: this,\n data: {\n name: this.search.val(),\n product_type: this.productType,\n bar_id: this.barID,\n edit: this.edit,\n modal: true\n }\n })\n .fail((jqXHR, status, error) => console.error(error))\n }\n\n suggestionsModalClosed() {\n this.validateSelection()\n }\n\n revertDescription(event) {\n event.preventDefault()\n\n $.ajax({\n url: this.descriptionURL(this.beerIDTarget.value),\n data: {\n default: true\n },\n dataType: \"json\"\n }).done(data => {\n this.descriptionTarget.value = data.description || \"\"\n this.descriptionRevertTarget.classList.add(\"hidden\")\n this.triggerInputEvent()\n })\n }\n\n revertStyle(event) {\n event.preventDefault()\n this.beerStyleTarget.value = this.styleIdValue\n $(this.beerStyleTarget).trigger('change')\n this.styleRevertTarget.classList.add(\"hidden\")\n }\n\n revertAbv(event) {\n event.preventDefault()\n this.beerAbvTarget.value = this.abvValue\n this.abvRevertTarget.classList.add(\"hidden\")\n }\n\n get skipEmptySuggestionsModal() {\n return this.data.get(\"skip-empty-suggestions-modal\") == \"true\"\n }\n\n // private\n\n connected() {\n this.initializeSearch()\n\n this.search.focus(event => this.searchQuery = event.currentTarget.value)\n\n if (!this.skipFocusValue) {\n this.searchTarget.nextSibling.focus()\n }\n\n this.suggestions = []\n\n document.body.addEventListener(\"skip-empty-suggestions-modal-change\", (event) => {\n this.data.set(\"skip-empty-suggestions-modal\", event.detail)\n })\n\n this.addRevertListener(\"keyup\", this.descriptionTarget, this.descriptionRevertTarget, this.showDescriptionRevertTarget)\n this.addRevertListener(\"input\", this.beerAbvTarget, this.abvRevertTarget, true)\n\n $(this.beerStyleTarget).on('select2:select', (e) => {\n if (this.beerStyleTarget.value != this.styleIdValue) {\n this.styleRevertTarget.classList.remove(\"hidden\")\n }\n })\n\n this.firstNoResultsKeystroke = true\n\n super.connect()\n }\n\n addRevertListener(listener, target, revertTarget, showMethod) {\n target.addEventListener(listener, () => {\n if (showMethod) {\n revertTarget.classList.remove(\"hidden\")\n }\n })\n }\n\n initializeSearch() {\n this.search = $(this.searchTarget).autocomplete(this.options, this.dataset)\n\n this.search\n .on(\"autocomplete:selected autocomplete:autocompleted\", (event, data) => {\n this.state = data.cssClass == this.addNewBeerClass ? \"new\" : \"existing\"\n this.containerTarget.focus()\n\n if (data.objectID) {\n this.setHiddenField(data.objectID)\n this.fetchDescription(data.objectID)\n this.setStyleAndAbv(data)\n }\n })\n .on(\"autocomplete:updated\", event => {\n if (event.currentTarget.value != this.searchQuery) {\n this.clearJavaScriptMessages()\n }\n })\n .on(\"autocomplete:closed\", () => {\n // \"Delay\" so modal:willShow event fires after any other clicks.\n setTimeout(() => { this.state = \"closed\" }, 1)\n })\n }\n\n setHiddenField(id) {\n if (this.hasBeerIDTarget && this.state != \"new\") {\n this.beerIDTarget.value = id\n }\n }\n\n setStyleAndAbv(data) {\n if (this.hasBeerStyleTarget) {\n this.beerStyleTarget.value = data.beer_style_id\n // Trigger change event to update the select2 dropdown\n $(this.beerStyleTarget).trigger('change')\n this.styleIdValue = data.beer_style_id\n this.metaDataContainerTarget.classList.remove(\"hidden\")\n }\n if (this.hasBeerAbvTarget) {\n this.beerAbvTarget.value = data.abv\n this.abvValue = data.abv\n }\n }\n\n validateSelection() {\n if (this.search.val() && !this.beerIDTarget.value) {\n new Servings(this.productType, this.edit).showMissingBeerError()\n return false\n }\n return true\n }\n\n clearJavaScriptMessages() {\n new Servings(this.productType, this.edit).clearJavaScriptMessages()\n }\n\n clearAndHideDescription() {\n this.descriptionTarget.value = \"\"\n this.descriptionContainerTarget.classList.add(\"hidden\")\n }\n\n clearAndHideMetaData() {\n this.beerStyleTarget.value = \"\"\n this.styleIdValue = \"\"\n this.beerAbvTarget.value = \"\"\n this.abvValue = \"\"\n this.metaDataContainerTarget.classList.add(\"hidden\")\n }\n\n source(query, callback, isBeerIndex) {\n this.clearAndHideDescription()\n this.clearAndHideMetaData()\n\n this.algolia.source(query, (suggestions) => {\n suggestions = suggestions.slice(0, this.limit)\n this.suggestions = suggestions\n\n if (suggestions.length === 0 && this.firstNoResultsKeystroke) {\n BeerMenus.Analytics.track(\"Viewed add item to menu no results\", { \"item type\": `${this.productName}` })\n this.firstNoResultsKeystroke = false\n }\n\n suggestions.push({\n name: `${this.productName} not listed? Add it to the database`,\n cssClass: this.addNewBeerClass,\n query: query\n })\n return callback(suggestions)\n })\n }\n\n displayKey(obj) {\n return obj.cssClass == this.addNewBeerClass ? obj.query : obj.name\n }\n\n suggestion(hit) {\n return new BeerAutocompleteSuggestion(this.templateTarget).build(hit)\n }\n\n showSuggestionsModal() {\n const event = new CustomEvent(\"modal:willShow\", {\n bubbles: true,\n cancelable: true,\n })\n\n if (this.element.dispatchEvent(event)) {\n const beerSuggestionsController = this.application\n .getControllerForElementAndIdentifier(this.suggestionsTarget, \"beer-suggestions\")\n beerSuggestionsController.fetch(this.search.val(), this, this.productType)\n BeerMenus.Analytics.track(\"Viewed not in database modal\", { \"item type\": `${this.productName}` })\n }\n }\n\n tabChanged(tab) {\n if (tab == this.productName.toLowerCase()) {\n this.searchTarget.nextSibling.focus()\n }\n }\n\n fetchDescription(beerID, fullDescription = false) {\n this.submitTarget.disabled = true\n\n $.ajax({\n url: this.descriptionURL(beerID),\n data: {\n full: fullDescription\n },\n dataType: \"json\"\n }).done(data => {\n this.descriptionTarget.value = data.description || \"\"\n this.showDescriptionRevertTarget = data.default_exists\n this.descriptionRevertTarget.classList\n .toggle(\"hidden\", !(data.customized && this.showDescriptionRevertTarget))\n\n this.descriptionContainerTarget.classList.remove(\"hidden\")\n this.triggerInputEvent()\n }).always(() => this.submitTarget.disabled = false )\n }\n\n descriptionURL(beerID) {\n return `/places/${this.barID}/beer_descriptions/${beerID}`\n }\n\n triggerInputEvent() {\n if (this.showDescriptionRevertTarget && !Browser.isIE()) {\n const inputEvent = new Event(\"input\", { bubbles: true })\n this.descriptionTarget.dispatchEvent(inputEvent)\n }\n }\n\n get addNewBeerClass() {\n return \"x-add-new-beer\"\n }\n\n get dataset() {\n return {\n source: (query, callback) => { this.source(query, callback) },\n name: \"beers\",\n displayKey: this.displayKey.bind(this),\n templates: { suggestion: this.suggestion.bind(this) },\n }\n }\n\n set state(val) {\n if (val == \"closed\" && this._state) {\n if (this._state == \"new\") {\n this.beerIDTarget.value = null\n this.clearAndHideDescription()\n this.clearAndHideMetaData()\n this.showNewBeerModal()\n } else if (this._state != \"existing\") {\n this.beerIDTarget.value = null\n this.clearAndHideDescription()\n this.clearAndHideMetaData()\n\n if (this.search.val()) {\n const matchedSuggestion = this.matchedSuggestion\n if (matchedSuggestion) {\n this.search.val(matchedSuggestion.name)\n this.beerIDTarget.value = matchedSuggestion.objectID\n } else {\n this.showSuggestionsModal()\n }\n }\n }\n }\n this._state = val\n }\n\n get matchedSuggestion() {\n const query = this.search.val().toLowerCase()\n return this.suggestions.find(suggestion => {\n return suggestion.name.toLowerCase() === query\n })\n }\n\n get barID() {\n return this.data.get(\"bar-id\")\n }\n\n get edit() {\n return this.data.get(\"edit\") === \"true\"\n }\n\n get options() {\n return {\n autoselect: true\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"description\" ]\n\n connect() {\n this.element.addEventListener(\"copy\", this.copy.bind(this))\n }\n\n copyDescription() {\n const text = this.descriptionTargets.map(el => el.textContent.trim()).join(\" \")\n this.copyTextToClipboard(text)\n this.copy()\n }\n\n // private\n\n copy(event) {\n BeerMenus.Analytics.track(\"Copied beer meta data on desktop\")\n\n const modal = $(\"#print-menu\")\n if (modal.length) {\n modal.modal()\n BeerMenus.Analytics.track(\"Viewed copied beer info print menu promo\")\n }\n }\n\n copyTextToClipboard(text) {\n const textarea = document.createElement(\"textarea\")\n textarea.value = text\n document.body.appendChild(textarea)\n textarea.select()\n document.execCommand(\"copy\")\n document.body.removeChild(textarea)\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"suggestions\", \"template\", \"withSuggestions\", \"noSuggestions\"]\n\n async connect() {\n let libraries = await AlgoliaSource.importLibraries()\n this.algolia = new AlgoliaSource(libraries[0], \"Beer\")\n }\n\n fetch(query, controller, productType) {\n this.beerAutocompleteController = controller\n this.reset()\n\n const searchQuery = {\n query: query,\n filters: `product_type = ${productType}`,\n hitsPerPage: this.limit\n }\n this.algolia.index.search(searchQuery).then(result => {\n if (result && result.hits && result.hits.length) {\n this.populateSuggestions(result.hits)\n $(this.element).modal()\n } else if (controller.skipEmptySuggestionsModal) {\n controller.showNewBeerModal()\n } else {\n this.noSuggestionsTargets.forEach(t => t.classList.remove(\"hidden\"))\n $(this.element).modal()\n }\n\n $(this.element).one(\"hidden.bs.modal\", this.modalHidden.bind(this))\n })\n }\n\n select(event) {\n event.preventDefault()\n\n const id = event.currentTarget.dataset[\"id\"]\n const name = event.currentTarget.dataset[\"name\"]\n this.beerAutocompleteController.populate(id, name)\n\n $(this.element).modal(\"hide\")\n }\n\n addNewBeer(event) {\n event.preventDefault()\n\n $(this.element).modal(\"hide\")\n this.beerAutocompleteController.showNewBeerModal()\n }\n\n // private\n\n suggestion(hit) {\n const suggestion = this.templateTarget.cloneNode(true)\n suggestion.classList.remove(\"hidden\")\n suggestion.classList.add(hit.cssClass)\n\n const anchor = suggestion.querySelector(\"[data-ref='anchor']\")\n anchor.dataset[\"id\"] = hit.objectID\n anchor.dataset[\"name\"] = hit.name\n anchor.dataset[\"action\"] = \"beer-suggestions#select\"\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 reset() {\n this.suggestionsTarget.innerHTML = \"\"\n this.withSuggestionsTargets.forEach(t => t.classList.add(\"hidden\"))\n this.noSuggestionsTargets.forEach(t => t.classList.add(\"hidden\"))\n }\n\n populateSuggestions(hits) {\n hits.forEach(hit => {\n this.suggestionsTarget.appendChild(this.suggestion(hit))\n })\n this.withSuggestionsTargets.forEach(t => t.classList.remove(\"hidden\"))\n }\n\n modalHidden() {\n this.beerAutocompleteController.suggestionsModalClosed()\n }\n\n get limit() {\n return parseInt(this.data.get(\"limit\")) || 10\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n closeAndFocusServingForm(event) {\n event.preventDefault()\n $(this.element).modal(\"hide\")\n $(\".aa-input\").first().focus()\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"footer\", \"loadingOverlay\" ]\n\n async connect() {\n this.element.controller = this\n await import(\"../models/state-manager.js\")\n }\n\n disconnect() {\n clearTimeout(this.autosaveTimer)\n }\n\n get stateManager() {\n return this.element.querySelector(\"bmu-state-manager\")\n }\n\n get $modal() {\n return $(this.element.querySelector(\":scope > .modal\"))\n }\n\n set loading(isLoading) {\n this.loadingOverlayTarget.classList.toggle(\"is-shown\", isLoading)\n }\n\n set nonImageElementsHidden(isHidden) {\n const section = this.stateManager.querySelector(\".modal-body\")\n\n this.footerTarget.hidden = isHidden\n Array.from(section.children).forEach(el => {\n if (el.dataset.controller != \"image-editor\") el.hidden = isHidden\n })\n }\n\n async openModal(profileId, region, position = \"center\") {\n clearTimeout(this.autosaveTimer)\n\n const src = `${this.data.get(\"src\")}?region=${region}&position=${position}`\n\n const response = await fetch(src)\n const partial = await response.text()\n\n if (this.$modal.get(0) && this.$modal.get(0).style.display == \"block\") {\n this.$modal.removeClass(\"fade\")\n this.$modal.modal(\"hide\")\n this.element.innerHTML = partial\n this.$modal.removeClass(\"fade\") // remove it again with the new partial\n } else {\n this.element.innerHTML = partial\n }\n\n this.stateManager.stateData.profileId = profileId\n this.stateManager.stateData.region = region\n this.stateManager.stateData.position = position\n \n this.stateManager.stateData.minimalSaveOperation = true\n this.$modal.modal(\"show\")\n\n this.$modal.one(\"hidden.bs.modal\", this.hideCallback.bind(this))\n\n setTimeout(() => this.$modal.addClass(\"fade\"), 500)\n\n this.autosaveTimer = setInterval(() => {\n this.autosave()\n }, 2000)\n }\n\n handleStateChange() {\n // not currently used\n }\n\n get isEditingTab() {\n return this.stateManager.current == \"text\" || this.stateManager.current == \"edit_image\"\n }\n\n hideCallback() {\n (iframe => iframe.src = iframe.src)(document.querySelector(\"[data-tv-preview-target='preview']\"))\n }\n\n autosave() {\n if (this.stateManager.current == \"text\") {\n const newContent = this.element.querySelector(\"#tv_menu_block_content\").value\n if (newContent != this.stateManager.currentData.content) {\n this.element.querySelector(\"[data-form-submit]\").click()\n }\n this.stateManager.currentData.content = newContent\n }\n }\n\n startWithText() {\n this.stateManager.current = \"text\"\n this.stateManager.stateData.minimalSaveOperation = true\n }\n\n startWithImage() {\n this.element.querySelector(\"input[type='file']\").click()\n this.stateManager.stateData.minimalSaveOperation = false\n }\n\n saveUploadedImage() {\n this.element.querySelector(\"[data-image-submit]\").click()\n }\n\n saveForm(event) {\n event.preventDefault()\n const form = new FormData(event.target)\n\n form.append(\"profile_id\", this.stateManager.stateData.profileId)\n form.append(\"tv_menu_block[region]\", this.stateManager.stateData.region)\n form.append(\"tv_menu_block[position]\", this.stateManager.stateData.position)\n\n if (!this.stateManager.stateData.minimalSaveOperation) this.loading = true\n\n fetch(event.target.action, { method: event.target.method, body: form })\n .then(res => res.json())\n .then(json => {\n this.loading = false\n\n if (this.stateManager.stateData.minimalSaveOperation) {\n ;(iframe => iframe.src = iframe.src)(this.element.querySelector(\"iframe\"))\n\n if (!event.target.querySelector(\"[name='_method']\")) {\n this.element.querySelectorAll(\"form\").forEach(formEl => {\n const patchMethod = document.createElement(\"input\")\n patchMethod.type = \"hidden\"\n patchMethod.name = \"_method\"\n patchMethod.value = \"patch\"\n formEl.append(patchMethod)\n formEl.action = formEl.action + `/${json.id}`\n })\n this.stateManager.dataset.blockId = json.id\n }\n } else {\n this.openModal(this.stateManager.stateData.profileId, this.stateManager.stateData.region, this.stateManager.stateData.position)\n }\n })\n .catch(err => {\n console.error(err)\n this.loading = false\n })\n }\n\n async deleteBlock(id) {\n this.stateManager.stateData.minimalSaveOperation = false\n this.loading = true\n \n const baseUrl = this.stateManager.dataset.blocksUrl\n const url = `${baseUrl}/${id}`\n const authenticityToken = $(\"meta[name=csrf-token]\").prop(\"content\")\n const form = new FormData()\n form.append(\"authenticity_token\", authenticityToken)\n await fetch(url, { method: \"DELETE\", body: form })\n\n await this.openModal(this.stateManager.stateData.profileId, this.stateManager.stateData.region, this.stateManager.stateData.position)\n }\n\n async graphicToText(event) {\n await this.deleteBlock(this.stateManager.dataset.blockId)\n this.startWithText()\n }\n\n switchLeft(event) {\n event && event.preventDefault()\n this.openModal(this.stateManager.stateData.profileId, this.stateManager.stateData.region, \"left\")\n }\n\n switchCenter(event) {\n event && event.preventDefault()\n this.openModal(this.stateManager.stateData.profileId, this.stateManager.stateData.region, \"center\")\n }\n\n switchRight(event) {\n event && event.preventDefault()\n this.openModal(this.stateManager.stateData.profileId, this.stateManager.stateData.region, \"right\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"search\", \"breweryID\", \"error\", \"beerName\"]\n\n async connect() {\n let libraries = await AlgoliaSource.importLibraries()\n const producer = `producer_type = ${this.producerType}`\n this.algolia = new AlgoliaSource(libraries[0], \"Brewery\", producer)\n this.connected()\n }\n\n populate(id, name) {\n this.breweryIDTarget.value = id\n this.search.val(name)\n }\n\n showNewBreweryModal(eventOrShowMessage) {\n var showMessage = false\n if (eventOrShowMessage == true) {\n showMessage = true\n } else if (eventOrShowMessage) {\n eventOrShowMessage.preventDefault()\n }\n\n window.BeerMenus.controllers.breweryAutocompleteController = this\n this.algolia.index.clearCache()\n this.breweryIDTarget.value = null\n\n $(\"#new-beer\").modal(\"hide\")\n\n $.ajax(\"/breweries/new.js\", {\n data: {\n name: this.search.val(),\n producer_type: this.producerType,\n source: this.data.get(\"source\"),\n show_message: showMessage,\n },\n dataType: \"text\" // Don't evaluate response script, handle in showModal().\n }).done(this.showModal.bind(this))\n }\n\n // private\n\n connected() {\n this.suggestions = []\n this.search = $(this.searchTarget).autocomplete(this.options, this.dataset)\n .on(\"autocomplete:selected autocomplete:autocompleted\", this.selected.bind(this))\n .on(\"autocomplete:updated\", this.hideError.bind(this))\n .on(\"autocomplete:closed\", () => this.state = \"closed\")\n }\n\n selected(event, data) {\n if(data.cssClass == this.addNewBreweryClass) {\n this.state = \"new\"\n this.breweryIDTarget.value = null\n this.showNewBreweryModal()\n } else {\n this.state = \"existing\"\n this.breweryIDTarget.value = data.objectID\n\n // Check if short name is at the start of beer name and remove it if it is\n if (this.beerNameTarget.value.startsWith(data.short_name)) {\n this.beerNameTarget.value = this.beerNameTarget.value.replace(data.short_name, '').trim()\n }\n }\n }\n\n showModal(html) {\n BeerMenus.Modals.insert(html, \"#new-brewery\")\n BeerMenus.InputFocuser.focus(\"#new-brewery #brewery_name\")\n\n $(\"#new-brewery\").one(\"hidden.bs.modal\", () => {\n $(\"#new-beer\").modal()\n this.validateSelection()\n })\n }\n\n hideError() {\n if (this.hasErrorTarget) {\n this.errorTarget.classList.add(\"hidden\")\n }\n }\n\n validateSelection() {\n if (this.search.val() && !this.breweryIDTarget.value) {\n this.errorTarget.classList.remove(\"hidden\")\n }\n }\n\n source(query, callback) {\n this.algolia.source(query, (suggestions) => {\n this.suggestions = suggestions\n suggestions.push({\n name: `${this.producerName} not listed? Add it here`,\n cssClass: this.addNewBreweryClass,\n query: query\n })\n return callback(suggestions)\n })\n }\n\n displayKey(obj) {\n return obj.cssClass == this.addNewBreweryClass ? obj.query : obj.name\n }\n\n suggestion(hit) {\n return `

    ${hit.name}

    `\n }\n\n get addNewBreweryClass() {\n return \"x-add-new-brewery\"\n }\n\n get options() {\n return {\n autoselect: true\n }\n }\n\n get dataset() {\n return {\n name: \"breweries\",\n source: this.source.bind(this),\n displayKey: this.displayKey.bind(this),\n templates: { suggestion: this.suggestion }\n }\n }\n\n get producerType() {\n return this.data.get(\"producer-type\")\n }\n\n get producerName() {\n return this.data.get(\"producer-name\")\n }\n\n set state(val) {\n if (val == \"closed\" && this._state != \"new\" && this._state != \"existing\") {\n if (this.search.val()) {\n const matchedSuggestion = this.matchedSuggestion\n if (matchedSuggestion) {\n this.search.val(matchedSuggestion.name)\n this.breweryIDTarget.value = matchedSuggestion.objectID\n } else {\n this.showNewBreweryModal(true)\n }\n }\n }\n this._state = val\n }\n\n get matchedSuggestion() {\n const query = this.search.val().toLowerCase()\n return this.suggestions.find(suggestion => {\n return suggestion.name.toLowerCase() === query\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\", \"result\", \"selection\"]\n\n async connect() {\n await this._importLibraries()\n\n let libraries = await AlgoliaSource.importLibraries()\n this.algolia = new AlgoliaSource(libraries[0], \"Brewery\", \"brewery\")\n this._initializeSelect2()\n this._selectBreweries()\n }\n\n async _importLibraries() {\n (await import(\"select2/dist/js/select2.full.js\")).default() // init the plugin\n }\n\n _initializeSelect2() {\n $(this.inputTarget).select2({\n ajax: {\n transport: this._transport.bind(this),\n data: this._data,\n processResults: this._processResults\n },\n escapeMarkup: this._escapeMarkup,\n minimumInputLength: 0,\n cache: false,\n templateResult: this._templateResult.bind(this),\n templateSelection: this._templateSelection.bind(this),\n multiple: true,\n language: this._language()\n })\n }\n\n _selectBreweries() {\n const input = $(this.inputTarget)\n\n if (this.data.get(\"breweries\")) {\n const breweries = JSON.parse(this.data.get(\"breweries\"))\n\n breweries.forEach(brewery => {\n const option = new Option(brewery.name, brewery.id, true, true)\n input.append(option).trigger(\"change\")\n })\n }\n\n input.trigger({type: \"select2:select\"})\n }\n\n _transport(params, success, failure) {\n let queryParams = params.data\n let query = queryParams.query\n delete queryParams.query\n this.algolia.index.search(query, queryParams).then(success, failure)\n }\n\n _data(params) {\n return {\n query: params.term,\n hitsPerPage: 10,\n page: (params.page || 1) - 1\n }\n }\n\n _processResults(data) {\n return {\n results: data.hits.map(hit => ({\n id: hit.objectID,\n text: hit.name\n })),\n pagination: {\n more: data.page + 1 < data.nbPages\n }\n }\n }\n\n _escapeMarkup(markup) {\n return markup\n }\n\n _templateResult(brewery) {\n const result = this.resultTarget.cloneNode(true)\n result.classList.remove(\"hidden\")\n result.querySelector(\".brewery-name\").textContent = brewery.text\n return result\n }\n\n _templateSelection(brewery) {\n const result = this.selectionTarget.cloneNode(true)\n result.classList.remove(\"hidden\")\n result.querySelector(\".brewery-name\").textContent = brewery.text\n return result\n }\n\n // https://github.com/select2/select2/blob/master/src/js/select2/i18n/en.js\n _language() {\n return {\n inputTooShort: function () {\n return \"Start typing brewery name...\";\n }\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"intersection\", \"container\", \"section\"]\n\n connect() {\n if (this.hasContainerTarget) {\n const observer = new IntersectionObserver(this.toggleBulkMove.bind(this))\n observer.observe(this.intersectionTarget)\n }\n }\n\n toggleBulkMove(entries) {\n const onScreen = entries[0].isIntersecting\n const scrolledPast = entries[0].boundingClientRect.y < 0\n const hide = !onScreen && !scrolledPast\n this.containerTarget.classList.toggle(\"hidden\", hide)\n }\n\n moveTo(event) {\n event.preventDefault()\n\n const servingIDs = this.servingIDs\n if (servingIDs.length) {\n const params = `ids[]=${servingIDs.join(\"&ids[]=\")}`\n $.ajax(`${event.currentTarget.href}?${params}`)\n .done(html => BeerMenus.Modals.insert(html))\n } else {\n alert(\"Oops, you didn't select anything.\")\n }\n }\n\n // private\n\n get servingIDs() {\n var servingIDs = []\n this.sectionTargets.forEach(section => {\n this.application\n .getControllerForElementAndIdentifier(section, \"select-all\")\n .checkboxTargets.forEach(checkbox => {\n if (checkbox.checked) {\n servingIDs.push(...checkbox.value.split(\",\"))\n }\n })\n })\n return servingIDs\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"input\", \"output\", \"views\", \"roi\" ]\n\n connect() {\n this.calculate()\n }\n\n calculate(event) {\n if (event && isNaN(parseInt(event.currentTarget.value))) {\n event.currentTarget.value = null\n return window.alert(\"Enter a number.\")\n }\n\n var output = this.conversion\n this.inputTargets.forEach(el => { output *= parseInt(el.value) })\n this.outputTarget.innerText = output.toFixed(2)\n\n this.viewsTargets.forEach((el, index) => {\n const views = parseInt(el.innerText)\n const roi = output * views\n this.roiTargets[index].innerText = `$${roi.toFixed(0)}`\n })\n }\n\n get conversion() {\n return parseFloat(this.data.get(\"conversion\"))\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this._insertCss()\n this._insertScript()\n }\n\n _insertCss() {\n const calendlyCss = document.getElementById(\"calendly-css\")\n if (calendlyCss) {\n } else {\n const tag = document.createElement(\"link\")\n tag.id = \"calendly-css\"\n tag.rel = \"stylesheet\"\n tag.media = \"screen\"\n tag.href = \"https://assets.calendly.com/assets/external/widget.css\"\n document.head.appendChild(tag)\n }\n }\n\n _insertScript() {\n const calendlyScript = document.getElementById(\"calendly-js\")\n if (calendlyScript) {\n } else {\n const script = document.createElement(\"script\")\n script.src = \"https://assets.calendly.com/assets/external/widget.js\"\n script.id = \"calendly-js\"\n document.head.appendChild(script)\n }\n }\n\n click() {\n BeerMenus.Analytics.track(\"Clicked Schedule Call\", {\n \"Platform\": this.data.get(\"platform\"),\n \"Logged In\": this.data.get(\"loggedIn\"),\n \"Schedule Call Campaign\": this.data.get(\"campaign\"),\n })\n\n Calendly.showPopupWidget(this.data.get(\"url\"))\n\n $(\"#next-button\").text(\"Continue\")\n }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n async connect() {\n await Promise.all([\n import(\"chartkick\"),\n import(\"chart.js\")\n ])\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"primaryDisplay\", \"secondaryDisplay\", \"primary\", \"secondary\"]\n\n connect() {\n this.checkboxChanged()\n }\n\n checkboxChanged() {\n const primaryCount = this.primaryTargets.filter(cb => cb.checked).length\n this.primaryDisplayTarget.textContent = primaryCount\n\n // Only update secondary if it exists\n if (this.hasSecondaryDisplayTarget) {\n const secondaryCount = this.secondaryTargets.filter(cb => cb.checked).length\n this.secondaryDisplayTarget.textContent = secondaryCount\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"checkbox\", \"form\"]\n\n change(event) {\n this.formTarget.submit()\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"source\", \"hidden\" ]\n\n toggle(event) {\n this.hiddenTargets.forEach(target => {\n if (target.classList.contains(\"hidden\")) {\n target.classList.remove(\"hidden\")\n } else {\n target.classList.add(\"hidden\")\n }\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n async connect() {\n await Accordion.import()\n this.initializeAccordion()\n }\n\n // private\n\n initializeAccordion() {\n $(this.element).accordion({\n active: this.activeChecklistIndex,\n heightStyle: \"content\",\n collapsible: true,\n icons: {\n header: \"pure-icon pure-icon-angle-down\",\n activeHeader: \"pure-icon pure-icon-angle-up\"\n },\n beforeActivate: this.beforeActivate.bind(this),\n })\n }\n\n beforeActivate(event, ui) {\n const expandedIdentifier = ui.newHeader.data(\"identifier\")\n if (expandedIdentifier) { // don't update if closing the only expanded\n $.ajax({\n url: `/places/${this.barID}/menu/preferences/active_checklist`,\n method: \"POST\",\n data: {\n identifier: expandedIdentifier,\n },\n })\n }\n }\n\n get activeChecklistIndex() {\n return parseInt(this.data.get(\"active-checklist-index\")) || 0\n }\n\n get barID() {\n return this.data.get(\"bar-id\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"loading\", \"error\" ]\n\n connect() {\n this.fetchChecklists()\n }\n\n reload() {\n this.fetchChecklists()\n }\n\n // private\n\n fetchChecklists() {\n this.showError(false)\n\n $.ajax({\n url: `/places/${this.barID}/checklists/lists.js`,\n error: () => { this.showError(true) },\n })\n }\n\n showError(visible) {\n if (visible) {\n this.loadingTarget.classList.add(\"hidden\")\n this.errorTarget.classList.remove(\"hidden\")\n } else {\n this.loadingTarget.classList.remove(\"hidden\")\n this.errorTarget.classList.add(\"hidden\")\n }\n }\n\n get barID() {\n return this.data.get(\"bar-id\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"trigger\", \"card\", \"show\" ]\n\n expand(event) {\n event.preventDefault()\n\n if (this.cardTargets.length > 0) {\n this.cardTargets.forEach(t => {\n t.classList.remove(\"hidden\")\n t.classList.remove(\"collapsed-cards\")\n })\n }\n\n if (this.showTargets.length > 0) {\n this.showTargets.forEach(t => t.classList.remove(\"hidden\"))\n }\n\n if (this.triggerTargets.length > 0) {\n this.triggerTargets.forEach(t => t.classList.toggle(\"hidden\"))\n }\n }\n\n collapse(event) {\n if (this.showTargets.length > 0) {\n this.showTargets.forEach(t => t.classList.add(\"hidden\"))\n }\n\n if (this.triggerTargets.length > 0) {\n this.triggerTargets.forEach(t => t.classList.toggle(\"hidden\"))\n }\n\n if (this.cardTargets.length > 0) {\n this.cardTargets.forEach(target => {\n if (target.querySelector('input[type=radio]:checked')) {\n target.classList.add(\"collapsed-cards\")\n } else {\n target.classList.add(\"hidden\")\n }\n })\n }\n\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"source\", \"successMessage\"]\n static values = { source: String }\n\n copy(event) {\n event.preventDefault()\n navigator.clipboard.writeText(this.sourceValue).then(() => {\n this.showSuccessMessage()\n })\n }\n\n copyValue(event) {\n event.preventDefault()\n navigator.clipboard.writeText(this.sourceTarget.value).then(() => {\n this.showSuccessMessage()\n })\n }\n\n copyText(event) {\n event.preventDefault()\n navigator.clipboard.writeText(this.sourceTarget.innerText).then(() => {\n this.showSuccessMessage()\n })\n }\n\n showSuccessMessage() {\n if (this.hasSuccessMessageTarget) {\n // Remove the 'fade-out' class if it exists to reset the animation\n this.successMessageTarget.classList.remove(\"fade-out\");\n\n // Force a reflow to reset the animation (by accessing offsetWidth)\n void this.successMessageTarget.offsetWidth;\n\n // Add the 'fade-out' class to start the animation again\n this.successMessageTarget.classList.remove(\"hidden\");\n this.successMessageTarget.classList.add(\"fade-out\");\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n // technique pulled from Stimulus Dialog\n close() {\n this.element.setAttribute(\"closing\", \"\")\n\n Promise.all(this.element.getAnimations().map((animation) => animation.finished)).then(() => {\n this.element.remove()\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"editor\", \"field\", \"defaultCSS\", \"alternateCSS\" ]\n\n async connect() {\n await import(\"../models/codemirror-editor.js\")\n\n this.editorTarget.addEventListener(\"cme-change\", (event) => {\n this.fieldTarget.value = event.detail\n })\n }\n\n reset(event) {\n event.preventDefault()\n this.editorTarget.value = this.defaultCSSTarget.innerText\n }\n\n resetAlternate(event) {\n event.preventDefault()\n this.editorTarget.value = this.alternateCSSTarget.innerText\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"collapsed\", \"expanded\", \"arrowToggle\" ]\n\n toggle(event) {\n event.preventDefault()\n this.collapsedTarget.classList.toggle(\"hidden\")\n this.expandedTarget.classList.toggle(\"hidden\")\n this.isExpanded = this.collapsedTarget.classList.contains(\"hidden\")\n this.setLocationHash(event.currentTarget.href)\n\n if (this.hasArrowToggleTarget) {\n this.arrowToggleTarget.classList.toggle(\"pure-icon-angle-down\")\n this.arrowToggleTarget.classList.toggle(\"pure-icon-angle-right\")\n }\n }\n\n expand(event) {\n event.preventDefault()\n this.collapsedTarget.classList.toggle(\"hidden\", true)\n this.expandedTarget.classList.toggle(\"hidden\", false)\n this.isExpanded = true\n this.setLocationHash(event.currentTarget.href)\n this.scrollToElement(this.expandedTarget)\n }\n\n setLocationHash(href) {\n if (href) {\n const [hash] = href.split(\"#\").slice(-1)\n if (hash != \"\") {\n window.location.hash = hash\n }\n }\n }\n\n scrollToElement(element) {\n $(\"html, body\").animate({ scrollTop: element.offsetTop - 16 }, \"slow\")\n }\n\n set isExpanded(expanded) {\n var data = {}\n data[this.data.get(\"key\")] = expanded\n\n $.ajax({\n url: `/places/${this.barID}/menu/preferences`,\n method: \"PATCH\",\n data: { expanded_collapsibles: data },\n })\n }\n\n get key() {\n return this.data.get(\"key\")\n }\n\n get barID() {\n return this.data.get(\"bar-id\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"content\", \"arrow\" ]\n\n connect() {\n this.arrowTarget.addEventListener(\"click\", (e) => {\n e.preventDefault()\n this.toggleContent()\n })\n }\n\n // private\n\n toggleContent() {\n this.contentTarget.classList.toggle(\"closed\")\n this.arrowTarget.classList.toggle(\"rotate-90\")\n }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"selectedItems\", \"modal\", \"item\", \"itemName\" ]\n\n connect() {\n this.toggle()\n }\n\n showModal() {\n $(this.modalTarget).modal()\n }\n\n toggle() {\n const itemNames = this.itemNameTargets.map(target => target.innerText)\n const selectedItems = itemNames.filter((name, index) => {\n return this.itemTargets[index].checked\n })\n\n if (selectedItems.length == 0) {\n this.selectedItemsTarget.innerHTML = \"(nothing selected)\"\n } else {\n this.selectedItemsTarget.innerHTML = selectedItems.join(\"
    \")\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"source\", \"receiver\" ]\n\n toggle(event) {\n if (this.receiverTargets.length > 0) {\n var sourceID = event.currentTarget.value\n\n this.receiverTargets.forEach(t => {\n if (sourceID == t.dataset.sourceid) {\n t.classList.remove(\"hidden\")\n t.disabled = false\n } else {\n t.classList.add(\"hidden\")\n t.disabled = true\n }\n })\n }\n\n }\n}\n", "import ProductAutocompleteController from \"./product-autocomplete-controller\"\n\nexport default class extends ProductAutocompleteController {\n static targets = [\"search\", \"beerID\", \"description\", \"price\", \"template\", \"submit\"]\n\n async connect() {\n let libraries = await AlgoliaSource.importLibraries()\n const bar = `bar_id = ${this.barID}`\n const product = `product_type = ${this.productType}`\n this.algolia = new AlgoliaSource(libraries[0], \"Beer\", `${bar} AND ${product}`)\n this.connected()\n }\n\n // private\n\n connected() {\n this.initializeSearch()\n this.searchTarget.nextSibling.focus()\n\n super.connect()\n }\n\n initializeSearch() {\n this.search = $(this.searchTarget).autocomplete(this.options, this.dataset)\n\n this.search\n .on(\"autocomplete:selected autocomplete:autocompleted\", (event, data) => {\n this.state = \"existing\"\n this.setHiddenField(data.objectID)\n this.fetchDescription(data.objectID)\n this.priceTarget.focus()\n })\n .on(\"autocomplete:closed\", () => { this.state = \"closed\" })\n }\n\n setHiddenField(id) {\n if (this.hasBeerIDTarget && id) {\n this.beerIDTarget.value = id\n }\n }\n\n fetchDescription(id) {\n this.submitTarget.disabled = true\n\n $.ajax(`/places/${this.barID}/beer_descriptions/${id}`)\n .done((data) => { this.descriptionTarget.value = data })\n .always(() => this.submitTarget.disabled = false )\n }\n\n source(query, callback) {\n return this.algolia.source({ query: query, hitsPerPage: this.limit })\n }\n\n suggestion(hit) {\n return new BeerAutocompleteSuggestion(this.templateTarget).build(hit)\n }\n\n set state(val) {\n this._state = val\n }\n\n get dataset() {\n return {\n source: this.algolia.source.bind(this),\n name: \"beers\",\n displayKey: (suggestion) => { return suggestion.name },\n templates: { suggestion: this.suggestion.bind(this) },\n }\n }\n\n get options() {\n return {\n autoselect: true,\n cache: false\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"date\", \"time\" ]\n\n async connect() {\n let libraries = await Promise.all([\n import(\"jquery-ui/ui/widgets/datepicker\"),\n import(\"timepicker\")\n ])\n\n this.initializeDate()\n this.initializeTime()\n }\n\n // private\n\n initializeDate() {\n if (this.hasDateTarget) {\n let options = { dateFormat: \"yy-mm-dd\" }\n if (this.data.has(\"min-date\")) {\n options.minDate = this.data.get(\"min-date\")\n }\n $(this.dateTarget).datepicker(options)\n }\n }\n\n initializeTime() {\n if (this.hasTimeTarget) {\n $(this.timeTarget).timepicker({\n timeFormat: \"h:i A\",\n })\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n import(\"actioncable\").then(ActionCable => {\n window.App || (window.App = {})\n window.App.cable = ActionCable.default.createConsumer()\n\n window.App.cable.subscriptions.create(\"DigitalDisplayChannel\", {\n connected: function() {},\n disconnected: function() {},\n rejected: function() {},\n received: function(data) {\n window.tvMenuLoader && window.tvMenuLoader.clearScreens()\n }\n })\n })\n }\n}\n", "/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n", "/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n", "/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n", "/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n", "/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size'\n ],\n factory\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n require('ev-emitter'),\n require('get-size')\n );\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(\n window.EvEmitter,\n window.getSize\n );\n }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n for ( var prop in obj ) {\n return false;\n }\n prop = null;\n return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n 'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n 'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n if ( !element ) {\n return;\n }\n\n this.element = element;\n // parent layout class, i.e. Masonry, Isotope, or Packery\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n\n this.css({\n position: 'absolute'\n });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n var elemStyle = this.element.style;\n\n for ( var prop in style ) {\n // use vendor property if available\n var supportedProp = vendorProperties[ prop ] || prop;\n elemStyle[ supportedProp ] = style[ prop ];\n }\n};\n\n // measure position, and sets it\nproto.getPosition = function() {\n var style = getComputedStyle( this.element );\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n var x = parseFloat( xValue );\n var y = parseFloat( yValue );\n // convert percent to pixels\n var layoutSize = this.layout.size;\n if ( xValue.indexOf('%') != -1 ) {\n x = ( x / 100 ) * layoutSize.width;\n }\n if ( yValue.indexOf('%') != -1 ) {\n y = ( y / 100 ) * layoutSize.height;\n }\n // clean up 'auto' or other non-integer values\n x = isNaN( x ) ? 0 : x;\n y = isNaN( y ) ? 0 : y;\n // remove padding from measurement\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n this.position.x = x;\n this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n var layoutSize = this.layout.size;\n var style = {};\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n\n // x\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n var x = this.position.x + layoutSize[ xPadding ];\n // set in percentage or pixels\n style[ xProperty ] = this.getXValue( x );\n // reset other property\n style[ xResetProperty ] = '';\n\n // y\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n var y = this.position.y + layoutSize[ yPadding ];\n // set in percentage or pixels\n style[ yProperty ] = this.getYValue( y );\n // reset other property\n style[ yResetProperty ] = '';\n\n this.css( style );\n this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && !isHorizontal ?\n ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && isHorizontal ?\n ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n this.getPosition();\n // get current x & y from top/left\n var curX = this.position.x;\n var curY = this.position.y;\n\n var didNotMove = x == this.position.x && y == this.position.y;\n\n // save end position\n this.setPosition( x, y );\n\n // if did not move and not transitioning, just go to layout\n if ( didNotMove && !this.isTransitioning ) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate( transX, transY );\n\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n};\n\nproto.getTranslate = function( x, y ) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n this.setPosition( x, y );\n this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n this.position.x = parseFloat( x );\n this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n this.css( args.to );\n if ( args.isCleaning ) {\n this._removeStyles( args.to );\n }\n for ( var prop in args.onTransitionEnd ) {\n args.onTransitionEnd[ prop ].call( this );\n }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n // redirect to nonTransition if no transition duration\n if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n this._nonTransition( args );\n return;\n }\n\n var _transition = this._transn;\n // keep track of onTransitionEnd callback by css property\n for ( var prop in args.onTransitionEnd ) {\n _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n }\n // keep track of properties that are transitioning\n for ( prop in args.to ) {\n _transition.ingProperties[ prop ] = true;\n // keep track of properties to clean up when transition is done\n if ( args.isCleaning ) {\n _transition.clean[ prop ] = true;\n }\n }\n\n // set from styles\n if ( args.from ) {\n this.css( args.from );\n // force redraw. http://blog.alexmaccaw.com/css-transitions\n var h = this.element.offsetHeight;\n // hack for JSHint to hush about unused var\n h = null;\n }\n // enable transition\n this.enableTransition( args.to );\n // set styles that are transitioning\n this.css( args.to );\n\n this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n return str.replace( /([A-Z])/g, function( $1 ) {\n return '-' + $1.toLowerCase();\n });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if ( this.isTransitioning ) {\n return;\n }\n\n // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration;\n // enable transition styles\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n });\n // listen for transition end event\n this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n // disregard bubbled events from children\n if ( event.target !== this.element ) {\n return;\n }\n var _transition = this._transn;\n // get property name of transitioned property, convert to prefix-free\n var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n // remove property that has completed transitioning\n delete _transition.ingProperties[ propertyName ];\n // check if any properties are still transitioning\n if ( isEmptyObj( _transition.ingProperties ) ) {\n // all properties have completed transitioning\n this.disableTransition();\n }\n // clean style\n if ( propertyName in _transition.clean ) {\n // clean up style\n this.element.style[ event.propertyName ] = '';\n delete _transition.clean[ propertyName ];\n }\n // trigger onTransitionEnd callback\n if ( propertyName in _transition.onEnd ) {\n var onTransitionEnd = _transition.onEnd[ propertyName ];\n onTransitionEnd.call( this );\n delete _transition.onEnd[ propertyName ];\n }\n\n this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n this.removeTransitionStyles();\n this.element.removeEventListener( transitionEndEvent, this, false );\n this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n**/\nproto._removeStyles = function( style ) {\n // clean up transition styles\n var cleanStyle = {};\n for ( var prop in style ) {\n cleanStyle[ prop ] = '';\n }\n this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n // remove transition\n this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n delay = isNaN( delay ) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n this.element.parentNode.removeChild( this.element );\n // remove display: none\n this.css({ display: '' });\n this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n // just remove element if no transition support or no transition\n if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n this.removeElem();\n return;\n }\n\n // start transition\n this.once( 'transitionEnd', function() {\n this.removeElem();\n });\n this.hide();\n};\n\nproto.reveal = function() {\n delete this.isHidden;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onRevealTransitionEnd = function() {\n // check if still visible\n // during transition, item may have been hidden\n if ( !this.isHidden ) {\n this.emitEvent('reveal');\n }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n var optionStyle = this.layout.options[ styleProperty ];\n // use opacity\n if ( optionStyle.opacity ) {\n return 'opacity';\n }\n // get first property\n for ( var prop in optionStyle ) {\n return prop;\n }\n};\n\nproto.hide = function() {\n // set flag\n this.isHidden = true;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onHideTransitionEnd = function() {\n // check if still hidden\n // during transition, item may have been un-hidden\n if ( this.isHidden ) {\n this.css({ display: 'none' });\n this.emitEvent('hide');\n }\n};\n\nproto.destroy = function() {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n};\n\nreturn Item;\n\n}));\n", "/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './item'\n ],\n function( EvEmitter, getSize, utils, Item ) {\n return factory( window, EvEmitter, getSize, utils, Item);\n }\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./item')\n );\n } else {\n // browser global\n window.Outlayer = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n window.Outlayer.Item\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\nfunction Outlayer( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for ' + this.constructor.namespace +\n ': ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // add id for Outlayer.getFromElement\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n instances[ id ] = this; // associate via id\n\n // kick it off\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n if ( isInitLayout ) {\n this.layout();\n }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n var oldOption = this.constructor.compatOptions[ option ];\n return oldOption && this.options[ oldOption ] !== undefined ?\n this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n // get items from children\n this.reloadItems();\n // elements that affect layout, but are not laid out\n this.stamps = [];\n this.stamp( this.options.stamp );\n // set container style\n utils.extend( this.element.style, this.options.containerStyle );\n\n // bind resize method\n var canBindResize = this._getOption('resize');\n if ( canBindResize ) {\n this.bindResize();\n }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n // collection of item elements\n this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n var itemElems = this._filterFindItemElements( elems );\n var Item = this.constructor.Item;\n\n // create new Outlayer Items for collection\n var items = [];\n for ( var i=0; i < itemElems.length; i++ ) {\n var elem = itemElems[i];\n var item = new Item( elem, this );\n items.push( item );\n }\n\n return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n return this.items.map( function( item ) {\n return item.element;\n });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n this._resetLayout();\n this._manageStamps();\n\n // don't animate first layout\n var layoutInstant = this._getOption('layoutInstant');\n var isInstant = layoutInstant !== undefined ?\n layoutInstant : !this._isLayoutInited;\n this.layoutItems( this.items, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n this.getSize();\n};\n\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n var option = this.options[ measurement ];\n var elem;\n if ( !option ) {\n // default to 0\n this[ measurement ] = 0;\n } else {\n // use option as an element\n if ( typeof option == 'string' ) {\n elem = this.element.querySelector( option );\n } else if ( option instanceof HTMLElement ) {\n elem = option;\n }\n // use size of element, if element\n this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n items = this._getItemsForLayout( items );\n\n this._layoutItems( items, isInstant );\n\n this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n return items.filter( function( item ) {\n return !item.isIgnored;\n });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n this._emitCompleteOnItems( 'layout', items );\n\n if ( !items || !items.length ) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n\n items.forEach( function( item ) {\n // get x/y object from method\n var position = this._getItemLayoutPosition( item );\n // enqueue\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push( position );\n }, this );\n\n this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n return {\n x: 0,\n y: 0\n };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n this.updateStagger();\n queue.forEach( function( obj, i ) {\n this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n var stagger = this.options.stagger;\n if ( stagger === null || stagger === undefined ) {\n this.stagger = 0;\n return;\n }\n this.stagger = getMilliseconds( stagger );\n return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n if ( isInstant ) {\n // if not transition, just set CSS\n item.goTo( x, y );\n } else {\n item.stagger( i * this.stagger );\n item.moveTo( x, y );\n }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n var isResizingContainer = this._getOption('resizeContainer');\n if ( !isResizingContainer ) {\n return;\n }\n var size = this._getContainerSize();\n if ( size ) {\n this._setContainerMeasure( size.width, true );\n this._setContainerMeasure( size.height, false );\n }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n if ( measure === undefined ) {\n return;\n }\n\n var elemSize = this.size;\n // add padding and border width if border box\n if ( elemSize.isBorderBox ) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n elemSize.borderLeftWidth + elemSize.borderRightWidth :\n elemSize.paddingBottom + elemSize.paddingTop +\n elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max( measure, 0 );\n this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n var _this = this;\n function onComplete() {\n _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n }\n\n var count = items.length;\n if ( !items || !count ) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n function tick() {\n doneCount++;\n if ( doneCount == count ) {\n onComplete();\n }\n }\n\n // bind callback\n items.forEach( function( item ) {\n item.once( eventName, tick );\n });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n // add original event to arguments\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery ) {\n // set this.$element\n this.$element = this.$element || jQuery( this.element );\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n item.isIgnored = true;\n }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n delete item.isIgnored;\n }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ) {\n return;\n }\n\n this.stamps = this.stamps.concat( elems );\n // ignore\n elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ){\n return;\n }\n\n elems.forEach( function( elem ) {\n // filter out removed stamp elements\n utils.removeFrom( this.stamps, elem );\n this.unignore( elem );\n }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n if ( !elems ) {\n return;\n }\n // if string, use argument as selector string\n if ( typeof elems == 'string' ) {\n elems = this.element.querySelectorAll( elems );\n }\n elems = utils.makeArray( elems );\n return elems;\n};\n\nproto._manageStamps = function() {\n if ( !this.stamps || !this.stamps.length ) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n };\n};\n\n/**\n * @param {Element} stamp\n**/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize( elem );\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n window.addEventListener( 'resize', this );\n this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n window.removeEventListener( 'resize', this );\n this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n return;\n }\n\n this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n var size = getSize( this.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n**/\nproto.addItems = function( elems ) {\n var items = this._itemize( elems );\n // add items to collection\n if ( items.length ) {\n this.items = this.items.concat( items );\n }\n return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // layout and reveal just the new items\n this.layoutItems( items, true );\n this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // add items to beginning of collection\n var previousItems = this.items.slice(0);\n this.items = items.concat( previousItems );\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // layout new stuff without transition\n this.layoutItems( items, true );\n this.reveal( items );\n // layout previous items\n this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n this._emitCompleteOnItems( 'reveal', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.reveal();\n });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n this._emitCompleteOnItems( 'hide', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.hide();\n });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n // loop through items to get the one that matches\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n if ( item.element == elem ) {\n // return item\n return item;\n }\n }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n elems = utils.makeArray( elems );\n var items = [];\n elems.forEach( function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n items.push( item );\n }\n }, this );\n\n return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n var removeItems = this.getItems( elems );\n\n this._emitCompleteOnItems( 'remove', removeItems );\n\n // bail if no items to remove\n if ( !removeItems || !removeItems.length ) {\n return;\n }\n\n removeItems.forEach( function( item ) {\n item.remove();\n // remove item from collection\n utils.removeFrom( this.items, item );\n }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = '';\n // destroy items\n this.items.forEach( function( item ) {\n item.destroy();\n });\n\n this.unbindResize();\n\n var id = this.element.outlayerGUID;\n delete instances[ id ]; // remove reference to instance by id\n delete this.element.outlayerGUID;\n // remove data for jQuery\n if ( jQuery ) {\n jQuery.removeData( this.element, this.constructor.namespace );\n }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.outlayerGUID;\n return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n // sub-class Outlayer\n var Layout = subclass( Outlayer );\n // apply new options and compatOptions\n Layout.defaults = utils.extend( {}, Outlayer.defaults );\n utils.extend( Layout.defaults, options );\n Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );\n\n Layout.namespace = namespace;\n\n Layout.data = Outlayer.data;\n\n // sub-class Item\n Layout.Item = subclass( Item );\n\n // -------------------------- declarative -------------------------- //\n\n utils.htmlInit( Layout, namespace );\n\n // -------------------------- jQuery bridge -------------------------- //\n\n // make into jQuery plugin\n if ( jQuery && jQuery.bridget ) {\n jQuery.bridget( namespace, Layout );\n }\n\n return Layout;\n};\n\nfunction subclass( Parent ) {\n function SubClass() {\n Parent.apply( this, arguments );\n }\n\n SubClass.prototype = Object.create( Parent.prototype );\n SubClass.prototype.constructor = SubClass;\n\n return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n ms: 1,\n s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n if ( typeof time == 'number' ) {\n return time;\n }\n var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n var num = matches && matches[1];\n var unit = matches && matches[2];\n if ( !num.length ) {\n return 0;\n }\n num = parseFloat( num );\n var mult = msUnits[ unit ] || 1;\n return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nreturn Outlayer;\n\n}));\n", "/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer'),\n require('get-size')\n );\n } else {\n // browser global\n window.Masonry = factory(\n window.Outlayer,\n window.getSize\n );\n }\n\n}( window, function factory( Outlayer, getSize ) {\n\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry');\n // isFitWidth -> fitWidth\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n var proto = Masonry.prototype;\n\n proto._resetLayout = function() {\n this.getSize();\n this._getMeasurement( 'columnWidth', 'outerWidth' );\n this._getMeasurement( 'gutter', 'outerWidth' );\n this.measureColumns();\n\n // reset column Y\n this.colYs = [];\n for ( var i=0; i < this.cols; i++ ) {\n this.colYs.push( 0 );\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n };\n\n proto.measureColumns = function() {\n this.getContainerWidth();\n // if columnWidth is 0, default to outerWidth of first item\n if ( !this.columnWidth ) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element;\n // columnWidth fall back to item of first element\n this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter;\n\n // calculate columns\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth;\n // fix rounding errors, typically with gutters\n var excess = columnWidth - containerWidth % columnWidth;\n // if overshoot is less than a pixel, round up, otherwise floor it\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[ mathMethod ]( cols );\n this.cols = Math.max( cols, 1 );\n };\n\n proto.getContainerWidth = function() {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n var container = isFitWidth ? this.element.parentNode : this.element;\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var size = getSize( container );\n this.containerWidth = size && size.innerWidth;\n };\n\n proto._getItemLayoutPosition = function( item ) {\n item.getSize();\n // how many columns does this brick span\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n // round if off by 1 pixel, otherwise use ceil\n var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n colSpan = Math.min( colSpan, this.cols );\n // use horizontal or top column position\n var colPosMethod = this.options.horizontalOrder ?\n '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[ colPosMethod ]( colSpan, item );\n // position the brick\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n };\n // apply setHeight to necessary columns\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n for ( var i = colPosition.col; i < setMax; i++ ) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n };\n\n proto._getTopColPosition = function( colSpan ) {\n var colGroup = this._getTopColGroup( colSpan );\n // get the minimum Y value from the columns\n var minimumY = Math.min.apply( Math, colGroup );\n\n return {\n col: colGroup.indexOf( minimumY ),\n y: minimumY,\n };\n };\n\n /**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\n proto._getTopColGroup = function( colSpan ) {\n if ( colSpan < 2 ) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = [];\n // how many different places could this brick fit horizontally\n var groupCount = this.cols + 1 - colSpan;\n // for each group potential horizontal position\n for ( var i = 0; i < groupCount; i++ ) {\n colGroup[i] = this._getColGroupY( i, colSpan );\n }\n return colGroup;\n };\n\n proto._getColGroupY = function( col, colSpan ) {\n if ( colSpan < 2 ) {\n return this.colYs[ col ];\n }\n // make an array of colY values for that one group\n var groupColYs = this.colYs.slice( col, col + colSpan );\n // and get the max value of the array\n return Math.max.apply( Math, groupColYs );\n };\n\n // get column position based on horizontal index. #873\n proto._getHorizontalColPosition = function( colSpan, item ) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols;\n // shift to next row if item can't fit on current row\n col = isOver ? 0 : col;\n // don't let zero-size items take up space\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n return {\n col: col,\n y: this._getColGroupY( col, colSpan ),\n };\n };\n\n proto._manageStamp = function( stamp ) {\n var stampSize = getSize( stamp );\n var offset = this._getElementOffset( stamp );\n // get the columns that this stamp affects\n var isOriginLeft = this._getOption('originLeft');\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor( firstX / this.columnWidth );\n firstCol = Math.max( 0, firstCol );\n var lastCol = Math.floor( lastX / this.columnWidth );\n // lastCol should not go over if multiple of columnWidth #425\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min( this.cols - 1, lastCol );\n // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n stampSize.outerHeight;\n for ( var i = firstCol; i <= lastCol; i++ ) {\n this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n }\n };\n\n proto._getContainerSize = function() {\n this.maxY = Math.max.apply( Math, this.colYs );\n var size = {\n height: this.maxY\n };\n\n if ( this._getOption('fitWidth') ) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n };\n\n proto._getContainerFitWidth = function() {\n var unusedCols = 0;\n // count unused columns\n var i = this.cols;\n while ( --i ) {\n if ( this.colYs[i] !== 0 ) {\n break;\n }\n unusedCols++;\n }\n // fit container to columns that have been used\n return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n };\n\n proto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n\n}));\n", "/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n // universal module definition\n\n /*global define: false, module: false, require: false */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.imagesLoaded = factory(\n window,\n window.EvEmitter\n );\n }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// -------------------------- factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n'use strict';\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n}\n\n// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if ( !( this instanceof ImagesLoaded ) ) {\n return new ImagesLoaded( elem, options, onAlways );\n }\n // use elem as selector string\n var queryElem = elem;\n if ( typeof elem == 'string' ) {\n queryElem = document.querySelectorAll( elem );\n }\n // bail if bad element\n if ( !queryElem ) {\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n return;\n }\n\n this.elements = makeArray( queryElem );\n this.options = extend( {}, this.options );\n // shift arguments if no options set\n if ( typeof options == 'function' ) {\n onAlways = options;\n } else {\n extend( this.options, options );\n }\n\n if ( onAlways ) {\n this.on( 'always', onAlways );\n }\n\n this.getImages();\n\n if ( $ ) {\n // add jQuery Deferred object\n this.jqDeferred = new $.Deferred();\n }\n\n // HACK check async to allow time to bind listeners\n setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n this.images = [];\n\n // filter & find items if we have an item selector\n this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n // filter siblings\n if ( elem.nodeName == 'IMG' ) {\n this.addImage( elem );\n }\n // get background image on element\n if ( this.options.background === true ) {\n this.addElementBackgroundImages( elem );\n }\n\n // find children\n // no non-element nodes, #143\n var nodeType = elem.nodeType;\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n return;\n }\n var childImgs = elem.querySelectorAll('img');\n // concat childElems to filterFound array\n for ( var i=0; i < childImgs.length; i++ ) {\n var img = childImgs[i];\n this.addImage( img );\n }\n\n // get child background images\n if ( typeof this.options.background == 'string' ) {\n var children = elem.querySelectorAll( this.options.background );\n for ( i=0; i < children.length; i++ ) {\n var child = children[i];\n this.addElementBackgroundImages( child );\n }\n }\n};\n\nvar elementNodeTypes = {\n 1: true,\n 9: true,\n 11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n return;\n }\n // get url inside url(\"...\")\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n var matches = reURL.exec( style.backgroundImage );\n while ( matches !== null ) {\n var url = matches && matches[2];\n if ( url ) {\n this.addBackground( url, elem );\n }\n matches = reURL.exec( style.backgroundImage );\n }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n var loadingImage = new LoadingImage( img );\n this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n var background = new Background( url, elem );\n this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n var _this = this;\n this.progressedCount = 0;\n this.hasAnyBroken = false;\n // complete if no images\n if ( !this.images.length ) {\n this.complete();\n return;\n }\n\n function onProgress( image, elem, message ) {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout( function() {\n _this.progress( image, elem, message );\n });\n }\n\n this.images.forEach( function( loadingImage ) {\n loadingImage.once( 'progress', onProgress );\n loadingImage.check();\n });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n // progress event\n this.emitEvent( 'progress', [ this, image, elem ] );\n if ( this.jqDeferred && this.jqDeferred.notify ) {\n this.jqDeferred.notify( this, image );\n }\n // check if completed\n if ( this.progressedCount == this.images.length ) {\n this.complete();\n }\n\n if ( this.options.debug && console ) {\n console.log( 'progress: ' + message, image, elem );\n }\n};\n\nImagesLoaded.prototype.complete = function() {\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent( eventName, [ this ] );\n this.emitEvent( 'always', [ this ] );\n if ( this.jqDeferred ) {\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[ jqMethod ]( this );\n }\n};\n\n// -------------------------- -------------------------- //\n\nfunction LoadingImage( img ) {\n this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n // report based on naturalWidth\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n return;\n }\n\n // If none of the checks above matched, simulate loading on detached element.\n this.proxyImage = new Image();\n this.proxyImage.addEventListener( 'load', this );\n this.proxyImage.addEventListener( 'error', this );\n // bind to image as well for Firefox. #191\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nLoadingImage.prototype.onload = function() {\n this.confirm( true, 'onload' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n this.confirm( false, 'onerror' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n this.proxyImage.removeEventListener( 'load', this );\n this.proxyImage.removeEventListener( 'error', this );\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.img.src = this.url;\n // check if image is already complete\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n this.unbindEvents();\n }\n};\n\nBackground.prototype.unbindEvents = function() {\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n jQuery = jQuery || window.jQuery;\n if ( !jQuery ) {\n return;\n }\n // set local variable\n $ = jQuery;\n // $().imagesLoaded()\n $.fn.imagesLoaded = function( options, callback ) {\n var instance = new ImagesLoaded( this, options, callback );\n return instance.jqDeferred.promise( $(this) );\n };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// -------------------------- -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"theme\", \"color\", \"setting\", \"filterable\" ]\n\n async connect() {\n\n var Masonry = require('masonry-layout')\n var imagesLoaded = require('imagesloaded')\n\n self.msnry = new Masonry( '.grid', {\n itemSelector: '.grid-item',\n columnWidth: '.grid-sizer',\n percentPosition: true\n })\n\n $('.grid').imagesLoaded().progress( function() {\n self.msnry.layout()\n })\n }\n\n change(event) {\n var activeThemes = []\n var activeSettings = []\n var colorSetting = \"\"\n\n this.themeTargets.forEach((el, i) => {\n if (el.checked) { activeThemes.push(el.value) }\n })\n\n this.settingTargets.forEach((el, i) => {\n if (el.checked) { activeSettings.push(el.value) }\n })\n\n this.colorTargets.forEach((el, i) => {\n if (el.checked) { colorSetting = el.value }\n })\n\n this.filterableTargets.forEach((el, i) => {\n let filterValues = el.getAttribute(\"data-filter-values\")\n\n let activeTheme = activeThemes.length == 0 || activeThemes.some(r=> filterValues.includes(r))\n let activeSetting = activeSettings.length == 0 || activeSettings.some(r=> filterValues.includes(r))\n let activeColor = colorSetting == el.getAttribute(\"data-has-color\")\n\n if (activeTheme && activeSetting && activeColor) {\n el.classList.remove(\"hidden\")\n } else {\n el.classList.add(\"hidden\")\n }\n })\n self.msnry.layout()\n }\n\n layout(event) {\n self.msnry.layout()\n }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n async connect() {\n if (!window.Browser.isIE()) {\n (await import(\"select2/dist/js/select2.full.js\")).default() // init the plugin\n this.initializeSelect2()\n }\n }\n\n // private\n\n initializeSelect2() {\n $(this.element).select2({\n minimumResultsForSearch: Infinity,\n templateResult: (data, container) => {\n container.style.fontFamily = data.text\n return data.text\n },\n templateSelection: (state) => {\n return $(`${state.text}`)\n }\n }).on(\"select2:select\", () => {\n const event = new CustomEvent(\"customFont:selected\", { bubbles: true })\n this.element.dispatchEvent(event)\n }).on(\"select2:open\", () => {\n // We need this for when the user selects the same exact option\n setTimeout(() => {\n document.querySelector(\".select2-results__option[aria-selected=true]\").addEventListener(\"mouseup\", () => {\n const event = new CustomEvent(\"customFont:selected\", { bubbles: true })\n this.element.dispatchEvent(event)\n })\n })\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"name\", \"googlePlaceID\", \"website\", \"phoneNumber\", \"types\", \"template\", \"footer\" ]\n\n async initializedGoogleMaps(event) {\n if (event) {\n (await import(\"../vendor/autocomplete.jquery.js\")).default\n\n const emptyDiv = document.createElement(\"div\")\n this.placeService = new google.maps.places.PlacesService(emptyDiv)\n\n const sessionToken = new google.maps.places.AutocompleteSessionToken();\n this.autocompleteService = new google.maps.places.AutocompleteService()\n\n $(this.nameTarget).autocomplete({ autoselect: true }, {\n source: this.source.bind(this),\n displayKey: this.displayKey.bind(this),\n templates: {\n suggestion: this.suggestion.bind(this),\n footer: this.footer.bind(this),\n },\n })\n .on(\"autocomplete:selected autocomplete:autocompleted\",\n this.autocompleted.bind(this))\n .focus()\n }\n\n // ignore 'enter' key presses\n document.onkeypress = (e) => { return e.keyCode != 13 }\n }\n\n // private\n\n source(query, callback) {\n const options = {\n input: query,\n types: [\"establishment\"],\n sessionToken: this.sessionToken,\n }\n this.autocompleteService.getPlacePredictions(options, (predictions, status) => {\n callback(predictions)\n })\n }\n\n displayKey(hit) {\n return hit.structured_formatting.main_text\n }\n\n suggestion(hit) {\n const template = this.templateTarget.cloneNode(true)\n template.classList.remove(\"hidden\")\n\n const info = hit.structured_formatting\n template.querySelector(\"[data-ref='name']\").textContent = info.main_text\n template.querySelector(\"[data-ref='details']\").textContent = info.secondary_text\n\n return template\n }\n\n footer() {\n const footer = this.footerTarget.cloneNode(true)\n footer.classList.remove(\"hidden\")\n return footer\n }\n\n autocompleted(event, data) {\n const request = {\n placeId: data.place_id,\n fields: this.fields,\n sessionToken: this.sessionToken,\n }\n this.placeService.getDetails(request, (place, status) => {\n this.populateForm(place)\n this.resetSessionToken()\n })\n }\n\n populateForm(place) {\n this.googlePlaceIDTarget.value = place.place_id\n this.websiteTarget.value = place.website || \"\"\n this.phoneNumberTarget.value = place.international_phone_number || \"\"\n this.typesTarget.value = place.types || \"\"\n\n const addressService = new window.AddressService()\n addressService.populateFormFields(place, true)\n }\n\n resetSessionToken() {\n this._sessionToken = undefined\n }\n\n get sessionToken() {\n if (this._sessionToken === undefined) {\n this._sessionToken = new google.maps.places.AutocompleteSessionToken()\n }\n return this._sessionToken\n }\n\n get fields() {\n return [\n \"name\",\n \"place_id\",\n \"geometry\",\n \"address_components\",\n \"formatted_address\",\n \"type\",\n \"website\",\n \"international_phone_number\",\n ]\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"button\", \"menu\", \"links\"]\n\n connect() {\n this.buttonTarget.addEventListener(\"click\", (e) => {\n e.preventDefault()\n this.toggleMenu()\n })\n\n this.linksTarget.querySelectorAll(\"a\").forEach(link => {\n link.addEventListener(\"click\", this.toggleMenu.bind(this))\n })\n }\n\n // private\n\n toggleMenu() {\n this.buttonTarget.classList.toggle(\"lp-burger-open\")\n this.menuTarget.classList.toggle(\"lp-burger-open\")\n }\n}\n", "// https://css-tricks.com/styling-based-on-scroll-position/\nexport default class Debouncer {\n static debounce(fn) {\n let frame\n\n return (...params) => {\n if (frame) {\n cancelAnimationFrame(frame)\n }\n\n frame = requestAnimationFrame(() => {\n fn(...params)\n })\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport Debouncer from \"../models/debouncer\"\n\nexport default class extends Controller {\n connect() {\n this.lastScrollTop = window.pageYOffset\n this.headerHeight = this.element.offsetHeight\n\n document.addEventListener(\"scroll\",\n Debouncer.debounce(this.hasScrolled.bind(this)),\n { passive: true }\n )\n }\n\n // private\n\n hasScrolled() {\n const scrollTop = window.pageYOffset\n\n if (Math.abs(this.lastScrollTop - scrollTop) > this.delta) {\n if (scrollTop > this.lastScrollTop && scrollTop > this.headerHeight) {\n this.element.classList.remove(\"nav-down\")\n this.element.classList.add(\"nav-up\")\n } else {\n if (scrollTop + window.innerHeight < document.documentElement.scrollHeight) {\n this.element.classList.remove(\"nav-up\")\n this.element.classList.add(\"nav-down\")\n }\n }\n\n this.lastScrollTop = scrollTop\n }\n }\n\n get delta() {\n return 5\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n if (process.env.JAVASCRIPT_ERROR_REPORTING == \"1\") {\n this.initializeHoneybadger()\n }\n }\n\n // private\n\n initializeHoneybadger() {\n import(\"honeybadger-js\").then(Honeybadger => {\n Honeybadger.default.configure({\n apiKey: process.env.HONEYBADGER_API_KEY,\n environment: process.env.NODE_ENV,\n revision: __COMMIT_HASH__\n })\n\n if (this.data.get(\"user-id\")) {\n Honeybadger.default.setContext({\n user_id: this.data.get(\"user-id\"),\n user_email: this.data.get(\"user-email\")\n })\n }\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n get modalController() {\n return this.element.closest(\"[data-controller='block-modal']\").controller\n }\n\n process() {\n this.modalController.loading = true\n\n const form = new FormData()\n form.append('authenticity_token', $(\"meta[name=csrf-token]\").prop(\"content\"))\n\n fetch(this.data.get(\"endpoint\"), { method: \"POST\", body: form })\n .then(res => res.json())\n .then(json => {\n this.modalController.loading = false\n\n ;(iframe => iframe.src = iframe.src)(this.element.closest(\"bmu-state-manager\").querySelector(\"iframe\"))\n ;(iframe => iframe.src = iframe.src)(document.querySelector(\"[data-tv-preview-target='preview']\"))\n })\n .catch(err => {\n this.modalController.loading = false\n console.error(err)\n })\n }\n}\n", "/**\n * Creates a `` tag with a blob based on incoming CSS code,\n * then injects into ``.\n * \n * @param {string} css\n */\nexport default function(css) {\n var blob = new Blob([css], {type: \"text/css\"})\n var link = document.createElement(\"link\")\n link.rel = \"stylesheet\"\n link.href = URL.createObjectURL(blob)\n document.head.appendChild(link)\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nimport loadStyles from \"../lib/load-styles.js\"\n\nexport default class extends Controller {\n static targets = [ \"editor\", \"activationButtons\", \"editingButtons\" ]\n\n async connect() {\n const pintura = await import(\"../vendor/pintura/pintura.js\")\n const pinturaStyles = (await import(\"../../styles/vendor/pintura.css.js\")).default\n loadStyles(pinturaStyles)\n\n this.pintura = pintura\n }\n\n get modalController() {\n return this.element.closest(\"[data-controller='block-modal']\").controller\n }\n\n activate(event) {\n this.modalController.nonImageElementsHidden = true\n this.editorTarget.classList.add(\"opened\")\n this.pintura.setPlugins(this.pintura.plugin_crop, this.pintura.plugin_finetune, this.pintura.plugin_filter)\n this.editor = this.pintura.appendEditor(this.editorTarget, {\n src: this.data.get(\"imageUrl\"),\n imageReader: this.pintura.createDefaultImageReader(),\n imageWriter: this.pintura.createDefaultImageWriter(),\n filterFunctions: {\n invert: this.pintura.filterInvert,\n ...this.pintura.plugin_filter_defaults.filterFunctions\n },\n filterOptions: [\n ['Default', [[undefined, (locale) => locale.labelDefault]]],\n ['Invert', [[\"invert\", \"Invert\"]]],\n [\n 'Classic',\n [\n ['chrome', (locale) => locale.filterLabelChrome],\n ['fade', (locale) => locale.filterLabelFade],\n ['cold', (locale) => locale.filterLabelCold],\n ['warm', (locale) => locale.filterLabelWarm],\n ['pastel', (locale) => locale.filterLabelPastel],\n ],\n ],\n [\n 'Monochrome',\n [\n ['monoDefault', (locale) => locale.filterLabelMonoDefault],\n ['monoNoir', (locale) => locale.filterLabelMonoNoir],\n ['monoStark', (locale) => locale.filterLabelMonoStark],\n ['monoWash', (locale) => locale.filterLabelMonoWash],\n ],\n ],\n [\n 'Sepia',\n [\n ['sepiaDefault', (locale) => locale.filterLabelSepiaDefault],\n ['sepiaRust', (locale) => locale.filterLabelSepiaRust],\n ['sepiaBlues', (locale) => locale.filterLabelSepiaBlues],\n ['sepiaColor', (locale) => locale.filterLabelSepiaColor],\n ],\n ],\n ],\n ...this.pintura.plugin_finetune_defaults,\n locale: {\n ...this.pintura.locale_en_gb,\n ...this.pintura.plugin_crop_locale_en_gb,\n ...this.pintura.plugin_finetune_locale_en_gb,\n ...this.pintura.plugin_filter_locale_en_gb,\n },\n\n enableButtonExport: false\n })\n\n this.activationButtonsTarget.style.display = \"none\"\n this.editingButtonsTarget.style.display = \"block\"\n }\n\n async finish() {\n this.modalController.loading = true\n\n const result = await this.editor.processImage()\n\n const form = new FormData()\n form.append('uploaded_image', result.dest);\n form.append('authenticity_token', $(\"meta[name=csrf-token]\").prop(\"content\"))\n\n fetch(this.data.get(\"endpoint\"), { method: \"PUT\", body: form })\n .then(res => res.json())\n .then(json => {\n this.modalController.loading = false\n\n ;(iframe => iframe.src = iframe.src)(this.element.closest(\"bmu-state-manager\").querySelector(\"iframe\"))\n ;(iframe => iframe.src = iframe.src)(document.querySelector(\"[data-tv-preview-target='preview']\"))\n })\n .catch(err => {\n this.modalController.loading = false\n console.error(err)\n })\n\n this.editorTarget.classList.remove(\"opened\")\n this.editor.destroy()\n\n this.modalController.nonImageElementsHidden = false\n this.activationButtonsTarget.style.display = \"block\"\n this.editingButtonsTarget.style.display = \"none\"\n }\n\n cancel(event) {\n event.preventDefault()\n\n this.editorTarget.classList.remove(\"opened\")\n this.editor.destroy()\n\n this.modalController.nonImageElementsHidden = false\n this.activationButtonsTarget.style.display = \"block\"\n this.editingButtonsTarget.style.display = \"none\"\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"form\", \"latitude\", \"longitude\", \"name\", \"input\" ]\n\n connect() {\n if (!document.getElementById(\"mapkit-script\")) {\n new Promise(resolve => {\n const element = document.createElement(\"script\")\n element.id = \"mapkit-script\"\n element.addEventListener(\"load\", resolve, { once : true })\n element.src = \"https://cdn.apple-mapkit.com/mk/5.0.x/mapkit.js\"\n document.head.appendChild(element)\n }).then(() => {\n mapkit.init({\n language: \"en\",\n authorizationCallback: this.authorizationCallback,\n })\n \n mapkit.addEventListener(\"error\", this.mapkitError.bind(this))\n\n this.initializeAutocomplete()\n })\n } else {\n this.initializeAutocomplete()\n }\n }\n\n reset() {\n this.latitudeTarget.value = \"\"\n this.longitudeTarget.value = \"\"\n this.nameTarget.value = \"\"\n }\n\n submit(event) {\n event.preventDefault()\n\n if (this.nameTarget.value || this.error) {\n $.rails.disableFormElement($(event.currentTarget))\n $.rails.fire($(this.formTarget), \"submit\")\n } else {\n $(this.inputTargets).autocomplete(\"open\")\n BeerMenus.Messages.setError(\"Whoops, please select a suggested location.\")\n }\n }\n\n // private\n\n async initializeAutocomplete() {\n (await import(\"../vendor/autocomplete.jquery.js\")).default // init the plugin\n\n $(this.inputTarget).autocomplete({ autoselect: true }, [{\n source: this.source.bind(this),\n templates: { suggestion: this.suggestion.bind(this) },\n displayKey: this.displayKey.bind(this),\n debounce: 200,\n }]).on(\"autocomplete:selected autocomplete:autocompleted\", (event, data) => {\n this.populateForm(data)\n }).on(\"autocomplete:opened\", () => {\n this.reset()\n })\n }\n\n authorizationCallback(done) {\n $.ajax({ url: \"/api/internal/tokens\",\n type: \"POST\",\n success: (response) => {\n done(response)\n },\n })\n }\n\n source(query, callback) {\n this.search.autocomplete(query, (error, data) => {\n if (error) {\n if (!this.error) {\n BeerMenus.Analytics.track(\"Over MapKit API Limit\")\n }\n this.error = error\n } else {\n const results = data.results.filter(result => {\n const lines = result.displayLines.join(\" \").toLowerCase()\n return !lines.includes(\"search nearby\")\n })\n callback(results)\n }\n })\n }\n\n suggestion(hit) {\n return `

    ${this.displayKey(hit)}

    `\n }\n\n displayKey(obj) {\n return obj.displayLines.join(\", \")\n }\n\n populateForm(result) {\n this.latitudeTarget.value = result.coordinate.latitude\n this.longitudeTarget.value = result.coordinate.longitude\n this.nameTarget.value = result.displayLines.join(\", \")\n }\n\n mapkitError(event) {\n var message = null\n switch (event.status) {\n case \"Unauthorized\":\n message = \"MapKit JS unauthorized.\"\n break\n case \"Too Many Requests\":\n message = \"MapKit JS over daily request limit.\"\n break\n }\n\n if (message != null) {\n $.ajax({\n method: \"POST\",\n url: \"/api/internal/logs\",\n data: { message: `[MapKit] ${message}` },\n })\n }\n }\n\n get search() {\n if (this._search == undefined) {\n this._search = new mapkit.Search\n }\n return this._search\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"container\"]\n\n async connect() {\n\n var Masonry = require('masonry-layout')\n var imagesLoaded = require('imagesloaded')\n var container = this.containerTarget\n\n self.msnry = new Masonry(container, {\n itemSelector: '.grid-item',\n columnWidth: '.grid-sizer',\n percentPosition: true\n })\n\n $(container).imagesLoaded().progress( function() {\n self.msnry.layout()\n })\n\n }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"loading\", \"content\", \"error\"]\n\n connect() {\n window.BeerMenus.controllers.menuController = this\n this.loadMenu()\n }\n\n refresh() {\n this.loadMenu()\n }\n\n // private\n\n loadMenu() {\n this.show(this.loadingTarget)\n\n $.ajax(`/places/${this.data.get(\"bar-id\")}/menu`)\n .done((html) => {\n this.show(this.contentTarget)\n this.contentTarget.innerHTML = html\n })\n .fail(() => this.show(this.errorTarget))\n }\n\n show(target) {\n [this.loadingTarget, this.contentTarget, this.errorTarget]\n .forEach((t) => t.classList.add(\"hidden\"))\n target.classList.remove(\"hidden\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"search\", \"beerTemplate\", \"servingTemplate\", \"modal\" ]\n\n connect() {\n if (this.searchTarget.getAttribute(\"aria-hidden\") == \"true\") { return }\n\n $(this.searchTarget).one(\"focus\",\n this.fetchServingsAndInitializeSearch.bind(this))\n }\n\n teardown() {\n this.search.autocomplete(\"destroy\")\n }\n\n showModal() {\n if (this.hasModalTarget) {\n $(this.modalTarget).modal()\n window.scrollTo(0, 0)\n $(this.searchTargets).focus()\n }\n }\n\n closeModal() {\n $(this.searchTargets).autocomplete(\"val\", \"\")\n\n if (this.hasModalTarget) {\n $(this.modalTarget).modal(\"hide\")\n }\n }\n\n // private\n\n fetchServingsAndInitializeSearch() {\n Promise.all([\n $.ajax(`/places/${this.barID}/menu/search.json?buy=${this.buyingEnabled}&edit=${this.isEdit}`),\n AlgoliaSource.importLibraries()\n ]).then(promises => {\n this.servings = promises[0]\n this.initializeAlgolia(promises[1][0])\n this.initializeSearch()\n $(this.searchTargets).focus()\n })\n }\n\n initializeAlgolia(algoliasearch) {\n const filters = Object.keys(this.servings)\n .map(id => `objectID:${id}`).join(\" OR \")\n this.baseSource = new AlgoliaSource(algoliasearch, \"Beer\", filters).source\n }\n\n initializeSearch() {\n this.search = $(this.searchTarget).autocomplete(this.options, this.dataset)\n .on(\"autocomplete:opened\", this.opened.bind(this))\n .on(\"autocomplete:selected autocomplete:autocompleted\", this.selected.bind(this))\n }\n\n opened(event) {\n if (!isNaN(this.scrollOffset)) {\n const offset = $(event.currentTarget).offset().top - this.scrollOffset\n $(\"html, body\").animate({ scrollTop: offset }, \"slow\")\n }\n }\n\n selected(event, suggestion) {\n this.closeModal()\n\n if (this.buyingEnabled) {\n $.ajax(this.buyPath(suggestion))\n } else if (this.isEdit) {\n Turbo.visit(this.editPath(suggestion), { frame: `serving_${suggestion.servings[0].id}` })\n } else {\n if (typeof(Turbolinks) == \"object\") {\n Turbolinks.visit(suggestion.path)\n } else {\n location.href = suggestion.path\n }\n }\n }\n\n source(query, callback) {\n this.baseSource(query, (suggestions) => {\n const servings = suggestions.map(suggestion => {\n const servings = this.servings[suggestion.objectID]\n suggestion.servings = servings\n return suggestion\n })\n return callback(servings)\n })\n }\n\n suggestion(hit) {\n const beerTemplate = this.beerTemplateTarget.cloneNode(true)\n beerTemplate.classList.remove(\"hidden\")\n beerTemplate.querySelector(\"[data-ref='name']\").textContent = hit.name\n\n const meta = new BeerMetadata(hit).toString()\n beerTemplate.querySelector(\"[data-ref='meta']\").textContent = meta\n\n hit.servings.forEach(serving => {\n const servingTemplate = this.servingTemplateTarget.cloneNode(true)\n servingTemplate.classList.remove(\"hidden\")\n servingTemplate.querySelector(\"[data-ref='availability']\").classList.add(serving.availability)\n servingTemplate.querySelector(\"[data-ref='details']\").textContent = serving.details\n beerTemplate.querySelector(\"[data-ref='servings']\").appendChild(servingTemplate)\n })\n\n const editButton = beerTemplate.querySelector(\"[data-ref='edit']\")\n if (editButton) {\n editButton.addEventListener(\"click\", (e) => e.preventDefault())\n }\n\n return beerTemplate\n }\n\n editPath(hit) {\n const servingID = hit.servings[0].id\n return `/servings/${servingID}/choose?bar_id=${this.barID}`\n }\n\n buyPath(hit) {\n const beerID = hit.objectID\n return `/places/${this.barID}/buy/?beer_id=${beerID}&cart_id=${this.cartID}&edit_order=${this.editOrder}`\n }\n\n get options() {\n return {\n autoselect: true,\n openOnFocus: true,\n clearOnSelected: true,\n debug: false,\n cssClasses: {\n prefix: \"menu-search\",\n cursor: \"cursor\",\n },\n }\n }\n\n get dataset() {\n return {\n source: this.source.bind(this),\n name: \"beers\",\n displayKey: (suggestion) => { return suggestion.name },\n templates: { suggestion: this.suggestion.bind(this) },\n }\n }\n\n get barID() {\n return this.data.get(\"bar-id\")\n }\n\n get cartID() {\n return this.data.get(\"cart-id\")\n }\n\n get scrollOffset() {\n return parseInt(this.data.get(\"scroll-offset\"))\n }\n\n get buyingEnabled() {\n return this.data.get(\"buying-enabled\") == \"true\"\n }\n\n get editOrder() {\n return this.data.get(\"edit-order\") == \"true\"\n }\n\n get isEdit() {\n return this.data.get(\"is-edit\") == \"true\"\n }\n\n get editMenuVersion() {\n return this.data.get(\"edit-menu-version\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n showNewSectionModal(event) {\n event.preventDefault()\n\n $(\"#menu-sections\").modal(\"hide\")\n MenuSections.showNewSectionModal(this.data.get(\"product-type\"))\n }\n}\n", "import { Controller} from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"menuSection\", \"servingType\", \"error\"]\n\n sectionChanged(event) {\n let selectedOption = null\n if (event.currentTarget.selectedOptions) {\n selectedOption = event.currentTarget.selectedOptions[0]\n } else {\n // IE 11\n selectedOption = event.currentTarget.options[event.currentTarget.selectedIndex]\n }\n\n if (selectedOption.dataset[\"type\"] == \"create\") {\n this.showNewSectionModal()\n }\n\n this.clearError()\n }\n\n servingTypeChanged(event) {\n this.selectMenuSection(event.currentTarget.value)\n }\n\n newSection(event) {\n event.preventDefault()\n this.showNewSectionModal()\n }\n\n // private\n\n showNewSectionModal() {\n MenuSections.showNewSectionModal(this.data.get(\"product-type\"))\n\n document.querySelector(\"#new-menu-section button\")\n .addEventListener(\"click\", (e) => {\n this.selectMenuSection(this.servingTypeTarget.value)\n })\n }\n\n selectMenuSection(servingType) {\n if (this.globalMenuSectionSelected) {\n const servingTypeInt = parseInt(servingType)\n for (let [sectionID, servingTypes] of Object.entries(this.sectionIDs)) {\n if (servingTypes.includes(servingTypeInt)) {\n this.menuSectionTarget.value = sectionID\n }\n }\n }\n }\n\n clearError() {\n if (this.hasErrorTarget) {\n this.errorTarget.remove()\n }\n }\n\n get globalMenuSectionSelected() {\n const selectedMenuSectionID = parseInt(this.menuSectionTarget.value)\n return this.globalSectionIDs.includes(selectedMenuSectionID)\n }\n\n get sectionIDs() {\n if (this._sectionIDs === undefined) {\n this._sectionIDs = JSON.parse(this.data.get(\"section-ids\"))\n }\n return this._sectionIDs\n }\n\n get globalSectionIDs() {\n if (this._globalSectionIDs === undefined) {\n this._globalSectionIDs = JSON.parse(this.data.get(\"global-section-ids\"))\n }\n return this._globalSectionIDs\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport const MAX_MONTHLY_PRICE = 99\nexport const MAX_ANNUAL_PRICE = 599\nexport const MAX_ANNUAL_SAVINGS = 589\n\nexport default class extends Controller {\n static targets = [ \"option\", \"monthly\", \"annual\", \"plans\", \"names\",\n \"monthlyPrice\", \"annualPrice\", \"annualSavings\", \"modalPlanNames\",\n \"modalPrice\", \"modalSavings\", \"modalAllInclusivePrice\", \"mobile\",\n ]\n\n connect() {\n this.allInclusiveOption = this.optionTargets.shift()\n this.updateContent()\n }\n\n toggle(event) {\n $(event.target).closest(\".modular-checkbox\").toggleClass(\"checked\")\n\n if (event.target == this.allInclusiveOption && event.target.checked) {\n this.selectOnlyAllInclusive(false)\n } else if (event.target != this.monthlyTarget && event.target != this.annualTarget) {\n this.updateContent(event.target)\n }\n\n var atAnnualMaxPrice = this.annualPriceTarget.innerText == MAX_ANNUAL_PRICE\n if (event.target == this.annualTarget && atAnnualMaxPrice) {\n this.selectOnlyAllInclusive(!this.allInclusiveOption.checked)\n }\n }\n\n updateContent(checkbox) {\n var planNames = []\n var monthlyPlans = []\n var annualPlans = []\n var monthlyPrice = 0\n var annualPrice = 0\n var annualSavings = 0\n\n var selectedPlans = this.optionTargets.filter(checkbox => checkbox.checked)\n selectedPlans.forEach(plan => {\n planNames.push(plan.dataset.name)\n monthlyPlans.push(plan.dataset.monthly)\n annualPlans.push(plan.dataset.annual)\n monthlyPrice += parseFloat(plan.dataset.monthlyPrice)\n annualPrice += parseFloat(plan.dataset.annualPrice)\n annualSavings += parseFloat(plan.dataset.annualSavings)\n })\n\n if (checkbox != null && checkbox.checked && this.allInclusiveOption.checked) {\n this.allInclusiveOption.checked = false\n $(this.allInclusiveOption).closest(\".modular-checkbox\").removeClass(\"checked\")\n this.updateContent()\n } else if (this.shouldSelectAllInclusive(monthlyPrice, annualPrice)) {\n this.selectOnlyAllInclusive(true, planNames, monthlyPrice, annualPrice)\n } else {\n this.populateHtml(planNames, monthlyPlans, monthlyPrice, annualPlans, annualPrice, annualSavings)\n }\n }\n\n shouldSelectAllInclusive(monthlyPrice, annualPrice) {\n var shouldSelectMonthly = this.monthlyTarget.checked && monthlyPrice > MAX_MONTHLY_PRICE\n var shouldSelectAnnual = this.annualTarget.checked && annualPrice > MAX_ANNUAL_PRICE\n return shouldSelectMonthly || shouldSelectAnnual\n }\n\n selectOnlyAllInclusive(showModal, planNames, monthlyPrice, annualPrice) {\n this.optionTargets.forEach(checkbox => {\n checkbox.checked = false\n $(checkbox.closest(\".modular-checkbox\")).removeClass(\"checked\");\n })\n this.allInclusiveOption.checked = true\n $(this.allInclusiveOption).closest(\".modular-checkbox\").addClass(\"checked\")\n this.updateContent()\n\n if (showModal) {\n this.modalPlanNamesTarget.innerHTML = planNames.joinSentence(true)\n\n if (this.monthlyTarget.checked) {\n this.modalPriceTarget.innerHTML = `$${monthlyPrice}/month`\n this.modalSavingsTarget.innerHTML = `$${(monthlyPrice - MAX_MONTHLY_PRICE) * 12}/year`\n this.modalAllInclusivePriceTarget.innerHTML = `$${MAX_MONTHLY_PRICE}/month`\n } else {\n this.modalPriceTarget.innerHTML = `$${annualPrice}/year`\n this.modalSavingsTarget.innerHTML = `$${annualPrice - MAX_ANNUAL_PRICE}/year`\n this.modalAllInclusivePriceTarget.innerHTML = `$${MAX_ANNUAL_PRICE}/year`\n }\n\n $(\"#all-inclusive\").modal()\n if (this.mobile) {\n setTimeout(() => $(\"#payment-form\")[0].scrollIntoView(false), 1)\n }\n }\n }\n\n populateHtml(planNames, monthlyPlans, monthlyPrice, annualPlans, annualPrice, annualSavings) {\n this.plansTarget.innerHTML = \"Plan\"\n\n if (planNames.length == 0) {\n this.namesTarget.innerHTML = \"Choose tools\"\n } else {\n this.namesTarget.innerHTML = planNames.joinSentence(true)\n }\n\n this.monthlyTarget.value = monthlyPlans\n this.monthlyPriceTarget.innerHTML = Math.min(monthlyPrice, MAX_MONTHLY_PRICE)\n this.annualTarget.value = annualPlans\n\n if (annualPrice >= MAX_ANNUAL_PRICE) {\n this.annualPriceTarget.innerHTML = MAX_ANNUAL_PRICE\n this.annualSavingsTarget.innerHTML = MAX_ANNUAL_SAVINGS\n } else {\n this.annualPriceTarget.innerHTML = annualPrice\n this.annualSavingsTarget.innerHTML = annualSavings\n }\n }\n\n get mobile() {\n return this.hasMobileTarget\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"parent\"]\n\n async connect() {\n if (!window.Browser.isIE()) {\n (await import(\"select2/dist/js/select2.full.js\")).default() // init the plugin\n this.initializeSelect2()\n }\n }\n\n // private\n\n initializeSelect2() {\n const containerClass = this.data.get(\"container\")\n const dropdownClass = this.data.get(\"dropdown\")\n\n if (this.hasParentTarget) {\n $(this.element).select2({\n dropdownParent: $(this.parentTarget.dataset.parent),\n containerCssClass: containerClass,\n dropdownCssClass: dropdownClass\n })\n }\n else {\n $(this.element).select2({\n containerCssClass: containerClass,\n dropdownCssClass: dropdownClass\n })\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n initialize() {\n this.timeout = null\n this.url = this.data.get(\"url\")\n this.pickup = this.data.get(\"pickup\")\n }\n\n search(event) {\n clearTimeout(this.timeout)\n\n this.timeout = setTimeout(() => {\n $.ajax({\n url: this.url,\n data: {\n query: event.target.value,\n pickup: this.pickup,\n },\n dataType: \"script\",\n })\n }, 500)\n };\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n change(event) {\n var url = new URL(window.location)\n\n var pickupId = event.currentTarget.value\n if (pickupId === \"all\") {\n url.searchParams.delete(\"pickup\")\n } else {\n url.searchParams.set(\"pickup\", pickupId)\n }\n\n window.location = url\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"location\", \"name\", \"remove\", \"destroy\", \"add\" ]\n\n connect() {\n this.nameTargets.forEach((target, index) => {\n const hide = target.attributes[\"value\"] === undefined && index != 0\n this.locationTargets[index].classList.toggle(\"hidden\", hide)\n\n if (!hide && index === this.max - 1) {\n this.addTarget.classList.toggle(\"hidden\", true)\n }\n })\n\n this.removeTargets.forEach((target, index) => {\n const hide = index == 0 || target.dataset[\"neverShow\"] === \"true\"\n target.classList.toggle(\"hidden\", hide)\n })\n }\n\n add(event) {\n event.preventDefault()\n\n var showedALocation = false\n this.locationTargets.forEach((target, index) => {\n if (!showedALocation && target.classList.contains(\"hidden\")) {\n target.classList.toggle(\"hidden\", false)\n this.destroyTargets[index].value = \"0\"\n showedALocation = true\n\n if (index === this.locationTargets.length - 1) {\n event.currentTarget.classList.toggle(\"hidden\", true)\n }\n }\n })\n }\n\n remove(event) {\n event.preventDefault()\n\n const index = this.removeTargets.indexOf(event.currentTarget)\n this.locationTargets[index].classList.toggle(\"hidden\", true)\n this.destroyTargets[index].value = \"1\"\n\n this.addTarget.classList.toggle(\"hidden\", false)\n }\n\n get max() {\n return parseInt(this.data.get(\"max\"))\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n qualify(event) {\n this.updateLead(true)\n }\n\n disqualify(event) {\n this.updateLead(false)\n }\n\n // private\n\n updateLead(qualified) {\n $.ajax({\n type: \"PUT\",\n url: this.data.get(\"url\"),\n dataType: \"json\",\n data: {\n \"authenticity_token\": this.authenticityToken,\n \"place_lead[qualified]\": qualified,\n },\n success: (response) => {\n if (!response.success) {\n this.errorAlert()\n }\n },\n error: () => this.errorAlert()\n })\n }\n\n get authenticityToken() {\n return document.querySelector(\"meta[name='csrf-token']\").content\n }\n\n get errorAlert() {\n alert(\"Error saving. Please reload the page and try again.\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"retailerPrice\", \"buyerPrice\", \"validPrice\", \"invalidPrice\" ]\n\n connect() {\n this.calculateBuyerPrice()\n }\n\n calculateBuyerPrice() {\n if (this.retailerPrice == 0) {\n this.validPriceTarget.classList.add(\"hidden\")\n this.invalidPriceTarget.classList.remove(\"hidden\")\n } else {\n this.invalidPriceTarget.classList.add(\"hidden\")\n this.validPriceTarget.classList.remove(\"hidden\")\n\n this.buyerPriceTarget.textContent = `$${this.buyerPrice}`\n }\n }\n\n // private\n\n get retailerPrice() {\n return parseFloat(this.retailerPriceTarget.value) || 0\n }\n\n get buyerPrice() {\n return (this.retailerPrice + this.fee).toFixed(2)\n }\n\n get fee() {\n if (this.retailerPrice < 14) {\n return 0.5\n } else if (this.retailerPrice <= 25) {\n return 1\n } else {\n return this.retailerPrice * 0.05\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"iframe\" ]\n\n print() {\n this.iframeTarget.contentWindow.print()\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"header\", \"hero\", \"stickySlide\"]\n\n connect() {\n this.$window = $(window)\n\n this.startWatchingIntersection()\n\n if (window.innerWidth >= 812) {\n this.startWatchingScroll()\n this.fadeOutStickySlides()\n }\n }\n\n // private\n\n startWatchingIntersection() {\n const observer = new IntersectionObserver(this.toggleScrolledOnHeader.bind(this))\n observer.observe(this.heroTarget)\n }\n\n toggleScrolledOnHeader(entries) {\n if (entries[0].isIntersecting) {\n this.headerTarget.classList.remove(\"scrolled\")\n } else {\n this.headerTarget.classList.add(\"scrolled\")\n }\n }\n\n startWatchingScroll() {\n document.addEventListener(\"scroll\",\n Debouncer.debounce(this.fadeOutStickySlides.bind(this)),\n { passive: true }\n )\n }\n\n fadeOutStickySlides() {\n this.stickySlideTargets.forEach(target => {\n const position = $(target).offset().top - this.$window.scrollTop()\n\n if (position < this.windowHeight * this.startPosition) {\n target.style.opacity = position / (this.windowHeight * this.startPosition)\n } else {\n target.style.opacity = 1\n }\n })\n }\n\n get startPosition() {\n return 0.1\n }\n\n get windowHeight() {\n return this.$window.height()\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"form\", \"overlay\", \"groupByStyle\", \"sectionBreakOption\",\n \"beer_descriptionFont\", \"submit\", \"modal\", \"disablePdfReload\"]\n\n connect() {\n this.formTarget.dataset.remote = this.data.get(\"auto-save\") == \"true\"\n\n this.submitOnChange()\n this.submitOnEvent()\n\n $(this.formTarget).on(\"ajax:success\", this.success.bind(this))\n $(this.formTarget).on(\"ajax:error\", this.error.bind(this))\n }\n\n showStyleOptions() {\n this.groupByStyleTargets.forEach(t => t.classList.remove(\"hidden\"))\n }\n\n hideStyleOptions() {\n this.groupByStyleTargets.forEach(t => t.classList.add(\"hidden\"))\n }\n\n showSectionBreakOption() {\n this.sectionBreakOptionTarget.classList.remove(\"hidden\")\n }\n\n hideSectionBreakOption() {\n this.sectionBreakOptionTarget.classList.add(\"hidden\")\n }\n\n toggleBeerDescriptionFont(event) {\n const checked = event.currentTarget.checked\n this.beer_descriptionFontTarget.classList.toggle(\"hidden\", !checked)\n }\n\n toggleAutoSave(event) {\n this.data.set(\"auto-save\", !event.currentTarget.checked)\n this.formTarget.dataset.remote = !event.currentTarget.checked\n this.submitTarget.classList.toggle(\"hidden\", !event.currentTarget.checked)\n }\n\n submitForm(event) {\n if (this.data.get(\"auto-save\") == \"true\") {\n this.overlayTarget.classList.remove(\"hidden\")\n\n if (event.currentTarget.dataset.disablePdfReload == \"true\") {\n this.disablePdfReloadTarget.value = true\n $.rails.fire($(this.formTarget), \"submit\")\n this.disablePdfReloadTarget.value = false\n } else {\n window.BeerMenus.controllers.printPreviewController.showLoading()\n $.rails.fire($(this.formTarget), \"submit\")\n }\n }\n }\n\n // private\n\n submitOnChange() {\n [...this.formTarget.elements].forEach(element => {\n if (!element.dataset.ignore) {\n element.addEventListener(\"change\", this.submitForm.bind(this))\n }\n })\n }\n\n submitOnEvent() {\n document.body.addEventListener(\"sortable:didSort\",\n this.submitForm.bind(this))\n\n document.body.addEventListener(\"customFont:selected\",\n this.submitForm.bind(this))\n\n document.body.addEventListener(\"cme-blur\",\n this.submitForm.bind(this))\n }\n\n success(event, data, status, xhr) {\n this.overlayTarget.classList.add(\"hidden\")\n this.submitOnChange()\n }\n\n error(event, xhr) {\n window.BeerMenus.controllers.printPreviewController.showServerError()\n this.overlayTarget.classList.add(\"hidden\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"loading\", \"loadingText\", \"pdf\", \"error\"]\n\n connect() {\n this.pdfTarget.onload = this.validatePDF.bind(this)\n window.BeerMenus.controllers.printPreviewController = this\n }\n\n showLoading() {\n if (Browser.isIE()) {\n this.pdfTarget.src = \"about:blank\"\n } else {\n this.loadingTextTarget.innerText = \"Updating\"\n this.loadingTarget.classList.remove(\"hidden\")\n this.errorTarget.classList.add(\"hidden\")\n }\n }\n\n showValidationError(html) {\n this.errorTarget.innerHTML = html\n this.loadingTarget.classList.add(\"hidden\")\n this.errorTarget.classList.remove(\"hidden\")\n }\n\n showServerError() {\n $.ajax({ url: this.errorURL, success: this.populateErrorHTML.bind(this) })\n }\n\n // private\n\n validatePDF() {\n if (Browser.isIE()) {\n return\n } else if (this.isFirefox || this.isIpad || this.isPDFValid) {\n this.loadingTarget.classList.add(\"hidden\")\n this.errorTarget.classList.add(\"hidden\")\n } else if (this.errorPresent) {\n this.loadingTarget.classList.add(\"hidden\")\n this.errorTarget.classList.add(\"hidden\")\n this.bindReload()\n } else {\n this.showServerError()\n }\n }\n\n populateErrorHTML(html) {\n this.iframe.body.innerHTML = html\n this.loadingTarget.classList.add(\"hidden\")\n this.bindReload()\n this.bindHelp()\n }\n\n bindReload() {\n this.iframe.getElementById(\"reload-button\").addEventListener(\"click\", (event) => {\n event.preventDefault()\n this.loadingTarget.classList.remove(\"hidden\")\n this.pdfTarget.contentWindow.location.reload()\n })\n }\n\n bindHelp() {\n this.iframe.getElementById(\"help-link\").addEventListener(\"click\", (event) => {\n event.preventDefault()\n const target = parent ? parent : window\n target.Beacon(\"open\")\n target.Beacon(\"navigate\", \"/ask\")\n })\n }\n\n get isFirefox() {\n return navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n }\n\n get isIpad() {\n return this.data.get(\"is-ipad\") == \"true\"\n }\n\n get isPDFValid() {\n const embed = this.iframe.getElementsByTagName(\"embed\")[0]\n return embed && embed.getAttribute(\"type\") == \"application/pdf\"\n }\n\n get errorPresent() {\n return this.iframe.getElementById(\"pdf-error\") != null\n }\n\n get iframe() {\n return this.pdfTarget.contentDocument\n }\n\n get url() {\n return this.data.get(\"url\")\n }\n\n get errorURL() {\n return this.data.get(\"error-url\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"save\", \"error\"]\n\n enableForm() {\n this.saveTarget.classList.remove(\"hidden\")\n this.errorTarget.classList.add(\"hidden\")\n }\n\n disableForm() {\n this.errorTarget.classList.remove(\"hidden\")\n this.saveTarget.classList.add(\"hidden\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"dayvariables\", \"day\", \"nearvariables\", \"near\" ]\n\n propertyChanged(event) {\n if (event.currentTarget.value == \"days_since_last_update\") {\n this.dayvariablesTarget.classList.toggle(\"hidden\", false)\n } else if (event.currentTarget.value == \"near_city\") {\n this.nearvariablesTarget.classList.toggle(\"hidden\", false)\n } else {\n this.dayvariablesTarget.classList.toggle(\"hidden\", true)\n this.dayTargets.forEach(t => t.value = \"\")\n this.nearvariablesTarget.classList.toggle(\"hidden\", true)\n this.nearTargets.forEach(t => t.value = \"\")\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"select\", \"field\" ]\n\n connect() {\n this.showHideField()\n }\n\n change() {\n this.showHideField()\n }\n\n showHideField() {\n const hide = this.selectTarget.value == \"false\"\n this.fieldTarget.classList.toggle(\"hidden\", hide)\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n // Only get involved if a file upload is present.\n $(this.element).bind(\"ajax:aborted:file\", () => {\n this.disableForm()\n this.manuallyPOST()\n\n // Tell jquery-ujs to not submit the form; we got this.\n return false\n })\n }\n\n // private\n\n disableForm() {\n // Wait for jquery-ujs to \"finish\" before disabling.\n setTimeout(() => {\n $.rails.disableFormElements($(this.element))\n }, 20)\n }\n\n // https://makandracards.com/makandra/39225-manually-uploading-files-via-ajax\n manuallyPOST() {\n $.ajax({\n url: `${this.element.action}.js`,\n type: \"POST\",\n data: new FormData(this.element),\n contentType: false,\n processData: false,\n complete: () => $.rails.enableFormElements($(this.element))\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener(\"click\", () => window.scrollTo(0, 0))\n }\n}\n", "// Handles interaction between radio buttons and text inputs in segmented fields\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"radio\", \"textInput\"]\n\n connect() {\n // Initialize radio value if text input has a value\n if (this.hasTextInputTarget && this.textInputTarget.value) {\n this.syncRadioValue()\n }\n }\n\n focusInput() {\n if (this.hasTextInputTarget) {\n this.textInputTarget.focus()\n }\n }\n\n selectRadio() {\n if (this.hasRadioTarget) {\n this.radioTarget.checked = true\n this.syncRadioValue()\n }\n }\n\n // Called when text input changes\n handleTextInput() {\n if (this.hasRadioTarget) {\n this.radioTarget.checked = true\n this.syncRadioValue()\n }\n }\n\n // Sync radio value with text input value\n syncRadioValue() {\n if (this.hasRadioTarget && this.hasTextInputTarget) {\n this.radioTarget.value = this.textInputTarget.value\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"type\", \"event\", \"property\" ]\n\n async connect() {\n (await import(\"cocoon-js\")).default\n }\n\n toggle(event) {\n const index = this.typeTargets.indexOf(event.currentTarget)\n this.eventTargets[index].classList.toggle(\"hidden\")\n this.propertyTargets[index].classList.toggle(\"hidden\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"checkbox\"]\n\n connect() {\n window.BeerMenus.controllers.selectAllControllers =\n window.BeerMenus.controllers.selectAllControllers || []\n window.BeerMenus.controllers.selectAllControllers.push(this)\n }\n\n toggle(event) {\n const checked = event.currentTarget.checked\n this.checkboxTargets.forEach(cb => {\n cb.checked = checked\n cb.dispatchEvent(new Event('change', { bubbles: true }))\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"destroy\"]\n\n remove(event) {\n event.preventDefault()\n this.element.remove()\n }\n\n destroy(event) {\n event.preventDefault()\n\n this.element.classList.add(\"hidden\")\n this.destroyTarget.value = 1\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"servings\", \"serving\", \"type\", \"unit\", \"sell\"]\n\n add(event) {\n event.preventDefault()\n\n $.ajax(\"/servings/add_size\", { data: this.params })\n .done((html) => BeerMenus.DOM.insertHTML(html, this.servingsTarget))\n .fail((jqXHR, status, error) => console.error(error))\n }\n\n reset(event) {\n event.preventDefault()\n\n Servings.hideEditForm()\n Servings.scrollToTopOfForm()\n }\n\n // private\n\n get params() {\n const lastIndex = this.servingTargets.length - 1\n const index = parseInt(this.servingTargets[lastIndex].dataset[\"index\"])\n\n if (this.hasTypeTarget) {\n var serving_type_id = this.typeTargets[lastIndex].value\n var serving_unit_id = this.unitTargets[lastIndex].value\n } else {\n var serving_type_id = \"\"\n var serving_unit_id = \"\"\n }\n\n return {\n bar_id: this.barID,\n new_index: index + 1,\n serving_type_id: serving_type_id,\n serving_unit_id: serving_unit_id,\n product_type: this.productType,\n sell: this.sellTarget.checked\n }\n }\n\n get barID() {\n return this.data.get(\"bar-id\")\n }\n\n get productType() {\n return this.data.get(\"product-type\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nclass FormDataEventPolyfill extends Event {\n constructor(formData) {\n super('formdata');\n this.formData = formData;\n }\n}\n\nclass WorkingFormDataPolyfill extends FormData {\n constructor(form=null) {\n if (form) {\n super(form)\n this.form = form\n form.dispatchEvent(new FormDataEventPolyfill(this))\n } else {\n super()\n }\n }\n\n append(name, value) {\n if (!this.form) {\n return super.append(name, value)\n }\n\n let input = this.form.elements[name]\n\n if (!input) {\n input = document.createElement('input');\n input.type = 'hidden';\n input.name = name;\n this.form.appendChild(input);\n }\n\n if (this.has(name)) {\n const entries = this.getAll(name);\n const index = entries.indexOf(input.value);\n\n if (index !== -1) {\n entries.splice(index, 1);\n }\n\n entries.push(value);\n this.set(name, entries);\n } else {\n super.append(name, value);\n }\n\n input.value = value;\n }\n}\n\nwindow.WorkingFormDataPolyfill = WorkingFormDataPolyfill\n\nexport default class extends Controller {\n async connect() {\n await import(\"../app/shoelace\")\n\n // TODO: once we're using Shoelace within the design system, we don't need this\n await import(\"@shoelace-style/shoelace/dist/themes/light.css\")\n\n await customElements.whenDefined(\"sl-color-picker\")\n\n this.element.querySelectorAll(\"sl-color-picker\").forEach((picker) => {\n picker.swatches = [\n \"#cd2020\",\n \"#fba820\",\n \"#f8e71c\",\n \"#7d5f4b\",\n \"#9CE2B6\",\n \"#f470fc\",\n \"#ae65ee\",\n \"#287DDB\",\n \"#50e3c2\",\n \"#DFEEFD\",\n \"#000000\",\n \"#444444\",\n \"#cdcdcd\",\n \"#ddd\",\n \"#fff\",\n ]\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"truncated\", \"full\", \"showMore\", \"showLess\" ]\n\n toggle(event) {\n event.preventDefault()\n\n if (this.hasTruncatedTarget) {\n this.truncatedTarget.classList.toggle(\"hidden\")\n }\n this.fullTarget.classList.toggle(\"hidden\")\n\n this.showMoreTarget.classList.toggle(\"hidden\")\n this.showLessTarget.classList.toggle(\"hidden\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"search\", \"beerID\", \"template\"]\n\n async connect() {\n let libraries = await AlgoliaSource.importLibraries()\n const filters = `product_type = 0 OR product_type = 1 OR product_type = 3`\n this.algolia = new AlgoliaSource(libraries[0], \"Beer\", filters)\n this.connected()\n }\n\n // private\n\n connected() {\n this.search = $(this.searchTarget).autocomplete(this.options, this.dataset)\n this.search\n .on(\"autocomplete:selected autocomplete:autocompleted\", (event, data) => {\n this.setHiddenField(data.objectID)\n })\n }\n\n setHiddenField(id) {\n this.beerIDTarget.value = id\n }\n\n source(query, callback) {\n this.algolia.source(query, (suggestions) => {\n return callback(suggestions)\n })\n }\n\n displayKey(obj) {\n return obj.cssClass == this.addNewBeerClass ? obj.query : obj.name\n }\n\n suggestion(hit) {\n return new BeerAutocompleteSuggestion(this.templateTarget).build(hit)\n }\n\n get dataset() {\n return {\n source: (query, callback) => { this.source(query, callback) },\n name: \"beers\",\n displayKey: (obj) => { return obj.name },\n templates: { suggestion: this.suggestion.bind(this) },\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"monthlyTerm\", \"monthlyPlan\", \"annualPlan\",\n \"plan\", \"tool\", \"paymentPlan\", \"effectiveMonthlyPrice\",\n \"monthlyPrice\", \"annualPrice\", \"annualSavings\",\n \"popularPlan\", \"potentialSavings\", \"realizedSavings\",\n \"mySubscription\", \"chooseTools\", \"button\", \"newSubscription\", \"switchToAnnual\",\n \"discountMessage\", \"discountDescription\", \"discountValue\", \"discountedTotal\", \"monthlyFullPrice\", \"annualFullPrice\",\n \"stripeCoupon\"\n ]\n\n connect() {\n this.setPlan()\n this.setPlanName()\n this.setPrices()\n }\n\n toggleTool(event) {\n this.setPlan()\n this.setPlanName()\n this.setPrices()\n }\n\n toggleTerm(event) {\n this.setPrices()\n this.setPlan()\n }\n\n // private\n\n setPrices() {\n const tools = this.enabledTools\n const pricing = this.pricing.find(p => p.tools == tools)\n\n if (pricing) {\n if (this.annual) {\n if (this.hasStripeCouponTarget) { this.discountMessageTargets.forEach(t => t.classList.remove(\"hidden\")) }\n var effectivePrice = pricing.annual_price_monthly\n var price = pricing.annual_price\n this.potentialSavingsTarget.classList.add(\"hidden\")\n this.realizedSavingsTarget.classList.remove(\"hidden\")\n if (this.hasCoupon) {\n this.stripeCouponTarget.value = this.data.get(\"coupon-annual\")\n this.discountDescriptionTargets.forEach(t => t.innerText = this.annualDiscountDescription)\n this.monthlyFullPriceTarget.classList.add(\"hidden\")\n this.annualFullPriceTarget.classList.remove(\"hidden\")\n this.discountValueTarget.innerText = pricing.annual_discount_value.toFixed(2)\n this.discountedTotalTarget.innerText = pricing.discounted_annual_price.toFixed(2)\n var price = pricing.discounted_annual_price.toFixed(2)\n }\n } else {\n var effectivePrice = pricing.price\n var price = pricing.price\n this.potentialSavingsTarget.classList.remove(\"hidden\")\n this.realizedSavingsTarget.classList.add(\"hidden\")\n if (this.hasCoupon) {\n if (pricing.discounted_monthly_price > 0) {\n this.stripeCouponTarget.value = this.data.get(\"coupon-monthly\")\n this.discountDescriptionTargets.forEach(t => t.innerText = this.monthlyDiscountDescription)\n this.monthlyFullPriceTarget.classList.remove(\"hidden\")\n this.annualFullPriceTarget.classList.add(\"hidden\")\n this.discountValueTarget.innerText = pricing.monthly_discount_value.toFixed(2)\n this.discountedTotalTarget.innerText = pricing.discounted_monthly_price.toFixed(2)\n var price = pricing.discounted_monthly_price.toFixed(2)\n } else {\n this.stripeCouponTarget.value = \"\"\n this.discountMessageTargets.forEach(t => t.classList.add(\"hidden\"))\n }\n }\n }\n\n this.effectiveMonthlyPriceTarget.innerText = effectivePrice\n\n if (this.hasNewSubscriptionTarget) {\n var buttonLabel = \"Subscribe and pay $\" + price\n this.buttonTarget.innerText = buttonLabel\n this.buttonTarget.dataset[\"disableWith\"] = buttonLabel\n this.buttonTarget.dataset[\"originalLabel\"] = buttonLabel\n } else if (this.hasSwitchToAnnualTarget) {\n if (this.annual) {\n var buttonLabel = \"Switch to annual billing\"\n } else {\n var buttonLabel = \"Update subscription\"\n }\n\n this.buttonTarget.innerText = buttonLabel\n this.buttonTarget.dataset[\"disableWith\"] = buttonLabel\n this.buttonTarget.dataset[\"originalLabel\"] = buttonLabel\n }\n\n this.monthlyPriceTargets.forEach(t => t.innerText = pricing.price)\n this.annualPriceTargets.forEach(t => t.innerText = pricing.annual_price)\n this.annualSavingsTargets.forEach(t => t.innerText = pricing.annual_savings)\n }\n }\n\n setPlanName() {\n this.paymentPlanTarget.innerText = this.planName\n }\n\n get planName() {\n return this.toolTargets.filter(t => t.checked).map(t => t.dataset[\"planName\"]).join(' + ')\n }\n\n setPlan() {\n this.planTarget.value = this.plan\n\n if (this.enabledTools == 0) {\n this.mySubscriptionTarget.classList.add(\"hidden\")\n this.chooseToolsTarget.classList.remove(\"hidden\")\n } else {\n this.mySubscriptionTarget.classList.remove(\"hidden\")\n this.chooseToolsTarget.classList.add(\"hidden\")\n }\n\n if (this.popularPlan) {\n this.popularPlanTarget.classList.remove(\"hidden\")\n } else {\n this.popularPlanTarget.classList.add(\"hidden\")\n }\n }\n\n get plan() {\n if (this.annual) {\n return this.annualPlan\n } else {\n return this.monthlyPlan\n }\n }\n\n get annualPlan() {\n const tools = this.toolTargets.filter(t => t.checked)\n switch(tools.length) {\n case 0:\n return null\n case 1:\n return tools[0].dataset[\"annualPlanId\"]\n default:\n return 63\n }\n }\n\n get monthlyPlan() {\n const tools = this.toolTargets.filter(t => t.checked)\n switch(tools.length) {\n case 0:\n return null\n case 1:\n return tools[0].dataset[\"monthlyPlanId\"]\n case 2:\n const tool1Plans = tools[0].dataset[\"monthly-2PlanIds\"].split(\" \")\n const tool2Plans = tools[1].dataset[\"monthly-2PlanIds\"].split(\" \")\n return tool1Plans.find(x => tool2Plans.includes(x))\n default:\n return 59\n }\n }\n\n get enabledTools() {\n return this.toolTargets.filter(t => t.checked).length\n }\n\n get monthly() {\n return this.monthlyTermTarget.checked\n }\n\n get annual() {\n return !this.monthly\n }\n\n get popularPlan() {\n const tvMenus = this.toolTargets.find(t => t.dataset[\"planSlug\"] == \"digital_beer_boards\")\n return this.enabledTools == 2 && !tvMenus.checked\n }\n\n get pricing() {\n return JSON.parse(this.data.get(\"pricing\"))\n }\n\n get hasCoupon() {\n return this.hasDiscountMessageTarget\n }\n\n get monthlyDiscountDescription() {\n return this.data.get(\"monthly-discount-description\")\n }\n\n get annualDiscountDescription() {\n return this.data.get(\"annual-discount-description\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n speed: { type: Number, default: 800 }\n }\n\n connect() {\n this.element.addEventListener(\"click\", (event) => {\n event.preventDefault()\n\n const anchor = event.currentTarget.href.split(\"#\").pop()\n const offset = parseInt(this.data.get(\"offset\")) || 0\n const target = document.getElementById(anchor)\n\n if (target) {\n this.smoothScroll(target, offset)\n }\n\n if (this.data.has(\"focus\")) {\n document.getElementById(this.data.get(\"focus\")).focus()\n }\n })\n }\n\n smoothScroll(target, offset) {\n const targetPosition = target.getBoundingClientRect().top + window.pageYOffset - offset\n const startPosition = window.pageYOffset\n const distance = targetPosition - startPosition\n const duration = this.speedValue\n let start = null\n\n const animation = (currentTime) => {\n if (start === null) start = currentTime\n const timeElapsed = currentTime - start\n const progress = Math.min(timeElapsed / duration, 1)\n\n // Easing function - easeInOutQuad\n const easing = progress => {\n return progress < 0.5\n ? 2 * progress * progress\n : 1 - Math.pow(-2 * progress + 2, 2) / 2\n }\n\n window.scrollTo(0, startPosition + (distance * easing(progress)))\n\n if (progress < 1) {\n requestAnimationFrame(animation)\n }\n }\n\n requestAnimationFrame(animation)\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n url: String,\n param: String,\n debug: Boolean,\n }\n\n connect() {\n this.element.addEventListener(\"sortablejs:save\", this.handleSave.bind(this))\n }\n\n handleSave({ detail: values }) {\n const body = { [this.paramValue]: values }\n\n if (this.debugValue) {\n console.log(\"Sending sort data:\", this.urlValue, body)\n }\n\n fetch(this.urlValue, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Deprecated, see sortablejs controller as part of new design system\nexport default class extends Controller {\n static targets = [\"container\", \"position\", \"itemNumber\", \"item\"]\n\n async connect() {\n const draggable = await import(\"@shopify/draggable/lib/draggable.bundle.legacy\")\n this.initializeDraggable(draggable.default)\n }\n\n savePositions(skipSave) {\n // \"Delay\" so Sortable can settle and remove the mirror.\n setTimeout(() => {\n this.itemTargets.forEach((_, index) => {\n if (index < this.positionTargets.length) {\n this.positionTargets[index].value = index + 1\n }\n\n if (index < this.itemNumberTargets.length) {\n this.itemNumberTargets[index].innerHTML = `${index + 1}.`\n }\n })\n\n this.dispatchCustomEvent()\n\n if (skipSave != true && this.data.get(\"skip-save\") != \"true\") {\n this.save()\n }\n })\n }\n\n // private\n\n initializeDraggable(draggable) {\n const sortable = new draggable.Sortable(this.containerTarget, {\n draggable: \"li:not([data-sortable-ignore])\",\n handle: this.data.has(\"no-handle\") ? null : \".sort-icon\",\n mirror: {\n appendTo: \"#sortable-mirror-wrapper\",\n constrainDimensions: true,\n xAxis: false\n }\n })\n\n sortable.on(\"drag:stop\", this.savePositions.bind(this))\n }\n\n dispatchCustomEvent() {\n const event = new CustomEvent(\"sortable:didSort\", { bubbles: true })\n this.element.dispatchEvent(event)\n }\n\n save() {\n const url = this.data.get(\"url\")\n if (url) {\n var data = {}\n data[this.data.get(\"data-key\")] = this.items\n\n $.ajax(url, { method: \"PUT\", data: data })\n .fail(() => alert(this.errorMessage))\n }\n }\n\n get items() {\n return this.itemTargets.map(item => {\n if (item.dataset.key) {\n return [item.dataset.key, item.dataset.value]\n } else {\n return item.dataset.value.split(\",\")\n }\n })\n }\n\n get placeholderClass() {\n return this.data.get(\"placeholder-class\") || \"\"\n }\n\n get errorMessage() {\n return this.data.get(\"error\") ||\n \"Something went wrong, please try again.\"\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"container\"]\n\n static values = {\n animationDuration: { type: Number, default: 200 }\n }\n\n async connect() {\n const Sortable = (await import(\"sortablejs\")).default\n Sortable.create(this.containerTarget, {\n handle: \"bmu-flex-list-item-handle\",\n filter: \".unsortable\",\n animation: this.animationDurationValue,\n onMove: (event) => {\n if (event.related.classList.contains(\"unsortable\")) return false\n },\n onUpdate: (event) => {\n this.element.dispatchEvent(new CustomEvent(\"sortablejs:save\", { detail: this.values, bubbles: true }))\n }\n })\n }\n\n get items() {\n return [...this.containerTarget.children].filter(item => item.dataset.key || item.dataset.value)\n }\n\n get values() {\n return this.items.map(item => {\n if (item.dataset.key) {\n return [item.dataset.key, item.dataset.value]\n } else {\n return item.dataset.value.split(\",\")\n }\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n if ((document.body.classList.contains(\"web\")) || (this.element.classList.contains(\"msticky\")) ) {\n $(this.element).stick_in_parent()\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"streamlineable\", \"collapsible\" ]\n\n connect() {\n window.BeerMenus.controllers.streamlinedMenuController = this\n\n this.windowHashChanged(window.location.hash)\n $(window).on(\"hashchange\", (event) => {\n this.windowHashChanged(window.location.hash)\n })\n }\n\n showCollapsibleMenu() {\n this.showStreamlineableElements()\n this.showCollapsibleElements()\n }\n\n showStreamlineableElements() {\n this.streamlineableTargets.forEach(el => {\n el.classList.toggle(\"hidden\", false)\n })\n }\n\n showCollapsibleElements() {\n this.collapsibleTargets.forEach(el => {\n el.classList.toggle(\"hidden\", false)\n })\n }\n\n windowHashChanged(hash) {\n this.performAction(hash.replace(\"#\", \"\"))\n }\n\n performAction(hash) {\n $(\".modal\").modal(\"hide\") // Close any open modal.\n BeerMenus.Checklists.closeDriver()\n\n switch (hash) {\n case \"new-serving\":\n this.removeHash()\n BeerMenus.Checklists.highlightServingForm()\n break\n case \"update-address\":\n this.removeHash()\n BeerMenus.Checklists.showAddressModal(this.barID)\n break\n case \"connect-facebook\":\n this.removeHash()\n BeerMenus.Checklists.showFacebookModal()\n break\n case \"connect-twitter\":\n this.removeHash()\n BeerMenus.Checklists.showTwitterModal()\n break\n case \"new-print-menu\":\n this.removeHash()\n BeerMenus.Checklists.showPrintMenuModal(this.barID)\n break\n case \"add_beers\":\n case \"beers_added\":\n case \"print_welcome\":\n case \"tv_hardware\":\n case \"tv_setup\":\n case \"tv_welcome\":\n case \"not_open\":\n this.removeHash()\n BeerMenus.Checklists.showUpdateMenuMessageModal(hash)\n break\n case \"welcome\":\n this.removeHash()\n BeerMenus.Checklists.spotlight(hash)\n break\n }\n }\n\n removeHash() {\n const state = window.location.pathname + window.location.search\n history.pushState(\"\", document.title, state)\n }\n\n get barID() {\n return this.data.get(\"bar-id\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this._insertMetaTag()\n this._insertScript()\n }\n\n _insertMetaTag() {\n let tag = document.querySelector(\"meta[name='stripe-key']\")\n if (!tag) {\n tag = document.createElement(\"meta\")\n tag.name = \"stripe-key\"\n document.head.appendChild(tag)\n }\n tag.content = this.data.get(\"key\")\n }\n\n _insertScript() {\n ScriptInserter.insert(\"stripe.js\", \"https://js.stripe.com/v3/\", () => {\n new StripeLoader().load()\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n $.ajax(this.data.get(\"path\"))\n .done(data => this.element.innerHTML = data)\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"tab\", \"panel\"]\n static values = { smoothScrollerLink: String }\n\n connect() {\n this.setHashFromURLIfBlank()\n this.showTab()\n this.cancelModal = false\n\n $(window).on(\"hashchange\", (event) => {\n this.hash = window.location.hash.replace(\"#\", \"\")\n this.showTab()\n })\n\n document.body.addEventListener(\"modal:willShow\", (event) => {\n if (this.cancelModal) {\n event.preventDefault()\n this.cancelModal = false\n }\n })\n\n if (this.hasSmoothScrollerLinkValue) {\n this.observeSmoothScrollerLink()\n } else {\n return\n }\n\n }\n\n change(event) {\n event.preventDefault()\n\n this.cancelModal = true\n this.hash = event.currentTarget.dataset[\"hash\"]\n this.showTab()\n this.replaceHistoryState()\n this.updateSmoothScrollerFocus()\n\n const changedEvent = new CustomEvent(\"tab:changed\", {\n bubbles: true,\n detail: this.hash\n })\n this.element.dispatchEvent(changedEvent)\n }\n\n // private\n\n setHashFromURLIfBlank() {\n if (!this.hash && window.location.hash) {\n this.hash = window.location.hash.replace(\"#\", \"\")\n }\n }\n\n showTab() {\n this.tabTargets.forEach(tab => {\n const hash = tab.dataset[\"hash\"]\n tab.classList.toggle(\"pure-tabs-item-selected\", hash == this.hash)\n })\n\n this.panelTargets.forEach(panel => {\n const hash = panel.dataset[\"hash\"]\n panel.classList.toggle(\"hidden\", hash != this.hash)\n })\n\n this.showFirstPanelIfAllHidden()\n this.recalculateStickyHeaders()\n }\n\n showFirstPanelIfAllHidden() {\n const anyPanelVisible = this.panelTargets.some(panel => {\n return !panel.classList.contains(\"hidden\")\n })\n\n if (!anyPanelVisible) {\n this.hash = this.panelTarget.dataset[\"hash\"] // first tab\n this.showTab()\n }\n }\n\n recalculateStickyHeaders() {\n $(document.body).trigger(\"sticky_kit:recalc\")\n }\n\n replaceHistoryState() {\n window.history.replaceState(null, null, `#${this.hash}`)\n }\n\n updateSmoothScrollerFocus() {\n const activeTab = this.tabTargets.find(tab => tab.classList.contains(\"pure-tabs-item-selected\"))\n if (activeTab) {\n const focusId = activeTab.dataset[\"focus\"]\n if (!this.hasSmoothScrollerLinkValue) {\n return\n }\n const smoothScrollerLink = document.querySelector(this.smoothScrollerLinkValue)\n if (focusId && smoothScrollerLink) {\n smoothScrollerLink.setAttribute(\"data-smooth-scroller-focus\", focusId)\n } else {\n }\n }\n }\n\n observeSmoothScrollerLink() {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.addedNodes.length > 0) {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeType == Node.ELEMENT_NODE && (node.id === this.smoothScrollerLinkValue.slice(1) || node.querySelector(this.smoothScrollerLinkValue))) {\n this.updateSmoothScrollerFocus()\n observer.disconnect()\n }\n })\n }\n })\n })\n\n observer.observe(document.querySelector(`div[data-observing=\"${this.smoothScrollerLinkValue}\"]`), { childList: true, subtree: true })\n }\n\n get hash() {\n return this.data.get(\"hash\")\n }\n\n set hash(hash) {\n this.data.set(\"hash\", hash)\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n/**\n * This implementation was based on the W3C ARIA Guide:\n * https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-automatic/\n */\nexport default class extends Controller {\n static targets = [ \"tab\", \"panel\" ]\n\n connect() {\n this.element.controller = this\n this.change({ currentTarget: this.tabTargets[0] }, false)\n }\n\n change(e, setFocus = true) {\n const tabToSelect = e.currentTarget\n\n // Set tab to selected and show the relevant panel\n tabToSelect.setAttribute(\"aria-selected\", \"true\")\n tabToSelect.removeAttribute(\"tabindex\")\n this.panelTargets.find((panel) => panel.getAttribute(\"aria-labelledby\") === tabToSelect.id).classList.remove(\"hidden\")\n\n // Deselect other tabs\n this.tabTargets.forEach(tab => {\n if (tab != e.currentTarget) {\n tab.setAttribute(\"aria-selected\", \"false\")\n tab.tabIndex = -1\n }\n })\n\n // Hide other panels\n this.panelTargets.forEach(panel => {\n if (panel.getAttribute(\"aria-labelledby\") !== tabToSelect.id) {\n panel.classList.add(\"hidden\")\n }\n })\n\n // Focus on the selected tab if necessary\n if (setFocus) {\n tabToSelect.focus()\n }\n }\n\n get currentTab() {\n return this.tabTargets.find(tab => tab.getAttribute(\"aria-selected\") === \"true\")\n }\n\n setSelectedTo(e) {\n let keyHandled = true\n if (e.key === \"ArrowLeft\") {\n this.setSelectedToPreviousTab()\n } else if (e.key === \"ArrowRight\") {\n this.setSelectedToNextTab()\n } else if (e.key === \"Home\") {\n this.change({ currentTarget: this.tabTargets[0] })\n } else if (e.key === \"End\") {\n this.change({ currentTarget: this.tabTargets[this.tabTargets.length - 1] })\n } else {\n keyHandled = false\n }\n\n if (!keyHandled) return\n\n e.stopPropagation()\n e.preventDefault()\n }\n\n setSelectedToPreviousTab() {\n let index = this.tabTargets.indexOf(this.currentTab)\n index--;\n\n if (index === -1) {\n index = this.tabTargets.length - 1\n }\n this.change({ currentTarget: this.tabTargets[index] })\n }\n\n setSelectedToNextTab() {\n let index = this.tabTargets.indexOf(this.currentTab)\n index++;\n\n if (index === this.tabTargets.length) {\n index = 0\n }\n this.change({ currentTarget: this.tabTargets[index] })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"wrapper\" ]\n\n stepValue = 0.05\n columnsSelector = \".columns\"\n lastItemSelector = \"li:last-of-type\"\n bodyVerticalClassName = \"vertical\"\n overflowWarningShown = false\n\n async connect() {\n this.minFontSize = this.data.has(\"minfontsize\") ? parseFloat(this.data.get(\"minfontsize\")) : 0.8\n this.maxFontSize = this.data.has(\"maxfontsize\") ? parseFloat(this.data.get(\"maxfontsize\")) : 2.0\n if (this.data.has(\"lastitem\")) this.lastItemSelector = this.data.get(\"lastitem\")\n\n this.determineCoordinates()\n\n this.resizeObserver = new ResizeObserver(this.fitContent.bind(this))\n this.resizeObserver.observe(this.element)\n\n // Ensure the content fit is attempted once webfonts have loaded, or\n // at least once 5 seconds have passed\n const fontsTimer = setTimeout(() => this.fitContent(), 5000)\n await document.fonts.ready\n clearTimeout(fontsTimer)\n this.fitContent()\n }\n\n disconnect() {\n this.resizeObserver.disconnect()\n }\n\n /**\n * Looks at the orientation of the \"screen\" (horizontal or vertical) and sets\n * up the coordinate property defaults\n */\n determineCoordinates() {\n const vertical = this.bodyVerticalClassName\n\n if (\n (document.body.classList.contains(vertical) && this.data.get(\"columns\") != \"1\") ||\n (!document.body.classList.contains(vertical) && this.data.get(\"columns\") == \"1\")\n ) {\n // The case where the screen is vertical and multi-column, or horizontal\n // with only one column\n this.coordinates = { pos: \"y\", size: \"height\" }\n } else {\n // The case where the screen is horiztonal and multi-column, or vertical\n // with only column\n this.coordinates = { pos: \"x\", size: \"width\" }\n\n // and in that latter case, the x coordinates are reversed\u2026aka x will be a\n // negative number for overflows instead of positive\n this.coordinates.invert = document.body.classList.contains(vertical)\n }\n }\n\n get normalOverflowing() {\n let lastItemPos = this.lastItem.getBoundingClientRect()\n let columnsRect = this.columns.getBoundingClientRect()\n\n if (this.coordinates.pos == \"y\") {\n // the last item will be positioned below the bottom edge of the\n // column if there's an overflow\n lastItemPos = lastItemPos[this.coordinates.pos] + lastItemPos[this.coordinates.size] - columnsRect[this.coordinates.pos]\n } else {\n // multicolumn: the last item will be offscreen if there's an overflow\n lastItemPos = lastItemPos[this.coordinates.pos]\n }\n\n return lastItemPos > columnsRect[this.coordinates.size]\n }\n\n get invertedOverflowing() {\n return this.lastItem.getBoundingClientRect()[this.coordinates.pos] <\n this.columns.getBoundingClientRect()[this.coordinates.pos]\n }\n\n get isOverflowing() {\n return (!this.coordinates.invert && this.normalOverflowing) ||\n (this.coordinates.invert && this.invertedOverflowing)\n }\n\n /**\n * Runs through an algorithm to start with a maximum font size like 1.7vw,\n * then decrement by 0.05 until all the items in the columns are visible,\n * or a minimum font size has been reached.\n */\n fitContent() {\n document.body.style.fontSize = `${this.maxFontSize}vw`\n let fontSize = this.maxFontSize\n\n this.columns = this.element.querySelector(this.columnsSelector)\n this.lastItem = this.element.querySelector(this.lastItemSelector)\n\n let complete = false\n while (!complete) {\n if (fontSize > this.minFontSize && this.isOverflowing) {\n fontSize = (fontSize - this.stepValue).toFixed(2)\n document.body.style.fontSize = `${fontSize}vw`\n } else if (fontSize <= this.minFontSize && this.isOverflowing) {\n this.overflowWarning = true\n complete = true\n } else {\n this.overflowWarning = false\n complete = true\n }\n }\n\n this.wrapperTarget.style.visibility = \"visible\"\n }\n\n set overflowWarning(shown) {\n if (document.body.dataset.previewing !== \"true\") return\n\n window.parent.document.querySelector(\"#overflow-warning\").hidden = !shown\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n click(event) {\n event.preventDefault()\n this.track().always(this.redirectTo(event.currentTarget.href))\n }\n\n // private\n\n track() {\n return $.ajax(\"/api/internal/redis\", {\n method: \"POST\",\n timeout: 5000,\n data: {\n key: this.data.get(\"key\"),\n id: this.data.get(\"id\"),\n },\n })\n }\n\n redirectTo(href) {\n window.location.href = href\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"extra\", \"editor\", \"fontsSelect\", \"fontSizesSelect\" ]\n\n async connect() {\n if (this.hasExtraTarget) {\n this.setupToolbar()\n }\n\n window.Trix = (await import(\"trix\")).default\n\n if (this.data.get(\"fonts\") && this.data.get(\"fonts\") != \"\") {\n this.fonts = JSON.parse(this.data.get(\"fonts\"))\n this.fonts.forEach(([fontId, fontName]) => {\n Trix.config.textAttributes[fontId] = {\n style: { fontFamily: fontName },\n parser: (element) => {\n return element.style.fontFamily.includes(fontName)\n },\n inheritable: true\n }\n })\n\n Trix.config.blockAttributes[\"align-left\"] = {\n tagName: \"text-align-left\",\n nestable: false,\n exclusive: true,\n }\n\n Trix.config.blockAttributes[\"align-center\"] = {\n tagName: \"text-align-center\",\n nestable: false,\n exclusive: true,\n }\n\n Trix.config.blockAttributes[\"align-right\"] = {\n tagName: \"text-align-right\",\n nestable: false,\n exclusive: true,\n }\n }\n\n if (this.data.get(\"fontSizes\") && this.data.get(\"fontSizes\") != \"\") {\n this.fontSizes = JSON.parse(this.data.get(\"fontSizes\"))\n this.fontSizes.forEach(([sizeId, sizeName]) => {\n Trix.config.textAttributes[sizeId] = {\n style: { fontSize: sizeName },\n parser: (element) => {\n return element.style.fontSize.includes(sizeName)\n },\n inheritable: true\n }\n })\n }\n\n if (this.hasEditorTarget) {\n const editor = this.editorTarget.content.cloneNode(true)\n this.element.append(editor)\n }\n }\n\n async setupToolbar() {\n (await import(\"select2/dist/js/select2.full.js\")).default() // init the plugin\n\n const extraTools = this.extraTarget.content.cloneNode(true)\n this.element.addEventListener(\"trix-initialize\", event => { \n event.target.toolbarElement.\n querySelector(\".trix-button-group--text-tools\").\n append(extraTools)\n\n $(this.fontSizesSelectTarget).select2({\n minimumResultsForSearch: Infinity,\n templateResult: (data, container) => {\n if (data.element) container.style.fontSize = data.element.dataset.size\n return data.text\n },\n }).on(\"select2:select\", () => {\n const event = new CustomEvent(\"customFontSize:selected\", { bubbles: true })\n this.fontSizesSelectTarget.dispatchEvent(event)\n }).on(\"select2:open\", () => {\n // We need this for when the user selects the same exact option\n setTimeout(() => {\n document.querySelector(\".select2-results__option[aria-selected=true]\").addEventListener(\"mouseup\", () => {\n const event = new CustomEvent(\"customFontSize:selected\", { bubbles: true })\n this.fontSizesSelectTarget.dispatchEvent(event)\n })\n })\n })\n })\n }\n\n changeFonts(event) {\n this.changeAttributes(event.target.value, this.fonts)\n }\n\n changeSizes(event) {\n this.changeAttributes(event.target.value, this.fontSizes)\n }\n\n sizesClick(event) {\n console.info(event)\n }\n\n changeAttributes(selection, options) {\n const element = this.element.querySelector(\"trix-editor\")\n const blankStart = element.editor.getDocument().toString() === \"\\n\"\n\n if (blankStart) element.editor.setSelectedRange([0, 0])\n\n options.forEach(([attrId, _attrName]) => {\n element.editor.deactivateAttribute(attrId)\n })\n\n if (!selection.startsWith(\"-\")) element.editor.activateAttribute(selection)\n if (blankStart) this.newSelection()\n }\n\n alignLeft() {\n const element = this.element.querySelector(\"trix-editor\")\n\n element.editor.deactivateAttribute(\"align-center\")\n element.editor.deactivateAttribute(\"align-right\")\n element.editor.activateAttribute(\"align-left\")\n }\n\n alignCenter() {\n const element = this.element.querySelector(\"trix-editor\")\n\n element.editor.deactivateAttribute(\"align-left\")\n element.editor.deactivateAttribute(\"align-right\")\n element.editor.activateAttribute(\"align-center\")\n }\n\n alignRight() {\n const element = this.element.querySelector(\"trix-editor\")\n\n element.editor.deactivateAttribute(\"align-left\")\n element.editor.deactivateAttribute(\"align-center\")\n element.editor.activateAttribute(\"align-right\")\n }\n\n newSelection(event) {\n const element = this.element.querySelector(\"trix-editor\")\n\n let fontFound = false\n let fontSizeFound = false\n let alignmentFound = false\n\n Object.keys(element.editor.composition.currentAttributes).forEach(key => {\n if (this.fontsSelectTarget.querySelector(`option[value=\"${key}\"]`)) {\n $(this.fontsSelectTarget).val(key).trigger(\"change\")\n fontFound = true\n } else if (this.fontSizesSelectTarget.querySelector(`option[value=\"${key}\"]`)) {\n $(this.fontSizesSelectTarget).val(key).trigger(\"change\")\n fontSizeFound = true\n }\n\n if (key.startsWith(\"align-\")) alignmentFound = true\n })\n\n if (!fontFound) $(this.fontsSelectTarget).val(\"-default-\").trigger(\"change\")\n if (!fontSizeFound) $(this.fontSizesSelectTarget).val(\"-default-\").trigger(\"change\")\n if (!alignmentFound) this.element.querySelector('[data-trix-attribute=\"align-left\"]').dataset.trixActive = true\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n siteKey: String,\n theme: String,\n size: String,\n appearance: String,\n action: String,\n buttonSelector: String,\n disableButton: Boolean\n }\n\n static targets = [\"tokenField\"]\n\n connect() {\n if (window.turnstile) {\n this.renderTurnstile()\n } else {\n if (!window.securityWidgetCallbacks) {\n window.securityWidgetCallbacks = []\n window.securityWidgetCb = () => {\n if (window.securityWidgetCallbacks && window.securityWidgetCallbacks.length > 0) {\n window.securityWidgetCallbacks.forEach(callback => callback())\n }\n }\n }\n window.securityWidgetCallbacks.push(() => this.renderTurnstile())\n }\n }\n\n renderTurnstile() {\n if (this.button && this.disableButtonValue) {\n this.button.disabled = true\n }\n\n const visibleClasses = ['visible']\n\n this.id = turnstile.render(`#${this.element.id}`, {\n sitekey: this.siteKeyValue,\n theme: this.themeValue,\n size: this.sizeValue,\n action: this.actionValue,\n appearance: this.appearanceValue,\n callback: (token) => {\n if (this.hasTokenFieldTarget) {\n this.tokenFieldTarget.value = token\n }\n if (this.button && this.disableButtonValue) {\n this.button.disabled = false\n }\n },\n \"before-interactive-callback\": () => this.element.classList.add(...visibleClasses)\n })\n }\n\n disconnect() {\n if (window.turnstile && this.id) {\n turnstile.remove(this.id)\n }\n\n if (window.securityWidgetCallbacks) {\n const callbackIndex = window.securityWidgetCallbacks.findIndex(\n callback => callback.toString().includes(this.element.id)\n )\n\n if (callbackIndex !== -1) {\n window.securityWidgetCallbacks.splice(callbackIndex, 1)\n }\n }\n }\n\n get form() {\n return this.element.closest(\"form\")\n }\n\n get button() {\n if (this.hasButtonSelectorValue) {\n return document.querySelector(this.buttonSelectorValue)\n }\n\n if (this.form) {\n return this.form.querySelector(\"input[type=submit], button[type=submit]\")\n }\n\n return null\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"url\", \"currentScreen\", \"previous\", \"next\", \"preview\" ]\n\n connect() {\n this.urls = this.urlTargets.map(el => el.innerText)\n\n var currentScreen = this.getCurrentScreen()\n this.previousTarget.setAttribute(\"href\", this.urls[currentScreen - 1])\n this.nextTarget.setAttribute(\"href\", this.urls[currentScreen + 1])\n\n this.updateDisabledState()\n }\n\n previous(event) {\n event.preventDefault()\n\n var url = event.target.getAttribute(\"href\")\n this.previewTarget.setAttribute(\"src\", url)\n\n var currentScreen = this.getCurrentScreen()\n this.setCurrentScreen(currentScreen - 1)\n\n this.previousTarget.setAttribute(\"href\", this.urls[currentScreen - 2])\n this.nextTarget.setAttribute(\"href\", this.urls[currentScreen])\n\n this.updateDisabledState()\n }\n\n next(event) {\n event.preventDefault()\n\n var url = event.target.getAttribute(\"href\")\n this.previewTarget.setAttribute(\"src\", url)\n\n var currentScreen = this.getCurrentScreen()\n this.setCurrentScreen(currentScreen + 1)\n\n this.previousTarget.setAttribute(\"href\", this.urls[currentScreen])\n this.nextTarget.setAttribute(\"href\", this.urls[currentScreen + 2])\n\n this.updateDisabledState()\n }\n\n updateDisabledState() {\n var currentScreen = this.getCurrentScreen()\n\n if (currentScreen <= 0) {\n this.previousTarget.classList.add(\"disabled\")\n } else {\n this.previousTarget.classList.remove(\"disabled\")\n }\n\n if (currentScreen >= this.urls.length - 1) {\n this.nextTarget.classList.add(\"disabled\")\n } else {\n this.nextTarget.classList.remove(\"disabled\")\n }\n }\n\n getCurrentScreen() {\n return parseInt(this.currentScreenTarget.innerText) - 1\n }\n\n setCurrentScreen(screen) {\n this.currentScreenTarget.innerText = screen + 1\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"confirmation\"]\n\n update(event) {\n this.confirmationTarget.classList.add(\"hidden\")\n const checked = event.currentTarget.checked\n\n $.ajax({\n url: `/users/${this.data.get(\"user-id\")}/preferences`,\n method: \"PATCH\",\n data: {\n preference: event.currentTarget.value,\n value: event.currentTarget.checked\n }\n }).done(() => {\n this.confirmationTarget.classList.remove(\"hidden\")\n\n const customEvent = new CustomEvent(\"skip-empty-suggestions-modal-change\", {\n bubbles: true,\n detail: checked,\n })\n document.body.dispatchEvent(customEvent)\n })\n }\n\n dismiss(event) {\n event.preventDefault()\n\n this.element.classList.add(\"hidden\")\n\n $.ajax({\n url: `/users/${this.data.get(\"user-id\")}/preferences`,\n method: \"PATCH\",\n data: {\n preference: this.data.get(\"preference\"),\n value: true\n }\n })\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"video\"]\n\n connect() {\n\n const src = $(this.videoTarget).attr(\"src\")\n const origin = this.data.get(\"origin\")\n\n $(this.element).on('show.bs.modal', (event) => {\n if (origin == null) {\n $(this.videoTarget).attr('src', `${src}?autoplay=1`);\n }\n else {\n $(this.videoTarget).attr('src', `${src}?autoplay=1&origin=${origin}`);\n }\n })\n\n $(this.element).on('hide.bs.modal', (event) => {\n $(this.videoTarget).attr('src', ' ');\n })\n\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.calculate()\n }\n\n calculate(){\n const vh = window.innerHeight * 0.01\n document.documentElement.style.setProperty('--vh', `${vh}px`);\n }\n}", "import { Controller } from \"@hotwired/stimulus\"\nexport default class extends Controller {\n initialize() {\n this.intersectionObserver = new IntersectionObserver(entries => this.processIntersectionEntries(entries))\n }\n connect() {\n this.intersectionObserver.observe(this.element)\n }\n disconnect() {\n this.intersectionObserver.unobserve(this.element)\n }\n\n // Private\n processIntersectionEntries(entries) {\n entries.forEach(entry => {\n this.element.classList.toggle(this.data.get(\"class\"), entry.isIntersecting)\n })\n }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"hidden\"]\n\n toggle(event) {\n event.preventDefault();\n\n const anchor = this.data.get(\"id\")\n const offset = parseInt(this.data.get(\"offset\")) || 0\n\n if (this.hiddenTarget.classList.contains('hidden')){\n $(\"html, body\").animate({\n scrollTop: $(`#${anchor}`).offset().top - offset}, 300)\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"content\", \"hidden\", \"required\" ]\n\n toggle(event) {\n event.preventDefault()\n\n if (this.contentTargets.length > 0) {\n this.contentTargets.forEach(t => t.classList.toggle(\"hidden\"))\n }\n\n if (this.hiddenTargets.length > 0) {\n this.hiddenTargets.forEach(t => t.classList.toggle(\"hidden\"))\n }\n\n if (this.requiredTargets.length > 0) {\n this.requiredTargets.forEach(t => t.classList.toggle(\"required\"))\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"source\", \"hidden\" ]\n\n toggle(event) {\n if (this.sourceTarget.checked) {\n this.hiddenTarget.classList.remove(\"hidden\")\n } else {\n this.hiddenTarget.classList.add(\"hidden\")\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n change(event) {\n const previewSize = event.target.value\n const menuPreview = this.locateMenuPreview()\n\n switch (previewSize) {\n case \"mobile\":\n menuPreview.style.width = \"var(--preview-mobile-width)\"\n menuPreview.style.height = \"var(--preview-mobile-height)\"\n break;\n case \"tablet\":\n menuPreview.style.width = \"var(--preview-tablet-width)\"\n menuPreview.style.height = \"var(--preview-tablet-height)\"\n break;\n case \"desktop\":\n menuPreview.style.width = \"var(--preview-desktop-width)\"\n menuPreview.style.height = \"var(--preview-desktop-height)\"\n }\n }\n\n locateMenuPreview() {\n return document.querySelector(\"beermenus-web\").closest(\".pm-menu-chrome\")\n }\n}\n", "\n import * as module0 from './controllers/accordion-controller.js';import * as module1 from './controllers/accordion2-controller.js';import * as module2 from './controllers/admin-beer-controller.js';import * as module3 from './controllers/admin-merge-controller.js';import * as module4 from './controllers/aria-autocomplete-controller.js';import * as module5 from './controllers/auto-save-controller.js';import * as module6 from './controllers/auto-textfield-height-controller.js';import * as module7 from './controllers/autocomplete-controller.js';import * as module8 from './controllers/availability-promo-controller.js';import * as module9 from './controllers/beacon-controller.js';import * as module10 from './controllers/beer-autocomplete-controller.js';import * as module11 from './controllers/beer-info-controller.js';import * as module12 from './controllers/beer-suggestions-controller.js';import * as module13 from './controllers/beers-added-modal-controller.js';import * as module14 from './controllers/block-modal-controller.js';import * as module15 from './controllers/brewery-autocomplete-controller.js';import * as module16 from './controllers/brewery-multi-select-controller.js';import * as module17 from './controllers/bulk-move-controller.js';import * as module18 from './controllers/calculator-controller.js';import * as module19 from './controllers/calendly-controller.js';import * as module20 from './controllers/charts-controller.js';import * as module21 from './controllers/checkbox-counter-controller.js';import * as module22 from './controllers/checkbox-submit-controller.js';import * as module23 from './controllers/checkbox-toggle-controller.js';import * as module24 from './controllers/checklist-accordion-controller.js';import * as module25 from './controllers/checklists-controller.js';import * as module26 from './controllers/choose-saved-card-controller.js';import * as module27 from './controllers/clipboard_controller.js';import * as module28 from './controllers/closeable-controller.js';import * as module29 from './controllers/codemirror-controller.js';import * as module30 from './controllers/collapsible-controller.js';import * as module31 from './controllers/collapsible-simple-controller.js';import * as module32 from './controllers/condition-ids-controller.js';import * as module33 from './controllers/conditional-input-controller.js';import * as module34 from './controllers/custom-product-autocomplete-controller.js';import * as module35 from './controllers/date-input-controller.js';import * as module36 from './controllers/digital-display-controller.js';import * as module37 from './controllers/filter-templates-controller.js';import * as module38 from './controllers/fonts-controller.js';import * as module39 from './controllers/google-autocomplete-controller.js';import * as module40 from './controllers/hamburger-menu-controller.js';import * as module41 from './controllers/hiding-header-controller.js';import * as module42 from './controllers/honeybadger-controller.js';import * as module43 from './controllers/image-background-remover-controller.js';import * as module44 from './controllers/image-editor-controller.js';import * as module45 from './controllers/location-autocomplete-controller.js';import * as module46 from './controllers/masonry-grid-controller.js';import * as module47 from './controllers/menu-controller.js';import * as module48 from './controllers/menu-search-controller.js';import * as module49 from './controllers/menu-section-controller.js';import * as module50 from './controllers/menu-sections-controller.js';import * as module51 from './controllers/modular-controller.js';import * as module52 from './controllers/multi-select-controller.js';import * as module53 from './controllers/order-search-controller.js';import * as module54 from './controllers/orders-controller.js';import * as module55 from './controllers/pickup-locations-controller.js';import * as module56 from './controllers/place-lead-controller.js';import * as module57 from './controllers/price-calculator-controller.js';import * as module58 from './controllers/print-iframe-controller.js';import * as module59 from './controllers/print-menu-landing-page-controller.js';import * as module60 from './controllers/print-menus-controller.js';import * as module61 from './controllers/print-preview-controller.js';import * as module62 from './controllers/product-autocomplete-controller.js';import * as module63 from './controllers/product-type-controller.js';import * as module64 from './controllers/property-segments-controller.js';import * as module65 from './controllers/purchase-limit-controller.js';import * as module66 from './controllers/region-preview-controller.js';import * as module67 from './controllers/remote-file-form-controller.js';import * as module68 from './controllers/scroll-to-top-controller.js';import * as module69 from './controllers/segmented_field_controller.js';import * as module70 from './controllers/segments-controller.js';import * as module71 from './controllers/select-all-controller.js';import * as module72 from './controllers/serving-controller.js';import * as module73 from './controllers/servings-controller.js';import * as module74 from './controllers/shoelace-controller.js';import * as module75 from './controllers/show-more-controller.js';import * as module76 from './controllers/simple-beer-autocomplete-controller.js';import * as module77 from './controllers/simple-modular-controller.js';import * as module78 from './controllers/smooth-scroller-controller.js';import * as module79 from './controllers/sort-store-controller.js';import * as module80 from './controllers/sortable-controller.js';import * as module81 from './controllers/sortablejs-controller.js';import * as module82 from './controllers/sticky-controller.js';import * as module83 from './controllers/streamlined-menu-controller.js';import * as module84 from './controllers/stripe-controller.js';import * as module85 from './controllers/structured-data-controller.js';import * as module86 from './controllers/tabs-controller.js';import * as module87 from './controllers/tabs2-controller.js';import * as module88 from './controllers/textfit-controller.js';import * as module89 from './controllers/tracked-clicks-controller.js';import * as module90 from './controllers/trix-controller.js';import * as module91 from './controllers/turnstile_controller.js';import * as module92 from './controllers/tv-preview-controller.js';import * as module93 from './controllers/user-preferences-controller.js';import * as module94 from './controllers/video-modal-controller.js';import * as module95 from './controllers/viewport-calculate-controller.js';import * as module96 from './controllers/viewport-entrance-toggle-controller.js';import * as module97 from './controllers/visible-anchor-controller.js';import * as module98 from './controllers/visible-controller.js';import * as module99 from './controllers/visible-from-radio-controller.js';import * as module100 from './controllers/web-menu-preview-sizes-controller.js'\n const modules = {\"./controllers/accordion-controller.js\": module0,\"./controllers/accordion2-controller.js\": module1,\"./controllers/admin-beer-controller.js\": module2,\"./controllers/admin-merge-controller.js\": module3,\"./controllers/aria-autocomplete-controller.js\": module4,\"./controllers/auto-save-controller.js\": module5,\"./controllers/auto-textfield-height-controller.js\": module6,\"./controllers/autocomplete-controller.js\": module7,\"./controllers/availability-promo-controller.js\": module8,\"./controllers/beacon-controller.js\": module9,\"./controllers/beer-autocomplete-controller.js\": module10,\"./controllers/beer-info-controller.js\": module11,\"./controllers/beer-suggestions-controller.js\": module12,\"./controllers/beers-added-modal-controller.js\": module13,\"./controllers/block-modal-controller.js\": module14,\"./controllers/brewery-autocomplete-controller.js\": module15,\"./controllers/brewery-multi-select-controller.js\": module16,\"./controllers/bulk-move-controller.js\": module17,\"./controllers/calculator-controller.js\": module18,\"./controllers/calendly-controller.js\": module19,\"./controllers/charts-controller.js\": module20,\"./controllers/checkbox-counter-controller.js\": module21,\"./controllers/checkbox-submit-controller.js\": module22,\"./controllers/checkbox-toggle-controller.js\": module23,\"./controllers/checklist-accordion-controller.js\": module24,\"./controllers/checklists-controller.js\": module25,\"./controllers/choose-saved-card-controller.js\": module26,\"./controllers/clipboard_controller.js\": module27,\"./controllers/closeable-controller.js\": module28,\"./controllers/codemirror-controller.js\": module29,\"./controllers/collapsible-controller.js\": module30,\"./controllers/collapsible-simple-controller.js\": module31,\"./controllers/condition-ids-controller.js\": module32,\"./controllers/conditional-input-controller.js\": module33,\"./controllers/custom-product-autocomplete-controller.js\": module34,\"./controllers/date-input-controller.js\": module35,\"./controllers/digital-display-controller.js\": module36,\"./controllers/filter-templates-controller.js\": module37,\"./controllers/fonts-controller.js\": module38,\"./controllers/google-autocomplete-controller.js\": module39,\"./controllers/hamburger-menu-controller.js\": module40,\"./controllers/hiding-header-controller.js\": module41,\"./controllers/honeybadger-controller.js\": module42,\"./controllers/image-background-remover-controller.js\": module43,\"./controllers/image-editor-controller.js\": module44,\"./controllers/location-autocomplete-controller.js\": module45,\"./controllers/masonry-grid-controller.js\": module46,\"./controllers/menu-controller.js\": module47,\"./controllers/menu-search-controller.js\": module48,\"./controllers/menu-section-controller.js\": module49,\"./controllers/menu-sections-controller.js\": module50,\"./controllers/modular-controller.js\": module51,\"./controllers/multi-select-controller.js\": module52,\"./controllers/order-search-controller.js\": module53,\"./controllers/orders-controller.js\": module54,\"./controllers/pickup-locations-controller.js\": module55,\"./controllers/place-lead-controller.js\": module56,\"./controllers/price-calculator-controller.js\": module57,\"./controllers/print-iframe-controller.js\": module58,\"./controllers/print-menu-landing-page-controller.js\": module59,\"./controllers/print-menus-controller.js\": module60,\"./controllers/print-preview-controller.js\": module61,\"./controllers/product-autocomplete-controller.js\": module62,\"./controllers/product-type-controller.js\": module63,\"./controllers/property-segments-controller.js\": module64,\"./controllers/purchase-limit-controller.js\": module65,\"./controllers/region-preview-controller.js\": module66,\"./controllers/remote-file-form-controller.js\": module67,\"./controllers/scroll-to-top-controller.js\": module68,\"./controllers/segmented_field_controller.js\": module69,\"./controllers/segments-controller.js\": module70,\"./controllers/select-all-controller.js\": module71,\"./controllers/serving-controller.js\": module72,\"./controllers/servings-controller.js\": module73,\"./controllers/shoelace-controller.js\": module74,\"./controllers/show-more-controller.js\": module75,\"./controllers/simple-beer-autocomplete-controller.js\": module76,\"./controllers/simple-modular-controller.js\": module77,\"./controllers/smooth-scroller-controller.js\": module78,\"./controllers/sort-store-controller.js\": module79,\"./controllers/sortable-controller.js\": module80,\"./controllers/sortablejs-controller.js\": module81,\"./controllers/sticky-controller.js\": module82,\"./controllers/streamlined-menu-controller.js\": module83,\"./controllers/stripe-controller.js\": module84,\"./controllers/structured-data-controller.js\": module85,\"./controllers/tabs-controller.js\": module86,\"./controllers/tabs2-controller.js\": module87,\"./controllers/textfit-controller.js\": module88,\"./controllers/tracked-clicks-controller.js\": module89,\"./controllers/trix-controller.js\": module90,\"./controllers/turnstile_controller.js\": module91,\"./controllers/tv-preview-controller.js\": module92,\"./controllers/user-preferences-controller.js\": module93,\"./controllers/video-modal-controller.js\": module94,\"./controllers/viewport-calculate-controller.js\": module95,\"./controllers/viewport-entrance-toggle-controller.js\": module96,\"./controllers/visible-anchor-controller.js\": module97,\"./controllers/visible-controller.js\": module98,\"./controllers/visible-from-radio-controller.js\": module99,\"./controllers/web-menu-preview-sizes-controller.js\": module100,\n };\n export default modules;\n ", "import { Controller } from \"@hotwired/stimulus\";\nconst _Dialog = class _Dialog extends Controller {\n initialize() {\n this.forceClose = this.forceClose.bind(this);\n }\n connect() {\n this.openValue && this.open(), document.addEventListener(\"turbo:before-render\", this.forceClose);\n }\n disconnect() {\n document.removeEventListener(\"turbo:before-render\", this.forceClose);\n }\n open() {\n this.dialogTarget.showModal();\n }\n close() {\n this.dialogTarget.setAttribute(\"closing\", \"\"), Promise.all(this.dialogTarget.getAnimations().map((animation) => animation.finished)).then(() => {\n this.dialogTarget.removeAttribute(\"closing\"), this.dialogTarget.close();\n });\n }\n backdropClose(event) {\n event.target === this.dialogTarget && this.close();\n }\n forceClose() {\n this.dialogTarget.close();\n }\n};\n_Dialog.targets = [\"dialog\"], _Dialog.values = {\n open: {\n type: Boolean,\n default: !1\n }\n};\nlet Dialog = _Dialog;\nexport {\n Dialog as default\n};\n", "/*\n * stimulus-use 0.52.1\n */\nimport { Controller } from \"@hotwired/stimulus\";\n\nconst method = (controller, methodName) => {\n const method = controller[methodName];\n if (typeof method == \"function\") {\n return method;\n } else {\n return (...args) => {};\n }\n};\n\nconst composeEventName = (name, controller, eventPrefix) => {\n let composedName = name;\n if (eventPrefix === true) {\n composedName = `${controller.identifier}:${name}`;\n } else if (typeof eventPrefix === \"string\") {\n composedName = `${eventPrefix}:${name}`;\n }\n return composedName;\n};\n\nconst extendedEvent = (type, event, detail) => {\n const {bubbles: bubbles, cancelable: cancelable, composed: composed} = event || {\n bubbles: true,\n cancelable: true,\n composed: true\n };\n if (event) {\n Object.assign(detail, {\n originalEvent: event\n });\n }\n const customEvent = new CustomEvent(type, {\n bubbles: bubbles,\n cancelable: cancelable,\n composed: composed,\n detail: detail\n });\n return customEvent;\n};\n\nfunction isElementInViewport(el) {\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n const vertInView = rect.top <= windowHeight && rect.top + rect.height > 0;\n const horInView = rect.left <= windowWidth && rect.left + rect.width > 0;\n return vertInView && horInView;\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, ((_, char) => char.toUpperCase()));\n}\n\n/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */ function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nconst defaultOptions$8 = {\n debug: false,\n logger: console,\n dispatchEvent: true,\n eventPrefix: true\n};\n\nclass StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c;\n this.log = (functionName, args) => {\n if (!this.debug) return;\n this.logger.groupCollapsed(`%c${this.controller.identifier} %c#${functionName}`, \"color: #3B82F6\", \"color: unset\");\n this.logger.log(Object.assign({\n controllerId: this.controllerId\n }, args));\n this.logger.groupEnd();\n };\n this.warn = message => {\n this.logger.warn(`%c${this.controller.identifier} %c${message}`, \"color: #3B82F6; font-weight: bold\", \"color: unset\");\n };\n this.dispatch = (eventName, details = {}) => {\n if (this.dispatchEvent) {\n const {event: event} = details, eventDetails = __rest(details, [ \"event\" ]);\n const customEvent = this.extendedEvent(eventName, event || null, eventDetails);\n this.targetElement.dispatchEvent(customEvent);\n this.log(\"dispatchEvent\", Object.assign({\n eventName: customEvent.type\n }, eventDetails));\n }\n };\n this.call = (methodName, args = {}) => {\n const method = this.controller[methodName];\n if (typeof method == \"function\") {\n return method.call(this.controller, args);\n }\n };\n this.extendedEvent = (name, event, detail) => {\n const {bubbles: bubbles, cancelable: cancelable, composed: composed} = event || {\n bubbles: true,\n cancelable: true,\n composed: true\n };\n if (event) {\n Object.assign(detail, {\n originalEvent: event\n });\n }\n const customEvent = new CustomEvent(this.composeEventName(name), {\n bubbles: bubbles,\n cancelable: cancelable,\n composed: composed,\n detail: detail\n });\n return customEvent;\n };\n this.composeEventName = name => {\n let composedName = name;\n if (this.eventPrefix === true) {\n composedName = `${this.controller.identifier}:${name}`;\n } else if (typeof this.eventPrefix === \"string\") {\n composedName = `${this.eventPrefix}:${name}`;\n }\n return composedName;\n };\n this.debug = (_b = (_a = options === null || options === void 0 ? void 0 : options.debug) !== null && _a !== void 0 ? _a : controller.application.stimulusUseDebug) !== null && _b !== void 0 ? _b : defaultOptions$8.debug;\n this.logger = (_c = options === null || options === void 0 ? void 0 : options.logger) !== null && _c !== void 0 ? _c : defaultOptions$8.logger;\n this.controller = controller;\n this.controllerId = controller.element.id || controller.element.dataset.id;\n this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n const {dispatchEvent: dispatchEvent, eventPrefix: eventPrefix} = Object.assign({}, defaultOptions$8, options);\n Object.assign(this, {\n dispatchEvent: dispatchEvent,\n eventPrefix: eventPrefix\n });\n this.controllerInitialize = controller.initialize.bind(controller);\n this.controllerConnect = controller.connect.bind(controller);\n this.controllerDisconnect = controller.disconnect.bind(controller);\n }\n}\n\nconst defaultOptions$7 = {\n eventPrefix: true,\n bubbles: true,\n cancelable: true\n};\n\nclass UseDispatch extends StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c, _d;\n super(controller, options);\n this.dispatch = (eventName, detail = {}) => {\n const {controller: controller, targetElement: targetElement, eventPrefix: eventPrefix, bubbles: bubbles, cancelable: cancelable, log: log, warn: warn} = this;\n Object.assign(detail, {\n controller: controller\n });\n const eventNameWithPrefix = composeEventName(eventName, this.controller, eventPrefix);\n const event = new CustomEvent(eventNameWithPrefix, {\n detail: detail,\n bubbles: bubbles,\n cancelable: cancelable\n });\n targetElement.dispatchEvent(event);\n warn(\"`useDispatch()` is deprecated. Please use the built-in `this.dispatch()` function from Stimulus. You can find more information on how to upgrade at: https://stimulus-use.github.io/stimulus-use/#/use-dispatch\");\n log(\"dispatch\", {\n eventName: eventNameWithPrefix,\n detail: detail,\n bubbles: bubbles,\n cancelable: cancelable\n });\n return event;\n };\n this.targetElement = (_a = options.element) !== null && _a !== void 0 ? _a : controller.element;\n this.eventPrefix = (_b = options.eventPrefix) !== null && _b !== void 0 ? _b : defaultOptions$7.eventPrefix;\n this.bubbles = (_c = options.bubbles) !== null && _c !== void 0 ? _c : defaultOptions$7.bubbles;\n this.cancelable = (_d = options.cancelable) !== null && _d !== void 0 ? _d : defaultOptions$7.cancelable;\n this.enhanceController();\n }\n enhanceController() {\n Object.assign(this.controller, {\n dispatch: this.dispatch\n });\n }\n}\n\nconst useDispatch = (controller, options = {}) => new UseDispatch(controller, options);\n\nconst defaultOptions$6 = {\n overwriteDispatch: true\n};\n\nconst useApplication = (controller, options = {}) => {\n const {overwriteDispatch: overwriteDispatch} = Object.assign({}, defaultOptions$6, options);\n Object.defineProperty(controller, \"isPreview\", {\n get() {\n return document.documentElement.hasAttribute(\"data-turbolinks-preview\") || document.documentElement.hasAttribute(\"data-turbo-preview\");\n }\n });\n Object.defineProperty(controller, \"isConnected\", {\n get() {\n return !!Array.from(this.context.module.connectedContexts).find((c => c === this.context));\n }\n });\n Object.defineProperty(controller, \"csrfToken\", {\n get() {\n return this.metaValue(\"csrf-token\");\n }\n });\n if (overwriteDispatch) {\n useDispatch(controller, options);\n }\n Object.assign(controller, {\n metaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n return element && element.getAttribute(\"content\");\n }\n });\n};\n\nclass ApplicationController extends Controller {\n constructor(context) {\n super(context);\n this.isPreview = false;\n this.isConnected = false;\n this.csrfToken = \"\";\n useApplication(this, this.options);\n }\n}\n\nconst defaultOptions$5 = {\n events: [ \"click\", \"touchend\" ],\n onlyVisible: true,\n dispatchEvent: true,\n eventPrefix: true\n};\n\nconst useClickOutside = (composableController, options = {}) => {\n const controller = composableController;\n const {onlyVisible: onlyVisible, dispatchEvent: dispatchEvent, events: events, eventPrefix: eventPrefix} = Object.assign({}, defaultOptions$5, options);\n const onEvent = event => {\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n if (targetElement.contains(event.target) || !isElementInViewport(targetElement) && onlyVisible) {\n return;\n }\n if (controller.clickOutside) {\n controller.clickOutside(event);\n }\n if (dispatchEvent) {\n const eventName = composeEventName(\"click:outside\", controller, eventPrefix);\n const clickOutsideEvent = extendedEvent(eventName, event, {\n controller: controller\n });\n targetElement.dispatchEvent(clickOutsideEvent);\n }\n };\n const observe = () => {\n events === null || events === void 0 ? void 0 : events.forEach((event => {\n window.addEventListener(event, onEvent, true);\n }));\n };\n const unobserve = () => {\n events === null || events === void 0 ? void 0 : events.forEach((event => {\n window.removeEventListener(event, onEvent, true);\n }));\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass ClickOutsideComposableController extends Controller {}\n\nclass ClickOutsideController extends ClickOutsideComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useClickOutside(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nclass DebounceController extends Controller {}\n\nDebounceController.debounces = [];\n\nconst defaultWait$1 = 200;\n\nconst debounce = (fn, wait = defaultWait$1) => {\n let timeoutId = null;\n return function() {\n const args = Array.from(arguments);\n const context = this;\n const params = args.map((arg => arg.params));\n const callback = () => {\n args.forEach(((arg, index) => arg.params = params[index]));\n return fn.apply(context, args);\n };\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(callback, wait);\n };\n};\n\nconst useDebounce = (composableController, options) => {\n const controller = composableController;\n const constructor = controller.constructor;\n constructor.debounces.forEach((func => {\n if (typeof func === \"string\") {\n controller[func] = debounce(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n }\n if (typeof func === \"object\") {\n const {name: name, wait: wait} = func;\n if (!name) return;\n controller[name] = debounce(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n }\n }));\n};\n\nclass UseHover extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.targetElement.addEventListener(\"mouseenter\", this.onEnter);\n this.targetElement.addEventListener(\"mouseleave\", this.onLeave);\n };\n this.unobserve = () => {\n this.targetElement.removeEventListener(\"mouseenter\", this.onEnter);\n this.targetElement.removeEventListener(\"mouseleave\", this.onLeave);\n };\n this.onEnter = event => {\n this.call(\"mouseEnter\", event);\n this.log(\"mouseEnter\", {\n hover: true\n });\n this.dispatch(\"mouseEnter\", {\n hover: false\n });\n };\n this.onLeave = event => {\n this.call(\"mouseLeave\", event);\n this.log(\"mouseLeave\", {\n hover: false\n });\n this.dispatch(\"mouseLeave\", {\n hover: false\n });\n };\n this.controller = controller;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useHover = (composableController, options = {}) => {\n const controller = composableController;\n const observer = new UseHover(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass HoverComposableController extends Controller {}\n\nclass HoverController extends HoverComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useHover(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst defaultEvents = [ \"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\" ];\n\nconst oneMinute = 6e4;\n\nconst defaultOptions$4 = {\n ms: oneMinute,\n initialState: false,\n events: defaultEvents,\n dispatchEvent: true,\n eventPrefix: true\n};\n\nconst useIdle = (composableController, options = {}) => {\n const controller = composableController;\n const {ms: ms, initialState: initialState, events: events, dispatchEvent: dispatchEvent, eventPrefix: eventPrefix} = Object.assign({}, defaultOptions$4, options);\n let isIdle = initialState;\n let timeout = setTimeout((() => {\n isIdle = true;\n dispatchAway();\n }), ms);\n const dispatchAway = event => {\n const eventName = composeEventName(\"away\", controller, eventPrefix);\n controller.isIdle = true;\n method(controller, \"away\").call(controller, event);\n if (dispatchEvent) {\n const clickOutsideEvent = extendedEvent(eventName, event || null, {\n controller: controller\n });\n controller.element.dispatchEvent(clickOutsideEvent);\n }\n };\n const dispatchBack = event => {\n const eventName = composeEventName(\"back\", controller, eventPrefix);\n controller.isIdle = false;\n method(controller, \"back\").call(controller, event);\n if (dispatchEvent) {\n const clickOutsideEvent = extendedEvent(eventName, event || null, {\n controller: controller\n });\n controller.element.dispatchEvent(clickOutsideEvent);\n }\n };\n const onEvent = event => {\n if (isIdle) dispatchBack(event);\n isIdle = false;\n clearTimeout(timeout);\n timeout = setTimeout((() => {\n isIdle = true;\n dispatchAway(event);\n }), ms);\n };\n const onVisibility = event => {\n if (!document.hidden) onEvent(event);\n };\n if (isIdle) {\n dispatchAway();\n } else {\n dispatchBack();\n }\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observe = () => {\n events.forEach((event => {\n window.addEventListener(event, onEvent);\n }));\n document.addEventListener(\"visibilitychange\", onVisibility);\n };\n const unobserve = () => {\n clearTimeout(timeout);\n events.forEach((event => {\n window.removeEventListener(event, onEvent);\n }));\n document.removeEventListener(\"visibilitychange\", onVisibility);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass IdleComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isIdle = false;\n }\n}\n\nclass IdleController extends IdleComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useIdle(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst defaultOptions$3 = {\n dispatchEvent: true,\n eventPrefix: true,\n visibleAttribute: \"isVisible\"\n};\n\nconst useIntersection = (composableController, options = {}) => {\n const controller = composableController;\n const {dispatchEvent: dispatchEvent, eventPrefix: eventPrefix, visibleAttribute: visibleAttribute} = Object.assign({}, defaultOptions$3, options);\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n if (!controller.intersectionElements) controller.intersectionElements = [];\n controller.intersectionElements.push(targetElement);\n const callback = entries => {\n const [entry] = entries;\n if (entry.isIntersecting) {\n dispatchAppear(entry);\n } else if (targetElement.hasAttribute(visibleAttribute)) {\n dispatchDisappear(entry);\n }\n };\n const observer = new IntersectionObserver(callback, options);\n const dispatchAppear = entry => {\n targetElement.setAttribute(visibleAttribute, \"true\");\n method(controller, \"appear\").call(controller, entry, observer);\n if (dispatchEvent) {\n const eventName = composeEventName(\"appear\", controller, eventPrefix);\n const appearEvent = extendedEvent(eventName, null, {\n controller: controller,\n entry: entry,\n observer: observer\n });\n targetElement.dispatchEvent(appearEvent);\n }\n };\n const dispatchDisappear = entry => {\n targetElement.removeAttribute(visibleAttribute);\n method(controller, \"disappear\").call(controller, entry, observer);\n if (dispatchEvent) {\n const eventName = composeEventName(\"disappear\", controller, eventPrefix);\n const disappearEvent = extendedEvent(eventName, null, {\n controller: controller,\n entry: entry,\n observer: observer\n });\n targetElement.dispatchEvent(disappearEvent);\n }\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const disconnect = () => {\n unobserve();\n controllerDisconnect();\n };\n const observe = () => {\n observer.observe(targetElement);\n };\n const unobserve = () => {\n observer.unobserve(targetElement);\n };\n const noneVisible = () => controller.intersectionElements.filter((element => element.hasAttribute(visibleAttribute))).length === 0;\n const oneVisible = () => controller.intersectionElements.filter((element => element.hasAttribute(visibleAttribute))).length === 1;\n const atLeastOneVisible = () => controller.intersectionElements.some((element => element.hasAttribute(visibleAttribute)));\n const allVisible = () => controller.intersectionElements.every((element => element.hasAttribute(visibleAttribute)));\n const isVisible = allVisible;\n Object.assign(controller, {\n isVisible: isVisible,\n noneVisible: noneVisible,\n oneVisible: oneVisible,\n atLeastOneVisible: atLeastOneVisible,\n allVisible: allVisible,\n disconnect: disconnect\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass IntersectionComposableController extends Controller {}\n\nclass IntersectionController extends IntersectionComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useIntersection(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst useLazyLoad = (controller, options) => {\n const callback = entries => {\n const [entry] = entries;\n if (entry.isIntersecting && !controller.isLoaded) {\n handleAppear();\n }\n };\n const handleAppear = entry => {\n const src = controller.data.get(\"src\");\n if (!src) return;\n const imageElement = controller.element;\n controller.isLoading = true;\n method(controller, \"loading\").call(controller, src);\n imageElement.onload = () => {\n handleLoaded(src);\n };\n imageElement.src = src;\n };\n const handleLoaded = src => {\n controller.isLoading = false;\n controller.isLoaded = true;\n method(controller, \"loaded\").call(controller, src);\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observer = new IntersectionObserver(callback, options);\n const observe = () => {\n observer.observe(controller.element);\n };\n const unobserve = () => {\n observer.unobserve(controller.element);\n };\n Object.assign(controller, {\n isVisible: false,\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass LazyLoadComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isLoading = false;\n this.isLoaded = false;\n }\n}\n\nclass LazyLoadController extends LazyLoadComposableController {\n constructor(context) {\n super(context);\n this.options = {\n rootMargin: \"10%\"\n };\n requestAnimationFrame((() => {\n const [observe, unobserve] = useLazyLoad(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst defaultOptions$2 = {\n mediaQueries: {},\n dispatchEvent: true,\n eventPrefix: true,\n debug: false\n};\n\nclass UseMatchMedia extends StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c, _d;\n super(controller, options);\n this.matches = [];\n this.callback = event => {\n const name = Object.keys(this.mediaQueries).find((name => this.mediaQueries[name] === event.media));\n if (!name) return;\n const {media: media, matches: matches} = event;\n this.changed({\n name: name,\n media: media,\n matches: matches,\n event: event\n });\n };\n this.changed = payload => {\n const {name: name} = payload;\n if (payload.event) {\n this.call(camelize(`${name}_changed`), payload);\n this.dispatch(`${name}:changed`, payload);\n this.log(`media query \"${name}\" changed`, payload);\n }\n if (payload.matches) {\n this.call(camelize(`is_${name}`), payload);\n this.dispatch(`is:${name}`, payload);\n } else {\n this.call(camelize(`not_${name}`), payload);\n this.dispatch(`not:${name}`, payload);\n }\n };\n this.observe = () => {\n Object.keys(this.mediaQueries).forEach((name => {\n const media = this.mediaQueries[name];\n const match = window.matchMedia(media);\n match.addListener(this.callback);\n this.matches.push(match);\n this.changed({\n name: name,\n media: media,\n matches: match.matches\n });\n }));\n };\n this.unobserve = () => {\n this.matches.forEach((match => match.removeListener(this.callback)));\n };\n this.controller = controller;\n this.mediaQueries = (_a = options.mediaQueries) !== null && _a !== void 0 ? _a : defaultOptions$2.mediaQueries;\n this.dispatchEvent = (_b = options.dispatchEvent) !== null && _b !== void 0 ? _b : defaultOptions$2.dispatchEvent;\n this.eventPrefix = (_c = options.eventPrefix) !== null && _c !== void 0 ? _c : defaultOptions$2.eventPrefix;\n this.debug = (_d = options.debug) !== null && _d !== void 0 ? _d : defaultOptions$2.debug;\n if (!window.matchMedia) {\n console.error(\"window.matchMedia() is not available\");\n return;\n }\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useMatchMedia = (controller, options = {}) => {\n const observer = new UseMatchMedia(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nconst memoize = (controller, name, value) => {\n Object.defineProperty(controller, name, {\n value: value\n });\n return value;\n};\n\nconst useMemo = controller => {\n var _a;\n (_a = controller.constructor.memos) === null || _a === void 0 ? void 0 : _a.forEach((getter => {\n memoize(controller, getter, controller[getter]);\n }));\n};\n\nconst defineMetaGetter = (controller, metaName, suffix) => {\n const getterName = suffix ? `${camelize(metaName)}Meta` : camelize(metaName);\n Object.defineProperty(controller, getterName, {\n get() {\n return typeCast(metaValue(metaName));\n }\n });\n};\n\nfunction metaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n return element && element.getAttribute(\"content\");\n}\n\nfunction typeCast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\n\nconst useMeta = (controller, options = {\n suffix: true\n}) => {\n const metaNames = controller.constructor.metaNames;\n const suffix = options.suffix;\n metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName => {\n defineMetaGetter(controller, metaName, suffix);\n }));\n Object.defineProperty(controller, \"metas\", {\n get() {\n const result = {};\n metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName => {\n const value = typeCast(metaValue(metaName));\n if (value !== undefined && value !== null) {\n result[camelize(metaName)] = value;\n }\n }));\n return result;\n }\n });\n};\n\nclass UseMutation extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n try {\n this.observer.observe(this.targetElement, this.options);\n } catch (error) {\n this.controller.application.handleError(error, \"At a minimum, one of childList, attributes, and/or characterData must be true\", {});\n }\n };\n this.unobserve = () => {\n this.observer.disconnect();\n };\n this.mutation = entries => {\n this.call(\"mutate\", entries);\n this.log(\"mutate\", {\n entries: entries\n });\n this.dispatch(\"mutate\", {\n entries: entries\n });\n };\n this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n this.controller = controller;\n this.options = options;\n this.observer = new MutationObserver(this.mutation);\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useMutation = (controller, options = {}) => {\n const observer = new UseMutation(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass MutationComposableController extends Controller {}\n\nclass MutationController extends MutationComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useMutation(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst defaultOptions$1 = {\n dispatchEvent: true,\n eventPrefix: true\n};\n\nconst useResize = (composableController, options = {}) => {\n const controller = composableController;\n const {dispatchEvent: dispatchEvent, eventPrefix: eventPrefix} = Object.assign({}, defaultOptions$1, options);\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n const callback = entries => {\n const [entry] = entries;\n method(controller, \"resize\").call(controller, entry.contentRect);\n if (dispatchEvent) {\n const eventName = composeEventName(\"resize\", controller, eventPrefix);\n const appearEvent = extendedEvent(eventName, null, {\n controller: controller,\n entry: entry\n });\n targetElement.dispatchEvent(appearEvent);\n }\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observer = new ResizeObserver(callback);\n const observe = () => {\n observer.observe(targetElement);\n };\n const unobserve = () => {\n observer.unobserve(targetElement);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass ResizeComposableController extends Controller {}\n\nclass ResizeController extends ResizeComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useResize(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nclass UseTargetMutation extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.observer.observe(this.targetElement, {\n subtree: true,\n characterData: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: [ this.targetSelector, this.scopedTargetSelector ]\n });\n };\n this.unobserve = () => {\n this.observer.disconnect();\n };\n this.mutation = entries => {\n for (const mutation of entries) {\n switch (mutation.type) {\n case \"attributes\":\n let newValue = mutation.target.getAttribute(mutation.attributeName);\n let oldValue = mutation.oldValue;\n if (mutation.attributeName === this.targetSelector || mutation.attributeName === this.scopedTargetSelector) {\n let oldTargets = this.targetsUsedByThisController(oldValue);\n let newTargets = this.targetsUsedByThisController(newValue);\n let removedTargets = oldTargets.filter((target => !newTargets.includes(target)));\n let addedTargets = newTargets.filter((target => !oldTargets.includes(target)));\n removedTargets.forEach((target => this.targetRemoved(this.stripIdentifierPrefix(target), mutation.target, \"attributeChange\")));\n addedTargets.forEach((target => this.targetAdded(this.stripIdentifierPrefix(target), mutation.target, \"attributeChange\")));\n }\n break;\n\n case \"characterData\":\n let nodule = this.findTargetInAncestry(mutation.target);\n if (nodule == null) {\n return;\n } else {\n let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n supportedTargets.forEach((target => {\n this.targetChanged(this.stripIdentifierPrefix(target), nodule, \"domMutation\");\n }));\n }\n break;\n\n case \"childList\":\n let {addedNodes: addedNodes, removedNodes: removedNodes} = mutation;\n addedNodes.forEach((node => this.processNodeDOMMutation(node, this.targetAdded)));\n removedNodes.forEach((node => this.processNodeDOMMutation(node, this.targetRemoved)));\n break;\n }\n }\n };\n this.controller = controller;\n this.options = options;\n this.targetElement = controller.element;\n this.identifier = controller.scope.identifier;\n this.identifierPrefix = `${this.identifier}.`;\n this.targetSelector = controller.scope.schema.targetAttribute;\n this.scopedTargetSelector = `data-${this.identifier}-target`;\n this.targets = options.targets || controller.constructor.targets;\n this.prefixedTargets = this.targets.map((target => `${this.identifierPrefix}${target}`));\n this.observer = new MutationObserver(this.mutation);\n this.enhanceController();\n this.observe();\n }\n processNodeDOMMutation(node, initialChangeModeAssumption) {\n let nodule = node;\n let change = initialChangeModeAssumption;\n let supportedTargets = [];\n if (nodule.nodeName == \"#text\" || this.targetsUsedByThisControllerFromNode(nodule).length == 0) {\n change = this.targetChanged;\n nodule = this.findTargetInAncestry(node);\n } else {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n if (nodule == null) {\n return;\n } else if (supportedTargets.length == 0) {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n supportedTargets.forEach((target => {\n change.call(this, this.stripIdentifierPrefix(target), nodule, \"domMutation\");\n }));\n }\n findTargetInAncestry(node) {\n let nodule = node;\n let supportedTargets = [];\n if (nodule.nodeName != \"#text\") {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n while (nodule.parentNode !== null && nodule.parentNode != this.targetElement && supportedTargets.length == 0) {\n nodule = nodule.parentNode;\n if (nodule.nodeName !== \"#text\") {\n let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n if (supportedTargets.length > 0) {\n return nodule;\n }\n }\n }\n if (nodule.nodeName == \"#text\") {\n return null;\n }\n if (nodule.parentNode == null) {\n return null;\n }\n if (nodule.parentNode == this.targetElement) {\n if (this.targetsUsedByThisControllerFromNode(nodule).length > 0) {\n return nodule;\n }\n return null;\n }\n return null;\n }\n targetAdded(name, node, trigger) {\n let targetCallback = `${name}TargetAdded`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.log(\"targetAdded\", {\n target: name,\n node: node,\n trigger: trigger\n });\n }\n targetRemoved(name, node, trigger) {\n let targetCallback = `${name}TargetRemoved`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.log(\"targetRemoved\", {\n target: name,\n node: node,\n trigger: trigger\n });\n }\n targetChanged(name, node, trigger) {\n let targetCallback = `${name}TargetChanged`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.log(\"targetChanged\", {\n target: name,\n node: node,\n trigger: trigger\n });\n }\n targetsUsedByThisControllerFromNode(node) {\n if (node.nodeName == \"#text\" || node.nodeName == \"#comment\") {\n return [];\n }\n let nodeElement = node;\n return this.targetsUsedByThisController(nodeElement.getAttribute(this.scopedTargetSelector) || nodeElement.getAttribute(this.targetSelector));\n }\n targetsUsedByThisController(targetStr) {\n targetStr = targetStr || \"\";\n let targetsToCheck = this.stripIdentifierPrefix(targetStr).split(\" \");\n return this.targets.filter((n => targetsToCheck.indexOf(n) !== -1));\n }\n stripIdentifierPrefix(target) {\n return target.replace(new RegExp(this.identifierPrefix, \"g\"), \"\");\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useTargetMutation = (composableController, options = {}) => {\n const controller = composableController;\n const observer = new UseTargetMutation(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass TargetMutationComposableController extends Controller {}\n\nclass TargetMutationController extends TargetMutationComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useTargetMutation(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nclass ThrottleController extends Controller {}\n\nThrottleController.throttles = [];\n\nconst defaultWait = 200;\n\nfunction throttle(func, wait = defaultWait) {\n let inThrottle;\n return function() {\n const args = arguments;\n const context = this;\n if (!inThrottle) {\n inThrottle = true;\n func.apply(context, args);\n setTimeout((() => inThrottle = false), wait);\n }\n };\n}\n\nconst useThrottle = (composableController, options = {}) => {\n var _a;\n const controller = composableController;\n const constructor = controller.constructor;\n (_a = constructor.throttles) === null || _a === void 0 ? void 0 : _a.forEach((func => {\n if (typeof func === \"string\") {\n controller[func] = throttle(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n }\n if (typeof func === \"object\") {\n const {name: name, wait: wait} = func;\n if (!name) return;\n controller[name] = throttle(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n }\n }));\n};\n\nconst alpineNames = {\n enterFromClass: \"enter\",\n enterActiveClass: \"enterStart\",\n enterToClass: \"enterEnd\",\n leaveFromClass: \"leave\",\n leaveActiveClass: \"leaveStart\",\n leaveToClass: \"leaveEnd\"\n};\n\nconst defaultOptions = {\n transitioned: false,\n hiddenClass: \"hidden\",\n preserveOriginalClass: true,\n removeToClasses: true\n};\n\nconst useTransition = (composableController, options = {}) => {\n var _a, _b, _c;\n const controller = composableController;\n const targetName = controller.element.dataset.transitionTarget;\n let targetFromAttribute;\n if (targetName) {\n targetFromAttribute = controller[`${targetName}Target`];\n }\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || targetFromAttribute || controller.element;\n if (!(targetElement instanceof HTMLElement || targetElement instanceof SVGElement)) return;\n const dataset = targetElement.dataset;\n const leaveAfter = parseInt(dataset.leaveAfter || \"\") || options.leaveAfter || 0;\n const {transitioned: transitioned, hiddenClass: hiddenClass, preserveOriginalClass: preserveOriginalClass, removeToClasses: removeToClasses} = Object.assign({}, defaultOptions, options);\n const controllerEnter = (_a = controller.enter) === null || _a === void 0 ? void 0 : _a.bind(controller);\n const controllerLeave = (_b = controller.leave) === null || _b === void 0 ? void 0 : _b.bind(controller);\n const controllerToggleTransition = (_c = controller.toggleTransition) === null || _c === void 0 ? void 0 : _c.bind(controller);\n async function enter(event) {\n if (controller.transitioned) return;\n controller.transitioned = true;\n controllerEnter && controllerEnter(event);\n const enterFromClasses = getAttribute(\"enterFrom\", options, dataset);\n const enterActiveClasses = getAttribute(\"enterActive\", options, dataset);\n const enterToClasses = getAttribute(\"enterTo\", options, dataset);\n const leaveToClasses = getAttribute(\"leaveTo\", options, dataset);\n if (!!hiddenClass) {\n targetElement.classList.remove(hiddenClass);\n }\n if (!removeToClasses) {\n removeClasses(targetElement, leaveToClasses);\n }\n await transition(targetElement, enterFromClasses, enterActiveClasses, enterToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n if (leaveAfter > 0) {\n setTimeout((() => {\n leave(event);\n }), leaveAfter);\n }\n }\n async function leave(event) {\n if (!controller.transitioned) return;\n controller.transitioned = false;\n controllerLeave && controllerLeave(event);\n const leaveFromClasses = getAttribute(\"leaveFrom\", options, dataset);\n const leaveActiveClasses = getAttribute(\"leaveActive\", options, dataset);\n const leaveToClasses = getAttribute(\"leaveTo\", options, dataset);\n const enterToClasses = getAttribute(\"enterTo\", options, dataset);\n if (!removeToClasses) {\n removeClasses(targetElement, enterToClasses);\n }\n await transition(targetElement, leaveFromClasses, leaveActiveClasses, leaveToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n if (!!hiddenClass) {\n targetElement.classList.add(hiddenClass);\n }\n }\n function toggleTransition(event) {\n controllerToggleTransition && controllerToggleTransition(event);\n if (controller.transitioned) {\n leave();\n } else {\n enter();\n }\n }\n async function transition(element, initialClasses, activeClasses, endClasses, hiddenClass, preserveOriginalClass, removeEndClasses) {\n const stashedClasses = [];\n if (preserveOriginalClass) {\n initialClasses.forEach((cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls)));\n activeClasses.forEach((cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls)));\n endClasses.forEach((cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls)));\n }\n addClasses(element, initialClasses);\n removeClasses(element, stashedClasses);\n addClasses(element, activeClasses);\n await nextAnimationFrame();\n removeClasses(element, initialClasses);\n addClasses(element, endClasses);\n await afterTransition(element);\n removeClasses(element, activeClasses);\n if (removeEndClasses) {\n removeClasses(element, endClasses);\n }\n addClasses(element, stashedClasses);\n }\n function initialState() {\n controller.transitioned = transitioned;\n if (transitioned) {\n if (!!hiddenClass) {\n targetElement.classList.remove(hiddenClass);\n }\n enter();\n } else {\n if (!!hiddenClass) {\n targetElement.classList.add(hiddenClass);\n }\n leave();\n }\n }\n function addClasses(element, classes) {\n if (classes.length > 0) {\n element.classList.add(...classes);\n }\n }\n function removeClasses(element, classes) {\n if (classes.length > 0) {\n element.classList.remove(...classes);\n }\n }\n initialState();\n Object.assign(controller, {\n enter: enter,\n leave: leave,\n toggleTransition: toggleTransition\n });\n return [ enter, leave, toggleTransition ];\n};\n\nfunction getAttribute(name, options, dataset) {\n const datasetName = `transition${name[0].toUpperCase()}${name.substr(1)}`;\n const datasetAlpineName = alpineNames[name];\n const classes = options[name] || dataset[datasetName] || dataset[datasetAlpineName] || \" \";\n return isEmpty(classes) ? [] : classes.split(\" \");\n}\n\nasync function afterTransition(element) {\n return new Promise((resolve => {\n const duration = Number(getComputedStyle(element).transitionDuration.split(\",\")[0].replace(\"s\", \"\")) * 1e3;\n setTimeout((() => {\n resolve(duration);\n }), duration);\n }));\n}\n\nasync function nextAnimationFrame() {\n return new Promise((resolve => {\n requestAnimationFrame((() => {\n requestAnimationFrame(resolve);\n }));\n }));\n}\n\nfunction isEmpty(str) {\n return str.length === 0 || !str.trim();\n}\n\nclass TransitionComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.transitioned = false;\n }\n}\n\nclass TransitionController extends TransitionComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n useTransition(this, this.options);\n }));\n }\n}\n\nclass UseVisibility extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.controller.isVisible = !document.hidden;\n document.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n this.handleVisibilityChange();\n };\n this.unobserve = () => {\n document.removeEventListener(\"visibilitychange\", this.handleVisibilityChange);\n };\n this.becomesInvisible = event => {\n this.controller.isVisible = false;\n this.call(\"invisible\", event);\n this.log(\"invisible\", {\n isVisible: false\n });\n this.dispatch(\"invisible\", {\n event: event,\n isVisible: false\n });\n };\n this.becomesVisible = event => {\n this.controller.isVisible = true;\n this.call(\"visible\", event);\n this.log(\"visible\", {\n isVisible: true\n });\n this.dispatch(\"visible\", {\n event: event,\n isVisible: true\n });\n };\n this.handleVisibilityChange = event => {\n if (document.hidden) {\n this.becomesInvisible(event);\n } else {\n this.becomesVisible(event);\n }\n };\n this.controller = controller;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controllerDisconnect;\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useVisibility = (composableController, options = {}) => {\n const controller = composableController;\n const observer = new UseVisibility(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass VisibilityComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isVisible = false;\n }\n}\n\nclass VisibilityController extends VisibilityComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useVisibility(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nclass UseWindowFocus extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n if (document.hasFocus()) {\n this.becomesFocused();\n } else {\n this.becomesUnfocused();\n }\n this.interval = setInterval((() => {\n this.handleWindowFocusChange();\n }), this.intervalDuration);\n };\n this.unobserve = () => {\n clearInterval(this.interval);\n };\n this.becomesUnfocused = event => {\n this.controller.hasFocus = false;\n this.call(\"unfocus\", event);\n this.log(\"unfocus\", {\n hasFocus: false\n });\n this.dispatch(\"unfocus\", {\n event: event,\n hasFocus: false\n });\n };\n this.becomesFocused = event => {\n this.controller.hasFocus = true;\n this.call(\"focus\", event);\n this.log(\"focus\", {\n hasFocus: true\n });\n this.dispatch(\"focus\", {\n event: event,\n hasFocus: true\n });\n };\n this.handleWindowFocusChange = event => {\n if (document.hasFocus() && !this.controller.hasFocus) {\n this.becomesFocused(event);\n } else if (!document.hasFocus() && this.controller.hasFocus) {\n this.becomesUnfocused(event);\n }\n };\n this.controller = controller;\n this.intervalDuration = options.interval || 200;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controllerDisconnect;\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useWindowFocus = (composableController, options = {}) => {\n const controller = composableController;\n const observer = new UseWindowFocus(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass WindowFocusComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.hasFocus = false;\n }\n}\n\nclass WindowFocusController extends WindowFocusComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useWindowFocus(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst useWindowResize = composableController => {\n const controller = composableController;\n const callback = event => {\n const {innerWidth: innerWidth, innerHeight: innerHeight} = window;\n const payload = {\n height: innerHeight || Infinity,\n width: innerWidth || Infinity,\n event: event\n };\n method(controller, \"windowResize\").call(controller, payload);\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observe = () => {\n window.addEventListener(\"resize\", callback);\n callback();\n };\n const unobserve = () => {\n window.removeEventListener(\"resize\", callback);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass WindowResizeComposableController extends Controller {}\n\nclass WindowResizeController extends WindowResizeComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useWindowResize(this);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nfunction useHotkeys() {\n throw \"[stimulus-use] Notice: The import for `useHotkeys()` has been moved from `stimulus-use` to `stimulus-use/hotkeys`. \\nPlease change the import accordingly and add `hotkey-js` as a dependency to your project. \\n\\nFor more information see: https://stimulus-use.github.io/stimulus-use/#/use-hotkeys?id=importing-the-behavior\";\n}\n\nexport { ApplicationController, ClickOutsideController, HoverController, IdleController, IntersectionController, LazyLoadController, MutationController, ResizeController, TargetMutationController, TransitionController, UseHover, UseMutation, UseTargetMutation, UseVisibility, UseWindowFocus, VisibilityController, WindowFocusController, WindowResizeController, debounce, useApplication, useClickOutside, useDebounce, useDispatch, useHotkeys, useHover, useIdle, useIntersection, useLazyLoad, useMatchMedia, useMemo, useMeta, useMutation, useResize, useTargetMutation, useThrottle, useTransition, useVisibility, useWindowFocus, useWindowResize };\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { useTransition } from \"stimulus-use\";\nconst _Dropdown = class _Dropdown extends Controller {\n connect() {\n useTransition(this, {\n element: this.menuTarget\n });\n }\n toggle() {\n this.toggleTransition();\n }\n hide(event) {\n !this.element.contains(event.target) && !this.menuTarget.classList.contains(\"hidden\") && this.leave();\n }\n};\n_Dropdown.targets = [\"menu\"];\nlet Dropdown = _Dropdown;\nexport {\n Dropdown as default\n};\n", "window.BeerMenus = window.BeerMenus || {};\nwindow.BeerMenus.controllers = window.BeerMenus.controllers || {};\n", "/**\n * @typedef { import(\"@amplitude/analytics-types\").BrowserClient } BrowserClient\n * @typedef { typeof import(\"@amplitude/analytics-browser\").Identify } Identify\n */\n\nBeerMenus.Analytics = class Analytics extends HTMLElement {\n /**\n * @type {BrowserClient}\n * @private\n */\n static _BrowserClient = null\n\n /**\n * @type {Identify}\n * @private\n */\n static _UserIdentify = null\n\n /**\n * @type {Array}\n * @private\n */\n static _loadPromises = []\n\n /**\n * Return a promise that will resolve when Amplitude is loaded\n * \n * @returns {Promise}\n */\n static get clientLoading() {\n if (this._BrowserClient) return Promise.resolve()\n\n return new Promise(resolve => this._loadPromises.push(resolve))\n }\n\n /**\n * Load in the Amplitude client\n * (requires `amplitude-key` meta tag to be added to ``)\n */\n static async importAmplitude() {\n if (this._BrowserClient || this._loadPromises.length > 0) return\n\n const { createInstance, Identify } = await import(\"@amplitude/analytics-browser\")\n\n const client = createInstance()\n const amplitudeKey = document.head.querySelector(\"meta[name='amplitude-key']\").content\n client.init(amplitudeKey)\n this._BrowserClient = client\n this._UserIdentify = Identify\n\n this._loadPromises.forEach(promise => promise())\n this._loadPromises = []\n }\n\n /**\n * Provides an instance of the Amplitude client, loading it if necessary\n * \n * @returns {BrowserClient}\n */\n static async client() {\n if (!this._BrowserClient) {\n this.importAmplitude()\n await this.clientLoading\n }\n\n return this._BrowserClient\n }\n\n /**\n * Send tracking information to Amplitude\n * \n * @param name {string}\n * @param options {Record}\n */\n static async track(name, options) {\n const client = await this.client()\n client.track(name, options)\n }\n\n /**\n * Identify the current user with properties\n * \n * @param options {Record} \n */\n static async identify(options) {\n const client = await this.client()\n client.setUserId(options.id)\n const identity = new this._UserIdentify()\n Object.entries(options).forEach(([key, value]) => {\n if (key != \"id\") {\n identity.set(key, value)\n }\n })\n client.identify(identity)\n }\n\n connectedCallback() {\n let options\n if (this.hasAttribute(\"options\")) options = JSON.parse(this.getAttribute(\"options\"))\n\n if (this.hasAttribute(\"track\")) {\n this.constructor.track(this.getAttribute(\"track\"), options)\n } else if (this.hasAttribute(\"identify\")) {\n this.constructor.identify(options)\n }\n }\n}\n\ncustomElements.define(\"bmu-analytics\", BeerMenus.Analytics)\n"], "mappings": "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", "names": ["accordion_controller_exports", "__export", "accordion_controller_default", "init_accordion_controller", "__esmMin", "init_stimulus", "Controller", "event", "index", "section", "active", "accordion", "el", "ui", "expandedIndex", "collapsedIndex", "header", "scrollTop", "offset", "__publicField", "accordion2_controller_exports", "__export", "accordion2_controller_default", "init_accordion2_controller", "__esmMin", "init_stimulus", "Controller", "event", "details", "admin_beer_controller_exports", "__export", "admin_beer_controller_default", "init_admin_beer_controller", "__esmMin", "init_stimulus", "Controller", "event", "type", "select", "disabled", "target", "producerIDInput", "data", "status", "xhr", "html", "duplicateIDsJSON", "id", "form", "inputs", "i", "__publicField", "admin_merge_controller_exports", "__export", "admin_merge_controller_default", "init_admin_merge_controller", "__esmMin", "init_stimulus", "Controller", "event", "keeper", "__publicField", "require_aria_autocomplete_min", "__commonJSMin", "exports", "module", "t", "e", "s", "i", "n", "r", "o", "l", "a", "c", "h", "u", "F", "D", "p", "d", "f", "m", "v", "b", "y", "g", "A", "S", "w", "E", "x", "T", "O", "C", "I", "_", "L", "N", "P", "k", "aria_autocomplete_controller_exports", "__export", "aria_autocomplete_controller_default", "import_aria_autocomplete_min", "init_aria_autocomplete_controller", "__esmMin", "init_stimulus", "Controller", "AriaAutocomplete", "itemData", "selectedItems", "__publicField", "auto_save_controller_exports", "__export", "auto_save_controller_default", "init_auto_save_controller", "__esmMin", "init_stimulus", "Controller", "event", "element", "data", "status", "xhr", "__publicField", "auto_textfield_height_controller_exports", "__export", "auto_textfield_height_controller_default", "init_auto_textfield_height_controller", "__esmMin", "init_stimulus", "Controller", "rows", "__publicField", "autocomplete_controller_exports", "__export", "autocomplete_controller_default", "init_autocomplete_controller", "__esmMin", "init_stimulus", "Controller", "libraries", "obj", "hit", "event", "suggestion", "dataset", "context", "__publicField", "availability_promo_controller_exports", "__export", "availability_promo_controller_default", "init_availability_promo_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "beacon_controller_exports", "__export", "beacon_controller_default", "init_beacon_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "product_autocomplete_controller_exports", "__export", "product_autocomplete_controller_default", "init_product_autocomplete_controller", "__esmMin", "init_stimulus", "Controller", "event", "tab", "beer_autocomplete_controller_exports", "__export", "beer_autocomplete_controller_default", "init_beer_autocomplete_controller", "__esmMin", "init_product_autocomplete_controller", "product_autocomplete_controller_default", "libraries", "filter", "id", "name", "style_id", "abv", "data", "event", "jqXHR", "status", "error", "listener", "target", "revertTarget", "showMethod", "query", "callback", "isBeerIndex", "suggestions", "obj", "hit", "tab", "beerID", "fullDescription", "inputEvent", "val", "matchedSuggestion", "suggestion", "__publicField", "beer_info_controller_exports", "__export", "beer_info_controller_default", "init_beer_info_controller", "__esmMin", "init_stimulus", "Controller", "text", "el", "event", "modal", "textarea", "__publicField", "beer_suggestions_controller_exports", "__export", "beer_suggestions_controller_default", "init_beer_suggestions_controller", "__esmMin", "init_stimulus", "Controller", "libraries", "query", "controller", "productType", "searchQuery", "result", "t", "event", "id", "name", "hit", "suggestion", "anchor", "meta", "hits", "__publicField", "beers_added_modal_controller_exports", "__export", "beers_added_modal_controller_default", "init_beers_added_modal_controller", "__esmMin", "init_stimulus", "Controller", "event", "block_modal_controller_exports", "__export", "block_modal_controller_default", "init_block_modal_controller", "__esmMin", "init_stimulus", "Controller", "isLoading", "isHidden", "section", "el", "profileId", "region", "position", "src", "partial", "iframe", "newContent", "event", "form", "res", "json", "formEl", "patchMethod", "err", "id", "url", "authenticityToken", "__publicField", "brewery_autocomplete_controller_exports", "__export", "brewery_autocomplete_controller_default", "init_brewery_autocomplete_controller", "__esmMin", "init_stimulus", "Controller", "libraries", "producer", "id", "name", "eventOrShowMessage", "showMessage", "event", "data", "html", "query", "callback", "suggestions", "obj", "hit", "val", "matchedSuggestion", "suggestion", "__publicField", "brewery_multi_select_controller_exports", "__export", "brewery_multi_select_controller_default", "init_brewery_multi_select_controller", "__esmMin", "init_stimulus", "Controller", "libraries", "input", "brewery", "option", "params", "success", "failure", "queryParams", "query", "data", "hit", "markup", "result", "__publicField", "bulk_move_controller_exports", "__export", "bulk_move_controller_default", "init_bulk_move_controller", "__esmMin", "init_stimulus", "Controller", "entries", "onScreen", "scrolledPast", "hide", "event", "servingIDs", "params", "html", "section", "checkbox", "__publicField", "calculator_controller_exports", "__export", "calculator_controller_default", "init_calculator_controller", "__esmMin", "init_stimulus", "Controller", "event", "output", "el", "index", "views", "roi", "__publicField", "calendly_controller_exports", "__export", "calendly_controller_default", "init_calendly_controller", "__esmMin", "init_stimulus", "Controller", "tag", "script", "charts_controller_exports", "__export", "charts_controller_default", "init_charts_controller", "__esmMin", "init_stimulus", "Controller", "checkbox_counter_controller_exports", "__export", "checkbox_counter_controller_default", "init_checkbox_counter_controller", "__esmMin", "init_stimulus", "Controller", "primaryCount", "cb", "secondaryCount", "__publicField", "checkbox_submit_controller_exports", "__export", "checkbox_submit_controller_default", "init_checkbox_submit_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "checkbox_toggle_controller_exports", "__export", "checkbox_toggle_controller_default", "init_checkbox_toggle_controller", "__esmMin", "init_stimulus", "Controller", "event", "target", "__publicField", "checklist_accordion_controller_exports", "__export", "checklist_accordion_controller_default", "init_checklist_accordion_controller", "__esmMin", "init_stimulus", "Controller", "event", "ui", "expandedIdentifier", "checklists_controller_exports", "__export", "checklists_controller_default", "init_checklists_controller", "__esmMin", "init_stimulus", "Controller", "visible", "__publicField", "choose_saved_card_controller_exports", "__export", "choose_saved_card_controller_default", "init_choose_saved_card_controller", "__esmMin", "init_stimulus", "Controller", "event", "target", "__publicField", "clipboard_controller_exports", "__export", "clipboard_controller_default", "init_clipboard_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "closeable_controller_exports", "__export", "closeable_controller_default", "init_closeable_controller", "__esmMin", "init_stimulus", "Controller", "animation", "codemirror_controller_exports", "__export", "codemirror_controller_default", "init_codemirror_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "collapsible_controller_exports", "__export", "collapsible_controller_default", "init_collapsible_controller", "__esmMin", "init_stimulus", "Controller", "event", "href", "hash", "element", "expanded", "data", "__publicField", "collapsible_simple_controller_exports", "__export", "collapsible_simple_controller_default", "init_collapsible_simple_controller", "__esmMin", "init_stimulus", "Controller", "__publicField", "condition_ids_controller_exports", "__export", "condition_ids_controller_default", "init_condition_ids_controller", "__esmMin", "init_stimulus", "Controller", "selectedItems", "target", "name", "index", "__publicField", "conditional_input_controller_exports", "__export", "conditional_input_controller_default", "init_conditional_input_controller", "__esmMin", "init_stimulus", "Controller", "event", "sourceID", "t", "__publicField", "custom_product_autocomplete_controller_exports", "__export", "custom_product_autocomplete_controller_default", "init_custom_product_autocomplete_controller", "__esmMin", "init_product_autocomplete_controller", "product_autocomplete_controller_default", "libraries", "bar", "product", "event", "data", "id", "query", "callback", "hit", "val", "suggestion", "__publicField", "date_input_controller_exports", "__export", "date_input_controller_default", "init_date_input_controller", "__esmMin", "init_stimulus", "Controller", "libraries", "options", "__publicField", "digital_display_controller_exports", "__export", "digital_display_controller_default", "init_digital_display_controller", "__esmMin", "init_stimulus", "Controller", "ActionCable", "data", "require_ev_emitter", "__commonJSMin", "exports", "module", "global", "factory", "EvEmitter", "proto", "eventName", "listener", "events", "listeners", "onceEvents", "onceListeners", "index", "args", "i", "isOnce", "require_get_size", "__commonJSMin", "exports", "module", "window", "factory", "getStyleSize", "value", "num", "isValid", "noop", "logError", "message", "measurements", "measurementsLength", "getZeroSize", "size", "i", "measurement", "getStyle", "elem", "style", "isSetup", "isBoxSizeOuter", "setup", "div", "body", "getSize", "isBorderBox", "paddingWidth", "paddingHeight", "marginWidth", "marginHeight", "borderWidth", "borderHeight", "isBorderBoxSizeOuter", "styleWidth", "styleHeight", "require_matches_selector", "__commonJSMin", "exports", "module", "window", "factory", "matchesMethod", "ElemProto", "prefixes", "i", "prefix", "method", "elem", "selector", "require_utils", "__commonJSMin", "exports", "module", "window", "factory", "matchesSelector", "utils", "a", "b", "prop", "num", "div", "arraySlice", "obj", "isArrayLike", "ary", "index", "elem", "selector", "event", "method", "elems", "ffElems", "childElems", "i", "_class", "methodName", "threshold", "timeoutName", "timeout", "args", "_this", "callback", "readyState", "str", "match", "$1", "$2", "console", "WidgetClass", "namespace", "dashedNamespace", "dataAttr", "dataAttrElems", "jsDashElems", "dataOptionsAttr", "jQuery", "attr", "options", "error", "instance", "require_item", "__commonJSMin", "exports", "module", "window", "factory", "EvEmitter", "getSize", "isEmptyObj", "obj", "prop", "docElemStyle", "transitionProperty", "transformProperty", "transitionEndEvent", "vendorProperties", "Item", "element", "layout", "proto", "event", "method", "style", "elemStyle", "supportedProp", "isOriginLeft", "isOriginTop", "xValue", "yValue", "x", "y", "layoutSize", "xPadding", "xProperty", "xResetProperty", "yPadding", "yProperty", "yResetProperty", "isHorizontal", "curX", "curY", "didNotMove", "transX", "transY", "transitionStyle", "args", "_transition", "h", "toDashedAll", "str", "$1", "transitionProps", "duration", "dashedVendorProperties", "propertyName", "onTransitionEnd", "cleanStyle", "cleanTransitionStyle", "delay", "options", "transitionEndProperty", "styleProperty", "optionStyle", "require_outlayer", "__commonJSMin", "exports", "module", "window", "factory", "EvEmitter", "getSize", "utils", "Item", "console", "jQuery", "noop", "GUID", "instances", "Outlayer", "element", "options", "queryElement", "id", "isInitLayout", "proto", "opts", "option", "oldOption", "canBindResize", "elems", "itemElems", "items", "i", "elem", "item", "layoutInstant", "isInstant", "measurement", "size", "queue", "position", "obj", "stagger", "getMilliseconds", "x", "y", "isResizingContainer", "measure", "isWidth", "elemSize", "eventName", "_this", "onComplete", "count", "doneCount", "tick", "type", "event", "args", "emitArgs", "$event", "boundingRect", "thisRect", "offset", "hasSizes", "previousItems", "removeItems", "style", "namespace", "Layout", "subclass", "Parent", "SubClass", "msUnits", "time", "matches", "num", "unit", "mult", "require_masonry", "__commonJSMin", "exports", "module", "window", "factory", "Outlayer", "getSize", "Masonry", "proto", "i", "firstItem", "firstItemElem", "columnWidth", "containerWidth", "cols", "excess", "mathMethod", "isFitWidth", "container", "size", "item", "remainder", "colSpan", "colPosMethod", "colPosition", "position", "setHeight", "setMax", "colGroup", "minimumY", "groupCount", "col", "groupColYs", "isOver", "hasSize", "stamp", "stampSize", "offset", "isOriginLeft", "firstX", "lastX", "firstCol", "lastCol", "isOriginTop", "stampMaxY", "unusedCols", "previousWidth", "require_imagesloaded", "__commonJSMin", "exports", "module", "window", "factory", "EvEmitter", "$", "console", "extend", "a", "b", "prop", "arraySlice", "makeArray", "obj", "isArrayLike", "ImagesLoaded", "elem", "options", "onAlways", "queryElem", "nodeType", "elementNodeTypes", "childImgs", "i", "img", "children", "child", "style", "reURL", "matches", "url", "loadingImage", "LoadingImage", "background", "Background", "_this", "onProgress", "image", "message", "eventName", "jqMethod", "isComplete", "isLoaded", "event", "method", "element", "jQuery", "callback", "instance", "filter_templates_controller_exports", "__export", "filter_templates_controller_default", "init_filter_templates_controller", "__esmMin", "init_stimulus", "Controller", "Masonry", "imagesLoaded", "event", "activeThemes", "activeSettings", "colorSetting", "el", "i", "filterValues", "activeTheme", "r", "activeSetting", "activeColor", "__publicField", "fonts_controller_exports", "__export", "fonts_controller_default", "init_fonts_controller", "__esmMin", "init_stimulus", "Controller", "data", "container", "state", "event", "google_autocomplete_controller_exports", "__export", "google_autocomplete_controller_default", "init_google_autocomplete_controller", "__esmMin", "init_stimulus", "Controller", "event", "emptyDiv", "sessionToken", "e", "query", "callback", "options", "predictions", "status", "hit", "template", "info", "footer", "data", "request", "place", "__publicField", "hamburger_menu_controller_exports", "__export", "hamburger_menu_controller_default", "init_hamburger_menu_controller", "__esmMin", "init_stimulus", "Controller", "link", "__publicField", "Debouncer", "init_debouncer", "__esmMin", "fn", "frame", "params", "hiding_header_controller_exports", "__export", "hiding_header_controller_default", "init_hiding_header_controller", "__esmMin", "init_stimulus", "init_debouncer", "Controller", "Debouncer", "scrollTop", "honeybadger_controller_exports", "__export", "honeybadger_controller_default", "init_honeybadger_controller", "__esmMin", "init_stimulus", "Controller", "Honeybadger", "image_background_remover_controller_exports", "__export", "image_background_remover_controller_default", "init_image_background_remover_controller", "__esmMin", "init_stimulus", "Controller", "form", "res", "json", "iframe", "err", "load_styles_default", "css", "blob", "link", "init_load_styles", "__esmMin", "image_editor_controller_exports", "__export", "image_editor_controller_default", "init_image_editor_controller", "__esmMin", "init_stimulus", "init_load_styles", "Controller", "pintura", "pinturaStyles", "load_styles_default", "event", "__spreadProps", "__spreadValues", "locale", "result", "form", "res", "json", "iframe", "err", "__publicField", "location_autocomplete_controller_exports", "__export", "location_autocomplete_controller_default", "init_location_autocomplete_controller", "__esmMin", "init_stimulus", "Controller", "resolve", "element", "event", "data", "done", "response", "query", "callback", "error", "results", "result", "hit", "obj", "message", "__publicField", "masonry_grid_controller_exports", "__export", "masonry_grid_controller_default", "init_masonry_grid_controller", "__esmMin", "init_stimulus", "Controller", "Masonry", "imagesLoaded", "container", "__publicField", "menu_controller_exports", "__export", "menu_controller_default", "init_menu_controller", "__esmMin", "init_stimulus", "Controller", "html", "target", "__publicField", "menu_search_controller_exports", "__export", "menu_search_controller_default", "init_menu_search_controller", "__esmMin", "init_stimulus", "Controller", "promises", "algoliasearch", "filters", "id", "event", "offset", "suggestion", "query", "callback", "suggestions", "servings", "hit", "beerTemplate", "meta", "serving", "servingTemplate", "editButton", "e", "beerID", "__publicField", "menu_section_controller_exports", "__export", "menu_section_controller_default", "init_menu_section_controller", "__esmMin", "init_stimulus", "Controller", "event", "menu_sections_controller_exports", "__export", "menu_sections_controller_default", "init_menu_sections_controller", "__esmMin", "init_stimulus", "Controller", "event", "selectedOption", "servingType", "servingTypeInt", "sectionID", "servingTypes", "selectedMenuSectionID", "__publicField", "modular_controller_exports", "__export", "MAX_ANNUAL_PRICE", "MAX_ANNUAL_SAVINGS", "MAX_MONTHLY_PRICE", "modular_controller_default", "init_modular_controller", "__esmMin", "init_stimulus", "Controller", "event", "atAnnualMaxPrice", "checkbox", "planNames", "monthlyPlans", "annualPlans", "monthlyPrice", "annualPrice", "annualSavings", "selectedPlans", "plan", "shouldSelectMonthly", "shouldSelectAnnual", "showModal", "__publicField", "multi_select_controller_exports", "__export", "multi_select_controller_default", "init_multi_select_controller", "__esmMin", "init_stimulus", "Controller", "containerClass", "dropdownClass", "__publicField", "order_search_controller_exports", "__export", "order_search_controller_default", "init_order_search_controller", "__esmMin", "init_stimulus", "Controller", "event", "orders_controller_exports", "__export", "orders_controller_default", "init_orders_controller", "__esmMin", "init_stimulus", "Controller", "event", "url", "pickupId", "pickup_locations_controller_exports", "__export", "pickup_locations_controller_default", "init_pickup_locations_controller", "__esmMin", "init_stimulus", "Controller", "target", "index", "hide", "event", "showedALocation", "__publicField", "place_lead_controller_exports", "__export", "place_lead_controller_default", "init_place_lead_controller", "__esmMin", "init_stimulus", "Controller", "event", "qualified", "response", "price_calculator_controller_exports", "__export", "price_calculator_controller_default", "init_price_calculator_controller", "__esmMin", "init_stimulus", "Controller", "__publicField", "print_iframe_controller_exports", "__export", "print_iframe_controller_default", "init_print_iframe_controller", "__esmMin", "init_stimulus", "Controller", "__publicField", "print_menu_landing_page_controller_exports", "__export", "print_menu_landing_page_controller_default", "init_print_menu_landing_page_controller", "__esmMin", "init_stimulus", "Controller", "entries", "target", "position", "__publicField", "print_menus_controller_exports", "__export", "print_menus_controller_default", "init_print_menus_controller", "__esmMin", "init_stimulus", "Controller", "t", "event", "checked", "element", "data", "status", "xhr", "__publicField", "print_preview_controller_exports", "__export", "print_preview_controller_default", "init_print_preview_controller", "__esmMin", "init_stimulus", "Controller", "html", "event", "target", "embed", "__publicField", "product_type_controller_exports", "__export", "product_type_controller_default", "init_product_type_controller", "__esmMin", "init_stimulus", "Controller", "__publicField", "property_segments_controller_exports", "__export", "property_segments_controller_default", "init_property_segments_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "purchase_limit_controller_exports", "__export", "purchase_limit_controller_default", "init_purchase_limit_controller", "__esmMin", "init_stimulus", "Controller", "hide", "__publicField", "remote_file_form_controller_exports", "__export", "remote_file_form_controller_default", "init_remote_file_form_controller", "__esmMin", "init_stimulus", "Controller", "scroll_to_top_controller_exports", "__export", "scroll_to_top_controller_default", "init_scroll_to_top_controller", "__esmMin", "init_stimulus", "Controller", "segmented_field_controller_exports", "__export", "segmented_field_controller_default", "init_segmented_field_controller", "__esmMin", "init_stimulus", "Controller", "__publicField", "segments_controller_exports", "__export", "segments_controller_default", "init_segments_controller", "__esmMin", "init_stimulus", "Controller", "event", "index", "__publicField", "select_all_controller_exports", "__export", "select_all_controller_default", "init_select_all_controller", "__esmMin", "init_stimulus", "Controller", "event", "checked", "cb", "__publicField", "serving_controller_exports", "__export", "serving_controller_default", "init_serving_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "servings_controller_exports", "__export", "servings_controller_default", "init_servings_controller", "__esmMin", "init_stimulus", "Controller", "event", "html", "jqXHR", "status", "error", "lastIndex", "index", "serving_type_id", "serving_unit_id", "__publicField", "shoelace_controller_exports", "__export", "shoelace_controller_default", "FormDataEventPolyfill", "WorkingFormDataPolyfill", "init_shoelace_controller", "__esmMin", "init_stimulus", "formData", "form", "name", "value", "input", "entries", "index", "Controller", "picker", "show_more_controller_exports", "__export", "show_more_controller_default", "init_show_more_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "simple_beer_autocomplete_controller_exports", "__export", "simple_beer_autocomplete_controller_default", "init_simple_beer_autocomplete_controller", "__esmMin", "init_stimulus", "Controller", "libraries", "filters", "event", "data", "id", "query", "callback", "suggestions", "obj", "hit", "__publicField", "simple_modular_controller_exports", "__export", "simple_modular_controller_default", "init_simple_modular_controller", "__esmMin", "init_stimulus", "Controller", "event", "tools", "pricing", "t", "effectivePrice", "price", "buttonLabel", "tool1Plans", "tool2Plans", "x", "tvMenus", "__publicField", "smooth_scroller_controller_exports", "__export", "smooth_scroller_controller_default", "init_smooth_scroller_controller", "__esmMin", "init_stimulus", "Controller", "event", "anchor", "offset", "target", "targetPosition", "startPosition", "distance", "duration", "start", "animation", "currentTime", "timeElapsed", "progress", "easing", "__publicField", "sort_store_controller_exports", "__export", "sort_store_controller_default", "init_sort_store_controller", "__esmMin", "init_stimulus", "Controller", "values", "body", "__publicField", "sortable_controller_exports", "__export", "sortable_controller_default", "init_sortable_controller", "__esmMin", "init_stimulus", "Controller", "draggable", "skipSave", "_", "index", "event", "url", "data", "item", "__publicField", "sortablejs_controller_exports", "__export", "sortablejs_controller_default", "init_sortablejs_controller", "__esmMin", "init_stimulus", "Controller", "event", "item", "__publicField", "sticky_controller_exports", "__export", "sticky_controller_default", "init_sticky_controller", "__esmMin", "init_stimulus", "Controller", "streamlined_menu_controller_exports", "__export", "streamlined_menu_controller_default", "init_streamlined_menu_controller", "__esmMin", "init_stimulus", "Controller", "event", "el", "hash", "state", "__publicField", "stripe_controller_exports", "__export", "stripe_controller_default", "init_stripe_controller", "__esmMin", "init_stimulus", "Controller", "tag", "structured_data_controller_exports", "__export", "structured_data_controller_default", "init_structured_data_controller", "__esmMin", "init_stimulus", "Controller", "data", "tabs_controller_exports", "__export", "tabs_controller_default", "init_tabs_controller", "__esmMin", "init_stimulus", "Controller", "event", "changedEvent", "tab", "hash", "panel", "activeTab", "focusId", "smoothScrollerLink", "observer", "mutations", "mutation", "node", "__publicField", "tabs2_controller_exports", "__export", "tabs2_controller_default", "init_tabs2_controller", "__esmMin", "init_stimulus", "Controller", "setFocus", "tabToSelect", "panel", "tab", "keyHandled", "index", "__publicField", "textfit_controller_exports", "__export", "textfit_controller_default", "init_textfit_controller", "__esmMin", "init_stimulus", "Controller", "__publicField", "fontsTimer", "vertical", "lastItemPos", "columnsRect", "fontSize", "complete", "shown", "tracked_clicks_controller_exports", "__export", "tracked_clicks_controller_default", "init_tracked_clicks_controller", "__esmMin", "init_stimulus", "Controller", "event", "href", "trix_controller_exports", "__export", "trix_controller_default", "init_trix_controller", "__esmMin", "init_stimulus", "Controller", "fontId", "fontName", "element", "sizeId", "sizeName", "editor", "extraTools", "event", "data", "container", "selection", "options", "blankStart", "attrId", "_attrName", "fontFound", "fontSizeFound", "alignmentFound", "key", "__publicField", "turnstile_controller_exports", "__export", "turnstile_controller_default", "init_turnstile_controller", "__esmMin", "init_stimulus", "Controller", "callback", "visibleClasses", "token", "callbackIndex", "__publicField", "tv_preview_controller_exports", "__export", "tv_preview_controller_default", "init_tv_preview_controller", "__esmMin", "init_stimulus", "Controller", "el", "currentScreen", "event", "url", "screen", "__publicField", "user_preferences_controller_exports", "__export", "user_preferences_controller_default", "init_user_preferences_controller", "__esmMin", "init_stimulus", "Controller", "event", "checked", "customEvent", "__publicField", "video_modal_controller_exports", "__export", "video_modal_controller_default", "init_video_modal_controller", "__esmMin", "init_stimulus", "Controller", "src", "origin", "event", "__publicField", "viewport_calculate_controller_exports", "__export", "viewport_calculate_controller_default", "init_viewport_calculate_controller", "__esmMin", "init_stimulus", "Controller", "vh", "viewport_entrance_toggle_controller_exports", "__export", "viewport_entrance_toggle_controller_default", "init_viewport_entrance_toggle_controller", "__esmMin", "init_stimulus", "Controller", "entries", "entry", "visible_anchor_controller_exports", "__export", "visible_anchor_controller_default", "init_visible_anchor_controller", "__esmMin", "init_stimulus", "Controller", "event", "anchor", "offset", "__publicField", "visible_controller_exports", "__export", "visible_controller_default", "init_visible_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "visible_from_radio_controller_exports", "__export", "visible_from_radio_controller_default", "init_visible_from_radio_controller", "__esmMin", "init_stimulus", "Controller", "event", "__publicField", "web_menu_preview_sizes_controller_exports", "__export", "web_menu_preview_sizes_controller_default", "init_web_menu_preview_sizes_controller", "__esmMin", "init_stimulus", "Controller", "event", "previewSize", "menuPreview", "modules", "__default", "init__", "__esmMin", "init_accordion_controller", "init_accordion2_controller", "init_admin_beer_controller", "init_admin_merge_controller", "init_aria_autocomplete_controller", "init_auto_save_controller", "init_auto_textfield_height_controller", "init_autocomplete_controller", "init_availability_promo_controller", "init_beacon_controller", "init_beer_autocomplete_controller", "init_beer_info_controller", "init_beer_suggestions_controller", "init_beers_added_modal_controller", "init_block_modal_controller", "init_brewery_autocomplete_controller", "init_brewery_multi_select_controller", "init_bulk_move_controller", "init_calculator_controller", "init_calendly_controller", "init_charts_controller", "init_checkbox_counter_controller", "init_checkbox_submit_controller", "init_checkbox_toggle_controller", "init_checklist_accordion_controller", "init_checklists_controller", "init_choose_saved_card_controller", "init_clipboard_controller", "init_closeable_controller", "init_codemirror_controller", "init_collapsible_controller", "init_collapsible_simple_controller", "init_condition_ids_controller", "init_conditional_input_controller", "init_custom_product_autocomplete_controller", "init_date_input_controller", "init_digital_display_controller", "init_filter_templates_controller", "init_fonts_controller", "init_google_autocomplete_controller", "init_hamburger_menu_controller", "init_hiding_header_controller", "init_honeybadger_controller", "init_image_background_remover_controller", "init_image_editor_controller", "init_location_autocomplete_controller", "init_masonry_grid_controller", "init_menu_controller", "init_menu_search_controller", "init_menu_section_controller", "init_menu_sections_controller", "init_modular_controller", "init_multi_select_controller", "init_order_search_controller", "init_orders_controller", "init_pickup_locations_controller", "init_place_lead_controller", "init_price_calculator_controller", "init_print_iframe_controller", "init_print_menu_landing_page_controller", "init_print_menus_controller", "init_print_preview_controller", "init_product_autocomplete_controller", "init_product_type_controller", "init_property_segments_controller", "init_purchase_limit_controller", "init_region_preview_controller", "init_remote_file_form_controller", "init_scroll_to_top_controller", "init_segmented_field_controller", "init_segments_controller", "init_select_all_controller", "init_serving_controller", "init_servings_controller", "init_shoelace_controller", "init_show_more_controller", "init_simple_beer_autocomplete_controller", "init_simple_modular_controller", "init_smooth_scroller_controller", "init_sort_store_controller", "init_sortable_controller", "init_sortablejs_controller", "init_sticky_controller", "init_streamlined_menu_controller", "init_stripe_controller", "init_structured_data_controller", "init_tabs_controller", "init_tabs2_controller", "init_textfit_controller", "init_tracked_clicks_controller", "init_trix_controller", "init_turnstile_controller", "init_tv_preview_controller", "init_user_preferences_controller", "init_video_modal_controller", "init_viewport_calculate_controller", "init_viewport_entrance_toggle_controller", "init_visible_anchor_controller", "init_visible_controller", "init_visible_from_radio_controller", "init_web_menu_preview_sizes_controller", "accordion_controller_exports", "accordion2_controller_exports", "admin_beer_controller_exports", "admin_merge_controller_exports", "aria_autocomplete_controller_exports", "auto_save_controller_exports", "auto_textfield_height_controller_exports", "autocomplete_controller_exports", "availability_promo_controller_exports", "beacon_controller_exports", "beer_autocomplete_controller_exports", "beer_info_controller_exports", "beer_suggestions_controller_exports", "beers_added_modal_controller_exports", "block_modal_controller_exports", "brewery_autocomplete_controller_exports", "brewery_multi_select_controller_exports", "bulk_move_controller_exports", "calculator_controller_exports", "calendly_controller_exports", "charts_controller_exports", "checkbox_counter_controller_exports", "checkbox_submit_controller_exports", "checkbox_toggle_controller_exports", "checklist_accordion_controller_exports", "checklists_controller_exports", "choose_saved_card_controller_exports", "clipboard_controller_exports", "closeable_controller_exports", "codemirror_controller_exports", "collapsible_controller_exports", "collapsible_simple_controller_exports", "condition_ids_controller_exports", "conditional_input_controller_exports", "custom_product_autocomplete_controller_exports", "date_input_controller_exports", "digital_display_controller_exports", "filter_templates_controller_exports", "fonts_controller_exports", "google_autocomplete_controller_exports", "hamburger_menu_controller_exports", "hiding_header_controller_exports", "honeybadger_controller_exports", "image_background_remover_controller_exports", "image_editor_controller_exports", "location_autocomplete_controller_exports", "masonry_grid_controller_exports", "menu_controller_exports", "menu_search_controller_exports", "menu_section_controller_exports", "menu_sections_controller_exports", "modular_controller_exports", "multi_select_controller_exports", "order_search_controller_exports", "orders_controller_exports", "pickup_locations_controller_exports", "place_lead_controller_exports", "price_calculator_controller_exports", "print_iframe_controller_exports", "print_menu_landing_page_controller_exports", "print_menus_controller_exports", "print_preview_controller_exports", "product_autocomplete_controller_exports", "product_type_controller_exports", "property_segments_controller_exports", "purchase_limit_controller_exports", "region_preview_controller_exports", "remote_file_form_controller_exports", "scroll_to_top_controller_exports", "segmented_field_controller_exports", "segments_controller_exports", "select_all_controller_exports", "serving_controller_exports", "servings_controller_exports", "shoelace_controller_exports", "show_more_controller_exports", "simple_beer_autocomplete_controller_exports", "simple_modular_controller_exports", "smooth_scroller_controller_exports", "sort_store_controller_exports", "sortable_controller_exports", "sortablejs_controller_exports", "sticky_controller_exports", "streamlined_menu_controller_exports", "stripe_controller_exports", "structured_data_controller_exports", "tabs_controller_exports", "tabs2_controller_exports", "textfit_controller_exports", "tracked_clicks_controller_exports", "trix_controller_exports", "turnstile_controller_exports", "tv_preview_controller_exports", "user_preferences_controller_exports", "video_modal_controller_exports", "viewport_calculate_controller_exports", "viewport_entrance_toggle_controller_exports", "visible_anchor_controller_exports", "visible_controller_exports", "visible_from_radio_controller_exports", "web_menu_preview_sizes_controller_exports", "_Dialog", "Dialog", "init_stimulus_dialog", "__esmMin", "init_stimulus", "Controller", "animation", "event", "getAttribute", "name", "options", "dataset", "datasetName", "datasetAlpineName", "alpineNames", "classes", "isEmpty", "afterTransition", "element", "resolve", "duration", "nextAnimationFrame", "str", "DebounceController", "ThrottleController", "defaultOptions", "useTransition", "init_dist", "__esmMin", "init_stimulus", "Controller", "composableController", "_a", "_b", "_c", "controller", "targetName", "targetFromAttribute", "targetElement", "leaveAfter", "transitioned", "hiddenClass", "preserveOriginalClass", "removeToClasses", "controllerEnter", "controllerLeave", "controllerToggleTransition", "enter", "event", "enterFromClasses", "enterActiveClasses", "enterToClasses", "leaveToClasses", "removeClasses", "transition", "leave", "leaveFromClasses", "leaveActiveClasses", "toggleTransition", "initialClasses", "activeClasses", "endClasses", "removeEndClasses", "stashedClasses", "cls", "addClasses", "initialState", "_Dropdown", "Dropdown", "init_stimulus_dropdown", "__esmMin", "init_stimulus", "init_dist", "Controller", "useTransition", "event", "require_beermenus", "__commonJSMin", "require_analytics", "__commonJSMin", "_a", "resolve", "createInstance", "Identify", "client", "amplitudeKey", "promise", "name", "options", "identity", "key", "value", "__publicField"] }