{"version":3,"sources":["App.js","index.js","Logo.png"],"names":["App","useState","searchString","setSearchString","searchResults","setSearchResults","searching","setSearching","selectedDocument","setSelectedDocument","searchMeta","setSearchMeta","pageNumber","setPageNumber","pageSize","searchId","setSearchId","useEffect","length","doSearch","getDocument","documentId","a","fetch","headers","json","then","doc","catch","err","console","error","controller","AbortController","signal","abort","method","body","JSON","stringify","startPage","e","name","response","d","log","page","content","meta","alert","linkToSearch","position","findIndex","documentRVO","documentID","score","resultPosition","text","class","src","logo","alt","type","value","onChange","target","onClick","className","style","marginLeft","sectionRVOs","sort","b","sortOrder","map","s","dangerouslySetInnerHTML","__html","defaultText","documentURL","href","rel","item","key","title","fragments","f","Array","from","totalPages","keys","i","rootElement","document","getElementById","ReactDOM","render","module","exports"],"mappings":"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","file":"static/js/main.db56de31.chunk.js","sourcesContent":["import \"./styles.css\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport logo from './Logo.png';\r\n\r\n\r\nexport default function App() {\r\n const [searchString, setSearchString] = useState(\"\");\r\n const [searchResults, setSearchResults] = useState([]);\r\n const [searching, setSearching] = useState(false);\r\n const [selectedDocument, setSelectedDocument] = useState(null);\r\n const [searchMeta, setSearchMeta] = useState({});\r\n const [pageNumber, setPageNumber] = useState(0);\r\n const [pageSize, setPageSize] = useState(10);\r\n const [searchId, setSearchId] = useState(null);\r\n const BULLET = '\\u2022';\r\n\r\n\r\n /**\r\n * Re-search if the page number or page size is changed\r\n */\r\n useEffect(() => {\r\n if (searchResults.length > 0) {\r\n doSearch();\r\n }\r\n }, [pageNumber, pageSize]);\r\n\r\n /**\r\n * Gets the content for a particular document. This is called\r\n * when the user selects a search result and we want to display the\r\n * content to them. Make sure to include the \"Authorization\" header\r\n * with your API token.\r\n */\r\n const getDocument = async (documentId) => {\r\n let response = await fetch(\r\n `https://baldwin.kpsol.com:8091/uks/document/${documentId}/content?locale=en_GB&searchId=${searchId}`,\r\n {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n }\r\n );\r\n response\r\n .json()\r\n .then((doc) => {\r\n debugger;\r\n setSelectedDocument(doc);\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n const controller = new AbortController();\r\n const { signal } = controller;\r\n\r\n /**\r\n * Conduct a search against UKS. Additional filters can be\r\n * added if desired by adding them to the request body.\r\n */\r\n const doSearch = async () => {\r\n if (searchString != \"\") {\r\n\r\n if (searching === true) {\r\n controller.abort();\r\n }\r\n setSearching(true);\r\n setSelectedDocument(null);\r\n\r\n let response = await fetch(\r\n \"https://baldwin.kpsol.com:8091/uks/search/\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n signal: signal,\r\n body: JSON.stringify({\r\n searchString, // if not provided, returns all documents the user can see\r\n startPage: pageNumber + 1, // starts at 1\r\n pageSize,// defaults to 10\r\n searchId\r\n })\r\n }).catch((e) => {\r\n if (e.name === \"AbortError\") {\r\n // alert(\"cancelled\");\r\n }\r\n });\r\n response &&\r\n response\r\n .json()\r\n .then((d) => {\r\n console.log(d);\r\n setSearching(false);\r\n const { content, ...meta } = d.page;\r\n setSearchResults(content);\r\n setSearchMeta(meta);\r\n setSearchId(d.searchId);\r\n })\r\n .catch((e) => {\r\n\r\n\r\n // console.error(e);\r\n });\r\n } else {\r\n alert(\"Please type a question.\");\r\n }\r\n };\r\n\r\n /**\r\n * Link a document to a given search. This has a similar effect\r\n * to saying \"Yes this document resolves my search\" in the previous\r\n * version.\r\n */\r\n const linkToSearch = async () => {\r\n let position = searchResults.findIndex(\r\n (d) => d.documentId === selectedDocument.documentRVO.documentID\r\n );\r\n let response = await fetch(\r\n \"https://baldwin.kpsol.com:8091/uks/search/resolutions/\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n documentId: selectedDocument.documentRVO.documentID, // required, the document to link\r\n searchId, // required, returned from the search request\r\n score: searchResults[position].score, // required, the score of the search result\r\n resultPosition: position // required, the index of the document in the search results\r\n })\r\n }\r\n );\r\n response\r\n .text()\r\n .then((d) => {\r\n // returns the ID of the newly created link\r\n setSelectedDocument(null);\r\n })\r\n .catch((e) => {\r\n console.error(e);\r\n });\r\n };\r\n\r\n return (\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \"Logo\"\r\n
\r\n
\r\n

How Do I ?

\r\n
\r\n
Please type your question: {\" \"}\r\n
\r\n
\r\n setSearchString(e.target.value)}\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 {selectedDocument ? (\r\n
\r\n\r\n {searchId && (\r\n
\r\n Did this document answer your question? \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n )}\r\n {/* If the sectionRVOs property is present, this is an internal\r\n knowledge item, so we want to display the sections directly */}\r\n {selectedDocument.sectionRVOs ? (\r\n selectedDocument.sectionRVOs.sort((a, b) => a.sortOrder - b.sortOrder).map((s) => {\r\n\r\n if (s.name == \"Question\" || s.name == \"Answer\" || s.name == \"Content\") {\r\n return (\r\n\r\n
\r\n

{s.name}

\r\n
\r\n\r\n
\r\n );\r\n }\r\n })\r\n ) : (\r\n <>\r\n {/* There's no sectionRVOs property, so this is an external\r\n document - a website or a file upload. A webpage's URL can be extracted\r\n as below to present or redirect the user. Any other file types\r\n would need to be rendered correctly according to their file type,\r\n e.g. in an iframe for plain text or an image. */}\r\n {selectedDocument.documentRVO &&\r\n selectedDocument.documentRVO.documentURL ? (\r\n \r\n {selectedDocument.documentRVO.documentURL}\r\n \r\n ) : (\r\n \"Cannot display this file\"\r\n )}\r\n \r\n )}\r\n
\r\n ) : (\r\n <>\r\n {searching ? (\r\n
Searching...
\r\n ) : (\r\n
\r\n {\r\n searchResults.map((item) => (\r\n <>\r\n\r\n {'\\u2022'} getDocument(item.documentId)}\r\n >\r\n {item.title}\r\n \r\n
\r\n
\r\n {item.fragments.map((f) => (\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\n\r\n }\r\n\r\n\r\n {searchResults.length > 0 ? (\r\n\r\n
\r\n\r\n
\r\n \r\n {Array.from(Array(searchMeta.totalPages).keys()).map((i) => {\r\n return (\r\n setPageNumber(i)}\r\n className={pageNumber === i ? \"active\" : \"\"}\r\n >\r\n {i + 1}\r\n \r\n );\r\n })}\r\n setPageNumber(searchMeta.totalPages - 1)}\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\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","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React,{ StrictMode } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\n\r\nimport App from './App';\r\n\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/Logo.93afe34a.png\";"],"sourceRoot":""}