{"version":3,"sources":["JsSearch.js","JsTemplate.js"],"names":["JsSearch","options","window","$","_this","this","defaultProducts","defaultLabels","searchRequestIndex","searchResponseIndex","setInputWidth","width","hide","removeClass","css","overflow","position","z-index","blur","show","addClass","display","on","e","keyCode","which","is","length","href","attr","location","requestTimeout","runSearch","clearTimeout","code","links","find","activeKey","each","k","v","hasClass","setTimeout","searchTerm","val","index","ajax","url","type","dataType","data","search_term","success","result","total","count","renderProducts","products","renderLabels","labels","renderProductMoreItems","renderProductNoItems","renderDefaultSearch","term","template","JsTemplate","productViews","i","product","title","replace","RegExp","content","reset","html","prop","labelViews","label","name","totalCount","append","resize","id","templateName","getTemplate","jQuery","origContent","pattern","text","pttrn","console","log","message","hideSection","sectionClass","remove"],"mappings":"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","file":"search.min.js","sourcesContent":[";var JsSearch = function (options, window, $) {\n var _this = this;\n\n this.defaultProducts = options.defaultProducts || null;\n this.defaultLabels = options.defaultLabels || null;\n this.searchRequestIndex = 0;\n this.searchResponseIndex = 0;\n\n this.setInputWidth = function(){\n $(\".search-inputs-wrapper\").width($('#header-search').width());\n }\n\n this.hide = function() {\n $('#search-backdrop').removeClass('active');\n $('body').css({overflow: 'initial'})\n $(\".search-inputs-wrapper\").css({\n 'position': 'initial',\n 'z-index': 201,\n });\n $(\".search-typeahead-list\").hide();\n $('#search-field').blur();\n }\n\n this.show = function () {\n $('body').css({overflow: 'hidden'})\n $(\"#search-backdrop\").addClass('active');\n $(\".search-inputs-wrapper\").css({\n 'position': 'absolute',\n 'z-index': 201,\n });\n $(\".search-typeahead-list\").css({'display':'flex'});\n this.setInputWidth();\n }\n\n\n $(\"body\").on('keyup', function(e){\n var code = e.keyCode || e.which;\n if (code === 27 && $('#search-backdrop').is(':visible')){\n _this.hide();\n }\n });\n\n $(\"#search-form\").on('submit', function(e){\n\n if ($('.search-typeahead-list .search-nav.active').length > 0) {\n var href = $('.search-typeahead-list .search-nav.active').attr('href');\n window.location = href;\n return false;\n } else {\n return true;\n }\n\n });\n\n _this.requestTimeout = null;\n\n _this.runSearch = function(e) {\n clearTimeout(_this.requestTimeout);\n var code = e.keyCode || e.which;\n\n if (code === 13) {\n return;\n }\n\n var links = $('.search-typeahead-list').find('.search-nav');\n if (code === 40 || code === 39) {\n let activeKey = null;\n links.each(function(k, v){\n if ($(v).hasClass('active')){\n activeKey = k;\n $(v).removeClass('active');\n }\n });\n if (activeKey !== null) {\n if (links[activeKey + 1]) {\n activeKey = activeKey + 1;\n } else {\n activeKey = 0;\n }\n } else {\n activeKey = 0;\n }\n $(links[activeKey]).addClass('active');\n } else if (code === 38 || code === 37) {\n let activeKey = null;\n links.each(function(k, v){\n if ($(v).hasClass('active')){\n activeKey = k;\n $(v).removeClass('active');\n }\n });\n if (activeKey !== null) {\n if (links[activeKey - 1]) {\n activeKey = activeKey - 1;\n } else {\n activeKey = links.length - 1;\n }\n } else {\n activeKey = links.length - 1;\n }\n $(links[activeKey]).addClass('active');\n } else {\n clearTimeout(_this.requestTimeout);\n _this.requestTimeout = setTimeout(function () {\n var searchTerm = $('#search-field').val();\n if (searchTerm.length > 2) {\n _this.searchRequestIndex++;\n let index = _this.searchRequestIndex;\n $.ajax({\n url: '/product/default/search-ajax',\n type: 'get',\n dataType: 'json',\n data: {\n search_term: searchTerm,\n },\n success: function(result) {\n if (index > _this.searchResponseIndex) {\n _this.searchResponseIndex = index;\n if (result.total.count){\n _this.renderProducts(result.products, searchTerm);\n _this.renderLabels(result.labels, searchTerm);\n _this.renderProductMoreItems(result.total);\n } else {\n _this.renderProductNoItems();\n }\n }\n }\n });\n } else {\n _this.renderDefaultSearch();\n }\n\n }, 500);\n }\n };\n\n $(\"body\").on('keyup', '#search-field', _this.runSearch);\n\n this.renderProducts = function (products, term) {\n var template = new JsTemplate('product-item');\n var productViews = \"\";\n for (var i = 0; i < products.length; i++) {\n var product = products[i];\n product.title = product.title.replace(new RegExp(term + '(?!([^<]+)?<)', 'gi'), '$&');\n template.replace(product);\n productViews += template.content;\n template.reset();\n }\n var template = new JsTemplate('product-more-item');\n\n $('.search-product-container ul').html(productViews);\n $(\".search-typeahead-list\").find('img[data-srcs]').each(function(k,v){\n $(v).prop('src', $(v).data('srcs'));\n });\n }\n\n this.renderLabels = function (labels, term) {\n var template = new JsTemplate('label-item');\n var labelViews = \"\";\n for (var i = 0; i < labels.length; i++) {\n var label = labels[i];\n label.name = label.name.replace(new RegExp(term + '(?!([^<]+)?<)', 'gi'), '$&');\n template.replace(label);\n labelViews += template.content;\n template.reset();\n }\n if ($('.search-label-container:hidden')) {\n $('.search-label-container').show();\n $('.search-product-container').removeClass('no-prod');\n }\n $('.search-label-container ul').html(labelViews);\n }\n\n this.renderProductNoItems = function (){\n var template = new JsTemplate('product-no-item');\n $('.search-label-container').hide();\n $('.search-product-container').addClass('no-prod');\n $('.search-product-container').css('max-width', '100%');\n $('.search-product-container ul').html(template.content);\n }\n\n this.renderProductMoreItems = function (total) {\n var template = new JsTemplate('product-more-item');\n template.replace({\n totalCount: total.count,\n url: total.url,\n });\n $('.search-product-container ul').append(template.content);\n }\n\n this.renderDefaultSearch = function () {\n _this.renderProducts(_this.defaultProducts);\n _this.renderLabels(_this.defaultLabels);\n }\n\n\n $('.mobile-search-trigger').on('click', function() {\n $('#mobile-search').addClass('active');\n });\n $('.moblie-search-close').on('click', function() {\n $('#mobile-search').removeClass('active');\n _this.hide();\n });\n $(\"body\").on('keyup', function(e){\n var code = e.keyCode || e.which;\n if (code === 27 && $('#mobile-search').is(':visible')){\n $('#mobile-search').removeClass('active');\n }\n });\n\n\n $(\"body\").on('focus', '#search-field', function(e){\n if ($(this).val() !== '') {\n _this.runSearch(e)\n }\n _this.show();\n });\n\n $('#search-backdrop').on('click', function(){\n _this.hide();\n });\n\n $(window).resize(function(e) {\n _this.setInputWidth();\n });\n\n if ($('#search-field').val() === ''){\n _this.renderDefaultSearch();\n }\n};",";var JsTemplate = function (id) {\n\n this.id = id;\n\n let templateName = '#template-' + this.id;\n this.getTemplate = function () {\n return jQuery('#search-templates').find(templateName).html();\n };\n\n this.content = this.getTemplate();\n this.origContent = this.content;\n\n this.replace = function (pattern, text) {\n try {\n if (typeof pattern === 'object') {\n for (let pttrn in pattern) {\n this.content = this.content.replace(new RegExp('{' + pttrn + '}', 'g'), pattern[pttrn]);\n }\n } else {\n this.content = this.content.replace(new RegExp(pattern, 'g'), text);\n }\n } catch (e) {\n console.log(e.message, templateName);\n }\n return this;\n };\n\n this.reset = function () {\n this.content = this.origContent;\n };\n\n this.hideSection = function (sectionClass) {\n let content = jQuery(this.content);\n let section = content.find('section.' + sectionClass);\n section.remove();\n this.content = content.html();\n }\n};"]}