{"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":""}