{"version":3,"sources":["Api/Api.js","components/OrgModal.js","components/Header.js","components/PaginationBasic.js","components/PaginationSmall.js","components/OrgList.js","config.js","components/Search.js","components/Membership.js","components/Spinner.js","components/Home.js","components/Details.js","components/Error.js","App.js","serviceWorker.js","index.js"],"names":["headersConfig","headers","OrgModal","props","_formatPhone","phone","rawPhone","replace","trim","substr","substring","show","className","org","name","addressLine1","addressLine2","city","state","zipCode","href","contactEmail","contactPhone","url","webUrl","target","onClick","closeModal","Header","src","PaginationBasic","numberOfPages","changePage","page","pages","number","push","Pagination","Item","key","active","style","zIndex","marginBottom","PaginationSmall","console","log","Prev","disabled","Next","OrgList","filteredOrganizations","getOrganizationInfo","handlePageChange","Math","ceil","length","parseInt","startNumber","max","colSpan","slice","map","id","Search","searchTerm","handleSearch","searchBy","setSearchBy","for","value","onChange","e","placeholder","type","title","icon","faTimesCircle","size","Membership","Spinner","alt","Home","useState","organizations","setOrganizations","setFilteredOrganizations","setSearchTerm","organization","setOrganization","showInfo","setShowInfo","orgCount","setOrgCount","setPage","isLoading","setIsLoading","setActivePage","useEffect","axios","get","config","then","r","data","list","_handleInfoToggle","term","orgs","filter","o","searchString","toLowerCase","includes","find","newPage","Details","useParams","Object","keys","catch","_api","Error","App","path","component","exact","Boolean","window","location","hostname","match","ReactDOM","render","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister","error","message"],"mappings":"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","file":"static/js/main.97841be1.chunk.js","sourcesContent":["import React from 'react';\r\nimport axios from 'axios';\r\nimport * as config from \"../config\";\r\n\r\nconst headersConfig = {\r\n    headers: {\r\n      \"Content-Type\": \"application/json\",\r\n      \"Access-Control-Allow-Origin\": \"*\",\r\n    },\r\n  };\r\n  \r\nexport const getOrganizations = () => {\r\n  return axios.get(\r\n      config.apiBaseUrl + 'getorganizations',\r\n      headersConfig\r\n  ).then((r) => r.data);\r\n}\r\n\r\nexport const getOrganization = (id) => {\r\n  return axios.get(\r\n    config.apiBaseUrl + `getorganization/${id}`,\r\n    headersConfig\r\n  ).then((r) => r.data)\r\n  .catch(e => console.log(\"api error\", e));\r\n}","import React from 'react';\r\n\r\nconst OrgModal = (props) => {\r\n    function _formatPhone(phone) {\r\n        let rawPhone = phone.replace(\"(\", \"\").replace(\") \", \"\").replace(\" \", \"\").replace(\"-\", \"\").replace(\"E\", \" E\").trim();\r\n\r\n        if(rawPhone !== '') {\r\n            return rawPhone.substr(0, 3) + \"-\" + rawPhone.substr(3, 3) + \"-\" + rawPhone.substr(6, 4) + rawPhone.substring(10);\r\n        } else {\r\n            return \"\";\r\n        }\r\n    }\r\n\r\n    function _formatWebUrl(url) {\r\n        if(url.substr(0,4) !== \"http\") {\r\n            return \"https://\" + url;\r\n        } else {\r\n            return url;\r\n        }\r\n    }\r\n\r\n    return (\r\n        <>\r\n        {props.show ?\r\n        <div>\r\n            <div className=\"modal-info\">\r\n                <div className=\"modal-content\">\r\n                    <div className=\"modal-body\">\r\n                        <div className=\"d-flex justify-content-center\">\r\n                            <h5><strong>{props.org.name}</strong></h5>\r\n                        </div>\r\n                            <div className=\"row w-100 mt-2\">\r\n                                <div className=\"col-sm-12 col-md-4 text-md-right\">\r\n                                    <strong>Address</strong>\r\n                                </div>\r\n                                <div className=\"col-sm-12 col-md-8\">\r\n                                    <div className=\"flex-fill w-100\">\r\n                                        <div className=\"d-block\">\r\n                                            {props.org.addressLine1}\r\n                                        </div>\r\n                                        {props.org.addressLine2 !== \"\" && (\r\n                                        <div className=\"d-block\">\r\n                                            {props.org.addressLine2}\r\n                                        </div>\r\n                                        )}\r\n                                        <div className=\"d-block\">\r\n                                            {props.org.city}, {props.org.state} {props.org.zipCode}\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"row w-100 mt-2\">\r\n                                <div className=\"col-sm-12 col-md-4 text-md-right\">\r\n                                    <strong>Email</strong>\r\n                                </div>\r\n                                <div className=\"col-sm-12 col-md-8\">\r\n                                    <div className=\"flex-fill w-100\">\r\n                                        <div className=\"d-block\">\r\n                                            <a href={`mailto:${props.org.contactEmail}`}>{props.org.contactEmail}</a>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"row w-100 mt-2\">\r\n                                <div className=\"col-sm-12 col-md-4 text-md-right\">\r\n                                    <strong>Phone</strong>\r\n                                </div>\r\n                                <div className=\"col-sm-12 col-md-8\">\r\n                                    <div className=\"flex-fill w-100\">\r\n                                        <a href={`tel:${_formatPhone(props.org.contactPhone)}`}>{_formatPhone(props.org.contactPhone)}</a>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"row w-100 mt-2\">\r\n                                <div className=\"col-sm-12 col-md-4 text-md-right\">\r\n                                    <strong>Website</strong>\r\n                                </div>\r\n                                <div className=\"col-sm-12 col-md-8\">\r\n                                    <div className=\"flex-fill w-100\">\r\n                                        <div className=\"d-block\">\r\n                                            <a href={_formatWebUrl(props.org.webUrl)} target=\"_blank\">{props.org.webUrl}</a>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n\r\n                        <div className=\"d-flex justify-content-end\">\r\n                            <button className=\"btn button-aanp-primary\" onClick={props.closeModal}>Close</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            </div>\r\n    : null }\r\n        </>\r\n    )\r\n}\r\n\r\nexport default OrgModal;","import React from 'react';\r\n\r\nconst Header = () => {\r\n    return (\r\n        <div className=\"container-fluid aanp-header\">\r\n            <div className=\"d-flex justify-content-center\">\r\n                <img className=\"img-responsive\" src=\"https://my.aanpqa.com/assets/images/logos/logo-stacked@2x.png\" />\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default Header;","import React from 'react';\r\nimport { Pagination } from 'react-bootstrap';\r\n\r\nconst PaginationBasic = ({ numberOfPages, changePage, page }) => {\r\n    let pages = [];\r\n    for(let number = 1; number <= numberOfPages; number++) {\r\n        pages.push(\r\n            <Pagination.Item key={number} active={number === page} onClick={() => changePage(number)} style={{ zIndex: \"1\" }} >\r\n                {number}\r\n            </Pagination.Item>\r\n        );\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <Pagination style={{ marginBottom: \"0px\" }}>{pages}</Pagination>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default PaginationBasic;","import React from 'react';\r\nimport { Pagination } from 'react-bootstrap';\r\n\r\nconst PaginationSmall = ({ numberOfPages, changePage, page }) => {\r\n    let pages = [];\r\n    console.log(\"small page\", page);\r\n    if(page-1 <= 0) {\r\n        pages.push(\r\n            <Pagination.Prev disabled style={{ zIndex: \"1\" }} />\r\n        );\r\n    } else {\r\n        pages.push(\r\n            <Pagination.Prev key={page-1} active={false} onClick={() => changePage(page-1)} style={{ zIndex: \"1\" }} />\r\n        );\r\n    }\r\n\r\n    if(page >= numberOfPages) {\r\n        pages.push(\r\n            <Pagination.Next disabled style={{ zIndex: \"1\" }} />\r\n        );\r\n    } else {\r\n        pages.push(\r\n            <Pagination.Next key={page+1} active={false} onClick={() => changePage(page+1)} style={{ zIndex: \"1\" }} />\r\n        );\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <Pagination style={{ marginBottom: \"0px\" }}>{pages}</Pagination>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default PaginationSmall;","import React from 'react';\r\nimport PaginationBasic from './PaginationBasic';\r\nimport { pageSize } from \"../config\";\r\nimport PaginationSmall from './PaginationSmall';\r\n\r\nconst OrgList = ({filteredOrganizations, getOrganizationInfo, page, handlePageChange}) => {\r\n    const numberOfPages = Math.ceil(filteredOrganizations.length / parseInt(pageSize, 10));\r\n    const startNumber = Math.max(0, ((page-1) * pageSize));\r\n\r\n    return (\r\n        <div className=\"px-1 m-2\">\r\n            <div className=\"table-responsive-sm\">\r\n            <table className=\"table table-hover\">\r\n                <thead>\r\n                    <tr className=\"\">\r\n                        <th className=\"\">Organization</th>\r\n                        <th colSpan=\"2\">\r\n                            <div className=\"d-flex w-full flex-row-reverse align-items-baseline display-lg\">\r\n                                <PaginationBasic numberOfPages={numberOfPages} changePage={handlePageChange} page={page} />\r\n                            </div>\r\n                            <div className=\"d-flex w-full flex-row align-items-baseline display-sm\">\r\n                                <PaginationSmall numberOfPages={numberOfPages} changePage={handlePageChange} page={page} />\r\n                            </div>\r\n                        </th>\r\n                    </tr>\r\n                </thead>\r\n                <tbody>\r\n                {filteredOrganizations.slice(startNumber, (startNumber+pageSize)).map(org => {\r\n                    return (\r\n                        <tr className=\"clickable-row\" onClick={() => getOrganizationInfo(org.id)}>\r\n                            <td className=\"w-75\">{org.name}</td>\r\n                            <td>{org.city}, {org.state}</td>\r\n                            <td className=\"display-lg\">\r\n                                <div className=\"d-flex flex-row-reverse\">\r\n                                    <button className=\"btn button-more-info shadow rounded\" id={org.id}>More Info</button>\r\n                                </div>\r\n                            </td>\r\n                        </tr>\r\n                    )\r\n                })}\r\n                {filteredOrganizations.length === 0 &&\r\n                    (\r\n                        <div className=\"vw-2/3 mx-auto text-800-grey font-bold px-3 py-3 text-2xl\">No organizations fit your search criteria</div>\r\n                    )}\r\n                </tbody>\r\n                <tfoot>\r\n                    <tr className=\"\">\r\n                        <th className=\"\"></th>\r\n                        <th colSpan=\"2\">\r\n                            <div className=\"d-flex w-full flex-row-reverse align-items-baseline display-lg\">\r\n                                <PaginationBasic numberOfPages={numberOfPages} changePage={handlePageChange} page={page} />\r\n                            </div>\r\n                            <div className=\"d-flex w-full flex-row align-items-baseline display-sm\">\r\n                                <PaginationSmall numberOfPages={numberOfPages} changePage={handlePageChange} page={page} />\r\n                            </div>\r\n                        </th>\r\n                    </tr>\r\n                </tfoot>\r\n            </table></div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default OrgList;","export const apiBaseUrl = \"/api/organization/\";\r\nexport const pageSize = 25;","import React from 'react';\r\nimport { faTimesCircle } from \"@fortawesome/free-solid-svg-icons\"\r\nimport  { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nconst Search = ({searchTerm, handleSearch, searchBy, setSearchBy}) => {\r\n    return (\r\n        <div className=\"px-4 m-2\">\r\n            <div className=\"d-flex bg-white py-2 pr-1 mx-1 my-1 search-text\">\r\n                Search our directory of NP Organizations by choosing a search category (name, city, or state), and then entering a search term in the field provided.\r\n            </div>\r\n            <div className=\"row\">\r\n                <div className=\"col-md-3 col-sm-12 pl-3\">\r\n                    <label for=\"searchBy\"><strong>Search By</strong></label>\r\n                    <select id=\"searchBy\" value={searchBy} onChange={(e) => setSearchBy(e.target.value)} className=\"form-control form-control-lg shadow rounded search-list\">\r\n                        <option value=\"name\">Name</option>\r\n                        <option value=\"city\"> City</option>\r\n                        <option value=\"state\">State (Abbr)</option>\r\n                    </select>\r\n                </div>\r\n                <div className=\"col-md-9 col-sm-12 mt-md-0 mt-3\">\r\n                    <label for=\"searchTerm\"><strong>Search Term</strong></label>\r\n                    <div className=\"searchWithClearIcon d-flex justify-content-between\">\r\n                        <input className=\"form-control form-control-lg shadow rounded\" id=\"searchTerm\" \r\n                            placeholder=\"Enter search term\" type=\"text\" value={searchTerm} onChange={(e) => handleSearch(e.target.value)} />\r\n                        <a title=\"Clear Search Values\" href=\"#\" onClick={(e) => handleSearch(\"\")}>\r\n                            <FontAwesomeIcon icon={faTimesCircle} size=\"3x\" className=\"clearIcon rounded\" />\r\n                        </a>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default Search;","import React from 'react';\r\nimport { faAddressBook, faUserMd, faChalkboard } from \"@fortawesome/free-solid-svg-icons\"\r\nimport  { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nconst Membership = () => {\r\n    return (\r\n        <div className=\"p-4 mx-2\">\r\n            {/* <div className=\"d-flex flex-column justify-content-center mb-4\">\r\n                <h3 className=\"text-center\">Your Company, Nonprofit and Employees Can Join <span className=\"text-600 header-red\">AANP!</span></h3>\r\n                <h5 className=\"text-center\">Benefits of AANP NP Organization Membership include</h5>\r\n            </div>\r\n            <div class=\"card-deck mb-1 text-center\">\r\n                <div class=\"card mb-4 box-shadow\">\r\n                <div class=\"card-header\">\r\n                    <h4 class=\"my-0 font-weight-normal\">Networking</h4>\r\n                </div>\r\n                <div class=\"card-body\">\r\n                    <FontAwesomeIcon icon={faAddressBook} size=\"6x\" />\r\n                    <div className=\"text-left mt-3\">\r\n                        Free AANP National Conference registration for one elected official or executive staff.\r\n                    </div>\r\n                </div>\r\n                </div>\r\n                <div class=\"card mb-4 box-shadow\">\r\n                <div class=\"card-header\">\r\n                    <h4 class=\"my-0 font-weight-normal\">Advocacy</h4>\r\n                </div>\r\n                <div class=\"card-body\">\r\n                    <FontAwesomeIcon icon={faUserMd} size=\"6x\" />\r\n                    <div className=\"text-left mt-3\">\r\n                    Free practice and legislative consultation with AANP Government Affairs staff.\r\n                    </div>\r\n                </div>\r\n                </div>\r\n                <div class=\"card mb-4 box-shadow\">\r\n                <div class=\"card-header\">\r\n                    <h4 class=\"my-0 font-weight-normal\">Education</h4>\r\n                </div>\r\n                <div class=\"card-body\">\r\n                    <FontAwesomeIcon icon={faChalkboard} size=\"6x\" />\r\n                    <div className=\"text-left mt-3\">\r\n                        Substantial discount on CE accreditation fees through the AANP CE Center.\r\n                    </div>\r\n                    <button type=\"button\" class=\"btn btn-lg btn-block btn-primary\">Contact us</button> \r\n                </div>\r\n                </div>\r\n            </div> */}\r\n            <div className=\"d-flex flex-column align-items-center mb-4\">\r\n                <a href=\"https://www.aanp.org/membership/memberships-for-organizations\" target=\"_blank\" className=\"btn button-join-today\">Become an AANP NP Organization Member</a>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default Membership;","import React from \"react\";\r\n\r\nconst Spinner = () => {\r\n  return (\r\n    <div className=\"d-flex justify-content-center mt-5\">\r\n      <img\r\n        src=\"https://storage.aanp.org/www/images/aanp_spinner.gif\"\r\n        alt=\"Loading...\"\r\n      />\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default Spinner;\r\n","import React, { useState, useEffect } from 'react';\r\nimport * as _api from \"../Api/Api\";\r\nimport OrgModal from \"./OrgModal\";\r\nimport Header from './Header';\r\nimport OrgList from './OrgList';\r\nimport Search from './Search';\r\nimport Membership from './Membership';\r\nimport Spinner from './Spinner';\r\n\r\nconst Home = () => {\r\n  const [organizations, setOrganizations] = useState([]);\r\n  const [filteredOrganizations, setFilteredOrganizations] = useState([]);\r\n  const [searchTerm, setSearchTerm] = useState(\"\")\r\n  const [searchBy, setSearchBy] = useState(\"name\");\r\n  const [organization, setOrganization] = useState([]);\r\n  const [showInfo, setShowInfo] = useState(false);\r\n  const [orgCount, setOrgCount] = useState(0);\r\n  const [page, setPage] = useState(1);\r\n  const [isLoading, setIsLoading] = useState(true);\r\n  const [activePage, setActivePage] = useState(1);\r\n\r\n  useEffect(() => {\r\n      if(organizations.length === 0) {            \r\n          _api.getOrganizations().then(r => {\r\n              _getOrganizations(r);\r\n          })\r\n      }\r\n  }, [organizations.length]);\r\n\r\n  const toggleInfo = () => setShowInfo(!showInfo);\r\n\r\n  function _getOrganizations(list) {\r\n      setOrganizations(list);\r\n      setFilteredOrganizations(list);\r\n      setOrgCount(list.length);\r\n      setIsLoading(false);\r\n  }\r\n\r\n  function _getOrganizationInfo(id) {\r\n    console.log(\"e\", id);\r\n      const org = organizations.find(o => o.id === parseInt(id, 10));\r\n      setOrganization(org);\r\n      _handleInfoToggle(); \r\n  }\r\n\r\n  function _handleSearch(term) {\r\n      const orgs = organizations.filter((o) => {\r\n          const searchString = o[searchBy];\r\n          return term.length === 0 ? true : searchString.toLowerCase().includes(term.toLowerCase());\r\n      })\r\n      setPage(1);\r\n      setActivePage(1);\r\n      setSearchTerm(term);\r\n      setFilteredOrganizations(orgs);\r\n  }\r\n\r\n  function _handleInfoToggle() {\r\n      setShowInfo(!showInfo);\r\n  }\r\n\r\n  function _handlePageChange(newPage) {\r\n    setPage(newPage)\r\n  }\r\n  \r\n  return (\r\n    <>\r\n    <div>\r\n      <Header />\r\n\r\n      <div className=\"body-background d-flex justify-content-center\">\r\n        <div className=\"content-body content-size\">\r\n          <div className=\"search-header\">\r\n            <div className=\"d-flex justify-content-between align-items-center search-header\">\r\n                <div className=\"flex-even p-4\">\r\n                  <div className=\"d-block px-3 text-center\">\r\n                      <h2>\r\n                        <span className=\"text-600 header-text-blue\">AANP NP Organization<br />Directory</span>\r\n                      </h2>\r\n                    </div>\r\n                </div>\r\n                <div className=\"flex-even search-body picture-display\">\r\n                  <img src=\"https://storage.aanp.org/www/images/membership/Memberships-for-Orgs.jpg\" />\r\n                </div>\r\n            </div>\r\n          </div>\r\n\r\n          <Search searchTerm={searchTerm} handleSearch={_handleSearch} searchBy={searchBy} setSearchBy={setSearchBy} orgCount={orgCount} />\r\n\r\n          <div className=\"m-4\">\r\n            {isLoading ? \r\n              <Spinner />  \r\n            :\r\n              <OrgList filteredOrganizations={filteredOrganizations} getOrganizationInfo={_getOrganizationInfo} page={page} handlePageChange={_handlePageChange} />\r\n            } \r\n          </div>\r\n\r\n          <hr />\r\n\r\n          <Membership />\r\n\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <OrgModal show={showInfo} org={organization} closeModal={_handleInfoToggle} />\r\n    \r\n\r\n    </>\r\n);\r\n}\r\n\r\nexport default Home;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport * as _api from \"../Api/Api\";\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nconst Details = () => {\r\n    let { id } = useParams();\r\n    console.log(\"id\", id);\r\n    const [organization, setOrganization] = useState([]);\r\n\r\n    // console.log(\"org len\", Object.keys(organization).length === 0)\r\n    // console.log(\"id null\", id != null)\r\n    // console.log(\"id > 0\", parseInt(id, 10) > 0)\r\n\r\n    useEffect(() => {\r\n        if(Object.keys(organization).length === 0 && id != null && parseInt(id, 10) > 0) {\r\n            console.log(\"running here\")\r\n            _api.getOrganization(id).then(r => { \r\n                _setOrgDetails(r)\r\n            }).catch(e => console.log(e));\r\n        }\r\n    }, [id]);\r\n\r\n    function _setOrgDetails(org){\r\n        console.log(\"running\")\r\n        if(!org || org !== 'undefined') {\r\n            setOrganization(org);\r\n        }\r\n    }\r\n\r\n    //console.log(\"org\", organization);\r\n    return (\r\n        <>\r\n        {Object.keys(organization).length === 0 ?\r\n            <Spinner />\r\n        :\r\n            <div className=\"details-background\">\r\n                <h2>Details</h2>\r\n                {organization.name}\r\n            </div>\r\n        }\r\n        </>\r\n    )\r\n}\r\n\r\nexport default Details;","import React from 'react';\r\n\r\nconst Error = () => {\r\n    return (\r\n        <div className=\"body-background d-flex justify-content-center\">\r\n        <div className=\"content-body content-size\">\r\n          <div className=\"d-flex justify-content-between align-items-center search-header\">\r\n            <div className=\"flex-fill p-4\">\r\n            <h2>Page Not Foud</h2>\r\n        </div></div></div></div>\r\n    )\r\n}\r\n\r\nexport default Error;","import React from 'react';\r\nimport './App.css';\r\nimport Home from './components/Home';\r\nimport Details from './components/Details';\r\nimport Error from './components/Error';\r\nimport { Switch, Route } from 'react-router-dom';\r\n\r\nfunction App() {\r\n    return (\r\n        <main>\r\n            <Switch>\r\n                <Route path=\"/\" component={Home} exact />\r\n                <Route path=\"/details/:id\" component={Details} />\r\n                <Route component={Error} />\r\n            </Switch>\r\n        </main> \r\n    );\r\n}\r\n\r\nexport default App;","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.0/8 are considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport function register(config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit https://bit.ly/CRA-PWA'\n          );\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl, config) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                'New content is available and will be used when all ' +\n                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl, {\n    headers: { 'Service-Worker': 'script' },\n  })\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (\n        response.status === 404 ||\n        (contentType != null && contentType.indexOf('javascript') === -1)\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready\n      .then(registration => {\n        registration.unregister();\n      })\n      .catch(error => {\n        console.error(error.message);\n      });\n  }\n}\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport './index.css';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\n\r\nReactDOM.render(\r\n    <React.StrictMode>\r\n        <BrowserRouter>\r\n            <App />\r\n        </BrowserRouter>\r\n    </React.StrictMode>,\r\n    document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();"],"sourceRoot":""}