{"version":3,"sources":["views/Banner/Banner.js","reusable/ReactHelmet.js","views/Modal/Modal.js","views/Home/Home.js"],"names":["Banner","className","style","backgroundImage","position","src","alt","ReactHelmet","title","description","baseTitle","fullTitle","charSet","name","content","rel","href","window","location","Modal","props","ReactDOM","createPortal","onClick","onClose","children","document","getElementById","url","groupsSet","searchTimeout","connect","state","categoryID","useParams","useState","categories","setCategories","products","setProduct","searchProducts","setSearchProduct","allProducts","setAllProducts","allProductsForSearch","setAllProductsForSearch","isProductAvailable","setIsProductAvailable","id","setId","loading","setLoading","showModal","setShowModal","modalProd","setModalProd","groups","setGroups","history","searchQuery","locationSet","searchStr","useEffect","axios","get","then","list","data","retGroups","setTheseGroups","CatRes","newCategory","currentCategories","push","map","ProductRes","length","prev","catch","err","console","log","search","categoryId","split","includes","cateId","smoothScroll","target","top","getBoundingClientRect","scrollTo","pageYOffset","behavior","handleCloseModal","handleSearchClick2","catId","partNum","product_id","a","theseGroups","filter","x","productId","dispatch","pathname","clearTimeout","setTimeout","thisList","published","fuse","Fuse","keys","weight","searchPattern","trim","results","updateProdtcList","forEach","item","makeThisDesc","product","desc","makeDesc","prop","toLowerCase","i","partNumber","fontSize","marginBottom","Loader","find","c","category","sm","md","lg","ccId","order","isProduct","hash","currentPath","editPathName","handleClick","image","categoryName2","onError","e","dangerouslySetInnerHTML","__html","info","URLSearchParams","getParentsUntil","el","selector","parents","_el","parentNode","matches","unshift","querySelectorAll","scrollIntoView","backgroundColor","scrollToProduct","Fragment","undefined","width","height","categoryDescription","columns","field","cellClick","cell","selectedProd","getData","partnumber","headerSort","formatter","getValue","tooltips","layout","renderVertical","renderUI"],"mappings":"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","file":"static/js/2.664cb575.chunk.js","sourcesContent":["import React from 'react'\r\n\r\nfunction Banner() {\r\n let style = {\r\n backgroundImage: 'url(../images/header-bg.jpg)',\n position:'relative'\r\n }\r\n return (\r\n <div className=\"header-img-wrapper\"\r\n style={style} >\r\n <img src=\"../images/LOGO-2021-web.png\" className=\"img-responsive header-img\" alt=\"Latest Rage Banner\" />\n <div className=\"info-box\">\n <div className=\"info-item\">619-445-7553 TEL</div>\n <div className=\"info-item\">619-445-4036 FAX</div>\n <div className=\"info-item\">Sales@LatestRage.net</div>\n </div>\n <div className=\"info-box right\">\n <div className=\"info-item\">905 Tavern Road</div>\n <div className=\"info-item\">Unit 4</div>\n <div className=\"info-item\">Alpine, CA, 91901</div>\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Banner\r\n","import React from 'react';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nfunction ReactHelmet({ title, description }) {\r\n const baseTitle = 'Welcome to Latest Rage';\r\n const fullTitle = title ? `${title || ''} - ${baseTitle}` : baseTitle;\r\n return (\r\n <Helmet>\r\n <meta charSet=\"utf-8\" />\r\n <title>{fullTitle}</title>\r\n <meta name=\"description\" content={description || 'Welcome to Latest Rage'} />\r\n <link rel=\"canonical\" href={window.location.href} />\r\n </Helmet>\r\n );\r\n}\r\n\r\nexport default ReactHelmet;\r\n","import React from 'react'\r\nimport ReactDOM from 'react-dom'\r\n\r\nimport './Modal.scss'\r\n\r\nfunction Modal(props) {\r\n return ReactDOM.createPortal(\r\n <div className=\"modal display-block\" onClick={props.onClose}>\r\n <div className=\"modal-body\">\r\n {props.children}\r\n <hr />\r\n <button onClick={props.onClose}>Close</button>\r\n </div>\r\n </div>,\r\n document.getElementById(\"modal-root\")\r\n )\r\n}\r\n\r\nexport default Modal\r\n","import React, { useState, useEffect } from 'react'\r\nimport { CCard, CCardBody, CCardFooter, CCol, CImg, CRow } from '@coreui/react'\r\nimport axios from 'axios';\r\nimport Banner from '../Banner/Banner'\r\nimport './Home.scss'\r\nimport Modal from \"../Modal/Modal\"\r\n\r\nimport 'react-tabulator/lib/styles.css';\r\nimport \"react-tabulator/css/bootstrap/tabulator_bootstrap.min.css\";\r\nimport { ReactTabulator } from 'react-tabulator'\r\n\r\nimport { useParams } from \"react-router-dom\";\r\nimport { connect } from 'react-redux';\r\nimport { editPathName, searchStr } from 'src/actions';\r\nimport Loader from 'src/reusable/Loader';\r\nimport ReactHelmet from 'src/reusable/ReactHelmet';\nimport Fuse from 'fuse.js';\r\n//import { setTimeout } from 'core-js/library/web/timers';\n\r\n//const url = process.env.API_URL;\r\n//const url = 'https://latestrageapi.com'\nconst url = 'https://latestrageapi2.com';\nlet groupsSet = false;\nlet searchTimeout = null;\n\r\nfunction Home(props) {\r\n let { categoryID } = useParams();\r\n if (!categoryID) categoryID = 0;\r\n const [categories, setCategories] = useState([]);\r\n const [categoryCategories, setCategoryCategories] = useState([]);\n const [products, setProduct] = useState({});\r\n const [searchProducts, setSearchProduct] = useState([]);\r\n const [allProducts, setAllProducts] = useState([]);\n const [allProductsForSearch, setAllProductsForSearch] = useState([]);\r\n const [isProductAvailable, setIsProductAvailable] = useState(false);\r\n const [id, setId] = useState(categoryID);\r\n const [loading, setLoading] = useState(false);\r\n const [showModal, setShowModal] = useState(false)\r\n const [modalProd, setModalProd] = useState(false);\n const [groups, setGroups] = useState([]);\n\r\n const { history } = props;\r\n\r\n const searchQuery = props.locationSet.searchStr;\n\n const setTheseGroups = (groups) => {\n setGroups(groups);\r\n }\n\n //let groupsSet = false;\n //let groups;\n\r\n //set all product list for search products\n const scrollToProduct = () => {\n\n const urlParams = new URLSearchParams(window.location.search);\r\n const partNumber = urlParams.get('partNumber');\n if (!partNumber) return;\n const getParentsUntil = (el, selector) => {\n let parents = [],\n _el = el.parentNode;\n while (_el && typeof _el.matches === 'function') {\n parents.unshift(_el);\n if (_el.matches(selector)) return parents;\n else _el = _el.parentNode;\n }\n return [];\n };\n if (document.querySelectorAll(`[title=\"${partNumber}\"]`).length) {\n if (getParentsUntil(document.querySelectorAll(`[title=\"${partNumber}\"]`)[0], '.products')) {\r\n getParentsUntil(document.querySelectorAll(`[title =\"${partNumber}\"]`)[0], '.products')[0].scrollIntoView();\n getParentsUntil(document.querySelectorAll(`[title =\"${partNumber}\"]`)[0], '.tabulator-row')[0].style.backgroundColor = \"yellow\";;\r\n }\n }\n\n \r\n }\n\n\r\n useEffect(() => {\r\n if (searchQuery)\r\n axios.get(`${url}/api/PriceList/SearchPriceList?query=${searchQuery}`)\r\n .then((list) => {\r\n setAllProducts(list.data);\n setAllProductsForSearch(list.data);\r\n });\r\n }, [searchQuery])\n\n useEffect(() => {\n if (groupsSet) return;\n axios\r\n .get(`${url}/api/PriceList/GetAllProductGroups`)\r\n .then(retGroups => {\n setTheseGroups(retGroups.data)\n groupsSet = true;\r\n })\r\n })\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n axios\r\n .get(`${url}/api/PriceList/GetCategories?id=${id}`)\r\n .then(CatRes => {\r\n const newCategory = { id: id, categories: CatRes.data };\r\n const currentCategories = categories;\r\n currentCategories.push(newCategory);\r\n setCategories(currentCategories);\r\n CatRes.data.map((data) => (\r\n axios\r\n .get(`${url}/api/PriceList/GetProductGroups?id=${data.id}`)\r\n .then(ProductRes => {\n if (!ProductRes || !ProductRes.data) return;\r\n if (ProductRes.data.length)\r\n setProduct((prev) => ({ ...prev, [data.id]: ProductRes.data }));\r\n if (CatRes.data.length === 0) {\r\n setIsProductAvailable(!isProductAvailable);\r\n }\r\n setLoading(false);\r\n })\r\n ))\r\n }).catch((err) => console.log(err));\r\n\r\n }, [categories, id, isProductAvailable])\r\n\r\n useEffect(() => {\r\n if (props.location.search) {\r\n let categoryId = props.location.search.split('categoryID=')[1];\r\n if (props.location.search.includes(\"&\")) {\r\n let cateId = categoryId.split(\"&\")[0]\r\n setId(cateId)\r\n }\r\n else {\r\n setId(categoryId)\r\n }\r\n }\r\n }, [props.location.search])\r\n\r\n const handleClick = (catId, isProduct) => {\r\n if (isProduct) {\r\n history.push({\r\n pathname: props.location.pathname,\r\n search: props.location.search,\r\n hash: `#pg_${catId}`,\r\n });\r\n smoothScroll(document.getElementById(`pg_${catId}`));\r\n } else {\r\n setId(catId);\r\n const currentPath = `/catalogue?categoryID=${catId}`;\r\n props.dispatch(editPathName(currentPath));\r\n history.push({\r\n pathname: '/catalogue',\r\n search: `?categoryID=${catId}`,\r\n state: { catId: catId }\r\n });\r\n }\r\n }\r\n\r\n const smoothScroll = (target) => {\r\n const { top } = target.getBoundingClientRect()\r\n window.scrollTo({\r\n top: top + window.pageYOffset,\r\n behavior: \"smooth\"\r\n });\r\n }\r\n\r\n const handleCloseModal = () => setShowModal(false);\r\n\r\n const handleSearchClick = (catId, partNum, product_id) => {\r\n props.dispatch(searchStr(''))\n\n if (catId == null || catId == 'null') {\n\n axios\r\n .get(`${url}/api/PriceList/GetAllProductGroups`)\r\n .then(groups => {\r\n //console.log('groups', { ...groups });\n //if (groupsSet) return;\n //setGroups(groups)\n //groupsSet = true;\n let theseGroups = groups.filter(x => x.productId == product_id)\r\n console.log('theseGroups', theseGroups)\n\n history.push({\r\n pathname: '/catalogue',\r\n search: `?categoryID=${catId}&partNumber=${partNum}`,\r\n })\r\n })\n\n \n }\n\n\r\n \r\n }\n\n const handleSearchClick2 = async (catId, partNum, product_id) => {\n\n if (catId == null || catId == 'null') {\n\n let theseGroups = groups.filter(x => x.productId == product_id)\n theseGroups = theseGroups.filter(x => x.categoryId != null);\n console.log('theseGroups', theseGroups)\n if (theseGroups.length) catId = theseGroups[0].categoryId\n props.dispatch(searchStr(''))\r\n history.push({\r\n pathname: '/catalogue',\r\n search: `?categoryID=${catId}&partNumber=${partNum}`,\r\n })\n \n window.location.href = `/catalogue?categoryID=${catId}&partNumber=${partNum}`\n\n } else {\n history.push({\r\n pathname: '/catalogue',\r\n search: `?categoryID=${catId}&partNumber=${partNum}`,\r\n })\n window.location.href = `/catalogue?categoryID=${catId}&partNumber=${partNum}`\r\n }\n\n \r\n }\r\n\n \n \r\n useEffect(() => {\r\n //console.log('search', searchQuery)\n if (searchQuery) {\n \r\n //const searchStrLower = searchQuery.toLowerCase();\r\n //const updateProdtcList = allProducts?.filter((pr) => pr.published && (pr.name?.toLowerCase().includes(searchStrLower) ||\r\n // pr.partNumber.toLowerCase().includes(searchStrLower)));\r\n //setSearchProduct(updateProdtcList);\n \n\n //console.log('search ', searchTimeout ? 'running' : 'not running')\n if (searchTimeout) clearTimeout(searchTimeout)\n\n searchTimeout = setTimeout(() => {\n const fuseOptions = {\n //threshold: 1.0,\n //findAllMatches: true,\n //location: 1000,\n //distance: 1000,\n //caseSensitive: false,\n //useExtendedSearch: true,\r\n keys: [\n {\n name: 'partNumber',\r\n weight: 0.3\r\n },\n {\n name: 'name',\r\n weight: 0.7\r\n }\n ]\r\n };\n let thisList = [...allProductsForSearch.filter(x => x.published === true)];\n\r\n const fuse = new Fuse(thisList, fuseOptions);\r\n const searchPattern = searchQuery.trim()\r\n const results = fuse.search(searchPattern)\n\n let updateProdtcList = [];\n results.forEach(x => {\n updateProdtcList.push(x.item);\r\n })\n\n setSearchProduct(updateProdtcList);\n clearTimeout(searchTimeout)\r\n }, 500)\n\n \r\n }\r\n }, [allProducts, products, searchQuery]);\r\n\r\n const renderUI = () => {\n\n const makeThisDesc = (product) => {\n let desc = '';\n const makeDesc = (prop) => {\r\n if (product[prop]) {\r\n if (prop == 'color' && product[prop].toLowerCase() == 'none') return;\r\n //if (prop == 'note1' || prop == 'note2') desc += '<br><strong>' + product[prop] + '</strong>';\r\n else if (desc.length) desc += ', ' + product[prop];\r\n else desc += product[prop]\r\n }\r\n }\r\n makeDesc('name');\n makeDesc('type');\r\n makeDesc('size');\r\n makeDesc('color');\r\n makeDesc('features');\r\n makeDesc('material');\r\n makeDesc('unit');\r\n makeDesc('note1');\r\n makeDesc('note2');\n return desc;\r\n }\r\n\n\n\r\n return searchQuery ? <div className=\"searchArea\">\r\n <ul>\r\n {searchProducts ?\r\n searchProducts?.length === 0 ? <div>No Data Found</div> :\n searchProducts.map((product, i) => {\n //if (product && product.partNumber == '501300-27')console.log('searchProducts', product)\n //\n return (\n <li key={i} className=\"font-weight-bold\" onClick={() => handleSearchClick2(`${product.categoryId}`, `${product.partNumber}`, `${product.productId}`)}>\r\n <span className=\"black-text\">{product.name} </span>\n <span className=\"blue-text\">{`${product.partNumber} `}</span>\r\n <table style={{ fontSize: 'small', marginBottom: '20px' }}>\n <tbody>\n <tr>\n <td>{makeThisDesc(product)}</td>\n </tr>\n </tbody>\n \n </table>\r\n {/*<br />*/}\r\n {/*<small className=\"black-text font-weight-bold\">CATEGORY: {product.type + \" \" + product.name}</small>*/}\r\n </li>)\n })\n : ''}\r\n </ul>\r\n </div> :\r\n loading ? <Loader /> : <>\r\n <CRow>\r\n {\r\n categories.find(c => c.id === id)?.categories.map(category => (\r\n category.published\r\n ?\r\n <CCol sm=\"2\" md=\"4\" lg=\"2\" key={category.id} >\r\n <CCard key={category.id} data-id={category.id} data-publish={category.published}\r\n data-ccid={category.ccId} data-category-id={category.categoryId} data-order={category.order} onClick={() => handleClick(`${category.id}`, products[category.id])}>\r\n <CCardBody className=\"img-wrapper\">\r\n <CImg src={`https://s3.us-west-2.amazonaws.com/lr-photos/${category.image}`} alt={category.categoryName2}\r\n onError={(e) => e.target.src = 'https://lr-photos.s3-us-west-2.amazonaws.com/category/placer.jpg'} />\r\n </CCardBody>\r\n <CCardFooter className=\"title\">\r\n <div dangerouslySetInnerHTML={{ __html: category.categoryName2 }}></div>\r\n </CCardFooter>\r\n </CCard>\r\n </CCol>\r\n : null\r\n ))\r\n }\r\n </CRow>\r\n {\r\n categories.find(c => c.id === id)?.categories.map(category => {\r\n const info = products[category.id];\n\n setTimeout(() => {\n //console.log('settimeout')\n scrollToProduct()\r\n },1000)\n\r\n return (\r\n <React.Fragment key={category.id}>\r\n {\r\n (info !== undefined) && category.published &&\r\n <div id={`pg_${category.id}`} className=\"products\" style={{width:'calc(100% - 20px)', height:'fit-content'}}>\r\n <div className=\"product-title\">\r\n <img src={`https://s3.us-west-2.amazonaws.com/lr-photos/${category.image}`} alt={category.categoryName2} onError={(e) => e.target.src = 'https://lr-photos.s3-us-west-2.amazonaws.com/category/placer.jpg'} height=\"200px\" />\r\n <h3 dangerouslySetInnerHTML={{ __html: category.categoryName2 }}></h3>\r\n <span dangerouslySetInnerHTML={{ __html: category.categoryDescription }}></span>\r\n </div>\r\n <ReactTabulator\r\n columns={[\r\n {\r\n title: \"Part#\", field: \"partnumber\", width: 200, cellClick: (e, cell) => {\r\n setShowModal(true);\r\n const selectedProd = info.find((product) => product.partNumber === cell.getData().partnumber);\r\n setModalProd(selectedProd)\r\n }, headerSort: false,\r\n formatter: (cell) => {\r\n let { image } = cell.getData();\r\n return (`<strong>${cell.getValue()} ${image ? '<i aria-hidden=\"true\"></i>' : ''}</strong>`)\r\n }\r\n },\r\n {\r\n title: \"Description\", field: \"description\", headerSort: false, formatter: (cell) => {\r\n\r\n return (`<div style=\"\">${cell.getValue()}</div>`)\r\n }\r\n }\r\n ]}\r\n data={\n\r\n info.map(product => {\r\n if (!product.published) return;\r\n let desc = '';\r\n const makeDesc = (prop) => {\r\n if (product[prop]) {\r\n if (prop == 'color' && product[prop].toLowerCase() == 'none') return;\r\n if (prop == 'note1' || prop == 'note2') desc += '<br><strong>' + product[prop] + '</strong>';\r\n else if (desc.length) desc += ', ' + product[prop];\r\n else desc += product[prop]\r\n }\r\n }\r\n makeDesc('name');\r\n makeDesc('size');\r\n makeDesc('color');\r\n makeDesc('features');\n makeDesc('type');\r\n makeDesc('material');\r\n makeDesc('unit');\r\n makeDesc('note1');\r\n makeDesc('note2');\r\n\r\n return {\r\n partnumber: `${product.partNumber}`,\r\n description: `${desc}`,\r\n image: product.image\n\r\n }\r\n })\r\n }\n\r\n tooltips={true}\r\n layout={\"fitColumns\"}\n renderVertical={\"basic\"}\n height={info.filter(x => x.published).length * 38}\r\n />\r\n </div>\r\n }\r\n </React.Fragment>\r\n )\r\n })\r\n }\r\n {showModal && modalProd && (\r\n <Modal onClose={handleCloseModal}>\r\n <CImg src={`https://s3.us-west-2.amazonaws.com/lr-photos/${modalProd.image}`} alt={modalProd.partNumber}\r\n onError={(e) => e.target.src = 'https://lr-photos.s3-us-west-2.amazonaws.com/category/placer.jpg'}\r\n width=\"250px\" height=\"250px\" /></Modal>\r\n )}\r\n </>\r\n }\r\n\r\n return (\r\n <div>\r\n <ReactHelmet title=\"Home\" />\r\n <Banner />\r\n <div className=\"main-content\">\r\n {renderUI()}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nconst select = state => state;\r\nexport default connect(select)(Home);\r\n"],"sourceRoot":""}