{"version":3,"sources":["JsSearch.js","JsTemplate.js"],"names":["JsSearch","options","window","$","_this","this","defaultProducts","defaultLabels","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","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\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 _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 $.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 (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 } 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 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};"]}