{"version":3,"file":"main.js","sources":["../../../utils/fetch.js","../../../utils/template.js","../../../../modules/search/js/app.js","../../../utils/debounce.js","../../../../modules/newsletter-signup/js/urls.js","../../../utils/base-view.js","../../../../modules/newsletter-signup/js/views/newsletter-signup.js","../../../../modules/newsletter-signup/js/app.js","../../../store/common/main.js","../../../store/common/discounts-notification.js"],"sourcesContent":["function fetch_status(response) {\r\n\tif (response.ok) {\r\n\t\treturn Promise.resolve(response);\r\n\t} else {\r\n\t\treturn Promise.reject(response);\r\n\t}\r\n}\r\n\r\nfunction fetch_json(response) {\r\n\treturn response.json();\r\n}\r\n\r\nfunction fetch_text(response) {\r\n\treturn response.text();\r\n}\r\n\r\nfunction fetch_error_message(error) {\r\n\tlet message = 'Something went wrong...';\r\n\tlet sessionErr = false;\r\n\r\n\tif (error.includes('Message')) {\r\n\t\terror = JSON.parse(error);\r\n\t}\r\n\r\n\tif (error.Type && error.Type === 'SessionVerificationRequiredException') {\r\n\t\tsessionErr = true;\r\n\t\tif (window.verifySession) {\r\n\t\t\twindow.verifySession();\r\n\t\t}\r\n\t} else if (!sessionErr) {\r\n\t\tif (error && typeof error === 'object') {\r\n\t\t\tif (error.exception && error.exception.Message) {\r\n\t\t\t\tmessage = error.exception.Message;\r\n\t\t\t} else if (error.responseJSON && error.responseJSON.Message) {\r\n\t\t\t\tmessage = error.responseJSON.Message;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthrow new Error(message);\r\n\t}\r\n}\r\n\r\nfunction fetch_error(error, custom_error) {\r\n\tif (custom_error) {\r\n\t\treturn error.json();\r\n\t} else {\r\n\t\tif (error.name !== 'AbortError') {\r\n\t\t\tfetch_error_message(error);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction fetcher(url = '', options = {}) {\r\n\tconst data = options.is_text ? fetch_text : fetch_json;\r\n\r\n\treturn options.custom_error ?\r\n\t\tfetch(url, options).then(fetch_status).then(data) :\r\n\t\tfetch(url, options).then(fetch_status).then(data).catch(error => {\r\n\t\t\tif (typeof error === 'string') {\r\n\t\t\t\tthrow new Error(error);\r\n\t\t\t} else {\r\n\t\t\t\tif (error.text && typeof error.text === 'function') {\r\n\t\t\t\t\terror.text()\r\n\t\t\t\t\t\t.then(error_text => {\r\n\t\t\t\t\t\t\tfetch_error_message(error_text);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else if (options.signal) {\r\n\t\t\t\t\tif (!options.signal.aborted) {\r\n\t\t\t\t\t\tthrow new Error(error);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(error);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n}\r\n\r\nexport {fetch_status, fetch_json, fetch_text, fetch_error_message, fetch_error, fetcher};","// Do not use this on production.\r\n// All templates should be precompiled.\r\n\r\nimport {fetch_status, fetch_text, fetch_error, fetch_error_message} from './fetch.js';\r\n\r\nvar Template = {\r\n\tcompiled: {},\r\n\tload: function (template_url) {\r\n\t\tvar t = null;\r\n\t\tif (Object.prototype.hasOwnProperty.call(this.compiled, template_url)) {\r\n\t\t\tt = this.compiled[template_url];\r\n\t\t\treturn new Promise(function (resolve) {\r\n\t\t\t\treturn resolve(t);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\treturn fetch(template_url)\r\n\t\t\t\t.then(fetch_status)\r\n\t\t\t\t.then(fetch_text)\r\n\t\t\t\t.then(function (text) {\r\n\t\t\t\t\tt = this.compile(text, template_url);\r\n\t\t\t\t\treturn t;\r\n\t\t\t\t}.bind(this))\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\terror.text()\r\n\t\t\t\t\t\t.then(error_text => {\r\n\t\t\t\t\t\t\tfetch_error_message(error_text);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\t},\r\n\tcompile: function(template, template_name) {\r\n\t\tif (!this.compiled[template_name]) {\r\n\t\t\tthis.compiled[template_name] = Handlebars.compile(template);\r\n\t\t}\r\n\t\treturn this.compiled[template_name];\r\n\t},\r\n\trender: function(template, context) {\r\n\t\treturn template(context);\r\n\t}\r\n};\r\n\r\nexport default Template;","import Templates from '../../../scripts/utils/template.js';\r\nimport { debounce } from '../../../scripts/utils/debounce.js';\r\nimport { fetcher } from '../../../scripts/utils/fetch.js';\r\n\r\nvar Search = {\r\n\tform: document.querySelector('form.search'),\r\n\tinput: document.querySelector('form.search [name=\"query\"]' ),\r\n\tsearch_assist: document.createElement('div'),\r\n\tbtn_clear: document.querySelector('form.search .btn-search-clear'),\r\n\r\n\tdrop_class: 'search-suggest',\r\n\thide_class: 'd-none',\r\n\tdrop_no_searches_class: 'search-drop-single',\r\n\tdrop_no_contents_class: 'no-contents',\r\n\tdrop_no_result_class: 'no-result',\r\n\r\n\tsearch_count: 5,\r\n\r\n\tsearch_drop_template_url: '/my/api/2/templates?name=modules/search/app.html',\r\n\tsearch_drop_template: null,\r\n\r\n\tsearch_url: '/search',\r\n\tproducts_search_url: '/search/api/search/',\r\n\tsearch_query: '',\r\n\r\n\tinit: function(options) {\r\n\t\toptions = options || {};\r\n\r\n\t\tthis.search_count = this.search_count || options.search_count;\r\n\t\tthis.search_drop_template_url = options.search_drop_template_url || this.search_drop_template_url;\r\n\t\tthis.search_url = options.search_url || this.search_url;\r\n\t\tthis.products_search_url = options.products_search_url || this.products_search_url;\r\n\r\n\t\tthis.setElements(options);\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\tsetElements: function (options) {\r\n\t\tthis.form = options.form || this.form;\r\n\t\tthis.input = options.input || this.input;\r\n\t\tthis.btn_clear = options.btn_clear || this.btn_clear;\r\n\t\tthis.search_assist.id = 'searchAssist';\r\n\t\tthis.form.appendChild(this.search_assist);\r\n\r\n\t\tSearch.search_assist.classList.add(Search.hide_class);\r\n\t\tthis.input.setAttribute('autocomplete', 'off');\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\t\tthis.form.removeEventListener('submit', this.onFormSubmit);\r\n\t\tthis.form.addEventListener('submit', this.onFormSubmit);\r\n\t\tthis.input.addEventListener('keypress', event => {\r\n\t\t\tswitch (event.keyCode) {\r\n\t\t\tcase 13:\r\n\t\t\t\t// Enter\r\n\t\t\t\tthis.onFormSubmit(event);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcase 9:\r\n\t\t\t\t// Esc\r\n\t\t\t\tSearch.search_assist.classList.add(Search.hide_class);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.input.addEventListener('keyup', debounce(function(event) {\r\n\t\t\tswitch (event.keyCode) {\r\n\t\t\tcase 38:\r\n\t\t\tcase 40:\r\n\t\t\tcase 27:\r\n\t\t\tcase 9:\r\n\t\t\tcase 13:\r\n\t\t\tcase 17:\r\n\t\t\tcase 18:\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tevent.preventDefault();\r\n\t\t\tSearch.activate();\r\n\t\t\treturn false;\r\n\t\t}, 1000));\r\n\r\n\t\tthis.input.addEventListener('input', function() {\r\n\t\t\tSearch.activate();\r\n\t\t});\r\n\r\n\t\tthis.input.addEventListener('focus', this.inputOnFocusHandler);\r\n\t\tthis.input.addEventListener('blur', this.inputOnBlurHandler);\r\n\r\n\t\tif (this.btn_clear) {\r\n\t\t\tthis.btn_clear.addEventListener('click', this.clearQuery.bind(this));\r\n\t\t}\r\n\t},\r\n\r\n\tonFormSubmit: function(e) {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\tif (Search.input.value && Search.input.value.length > 0) {\r\n\t\t\twindow.location.href = Search.search_url + '/?query=' + encodeURIComponent(Search.input.value);\r\n\t\t}\r\n\t},\r\n\r\n\tinputOnFocusHandler: function() {\r\n\t\tSearch.form.classList.add('active');\r\n\t},\r\n\r\n\tinputOnBlurHandler: function() {\r\n\t\tSearch.form.classList.remove('active');\r\n\t},\r\n\r\n\tactivate: function() {\r\n\t\tvar query = Search.input.value;\r\n\r\n\t\tSearch.input.classList.add('progress');\r\n\r\n\t\tif (query.length > 2) {\r\n\t\t\tif (query !== this.search_query) {\r\n\t\t\t\tvar url = Search.products_search_url + '?query=' + query + '&count=' + Search.search_count;\r\n\r\n\t\t\t\tthis.search_query = query;\r\n\r\n\t\t\t\tfetcher(url)\r\n\t\t\t\t\t.then((json) => {\r\n\t\t\t\t\t\tif (!Search.search_drop_template) {\r\n\t\t\t\t\t\t\tTemplates.load(Search.search_drop_template_url)\r\n\t\t\t\t\t\t\t\t.then(function(template) {\r\n\t\t\t\t\t\t\t\t\tSearch.search_drop_template = template;\r\n\t\t\t\t\t\t\t\t\tSearch.input.classList.remove('progress');\r\n\t\t\t\t\t\t\t\t\tSearch.show_result(json);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tSearch.input.classList.remove('progress');\r\n\t\t\t\t\t\t\tSearch.show_result(json);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (this.btn_clear) {\r\n\t\t\t\tthis.btn_clear.classList.remove(Search.hide_class);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tSearch.search_assist.classList.add(Search.hide_class);\r\n\t\t\tSearch.input.classList.remove('progress');\r\n\t\t\tif (this.btn_clear) {\r\n\t\t\t\tthis.btn_clear.classList.add(Search.hide_class);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tis_empty_response: function(response) {\r\n\t\tif (\r\n\t\t\t(response.products.length === 0) &&\r\n\t\t\t(response.catalogs.length === 0) &&\r\n\t\t\t(response.manufacturers.length === 0) &&\r\n\t\t\t(response.searches.length === 0) &&\r\n\t\t\t(!response.manufacturer_featured_catalogs || response.manufacturer_featured_catalogs.length === 0)\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n\r\n\tshow_result: function(response) {\r\n\t\t// Preload search drop template\r\n\r\n\t\tvar result = response;\r\n\t\tvar q = Search.input.value.replace(/\\//g, '');\r\n\r\n\t\tSearch.search_assist.classList.remove(Search.drop_class);\r\n\t\tSearch.search_assist.classList.remove(Search.drop_no_searches_class);\r\n\t\tSearch.search_assist.classList.remove(Search.drop_no_contents_class);\r\n\t\tSearch.search_assist.classList.remove(Search.drop_no_result_class);\r\n\t\tSearch.search_assist.innerHTML = '';\r\n\r\n\t\tif (result.searches && result.searches.length > 0) {\r\n\t\t\tvar q_present = result.searches.filter(function(item) {\r\n\t\t\t\treturn item.catname === q;\r\n\t\t\t});\r\n\t\t\tif(!q_present.length) {\r\n\t\t\t\tresult.searches.unshift( {\r\n\t\t\t\t\turl: Search.form.getAttribute('action' ) + '/?query=' + encodeURIComponent(q),\r\n\t\t\t\t\tcatname: q,\r\n\t\t\t\t\torig_id: '',\r\n\t\t\t\t\tcatalog: 0,\r\n\t\t\t\t\tmanufacturer_logo: null\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tSearch.highlight_results(q, result.searches);\r\n\t\t} else {\r\n\t\t\tif (!result.manufacturers || result.manufacturers.length === 0) {\r\n\t\t\t\tSearch.search_assist.classList.add(Search.drop_no_searches_class);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (result.catalogs && result.catalogs.length > 0) {\r\n\t\t\tresult.catalogs = Search.parseCatalogs(result.catalogs);\r\n\t\t\tSearch.highlight_results(q, result.catalogs);\r\n\t\t}\r\n\t\tif (result.manufacturer_featured_catalogs && result.manufacturer_featured_catalogs.length > 0) {\r\n\t\t\tresult.manufacturer_featured_catalogs.forEach(function(item) {\r\n\t\t\t\tif (item.catalog_list.length > 0) {\r\n\t\t\t\t\tSearch.highlight_results(q, item.catalog_list);\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\t// Cancel blur, add clickoutside\r\n\t\tSearch.input.removeEventListener('blur', Search.inputOnBlurHandler);\r\n\r\n\t\tdocument.querySelector('html').addEventListener('click', function(e) {\r\n\t\t\tif (!Search.search_assist.contains(e.target)) {\r\n\t\t\t\tSearch.search_assist.classList.add(Search.hide_class);\r\n\t\t\t\tSearch.search_assist.classList.remove(Search.drop_no_searches_class);\r\n\t\t\t\tSearch.search_assist.classList.remove(Search.drop_no_contents_class);\r\n\t\t\t\tSearch.search_assist.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!Search.is_empty_response(response)) {\r\n\t\t\tSearch.render_results( result, false );\r\n\t\t} else {\r\n\t\t\tSearch.search_assist.classList.add(Search.drop_no_result_class);\r\n\t\t\tSearch.search_assist.classList.remove(Search.drop_no_searches_class);\r\n\t\t\tSearch.search_assist.classList.remove(Search.drop_no_contents_class);\r\n\r\n\t\t\tSearch.search_assist.innerHTML = 'Sorry, your search did not match any products.';\r\n\t\t\tSearch.search_assist.classList.remove(Search.hide_class);\r\n\t\t}\r\n\t\tSearch.search_assist.classList.add(Search.drop_class);\r\n\t\t//Search.search_assist.style.top = Search.input.getClientRects()[0].top + Search.input.offsetHeight - document.querySelector('body').offsetTop + 1 + 'px';\r\n\t\t//Search.search_assist.style.left = (Search.input.getClientRects()[0].left + Search.input.offsetWidth) - Search.search_assist.offsetWidth + 'px';\r\n\t},\r\n\r\n\thighlight_results: function( q, results ) {\r\n\t\tvar words = q.split( ' ' );\r\n\r\n\t\tresults.forEach(function(item) {\r\n\t\t\twords.forEach(function(part) {\r\n\t\t\t\tif (part.length > 0) {\r\n\t\t\t\t\tvar re = new RegExp(part + '(?=[^<>]*(<|$))', 'gi');\r\n\t\t\t\t\titem.catname = item.catname.replace(re, '$&');\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t} );\r\n\t},\r\n\r\n\trender_results: function(result) {\r\n\t\tif (window.SiteSettings.CDN_URL) {\r\n\t\t\tObject.assign(result, {\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tCDN_URL: window.SiteSettings.CDN_URL\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tresult.search_count = this.search_count;\r\n\t\tresult.customer_logged_in = false;\r\n\t\tif (window.Session) {\r\n\t\t\twindow.Session.get('Customer').then(function(customer) {\r\n\t\t\t\tif (customer) {\r\n\t\t\t\t\tresult.customer_logged_in = true;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tif (result.catalogs.length > 0 || result.manufacturer_featured_catalogs || result.manufacturers.length > 0) {\r\n\t\t\tresult.show_categories = true;\r\n\t\t} else {\r\n\t\t\tresult.show_categories = false;\r\n\t\t}\r\n\r\n\t\tSearch.search_assist.innerHTML = Search.search_drop_template(result);\r\n\r\n\t\tif (result.products && result.products.length > 0 || result.catalogs && result.catalogs.length > 0 || result.manufacturer_featured_catalogs && result.manufacturer_featured_catalogs.length > 0) {\r\n\t\t\tSearch.search_assist.classList.remove(Search.hide_class);\r\n\t\t\tthis.renderMoreLink();\r\n\t\t} else if (result.searches && result.searches.length > 0) {\r\n\t\t\tSearch.search_assist.classList.add(Search.drop_no_contents_class);\r\n\t\t\tSearch.search_assist.classList.remove(Search.hide_class);\r\n\t\t\tthis.renderMoreLink();\r\n\t\t}\r\n\t},\r\n\r\n\trenderMoreLink: function () {\r\n\t\tvar view_more = Search.search_assist.querySelector('.more');\r\n\r\n\t\tif (view_more) {\r\n\t\t\tif (Search.input.value && Search.input.value.length > 0) {\r\n\t\t\t\tview_more.setAttribute('href', Search.form.getAttribute('action') + '/' + Search.input.value.replace( /\\//g, '' ) + '.html' );\r\n\t\t\t} else {\r\n\t\t\t\tview_more.setAttribute('href', Search.form.getAttribute('action'));\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tclearQuery: function () {\r\n\t\tthis.input.value = '';\r\n\t\tSearch.search_assist.classList.add(Search.hide_class);\r\n\t\tthis.btn_clear.classList.add(Search.hide_class);\r\n\t},\r\n\r\n\tparseCatalogs: function (catalogs) {\r\n\t\tcatalogs.forEach(catalog => {\r\n\t\t\tif (catalog.breadcrumbs && !!catalog.breadcrumbs.length) {\r\n\t\t\t\tcatalog.breadcrumbsClosest = catalog.breadcrumbs.slice(-2);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn catalogs;\r\n\t}\r\n};\r\n\r\nexport default Search;","export function debounce (func, wait, immediate) {\r\n\tvar timeout;\r\n\treturn function() {\r\n\t\tvar context = this, args = arguments;\r\n\t\tvar later = function() {\r\n\t\t\ttimeout = null;\r\n\t\t\tif (!immediate) func.apply(context, args);\r\n\t\t};\r\n\t\tvar callNow = immediate && !timeout;\r\n\t\tclearTimeout(timeout);\r\n\t\ttimeout = setTimeout(later, wait);\r\n\t\tif (callNow) func.apply(context, args);\r\n\t};\r\n}\r\n","const Urls = {\r\n\tApi: {\r\n\t\tsignup: '/my/api/2/newsletter-signup/'\r\n\t},\r\n\tTemplates: {\r\n\t\tapp: '/my/api/2/templates?name=modules/newsletter-signup/app.html'\r\n\t}\r\n};\r\n\r\nexport default Urls;","// Do not use this on production.\r\n// All templates should be precompiled.\r\n\r\nimport Template from './template.js';\r\n\r\nexport default class BaseView {\r\n\tconstructor (el) {\r\n\t\tif (el instanceof Element) {\r\n\t\t\tthis.el = el;\r\n\t\t} else {\r\n\t\t\tthis.el = document.querySelector(el);\r\n\t\t}\r\n\t}\r\n\r\n\tget_context () {\r\n\t\treturn {};\r\n\t}\r\n\r\n\tload_template () {\r\n\t\tif (this.template_url) {\r\n\t\t\treturn Template.load(this.template_url);\r\n\t\t} else {\r\n\t\t\tthrow new Error('BaseView.load_template require template_url');\r\n\t\t}\r\n\t}\r\n\r\n\trender () {\r\n\t\tthis.load_template()\r\n\t\t\t.then(function(template) {\r\n\t\t\t\tthis.render_template(template);\r\n\t\t\t}.bind(this));\r\n\t}\r\n\r\n\trender_template (template) {\r\n\t\tvar context = this.get_context();\r\n\t\tif (this.el) {\r\n\t\t\tthis.el.innerHTML = Template.render(template, context);\r\n\t\t\tthis.rendered();\r\n\t\t}\r\n\t}\r\n\r\n\trender_partial (template, context) {\r\n\t\tif (template && context) {\r\n\t\t\treturn Template.render(template, context);\r\n\t\t} else {\r\n\t\t\tthrow new Error('BaseView.render_partial require templates and context objects');\r\n\t\t}\r\n\t}\r\n\r\n\trendered () {\r\n\t\tconst e = new Event('rendered');\r\n\t\tthis.el.dispatchEvent(e);\r\n\t\tthis.after_render();\r\n\t}\r\n\r\n\tafter_render () {\r\n\t\tif (this.el) {\r\n\t\t\tthis.el.dispatchEvent(new CustomEvent('rendered'));\r\n\t\t}\r\n\t\tthis.bindSelectors();\r\n\t\treturn true;\r\n\t}\r\n\r\n\tbindSelectors() {\r\n\t\tif (this.selectors && !!Object.keys(this.selectors).length) {\r\n\t\t\tObject.keys(this.selectors).forEach(key => {\r\n\t\t\t\tthis[`${key}Element`] = this.el ?\r\n\t\t\t\t\tthis.el.querySelector(this.selectors[key]) :\r\n\t\t\t\t\tdocument.querySelector(this.selectors[key]) ;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tparse_json (json) {\r\n\t\treturn JSON.parse(JSON.stringify(json));\r\n\t}\r\n\r\n\thtml_render (context) {\r\n\t\treturn this.load_template()\r\n\t\t\t.then(template => {\r\n\t\t\t\tif (template && context) {\r\n\t\t\t\t\tconst html = Template.render(template, context);\r\n\r\n\t\t\t\t\treturn Promise.resolve(html);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error('BaseView.html_render require templates and context objects');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}\r\n","import Urls from '../urls.js';\r\nimport BaseView from '../../../../scripts/utils/base-view.js';\r\nimport { fetcher, fetch_error } from '../../../../scripts/utils/fetch.js';\r\n\r\nexport default class NewsletterSignupView extends BaseView {\r\n\tconstructor({\r\n\t\tel\r\n\t}) {\r\n\t\tsuper(el);\r\n\t\tthis.selectors = {\r\n\t\t\tform: 'form',\r\n\t\t\tbtnJoin: '[name=\"subscribe\"]',\r\n\t\t\temail: '[name=\"email\"]',\r\n\t\t\tresult: '.newsletter-signup-result',\r\n\t\t\terror: '.newsletter-signup-form-error'\r\n\t\t};\r\n\t\tthis.template_url = Urls.Templates.app;\r\n\t\tthis.settings = window.SiteSettings || {};\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tbind_events () {\r\n\t\tthis.emailElement.addEventListener('input', event => {\r\n\t\t\tthis.valid();\r\n\t\t});\r\n\r\n\t\tthis.emailElement.addEventListener('keyup', ({key}) => {\r\n\t\t\tif (key === 'Enter') {\r\n\t\t\t\tthis.btnJoinClick();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.btnJoinElement.addEventListener('click', event => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tthis.btnJoinClick();\r\n\t\t});\r\n\t}\r\n\r\n\tafter_render () {\r\n\t\tthis.bindSelectors();\r\n\t\tthis.bind_events();\r\n\t}\r\n\r\n\ttestEmail (value) {\r\n\t\treturn /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i.test(value);\r\n\t}\r\n\r\n\tvalid () {\r\n\t\tvar is_valid = this.testEmail(this.emailElement.value);\r\n\t\tif (!is_valid) {\r\n\t\t\tthis.btnJoinElement.setAttribute('disabled', true);\r\n\t\t\tthis.emailElement.classList.add('is-invalid');\r\n\t\t} else {\r\n\t\t\tthis.btnJoinElement.removeAttribute('disabled');\r\n\t\t\tthis.emailElement.classList.remove('is-invalid');\r\n\t\t}\r\n\t\treturn is_valid;\r\n\t}\r\n\r\n\tbtnJoinClick () {\r\n\t\tconst self = this;\r\n\r\n\t\tif (this.valid()) {\r\n\t\t\tif (window.grecaptcha) {\r\n\t\t\t\twindow.grecaptcha.ready(function() {\r\n\t\t\t\t\twindow.grecaptcha\r\n\t\t\t\t\t\t.execute(self.settings.RECAPTCHA_SITE_KEY, {\r\n\t\t\t\t\t\t\taction: 'submit'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(function(token) {\r\n\t\t\t\t\t\t\tself.save(token);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.save();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsave (recaptcha_token) {\r\n\t\tvar data = {\r\n\t\t\temail: this.emailElement.value\r\n\t\t};\r\n\r\n\t\tif (recaptcha_token) {\r\n\t\t\tdata.g_recaptcha_response = recaptcha_token;\r\n\t\t}\r\n\r\n\t\tthis.btnJoinElement.classList.add('progress');\r\n\t\tfetcher(Urls.Api.signup, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(data),\r\n\t\t\tcustom_error: true\r\n\t\t}).then(() => {\r\n\t\t\tthis.formElement.classList.add('d-none');\r\n\t\t\tthis.resultElement.classList.remove('d-none');\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tfetch_error(error, true)\r\n\t\t\t\t.then(error_json => {\r\n\t\t\t\t\tthis.showError(error_json);\r\n\t\t\t\t});\r\n\t\t})\r\n\t\t.finally(() => {\r\n\t\t\tthis.btnJoinElement.classList.remove('progress');\r\n\t\t});\r\n\t}\r\n\r\n\tshowError (error) {\r\n\t\tlet message = 'Something went wrong...';\r\n\r\n\t\tif (error && typeof error === 'object') {\r\n\t\t\tif (error.exception && error.exception.Message) {\r\n\t\t\t\tmessage = error.exception.Message;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.errorElement) {\r\n\t\t\tthis.errorElement.textContent = message;\r\n\t\t\tthis.errorElement.classList.remove('hide');\r\n\t\t} else {\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\t}\r\n}","import NewsletterSignupView from './views/newsletter-signup.js';\r\n\r\nexport default class NewsletterSignup {\r\n\tconstructor({\r\n\t\tel\r\n\t}) {\r\n\t\tconst holders = document.querySelectorAll(el);\r\n\t\tif (holders.length > 0) {\r\n\t\t\tholders.forEach(holder => {\r\n\t\t\t\tnew NewsletterSignupView({\r\n\t\t\t\t\tel: holder\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import Search from '../../../modules/search/js/app.js';\r\nimport NewsletterSignup from '../../../modules/newsletter-signup/js/app.js';\r\nimport DiscountsNotification from '../common/discounts-notification.js';\r\n\r\nvar settings = window.SiteSettings || {};\r\n\r\ndocument.addEventListener('handlebars:helpers-loaded', function () {\r\n\tconst searchForm = document.querySelector('form.search');\r\n\r\n\tif (searchForm) {\r\n\t\tSearch.init();\r\n\t}\r\n\r\n\tdocument.addEventListener('[Session]:fetched', function(evt) {\r\n\t\tlet customer = null;\r\n\t\tif (evt.detail && evt.detail.Customer) {\r\n\t\t\tcustomer = evt.detail.Customer;\r\n\t\t}\r\n\t});\r\n\r\n\tnew NewsletterSignup({\r\n\t\tel: '.app-newsletter-signup'\r\n\t});\r\n});\r\n\r\nnew DiscountsNotification();\r\n\r\nvar openChatBtnRefs = document.querySelectorAll('.js-open-chat');\r\n\r\nopenChatBtnRefs.forEach(function(btnRef) {\r\n\tbtnRef.addEventListener('click', function(event) {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tvar targetRef = event.currentTarget;\r\n\t\tvar MemberId = targetRef ? targetRef.dataset.memberId : null;\r\n\t\tvar member = MemberId ? { detail: { MemberId: MemberId }} : null;\r\n\t\tvar eventName = MemberId ? 'fib_chat:open_room' : 'fib_chat:open';\r\n\t\tvar chatEvent = new window.CustomEvent(eventName, member);\r\n\t\tvar chatRef = document.querySelector('#fib-chat-container'); // or '.fib-chat-container' selector\r\n\r\n\t\tif (chatRef) {\r\n\t\t\tchatRef.dispatchEvent(chatEvent);\r\n\t\t} else {\r\n\t\t\tdocument.dispatchEvent(chatEvent);\r\n\t\t}\r\n\t});\r\n});","export default class DiscountsNotification {\r\n\tconstructor () {\r\n\t\tthis.el = document.querySelector('.discounts-notification');\r\n\t\tif (this.el) {\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\t}\r\n\r\n\tbindEvents () {\r\n\t\tconst accept_btn = this.el.querySelector('.btn-accept');\r\n\t\tconst close_btn = this.el.querySelector('.btn-close');\r\n\r\n\t\twindow.addEventListener('mousemove', this.showNotification.bind(this), {once: true});\r\n\t\twindow.addEventListener('keydown', this.showNotification.bind(this), {once: true});\r\n\r\n\t\taccept_btn.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.notificationShown();\r\n\t\t\twindow.location.href = accept_btn.getAttribute('href');\r\n\t\t});\r\n\r\n\t\tclose_btn.addEventListener('click', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.notificationShown();\r\n\t\t});\r\n\t}\r\n\r\n\tnotificationShown () {\r\n\t\tdocument.cookie = 'accept-discounts=true; max-age=31536000; path=/';\r\n\t\tthis.hideNotification();\r\n\t\twindow.removeEventListener('mousemove', this.showNotification.bind(this), {once: true});\r\n\t\twindow.removeEventListener('keydown', this.showNotification.bind(this), {once: true});\r\n\t}\r\n\r\n\tshowNotification () {\r\n\t\tlet cookie_present = document.cookie.split(';').some((item) => item.trim().startsWith('accept-discounts'));\r\n\r\n\t\tif (!cookie_present) {\r\n\t\t\tthis.el.classList.remove('d-none');\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tthis.el.classList.add('shown');\r\n\t\t\t}.bind(this), 100);\r\n\t\t}\r\n\t}\r\n\r\n\thideNotification () {\r\n\t\tthis.el.classList.remove('shown');\r\n\t\tsetTimeout(function () {\r\n\t\t\tthis.el.classList.add('d-none');\r\n\t\t}.bind(this), 200);\r\n\t}\r\n}"],"names":["fetch_status","response","ok","Promise","resolve","reject","fetch_json","json","fetch_text","text","fetch_error_message","error","message","sessionErr","includes","JSON","parse","Type","window","verifySession","exception","Message","responseJSON","Error","fetcher","url","arguments","length","undefined","options","data","is_text","custom_error","fetch","then","catch","error_text","signal","aborted","Template","compiled","load","template_url","t","Object","prototype","hasOwnProperty","call","this","compile","bind","template","template_name","Handlebars","render","context","Search","form","document","querySelector","input","search_assist","createElement","btn_clear","drop_class","hide_class","drop_no_searches_class","drop_no_contents_class","drop_no_result_class","search_count","search_drop_template_url","search_drop_template","search_url","products_search_url","search_query","init","setElements","bindEvents","id","appendChild","classList","add","setAttribute","func","wait","timeout","removeEventListener","onFormSubmit","addEventListener","event","keyCode","preventDefault","activate","args","clearTimeout","setTimeout","apply","inputOnFocusHandler","inputOnBlurHandler","clearQuery","e","stopPropagation","value","location","href","encodeURIComponent","remove","query","show_result","Templates","is_empty_response","products","catalogs","manufacturers","searches","manufacturer_featured_catalogs","result","q","replace","innerHTML","filter","item","catname","unshift","getAttribute","orig_id","catalog","manufacturer_logo","highlight_results","parseCatalogs","forEach","catalog_list","contains","target","render_results","results","words","split","part","re","RegExp","SiteSettings","CDN_URL","assign","settings","customer_logged_in","Session","get","customer","show_categories","renderMoreLink","view_more","breadcrumbs","breadcrumbsClosest","slice","Urls","signup","app","BaseView","constructor","el","Element","get_context","load_template","render_template","rendered","render_partial","Event","dispatchEvent","after_render","CustomEvent","bindSelectors","selectors","keys","key","concat","parse_json","stringify","html_render","html","NewsletterSignupView","_ref","super","btnJoin","email","bind_events","emailElement","valid","_ref2","btnJoinClick","btnJoinElement","testEmail","test","is_valid","removeAttribute","self","grecaptcha","ready","execute","RECAPTCHA_SITE_KEY","action","token","save","recaptcha_token","g_recaptcha_response","method","headers","body","formElement","resultElement","fetch_error","error_json","showError","finally","errorElement","textContent","NewsletterSignup","holders","querySelectorAll","holder","evt","detail","Customer","accept_btn","close_btn","showNotification","once","notificationShown","cookie","hideNotification","some","trim","startsWith","btnRef","targetRef","currentTarget","MemberId","dataset","memberId","member","eventName","chatEvent","chatRef"],"mappings":"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"}