{"version":3,"sources":["static/config.js","library/components/animalsearch/numberOfPages.js","serviceWorker.js","library/components/animalsearch/useSearchBox.js","library/components/animalsearch/searchBox.js","library/components/animalsearch/animalOptions.js","library/components/animalsearch/defaultColumns.js","library/components/animalsearch/pagination.js","library/toolbox/buttonToggle.js","library/components/animalsearch/societyTab.js","library/components/animalsearch/helpers/searchDataLayer.js","library/components/animalsearch/standardSearch.js","library/components/animalsearch/progenySearch.js","library/components/animalsearch/helpModal.js","library/helpers/cookies.js","library/components/animalsearch/animalSearch.js"],"names":["__webpack_require__","r","__webpack_exports__","d","settings","host","window","location","hostname","toLowerCase","animalSearchAPI","googleAnalyticsCode","console","log","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","n","NumberOfPages","props","a","createElement","Fragment","className","labelClass","selectClass","onChange","event","setTableSettingPaging","Number","target","value","pageSizeOptions","map","item","id","key","Boolean","match","useSearchBox","searchBox","_useState","useState","term","searchTerm","_useState2","Object","slicedToArray","inputs","setInputs","handleSubmit","preventDefault","handleInputChange","persist","objectSpread","defineProperty","name","callback","SearchBox","label","undefined","_useSearchBox","executeScroll","ref","noScroll","myRef","current","scrollTo","offsetTop","useRef","react_default","autoFocus","searchBoxClass","placeholder","style","paddingLeft","AnimalOptions","progenyButton","sex","fontSize","onClick","launchProgenySearch","page","hasGenomics","open","defaultColumns","dateFormat","require","mobileColumns","Header","accessor","Cell","cellProps","rel","href","original","HasGenomics","AnimalId","FullName","getProps","state","rowInfo","column","textAlign","fontWeight","width","animalOptions","callBack","Sex","show","Show","hasGenonics","HasGenonics","assessor","DOB","toString","BreedCode","HBN","columns","mobile","defaultButton","children","Pagination","_this","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","filterPages","visiblePages","totalPages","filter","getVisiblePages","total","changePage","bind","assertThisInitialized","pages","nextProps","setState","onPageChange","_this2","_this$props$PageButto","PageButtonComponent","activePage","disabled","previousText","index","array","concat","nextText","React","Component","ButtonToggle","title","buttons","buttonProps","classString","text","toggle","SocietyTab","renderTabs","tabProps","societyIndex","apiCount","useAnimalSearch","config","callAPIData","_x","_callAPIData","apply","arguments","asyncToGenerator","regenerator_default","mark","_callee","encodedSearchTerm","data","wrap","_context","prev","next","encodeURIComponent","axios","url","searchParameters","age","method","responseType","then","response","catch","error","sent","abrupt","stop","_getData","_callee2","tableText","_context2","Count","setData","Animals","length","setNoDataText","searchTermCallback","getData","_x2","StandardSearch","tableSettingPaging","_useState3","_useState4","tableData","_useState5","_useState6","noDataText","animalSearch","useEffect","standardSearchTerm","setShow","animalId","slice","forEach","element","noDataComponent","defaultSociety","societyTab","changeSociety","buttonToggle","changeSex","buttonNormal","buttonActive","buttonClass","changeAge","animalsearch_searchBox","numberOfPages","index_es","whiteSpace","data-tip","react_media","query","matches","es","defaultPageSize","pageSize","PaginationComponent","NoDataComponent","lazy","Promise","resolve","Loader","e","ProgenySearch","tableDate","isLoaded","progenyCount","progenyAnimal","AnimalName","progenyState","setProgenyState","progenyFilter","setProgenyFilter","_useState7","_useState8","setNoTextData","options","responseData","Type","DateStart","DateEnd","ProgenyAnimal","dangerouslySetInnerHTML","__html","calculateDOBDate","days","dateCalc","Date","now","setDate","getDate","onChangeDateOfBirth","dataEnd","selectedOptions","attributes","dataStart","dateStart","dateEnd","renderButton","data-id","ProgenyDateOfBirthFilter","renderProgenyDateOfBirthFilter","class","data-end","data-start","return","react","fallback","HelpModal","cname","ca","decodeURIComponent","document","cookie","split","i","c","charAt","substring","indexOf","getCookie","lib_default","isOpen","cvalue","exdays","setTime","getTime","expires","toUTCString","setCookie","close","float","AnimalSearch","progenyAnimalId","updateProgenyAnimalId","searchType","society","updateSearchParameters","showModal","updateShowModal","updateStandardSearchTerm","renderStandardSearch","standardSearch","renderProgenySearch","progenySearch","type","renderSearch","showHelpModal","helpModal","wrapper","getElementById","getAttribute","ReactDOM","render","animalSearch_AnimalSearch","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.483d8012.chunk.js","sourcesContent":["export const settings = () => {\r\n  const HOLSTEIN_GA = \"UA-55339512-1\";\r\n\r\n  const host = window.location.hostname.toLowerCase();\r\n\r\n  if (host === \"localhost\")\r\n    return {\r\n      animalSearchAPI: \"http://localhost:61229\",\r\n      googleAnalyticsCode: HOLSTEIN_GA,\r\n    };\r\n  if (\r\n    host === \"shottledev\" ||\r\n    host === \"dev.hukdev.co.uk\" ||\r\n    host === \"dev2.hukdev.co.uk\"\r\n  )\r\n    return {\r\n      animalSearchAPI: \"https://dev2.hukdev.co.uk\",\r\n      googleAnalyticsCode: HOLSTEIN_GA,\r\n    };\r\n  if (host === \"staging.holstein-uk.org\" || host === \"staging2.holstein-uk.org\")\r\n    return {\r\n      animalSearchAPI: \"https://www2.holstein-uk.org\",\r\n      googleAnalyticsCode: HOLSTEIN_GA,\r\n    };\r\n  if (\r\n    host === \"www2.holstein-uk.org\" ||\r\n    host === \"www.holstein-uk.org\" ||\r\n    host === \"holstein-uk.org\"\r\n  )\r\n    return {\r\n      animalSearchAPI: \"http://www2.holstein-uk.org\",\r\n      googleAnalyticsCode: HOLSTEIN_GA,\r\n    };\r\n\r\n  if (host === \"shottledev\" || host === \"dev.nbdc.uk\")\r\n    return {\r\n      animalSearchAPI: \"https://dev2.hukdev.co.uk\",\r\n      googleAnalyticsCode: HOLSTEIN_GA,\r\n    };\r\n  if (host === \"www.nbdc.uk\") {\r\n    return {\r\n      animalSearchAPI: \"https://www.nbdc.uk\",\r\n      googleAnalyticsCode: HOLSTEIN_GA,\r\n    }\r\n  }\r\n  if (host === \"nbdc.uk\")\r\n    return {\r\n      animalSearchAPI: \"https://nbdc.uk\",\r\n      googleAnalyticsCode: HOLSTEIN_GA,\r\n    };\r\n  console.log(\"HOST:\" + host);\r\n};\r\n","import React from 'react';\r\n \r\nconst NumberOfPages = (props) => {\r\n    return (      \r\n      <>        \r\n        <div className={props.labelClass}><strong>ANIMALS PER PAGE</strong>\r\n        </div>\r\n        <div className={props.selectClass}>\r\n          <select className=\"rounded border  form-control\" onChange={(event) => props.setTableSettingPaging(Number(event.target.value))}>        \r\n            {props.pageSizeOptions.map((item) => (\r\n              <option id={item} key={item} value={item}>  {item}        \r\n              </option>\r\n            ))}          \r\n          </select>        \r\n        </div>\r\n      </>\r\n    )\r\n  }\r\n  export default NumberOfPages;","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n  window.location.hostname === 'localhost' ||\r\n    // [::1] is the IPv6 localhost address.\r\n    window.location.hostname === '[::1]' ||\r\n    // 127.0.0.1/8 is considered localhost for IPv4.\r\n    window.location.hostname.match(\r\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n    )\r\n);\r\n\r\nexport function register(config) {\r\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n    // The URL constructor is available in all browsers that support SW.\r\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n    if (publicUrl.origin !== window.location.origin) {\r\n      // Our service worker won't work if PUBLIC_URL is on a different origin\r\n      // from what our page is served on. This might happen if a CDN is used to\r\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n      return;\r\n    }\r\n\r\n    window.addEventListener('load', () => {\r\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n      if (isLocalhost) {\r\n        // This is running on localhost. Let's check if a service worker still exists or not.\r\n        checkValidServiceWorker(swUrl, config);\r\n\r\n        // Add some additional logging to localhost, pointing developers to the\r\n        // service worker/PWA documentation.\r\n        navigator.serviceWorker.ready.then(() => {\r\n          console.log(\r\n            'This web app is being served cache-first by a service ' +\r\n              'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n          );\r\n        });\r\n      } else {\r\n        // Is not localhost. Just register service worker\r\n        registerValidSW(swUrl, config);\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n  navigator.serviceWorker\r\n    .register(swUrl)\r\n    .then(registration => {\r\n      registration.onupdatefound = () => {\r\n        const installingWorker = registration.installing;\r\n        if (installingWorker == null) {\r\n          return;\r\n        }\r\n        installingWorker.onstatechange = () => {\r\n          if (installingWorker.state === 'installed') {\r\n            if (navigator.serviceWorker.controller) {\r\n              // At this point, the updated precached content has been fetched,\r\n              // but the previous service worker will still serve the older\r\n              // content until all client tabs are closed.\r\n              console.log(\r\n                'New content is available and will be used when all ' +\r\n                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n              );\r\n\r\n              // Execute callback\r\n              if (config && config.onUpdate) {\r\n                config.onUpdate(registration);\r\n              }\r\n            } else {\r\n              // At this point, everything has been precached.\r\n              // It's the perfect time to display a\r\n              // \"Content is cached for offline use.\" message.\r\n              console.log('Content is cached for offline use.');\r\n\r\n              // Execute callback\r\n              if (config && config.onSuccess) {\r\n                config.onSuccess(registration);\r\n              }\r\n            }\r\n          }\r\n        };\r\n      };\r\n    })\r\n    .catch(error => {\r\n      console.error('Error during service worker registration:', error);\r\n    });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n  // Check if the service worker can be found. If it can't reload the page.\r\n  fetch(swUrl)\r\n    .then(response => {\r\n      // Ensure service worker exists, and that we really are getting a JS file.\r\n      const contentType = response.headers.get('content-type');\r\n      if (\r\n        response.status === 404 ||\r\n        (contentType != null && contentType.indexOf('javascript') === -1)\r\n      ) {\r\n        // No service worker found. Probably a different app. Reload the page.\r\n        navigator.serviceWorker.ready.then(registration => {\r\n          registration.unregister().then(() => {\r\n            window.location.reload();\r\n          });\r\n        });\r\n      } else {\r\n        // Service worker found. Proceed as normal.\r\n        registerValidSW(swUrl, config);\r\n      }\r\n    })\r\n    .catch(() => {\r\n      console.log(\r\n        'No internet connection found. App is running in offline mode.'\r\n      );\r\n    });\r\n}\r\n\r\nexport function unregister() {\r\n  if ('serviceWorker' in navigator) {\r\n    navigator.serviceWorker.ready.then(registration => {\r\n      registration.unregister();\r\n    });\r\n  }\r\n}\r\n","import  { useState } from 'react';\r\n\r\n\r\nconst useSearchBox = (searchBox) => {\r\n    const [inputs, setInputs] = useState({term:searchBox.searchTerm});\r\n    const handleSubmit = (event) => {\r\n      if (event) {            \r\n        event.preventDefault();\r\n      }\r\n    }\r\n    const handleInputChange = (event) => {\r\n      event.persist();\r\n      setInputs(inputs => ({...inputs, [event.target.name]: event.target.value}));      \r\n      searchBox.callback(event.target.value);\r\n    }\r\n    return {\r\n      handleSubmit,\r\n      handleInputChange,\r\n      inputs\r\n    };\r\n  }\r\n  export default useSearchBox;","import React,{useRef} from \"react\";\r\nimport useSearchBox from './useSearchBox';\r\n\r\n\r\nconst scrollToRef = (ref) => {\r\n    if(ref!==null && ref.current!==null) {    \r\n        window.scrollTo(0, ref.current.offsetTop)    \r\n    }\r\n}\r\n\r\nconst SearchBox = (props) => { \r\n\r\n    const label = (props.label === undefined ? \"SEARCH\" : props.label);\r\n    const {inputs, handleInputChange} = useSearchBox(props);       \r\n      \r\n    const executeScroll = () => {\r\n        if( props.noScroll === undefined) {\r\n         scrollToRef(myRef) \r\n        }\r\n    }\r\n\r\n    const myRef = useRef(null)  \r\n\r\n    return (\r\n        <>                                \r\n            <div ref={myRef} className={props.labelClass}>{label}</div>                                            \r\n            <input autoFocus className={props.searchBoxClass} placeholder=\"Enter prefix, animal name, ear tag, serial number or HBN\" name=\"term\" \r\n            onChange={(event) => {executeScroll();handleInputChange(event)}} value={inputs.term} style={{paddingLeft: '4px'}}></input>          \r\n        </>\r\n    )\r\n} \r\n\r\nexport default SearchBox;","import React from \"react\";\r\n\r\nconst AnimalOptions = (props) => {\r\n  const progenyButton =\r\n    props.sex === \"M\" ? (\r\n      <button\r\n        style={{ fontSize: \"small\" }}\r\n        onClick={() => props.launchProgenySearch(props.id)}\r\n        className=\"btn ml-1 btn-light \"\r\n      >\r\n        Progeny\r\n      </button>\r\n    ) : (\r\n      \"\"\r\n    );\r\n  const page = props.hasGenomics ? \"genomics\" : \"factsheet\";\r\n  return (\r\n    <>\r\n      <button\r\n        style={{ fontSize: \"small\" }}\r\n        onClick={() =>\r\n          window.open(\r\n            \"http://holstein-uk.org/animaldata/animal/\" + page + \"/\" + props.id,\r\n            \"_blank\"\r\n          )\r\n        }\r\n        className=\"btn btn-light\"\r\n      >\r\n        FactSheet\r\n      </button>\r\n      <button\r\n        style={{ fontSize: \"small\" }}\r\n        onClick={() =>\r\n          window.open(\r\n            \"http://holstein-uk.org/animaldata/animal/ancestry/\" + props.id,\r\n            \"_blank\"\r\n          )\r\n        }\r\n        className=\"btn btn-light ml-1\"\r\n      >\r\n        Ancestry\r\n      </button>\r\n      {progenyButton}\r\n    </>\r\n  );\r\n};\r\nexport default AnimalOptions;\r\n","import React from \"react\";\r\nimport AnimalOptions from \"./animalOptions\";\r\n\r\nconst defaultColumns = (props) => {\r\n  let dateFormat = require(\"dateformat\");\r\n\r\n  const mobileColumns = [\r\n    {\r\n      Header: \"Animal Name\",\r\n      accessor: \"FullName\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <a\r\n            rel=\"noopener noreferrer\"\r\n            target=\"_blank\"\r\n            href={\r\n              \"http://holstein-uk.org/animaldata/animal/\" +\r\n              (cellProps.original.HasGenomics ? \"genomics\" : \"factsheet\") +\r\n              \"/\" +\r\n              cellProps.original.AnimalId\r\n            }\r\n          >\r\n            {cellProps.original.FullName}\r\n          </a>\r\n        );\r\n      },\r\n      getProps: (state, rowInfo, column) => {\r\n        return {\r\n          style: {\r\n            textAlign: \"left\",\r\n            fontWeight: \"700\",\r\n          },\r\n        };\r\n      },\r\n      width: 300,\r\n    },\r\n    {\r\n      Header: \"Page Options\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <div>\r\n            <AnimalOptions\r\n              id={cellProps.original.AnimalId}\r\n              launchProgenySearch={props.launchProgenySearch}\r\n              callBack={props.callback}\r\n              sex={cellProps.original.Sex}\r\n              show={cellProps.original.Show}\r\n              hasGenonics={cellProps.original.HasGenonics}\r\n            ></AnimalOptions>\r\n          </div>\r\n        );\r\n      },\r\n      assessor: \"AnimalId\",\r\n      width: 255,\r\n    },\r\n    {\r\n      Header: \"Gender\",\r\n      accessor: \"Sex\",\r\n      width: 105,\r\n    },\r\n    {\r\n      Header: \"DOB\",\r\n      accessor: \"DOB\",\r\n      Cell: (cellProps) => {\r\n        const date = cellProps.original.DOB;\r\n        if (date.toString() !== \"0001-01-01T00:00:00\")\r\n          return dateFormat(cellProps.original.DOB, \"dd/mm/yyyy\");\r\n        else return \"\";\r\n      },\r\n      width: 100,\r\n    },\r\n    {\r\n      Header: \"Ear Tag\",\r\n      accessor: \"EarTag\",\r\n      width: 160,\r\n    },\r\n\r\n    {\r\n      Header: \"HBN\",\r\n      accessor: \"HBN\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <div>\r\n            {cellProps.original.BreedCode} {cellProps.original.HBN}\r\n          </div>\r\n        );\r\n      },\r\n      width: 150,\r\n    },\r\n  ];\r\n\r\n  const columns = [\r\n    {\r\n      Header: \"Page Options\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <div>\r\n            <AnimalOptions\r\n              id={cellProps.original.AnimalId}\r\n              launchProgenySearch={props.launchProgenySearch}\r\n              callBack={props.callback}\r\n              sex={cellProps.original.Sex}\r\n              show={cellProps.original.Show}\r\n              hasGenomics={cellProps.original.HasGenomics}\r\n            ></AnimalOptions>\r\n          </div>\r\n        );\r\n      },\r\n      assessor: \"AnimalId\",\r\n      width: 255,\r\n    },\r\n    {\r\n      Header: \"Gender\",\r\n      accessor: \"Sex\",\r\n      width: 105,\r\n    },\r\n    {\r\n      Header: \"Animal Name\",\r\n      accessor: \"FullName\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <a\r\n            rel=\"noopener noreferrer\"\r\n            target=\"_blank\"\r\n            href={\r\n              \"http://holstein-uk.org/animaldata/animal/\" +\r\n              (cellProps.original.HasGenomics ? \"genomics\" : \"factsheet\") +\r\n              \"/\" +\r\n              cellProps.original.AnimalId\r\n            }\r\n          >\r\n            {cellProps.original.FullName}\r\n          </a>\r\n        );\r\n      },\r\n      getProps: (state, rowInfo, column) => {\r\n        return {\r\n          style: {\r\n            textAlign: \"left\",\r\n            fontWeight: \"700\",\r\n          },\r\n        };\r\n      },\r\n    },\r\n    {\r\n      Header: \"DOB\",\r\n      accessor: \"DOB\",\r\n      Cell: (cellProps) => {\r\n        const date = cellProps.original.DOB;\r\n        if (date.toString() !== \"0001-01-01T00:00:00\")\r\n          return dateFormat(cellProps.original.DOB, \"dd/mm/yyyy\");\r\n        else return \"\";\r\n      },\r\n      width: 100,\r\n    },\r\n    {\r\n      Header: \"Ear Tag\",\r\n      accessor: \"EarTag\",\r\n      width: 160,\r\n    },\r\n\r\n    {\r\n      Header: \"HBN\",\r\n      accessor: \"HBN\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <div>\r\n            {cellProps.original.BreedCode} {cellProps.original.HBN}\r\n          </div>\r\n        );\r\n      },\r\n      width: 150,\r\n    },\r\n  ];\r\n  return props.mobile ? mobileColumns : columns;\r\n};\r\nexport default defaultColumns;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst defaultButton = props => <button {...props}>{props.children}</button>;\r\n\r\nclass Pagination extends React.Component {\r\n  constructor(props) {\r\n    super();\r\n\r\n    this.changePage = this.changePage.bind(this);\r\n\r\n    this.state = {\r\n      visiblePages: this.getVisiblePages(null, props.pages)\r\n    };\r\n  }\r\n\r\n  static propTypes = {\r\n    pages: PropTypes.number,\r\n    page: PropTypes.number,\r\n    PageButtonComponent: PropTypes.any,\r\n    onPageChange: PropTypes.func,\r\n    previousText: PropTypes.string,\r\n    nextText: PropTypes.string\r\n  };\r\n\r\n  componentWillReceiveProps(nextProps) {\r\n    this.setState({\r\n      visiblePages: this.getVisiblePages(nextProps.page, nextProps.pages)\r\n    });\r\n\r\n    this.changePage(nextProps.page + 1);\r\n  }\r\n\r\n\r\n  filterPages = (visiblePages, totalPages) => {\r\n    return visiblePages.filter(page => page <= totalPages);\r\n  };\r\n\r\n  getVisiblePages = (page, total) => {\r\n    if (total < 7) {\r\n      return this.filterPages([1, 2, 3, 4, 5, 6], total);\r\n    } else {\r\n      if (page % 5 >= 0 && page > 4 && page + 2 < total) {\r\n        return [1, page - 1, page, page + 1, total];\r\n      } else if (page % 5 >= 0 && page > 4 && page + 2 >= total) {\r\n        return [1, total - 3, total - 2, total - 1, total];\r\n      } else {\r\n        return [1, 2, 3, 4, 5, total];\r\n      }\r\n    }\r\n  };\r\n\r\n  changePage(page) {\r\n    const activePage = this.props.page + 1;\r\n\r\n    if (page === activePage) {\r\n      return;\r\n    }\r\n\r\n    const visiblePages = this.getVisiblePages(page, this.props.pages);\r\n\r\n    this.setState({\r\n      visiblePages: this.filterPages(visiblePages, this.props.pages)\r\n    });\r\n\r\n    this.props.onPageChange(page - 1);\r\n  }\r\n\r\n  render() {\r\n    const { PageButtonComponent = defaultButton } = this.props;\r\n    const { visiblePages } = this.state;\r\n    const activePage = this.props.page + 1;\r\n    return (\r\n      <div>\r\n          <PageButtonComponent className=\"btn btn-outline-secondary\"\r\n            \r\n            onClick={() => {\r\n              if (activePage === 1) return;\r\n              this.changePage(activePage - 1);\r\n            }}\r\n            disabled={activePage === 1}\r\n          >\r\n            {this.props.previousText}\r\n          </PageButtonComponent>\r\n          {visiblePages.map((page, index, array) => {\r\n            return (\r\n              <PageButtonComponent\r\n                key={page}\r\n                className={\r\n                  activePage === page\r\n                    ? \"btn btn-primary\"\r\n                    : \"btn btn-outline-secondary\"\r\n                }\r\n                onClick={this.changePage.bind(null, page)}\r\n              >\r\n                {array[index - 1] + 2 < page ? `...${page}` : page}\r\n              </PageButtonComponent>\r\n            );\r\n          })}\r\n          <PageButtonComponent\r\n            className=\"btn btn-outline-secondary\"\r\n            onClick={() => {\r\n              if (activePage === this.props.pages) return;\r\n              this.changePage(activePage + 1);\r\n            }}\r\n            disabled={activePage === this.props.pages}\r\n          >\r\n            {this.props.nextText}\r\n          </PageButtonComponent>\r\n      </div>\r\n    );\r\n  }\r\n}\r\nexport default Pagination;","import React from 'react';\r\n\r\nconst ButtonToggle = (props) => {\r\n\r\n    const renderButtons = () => {\r\n        return props.buttons.map((buttonProps) => {\r\n            const classString = (buttonProps.value === props.value) ? \"btn-active\" : \"btn-secondary\";\r\n            return (\r\n                <button key={buttonProps.text} \r\n                onClick = {() =>props.toggle(buttonProps.value)} \r\n                className={\"mt-1 ml-0 mr-1 btn \" + classString}>{buttonProps.text}</button>                \r\n            )\r\n        })\r\n    }\r\n\r\n    return (<>        \r\n            {props.title!==undefined ? <div className=\"col-12 col-md-2 mt-2 font-weight-bold\">{props.title}</div>  : null}\r\n            <div className=\"col-8 pl-0 ml-0\">\r\n                {renderButtons()}\r\n            </div>  \r\n        </>    \r\n    )\r\n}\r\nexport default ButtonToggle;","import React from 'react';\r\n\r\nconst SocietyTab = (props) => {\r\n\r\n    const renderTabs = (tabProps) => {\r\n        const className=(tabProps.index===props.societyIndex) ? \"btn btn-active\" : \"btn btn-secondary\";\r\n        \r\n        return (\r\n            <div className=\"col-md-3 col-sm-4 pl-0 mt-1\">\r\n                <button style={{width:'100%'}} className={className} onClick={() => {props.callBack(tabProps.index);} }>{tabProps.title}</button>\r\n            </div>\r\n        )\r\n    }\r\n\r\n    return (\r\n        <>\r\n        <div className=\"row\">\r\n            <div className=\"col-md-2 font-weight-bold pt-2\">SOCIETY</div>\r\n            <div className=\"col-md-10\">\r\n                <div className=\"row\">\r\n                    {renderTabs({index:'01',title:'Holstein Friesian'})}                    \r\n                    {renderTabs({index:'2',title:'Jersey UK'})}            \r\n                    {renderTabs({index:'5',title:'Ayrshire'})}\r\n                    {renderTabs({index:'7',title:'Brown Swiss'})}\r\n                    {renderTabs({index:'4',title:'Guernsey'})}\r\n                    {renderTabs({index:'11',title:'Montbeliarde'})}\r\n                    {renderTabs({index:'12',title:'Jersey Island'})}\r\n                    {/*{renderTabs({index:'14',title:'European Angus'})}*/}\r\n                </div>\r\n            </div>\r\n       </div>\r\n        </>\r\n    )\r\n}\r\nexport default SocietyTab;","import axios from 'axios';\r\n\r\nlet apiCount = 0;\r\n\r\nconst useAnimalSearch = (props) => {\r\n\r\n  const config = require('../../../../static/config');\r\n  //// HELPERS /////\r\n\r\n  async function callAPIData (searchTerm) { \r\n    const encodedSearchTerm = encodeURIComponent(searchTerm) ;    \r\n    const data = await axios({\r\n         url: config.settings().animalSearchAPI + '/umbraco/api/animalsearch/searchAnimals?searchTerm=' + encodedSearchTerm + '&count=' + apiCount \r\n         + '&society=' + props.searchParameters.societyIndex + '&age=' + props.searchParameters.age + '&sex=' + props.searchParameters.sex,\r\n         method: 'GET',\r\n         responseType: 'json'\r\n       })\r\n       .then(response => {return response.data;}\r\n       ).catch(error => {console.log(error); return {error:'Unable to return results because of: Server Error'}});\r\n     return data;\r\n }\r\n\r\n  async function getData (searchTerm)  {  \r\n    let tableText = '';\r\n    apiCount++;\r\n    if(searchTerm!=='')     {                  \r\n      const response = await callAPIData(searchTerm);                      \r\n      if(response!==undefined && response!==null && response.Count>=apiCount){\r\n        props.setData(response.Animals);      \r\n        if(response.Animals.length===0)                  {\r\n          tableText = \"No animals found\";\r\n        }\r\n      } else {\r\n        \r\n        if(response.error!==undefined) {\r\n          tableText = response.error;\r\n        }\r\n        \r\n      }\r\n    } else {\r\n      props.setData([]);\r\n    }\r\n    props.setNoDataText(tableText);\r\n    props.searchTermCallback(searchTerm); \r\n  }\r\n  return {getData}\r\n\r\n}\r\n\r\nexport default useAnimalSearch;\r\n\r\n","import React,{useState, useEffect } from 'react';\r\nimport ReactTable from 'react-table';\r\nimport SearchBox from './searchBox';\r\nimport defaultColumns from './defaultColumns';  \r\nimport 'react-table/react-table.css';\r\nimport Pagination from './pagination';\r\nimport NumberOfPages from './numberOfPages';\r\nimport Media from 'react-media';\r\nimport ReactTooltip from 'react-tooltip'\r\nimport ButtonToggle from './../../toolbox/buttonToggle';\r\nimport SocietyTab from './societyTab';\r\nimport useAnimalSearch from './helpers/searchDataLayer';\r\n\r\n\r\n\r\n\r\nconst StandardSearch = (props) => {\r\n\r\n  const [tableSettingPaging, setTableSettingPaging] = useState(10);\r\n  const [tableData, setData] = useState([]);\r\n  const [noDataText, setNoDataText] = useState('');\r\n\r\n  const sexButtons = [{text:'All', value:''},{text:'Male', value:'M'},{text:'Female', value:'F'}];\r\n  const ageButtons = [{text:'All', value:'0'},{text:'Up to 5', value:'5'},{text:'Up to 10', value:'10'}];\r\n\r\n  const animalSearch = useAnimalSearch({setData, setNoDataText, searchTermCallback: props.searchTermCallback, searchParameters: props.searchParameters});\r\n\r\n  useEffect(() => {    \r\n    if(props.searchParameters.standardSearchTerm!=='') {\r\n      animalSearch.getData(props.searchParameters.standardSearchTerm);\r\n    }\r\n    // eslint-disable-next-line\r\n  }, [])\r\n\r\n  useEffect(() => {    \r\n    animalSearch.getData(props.searchParameters.standardSearchTerm);\r\n    // eslint-disable-next-line\r\n  },[props.searchParameters.societyIndex,props.searchParameters.age, props.searchParameters.sex])   \r\n   \r\n\r\n  const setShow = (animalId) =>\r\n  {              \r\n      let data = tableData.slice(); \r\n      data.forEach((element,index) => {          \r\n          data[index].Show = (Number(element.AnimalId) === Number(animalId));                  \r\n      });\r\n      setData(data);      \r\n  }\r\n  \r\n  const noDataComponent = () => {\r\n    return (\r\n      <div className=\"NoResultsComponent\">{noDataText}</div>\r\n    )\r\n  }\r\n\r\n  const warning = () => {\r\n    if(tableData.length===300) {\r\n      return (\r\n        <>\r\n        <ReactTooltip />\r\n        <div style={{whiteSpace:'normal'}} className=\"col-md-1 mt-2 ml-2 badge badge-warning\" data-tip=\"Showing the first 300 animals, please refine your search\">Showing first 300 Animals ...</div>        \r\n        </>\r\n     )\r\n    }\r\n    return (<></>)\r\n  }\r\n\r\n  const changeAge = (age) => {\r\n    props.changeAge(age);\r\n  }\r\n\r\n  const changeSex = (sex) => {\r\n    props.changeSex(sex);\r\n  }\r\n\r\n  ///// RENDER /////\r\n\r\n  return (\r\n        <>                    \r\n          {props.defaultSociety===null ? <SocietyTab callBack={(index) => {props.changeSociety(index)}} societyIndex={props.searchParameters.societyIndex} ></SocietyTab> : null} \r\n          <div className=\"row\">\r\n            <div className=\"col-sm-12 col-md-6\">\r\n              <div className=\"row\">\r\n                <div className=\"col-sm-6 col-md-2 m-md-2\"><strong>SEX</strong></div>\r\n                <ButtonToggle buttons={sexButtons} value={props.searchParameters.sex} toggle={changeSex} \r\n                   buttonNormal=\"btn-secondary\" buttonActive=\"btn-active\" buttonClass=\"col m-2 btn\"></ButtonToggle>\r\n                </div>\r\n            </div>\r\n            <div className=\"col-sm-12 col-md-6\">\r\n            <div className=\"row\">\r\n                <div className=\"col-sm-6 col-md-2  m-md-2\"><strong>AGE (years)</strong></div>\r\n                <ButtonToggle buttons={ageButtons} value={props.searchParameters.age} toggle={changeAge}  \r\n                    buttonNormal=\"btn-secondary\" buttonActive=\"btn-active\" buttonClass=\"col m-2 btn\"></ButtonToggle>\r\n                </div>\r\n            </div>\r\n          </div>          \r\n          <div className=\"row\">            \r\n            <div className=\"col-sm-12 col-md-6\">\r\n              <div className=\"form-inline\">\r\n                <SearchBox callback={(searchTerm) => {setNoDataText('Loading');animalSearch.getData(searchTerm)}} searchTerm={props.searchParameters.standardSearchTerm} \r\n                  labelClass=\"col-sm-2 m-md-2 mt-2 font-weight-bold pl-0\" searchBoxClass=\" mt-2 form-control col-md ml-md-0 col-sm-12\"></SearchBox>\r\n              </div> \r\n            </div>                               \r\n              <NumberOfPages labelClass=\"col-sm-6 col-md-3 mt-sm-2 m-md-2\" \r\n              selectClass=\"mt-sm-2 float-right col-sm-12 col-md-2\"\r\n                  pageSizeOptions={[10, 20, 50, 100]} setTableSettingPaging={setTableSettingPaging}></NumberOfPages>            \r\n            {warning()}                        \r\n          </div>\r\n          \r\n          <div className=\"row table-responsive mt-2 mx-auto\">\r\n            <Media query=\"(max-width: 1049px)\">\r\n              {matches =>                 \r\n                  <ReactTable \r\n                    className=\"table table-bordered -striped -highlight\"\r\n                    data={tableData} \r\n                    columns={defaultColumns({callback:setShow, launchProgenySearch:props.launchProgenySearch, mobile:matches})}\r\n                    previousText=\"<\"\r\n                    nextText=\">\"\r\n                    defaultPageSize={10} \r\n                    pageSize={tableSettingPaging} \r\n                    PaginationComponent={Pagination}            \r\n                    NoDataComponent={noDataComponent}                    \r\n                  />\r\n              }      \r\n            </Media>            \r\n          </div>           \r\n        </>\r\n  )\r\n}\r\nexport default StandardSearch;\r\n","import React, { useState, Suspense, useEffect } from \"react\";\r\nimport ReactTable from \"react-table\";\r\nimport axios from \"axios\";\r\nimport \"react-table/react-table.css\";\r\n\r\nimport Pagination from \"./pagination\";\r\nimport AnimalOptions from \"./animalOptions\";\r\n\r\n//const window = (new JSDOM('')).window\r\n//const DOMPurify = createDOMPurify(window)\r\n\r\nconst NumberOfPages = React.lazy(() => import(\"./numberOfPages\"));\r\nconst Loader = React.lazy(() => import(\"./loader\"));\r\n\r\nconst config = require(\"../../../static/config\");\r\n\r\nconst ProgenySearch = (props) => {\r\n  const [progenyState, setProgenyState] = useState({\r\n    tableDate: [],\r\n    isLoaded: false,\r\n    progenyCount: 0,\r\n    progenyAnimal: { AnimalName: \"\" },\r\n  });\r\n  const [progenyFilter, setProgenyFilter] = useState(10);\r\n  const [tableSettingPaging, setTableSettingPaging] = useState(10);\r\n  const [noDataText, setNoTextData] = useState(\"No animals found\");\r\n\r\n  useEffect(() => {\r\n    getData({ Type: 10, DateStart: 0, DateEnd: 0 });\r\n    // eslint-disable-next-line\r\n  }, []);\r\n\r\n  async function getData(options) {\r\n    setProgenyState({\r\n      isLoaded: false,\r\n      progenyCount: 0,\r\n      progenyAnimal: { AnimalName: \"\" },\r\n    });\r\n    const responseData = await axios({\r\n      url:\r\n        config.settings().animalSearchAPI +\r\n        \"/umbraco/api/animalsearch/ProgenySearch?AnimalId=\" +\r\n        props.animalId +\r\n        \"&Type=\" +\r\n        options.Type +\r\n        \"&startDateOfBirth=\" +\r\n        options.DateStart +\r\n        \"&endDateOfBirth=\" +\r\n        options.DateEnd,\r\n      method: \"GET\",\r\n      responseType: \"json\",\r\n    })\r\n      .then((response) => {\r\n        if (response.data !== null) {\r\n          setNoTextData(\"No animals found\");\r\n          setProgenyState({\r\n            tableData: response.data.Animals,\r\n            isLoaded: true,\r\n            progenyCount: response.data.Count,\r\n            progenyAnimal: response.data.ProgenyAnimal,\r\n          });\r\n        }\r\n        return response.data;\r\n      })\r\n      .catch((error) => {\r\n        console.log(error);\r\n        setNoTextData(\"Unable to return results because of: Server Error\");\r\n        setProgenyState({\r\n          tableData: [],\r\n          isLoaded: true,\r\n          progenyCount: 0,\r\n          progenyAnimal: {},\r\n        });\r\n        return { error: \"Unable to return results because of: Server Error\" };\r\n      });\r\n    return responseData;\r\n  }\r\n\r\n  const columns = [\r\n    {\r\n      Header: \"Options\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <div>\r\n            <AnimalOptions\r\n              id={cellProps.original.AnimalId}\r\n              launchProgenySearch={props.launchProgenySearch}\r\n              callBack={props.callback}\r\n              sex={cellProps.original.Sex}\r\n              show={cellProps.original.Show}\r\n            ></AnimalOptions>\r\n          </div>\r\n        );\r\n      },\r\n      assessor: \"AnimalId\",\r\n      width: 245,\r\n    },\r\n    {\r\n      Header: \"HBN\",\r\n      accessor: \"HBN\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <div>\r\n            {cellProps.original.BreedCode} {cellProps.original.HBN}\r\n          </div>\r\n        );\r\n      },\r\n      width: 140,\r\n    },\r\n    {\r\n      Header: \"Animal Name\",\r\n      accessor: \"AnimalName\",\r\n      Cell: (cellProps) => {\r\n        return (\r\n          <div style={{ textAlign: \"left\", fontWeight: \"700\" }}>\r\n            <a\r\n              dangerouslySetInnerHTML={{\r\n                __html: cellProps.original.AnimalName,\r\n              }}\r\n              rel=\"noopener noreferrer\"\r\n              target=\"_blank\"\r\n              href={\r\n                \"http://holstein-uk.org/animaldata/animal/factsheet/\" +\r\n                cellProps.original.AnimalId\r\n              }\r\n            ></a>\r\n          </div>\r\n        );\r\n      },\r\n    },\r\n    {\r\n      Header: \"DOB\",\r\n      accessor: \"DOB\",\r\n      Cell: (cellProps) => {\r\n        const date = cellProps.original.DOB;\r\n        if (date.toString() !== \"0001-01-01T00:00:00\")\r\n          return dateFormat(cellProps.original.DOB, \"dd/mm/yyyy\");\r\n        else return \"\";\r\n      },\r\n      width: 100,\r\n    },\r\n    {\r\n      Header: \"Gender\",\r\n      accessor: \"Sex\",\r\n      width: 105,\r\n    },\r\n    { Header: \"Score\", accessor: \"Score\", width: 90 },\r\n  ];\r\n\r\n  const onChange = (buttonProps) => {\r\n    const dateStart =\r\n      buttonProps.dateStart !== undefined\r\n        ? calculateDOBDate(buttonProps.dateStart)\r\n        : 0;\r\n    const dateEnd =\r\n      buttonProps.dateStart !== undefined\r\n        ? calculateDOBDate(buttonProps.dateEnd)\r\n        : 0;\r\n    setProgenyFilter(buttonProps.index);\r\n    getData({\r\n      Type: buttonProps.index,\r\n      DateStart: dateEnd,\r\n      DateEnd: dateStart,\r\n    });\r\n  };\r\n\r\n  let dateFormat = require(\"dateformat\");\r\n\r\n  const calculateDOBDate = (days) => {\r\n    const dateCalc = new Date(Date.now());\r\n    dateCalc.setDate(dateCalc.getDate() - days);\r\n    return dateFormat(dateCalc, \"yyyymmdd\");\r\n  };\r\n\r\n  const onChangeDateOfBirth = (event) => {\r\n    const dataEnd =\r\n      event.target.selectedOptions[0].attributes[\"data-end\"].value;\r\n    const dataStart =\r\n      event.target.selectedOptions[0].attributes[\"data-start\"].value;\r\n    const dateStart = new Date(Date.now());\r\n    dateStart.setDate(dateStart.getDate() - dataStart);\r\n    const dateEnd = new Date(Date.now());\r\n    dateEnd.setDate(dateEnd.getDate() - dataEnd);\r\n    getData({\r\n      Type: 0,\r\n      DateStart: Number(dateFormat(dateStart, \"yyyymmdd\")),\r\n      DateEnd: Number(dateFormat(dateEnd, \"yyyymmdd\")),\r\n    });\r\n  };\r\n\r\n  const renderButton = (buttonProps) => {\r\n    const className =\r\n      buttonProps.index === progenyFilter\r\n        ? \"btn btn-primary\"\r\n        : \"btn btn-secondary\";\r\n    if (buttonProps.show === undefined || buttonProps.show) {\r\n      return (\r\n        <div className=\"col-xl-2 col-lg-3 col-md-4 col-sm-6 m-2\">\r\n          <button\r\n            style={{ width: \"120%\" }}\r\n            className={className}\r\n            data-id={buttonProps.index}\r\n            onClick={() => {\r\n              onChange(buttonProps);\r\n            }}\r\n          >\r\n            {buttonProps.title}\r\n          </button>\r\n        </div>\r\n      );\r\n    }\r\n    return <></>;\r\n  };\r\n\r\n  const ProgenyFilters = () => {\r\n    return (\r\n      <>\r\n        {renderButton({ title: \"Last 500 registered\", index: 10 })}\r\n        {renderButton({ title: \"Classified progeny\", index: 2 })}\r\n        {renderButton({ title: \"Classified progeny (EX)\", index: 3 })}\r\n        {renderButton({ title: \"Classified progeny (VG)\", index: 4 })}\r\n        {/*renderButton({title:'Classified progeny (GP)',index:5})*/}\r\n        {renderButton({ title: \"1st Lactation\", index: 6 })}\r\n        {ProgenyDateOfBirthFilter()}\r\n      </>\r\n    );\r\n  };\r\n\r\n  const ProgenyDateOfBirthFilter = () => {\r\n    const renderProgenyDateOfBirthFilter =\r\n      progenyFilter === 0 ? (\r\n        <div class=\"col-xl-2 col-l-3 col-md-4 col-s-4 col-xs-6 m-2\">\r\n          <select\r\n            style={{ width: \"120%\" }}\r\n            className=\"form-control\"\r\n            onChange={onChangeDateOfBirth}\r\n          >\r\n            <option data-end={0} data-start={183}>\r\n              Last 6 Months\r\n            </option>\r\n            <option data-end={184} data-start={365}>\r\n              Last 6-12 Months\r\n            </option>\r\n            <option data-end={366} data-start={730}>\r\n              Last 12-24 Months\r\n            </option>\r\n            <option data-end={731} data-start={1095}>\r\n              Last 24-36 Months\r\n            </option>\r\n          </select>\r\n        </div>\r\n      ) : (\r\n        \"\"\r\n      );\r\n    return (\r\n      <>\r\n        {renderButton({\r\n          title: \"Date of Birth Range\",\r\n          index: 0,\r\n          dateStart: 0,\r\n          dateEnd: 183,\r\n        })}\r\n        {renderProgenyDateOfBirthFilter}\r\n      </>\r\n    );\r\n  };\r\n\r\n  const pageSizeOptions = [10, 20, 50, 100];\r\n\r\n  const table = () => {\r\n    return (\r\n      <>\r\n        <div className=\"row table-responsive mt-2 mx-auto\">\r\n          <ReactTable\r\n            className=\"table table-bordered \"\r\n            data={progenyState.tableData}\r\n            columns={columns}\r\n            previousText=\"<\"\r\n            nextText=\">\"\r\n            defaultPageSize={10}\r\n            noDataText={\r\n              progenyState.isLoaded ? (\r\n                noDataText\r\n              ) : (\r\n                <Suspense fallback={<div></div>}>\r\n                  <Loader></Loader>\r\n                </Suspense>\r\n              )\r\n            }\r\n            PaginationComponent={Pagination}\r\n            pageSize={tableSettingPaging}\r\n          />\r\n        </div>\r\n        <div>NOTE: Animals listed are limited to the first 1,000.</div>\r\n      </>\r\n    );\r\n  };\r\n\r\n  return (\r\n    <>\r\n      <div className=\"row\">\r\n        <div className=\"col-12 font-weight-bold\">\r\n          <hr />\r\n          <div className=\"row\">\r\n            <div className=\"col-3\">\r\n              {progenyState.progenyCount} {\"progeny found for\"}\r\n            </div>\r\n            <div\r\n              className=\"col-md-7 text-primary\"\r\n              dangerouslySetInnerHTML={{\r\n                __html: progenyState.progenyAnimal.AnimalName,\r\n              }}\r\n            ></div>\r\n            <button className=\"btn btn-primary\" onClick={props.return}>\r\n              Back to animal search\r\n            </button>\r\n          </div>\r\n        </div>\r\n        <div className=\"row mt-2\">{ProgenyFilters()}</div>\r\n      </div>\r\n      <Suspense fallback={<div></div>}>\r\n        <NumberOfPages\r\n          pageSizeOptions={pageSizeOptions}\r\n          setTableSettingPaging={setTableSettingPaging}\r\n        ></NumberOfPages>\r\n      </Suspense>\r\n      {table()}\r\n    </>\r\n  );\r\n};\r\n\r\nexport default ProgenySearch;\r\n","import React from 'react';\r\nimport ReactModel from 'react-modal';\r\nimport { getCookie, setCookie } from \"../../helpers/cookies\";\r\n\r\nconst HelpModal = (props) => {     \r\n    \r\n    const onClose = () => {\r\n        setCookie(\"HelpModal\", true, 360);\r\n        props.close();\r\n    }\r\n\r\n    if(!getCookie(\"HelpModal\"))  \r\n        return (\r\n            <>\r\n            <ReactModel className='ReactModal' isOpen={props.isOpen} >\r\n            <div className=\"ReactModalContent\">\r\n                <h3 className=\"modal-title\">Welcome to the NBDC animal search.</h3>\r\n                <hr/>\r\n                    <div>Just type in the search box and the results will appear.</div>\r\n                    <div>The search box will let you enter animal names with or without serial numbers. Ear tags and HBNs.</div>\r\n                    <div>&nbsp;</div>\r\n                    <div>\r\n                    Try the following searches under the Holstein Friesian society: <ul className=\"list-group\">\r\n                        <li className=\"list-group-item\">Picston Shottle</li>\r\n                    <li className=\"list-group-item\">Royan Anita 17</li>\r\n                    <li className=\"list-group-item\">UK289370703987</li>\r\n                    <li className=\"list-group-item\">598172</li></ul>\r\n                    <div className=\"mt-3\">NOTE: A maximum of 300 animals will be returned at any one time.</div>\r\n                </div>\r\n                <button className=\"btn btn-primary mt-2\" onClick={onClose} style={{float:'right'}}>Close</button>\r\n                <div className=\"mt-3\">&nbsp;</div>\r\n                </div>\r\n                \r\n            </ReactModel>\r\n            </>\r\n        )\r\n    return (<></>);\r\n} \r\nexport default HelpModal;","//Cookies\r\nexport function setCookie(cname, cvalue, exdays) {\r\n    var d = new Date();\r\n    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n    var expires = \"expires=\" + d.toUTCString();\r\n    document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n  }\r\n  \r\n  export function deleteCookie(cname) {\r\n      var d = new Date();\r\n      d.setTime(d.getTime() - (1000 * 60 * 60 * 24)); \r\n      var expires = \"expires=\" + d.toGMTString();\r\n      document.cookie = cname + \"=; \" + expires + \";path=/\";\r\n  }\r\n  \r\n  \r\n  export function getCookie(cname) {\r\n    var name = cname + \"=\";\r\n    var decodedCookie = decodeURIComponent(document.cookie);\r\n    var ca = decodedCookie.split(';');\r\n    for (var i = 0; i < ca.length; i++) {\r\n      var c = ca[i];\r\n      while (c.charAt(0) === ' ') {\r\n        c = c.substring(1);\r\n      }\r\n      if (c.indexOf(name) === 0) {\r\n        return c.substring(name.length, c.length);\r\n      }\r\n    }\r\n    return \"\";\r\n  }\r\n  ","import React, { useState, Suspense } from \"react\";\r\nimport StandardSearch from \"./standardSearch\";\r\nimport ProgenySearch from \"./progenySearch\";\r\nimport HelpModal from \"./helpModal\";\r\nimport ReactDOM from \"react-dom\";\r\n\r\nconst AnimalSearch = (props) => {\r\n  ///// STATE /////\r\n\r\n  const [progenyAnimalId, updateProgenyAnimalId] = useState(0);\r\n  const [searchParameters, updateSearchParameters] = useState({\r\n    searchType: 0,\r\n    societyIndex: props.society === null ? \"01\" : props.society,\r\n    standardSearchTerm: \"\",\r\n    age: \"0\",\r\n    sex: \"\",\r\n  });\r\n  const [showModal, updateShowModal] = useState(true);\r\n\r\n  ///// EVENTS /////\r\n\r\n  const launchProgenySearch = (animalId) => {\r\n    updateProgenyAnimalId(animalId);\r\n    updateSearchParameters({ ...searchParameters, searchType: 4 });\r\n  };\r\n\r\n  const changeSociety = (index) => {\r\n    updateSearchParameters({\r\n      ...searchParameters,\r\n      societyIndex: index,\r\n      searchType: 0,\r\n    });\r\n  };\r\n\r\n  const changeSex = (sex) => {\r\n    updateSearchParameters({ ...searchParameters, sex: sex });\r\n  };\r\n\r\n  const changeAge = (age) => {\r\n    updateSearchParameters({ ...searchParameters, age: age });\r\n  };\r\n\r\n  const updateStandardSearchTerm = (term) => {\r\n    updateSearchParameters({ ...searchParameters, standardSearchTerm: term });\r\n  };\r\n\r\n  const updateSearchType = (type) => {\r\n    updateSearchParameters({ ...searchParameters, searchType: type });\r\n  };\r\n\r\n  ///// RENDERS /////\r\n\r\n  const renderSearch = () => {\r\n    switch (searchParameters.searchType) {\r\n      case 0:\r\n        return renderStandardSearch();\r\n      // case 1 : return renderGeneticsIndex();\r\n      case 4:\r\n        return renderProgenySearch();\r\n      default:\r\n        return null;\r\n    }\r\n  };\r\n\r\n  const renderStandardSearch = () => {\r\n    return (\r\n      <StandardSearch\r\n        searchParameters={searchParameters}\r\n        launchProgenySearch={launchProgenySearch}\r\n        searchTermCallback={updateStandardSearchTerm}\r\n        changeAge={changeAge}\r\n        changeSex={changeSex}\r\n        changeSociety={changeSociety}\r\n        defaultSociety={props.society}\r\n      ></StandardSearch>\r\n    );\r\n  };\r\n\r\n  const renderProgenySearch = () => {\r\n    return (\r\n      <Suspense fallback={<div></div>}>\r\n        <ProgenySearch\r\n          animalId={progenyAnimalId}\r\n          return={() => updateSearchType(0)}\r\n        ></ProgenySearch>\r\n      </Suspense>\r\n    );\r\n  };\r\n\r\n  const renderHelpModal = () => {\r\n    return (\r\n      <HelpModal\r\n        isOpen={showModal}\r\n        close={() => updateShowModal(false)}\r\n      ></HelpModal>\r\n    );\r\n  };\r\n\r\n  ///// MAIN RENDER /////\r\n  return (\r\n    <div className=\"container-fluid m-1\">\r\n      {renderSearch()}\r\n      {(showHelpModal === null || showHelpModal === \"true\") &&\r\n        renderHelpModal()}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default AnimalSearch;\r\n\r\nconst wrapper = document.getElementById(\"react-animalsearch\");\r\nconst society = wrapper ? wrapper.getAttribute(\"data-society\") : null;\r\nconst showHelpModal = wrapper\r\n  ? wrapper.getAttribute(\"data-showHelpModal\")\r\n  : \"true\";\r\n\r\nif (wrapper) {\r\n  ReactDOM.render(\r\n    <AnimalSearch society={society} showHelpModal={showHelpModal} />,\r\n    wrapper\r\n  );\r\n}\r\n"],"sourceRoot":""}