{"version":3,"file":"64879f9b3042bfae30b0.js","mappings":"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","sources":["webpack:///./PimShop/wwwroot/js/ui/search/components/search-autocomplete/search-autocomplete.html?c1b9","webpack:///./PimShop/wwwroot/js/binding/numeric.js","webpack:///./PimShop/wwwroot/js/binding/stopBinding.js","webpack:///./PimShop/wwwroot/js/ui/layout.js","webpack:///./PimShop/wwwroot/js/ui/search/components/search-autocomplete/search-autocomplete.js","webpack:///./PimShop/wwwroot/js/binding/clickOutside.js","webpack:///./PimShop/wwwroot/js/ui/search/components/search-autocomplete/search-autocomplete.html"],"sourcesContent":["module.exports = \"// Module\\nvar code = `<div data-bind=\\\"clickOutside: hide\\\" class=\\\"suggest position-relative text-left\\\">\\r\\n <div data-bind=\\\"visible: loader() > 0\\\" class=\\\"suggest-loader\\\">\\r\\n <div class=\\\"spinner-grow text-primary\\\" role=\\\"status\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"input-group\\\">\\r\\n <input data-bind=\\\"textInput: inputText, event: {keydown: handleKey, click: show}, css: {'form-control-sm': size == 'small'}, hasFocus: autoFocus(), attr: {placeholder: placeholder}\\\" name=\\\"searchterm\\\" type=\\\"text\\\" class=\\\"suggest-search-input\\\" autocomplete=\\\"off\\\" autocapitalize=\\\"none\\\">\\r\\n <button data-bind=\\\"click: reset\\\" type=\\\"reset\\\" title=\\\"Zoekopdracht verwijderen\\\" class=\\\"clear-icon\\\"></button>\\r\\n<!-- <div data-bind=\\\"visible: isVisible\\\" class=\\\"input-group-append\\\">-->\\r\\n<!-- <!– todo: fix button css + icon –>-->\\r\\n<!-- <button data-bind=\\\"click: hide\\\" class=\\\"search-reset btn btn-outline-danger\\\" type=\\\"button\\\">(Verberg)</button>-->\\r\\n<!-- </div>-->\\r\\n<!-- <div class=\\\"input-group-append\\\">-->\\r\\n<!-- <!– todo: fix button css + icon –>-->\\r\\n<!-- <button class=\\\"search-submit btn btn-outline-primary\\\" type=\\\"submit\\\">(Zoeken)</button>-->\\r\\n<!-- </div>-->\\r\\n </div>\\r\\n <div data-bind=\\\"visible: isVisible\\\" class=\\\"suggest-items\\\">\\r\\n <!-- ko foreach: {data: sortedSuggestions, as: 'suggestion'} -->\\r\\n <div data-bind=\\\"visible: suggestion.suggestions.length, text: suggestion.title\\\" class=\\\"suggest-group-title\\\"></div>\\r\\n <div data-bind=\\\"template: { name: 'search-autocomplete-' + suggestion.group, foreach: suggestion.suggestions, as: 'suggestion' }\\\" class=\\\"suggest-group\\\"></div>\\r\\n <!-- /ko -->\\r\\n <div data-bind=\\\"css: {'xsuggest-active': currentFocus() == 0}, visible: inputText().length > 0\\\" class=\\\"suggest-item-button\\\">\\r\\n <a data-bind=\\\"attr: {href: '/search?searchterm=' + inputText()}\\\" class=\\\"primary-button medium\\\">\\r\\n Toon alle zoekresultaten<!--Toon alle zoekresultaten voor <span class=\\\"font-italic font-weight-bold\\\" data-bind=\\\"text: inputText()\\\"></span>-->\\r\\n </a>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n${\\\"<\\\" + \\\"script\\\"} type=\\\"text/html\\\" id=\\\"search-autocomplete-product\\\">\\r\\n <div data-bind=\\\"css: {'suggest-active': suggestion.index == \\\\$parentContext.\\\\$parentContext.\\\\$data.currentFocus()}\\\" class=\\\"suggest-item suggest-item-product\\\">\\r\\n <div data-bind=\\\"visible: suggestion.count > 1\\\" class=\\\"suggest-item-count\\\">\\r\\n <span data-bind=\\\"text: suggestion.count\\\">0</span> varianten\\r\\n </div>\\r\\n <a data-bind=\\\"attr: {href: suggestion.url}\\\">\\r\\n <div data-bind=\\\"visible: suggestion.imageUrl != null, style: {'background-image': 'url(' + suggestion.imageUrl+ ')'}\\\" class=\\\"suggest-item-product-image\\\"></div>\\r\\n <div class=\\\"suggest-item-product-info\\\">\\r\\n <p class=\\\"suggest-item-product-brand\\\" data-bind=\\\"text: suggestion.brand\\\"></p>\\r\\n <h5 class=\\\"suggest-item-product-title\\\" data-bind=\\\"html: suggestion.html\\\"></h5>\\r\\n <div>\\r\\n <p data-bind=\\\"visible: !_.isEmpty(suggestion.text), text: suggestion.text + '...'\\\" style=\\\"white-space: pre-wrap\\\"></p>\\r\\n<!-- <div data-bind=\\\"visible: !_.isEmpty(suggestion.properties), foreach: _.filter(suggestion.properties, (property) => !_.isNull(property.value))\\\">-->\\r\\n<!-- <span data-bind=\\\"text: key + ': ' + value\\\" class=\\\"badge badge-pill badge-light\\\">Light</span>-->\\r\\n<!-- </div>-->\\r\\n <div class=\\\"suggest-item-product-properties\\\">\\r\\n <span data-bind=\\\"text: \\\\`Artikelnr. \\\\${suggestion.sku}\\\\`\\\"></span>\\r\\n <!-- ko if: !_.isEmpty(_.filter(suggestion.properties, (prop) => prop.highlight)) -->\\r\\n <!-- ko foreach: _.filter(suggestion.properties, (propertyValue) => propertyValue.highlight && !_.isNull(propertyValue.value)) -->\\r\\n <span data-bind=\\\"text: \\\\`| \\\\${\\\\$data.name}: \\\\${\\\\$data.value}\\\\`\\\"></span>\\r\\n <!-- /ko -->\\r\\n <!-- /ko -->\\r\\n </div>\\r\\n <div class=\\\"suggest-item-product-price-container\\\">\\r\\n <span data-bind=\\\"text: suggestion.price\\\" class=\\\"suggest-item-product-price\\\"></span> <span data-bind=\\\"text: \\\\`/ \\\\${suggestion.uomDescription}\\\\`\\\" class=\\\"suggest-item-product-price-moq\\\"></span>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </a>\\r\\n </div>\\r\\n${\\\"<\\\" + \\\"/script\\\"}>\\r\\n\\r\\n${\\\"<\\\" + \\\"script\\\"} type=\\\"text/html\\\" id=\\\"search-autocomplete-brand\\\">\\r\\n <div data-bind=\\\"css: {'suggest-active': suggestion.index == \\\\$parentContext.\\\\$parentContext.\\\\$data.currentFocus()}\\\" class=\\\"suggest-item suggest-item-brand\\\">\\r\\n <a data-bind=\\\"html: suggestion.html, attr: {href: suggestion.url}\\\"></a>\\r\\n </div>\\r\\n${\\\"<\\\" + \\\"/script\\\"}>\\r\\n${\\\"<\\\" + \\\"script\\\"} type=\\\"text/html\\\" id=\\\"search-autocomplete-property_Soort\\\">\\r\\n <div data-bind=\\\"css: {'suggest-active': suggestion.index == \\\\$parentContext.\\\\$parentContext.\\\\$data.currentFocus()}\\\" class=\\\"suggest-item suggest-item-property_Soort\\\">\\r\\n <a data-bind=\\\"html: suggestion.html, attr: {href: suggestion.url}\\\"></a>\\r\\n </div>\\r\\n${\\\"<\\\" + \\\"/script\\\"}>\\r\\n${\\\"<\\\" + \\\"script\\\"} type=\\\"text/html\\\" id=\\\"search-autocomplete-category\\\">\\r\\n <div data-bind=\\\"css: {'suggest-active': suggestion.index == \\\\$parentContext.\\\\$parentContext.\\\\$data.currentFocus()}\\\" class=\\\"suggest-item suggest-item-category\\\">\\r\\n <ol class=\\\"breadcrumb\\\">\\r\\n <!-- ko if: !_.isUndefined(suggestion.rootCategory) && !_.isNull(suggestion.rootCategory) -->\\r\\n <li class=\\\"breadcrumb-item \\\">\\r\\n <a data-bind=\\\"text: suggestion.rootCategory.name, attr: {href: '/categories/' + suggestion.rootCategory.slug}\\\">\\r\\n </a>\\r\\n </li>\\r\\n <!-- /ko -->\\r\\n <!-- ko if: !_.isUndefined(suggestion.subCategory) && !_.isNull(suggestion.subCategory) -->\\r\\n <li class=\\\"breadcrumb-item \\\">\\r\\n <a data-bind=\\\"text: suggestion.subCategory.name, attr: {href: '/categories/' + suggestion.rootCategory.slug + '/' + suggestion.subCategory.slug}\\\">\\r\\n </a>\\r\\n </li>\\r\\n <!-- /ko -->\\r\\n <li class=\\\"breadcrumb-item \\\">\\r\\n <a data-bind=\\\"html: suggestion.html, attr: {href: suggestion.url}\\\"></a>\\r\\n </li>\\r\\n </ol>\\r\\n </div>\\r\\n${\\\"<\\\" + \\\"/script\\\"}>\\r\\n${\\\"<\\\" + \\\"script\\\"} type=\\\"text/html\\\" id=\\\"search-autocomplete-spellcheck\\\">\\r\\n <div data-bind=\\\"css: {'suggest-active': suggestion.index == \\\\$parentContext.\\\\$parentContext.\\\\$data.currentFocus()}\\\" class=\\\"suggest-item suggest-item-spellcheck\\\">\\r\\n <a data-bind=\\\"html: suggestion.html, attr: {href: suggestion.url}\\\"></a>\\r\\n </div>\\r\\n${\\\"<\\\" + \\\"/script\\\"}>\\r\\n`;\\n// Exports\\nmodule.exports = code;\"","define(['ko'], function(ko) {\r\n ko.bindingHandlers.numeric = {\r\n init: function (element, valueAccessor) {\r\n $(element).on(\"keydown\", function (event) {\r\n // Allow: backspace, delete, tab, escape, and enter\r\n if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||\r\n // Allow: Ctrl+A\r\n (event.keyCode == 65 && event.ctrlKey === true) ||\r\n // Allow: . ,\r\n (event.keyCode == 188 || event.keyCode == 190 || event.keyCode == 110) ||\r\n // Allow: home, end, left, right\r\n (event.keyCode >= 35 && event.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n // return true;\r\n }\r\n else {\r\n // Ensure that it is a number and stop the keypress\r\n if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {\r\n event.preventDefault();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n});\r\n","define(['ko'], function(ko) {\r\n ko.bindingHandlers.stopBinding = {\r\n init: function() {\r\n return { controlsDescendantBindings: true };\r\n }\r\n };\r\n ko.virtualElements.allowedBindings.stopBinding = true;\r\n})","define(['ko', '_', 'bindings/stopBinding', 'bindings/numeric'], function(ko, _) {\r\n return function layout(isLoggedIn) {\r\n var self = this;\r\n self.searchTerm = ko.observable(\"\");\r\n self.pendingOrders = ko.observable(0);\r\n self.doBounce = ko.observable(false);\r\n self.loader = ko.observable(0);\r\n \r\n if(isLoggedIn) {\r\n // let source = new EventSource(\"/notifications/sse\");\r\n // source.onerror = (err) => console.error(\"EventSource connection failed:\", err);\r\n //\r\n // source.onopen = function (event) {\r\n // //\r\n // }\r\n // source.onmessage = function (event) {\r\n // self.pendingOrders(parseInt(event.data, 10));\r\n // // removes \"bounce\" class which runs the animation once\r\n // self.doBounce(false);\r\n // // add the \"bounce\" class after 50 ms to run the animation again\r\n // new Promise(resolve => setTimeout(resolve, 50)).then(() => self.doBounce(true));\r\n //\r\n // if (event.id === \"CLOSE\") {\r\n // source.close();\r\n // }\r\n // }\r\n }\r\n }\r\n});\r\n","define(['ko', 'text!./search-autocomplete.html', '_', 'bindings/clickOutside'], function (ko, htmlString, _) {\r\n\r\n function SearchAutocompleteComponent(params) {\r\n var self = this;\r\n\r\n self.apiUrl = ko.observable(params.apiUrl);\r\n self.defaultTerm = !_.isUndefined(params.defaultTerm) ? (ko.isObservable(params.defaultTerm) ? params.defaultTerm : ko.observable(params.defaultTerm)) : ko.observable('');\r\n self.hasOpenendDefaultTerm = ko.observable(false);\r\n self.searchTermField = !_.isUndefined(params.searchTermField) ? params.searchTermField : 'searchterm';\r\n self.inputText = ko.observable(self.defaultTerm()).extend({rateLimit: 250});\r\n self.autoFocus = ko.observable(!_.isUndefined(params.autoFocus) ? params.autoFocus : false);\r\n self.placeholder = ko.observable(!_.isUndefined(params.placeholder) ? params.placeholder : 'Vul een zoekterm in...');\r\n self.defaultTerm.subscribe(function (newValue) {\r\n // this is needed to reset the textbox value after a value was selected (and added) outside this component\r\n self.inputText(newValue);\r\n });\r\n self.isVisible = ko.observable(false);\r\n // todo: add support for predefined options\r\n self.options = ko.observableArray([]); // todo: support optional predefined params.values());\r\n\r\n // $PAYLOAD, $TEXT and $TITLE will be replaced with their corresponding value\r\n self.dictionaries = [\r\n // {name: \"title\", description: \"Product\", url_pattern: \"/product/$PAYLOAD\"},\r\n {\r\n name: \"product\", \r\n description: \"Producten\", \r\n url_pattern: \"/product/$PAYLOAD\",\r\n order: 2\r\n },\r\n // {\r\n // name: \"brand\", description: \"Merk\",\r\n // url_pattern: \"/search?\" + self.searchTermField + \"=brand:$TITLE\"\r\n // order: 0\r\n // },\r\n {\r\n name: \"category\",\r\n description: \"Categorieën\",\r\n url_pattern: \"/categories/\",\r\n url_transformer: (result, matchingDictionary) => {\r\n // console.log('CB', result);\r\n // console.log('CBu', matchingDictionary.url_pattern);\r\n var url = matchingDictionary.url_pattern;\r\n var rootCategory = _.get(result, 'rootCategory', null);\r\n if (!_.isNull(rootCategory)) {\r\n url += rootCategory.slug + '/';\r\n }\r\n var subCategory = _.get(result, 'subCategory', null);\r\n if (!_.isNull(subCategory)) {\r\n url += subCategory.slug + '/';\r\n }\r\n url += result.payload;\r\n return url.replace('$PAYLOAD', result.payload).replace('$TEXT', result.text).replace('$TITLE', result.title);\r\n },\r\n order: 1\r\n },\r\n // {name: \"property_Soort\", description: \"Soort (filter catalogues nog niet!)\", url_pattern: \"/search?term=property_Soort:$TITLE\"},\r\n ];\r\n\r\n // field to use with params.exclude, can be null if params.exclude is a regular array\r\n self.excludeBy = ko.observable(!_.isUndefined(params.excludeBy) ? params.excludeBy : null);\r\n // property in options to compare with excludeBy\r\n self.excludeOptionByField = ko.observable('text'); // todo: allow setting using parameters, this can be id of text\r\n self.mapExclusions = function (exclusions) {\r\n if (_.isNull(self.excludeBy())) {\r\n // exclude by textual values\r\n // todo: check isFunction?\r\n // console.log('exclude options (text): ' + _.map(exclusions, (exclude) => exclude()));\r\n return exclusions;\r\n } else {\r\n if (_.isFunction(exclusions)) { // e.g. observableArray or computed property\r\n return _.map(exclusions(), (exclusion) => _.result(exclusion, self.excludeBy()));\r\n } else { // regular array\r\n // console.log(`exclude non-function options by: ${self.excludeBy()}`, exclusions);\r\n return _.map(exclusions, (exclusion) => _.result(exclusion, self.excludeBy()));\r\n }\r\n }\r\n };\r\n self.exclude = ko.observableArray(!_.isUndefined(params.exclude) ? self.mapExclusions(params.exclude) : null);\r\n if (_.isFunction(params.exclude)) {\r\n params.exclude.subscribe(function (change) {\r\n // subscribe to params.exclude to update internal observableArray\r\n if (change !== null) {\r\n self.exclude(self.mapExclusions(change));\r\n }\r\n });\r\n }\r\n\r\n self.size = params.size || ''; // only supports <empty string> or small\r\n self.value = !_.isUndefined(params.value) ? params.value : ko.observable('');\r\n self.aaaa = '<span>aaaa</span>>';\r\n self.displayValue = ko.computed(function () {\r\n // handle AJAX response values\r\n if (_.isObject(self.value()) && !_.isNull(self.value().text)) {\r\n return self.value().text;\r\n }\r\n return self.value();\r\n });\r\n self.internalValue = ko.observable(null);\r\n self.internalValue.subscribe(function (newValue) {\r\n self.value(newValue);\r\n });\r\n\r\n self.loader = ko.observable(0);\r\n self.requestCounter = 0;\r\n self.currentFocus = ko.observable(0);\r\n self.resetFocus = function () {\r\n self.currentFocus(0);\r\n };\r\n /**\r\n * Hide autocomplete results, resets input text and removes all options\r\n */\r\n self.reset = function() {\r\n self.hide();\r\n self.inputText(\"\");\r\n self.options.removeAll();\r\n }\r\n self.hide = function () {\r\n self.isVisible(false);\r\n };\r\n self.show = function () {\r\n // call getOptions only when a defaultTerm is set AND the user has not clicked on the search input yet\r\n if(self.defaultTerm() !== \"\" && !self.hasOpenendDefaultTerm()) {\r\n self.getOptions();\r\n self.hasOpenendDefaultTerm(true);\r\n }\r\n self.isVisible(true);\r\n };\r\n\r\n self.handleKey = function (data, event) {\r\n // show options if key is not escape\r\n if ((event.key.length === 1) && !self.isVisible()) {\r\n self.show();\r\n }\r\n // show options if key is enter and options are not in visible state but do not send a new request\r\n if (event.key === 'Enter' && !self.isVisible()) {\r\n self.show();\r\n return true;\r\n }\r\n\r\n // fetch options only when a letter/number\r\n if (event.key.length === 1 || event.key === 'Backspace') {\r\n self.getOptions();\r\n }\r\n if (_.includes(['Down', 'ArrowDown'], event.key)) {\r\n // select item below or return to top when on the end of the list\r\n if (self.currentFocus() === (self.totalSuggestions())) {\r\n self.currentFocus(0);\r\n return true;\r\n }\r\n self.currentFocus(self.currentFocus() + 1);\r\n } else if (_.includes(['Up', 'ArrowUp'], event.key)) {\r\n // select item above or return to bottom if already on first item\r\n if (self.currentFocus() <= 0) {\r\n self.currentFocus(self.totalSuggestions());\r\n return true;\r\n }\r\n self.currentFocus(self.currentFocus() - 1);\r\n } else if (_.includes(['Enter'], event.key)) {\r\n // try to find the selected value by index and update the viewmodel\r\n event.preventDefault();\r\n // first item is a regular search request\r\n if (self.currentFocus() === 0) {\r\n window.location = '/search?' + self.searchTermField + '=' + self.inputText();\r\n return true;\r\n }\r\n if (self.currentFocus() > -1) {\r\n let matchingIndex = _.findIndex(self.allSortedSuggestions(), {'index': self.currentFocus()});\r\n if (matchingIndex === -1) {\r\n // this should never happen\r\n self.resetFocus();\r\n console.warn(\"Dit zou niet moeten gebeuren\")\r\n return false;\r\n }\r\n\r\n var match = self.allSortedSuggestions()[matchingIndex];\r\n self.selectOption(match);\r\n }\r\n } else if (_.includes(['Esc', 'Escape'], event.key)) {\r\n // hide the options\r\n self.hide();\r\n self.resetFocus();\r\n }\r\n return true;\r\n };\r\n self.selectOption = function (option) {\r\n if (_.isNull(option)) {\r\n return false;\r\n }\r\n window.location = option.url;\r\n // self.internalValue(option);\r\n // self.inputText(option.text);\r\n // self.hide();\r\n // self.resetFocus();\r\n };\r\n self.totalSuggestions = ko.pureComputed(function () {\r\n return _.sumBy(self.sortedSuggestions(), function (o) {\r\n return o.suggestions.length;\r\n });\r\n });\r\n self.allSortedSuggestions = ko.pureComputed(function () {\r\n return _.flatMap(self.sortedSuggestions(), (sug) => {\r\n return sug.suggestions;\r\n });\r\n });\r\n self.sortedSuggestions = ko.pureComputed(function () {\r\n return _.orderBy(self.options(), function (option) {\r\n return option.order\r\n });\r\n });\r\n self.getOptions = _.debounce(function () {\r\n if (self.inputText() === '') {\r\n self.reset();\r\n return false;\r\n }\r\n var urlSafeTerm = encodeURIComponent(self.inputText());\r\n var requestUrl = self.apiUrl() + 'term=' + urlSafeTerm;\r\n _.forEach(self.dictionaries, (dict) => {\r\n requestUrl += '&dictionaries=' + dict.name;\r\n });\r\n requestUrl += '&rows=5&descriptions=false';\r\n var requestId = self.requestCounter;\r\n self.requestCounter++;\r\n self.loader(self.loader() + 1);\r\n fetch(requestUrl, {headers: {\"Content-Type\": \"application/json; charset=utf-8\"}})\r\n .then(res => {\r\n if (res.status !== 200) {\r\n return false;\r\n }\r\n return res.json();\r\n })\r\n .then(response => {\r\n var shouldProcess = (requestId + 1) === self.requestCounter;\r\n if (!shouldProcess) {\r\n return false;\r\n }\r\n self.show();\r\n self.options.removeAll();\r\n let itemIndex = 0;\r\n const sortedDictionaries = _.orderBy(response, (dict) => {\r\n let suggestionGroup = dict.dictionary;\r\n let matchingDictionary = _.find(self.dictionaries, {'name': suggestionGroup});\r\n return matchingDictionary.order;\r\n }, \"asc\");\r\n _.forEach(sortedDictionaries, (dictionarySuggestions) => {\r\n let suggestionGroup = dictionarySuggestions.dictionary;\r\n let matchingDictionary = _.find(self.dictionaries, {'name': suggestionGroup});\r\n\r\n var results = _.map(dictionarySuggestions.suggestions, function (result) {\r\n itemIndex++;\r\n var useCallbackUrl = false;\r\n var callbackUrlResult = null\r\n if (_.has(matchingDictionary, 'url_transformer') && _.isFunction(matchingDictionary.url_transformer)) {\r\n callbackUrlResult = matchingDictionary.url_transformer(result, matchingDictionary);\r\n useCallbackUrl = true;\r\n }\r\n return {\r\n id: result.payload,\r\n text: result.text,\r\n title: result.title,\r\n order: result.order,\r\n html: result.title.replace(new RegExp(self.inputText(), \"gi\"), (match) => `<strong>${match}</strong>`),\r\n url: useCallbackUrl ? callbackUrlResult : matchingDictionary.url_pattern.replace('$PAYLOAD', result.payload).replace('$TEXT', result.text).replace('$TITLE', result.title),\r\n imageUrl: result.imageUrl,\r\n properties: result.properties,\r\n count: _.toInteger(result.count),\r\n brand: result.brand,\r\n ean: result.ean,\r\n sku: result.sku,\r\n rootCategory: result.rootCategory,\r\n subCategory: result.subCategory,\r\n index: itemIndex,\r\n price: new Intl.NumberFormat('nl-NL', {style: 'currency', currency: 'EUR'}).format(result.price),\r\n uomDescription: result.uomDescription,\r\n qtyModifier: result.qtyModifier\r\n }\r\n });\r\n\r\n var suggestion = {\r\n group: suggestionGroup,\r\n title: matchingDictionary.description,\r\n suggestions: results\r\n };\r\n\r\n if (suggestion.group === \"brand\") {\r\n suggestion.order = 0;\r\n } else if (suggestion.group === \"category\") {\r\n suggestion.order = 1;\r\n } else if (suggestion.group === \"product\") {\r\n suggestion.order = 2;\r\n }\r\n self.options.push(suggestion);\r\n });\r\n if (self.totalSuggestions() === 0) {\r\n let productsResponse = _.find(response, { dictionary: \"product\" });\r\n // let spellCheckSuggestions = productsResponse.spellCheckSuggestions;\r\n let collationSuggestions = productsResponse.spellCheckCollations;\r\n \r\n // if (spellCheckSuggestions.length === 0) {\r\n // return;\r\n // }\r\n \r\n if (collationSuggestions.length === 0 || collationSuggestions[0].hits ===0) {\r\n return;\r\n }\r\n \r\n // let spellCheckSuggestionDisplayString = self.inputText();\r\n // let spellCheckSuggestionString = self.inputText();\r\n //\r\n // _.forEach(spellCheckSuggestions, (spellCheckSuggestion) => {\r\n // spellCheckSuggestionDisplayString = _.replace(spellCheckSuggestionDisplayString, spellCheckSuggestion.originalWord, `<strong>${spellCheckSuggestion.suggestions[0]}</strong>`);\r\n // spellCheckSuggestionString = _.replace(spellCheckSuggestionString, spellCheckSuggestion.originalWord, `${spellCheckSuggestion.suggestions[0]}`);\r\n // });\r\n \r\n self.options.push({\r\n group: \"spellcheck\",\r\n order: 0,\r\n title: \"Bedoelde u dit\",\r\n suggestions: [{\r\n id: \"spellcheck_suggest\",\r\n html: collationSuggestions[0].collationQuery,\r\n url: `/search?searchterm=${collationSuggestions[0].collationQuery}`,\r\n index: ++itemIndex,\r\n order: 0,\r\n }],\r\n })\r\n }\r\n })\r\n .catch(err => {\r\n console.warn('Suggest failed! Error: ' + err);\r\n })\r\n .finally(() => {\r\n self.loader(self.loader() -1);\r\n });\r\n }, 250);\r\n }\r\n\r\n return {viewModel: SearchAutocompleteComponent, template: htmlString};\r\n});\r\n","define(['ko'], function(ko) {\r\n ko.bindingHandlers.clickOutside = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var fn = ko.utils.unwrapObservable(valueAccessor());\r\n\r\n $('html').on('click', function (e) {\r\n if (!($.contains(element, e.target) || element === e.target)) {\r\n fn();\r\n }\r\n });\r\n },\r\n }\r\n});\r\n","// Module\nvar code = `<div data-bind=\"clickOutside: hide\" class=\"suggest position-relative text-left\">\r\n <div data-bind=\"visible: loader() > 0\" class=\"suggest-loader\">\r\n <div class=\"spinner-grow text-primary\" role=\"status\"></div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input data-bind=\"textInput: inputText, event: {keydown: handleKey, click: show}, css: {'form-control-sm': size == 'small'}, hasFocus: autoFocus(), attr: {placeholder: placeholder}\" name=\"searchterm\" type=\"text\" class=\"suggest-search-input\" autocomplete=\"off\" autocapitalize=\"none\">\r\n <button data-bind=\"click: reset\" type=\"reset\" title=\"Zoekopdracht verwijderen\" class=\"clear-icon\"></button>\r\n<!-- <div data-bind=\"visible: isVisible\" class=\"input-group-append\">-->\r\n<!-- <!– todo: fix button css + icon –>-->\r\n<!-- <button data-bind=\"click: hide\" class=\"search-reset btn btn-outline-danger\" type=\"button\">(Verberg)</button>-->\r\n<!-- </div>-->\r\n<!-- <div class=\"input-group-append\">-->\r\n<!-- <!– todo: fix button css + icon –>-->\r\n<!-- <button class=\"search-submit btn btn-outline-primary\" type=\"submit\">(Zoeken)</button>-->\r\n<!-- </div>-->\r\n </div>\r\n <div data-bind=\"visible: isVisible\" class=\"suggest-items\">\r\n <!-- ko foreach: {data: sortedSuggestions, as: 'suggestion'} -->\r\n <div data-bind=\"visible: suggestion.suggestions.length, text: suggestion.title\" class=\"suggest-group-title\"></div>\r\n <div data-bind=\"template: { name: 'search-autocomplete-' + suggestion.group, foreach: suggestion.suggestions, as: 'suggestion' }\" class=\"suggest-group\"></div>\r\n <!-- /ko -->\r\n <div data-bind=\"css: {'xsuggest-active': currentFocus() == 0}, visible: inputText().length > 0\" class=\"suggest-item-button\">\r\n <a data-bind=\"attr: {href: '/search?searchterm=' + inputText()}\" class=\"primary-button medium\">\r\n Toon alle zoekresultaten<!--Toon alle zoekresultaten voor <span class=\"font-italic font-weight-bold\" data-bind=\"text: inputText()\"></span>-->\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n${\"<\" + \"script\"} type=\"text/html\" id=\"search-autocomplete-product\">\r\n <div data-bind=\"css: {'suggest-active': suggestion.index == \\$parentContext.\\$parentContext.\\$data.currentFocus()}\" class=\"suggest-item suggest-item-product\">\r\n <div data-bind=\"visible: suggestion.count > 1\" class=\"suggest-item-count\">\r\n <span data-bind=\"text: suggestion.count\">0</span> varianten\r\n </div>\r\n <a data-bind=\"attr: {href: suggestion.url}\">\r\n <div data-bind=\"visible: suggestion.imageUrl != null, style: {'background-image': 'url(' + suggestion.imageUrl+ ')'}\" class=\"suggest-item-product-image\"></div>\r\n <div class=\"suggest-item-product-info\">\r\n <p class=\"suggest-item-product-brand\" data-bind=\"text: suggestion.brand\"></p>\r\n <h5 class=\"suggest-item-product-title\" data-bind=\"html: suggestion.html\"></h5>\r\n <div>\r\n <p data-bind=\"visible: !_.isEmpty(suggestion.text), text: suggestion.text + '...'\" style=\"white-space: pre-wrap\"></p>\r\n<!-- <div data-bind=\"visible: !_.isEmpty(suggestion.properties), foreach: _.filter(suggestion.properties, (property) => !_.isNull(property.value))\">-->\r\n<!-- <span data-bind=\"text: key + ': ' + value\" class=\"badge badge-pill badge-light\">Light</span>-->\r\n<!-- </div>-->\r\n <div class=\"suggest-item-product-properties\">\r\n <span data-bind=\"text: \\`Artikelnr. \\${suggestion.sku}\\`\"></span>\r\n <!-- ko if: !_.isEmpty(_.filter(suggestion.properties, (prop) => prop.highlight)) -->\r\n <!-- ko foreach: _.filter(suggestion.properties, (propertyValue) => propertyValue.highlight && !_.isNull(propertyValue.value)) -->\r\n <span data-bind=\"text: \\`| \\${\\$data.name}: \\${\\$data.value}\\`\"></span>\r\n <!-- /ko -->\r\n <!-- /ko -->\r\n </div>\r\n <div class=\"suggest-item-product-price-container\">\r\n <span data-bind=\"text: suggestion.price\" class=\"suggest-item-product-price\"></span> <span data-bind=\"text: \\`/ \\${suggestion.uomDescription}\\`\" class=\"suggest-item-product-price-moq\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n${\"<\" + \"/script\"}>\r\n\r\n${\"<\" + \"script\"} type=\"text/html\" id=\"search-autocomplete-brand\">\r\n <div data-bind=\"css: {'suggest-active': suggestion.index == \\$parentContext.\\$parentContext.\\$data.currentFocus()}\" class=\"suggest-item suggest-item-brand\">\r\n <a data-bind=\"html: suggestion.html, attr: {href: suggestion.url}\"></a>\r\n </div>\r\n${\"<\" + \"/script\"}>\r\n${\"<\" + \"script\"} type=\"text/html\" id=\"search-autocomplete-property_Soort\">\r\n <div data-bind=\"css: {'suggest-active': suggestion.index == \\$parentContext.\\$parentContext.\\$data.currentFocus()}\" class=\"suggest-item suggest-item-property_Soort\">\r\n <a data-bind=\"html: suggestion.html, attr: {href: suggestion.url}\"></a>\r\n </div>\r\n${\"<\" + \"/script\"}>\r\n${\"<\" + \"script\"} type=\"text/html\" id=\"search-autocomplete-category\">\r\n <div data-bind=\"css: {'suggest-active': suggestion.index == \\$parentContext.\\$parentContext.\\$data.currentFocus()}\" class=\"suggest-item suggest-item-category\">\r\n <ol class=\"breadcrumb\">\r\n <!-- ko if: !_.isUndefined(suggestion.rootCategory) && !_.isNull(suggestion.rootCategory) -->\r\n <li class=\"breadcrumb-item \">\r\n <a data-bind=\"text: suggestion.rootCategory.name, attr: {href: '/categories/' + suggestion.rootCategory.slug}\">\r\n </a>\r\n </li>\r\n <!-- /ko -->\r\n <!-- ko if: !_.isUndefined(suggestion.subCategory) && !_.isNull(suggestion.subCategory) -->\r\n <li class=\"breadcrumb-item \">\r\n <a data-bind=\"text: suggestion.subCategory.name, attr: {href: '/categories/' + suggestion.rootCategory.slug + '/' + suggestion.subCategory.slug}\">\r\n </a>\r\n </li>\r\n <!-- /ko -->\r\n <li class=\"breadcrumb-item \">\r\n <a data-bind=\"html: suggestion.html, attr: {href: suggestion.url}\"></a>\r\n </li>\r\n </ol>\r\n </div>\r\n${\"<\" + \"/script\"}>\r\n${\"<\" + \"script\"} type=\"text/html\" id=\"search-autocomplete-spellcheck\">\r\n <div data-bind=\"css: {'suggest-active': suggestion.index == \\$parentContext.\\$parentContext.\\$data.currentFocus()}\" class=\"suggest-item suggest-item-spellcheck\">\r\n <a data-bind=\"html: suggestion.html, attr: {href: suggestion.url}\"></a>\r\n </div>\r\n${\"<\" + \"/script\"}>\r\n`;\n// Exports\nmodule.exports = code;"],"names":["module","exports","ko","bindingHandlers","numeric","init","element","valueAccessor","$","on","event","keyCode","ctrlKey","shiftKey","preventDefault","stopBinding","controlsDescendantBindings","virtualElements","allowedBindings","_","isLoggedIn","self","this","searchTerm","observable","pendingOrders","doBounce","loader","htmlString","viewModel","params","apiUrl","defaultTerm","isUndefined","isObservable","hasOpenendDefaultTerm","searchTermField","inputText","extend","rateLimit","autoFocus","placeholder","subscribe","newValue","isVisible","options","observableArray","dictionaries","name","description","url_pattern","order","url_transformer","result","matchingDictionary","url","rootCategory","get","isNull","slug","subCategory","payload","replace","text","title","excludeBy","excludeOptionByField","mapExclusions","exclusions","isFunction","map","exclusion","exclude","change","size","value","aaaa","displayValue","computed","isObject","internalValue","requestCounter","currentFocus","resetFocus","reset","hide","removeAll","show","getOptions","handleKey","data","key","length","includes","totalSuggestions","window","location","matchingIndex","findIndex","allSortedSuggestions","console","warn","match","selectOption","option","pureComputed","sumBy","sortedSuggestions","o","suggestions","flatMap","sug","orderBy","debounce","urlSafeTerm","encodeURIComponent","requestUrl","forEach","dict","requestId","fetch","headers","then","res","status","json","response","itemIndex","sortedDictionaries","suggestionGroup","dictionary","find","dictionarySuggestions","results","useCallbackUrl","callbackUrlResult","has","id","html","RegExp","imageUrl","properties","count","toInteger","brand","ean","sku","index","price","Intl","NumberFormat","style","currency","format","uomDescription","qtyModifier","suggestion","group","push","collationSuggestions","spellCheckCollations","hits","collationQuery","catch","err","finally","template","clickOutside","allBindings","bindingContext","fn","utils","unwrapObservable","e","contains","target"],"sourceRoot":""}