{"version":3,"sources":["components/StaffDirectory/AllResultsContainer.js","components/StaffDirectory/FilteredResultsContainer.js","components/StaffDirectory/Staff.js","components/StaffDirectory/Tel.js","components/StaffDirectory/TelList.js","components/StaffDirectory/Main.js","App.js","index.js"],"names":["AllResultsContainer","props","Fragment","className","aria-label","disabled","loading","name","onChange","inputHandleOnChange","placeholder","autoComplete","autoCorrect","autoCapitalize","spellCheck","children","FilteredResultsContainer","itemType","toLowerCase","isAuthed","undefined","Staff","title","department","emails","map","addr","href","trim","Tel","num","areaCode","exchange","line","TelList","ret","arr","phone","replace","a","b","c","d","e","push","split","n","key","Main","state","data","window","scoeWebSite","staffDirectory","apiEndpoint","searchString","placeholderText","handleChange","bind","formatFixes","dat","rsp","fp","ph","r","p1","p2","fixPhone","this","setState","fetch","headers","Accept","then","response","json","event","target","checked","type","val","value","formatPhForSearch","staffFilter","fn","ln","st","dn","pn","pn2","em","join","indexOf","filteredStaff","filter","count","length","Component","App","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.06b01a13.chunk.js","sourcesContent":["import React from \"react\";\r\nfunction AllResultsContainer(props) {\r\n return (\r\n \r\n
\r\n \r\n {/*
{props.count} matches
*/}\r\n
\r\n {props.children}\r\n
\r\n );\r\n}\r\n\r\nexport default AllResultsContainer;\r\n","import React from \"react\";\r\n\r\nfunction FilteredResultsContainer(props) {\r\n return (\r\n
\r\n
    \r\n
  1. \r\n
    Name
    \r\n
    Title
    \r\n
    Department
    \r\n
    Phone
    \r\n {props.isAuthed ? (\r\n \r\n
    Cell Phone
    \r\n
    \r\n ) : (\r\n undefined\r\n )}\r\n
    Email
    \r\n
  2. \r\n {props.children}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default FilteredResultsContainer;\r\n","import React from \"react\";\r\nfunction Staff(props) {\r\n return (\r\n
  • \r\n
    {props.name}
    \r\n
    {props.title}
    \r\n
    {props.department}
    \r\n {props.children}\r\n
    \r\n {props.emails.map(addr => (\r\n {addr.trim()}\r\n ))}\r\n
    \r\n
  • \r\n );\r\n}\r\nexport default Staff;\r\n","import React from \"react\";\r\nfunction Tel(props) {\r\n if (!props.num) return null;\r\n const areaCode = props.num[0];\r\n const exchange = props.num[1];\r\n const line = props.num[2];\r\n return (\r\n \r\n ({areaCode}) {exchange}-{line}\r\n \r\n );\r\n}\r\nexport default Tel;\r\n","import React from \"react\";\r\nimport Tel from \"./Tel\";\r\nfunction TelList(props) {\r\n const rx = /(\\(([2-9][0-9][0-9])\\) ([2-9][0-9][0-9])-([0-9][0-9][0-9][0-9]))/g;\r\n const ret = [];\r\n const arr = props.phone ? props.phone.replace(rx, (a, b, c, d, e) => {\r\n ret.push([c, d, e]);\r\n return \"|\";\r\n }).split(\"|\") : [];\r\n return (\r\n
    \r\n {arr.map((a, n) => (\r\n \r\n {arr[n]}\r\n \r\n \r\n ))}\r\n
    \r\n );\r\n}\r\nexport default TelList;\r\n","import React, { Component } from \"react\";\r\nimport AllResultsContainer from \"./AllResultsContainer\";\r\nimport FilteredResultsContainer from \"./FilteredResultsContainer\";\r\nimport Staff from \"./Staff\";\r\nimport TelList from \"./TelList\";\r\nclass Main extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: window.scoeWebSite.staffDirectory.data,\r\n apiEndpoint: window.scoeWebSite.staffDirectory.apiEndpoint,\r\n searchString: \"\",\r\n isAuthed: window.scoeWebSite.isAuthed,\r\n loading: true,\r\n placeholder: window.scoeWebSite.staffDirectory.placeholderText\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n function formatFixes(dat) {\r\n function fixPhone(rsp) {\r\n function fp(ph) {\r\n return ph.replace(\r\n /(\\([2-9][0-9][0-9]\\) [2-9][0-9][0-9])(-[0-9][0-9][0-9][0-9])\\/(-[0-9][0-9][0-9][0-9])/,\r\n \"$1$2/$1$3\"\r\n );\r\n }\r\n return rsp.map(r => {\r\n const p1 = r[\"Phone Number Combined\"];\r\n if (p1) r[\"Phone Number Combined\"] = fp(p1);\r\n const p2 = r[\"Phone 2 Number Combined\"];\r\n if (p2) r[\"Phone 2 Number Combined\"] = fp(p2);\r\n return r;\r\n });\r\n }\r\n return fixPhone(dat);\r\n }\r\n\r\n if (!this.state.data) {\r\n this.setState({ loading: true });\r\n fetch(this.state.apiEndpoint, {\r\n headers: {\r\n Accept: \"application/json\"\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(data =>\r\n this.setState({ loading: false, data: formatFixes(data) })\r\n );\r\n } else {\r\n this.setState({ loading: false, data: formatFixes(this.state.data) });\r\n }\r\n }\r\n handleChange(event) {\r\n const { checked, type, value: val, name } = event.target;\r\n const value = type === \"checkbox\" ? checked : val;\r\n this.setState({\r\n [name]: value\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.loading) return null;\r\n const searchString = this.state.searchString.toLowerCase();\r\n\r\n function formatPhForSearch(ph) {\r\n return ph ? ph.replace(/[() -]/g, \"\").replace(/[^0-9][^0-9]*/g, \" \") : \"\";\r\n }\r\n const staffFilter = searchString\r\n ? ({\r\n \"First Name\": fn,\r\n \"Last Name\": ln,\r\n \"Staff Title\": st,\r\n \"Department for Staff Directory Text\": dn,\r\n \"Phone Number Combined\": pn,\r\n \"Phone 2 Number Combined\": pn2,\r\n \"Email Address\": em,\r\n }) => {\r\n return (\r\n `${fn} ${ln} ${st} ${dn} ${em.join(' ')} ${formatPhForSearch(pn)}${\r\n this.isAuthed ? \" \" + formatPhForSearch(pn2) : \"\"\r\n }`\r\n .toLowerCase()\r\n .indexOf(searchString) > -1\r\n );\r\n }\r\n : () => true;\r\n\r\n //page was janky, maybe not running empty filters would help.\r\n let filteredStaff = searchString ? this.state.data : [];\r\n if (searchString && !this.state.loading) {\r\n filteredStaff = filteredStaff.filter(staffFilter);\r\n }\r\n\r\n return (\r\n \r\n {this.state.loading ? (\r\n \"\"\r\n ) : (\r\n
    \r\n \r\n {filteredStaff.map(d => {\r\n return (\r\n \r\n \r\n \r\n {this.state.isAuthed ? (\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Main;\r\n","import React from 'react';\r\nimport StaffDirectory from './components/StaffDirectory/Main';\r\nimport 'bootstrap/dist/css/bootstrap.min.css'\r\n\r\nfunction App() {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\n//import * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(, document.getElementById('root'));\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\n//serviceWorker.unregister();\r\n"],"sourceRoot":""}