{"version":3,"file":"autosuggestion.min.js","names":["AutoSuggestion","_AntiForgeryToken","id","$","ajax","url","type","dataType","beforeSend","xhr","setRequestHeader","success","complete","data","html","responseText","error","APIEndPoint","window","location","origin","SearchPageURL","queryParams","URLSearchParams","search","querySearch","get","searchData","setSearchData","React","useState","searchDataProducts","setSearchDataproducts","setError","searchQuery","setSearchQuery","apiCallFlag","setApiCallFlag","apidataFlag","setDataCallFlag","getProductName","pname","name","replace","toLowerCase","useEffect","query","timeout","setTimeout","length","encodeURIComponent","responseCode","fetch","method","headers","RequestVerificationToken","val","then","results","status","json","hasOwnProperty","StatusCode","ErrorMessage","keywords","products","clearTimeout","onScroll","pageYOffset","find","hide","removeEventListener","addEventListener","passive","wrapperRef","useRef","useOutsideAlerter","ref","handleClickOutside","event","current","contains","target","document","props","handleSearchQueryChange","value","handleSearchQueryEnter","key","href","handleSearchButtonClick","createElement","className","onKeyDown","onChange","placeholder","onFocus","show","autoComplete","onClick","style","display","map","index","suggestion","product","product_display_name","raw","product_pronto_code","product_images","src","alt","product_name","ReactDOM","render","querySelector"],"sources":["autosuggestion.js"],"sourcesContent":["'use strict';\r\nconst AutoSuggestion = () => {\r\n var APIEndPoint= window.location.origin;\r\n var SearchPageURL = window.location.origin+'/search';\r\n const queryParams = new URLSearchParams(window.location.search);\r\n var querySearch = queryParams.get('s');\r\n const [searchData, setSearchData] = React.useState([]);\r\n const [searchDataProducts, setSearchDataproducts] = React.useState([]);\r\n const [error, setError] = React.useState('');\r\n const [searchQuery, setSearchQuery] = React.useState(querySearch?querySearch:''); \r\n const [apiCallFlag, setApiCallFlag] = React.useState(false); \r\n const [apidataFlag, setDataCallFlag] = React.useState(false); \r\n\r\n //Global functions\r\n const getProductName = (pname) =>{\r\n var name = '';\r\n let re1 = /[^\\w\\d]/ig;\r\n name = pname.replace(re1, '-');\r\n\r\n let re2 = /[ ]/;\r\n name = name.replace(re2, '-');\r\n\r\n let re3 = /-+/g;\r\n name = name.replace(re3,'-');\r\n return name.toLowerCase();\r\n\r\n }\r\n function _AntiForgeryToken(id) {\r\n $.ajax({\r\n url: \"/login/RefreshToken\",\r\n type: \"GET\",\r\n dataType: \"json\",\r\n beforeSend: function (xhr) {\r\n xhr.setRequestHeader('Content-Type', 'application/json');\r\n },\r\n success: function (data) {\r\n //console.log(data);\r\n },\r\n complete: function (data) {\r\n //console.log(\"Hello\", data);\r\n $(id).html(data.responseText);\r\n // Set our complete callback, \r\n },\r\n error: function (e) {\r\n //alert(\"error\");\r\n }\r\n });\r\n }\r\n React.useEffect(() => {\r\n if(apiCallFlag==true && apidataFlag==false){\r\n var query='';\r\n const timeout = setTimeout(() => {\r\n const apiCallToGetSuggest = () =>{\r\n query = '';\r\n if(searchQuery !== null && searchQuery !== '' && searchQuery.length>=2){\r\n query +='q='+encodeURIComponent(searchQuery);\r\n setSearchData([]);\r\n setSearchDataproducts([]);\r\n var responseCode = '';\r\n //suggestions\r\n fetch(APIEndPoint +'/api/middys?name=suggest&'+query,{\r\n method: 'GET',\r\n headers: {\r\n \"RequestVerificationToken\": $(\"#checkloginApi [name='__RequestVerificationToken']\").val()\r\n }\r\n }).then(results => {\r\n responseCode = results.status;\r\n return results.json()\r\n }\r\n ).then(data => {\r\n _AntiForgeryToken(\"#checkloginApi\");\r\n if(data.hasOwnProperty('StatusCode')){\r\n if(data.StatusCode === 204){\r\n setError('')\r\n }else{\r\n if(data.hasOwnProperty('ErrorMessage')){\r\n setError(data.ErrorMessage);\r\n }\r\n } \r\n }else{\r\n setDataCallFlag(true);\r\n if(data.hasOwnProperty(\"keywords\")){\r\n setSearchData(data.keywords);\r\n } \r\n if(data.hasOwnProperty(\"products\")){\r\n setSearchDataproducts(data.products);\r\n } \r\n } \r\n }, (error) => {\r\n _AntiForgeryToken(\"#checkloginApi\");\r\n setError('Error while getting response');\r\n });\r\n }else{\r\n setDataCallFlag(false);\r\n setSearchData([]);\r\n setSearchDataproducts([]);\r\n }\r\n }\r\n apiCallToGetSuggest(1);\r\n }, 300)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [searchQuery,apiCallFlag,apidataFlag])\r\n \r\n\r\n\r\n React.useEffect(() => {\r\n const onScroll = () => {\r\n if(window.pageYOffset!==0){\r\n $(\"#searchForm\").find('.autosuggest').hide();\r\n }\r\n }\r\n window.removeEventListener('scroll', onScroll);\r\n window.addEventListener('scroll', onScroll, { passive: true });\r\n return () => window.removeEventListener('scroll', onScroll);\r\n }, []);\r\n function useOutsideAlerter(ref) {\r\n React.useEffect(() => {\r\n function handleClickOutside(event) {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n $(\"#searchForm\").find('.autosuggest').hide();\r\n }\r\n }\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n }, [ref]);\r\n }\r\n\r\n const wrapperRef = React.useRef(null);\r\n useOutsideAlerter(wrapperRef);\r\n\r\n const getSearchForm= (props) =>{\r\n const handleSearchQueryChange=(event)=>{\r\n setError('');\r\n if(event.target.value.length<=2){\r\n setSearchData([]);\r\n setSearchDataproducts([]);\r\n }\r\n setDataCallFlag(false);\r\n setApiCallFlag(true);\r\n setSearchQuery(event.target.value);\r\n }\r\n const handleSearchQueryEnter=(event)=>{\r\n if(event.key === 'Enter') {\r\n if(searchQuery.length>0){\r\n if(searchQuery!== null && searchQuery !=='' && searchQuery.length>=2){\r\n window.location.href = SearchPageURL+'?s='+encodeURIComponent(searchQuery);\r\n }else{\r\n setError('Please enter more than 1 character'); \r\n } \r\n }\r\n else{\r\n setError('Please enter a search query');\r\n } \r\n }\r\n }\r\n const handleSearchButtonClick = () =>{\r\n if(searchQuery.length>0){\r\n if(searchQuery!== null && searchQuery !=='' && searchQuery.length>=2){\r\n window.location.href = SearchPageURL+'?s='+encodeURIComponent(searchQuery);\r\n }else{\r\n setError('Please enter more than 1 character');\r\n }\r\n }else{\r\n setError('Please enter a search query');\r\n } \r\n }\r\n\r\n return (\r\n \r\n