{"version":3,"file":"static/js/796.6f2af7ed.chunk.js","mappings":"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","sources":["shared/merchant/typeahead/merchant-search-result.jsx","shared/merchant/typeahead/merchant-typeahead-module.js","typeahead/Services/httpService.js","typeahead/helpers/dataProvider.js"],"sourcesContent":["import React, { Component } from \"react\"\nimport reactStringReplace from \"react-string-replace\"\n\nexport default class MerchantSearchResult extends Component {\n stringReplace = (text, input) => {\n const words = input.split(\" \").filter(Boolean)\n const regex = new RegExp(\"(\" + words.join(\"*|\") + \")\", \"gi\")\n return reactStringReplace(text, regex, (match, i) => <span key={match + i}>{match}</span>)\n }\n\n render() {\n var noResults = (\n <div className=\"form__section__inner\">\n <div className=\"form__field no-results\">\n <p data-epi-edit=\"NoResults\">{this.props.noResults || \"Ingen resultater...\"}</p>\n </div>\n </div>\n )\n\n if (this.props.data && this.props.data.count === 0) {\n return noResults\n } else if (!this.props.data) {\n return \"\"\n }\n\n return (\n <div className={\"search-result-container--inner\"}>\n {this.props.data.docs?.map((merchant, index) => {\n const nameMarkup = this.stringReplace(merchant.Name, this.props.query)\n return (\n <React.Fragment key={index}>\n <a href={merchant.MerchantURL} data-epi-edit=\"LinkToStore\">\n <div className=\"form__section__inner\">\n <div className=\"store-logo\">\n <img src={merchant.WebLogoUpload_s ?? merchant.WebLogo} />\n </div>\n <div className=\"store-name\">\n {nameMarkup} {merchant.CustomLocationLabel_s}\n </div>\n {merchant.GrabLink_s && merchant.GrabLogoTypeahead_s ? (\n <div className={\"grab-logo\"}>\n <a href={merchant.GrabLink_s} target=\"_blank\" rel=\"noreferrer\">\n <img src={merchant.GrabLogoTypeahead_s} />\n </a>\n </div>\n ) : (\n \"\"\n )}\n <div className=\"store-link\">\n <div data-epi-edit=\"LinkToStore\">{this.props.linkToStore}</div>\n </div>\n </div>\n </a>\n </React.Fragment>\n )\n })}\n </div>\n )\n }\n}\n","import * as dataProvider from \"../../../typeahead/helpers/dataProvider\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport * as endpoints from \"../../../api/endpoints\"\nimport MerchantSearchResult from \"./merchant-search-result\"\n\nexport default class MerchantTypeaheadModule {\n constructor(elem) {\n const self = this\n self.elem = elem\n self.elem.searchInput = elem.querySelector(\"[data-input-search]\")\n self.elem.searchResultContainer = elem.querySelector(\".js-search-result-container\")\n self.clearSearchFieldOnClose = true\n self.language = document.body && document.body.dataset.language\n self.init()\n return self\n }\n\n init() {\n const self = this\n if (self.elem.searchInput) {\n self.elem.searchInput.addEventListener(\"input\", (event) => self.handleSearch(event))\n self.elem.searchInput.addEventListener(\"blur\", (event) => self.handleRemoveSearch(event))\n }\n }\n\n getDataConfig() {\n const self = this\n const input = self.elem.searchInput\n if (input) {\n const config = input.dataset.inputSearch ? JSON.parse(input.dataset.inputSearch) : {}\n return config\n }\n }\n\n handleSearch = async (event) => {\n const self = this\n const { target } = event\n const fetchData = { query: target.value, language: self.language }\n const response = await this.getData(fetchData)\n if (response && response.data) {\n self.mountSearchResults(response.data, target.value)\n } else {\n self.mountSearchResults({}, target.value)\n }\n }\n\n getData = (data) => {\n return endpoints.getMerchantsTypeahead(data)\n }\n\n mountSearchResults = (data, query) => {\n const self = this\n const searchResultContainer = self.elem.searchResultContainer\n const { filteredData, displayGroupNames } = dataProvider.createPageData(data, this.getDataConfig())\n if (searchResultContainer) {\n if (query.length > 0) {\n ReactDOM.unmountComponentAtNode(searchResultContainer)\n ReactDOM.render(\n <MerchantSearchResult\n dataConfig={this.getDataConfig()}\n data={filteredData}\n displayGroupNames={displayGroupNames}\n linkToStore={self.elem.searchInput.dataset.linkToStore}\n noResults={self.elem.searchInput.dataset.noResults}\n query={query}\n />,\n searchResultContainer,\n )\n } else {\n ReactDOM.unmountComponentAtNode(searchResultContainer)\n }\n }\n }\n\n handleRemoveSearch(event) {\n const { target } = event\n setTimeout(() => {\n if (this.clearSearchFieldOnClose) {\n target.value = \"\"\n }\n this.handleSearch(event)\n }, 100)\n }\n}\n","import axios from \"axios\"\n\naxios.defaults.headers.common[\"Content-Type\"] = \"application/json\"\n//axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*';\n\nconst makeRequestCreator = () => {\n let call\n return (url) => {\n if (call) {\n call.cancel(\"Only one request allowed at a time.\")\n }\n call = axios.CancelToken.source()\n return axios.get(url, {\n cancelToken: call.token,\n })\n }\n}\n\nconst getRequest = makeRequestCreator()\n\nconst get = async (url) => {\n try {\n return await getRequest(url)\n } catch (err) {\n if (axios.isCancel(err)) {\n // console.error(`Cancelling previous request: ${err.message}`);\n }\n }\n}\n\nexport default {\n get: get,\n}\n","import http from \"../Services/httpService\"\nimport config from \"../config.json\"\nimport * as trackingHelper from \"../../helpers/tracking\"\n\nexport const getData = (query) => {\n return http.get(config.siteprefix + config.url + query)\n}\n\nexport const createPageData = (data, dataConfig, track = false, eventCategory = \"\", eventLabel = \"\") => {\n const displayGroupNames = {}\n var count = 0\n if (data) {\n for (var propName in data) {\n displayGroupNames[propName] = data[propName].displayGroupName\n if (data[propName].count === 0) {\n data[propName].docs = createZeroStateData(data[propName].docs, propName, dataConfig)\n //delete data[propName];\n } else {\n count += data[propName].count\n }\n }\n trackingHelper.handleSearchTrackingTimeout(track, eventCategory, \"typeahead - 0.5 sec\", eventLabel, count)\n return { filteredData: data, displayGroupNames: displayGroupNames, totalCount: count }\n }\n trackingHelper.handleSearchTrackingTimeout(track, eventCategory, \"typeahead - 0.5 sec\", eventLabel, count)\n return { filteredData: {}, displayGroupNames: displayGroupNames, totalCount: count }\n}\n\nexport const createZeroStateData = (docs, propName, dataConfig) => {\n let config = dataConfig\n if (!config) {\n const desktopSearchBox = document.querySelector(\"[data-input-search]\")\n let config = desktopSearchBox ? desktopSearchBox.dataset.inputSearch : \"\"\n if (config) {\n dataConfig = JSON.parse(config)\n }\n }\n\n if (docs && docs.length > 0) {\n return docs.map((element) => {\n element.name = config.zeroState.data[propName] ? config.zeroState.data[propName].name : \"\"\n element.url = config.zeroState.data[propName] ? config.zeroState.data[propName].url : \"\"\n element.displayGroupName = config.zeroState.data[propName] ? config.zeroState.data[propName].displayGroupName : \"\"\n return element\n })\n } else {\n // let typeahead = {}\n let zeroDataDocs = []\n if (config.zeroState && config.zeroState.data[propName]) {\n zeroDataDocs = config.zeroState.data[propName].map((element) => {\n element.isZeroData = true\n return element\n })\n }\n\n docs = zeroDataDocs\n // element.name = config.zeroState.data[propName] ? config.zeroState.data[propName].name : ''\n // element.url = config.zeroState.data[propName] ? config.zeroState.data[propName].url : ''\n // element.displayGroupName = config.zeroState.data[propName] ? config.zeroState.data[propName].displayGroupName : ''\n // docs.push(element)\n return docs\n }\n}\n"],"names":["MerchantSearchResult","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","stringReplace","text","input","words","split","filter","Boolean","regex","RegExp","join","reactStringReplace","match","i","_jsx","children","_inherits","_createClass","key","value","_this$props$data$docs","_this2","noResults","className","this","props","data","count","docs","map","merchant","index","_merchant$WebLogoUplo","nameMarkup","Name","query","React","href","MerchantURL","_jsxs","src","WebLogoUpload_s","WebLogo","CustomLocationLabel_s","GrabLink_s","GrabLogoTypeahead_s","target","rel","linkToStore","Component","MerchantTypeaheadModule","elem","handleSearch","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","event","self","fetchData","response","wrap","_context","prev","next","language","getData","sent","mountSearchResults","stop","_x","apply","endpoints","searchResultContainer","_dataProvider$createP","dataProvider","getDataConfig","filteredData","displayGroupNames","ReactDOM","dataConfig","searchInput","dataset","querySelector","clearSearchFieldOnClose","document","body","init","addEventListener","handleRemoveSearch","inputSearch","JSON","parse","setTimeout","axios","headers","common","getRequest","call","url","cancel","source","cancelToken","token","makeRequestCreator","get","abrupt","t0","http","config","createPageData","track","undefined","eventCategory","eventLabel","propName","displayGroupName","createZeroStateData","trackingHelper","totalCount","desktopSearchBox","element","name","zeroState","zeroDataDocs","isZeroData"],"sourceRoot":""}