{"version":3,"sources":["components/Services/api.js","components/Provider/Provider.js","components/Services/Services.js","components/Form/Form.js","components/Pagination/Pagination.js","components/Result/Result.js","App.js","reportWebVitals.js","index.js"],"names":["module","exports","initialState","term","total","active","results","response","searching","query","config","actions","reducer","state","action","type","_objectSpread","value","SET_QUERY","SearchContext","createContext","Provider","_ref","children","dispatch","useReducer","setTerm","setResults","setResponse","setTotal","setActive","setQuery","setSearching","search","from","async","simple_query_string","res","axios","get","concat","api","then","catch","error","console","log","SearchAPI","status","data","hits","reset","_jsx","SearchForm","useContext","searchTerm","createRef","searchParamsChange","keyword","URLSearchParams","window","location","handleReset","React","useEffect","addEventListener","document","removeEventListener","event","q","className","Form","onSubmit","preventDefault","updateQueryString","params","partial","delete","set","toString","history","pushState","pathname","_jsxs","Row","Col","md","lg","Control","onChange","target","placeholder","ref","Button","variant","FontAwesomeIcon","icon","pulse","SeedPagination","pageSize","size","scrollTo","handleClick","itemClicked","text","parseInt","Pagination","renderPageNumbers","current","items","pages","Math","ceil","number","push","Item","onClick","createMarkup","markup","undefined","Array","isArray","substring","highlight","fragment_size","__html","Result","length","map","index","href","_source","url","title","hasOwnProperty","dangerouslySetInnerHTML","body","Pages","library","add","faSearch","faSpinner","App","FormComponent","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.0da95be4.chunk.js","sourcesContent":["const api = \"https://emfuom5ojj.execute-api.us-east-1.amazonaws.com/prod/search\"\r\nmodule.exports = api;","import React, { createContext, useReducer } from \"react\";\r\nimport { SearchAPI } from '../Services/Services';\r\nimport config from '../../config.json';\r\n\r\nlet initialState = {\r\n term: '',\r\n total: 0,\r\n active: 1,\r\n results: {},\r\n response: {},\r\n searching: false,\r\n query: config.query\r\n};\r\n\r\nconst actions = {\r\n SET_TERM: \"SET_TERM\",\r\n SET_RESULTS: \"SET_RESULTS\",\r\n SET_RESPONSE: \"SET_RESPONSE\",\r\n SET_TOTAL: \"SET_TOTAL\",\r\n SET_ACTIVE: \"SET_ACTIVE\",\r\n SET_QUERY: \"SET_QUERY\",\r\n SET_SEARCHING: \"SET_SEARCHING\",\r\n SEARCH: \"SEARCH\",\r\n RESET: \"RESET\"\r\n};\r\n\r\nfunction reducer(state, action) {\r\n switch (action.type) {\r\n case actions.SET_TERM:\r\n return { ...state, term: action.value };\r\n case actions.SET_RESULTS:\r\n return { ...state, results: action.value };\r\n case actions.SET_RESPONSE:\r\n return { ...state, response: action.value }; \r\n case actions.SET_TOTAL:\r\n return { ...state, total: action.value };\r\n case actions.SET_ACTIVE:\r\n return { ...state, active: action.value };\r\n case action.SET_QUERY:\r\n return { ...state, query: action.value };\r\n case actions.SET_SEARCHING:\r\n return { ...state, searching: action.value }; \r\n case actions.RESET:\r\n return { ...state, ...initialState };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst SearchContext = createContext();\r\n\r\nconst Provider = ({children}) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n const value = {\r\n term: state.term,\r\n total: state.total,\r\n active: state.active,\r\n results: state.results,\r\n response: state.response,\r\n searching: state.searching,\r\n query: state.query,\r\n setTerm: value => {\r\n dispatch({ type: actions.SET_TERM, value });\r\n },\r\n setResults: value => {\r\n dispatch({ type:actions.SET_RESULTS, value });\r\n },\r\n setResponse: value => {\r\n dispatch({ type:actions.SET_RESPONSE, value });\r\n },\r\n setTotal: value => {\r\n dispatch({ type:actions.SET_TOTAL, value });\r\n },\r\n setActive: value => {\r\n dispatch({ type:actions.SET_ACTIVE, value });\r\n },\r\n setQuery: value => {\r\n dispatch({ type:actions.SET_QUERY, value });\r\n },\r\n setSearching: value => {\r\n dispatch({ type:actions.SET_SEARCHING, value });\r\n },\r\n search: value => {\r\n if (value === 0) {\r\n // Reset active page to first item\r\n dispatch({ type:actions.SET_ACTIVE, value: 1 });\r\n }\r\n\r\n state.query.from = value;\r\n dispatch({ type:actions.SET_SEARCHING, value: true });\r\n SearchAPI(state.query).then(res => {\r\n if (res && res.status === 200) {\r\n let total = res.data.hits.total.value;\r\n let results = res.data.hits.hits;\r\n let response = res.data;\r\n dispatch({ type:actions.SET_TOTAL, value: total });\r\n dispatch({ type:actions.SET_RESULTS, value: results });\r\n dispatch({ type:actions.SET_RESPONSE, value: response });\r\n }\r\n dispatch({ type:actions.SET_SEARCHING, value: false });\r\n }, (error) => {\r\n console.log(error);\r\n dispatch({ type:actions.SET_SEARCHING, value: false });\r\n });\r\n },\r\n reset: () => {\r\n dispatch({ type: actions.RESET });\r\n }\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n};\r\n\r\nexport { Provider, SearchContext };","import axios from \"axios\";\r\nimport api from \"./api\"\r\n\r\nexport const SearchAPI = async(query) => {\r\n let from = query.from;\r\n let search = query.query.simple_query_string.query\r\n const res = axios.get(`${api}?from=${from}&query=${search}`).then(response => {\r\n return response; \r\n }).catch(function (error) {\r\n console.log(error);\r\n return error;\r\n });\r\n\r\n return await res;\r\n};\r\n\r\n\r\n","import React, { useContext, createRef } from \"react\";\r\nimport Button from 'react-bootstrap/Button';\r\nimport Form from 'react-bootstrap/Form';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport './Form.css';\r\nimport { SearchContext } from '../Provider/Provider';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\nconst SearchForm = () => {\r\n const { term, setTerm, search, reset, query, setQuery, searching } = useContext(SearchContext);\r\n //const [error, setError] = useState({\"message\": 'An error has occured.', \"details\": ''});\r\n const searchTerm = createRef();\r\n\r\n\r\n const updateQueryString = () => {\r\n const params = new URLSearchParams(window.location.search)\r\n let keyword = params.get('keyword')\r\n let partial = '';\r\n \r\n if (keyword && keyword !== null && keyword !== '') {\r\n\r\n params.delete('keyword')\r\n params.set(\"keyword\", query.query.simple_query_string.query)\r\n if (query.query.simple_query_string.query) {\r\n partial = `?${params.toString()}`\r\n }\r\n } else {\r\n params.set('keyword', query.query.simple_query_string.query)\r\n partial = `?${params.toString()}`\r\n }\r\n\r\n window.history.pushState(\r\n null,\r\n '',\r\n `${window.location.pathname}${partial}`\r\n );\r\n }\r\n \r\n /**\r\n * Searches key term on Elasticsearch.\r\n * \r\n * @param {Event} event The submit event.\r\n */\r\n const handleSubmit = (event) => {\r\n event.preventDefault();\r\n let from = 0;\r\n updateQueryString();\r\n search(from);\r\n };\r\n\r\n /**\r\n * Update query string from web browser history.\r\n * \r\n */\r\n const searchParamsChange = () => {\r\n const params = new URLSearchParams(window.location.search)\r\n let keyword = params.get('keyword')\r\n\r\n if (keyword && keyword !== null && keyword !== '') {\r\n let q = query;\r\n q.query.simple_query_string.query = keyword;\r\n let from = 0;\r\n setTerm(keyword)\r\n setQuery(keyword);\r\n search(from);\r\n } else {\r\n handleReset()\r\n }\r\n\r\n }\r\n\r\n React.useEffect(() => {\r\n window.addEventListener('popstate', searchParamsChange)\r\n return () => {\r\n document.removeEventListener('popstate', searchParamsChange);\r\n }\r\n }, [query]);\r\n\r\n\r\n /**\r\n * Resets input textbox.\r\n * \r\n * @param {Event} event The reset click event.\r\n */\r\n const handleReset = (event) => {\r\n let q = query;\r\n q.query.simple_query_string.query = '';\r\n setQuery(q);\r\n reset();\r\n }\r\n\r\n \r\n /**\r\n * Update Elasticsearch query string param.\r\n * \r\n * @param {Event} event The keyup event.\r\n */\r\n const handleInput = event => {\r\n setTerm(event.target.value);\r\n\r\n let q = query;\r\n q.query.simple_query_string.query = event.target.value;\r\n setQuery(q);\r\n };\r\n\r\n /**\r\n * Get parameters from query string and run search.\r\n */\r\n React.useEffect(() => {\r\n\r\n const params = new URLSearchParams(window.location.search)\r\n let keyword = params.get('keyword')\r\n \r\n if (keyword && keyword !== null && keyword !== '') {\r\n query.query.simple_query_string.query = keyword;\r\n let from = 0;\r\n setTerm(keyword)\r\n setQuery(keyword);\r\n search(from);\r\n }\r\n }, [])\r\n\r\n \r\n\r\n return (\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 SearchForm;\r\n","import React, { useContext, useEffect } from 'react';\r\nimport './Pagination.css';\r\nimport Pagination from 'react-bootstrap/Pagination'\r\nimport { SearchContext } from '../Provider/Provider';\r\nimport config from '../../config.json';\r\n\r\nconst SIZE = 20;\r\n\r\nconst SeedPagination = () => {\r\n const { total, active, setActive, search } = useContext(SearchContext);\r\n const pageSize = config.query.size ? config.query.size : SIZE;\r\n\r\n /**\r\n * Scroll to top on page change.\r\n */\r\n useEffect(() => {\r\n window.scrollTo(0, 0)\r\n }, [active])\r\n\r\n /**\r\n * Requests next set of items from Elastic.\r\n * \r\n * @param {Event} event The on click event.\r\n */\r\n const handleClick = (event) => {\r\n var itemClicked = event.target.text;\r\n if (itemClicked) {\r\n itemClicked = parseInt(itemClicked);\r\n let from = itemClicked === 1 ? 0 : (itemClicked - 1) * pageSize;\r\n setActive(itemClicked);\r\n search(from);\r\n }\r\n }\r\n\r\n const renderPageNumbers = () => {\r\n let current = active;\r\n let items = [];\r\n let pages = total/pageSize === 0 ? 0 : Math.ceil(total/pageSize);\r\n \r\n for (let number = 1; number <= pages; number++) {\r\n items.push(\r\n \r\n {number}\r\n ,\r\n );\r\n }\r\n\r\n return items;\r\n }\r\n\r\n return (\r\n
\r\n { total > 0 && total > pageSize &&\r\n {renderPageNumbers()}\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default SeedPagination;","import React, { useState } from 'react';\r\nimport './Result.css';\r\nimport { SearchContext } from '../Provider/Provider';\r\nimport config from '../../config.json';\r\nimport Pages from '../Pagination/Pagination';\r\n\r\n// Use this fragment size if it's not defined in config.json\r\nconst MAX_FRAG_SIZE = 400;\r\n\r\nfunction createMarkup(markup) {\r\n if (markup !== undefined && Array.isArray(markup)) {\r\n markup = markup[0].substring(0, config.query.highlight.fragment_size ? config.query.highlight.fragment_size : MAX_FRAG_SIZE);\r\n }\r\n return {__html: markup};\r\n}\r\n\r\nconst Result = () => {\r\n const { results, total } = React.useContext(SearchContext);\r\n\r\n return (\r\n
\r\n {results && results.length > 0 &&\r\n
\r\n

{ config.query.from + 1 } to { results.length + config.query.from } of { total } results found

\r\n
\r\n }\r\n {results && results.length > 0 && results.map((value, index) => {\r\n return (\r\n
\r\n

{value._source.title}

\r\n
\r\n {value.highlight && value._source.hasOwnProperty('body')\r\n ?
\r\n :
\r\n }\r\n
\r\n
\r\n )\r\n })\r\n } \r\n { results && results.length === 0 &&\r\n

No results found

\r\n }\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Result;\r\n","import React from 'react';\r\nimport Container from 'react-bootstrap/Container';\r\nimport FormComponent from './components/Form/Form';\r\nimport Result from './components/Result/Result';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport './App.css';\r\nimport { Provider } from './components/Provider/Provider';\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { faSearch, faSpinner } from '@fortawesome/free-solid-svg-icons';\r\n\r\nlibrary.add(faSearch, faSpinner);\r\n\r\n\r\nfunction App() {\r\n\r\n return (\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 App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}