{"version":3,"sources":["account/Register.js","components/Home.module.css","components/Results.module.css","components/SitebarCollapsable.module.css","data/FetchWrapper.js","account/ForgotPassword.js","account/Profile.js","components/DragOver.module.css","components/standalone/Download.module.css","components/Utils.js","components/search/Help.module.css","components/response/Resultset.module.css","components/tabs/DetailTab.module.css","components/search/SearchBar.module.css","services/search.service.js","components/Terms.js","services/account.service.js","services/alert.service.js","services/modal.service.js","services/stats.service.js","services/detail.service.js","services/topic.service.js","services/query.service.js","components/Terms.module.css","components/Utils.module.css","components/Truncate.module.css","components/personal/QueryActions.module.css","components/topic/TopicSelector.module.css","components/Alert.module.css","components/Modal.module.css","components/search/BasicFilters.module.css","components/search/AdvancedFilters.js","components/search/AdvancedFilters.module.css","static/logo.png","account/UserButton.module.css","components/search/HandleQueryString.js","account/Account.module.css","components/response/Response.module.css","data/Types.js","components/Layout.js","components/search/Help.js","components/Home.js","components/Truncate.js","components/response/ResponseRow.js","components/response/ResponseDetail.js","components/personal/NoteForm.js","components/standalone/Download.js","components/personal/UploadForm.js","components/personal/QueryActions.js","components/response/ResponseActions.js","components/response/Resultset.js","components/response/License.js","components/response/OwnershipEvolution.js","components/tabs/DetailTab.js","components/tabs/SimilarTab.js","components/tabs/WebTab.js","components/CallToAction.js","components/topic/TopicForm.js","components/topic/TopicSelector.js","components/tabs/PersonalTab.js","components/tabs/SearchTab.js","components/Results.js","components/Alert.js","components/Modal.js","router/Logout.js","components/SitebarCollapsable.js","components/topic/Personal.js","components/RelevantSites.js","components/search/BasicFilters.js","components/search/FilterToggle.js","components/search/SearchFilter.js","account/UserButton.js","components/search/SearchBar.js","account/VerifyEmail.js","account/DeleteEmail.js","account/ResetPassword.js","account/index.js","App.js","index.js","components/topic/Personal.module.css","components/tabs/PersonalTab.module.css","data/History.js","components/tabs/SearchTab.module.css","account/Login.js","hooks/useObservable.js","hooks/useAuth.js","hooks/useQuery.js","hooks/useResponses.js","hooks/useSearch.js","hooks/useSearchQuery.js","hooks/useSearchResult.js","hooks/useSearchStatus.js","hooks/useSharedState.js","hooks/useSearchWeb.js","hooks/useSearchSimilar.js","hooks/useTopic.js","hooks/useImagePreview.js","App.module.css","components/FA.js"],"names":["Register","isModal","close","history","useHistory","validationSchema","Yup","shape","email","required","password","min","confirmPassword","oneOf","gdpr","onSubmit","useCallback","fields","setStatus","setSubmitting","accountService","register","then","alertService","success","keepAfterRouteChange","push","catch","error","handleTerms","e","initialValues","errors","touched","isSubmitting","className","title","onClick","icon","size","name","type","component","id","htmlFor","href","target","rel","disabled","to","openRegisterModal","modalService","open","children","module","exports","fetchWrapper","get","url","signal","requestOptions","method","headers","authHeader","fetch","handleResponse","post","body","JSON","stringify","put","delete","upload","download","r","blob","Promise","reject","user","userValue","isLoggedIn","token","isApiUrl","startsWith","Authorization","response","text","data","parse","ok","includes","status","logout","message","statusText","ForgotPassword","clear","forgotPassword","finally","tag","openForgotPasswordModal","Profile","useAuth","useState","isDeleting","setDeleting","oldPassword","profile","setProfile","useEffectOnce","value","topicCount","queryCount","localStorage","updatePassword","openProfileModal","NotAvailabe","NotFound","items","Loading","GetFieldsList","field","labelOnly","QueryFields","PatentNumber","key","label","Title","Abstract","Year","Date","Authors","Author","Owners","Owner","DataSource","Publisher","FOS","Issue","Url","Keywords","Venue","Language","DOI","Status","Country","Claims","IPC","CPC","map","f","Select","uid","empty","setValue","allowSetEmpty","isOpen","setIsOpen","toggle","styles","dropdown","caret","color","right","item","i","level","repeat","initialState","QueryType","ALL","Default","query","isAdvanced","search$","BehaviorSubject","result$","status$","StatusType","None","abort$","AbortController","mapResult","summary","report","docsCount","resultset","mapDocument","document","d","authors","dataSource","patstat","owners","classification","uspto","applnIpc","undefined","_id","patentNumber","number","applnTitle","abstract","applnAbstr","date","year","responseType","ResponseType","dataCategory","mapPersons","ipc","mapIPC","cpc","mapCPC","country","language","lang","granted","publisher","fos","keywords","issue","Set","doi","venue","potentiallyLicensed","potentiallyLicensable","hasOwnProperty","Array","isArray","c","ipc_class_symbol","persons","p","person_name","abortSearch","Result","Queried","Querying","Modified","Append","result","produce","next","abort","search","detailService","handleReportGenerationError","searchService","reset","setImmediate","execute","page","append","params","q","advanced","queryString","warn","_result","MAX_PAGE","console","toLocaleString","index","splice","length","DOMException","mapper","user$","getItem","baseUrl","login","setItem","removeItem","queryService","query$","topicService","topics$","current$","queries$","verifyEmail","deleteEmail","redirectUrl","resetPassword","alertSubject","Subject","defaultId","onAlert","asObservable","pipe","filter","x","options","alert","AlertType","Success","Error","info","Info","Warning","autoClose","modalSubject","onModal","modal","stats$","statsService","stats","byId","patents","_fetch","evolution","publications","publishers","venues","histogram","mapOptions","chart","switchLabels","hAxis","textPosition","vAxis","bar","groupWidth","chartArea","left","bottom","width","height","legend","animation","startup","easing","duration","mapData","trimChart","unshift","xLabel","yLabel","mapChartType","stat","Object","keys","join","chartType","_","web$","similar$","mapWeb","wikipedia","pages","pageId","WIKI","extract","google","qs","image","thumbnailLink","substr","indexOf","replace","GOOGLE","displayLink","contextLink","web","similar","responseId","current","topic","queries","create","topics","edit","topicId","parameters","updateTopicQuery","_response","find","toLowerCase","file","formData","fileId","fileName","window","URL","createObjectURL","Blob","link","createElement","setAttribute","appendChild","click","parentNode","removeChild","note","findIndex","queryId","DataSourceFilter","queryType","onChange","DataSourceLabel","DataSourceByQueryType","AdvancedFilters","useSearchQuery","setQuery","advancedQuery","setAdvancedQuery","logicalOperator","setLogicalOperator","availableFields","basicQuery","initialAdvancedQuery","matchAll","foundFields","match","useEffect","toggleLogicalOperator","blur","handleAdvancedQueryChange","active","Fragment","bsSize","HandleQueryString","location","useLocation","useSearch","handleHistoryChange","paramsQuery","parseInt","isEqual","actions","addEventListener","removeEventListener","PATENT","PUBLICATION","QueryTypeLabel","mag","springer","DataSourceIcons","FILE","ResponseTypeLabel","ResponseTypeIcons","RegExFileExtension","ImageFileExtensions","Layout","fluid","displayName","Tab","Help","tab","setTab","handleToggle","t","FA","tabs","nav","activeTab","content","openHelpModal","Home","useSharedState","a","fetchAll","container","wrapper","legendToggle","Truncate","clamp","ResponseRow","style","toggleDetail","handleResize","useImagePreview","isImage","isLoading","row","src","alt","meta","toLocaleDateString","person","PersonalRow","props","personal","WebRow","ResponseDetail","handleClose","detail","tabId","tabDetail","tabPane","NoteForm","useQuery","DownloadContent","triggered","handleClick","preventDefault","Download","goBack","card","openDownloadModal","SUPPORTED_FORMATS","UploadForm","files","submitRef","useRef","droppedFiles","setDroppedFiles","useDropArea","onFiles","handleDroparea","state","test","FormData","values","setFieldValue","handleFileChange","handleSubmit","over","dragover","ref","openUploadFormModal","QueryActions","dragoverStyles","ResponseActions","useResponses","responseIds","isSaved","stopPropagation","short","hostname","Resultset","detailId","setDetail","RowComponent","cache","CellMeasurerCache","fixedWidth","defaultHeight","setPages","list","forceUpdate","clearAll","forceUpdateGrid","loadMoreRows","startIndex","stopIndex","prototype","call","Math","floor","isRowLoaded","getResponse","rowRenderer","parent","columnIndex","rowIndex","infiniteLoaderChildren","onRowsRendered","registerChild","rowCount","rowHeight","deferredMeasurementCache","overscanRowCount","notFound","minimumBatchSize","threshold","loading","License","openLicenseModal","OwnershipEvolution","categories","setCategories","owner","setOwner","category","setCategory","setStat","getFlatCategories","concat","top","Detail","dateGranted","licensed","licensable","licensee","licensedIn","getLicenseInfo","claims","DetailTab","SimilarTab","useSearchSimilar","openDetailModal","WebTab","useSearchWeb","onRowClick","CallToAction","split","emptyLabel","addonType","spinner","setCurrent","action","TopicForm","useTopic","description","openTopicFormModal","TopicSelector","onTopicSelect","onTopicDelete","topicActions","currentActions","PersonalTab","auth","classNames","personalTab","hasDetails","default","summaryWrapper","Login","pill","minHeight","SearchTab","searchTab","Results","useSearchResult","currentQuery","results","Alert","fade","alerts","setAlerts","removeAlert","alertWithFade","setTimeout","subscription","subscribe","filteredAlerts","forEach","historyUnlisten","listen","pathname","endsWith","unsubscribe","cssClasses","classes","alertTypeClass","dangerouslySetInnerHTML","__html","defaultProps","Modal","modals","setModals","removeModal","m","Logout","SitebarCollapsable","header","toggled","cardHeader","cardBody","Personal","qActions","separator","showQuery","queryActions","getCountries","countries","child","RelevantSites","setItems","setCountry","useMemo","sort","filteredItem","filterLinks","_item","node","renderNav","vertical","BasicFilters","allowedFields","check","toggleField","checked","FilterToggle","toggleSelected","SearchFilter","UserButton","button","getQueryTypeActions","SearchBar","helpAction","searchActions","xs","logo","input","placeholder","readOnly","align","VerifyEmail","EmailStatus","emailStatus","setEmailStatus","getBody","DeleteEmail","ResetPassword","setToken","setEmail","getForm","Account","path","library","add","faInfo","faEdit","faTimes","faCheck","faComment","faStream","faUser","faQuoteLeft","faFilter","faDownload","faSearch","faBookmark","faExternalLinkAlt","faFilePdf","faGlobe","faLock","faHistory","faSignInAlt","faSignOutAlt","faEye","faSpinner","faFileUpload","faStar","faCaretDown","faCaretRight","faRedo","faTrash","faExclamationTriangle","faUserCircle","faFolderPlus","faUserPlus","faNewspaper","faEllipsisV","faSyncAlt","faRegistered","faFlagUsa","faFingerprint","faChessKnight","faAngleLeft","faGoogle","faWikipediaW","faMicrosoft","App","useSearchStatus","MainComponent","app","splash","main","exact","footer","getFullYear","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","createBrowserHistory","from","openLoginModal","LoginButton","useObservable","observable","setState","subscribed","queryAction","setResult","setSearch","setSearchAndAbort","newState","unique","setUnique","setImage","exec","log","revokeObjectURL","prefix"],"mappings":"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","file":"static/js/main.bcc277a5.chunk.js","sourcesContent":["import React, { useCallback } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { Formik, Field, Form, ErrorMessage } from \"formik\";\nimport { FA } from \"components/FA\";\nimport { openTermsModal } from \"components/Terms\";\nimport * as Yup from \"yup\";\n\nimport { accountService, alertService, modalService } from \"services\";\n\nfunction Register({ isModal = false, close = null }) {\n const history = useHistory();\n const initialValues = {\n email: \"\",\n password: \"\",\n confirmPassword: \"\",\n gdpr: false,\n };\n\n const validationSchema = Yup.object().shape({\n email: Yup.string().email(\"Email is invalid\").required(\"Email is required\"),\n password: Yup.string()\n .min(6, \"Password must be at least 6 characters\")\n .required(\"Password is required\"),\n confirmPassword: Yup.string()\n .oneOf([Yup.ref(\"password\"), null], \"Passwords must match\")\n .required(\"You must confirm your password\"),\n gdpr: Yup.bool().oneOf(\n [true],\n \"You must agree to our Terms & Conditions to register\"\n ),\n });\n\n const onSubmit = useCallback(\n (fields, { setStatus, setSubmitting }) => {\n setStatus();\n accountService\n .register(fields)\n .then(() => {\n alertService.success(\n \"Registration successful, please check your email for verification instructions\",\n { keepAfterRouteChange: true }\n );\n if (typeof close === \"function\") {\n close();\n } else {\n history.push(\"login\");\n }\n })\n .catch((error) => {\n setSubmitting(false);\n alertService.error(error);\n });\n },\n [close, history]\n );\n\n const handleTerms = useCallback((e) => {\n if (false) {\n e.preventDefault();\n openTermsModal();\n }\n }, []);\n\n return (\n \n {({ errors, touched, isSubmitting }) => (\n
\n

\n Register{\" \"}\n {isModal && (\n close()}\n icon=\"times\"\n size=\"xs\"\n />\n )}\n

\n
\n
\n \n \n \n
\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n \n \n
\n
\n \n {isSubmitting && (\n \n )}\n Register\n \n {isModal ? (\n \n ) : (\n \n Cancel\n \n )}\n
\n
\n
\n )}\n \n );\n}\n\nconst openRegisterModal = () =>\n modalService.open({\n id: \"register\",\n children: (\n modalService.close(\"register\")} />\n ),\n });\n\nexport { Register, openRegisterModal };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Home_container__3-qjB\",\"wrapper\":\"Home_wrapper__2ah44\",\"title\":\"Home_title__1ks5w\",\"chart\":\"Home_chart__bV9Xi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"results\":\"Results_results__1-GjU\",\"tabs\":\"Results_tabs__3_bxs\",\"item\":\"Results_item__3L18Y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"card\":\"SitebarCollapsable_card__1vjWy\",\"cardHeader\":\"SitebarCollapsable_cardHeader__23lwX\",\"toggled\":\"SitebarCollapsable_toggled__28O_x\",\"cardBody\":\"SitebarCollapsable_cardBody__1zPMj\"};","import { accountService } from \"services\";\n\nexport const fetchWrapper = {\n get,\n post,\n put,\n delete: _delete,\n upload, //Non JSON post request\n download, //Blob response\n};\n\nfunction get(url, signal) {\n const requestOptions = {\n method: \"GET\",\n headers: authHeader(url),\n signal,\n };\n return fetch(url, requestOptions).then(handleResponse);\n}\n\nfunction post(url, body, signal) {\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...authHeader(url) },\n body: JSON.stringify(body),\n signal,\n };\n return fetch(url, requestOptions).then(handleResponse);\n}\n\nfunction upload(url, body, signal) {\n const requestOptions = {\n method: \"POST\",\n headers: authHeader(url),\n body,\n signal,\n };\n return fetch(url, requestOptions).then(handleResponse);\n}\n\nfunction download(url, signal) {\n const requestOptions = {\n method: \"GET\",\n headers: authHeader(url),\n signal,\n };\n return fetch(url, requestOptions)\n .then((r) => r.blob())\n .catch((e) => Promise.reject(\"File not found\"));\n}\n\nfunction put(url, body, signal) {\n const requestOptions = {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\", ...authHeader(url) },\n body: JSON.stringify(body),\n signal,\n };\n return fetch(url, requestOptions).then(handleResponse);\n}\n\n// prefixed with underscored because delete is a reserved word in javascript\nfunction _delete(url, body, signal) {\n const requestOptions = {\n method: \"DELETE\",\n headers: { \"Content-Type\": \"application/json\", ...authHeader(url) },\n signal,\n };\n if (body != null) {\n requestOptions.body = JSON.stringify(body);\n }\n return fetch(url, requestOptions).then(handleResponse);\n}\n\n// helper functions\n\nfunction authHeader(url) {\n // return auth header with jwt if user is logged in and request is to the api url\n const user = accountService.userValue;\n const isLoggedIn = user && user.token;\n const isApiUrl = url.startsWith(\"/api/\");\n if (isLoggedIn && isApiUrl) {\n return { Authorization: `Bearer ${user.token}` };\n } else {\n return {};\n }\n}\n\nfunction handleResponse(response) {\n return response.text().then((text) => {\n try {\n const data = text && JSON.parse(text);\n\n if (!response.ok) {\n if ([401, 403].includes(response.status)) {\n // auto logout if 401 Unauthorized or 403 Forbidden response returned from api\n accountService.logout();\n }\n\n const error = (data && data.message) || response.statusText;\n return Promise.reject(error);\n }\n\n return data;\n } catch (e) {\n return Promise.reject(text);\n }\n });\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { CardHeader, CardBody } from \"reactstrap\";\nimport { Formik, Field, Form, ErrorMessage } from \"formik\";\nimport { FA } from \"components/FA\";\nimport * as Yup from \"yup\";\n\nimport { accountService, alertService, modalService } from \"services\";\n\nfunction ForgotPassword({ isModal = false, close = null }) {\n const initialValues = {\n email: \"\",\n };\n\n const validationSchema = Yup.object().shape({\n email: Yup.string().email(\"Email is invalid\").required(\"Email is required\"),\n });\n\n function onSubmit({ email }, { setSubmitting }) {\n alertService.clear();\n accountService\n .forgotPassword(email)\n .then(() => {\n alertService.success(\n \"Please check your email for password reset instructions\"\n );\n if (typeof close === \"function\") {\n close();\n }\n })\n .catch((error) => alertService.error(error))\n .finally(() => setSubmitting(false));\n }\n\n return (\n \n {({ errors, touched, isSubmitting }) => (\n
\n \n Forgot Password{\" \"}\n {isModal && (\n close()}\n icon=\"times\"\n size=\"xs\"\n />\n )}\n \n \n
\n \n \n \n
\n
\n
\n \n {isSubmitting && (\n \n )}\n Submit\n \n {isModal ? (\n \n ) : (\n \n Cancel\n \n )}\n
\n
\n
\n
\n )}\n \n );\n}\nconst openForgotPasswordModal = () =>\n modalService.open({\n id: \"forgot-password\",\n children: (\n modalService.close(\"forgot-password\")}\n />\n ),\n });\n\nexport { ForgotPassword, openForgotPasswordModal };\n","import React, { useState } from \"react\";\nimport { useAuth, useEffectOnce } from \"hooks\";\nimport { useHistory } from \"react-router-dom\";\nimport { Formik, Field, Form, ErrorMessage } from \"formik\";\nimport { Loading } from \"components/Utils\";\nimport { FA } from \"components/FA\";\nimport * as Yup from \"yup\";\n\nimport { accountService, alertService, modalService } from \"services\";\n\nconst Profile = ({ isModal = false, close = null }) => {\n const { user } = useAuth();\n const history = useHistory();\n const [isDeleting, setDeleting] = useState(false);\n\n const initialValues = {\n oldPassword: \"\",\n password: \"\",\n confirmPassword: \"\",\n };\n\n const validationSchema = Yup.object().shape({\n oldPassword: Yup.string()\n .min(6, \"Password must be at least 6 characters\")\n .required(\"Old Password is required\"),\n password: Yup.string()\n .min(6, \"Password must be at least 6 characters\")\n .required(\"New Password is required\"),\n confirmPassword: Yup.string()\n .oneOf([Yup.ref(\"password\"), null], \"Passwords must match\")\n .required(\"You must confirm your password\"),\n });\n\n function onPasswordChange(fields, { setStatus, setSubmitting }) {\n setStatus();\n accountService\n .updatePassword(fields)\n .then(() => {\n alertService.success(\n \"Password changed successfully, please login again\",\n { keepAfterRouteChange: true }\n );\n if (typeof close === \"function\") {\n close();\n }\n accountService.logout();\n })\n .catch((error) => {\n setSubmitting(false);\n alertService.error(error);\n });\n }\n\n function onDelete() {\n setDeleting(true);\n accountService\n .delete()\n .then((data) => {\n alertService.success(\n \"User account and all associated data has been deleted!\",\n { keepAfterRouteChange: true }\n );\n accountService.logout();\n localStorage.clear();\n if (typeof close === \"function\") {\n close();\n } else {\n history.push(\"login\");\n }\n })\n .catch((error) => {\n setDeleting(false);\n alertService.error(error);\n });\n }\n\n const [profile, setProfile] = useState(null);\n\n useEffectOnce(() => {\n accountService\n .profile()\n .then((data) => {\n setProfile(data);\n })\n .catch((error) => {\n setProfile({});\n alertService.error(error);\n });\n }, []);\n return user ? (\n <>\n

\n Profile{\" \"}\n {isModal && (\n close()} icon=\"times\" size=\"xs\" />\n )}\n

\n
\n
\n \n \n
\n {profile == null ? (\n \n ) : (\n
\n
\n \n \n
\n
\n \n \n
\n {false && (\n
\n \n \n
\n )}\n
\n )}\n
\n \n {isDeleting && (\n \n )}\n Delete Account and Data\n \n
\n
\n
\n \n {({ errors, touched, isSubmitting }) => (\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n {isSubmitting && (\n \n )}\n Change Password\n \n
\n
\n )}\n \n
\n \n ) : null;\n};\n\nconst openProfileModal = () =>\n modalService.open({\n id: \"profile\",\n children: (\n modalService.close(\"profile\")} />\n ),\n });\n\nexport { Profile, openProfileModal };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dragover\":\"DragOver_dragover__3cq0b\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav\":\"Download_nav__fYPW_\",\"content\":\"Download_content__35tTK\",\"card\":\"Download_card__3G5fV\"};","import React, { useState } from \"react\";\nimport { QueryFields } from \"data/Types\";\nimport {\n ButtonDropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n} from \"reactstrap\";\nimport styles from \"./Utils.module.css\";\n\nconst NotAvailabe = () => N/A;\nconst NotFound = ({ items = \"Items\" }) => No {items} found.;\nconst Loading = () => (\n \n);\n\nconst GetFieldsList = (field, labelOnly = true) => {\n const fields = [];\n if (field & QueryFields.PatentNumber) {\n fields.push({\n key: \"PatentNumber\",\n name: \"number\",\n label: \"Patent Number\",\n });\n }\n if (field & QueryFields.Title) {\n fields.push({\n key: \"Title\",\n name: \"title\",\n label: \"Title\",\n });\n }\n if (field & QueryFields.Abstract) {\n fields.push({\n key: \"Abstract\",\n name: \"abstract\",\n label: \"Abstract\",\n });\n }\n if (field & QueryFields.Year) {\n fields.push({\n key: \"Year\",\n name: \"year\",\n label: \"Year\",\n });\n }\n if (field & QueryFields.Date) {\n fields.push({\n key: \"Date\",\n name: \"date\",\n label: \"Date\",\n });\n }\n if (field & QueryFields.Authors) {\n fields.push({\n key: \"Authors\",\n name: \"authors\",\n label: \"Authors\",\n });\n }\n if (field & QueryFields.Author) {\n fields.push({\n key: \"Author\",\n name: \"authors.name\",\n label: \"Author\",\n });\n }\n if (field & QueryFields.Owners) {\n fields.push({\n key: \"Owners\",\n name: \"owners\",\n label: \"Owners\",\n });\n }\n if (field & QueryFields.Owner) {\n fields.push({\n key: \"Owner\",\n name: \"owners.name\",\n label: \"Owner\",\n });\n }\n if (field & QueryFields.DataSource) {\n fields.push({\n key: \"DataSource\",\n name: \"dataSource\",\n label: \"Data Source\",\n });\n }\n if (field & QueryFields.Publisher) {\n fields.push({\n key: \"Publisher\",\n name: \"publisher\",\n label: \"Publisher\",\n });\n }\n if (field & QueryFields.FOS) {\n fields.push({\n key: \"FOS\",\n name: \"fos\",\n label: FoS,\n });\n }\n if (field & QueryFields.Issue) {\n fields.push({\n key: \"Issue\",\n name: \"issue\",\n label: \"Issue\",\n });\n }\n if (field & QueryFields.Url) {\n fields.push({\n key: \"Url\",\n name: \"url\",\n label: \"Url\",\n });\n }\n if (field & QueryFields.Keywords) {\n fields.push({\n key: \"Keywords\",\n name: \"keywords\",\n label: \"Keywords\",\n });\n }\n if (field & QueryFields.Venue) {\n fields.push({\n key: \"Venue\",\n name: \"venue\",\n label: \"Venue\",\n });\n }\n if (field & QueryFields.Language) {\n fields.push({\n key: \"Language\",\n name: \"lang\",\n label: \"Language\",\n });\n }\n if (field & QueryFields.DOI) {\n fields.push({\n key: \"DOI\",\n name: \"doi\",\n label: DOI,\n });\n }\n if (field & QueryFields.Status) {\n fields.push({\n key: \"Status\",\n name: \"status\",\n label: \"Status\",\n });\n }\n if (field & QueryFields.Country) {\n fields.push({\n key: \"Country\",\n name: \"country\",\n label: \"Country\",\n });\n }\n if (field & QueryFields.Claims) {\n fields.push({\n key: \"Claims\",\n name: \"claims\",\n label: \"Number of Claims\",\n });\n }\n if (field & QueryFields.IPC) {\n fields.push({\n key: \"IPC\",\n name: \"ipc\",\n label: IPC,\n });\n }\n if (field & QueryFields.CPC) {\n fields.push({\n key: \"CPC\",\n name: \"cpc\",\n label: (\n \n CPC\n \n ),\n });\n }\n return labelOnly ? fields.map((f) => f.label) : fields;\n};\n\nexport { NotAvailabe, NotFound, Loading, GetFieldsList };\n\nexport const Select = ({\n uid = \"select\",\n value,\n items,\n empty = \"Please choose...\",\n setValue,\n allowSetEmpty = false,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const handleToggle = () => setIsOpen(!isOpen);\n return (\n \n \n {value || empty}\n \n \n {allowSetEmpty && (\n setValue(null)}>{empty}\n )}\n {items.map((item, i) => (\n setValue(item.name || item)}\n >\n {item.level > 1 ? \"—\".repeat(item.level - 1) + \" \" : \"\"}\n {item.name || item}\n \n ))}\n \n \n );\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav\":\"Help_nav__3xreb\",\"content\":\"Help_content__2bMGH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loading\":\"Resultset_loading__Wyi4M\",\"notFound\":\"Resultset_notFound__1nI-o\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"DetailTab_image__BXWbw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"SearchBar_input__bMZBI\"};","import { BehaviorSubject } from \"rxjs\";\nimport { QueryType, QueryFields } from \"data/Types\";\nimport produce from \"immer\";\n\nimport { fetchWrapper } from \"data/FetchWrapper\";\nimport { ResponseType, StatusType, DataSource } from \"data/Types\";\nimport { detailService, alertService } from \"services\";\nimport queryString from \"query-string\";\nimport { history } from \"data/History\";\n\nconst initialState = {\n type: QueryType.ALL,\n fields: QueryFields.Default,\n query: \"\",\n isAdvanced: false,\n};\n\nconst search$ = new BehaviorSubject({ ...initialState });\nconst result$ = new BehaviorSubject({});\nconst status$ = new BehaviorSubject(StatusType.None);\nconst abort$ = new BehaviorSubject(new AbortController());\nconst baseUrl = `/api/search`;\n\nconst PAGE_SIZE = 20;\nconst MAX_PAGE = 100;\n\nconst reset = () => {\n abort();\n history.push(\"/\");\n status$.next(StatusType.None);\n search$.next({ ...initialState });\n // To reset advanced queries we need to reset twice!\n setImmediate(() => search$.next({ ...initialState }));\n result$.next({});\n};\n\nconst mapResult = (response) => {\n return {\n summary: response.report.summary,\n docsCount: response.report.docsCount,\n resultset: response.report.data.map(mapDocument),\n };\n};\n\nconst mapDocument = (document) => {\n const d = document.document;\n const authors = d.dataSource !== DataSource.patstat && d.authors;\n const owners = (d.dataSource === DataSource.patstat && d.authors) || d.owners;\n const classification =\n d.dataSource === DataSource.patstat || d.dataSource === DataSource.uspto\n ? d[\"classification-ipcr\"] || d.applnIpc || undefined\n : undefined;\n return {\n id: d._id,\n patentNumber: d.number,\n title: d.title || (d.applnTitle && d.applnTitle[0].title),\n abstract: d.abstract || (d.applnAbstr && d.applnAbstr[0].abstract),\n date: d.date,\n year: d.year,\n responseType: ResponseType[d.dataCategory],\n dataSource: d.dataSource,\n authors: authors ? mapPersons(authors) : undefined,\n owners: owners ? mapPersons(owners) : undefined,\n ipc: classification ? mapIPC(classification) : undefined,\n cpc: classification ? mapCPC(classification) : undefined,\n country: d.country,\n language: d.lang,\n status: d.status || d.granted,\n publisher: d.publisher,\n fos: d.fos,\n keywords: d.keywords,\n issue: d.issue,\n url: d.url && [...new Set(d.url)],\n doi: d.doi,\n venue: d.venue,\n potentiallyLicensed: d.potentiallyLicensed,\n potentiallyLicensable: d.potentiallyLicensable,\n };\n};\n\nconst mapCPC = (classification) => {\n return classification.hasOwnProperty(\"classification-cpc-text\")\n ? Array.isArray(classification[\"classification-cpc-text\"])\n ? classification[\"classification-cpc-text\"]\n : [classification[\"classification-cpc-text\"]]\n : undefined;\n};\n\nconst mapIPC = (classification) => {\n return Array.isArray(classification)\n ? classification.map((c) => c.ipc_class_symbol)\n : undefined;\n};\n\nconst mapPersons = (persons) => {\n return persons.map((p) => ({\n name: p.name || p.person_name,\n }));\n};\n\nconst abortSearch = () => {\n let status = status$.value | StatusType.Result | StatusType.Queried;\n status &= ~StatusType.Querying & ~StatusType.Modified & ~StatusType.Append;\n const result = produce(result$.value, (result) => {\n if (!result.resultset) {\n result.resultset = [];\n }\n });\n status$.next(status);\n result$.next(result);\n};\n\nconst abort = (search = false) => {\n detailService.abort();\n abort$.value.abort();\n abort$.next(new AbortController());\n search && abortSearch();\n};\n\nconst handleReportGenerationError = (message) => {\n if (\n message.startsWith(\"QueryFields\") ||\n message.startsWith(\"SearchRequest is not valid\") ||\n message.startsWith(\"Cannot query Report Generation Module\")\n ) {\n return message;\n }\n return \"Report Generation Module has connectivity problems. Please try again later.\";\n};\n\nconst execute = (page = 1, append = false) => {\n if (page > 100) {\n alertService.error(\"Report Generation Module pagination out of range.\");\n return;\n }\n const search = search$.value;\n const params = {\n type: search.type,\n q: search.query,\n };\n if (search.isAdvanced) {\n params.advanced = null;\n } else {\n params.fields = search.fields;\n }\n history.push(`/?${queryString.stringify(params)}`);\n const result = result$.value;\n let status = status$.value;\n status |= StatusType.Queried | StatusType.Querying;\n if (append) {\n if (status & StatusType.Modified) {\n alertService.warn(\n \"Your search parameters have changed. Please search again to load more results.\"\n );\n return;\n }\n status |= StatusType.Append;\n } else {\n abort();\n status &= ~StatusType.Modified;\n status &= ~StatusType.Append;\n }\n status$.next(status);\n return fetchWrapper\n .post(`${baseUrl}?page=${page}`, search, abort$.value.signal)\n .then((response) => {\n let _result = produce(mapResult(response), (_result) => {\n if (_result.docsCount > MAX_PAGE * PAGE_SIZE) {\n if (!append) {\n console.warn(\n `Report Generation Module does not allow more than ${PAGE_SIZE} pages, reducing results to ${\n MAX_PAGE * PAGE_SIZE\n }`\n );\n alertService.warn(\n `Found ${_result.docsCount.toLocaleString()} results. The ${(\n MAX_PAGE * PAGE_SIZE\n ).toLocaleString()} most relevant results have been identified. Please refine your search to achieve more accuracy`\n );\n }\n _result.docsCount = MAX_PAGE * PAGE_SIZE;\n }\n const index = page * PAGE_SIZE - PAGE_SIZE;\n const resultset = _result.resultset;\n if (append && result && result.resultset) {\n _result.resultset = [...result.resultset];\n } else {\n _result.resultset = new Array(_result.docsCount);\n }\n _result.resultset.splice(index, resultset.length, ...resultset);\n });\n result$.next(_result);\n status |= StatusType.Result;\n status &= ~StatusType.Querying;\n status$.next(status);\n search$.next(search);\n return _result;\n })\n .catch((e) => {\n if (e.name === \"AbortError\" || e instanceof DOMException) {\n console.warn(e);\n return;\n }\n alertService.error(handleReportGenerationError(e.message));\n status |= StatusType.Result;\n status &= ~StatusType.Querying;\n const r = produce(result, (result) => {\n if (!result.resultset) {\n result.resultset = [];\n }\n });\n result$.next(r);\n status$.next(status);\n });\n};\n\nexport const searchService = {\n reset,\n execute,\n search$: search$,\n result$: result$,\n status$: status$,\n get searchValue() {\n return search$.value;\n },\n get resultValue() {\n return result$.value;\n },\n abort,\n mapper: {\n result: mapResult,\n document: mapDocument,\n persons: mapPersons,\n },\n};\n","import React from \"react\";\nimport { modalService } from \"services\";\nimport { Button, Card } from \"reactstrap\";\nimport { FA } from \"components/FA\";\nimport styles from \"./Terms.module.css\";\n\nconst TermsContent = ({ isModal, close }) => (\n <>\n

\n General Terms of Service{\" \"}\n {isModal && (\n close()} icon=\"times\" size=\"xs\" />\n )}\n

\n
TERMS {isModal ? \" (Modal)\" : \"\"}
\n \n);\n\nconst Terms = ({ history }) => (\n <>\n {history.length > 2 && (\n \n )}\n \n \n \n \n);\n\nconst openTermsModal = () =>\n modalService.open({\n id: \"terms\",\n children: (\n modalService.close(\"terms\")} />\n ),\n });\n\nexport { Terms, openTermsModal };\n","import { BehaviorSubject } from \"rxjs\";\n\nimport { fetchWrapper } from \"data/FetchWrapper\";\nimport { queryService, topicService } from \"services\";\nimport { history } from \"data/History\";\n\nconst user$ = new BehaviorSubject(JSON.parse(localStorage.getItem(\"user\")));\nconst abort$ = new BehaviorSubject(new AbortController());\nconst baseUrl = `/api/user`;\n\nexport const accountService = {\n login,\n logout,\n register,\n verifyEmail,\n deleteEmail,\n forgotPassword,\n resetPassword,\n updatePassword,\n delete: _delete,\n profile,\n abort,\n user: user$,\n get userValue() {\n return user$.value;\n },\n};\n\nfunction login(email, password) {\n return fetchWrapper\n .post(`${baseUrl}/login`, { email, password }, abort$.value.signal)\n .then((user) => {\n // store user details and jwt token in local storage to keep user logged in between page refreshes\n localStorage.setItem(\"user\", JSON.stringify(user));\n\n // publish user to subscribers\n user$.next(user);\n\n return user;\n });\n}\n\nfunction logout() {\n // remove user from local storage and publish null to user subject\n localStorage.removeItem(\"user\");\n if (user$.value != null) {\n fetchWrapper.post(`${baseUrl}/logout`, abort$.value.signal);\n queryService.query$.next(null);\n topicService.topics$.next([]);\n topicService.current$.next(null);\n topicService.queries$.next(null);\n }\n user$.next(null);\n history.push(\"/account/login\");\n}\n\nfunction register(params) {\n return fetchWrapper.post(`${baseUrl}/register`, params, abort$.value.signal);\n}\n\nfunction verifyEmail(email, token) {\n return fetchWrapper.put(\n `${baseUrl}/confirm`,\n { email, token },\n abort$.value.signal\n );\n}\n\nfunction deleteEmail(email, token) {\n return fetchWrapper.delete(\n `${baseUrl}/confirm`,\n { email, token },\n abort$.value.signal\n );\n}\n\nfunction forgotPassword(email, redirectUrl) {\n return fetchWrapper.post(`${baseUrl}/forgot-password`, { email });\n}\n\nfunction resetPassword({ email, token, password, confirmPassword }) {\n return fetchWrapper.put(\n `${baseUrl}/reset-password`,\n {\n email,\n token,\n password,\n confirmPassword,\n },\n abort$.value.signal\n );\n}\n\nfunction updatePassword({ oldPassword, password, confirmPassword }) {\n return fetchWrapper.put(\n `${baseUrl}/update-password`,\n {\n oldPassword,\n password,\n confirmPassword,\n },\n abort$.value.signal\n );\n}\n\nfunction _delete() {\n return fetchWrapper\n .delete(`${baseUrl}/delete`, null, abort$.value.signal)\n .then(() => {\n queryService.query$.next(null);\n topicService.topics$.next([]);\n topicService.current$.next(null);\n topicService.queries$.next(null);\n });\n}\n\nfunction profile() {\n return fetchWrapper.get(`${baseUrl}/user-data`, abort$.value.signal);\n}\n\nfunction abort() {\n abort$.value.abort();\n abort$.next(new AbortController());\n}\n","import { Subject } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\nimport { AlertType } from \"data/Types\";\n\nconst alertSubject = new Subject();\nconst defaultId = \"default-alert\";\n\nexport const alertService = {\n onAlert,\n success,\n error,\n info,\n warn,\n alert,\n clear,\n};\n\n// enable subscribing to alerts observable\nfunction onAlert(id = defaultId) {\n return alertSubject.asObservable().pipe(filter((x) => x && x.id === id));\n}\n\n// convenience methods\nfunction success(message, options) {\n alert({ ...options, type: AlertType.Success, message });\n}\n\nfunction error(message, options) {\n alert({ ...options, type: AlertType.Error, message });\n}\n\nfunction info(message, options) {\n alert({ ...options, type: AlertType.Info, message });\n}\n\nfunction warn(message, options) {\n alert({ ...options, type: AlertType.Warning, message });\n}\n\n// core alert method\nfunction alert(alert) {\n alert.id = alert.id || defaultId;\n alert.autoClose = alert.autoClose === undefined ? true : alert.autoClose;\n alertSubject.next(alert);\n}\n\n// clear alerts\nfunction clear(id = defaultId) {\n alertSubject.next({ id });\n}\n","import { Subject } from \"rxjs\";\n\nconst modalSubject = new Subject();\nconst defaultId = \"default-modal\";\n\nexport const modalService = {\n onModal,\n open,\n close,\n};\n\n// enable subscribing to modal observable\nfunction onModal() {\n return modalSubject.asObservable();\n}\n// core alert method\nfunction open(modal) {\n modal.id = modal.id || defaultId;\n modalSubject.next(modal);\n}\n\n// clear alerts\nfunction close(id = defaultId) {\n modalSubject.next({ id });\n}\n","import { BehaviorSubject } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\n\nimport { fetchWrapper } from \"data/FetchWrapper\";\n\nconst stats$ = new BehaviorSubject([]);\nconst abort$ = new BehaviorSubject(new AbortController());\nconst baseUrl = `/api/stats`;\n\nexport const statsService = {\n stats: stats$,\n byId,\n abort,\n patents: {\n authors: () => _fetch(\"patents/authors\"),\n owners: () => _fetch(\"patents/owners\"),\n evolution: (params) => _fetch(\"patents/evolution\", params),\n },\n publications: {\n publishers: () => _fetch(\"publications/publishers\"),\n venues: () => _fetch(\"publications/venues\"),\n fos: () => _fetch(\"publications/fos\"),\n keywords: () => _fetch(\"publications/keywords\"),\n language: () => _fetch(\"publications/language\"),\n },\n histogram: () => _fetch(\"histogram\"),\n};\n\nfunction mapOptions(chart, id) {\n const switchLabels = [\"histogram\"].includes(id);\n return {\n hAxis: {\n textPosition: switchLabels ? \"none\" : \"\",\n },\n vAxis: {\n textPosition: switchLabels ? \"\" : \"none\",\n },\n bar: { groupWidth: \"80%\" },\n chartArea: {\n left: 0,\n bottom: switchLabels ? 10 : 30,\n width: \"100%\",\n height: switchLabels ? 210 : 190,\n },\n legend: \"none\",\n animation: {\n startup: true,\n easing: \"linear\",\n duration: 1500,\n },\n };\n}\n\nfunction mapData(chart, id) {\n const trimChart = ![\"histogram\"].includes(id);\n const data = chart.data\n .filter((item) => item.value > 0 && item.key !== 9999)\n .map((item) => [`${item.key}`, item.value]);\n data.unshift([chart.xLabel, chart.yLabel]);\n if (trimChart) {\n data.length = 6;\n }\n return data;\n}\n\nfunction mapChartType(id) {\n switch (id) {\n case \"histogram\":\n return \"AreaChart\";\n default:\n return \"BarChart\";\n }\n}\n\nfunction abort() {\n abort$.value.abort();\n abort$.next(new AbortController());\n}\n\nfunction byId(id) {\n return stats$.asObservable().pipe(filter((x) => x && x.id === id));\n}\n\nfunction _fetch(id, params = null) {\n const stat = {\n id,\n params,\n };\n return fetchWrapper\n .get(\n `${baseUrl}/${id}${\n params !== null\n ? `?${Object.keys(params)\n .map((key) => `${key}=${params[key]}`)\n .join(\"&\")}`\n : \"\"\n }`,\n abort$.value.signal\n )\n .then((result) => {\n if (result.report && result.report && result.report.chart) {\n stat.title = result.report.chart.title;\n stat.data = mapData(result.report.chart, id);\n stat.options = mapOptions(result.report.chart);\n stat.chart = result.report.chart;\n stat.chartType = mapChartType(id);\n const stats = stats$.value.filter((_) => _.id !== id);\n stats.push(stat);\n stats$.next(stats);\n }\n return stat;\n });\n}\n","import { BehaviorSubject } from \"rxjs\";\nimport queryString from \"query-string\";\nimport produce from \"immer\";\n\nimport { fetchWrapper } from \"data/FetchWrapper\";\n// import { history } from 'data/History';\nimport { searchService } from \"services\";\nimport { ResponseType, StatusType } from \"data/Types\";\n\nconst { mapper } = searchService;\nconst web$ = new BehaviorSubject({});\nconst similar$ = new BehaviorSubject({});\nconst abort$ = new BehaviorSubject(new AbortController());\nconst baseUrl = `/api/search`;\n\nconst PAGE_SIZE = 20;\nconst MAX_PAGE = 100;\n\nconst mapWeb = (response) => {\n const result = {\n status: StatusType.Queried | StatusType.Result,\n resultset: [],\n };\n if (\n response.wikipedia &&\n response.wikipedia.query &&\n response.wikipedia.query.pages\n ) {\n Object.keys(response.wikipedia.query.pages).map((pageId) => {\n const page = response.wikipedia.query.pages[pageId];\n return result.resultset.push({\n id: pageId,\n responseType: ResponseType.WIKI,\n title: page.title,\n abstract: page.extract,\n url: [response.wikipedia.url],\n });\n });\n }\n if (response.google) {\n response.google.map((item) => {\n const qs = queryString.parse(\n item.image.thumbnailLink.substr(item.image.thumbnailLink.indexOf(\"?\"))\n );\n return result.resultset.push({\n id: qs[\"q\"].replace(\"tbn:\", \"\"),\n responseType: ResponseType.GOOGLE,\n title: item.title,\n abstract: item.displayLink,\n image: item.image.thumbnailLink,\n url: [item.image.contextLink],\n });\n });\n }\n result.docsCount = result.resultset.length;\n return result;\n};\n\nconst abort = () => {\n abort$.value.abort();\n abort$.next(new AbortController());\n};\n\nconst web = (query) => {\n const result = { docsCount: 0, status: StatusType.Queried, resultset: null };\n web$.next(result);\n return fetchWrapper\n .get(`${baseUrl}/web/?query=${query}`, abort$.value.signal)\n .then((response) => web$.next(mapWeb(response)));\n};\n\nconst similar = (responseId, page = 1, append = false) => {\n const result = produce(\n append\n ? similar$.value\n : { docsCount: 0, status: StatusType.Queried, resultset: null },\n (result) => {\n if (append) {\n result.status |= StatusType.Append;\n } else {\n result.status &= ~StatusType.Append;\n }\n }\n );\n similar$.next(result);\n return fetchWrapper\n .post(\n `${baseUrl}/similar/${responseId}?page=${page}`,\n undefined,\n abort$.value.signal\n )\n .then((response) => {\n const _result = produce(mapper.result(response), (_result) => {\n if (_result.docsCount > MAX_PAGE * PAGE_SIZE) {\n _result.docsCount = MAX_PAGE * PAGE_SIZE;\n }\n const index = page * PAGE_SIZE - PAGE_SIZE;\n const resultset = _result.resultset;\n if (append && result && result.resultset) {\n _result.resultset = [...result.resultset];\n } else {\n _result.resultset = new Array(_result.docsCount);\n }\n _result.resultset.splice(index, resultset.length, ...resultset);\n _result.status |= StatusType.Result;\n });\n similar$.next(_result);\n return _result;\n });\n};\n\nexport const detailService = {\n web,\n similar,\n web$,\n similar$,\n get similarValue() {\n return similar$.value;\n },\n get webValue() {\n return web$.value;\n },\n abort,\n mapper: {\n ...mapper,\n web: mapWeb,\n },\n};\n","import { BehaviorSubject } from \"rxjs\";\nimport produce from \"immer\";\n\nimport { fetchWrapper } from \"data/FetchWrapper\";\nimport { queryService } from \"services\";\n// import { history } from 'data/History';\n\nconst topics$ = new BehaviorSubject([]);\nconst current$ = new BehaviorSubject(null);\nconst queries$ = new BehaviorSubject(null);\nconst abort$ = new BehaviorSubject(new AbortController());\nconst baseUrl = `/api/topic`;\n\nconst _fetch = () => {\n current(null);\n return fetchWrapper\n .get(`${baseUrl}`, abort$.value.signal)\n .then((topics) => {\n topics$.next(topics);\n return topics;\n })\n .catch((e) => console.warn(e));\n};\n\nconst create = (topic) => {\n return fetchWrapper\n .post(`${baseUrl}`, topic, abort$.value.signal)\n .then((topic) => {\n const topics = produce(topics$.value, (topics) => {\n topics.push(topic);\n });\n topics$.next(topics);\n current$.next(topic);\n return topic;\n });\n};\n\nconst current = (topic) => {\n current$.next(topic);\n queries$.next(null);\n return fetchWrapper\n .get(\n `/api/query/by-topic/${(topic && topic.id) || \"none\"}`,\n abort$.value.signal\n )\n .then((queries) => {\n queries$.next(queries);\n return queries;\n })\n .catch((e) => {\n queries$.next([]);\n return [];\n });\n};\n\nconst edit = (topic) => {\n return fetchWrapper\n .put(`${baseUrl}/${topic.id}`, topic, abort$.value.signal)\n .then((topic) => {\n topics$.next(topics$.value.map((_) => (_.id === topic.id ? topic : _)));\n const current = current$.value;\n if (current && current.id === topic.id) {\n current$.next(topic);\n }\n return topic;\n });\n};\n\nconst _delete = (topicId) => {\n return fetchWrapper\n .delete(`${baseUrl}/${topicId}`, null, abort$.value.signal)\n .then((topic) => {\n topics$.next(topics$.value.filter((_) => _.id !== topicId));\n const c = current$.value;\n if (c && c.id === topicId) {\n current(null);\n }\n const query = queryService.query$.value;\n if (query && query.topicId === topicId) {\n queryService.query$.next(null);\n }\n return true;\n })\n .catch((e) => {\n return false;\n });\n};\n\nconst abort = () => {\n abort$.value.abort();\n abort$.next(new AbortController());\n};\n\nexport const topicService = {\n create,\n current,\n edit,\n delete: _delete,\n fetch: _fetch,\n topics$,\n current$,\n queries$,\n abort,\n};\n","import { BehaviorSubject } from \"rxjs\";\nimport produce from \"immer\";\n\nimport { fetchWrapper } from \"data/FetchWrapper\";\nimport { topicService, searchService, alertService } from \"services\";\n\n// import { history } from 'data/History';\n\nconst query$ = new BehaviorSubject(null);\nconst abort$ = new BehaviorSubject(new AbortController());\nconst baseUrl = `/api/query`;\n\nconst create = () => {\n const query = produce({}, (query) => {\n query.parameters = {\n ...searchService.search$.value,\n };\n query.report = { ...searchService.result$.value, resultset: [] };\n const current = topicService.current$.value;\n query.topicId = (current && current.id) || null;\n });\n return fetchWrapper\n .post(`${baseUrl}`, query, abort$.value.signal)\n .then((query) => {\n updateTopicQuery();\n query$.next(query);\n return query;\n });\n};\n\nconst current = (q) => query$.next(q);\n\nconst edit = (q) => {\n const query = produce(q, (query) => {\n query.parameters = {\n ...searchService.search$.value,\n };\n query.report = { ...searchService.result$.value, resultset: [] };\n });\n return fetchWrapper\n .put(`${baseUrl}/${query.id}`, query, abort$.value.signal)\n .then((query) => {\n updateTopicQuery();\n query$.next(query);\n return query;\n });\n};\n\nconst _response = (response) => {\n const query = query$.value;\n // If no query => save current search and add query\n if (!query) {\n return create().then(() => {\n return _response(response);\n });\n }\n const _response_ = query.report.resultset.find((r) => r.id === response.id);\n let request;\n if (_response_ == null) {\n request = fetchWrapper.post(\n `${baseUrl}/${query.id}/${response.responseType.toLowerCase()}`,\n response,\n abort$.value.signal\n );\n } else {\n request = fetchWrapper.delete(\n `${baseUrl}/${query.id}/${response.responseType.toLowerCase()}/${\n response.id\n }`,\n null,\n abort$.value.signal\n );\n }\n return request\n .then((r) => {\n const query = produce(query$.value, (query) => {\n let resultset = query.report.resultset;\n if (r.id) {\n resultset.push(r);\n } else {\n resultset = resultset.filter((r) => r.id !== response.id);\n }\n query.report.resultset = resultset;\n });\n updateTopicQuery();\n query$.next(query);\n return r;\n })\n .catch((e) => alertService.error(e));\n};\n\nconst file = (formData) => {\n const query = query$.value;\n return fetchWrapper\n .upload(`${baseUrl}/${query.id}/file`, formData, abort$.value.signal)\n .then((r) => {\n const query = produce(query$.value, (query) => {\n let resultset = query.report.resultset;\n resultset.push(r);\n query.report.resultset = resultset;\n });\n updateTopicQuery();\n query$.next(query);\n return r;\n });\n};\n\nconst download = (fileId, fileName) => {\n fetchWrapper\n .download(`/api/file/${fileId}`, abort$.value.signal)\n .then((blob) => {\n const url = window.URL.createObjectURL(new Blob([blob]));\n const link = document.createElement(\"a\");\n link.href = url;\n link.setAttribute(\"download\", fileName);\n document.body.appendChild(link);\n link.click();\n link.parentNode.removeChild(link);\n })\n .catch((e) => alertService.error(e));\n};\n\nconst note = (responseId, note) => {\n const query = query$.value;\n const response = produce(\n query.report.resultset.find((r) => r.id === responseId),\n (response) => {\n response.note = note;\n }\n );\n return fetchWrapper\n .put(\n `${baseUrl}/${\n query.id\n }/${response.responseType.toLowerCase()}/${responseId}`,\n response,\n abort$.value.signal\n )\n .then((response) => {\n const query = produce(query$.value, (query) => {\n const index = query.report.resultset.findIndex(\n (r) => r.id === responseId\n );\n query.report.resultset[index] = response;\n });\n updateTopicQuery();\n query$.next(query);\n return response;\n })\n .catch((e) => alertService.error(e));\n};\n\nconst topic = (topicId) => {\n const query = query$.value;\n let request;\n if (query.topicId === topicId) {\n request = fetchWrapper.delete(\n `${baseUrl}/${query.id}/topic`,\n null,\n abort$.value.signal\n );\n } else {\n request = fetchWrapper.put(\n `${baseUrl}/${query.id}/topic`,\n { topicId },\n abort$.value.signal\n );\n }\n return request\n .then((query) => {\n updateTopicQuery();\n query$.next(query);\n return query;\n })\n .catch((e) => alertService.error(e));\n};\n\nconst _delete = (queryId) => {\n return fetchWrapper\n .delete(`${baseUrl}/${queryId}`, null, abort$.value.signal)\n .then((query) => {\n updateTopicQuery();\n query$.next(null);\n })\n .catch((e) => alertService.error(e));\n};\n\nconst updateTopicQuery = () =>\n topicService.current(topicService.current$.value);\n\nconst abort = () => {\n abort$.value.abort();\n abort$.next(new AbortController());\n};\n\nexport const queryService = {\n create,\n current,\n edit,\n response: _response,\n file,\n download,\n note,\n topic,\n delete: _delete,\n query$,\n abort,\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"card\":\"Terms_card__1DJpa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropdown\":\"Utils_dropdown__3ad61\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"clamp\":\"Truncate_clamp__3hp4c\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"QueryActions_actions__1xqAy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"action\":\"TopicSelector_action__39hMG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"alert\":\"Alert_alert__3U2GT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"Modal_modal__2n0zs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filter\":\"BasicFilters_filter__3Ke7b\"};","import React, { useState, useEffect } from \"react\";\nimport { useSearchQuery, useEffectOnce } from \"hooks\";\nimport { GetFieldsList, Loading } from \"components/Utils\";\nimport {\n DataSourceByQueryType,\n QueryFields,\n DataSourceLabel,\n} from \"data/Types\";\nimport {\n Button,\n ButtonGroup,\n Input,\n ButtonDropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n} from \"reactstrap\";\n\nimport styles from \"./AdvancedFilters.module.css\";\n\nconst DataSourceFilter = ({ queryType, field, value, onChange }) => {\n const [isOpen, setIsOpen] = useState(false);\n const handleToggle = () => setIsOpen(!isOpen);\n return (\n \n \n {(value && DataSourceLabel[value]) ||\n (value && setImmediate(() => onChange(field, \"\"))) ||\n \"All\"}\n \n \n onChange(field, \"\")}>All\n {DataSourceByQueryType[queryType].map((dataSource) => (\n onChange(field, dataSource)}\n >\n {DataSourceLabel[dataSource]}\n \n ))}\n \n \n );\n};\n\nconst AdvancedFilters = () => {\n const [query, setQuery] = useSearchQuery(false);\n const [advancedQuery, setAdvancedQuery] = useState(null);\n const [logicalOperator, setLogicalOperator] = useState(\"AND\");\n const availableFields = GetFieldsList(QueryFields[query.type], false);\n useEffectOnce(() => {\n const basicQuery = { ...query };\n const initialAdvancedQuery = {};\n basicQuery.isAdvanced = false;\n let q;\n const re = /(\\w+\\.?\\w*):\\(([^)]*)\\)/gi;\n const foundFields = [...query.query.matchAll(re)];\n // Is the query string already in Advanced syntax, e.g. saved queries?\n if (foundFields.length > 0) {\n q = query.query;\n basicQuery.query = \"\";\n const re = /(\\w+\\.?\\w*):\\(([^)]*)\\)/gi;\n const foundFields = [...query.query.matchAll(re)];\n basicQuery.query = [\n ...new Set(\n foundFields.map((match) => {\n initialAdvancedQuery[match[1]] = match[2];\n const field = availableFields.find((f) => f.name === match[1]);\n basicQuery.fields |= QueryFields[field.key];\n return match[2];\n })\n ),\n ].join(\" +\");\n } else {\n q = availableFields\n .filter((field) => !!(query.fields & QueryFields[field.key]))\n .map((field) => {\n initialAdvancedQuery[field.name] = query.query;\n return `${field.name}:(${query.query})`;\n })\n .join(` ${logicalOperator} `);\n }\n setQuery({ query: q, fields: QueryFields.None, isAdvanced: true });\n setAdvancedQuery(initialAdvancedQuery);\n return () => setQuery(basicQuery);\n });\n useEffect(() => {\n if (advancedQuery != null) {\n const q = Object.keys(advancedQuery)\n .filter(\n (name) => advancedQuery[name] != null && advancedQuery[name] !== \"\"\n )\n .map((name) => `${name}:(${advancedQuery[name]})`)\n .join(` ${logicalOperator} `);\n setQuery({ query: q });\n }\n }, [advancedQuery, logicalOperator, setQuery]);\n const toggleLogicalOperator = (e) =>\n e.target.blur() ||\n setLogicalOperator(logicalOperator === \"AND\" ? \"OR\" : \"AND\");\n const handleAdvancedQueryChange = (field, value) =>\n setAdvancedQuery({ ...advancedQuery, [field.name]: value });\n if (advancedQuery == null) {\n return ;\n }\n return (\n
\n
Logical Operator:
\n
\n \n \n AND\n \n \n OR\n \n \n
\n {availableFields.map((field) => {\n switch (field.key) {\n case \"DataSource\":\n return (\n \n
{field.label}:
\n
\n \n
\n
\n );\n /*case \"Date\":\n return (\n <>\n
{field.label}:
\n
\n \n handleAdvancedQueryChange(field, e.target.value)\n }\n value={advancedQuery[field.name]}\n />\n
\n \n );/**/\n default:\n return (\n \n
{field.label}:
\n
\n \n handleAdvancedQueryChange(field, e.target.value)\n }\n value={advancedQuery[field.name]}\n />\n
\n
\n );\n }\n })}\n
\n );\n};\n\nexport { AdvancedFilters };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropdown\":\"AdvancedFilters_dropdown__I5fFt\"};","module.exports = __webpack_public_path__ + \"static/media/logo.c36dcd2f.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"UserButton_button__GlVlM\"};","import { useCallback, useEffect } from \"react\";\nimport isEqual from \"lodash/isEqual\";\nimport { useLocation } from \"react-router-dom\";\nimport { QueryType, QueryFields } from \"data/Types\";\nimport qs from \"query-string\";\nimport { useSearch, useEffectOnce } from \"hooks\";\n\nconst HandleQueryString = () => {\n const location = useLocation();\n const search = useSearch(false);\n const handleHistoryChange = useCallback(\n (e) => {\n const params = qs.parse(location.search);\n const paramsQuery = {\n query: params.q,\n type: QueryType[params.type] || QueryType.ALL,\n fields: parseInt(params.fields, 10) || QueryFields.None,\n isAdvanced: typeof params.advanced !== \"undefined\",\n };\n if (!isEqual(paramsQuery, search.query) && params.q) {\n search.actions.abort(true);\n search.setQuery(paramsQuery);\n setImmediate(() => search.actions.execute());\n }\n },\n [search, location.search]\n );\n useEffectOnce(() => {\n handleHistoryChange();\n });\n useEffect(() => {\n window.addEventListener(\"popstate\", handleHistoryChange);\n return () => window.removeEventListener(\"popstate\", handleHistoryChange);\n }, [handleHistoryChange]);\n return null;\n};\n\nexport { HandleQueryString };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"card\":\"Account_card__3dHs8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"Response_row__2Yrl8\",\"detail\":\"Response_detail__1AL1p\",\"tabPane\":\"Response_tabPane__3FUnq\",\"tabDetail\":\"Response_tabDetail__2FrPl\",\"title\":\"Response_title__3ekm6\",\"abstract\":\"Response_abstract__2WmzL\",\"actions\":\"Response_actions__1d5-_\",\"web\":\"Response_web__GCkfB\",\"note\":\"Response_note__120gX\",\"meta\":\"Response_meta__-cGu7\",\"date\":\"Response_date__3doWD\",\"persons\":\"Response_persons__3fxpX\",\"person\":\"Response_person__Am7lI\",\"image\":\"Response_image__3zRYx\"};","import React from \"react\";\n\nconst QueryType = {\n ALL: \"ALL\",\n PATENT: \"PATENT\",\n PUBLICATION: \"PUBLICATION\",\n};\n\nconst QueryTypeLabel = {\n ALL: \"All\",\n PATENT: \"Patents\",\n PUBLICATION: \"Publications\",\n};\n\nconst DataSource = {\n uspto: \"uspto\",\n patstat: \"patstat\",\n mag: \"mag\",\n springer: \"springer\",\n};\n\nconst DataSourceLabel = {\n uspto: USPTO,\n patstat: (\n \n PATSTAT\n \n ),\n mag: MAG,\n springer: \"Springer\",\n};\n\nconst DataSourceIcons = {\n uspto: \"flag-usa\",\n patstat: \"fingerprint\",\n mag: \"microsoft\",\n springer: \"chess-knight\",\n};\n\nconst DataSourceByQueryType = {\n ALL: [\n DataSource.uspto,\n DataSource.patstat,\n DataSource.mag,\n DataSource.springer,\n ],\n PATENT: [DataSource.uspto, DataSource.patstat],\n PUBLICATION: [DataSource.mag, DataSource.springer],\n};\n\nconst QueryFields = {\n None: 0,\n PatentNumber: 1,\n Title: 1 << 1,\n Abstract: 1 << 2,\n Year: 1 << 3,\n Date: 1 << 4,\n Authors: 1 << 5,\n Author: 1 << 6,\n Owners: 1 << 7,\n Owner: 1 << 8,\n DataSource: 1 << 9,\n Publisher: 1 << 10,\n FOS: 1 << 11,\n Issue: 1 << 12,\n Url: 1 << 13,\n Keywords: 1 << 14,\n Venue: 1 << 15,\n Language: 1 << 16,\n DOI: 1 << 17,\n Status: 1 << 18,\n Country: 1 << 19,\n Claims: 1 << 20,\n IPC: 1 << 21,\n CPC: 1 << 22,\n};\nQueryFields.Default =\n QueryFields.Title | QueryFields.Abstract | QueryFields.Author;\nQueryFields.ALL =\n QueryFields.Default | QueryFields.Language | QueryFields.DataSource;\nQueryFields.PATENT =\n QueryFields.ALL |\n QueryFields.PatentNumber |\n QueryFields.Date |\n QueryFields.Owner |\n QueryFields.Country |\n QueryFields.Status /** | // Disabled Claims #248\n QueryFields.Claims /** | // Disabled CPC/IPC #242\n QueryFields.IPC /** | // Disabled CPC/IPC #242\n QueryFields.CPC /**/;\nQueryFields.PUBLICATION =\n QueryFields.ALL |\n QueryFields.Year |\n QueryFields.Publisher |\n QueryFields.FOS |\n QueryFields.Keywords |\n QueryFields.Issue |\n QueryFields.Url |\n QueryFields.DOI |\n QueryFields.Venue;\n\nconst StatusType = {\n None: 0,\n Queried: 1,\n Modified: 1 << 1,\n Result: 1 << 2,\n Append: 1 << 3,\n Querying: 1 << 4,\n};\n\nconst ResponseType = {\n FILE: \"FILE\",\n PATENT: \"PATENT\",\n PUBLICATION: \"PUBLICATION\",\n WIKI: \"WIKI\",\n GOOGLE: \"GOOGLE\",\n};\n\nconst ResponseTypeLabel = {\n FILE: \"Upload\",\n PATENT: \"Patent\",\n PUBLICATION: \"Publication\",\n WIKI: \"Wikipedia\",\n GOOGLE: \"Google\",\n};\n\nconst ResponseTypeIcons = {\n PATENT: \"registered\",\n FILE: \"file-upload\",\n PUBLICATION: \"newspaper\",\n GOOGLE: \"google\",\n WIKI: \"wikipedia-w\",\n};\n\nconst AlertType = {\n Success: \"Success\",\n Error: \"Error\",\n Info: \"Info\",\n Warning: \"Warning\",\n};\n\nconst RegExFileExtension = /(?:\\.([^.]+))?$/;\nconst ImageFileExtensions = [\".jpg\", \".jpeg\", \".png\", \".gif\"];\n\nexport {\n QueryType,\n QueryTypeLabel,\n DataSource,\n DataSourceLabel,\n DataSourceIcons,\n DataSourceByQueryType,\n QueryFields,\n StatusType,\n ResponseType,\n ResponseTypeLabel,\n ResponseTypeIcons,\n AlertType,\n RegExFileExtension,\n ImageFileExtensions,\n};\n","import React from \"react\";\nimport { Container } from \"reactstrap\";\n\nconst Layout = ({ className, fluid, children }) => (\n \n {children}\n \n);\nLayout.displayName = \"Layout\";\nexport { Layout };\n","import React, { useState } from \"react\";\nimport { TabContent, TabPane, Nav, NavItem, NavLink, Button } from \"reactstrap\";\nimport { FA } from \"components/FA\";\nimport { modalService } from \"services\";\nimport styles from \"./Help.module.css\";\n\nconst Tab = {\n BASIC: \"basic\",\n ADVANCED: \"advanced\",\n};\n\nconst Help = ({ isModal = false, close }) => {\n const [tab, setTab] = useState(Tab.BASIC);\n\n const handleToggle = (t) => {\n if (tab !== t) setTab(t);\n };\n return (\n <>\n

\n How to Query{\" \"}\n {isModal && (\n close()} icon=\"times\" size=\"xs\" />\n )}\n

\n
\n \n \n {tab === Tab.BASIC && (\n \n

\n The basic and default usage is to use one query on several\n fields. It is possible to specify filters on specific fields.\n

\n
Simple query string syntax
\n

\n The simple_query_string query supports the\n following operators:\n

\n
    \n
  • \n + signifies AND operation\n
  • \n
  • \n | signifies OR operation\n
  • \n
  • \n - negates a single token\n
  • \n
  • \n \" wraps a number of tokens to signify a phrase\n for searching\n
  • \n
  • \n * at the end of a term signifies a prefix query\n
  • \n
  • \n ( and ) signify precedence\n
  • \n
  • \n ~N after a word signifies edit distance\n (fuzziness)\n
  • \n
  • \n ~N after a phrase signifies slop amount\n (proximity search)\n
  • \n
\n

\n To use one of these characters literally, escape it with a\n preceding backslash \\.\n

\n
Example:
\n

\n \"fried eggs\" +(eggplant | potato) -frittata\n

\n
\n )}\n {tab === Tab.ADVANCED && (\n \n

\n Using the advanced text query enables combining fields in which\n to search specific text. It is possible to specify filters on\n specific fields.\n

\n
Query string syntax
\n

\n The query_string query supports the following\n operators:\n

\n
    \n
  • \n AND or && signifies AND\n operation\n
  • \n
  • \n AND or || signifies OR operation\n
  • \n
  • \n NOT or ! signifies NOT operation\n
  • \n
  • \n + signifies token must be present\n
  • \n
  • \n - negates a single token\n
  • \n
  • \n \" wraps a number of tokens to signify a phrase\n for searching\n
  • \n
  • \n ? wildcard to replace a single character\n
  • \n
  • \n * wildcard to replace zero or more characters\n
  • \n
  • \n ~N after a word signifies edit distance\n (fuzziness)\n
  • \n
  • \n ~N after a phrase signifies slop amount\n (proximity search)\n
  • \n
  • \n [min TO max] specifies inclusive ranges for\n dates, numeric or string fields\n
  • \n
  • \n \n {\"{\"}min TO max{\"}\"}\n {\" \"}\n specifies exclusive ranges for dates, numeric or string fields\n
  • \n
  • \n ranges with one side unbounded can use the following operators{\" \"}\n >, >=, < or{\" \"}\n <=\n
  • \n
  • \n ^N after a token signifies importance (boosting).\n Default is 1\n
  • \n
  • \n Multiple terms or clauses can be grouped together with\n parentheses ( and )\n
  • \n
\n
Wildcards
\n

\n Be aware that wildcard queries can use an enormous amount of\n memory and perform very badly.\n

\n

\n Allowing a wildcard at the beginning of a word is particularly\n heavy, because all terms in the index need to be examined, just\n in case they match.\n

\n
\n Avoid mixing fuzziness with wildcards\n
\n

\n Mixing fuzzy and wildcard operators is not supported. When\n mixed, one of the operators is not applied\n

\n
Reserved characters
\n

\n You should escape the reserved characters them with a leading\n backslash:{\" \"}\n {'+ - = && || > < ! ( ) { } [ ] ^ \" ~ * ? : \\\\ /'}\n

\n

\n < and > can’t be escaped at all.\n The only way to prevent them from attempting to create a range\n query is to remove them from the query string entirely.\n

\n
\n )}\n
\n
\n \n );\n};\nconst openHelpModal = () =>\n modalService.open({\n id: \"help\",\n children: modalService.close(\"help\")} />,\n });\n\nconst HelpButton = ({ size, color, className }) => (\n \n Help\n \n);\n\nexport { Help, openHelpModal, HelpButton };\n","import React from \"react\";\nimport { useEffectOnce, useSharedState } from \"hooks\";\nimport { Chart } from \"react-google-charts\";\nimport styles from \"./Home.module.css\";\nimport { Help } from \"components/search/Help\";\n\nimport { statsService, alertService } from \"services\";\n\nconst Home = () => {\n const [stats] = useSharedState(statsService.stats);\n useEffectOnce(() => {\n async function fetchAll() {\n try {\n await statsService.patents.authors();\n await statsService.patents.owners();\n await statsService.publications.publishers();\n await statsService.publications.venues();\n await statsService.publications.fos();\n await statsService.publications.keywords();\n await statsService.publications.language();\n await statsService.histogram();\n } catch (e) {\n if (e.name === \"AbortError\" || e instanceof DOMException) {\n console.warn(e);\n return;\n }\n alertService.error(\n \"Cannot load all Statistics. Please reload the page or try later.\"\n );\n }\n }\n if (stats.length === 0) {\n fetchAll();\n }\n return () => {\n statsService.abort();\n };\n });\n return (\n
\n
\n
\n
\n

\n \n KnowING IPR{\" \"}\n project\n {\" \"}\n is generally focused on the topic of technology transfer and\n specifically with the topic of management of intellectual property\n rights as a factor of innovation. To reach the aims of the project\n we are building an institutional platform (\n supported by online platform), where different\n stakeholders will be able to retrieve information on importance of\n technology transfer, IP{\" \"}\n protection, opportunities arising from{\" \"}\n IP protection and on\n tools to properly manage own{\" \"}\n IP. The goal of the\n project is to improve cooperation{\" \"}\n SMEs and research\n institutions through empowerment of stakeholders with knowledge on\n recognition and utilization of{\" \"}\n IP protection.\n

\n
\n
\n \n Project co-funded by European Union Funds (ERDF, IPA, ENI)\n
\n Projectwebsite:{\" \"}\n \n www.interreg-danube.eu/knowing-ipr\n \n
\n
\n
\n
\n \n
\n {stats.map((stat, i) => (\n
\n
\n

{stat.title}

\n \n
\n
\n ))}\n
\n
\n );\n};\n\nexport { Home };\n","import React from \"react\";\nimport styles from \"./Truncate.module.css\";\n\nconst Truncate = ({ className, children }) => (\n
\n {children}\n
\n);\n\nexport { Truncate };\n","import React from \"react\";\nimport styles from \"./Response.module.css\";\nimport { Truncate } from \"components/Truncate\";\nimport { ResponseActions } from \"components/response\";\nimport { useImagePreview } from \"hooks\";\nimport { FA } from \"components/FA\";\nimport { Loading } from \"components/Utils\";\n\nconst ResponseRow = ({\n response,\n className,\n style,\n handleResize,\n toggleDetail,\n actions,\n title,\n}) => {\n const [image, isImage, isLoading] = useImagePreview(response);\n if (response == null) {\n return (\n
\n
\n \n
\n
\n );\n }\n return (\n
\n
\n {image && (\n \n )}\n {isLoading && (\n \n {isImage ? : }\n \n )}\n

\n {response.title ? response.title : \"(No title)\"}\n

\n {response.note && (\n \n )}\n
\n {response.date ? (\n \n {new Date(response.date).toLocaleDateString()}{\" \"}\n \n ) : (\n response.year && (\n {response.year} \n )\n )}\n {response.persons && (\n
    \n {response.persons.map((person, i) => (\n
  • \n {person.name}\n
  • \n ))}\n
\n )}\n
\n {response.abstract && (\n {response.abstract}\n )}\n \n
\n
\n );\n};\n\nconst PersonalRow = (props) => (\n \n);\nconst WebRow = (props) => ;\n\nexport { ResponseRow, PersonalRow, WebRow };\n","import React, { useState, useEffect } from \"react\";\nimport { TabContent, Nav, NavItem, NavLink } from \"reactstrap\";\nimport styles from \"./Response.module.css\";\nimport { DetailTab, SimilarTab, WebTab } from \"components/tabs\";\nimport { ResponseActions } from \"components/response\";\nimport { ResponseType } from \"data/Types\";\n\nconst Tab = {\n DETAIL: \"detail\",\n SIMILAR: \"similar\",\n WEB: \"web\",\n};\n\nconst ResponseDetail = ({\n response,\n className,\n style,\n handleClose,\n personal = false,\n}) => {\n const [tab, setTab] = useState(Tab.DETAIL);\n\n const handleToggle = (t) => {\n if (tab !== t) setTab(t);\n };\n\n useEffect(() => {\n if (\n (tab === Tab.SIMILAR || tab === Tab.WEB) &&\n response.responseType === ResponseType.FILE\n ) {\n setTab(Tab.DETAIL);\n }\n }, [tab, response]);\n return (\n \n \n

{response.title}

\n \n \n {tab === Tab.DETAIL && (\n \n )}\n {tab === Tab.SIMILAR && response.responseType !== ResponseType.FILE && (\n \n )}\n {tab === Tab.WEB && response.responseType !== ResponseType.FILE && (\n \n )}\n \n \n );\n};\n\nexport { ResponseDetail };\n","import React from \"react\";\nimport { Formik, Field, Form, ErrorMessage } from \"formik\";\nimport { useHistory } from \"react-router-dom\";\nimport { FA } from \"components/FA\";\nimport * as Yup from \"yup\";\nimport { useQuery } from \"hooks\";\n\nimport { modalService, alertService } from \"services\";\n\nconst NoteForm = ({ responseId, close, isModal = false }) => {\n const { resultset, actions } = useQuery();\n const response = resultset.find((r) => r.id === responseId);\n const history = useHistory();\n const initialValues = {\n note: response.note,\n };\n const validationSchema = Yup.object().shape({\n note: Yup.string(),\n });\n\n function onSubmit(fields, { setStatus, setSubmitting }) {\n setStatus();\n actions\n .note(responseId, fields.note)\n .then((response) => {\n alertService.success(`Note for \"${response.title}\" saved`, {\n keepAfterRouteChange: true,\n });\n if (typeof close === \"function\") {\n close();\n } else {\n history.push(\"/\");\n }\n })\n .catch((error) => {\n setSubmitting(false);\n alertService.error(error);\n });\n }\n return (\n \n {({ errors, touched, isSubmitting }) => (\n
\n

\n Personal Note\n {isModal && (\n close()}\n icon=\"times\"\n size=\"xs\"\n />\n )}\n

\n
\n
\n \n \n
\n
\n \n {isSubmitting && (\n \n )}\n Save\n \n
\n
\n
\n )}\n \n );\n};\n\nconst openNoteFormModal = (responseId) =>\n modalService.open({\n id: \"note\",\n children: (\n modalService.close(\"note\")}\n />\n ),\n });\n\nexport { NoteForm, openNoteFormModal };\n","import React, { useState } from \"react\";\nimport {\n TabContent,\n TabPane,\n Nav,\n NavItem,\n NavLink,\n Button,\n Card,\n} from \"reactstrap\";\nimport { FA } from \"components/FA\";\nimport { modalService } from \"services\";\nimport styles from \"./Download.module.css\";\n\nconst Tab = {\n OVERVIEW: \"overview\",\n REQUIREMENTS: \"requirements\",\n INSTALL: \"install\",\n};\n\nconst DownloadContent = ({ triggered = false, isModal, close }) => {\n const [tab, setTab] = useState(Tab.OVERVIEW);\n\n const handleToggle = (t) => {\n if (tab !== t) setTab(t);\n };\n\n const handleClick = (e, t) => {\n e.preventDefault();\n handleToggle(t);\n return false;\n };\n return (\n <>\n

\n KnowING IPR Standalone Application{\" \"}\n {isModal && (\n close()} icon=\"times\" size=\"xs\" />\n )}\n

\n
\n \n \n {tab === Tab.OVERVIEW && (\n \n

What it is

\n

\n The Standalone Application is a self-hosting solution of this\n application, with the additional feature to upload your own\n files to your search request.\n

\n

Why use it

\n

\n You should use the Standalone Application if you want to:\n

\n
    \n
  • control where your data is stored
  • \n
  • use the upload feature of this Application
  • \n
  • \n make this tool accessable within your companies intranet\n
  • \n
\n

Requirements

\n

\n The{\" \"}\n handleClick(e, Tab.REQUIREMENTS)}\n >\n requirements\n {\" \"}\n show you what you need to prepare, in order to{\" \"}\n handleClick(e, Tab.INSTALL)}\n >\n install\n {\" \"}\n the standalone application on your machine.\n

\n

Installation Guide

\n

\n The{\" \"}\n handleClick(e, Tab.INSTALL)}\n >\n installation section\n {\" \"}\n shows you how to install Knowing.App on any machine supporting\n Docker.\n

\n

Download

\n

\n You can download the KnowING.App{\" \"}\n \n here.\n \n

\n
\n )}\n {tab === Tab.REQUIREMENTS && (\n \n

Requirements

\n

\n You need the following to install the Application in your\n infrastructure:\n

\n
    \n
  • \n installed docker and docker-compose\n
  • \n
  • Internet Access
  • \n
  • SMTP Server Credentials
  • \n
  • Public URL + SSL Certificate
  • \n
  • 4 available Ports
  • \n
  • Reverse Proxy
  • \n
\n
Docker
\n

\n Install the Docker Engine on your Machine.{\" \"}\n \n Learn more\n \n .\n

\n

\n Note: Make sure that your Docker Engine is\n using Linux Containers.\n

\n
Internet Access
\n

\n You need internet access to{\" \"}\n \n download\n {\" \"}\n the KnowING.App.zip, the latest KnowING.App\n Container and to query the Report Generation Module in\n production. In production you only need access to{\" \"}\n 178.172.41.73:5557 and to google services for the\n statistical analysis.\n

\n
SMTP Server Credentials
\n

\n To send emails to your users, providing password reset links,\n account validation links a SMTP mailbox is required. You need\n the following information:\n

\n
    \n
  • Host URL
  • \n
  • Port, usually 25
  • \n
  • UserName, usually the E-Mail address
  • \n
  • Password
  • \n
\n
Public URL + SSL Certificate
\n

\n You need a public URL with a designated SSL certificate. It can\n also be the internal Machine name/IP4 address, if you are not\n planning to expose the Standalone Application to the public.\n

\n

\n You need the following information about your SSL certificate to\n integrate it fully into the Standalone Application:\n

\n
    \n
  • Path to your certificate files
  • \n
  • Certificate Issuer
  • \n
  • Certificate Thumbprint
  • \n
  • Certificate Password
  • \n
  • Certificate as knowing.pfx file
  • \n
\n
4 available Ports
\n

\n If you use the default installation, you need 4 available Ports\n on your Machine. You can change them to any port you desire.\n

\n
    \n
  • \n Application HTTP 5000\n
  • \n
  • \n Application HTTPS 5001\n
  • \n
  • \n MongoDB 27017\n
  • \n
  • \n SEQ 5341\n
  • \n
\n
Reverse Proxy
\n

\n This application is served via a Kestrel Server. If you require\n an additional layer of security, do not expose the Application\n directly but attach an NGINX or IIS reverse proxy in front of\n it. Learn more about{\" \"}\n \n Kestrel\n \n ,{\" \"}\n \n IIS Reverse Proxy\n {\" \"}\n or{\" \"}\n \n NGINX Reverse Proxy\n \n .\n

\n
\n )}\n {tab === Tab.INSTALL && (\n \n

Installation

\n

\n Follow the four steps to install the Application on your\n Machine:\n

\n
    \n
  1. Download the KnowING.App.zip
  2. \n
  3. \n Modify .env with the information you accumulated,\n while going through the{\" \"}\n handleClick(e, Tab.REQUIREMENTS)}\n >\n Requirements\n \n
  4. \n
  5. \n Open a terminal/commandline and go to the directory with your{\" \"}\n .env and docker-compose.yml files\n
  6. \n
  7. \n Run docker-compose up -d\n
  8. \n
\n

\n Open a browser and navigate to your designated URL\n

\n

Updating

\n

\n Run the following to update the Application on your Machine:\n
\n \n docker-compose up --force-recreate --build -d knowing.app\n \n

\n

\n Open a browser and navigate to your designated URL\n

\n

Use other MongoDB/SEQ instances

\n

\n Remove the seq and mongo containers in\n your docker-compose.yml. Remove the dependencies{\" \"}\n depends_on in your knowing.app{\" \"}\n container. Modify the SEQ_URL and{\" \"}\n ASPNETCORE_ConnectionStrings__MongoDbDatabase{\" \"}\n environment variables in your knowing.app{\" \"}\n container.\n

\n

\n Note: Use host.docker.internal, if\n you need to reference localhost\n

\n
\n )}\n
\n
\n \n );\n};\n\nconst Download = ({ history }) => (\n <>\n {history.length > 2 && (\n \n )}\n \n \n \n \n);\n\nconst openDownloadModal = (triggered = false) =>\n modalService.open({\n id: \"download\",\n children: (\n modalService.close(\"download\")}\n />\n ),\n });\n\nexport { Download, openDownloadModal };\n","import React, { useState, useRef } from \"react\";\nimport { Formik, Form, ErrorMessage } from \"formik\";\nimport { useHistory } from \"react-router-dom\";\nimport { FA } from \"components/FA\";\nimport { openDownloadModal } from \"components/standalone/Download\";\nimport * as Yup from \"yup\";\nimport { useQuery, useDropArea } from \"hooks\";\nimport styles from \"components/DragOver.module.css\";\n\nimport { modalService, alertService } from \"services\";\n\nconst FILE_SIZE = 15 * 1024 * 1024;\nconst SUPPORTED_FORMATS = [\n \"image/jpg\",\n \"image/jpeg\",\n \"image/gif\",\n \"image/png\",\n \"application/pdf\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n];\n\nconst UploadForm = ({ close, isModal = false, files = null }) => {\n const submitRef = useRef(null);\n const { actions } = useQuery();\n const [droppedFiles, setDroppedFiles] = useState(files);\n const [handleDroparea, state] = useDropArea({\n onFiles: (files) => setDroppedFiles({ target: { files } }),\n });\n const history = useHistory();\n const initialValues = {\n upload: undefined,\n };\n const validationSchema = Yup.object().shape({\n upload: Yup.mixed()\n .test(\n \"fileSize\",\n \"File too large\",\n (value) => value && value.size <= FILE_SIZE\n )\n .test(\n \"fileFormat\",\n \"Unsupported Format\",\n (value) => value && SUPPORTED_FORMATS.includes(value.type)\n ),\n });\n\n function onSubmit(fields, { setStatus, setSubmitting }) {\n setStatus();\n const formData = new FormData();\n formData.append(\"upload\", fields.upload, fields.upload.name);\n actions\n .file(formData)\n .then((response) => {\n alertService.success(`File \"${response.title}\" saved`, {\n keepAfterRouteChange: true,\n });\n if (typeof close === \"function\") {\n close();\n } else {\n history.push(\"/\");\n }\n })\n .catch((error) => {\n if (\n error ===\n \"Uploads are not implemented in this instance of KnowING.App\"\n ) {\n if (typeof close === \"function\") {\n close();\n } else {\n history.push(\"/\");\n }\n openDownloadModal(true);\n return;\n }\n setSubmitting(false);\n alertService.error(error);\n });\n }\n return (\n \n {({\n values,\n errors,\n touched,\n isSubmitting,\n setFieldValue,\n handleSubmit,\n }) => {\n const handleFileChange = (e) => {\n e.preventDefault && e.preventDefault();\n setFieldValue(\"upload\", e.target.files[0]);\n };\n if (\n droppedFiles != null &&\n values.upload !== droppedFiles.target.files[0]\n ) {\n handleFileChange(droppedFiles);\n }\n if (\n values.upload != null &&\n !isSubmitting &&\n submitRef.current != null\n ) {\n submitRef.current.click();\n }\n return (\n
\n

\n Personal Upload\n {isModal && (\n close()}\n icon=\"times\"\n size=\"xs\"\n />\n )}\n

\n \n
\n
\n \n \n \n
\n
\n
\n \n {isSubmitting && (\n \n )}\n Upload\n \n
\n \n \n );\n }}\n \n );\n};\n\nconst openUploadFormModal = (responseId, files = null) =>\n modalService.open({\n id: \"upload\",\n children: (\n modalService.close(\"upload\")}\n files={files}\n />\n ),\n });\n\nexport { UploadForm, openUploadFormModal };\n","import React from \"react\";\nimport { Button } from \"reactstrap\";\nimport { openUploadFormModal } from \"components/personal\";\nimport { FA } from \"components/FA\";\nimport { useQuery, useSearch, useDropArea } from \"hooks\";\nimport styles from \"./QueryActions.module.css\";\nimport dragoverStyles from \"components/DragOver.module.css\";\n\nconst QueryActions = () => {\n const {\n setQuery,\n actions: { execute },\n } = useSearch();\n const { query, actions } = useQuery();\n const [handleDroparea, state] = useDropArea({\n onFiles: (files) => {\n openUploadFormModal(query, { target: { files } });\n },\n });\n return (\n
\n \n {\n setQuery(query.parameters) || execute();\n }}\n >\n search\n \n {\n actions.edit(query);\n }}\n >\n update\n \n {\n actions.delete(query.id);\n }}\n >\n remove\n \n \n upload\n \n
\n );\n};\nexport { QueryActions };\n","import React from \"react\";\nimport { Button } from \"reactstrap\";\nimport { FA } from \"components/FA\";\nimport { openNoteFormModal } from \"components/personal\";\nimport {\n ResponseType,\n ResponseTypeLabel,\n ResponseTypeIcons,\n DataSourceLabel,\n DataSourceIcons,\n} from \"data/Types\";\nimport { useResponses } from \"hooks\";\n\nconst ResponseActions = ({\n response,\n className,\n handleClose,\n detail,\n personal,\n web,\n}) => {\n const { responseIds, actions } = useResponses();\n const isSaved = responseIds.includes(response.id);\n return (\n
\n \n {response.dataSource && DataSourceIcons[response.dataSource] && (\n \n )}\n {!web && (\n {\n e.stopPropagation();\n actions.response(response);\n }}\n >\n {isSaved ? (\n <>\n remove\n \n ) : (\n <>\n save\n \n )}\n \n )}\n {personal && (\n {\n e.stopPropagation();\n openNoteFormModal(response.id);\n }}\n >\n comment\n \n )}\n {personal && response.responseType === ResponseType.FILE && (\n {\n e.stopPropagation();\n actions.download(response.id, response.title);\n }}\n >\n download\n \n )}\n {!detail &&\n response.url &&\n response.url.map((url, i) => {\n let short = url;\n try {\n short = new URL(url).hostname;\n } catch (e) {\n console.error(url);\n }\n return (\n \n {short}\n \n );\n })}\n {handleClose &&
\n );\n};\nexport { ResponseActions };\n","import React, { useState, useEffect, useRef, useCallback } from \"react\";\nimport produce from \"immer\";\nimport {\n List,\n CellMeasurer,\n CellMeasurerCache,\n InfiniteLoader,\n AutoSizer,\n} from \"react-virtualized\";\nimport { ResponseRow } from \"components/response\";\nimport { NotFound, Loading } from \"components/Utils\";\nimport styles from \"./Resultset.module.css\";\n\nconst pageSize = 20;\n\nconst Resultset = ({\n className,\n detailId,\n setDetail,\n status,\n result,\n execute,\n RowComponent = ResponseRow,\n}) => {\n const cache = useRef(\n new CellMeasurerCache({\n fixedWidth: true,\n defaultHeight: 100,\n })\n );\n\n const [pages, setPages] = useState([]);\n\n const list = useRef(null);\n\n // Update virtualized list on resize\n useEffect(() => {\n const forceUpdate = () => {\n cache.current.clearAll();\n list.current && list.current.forceUpdateGrid();\n };\n window.addEventListener(\"resize\", forceUpdate);\n return () => window.removeEventListener(\"resize\", forceUpdate);\n }, []);\n\n // Update virtualized list on result changes\n useEffect(() => {\n cache.current.clearAll();\n list.current && list.current.forceUpdateGrid();\n }, [result]);\n\n const loadMoreRows = useCallback(\n ({ startIndex, stopIndex }) => {\n if (\n Object.prototype.hasOwnProperty.call(result.resultset, startIndex) &&\n Object.prototype.hasOwnProperty.call(result.resultset, stopIndex) &&\n (startIndex < 0 || stopIndex < pageSize)\n ) {\n return;\n }\n let page = Math.floor(startIndex / pageSize) + 1;\n if (page * pageSize < stopIndex) {\n ++page;\n }\n !pages.includes(page) &&\n execute(page, true).then(\n (r) => r && setPages(pages.filter((p) => p !== page))\n );\n setPages([...pages, page]);\n },\n [execute, result.resultset, pages]\n );\n\n const isRowLoaded = useCallback(({ index }) => !!result.resultset[index], [\n result.resultset,\n ]);\n\n /**\n const rowRerender = useCallback((index) => {\n cache.current.clear(index, 0);\n list.current && list.current.recomputeRowHeights(index);\n }, []);\n */\n const getResponse = useCallback(\n (index) =>\n result.resultset[index] &&\n produce(result.resultset[index], (response) => {\n response.persons = response.owners || response.authors || null;\n }),\n [result.resultset]\n );\n\n const rowRenderer = useCallback(\n ({ index, parent, key, style }) => {\n const response = getResponse(index);\n const toggleDetail = () =>\n setDetail(response && detailId !== response.id ? response : null);\n\n return (\n \n \n \n );\n },\n [detailId, getResponse, setDetail, result.docsCount]\n );\n\n const infiniteLoaderChildren = useCallback(\n ({ onRowsRendered, registerChild }) =>\n result &&\n result.resultset && (\n \n {({ width, height }) => (\n {\n list.current = ref;\n registerChild(ref);\n }}\n />\n )}\n \n ),\n [result, rowRenderer]\n );\n\n if (!result.resultset) {\n return (\n
\n \n
\n );\n }\n\n if (result.resultset.length < 1) {\n return (\n
\n \n
\n );\n }\n\n return (\n
\n \n
\n );\n};\n\nexport { Resultset };\n","import React from \"react\";\nimport { modalService } from \"services\";\nimport { FA } from \"components/FA\";\n\nconst License = ({ close }) => (\n <>\n

\n Technology transfer/ licensing data{\" \"}\n close()} icon=\"times\" size=\"xs\" />\n

\n
\n

\n A license is a contractual agreement between the owner of a patent and\n the licensee that permits the use of the patent under defined terms of\n use. There is no obligation to inform the EPO or any other authority\n about licenses of patents or of any intent to license, so licensing data\n is far from complete. KnowING IPR thus compiled information available to\n different patenting authorities (EPO for licensed/WIPO for licensable)\n and compiled other links which can allow checking for this.\n

\n
\n \n);\n\nconst openLicenseModal = () =>\n modalService.open({\n id: \"license\",\n children: modalService.close(\"license\")} />,\n });\n\nexport { openLicenseModal };\n","import React, { useEffect, useState } from \"react\";\nimport { Chart } from \"react-google-charts\";\nimport { modalService } from \"services\";\nimport { useEffectOnce } from \"hooks\";\nimport { fetchWrapper } from \"data/FetchWrapper\";\nimport { FA } from \"components/FA\";\nimport { Loading, Select } from \"components/Utils\";\nimport { statsService } from \"services\";\n\nconst getFlatCategories = (items) => {\n let categories = [];\n for (let item of items) {\n categories.push({ name: item.name, level: item.level });\n if (item.children) {\n categories = categories.concat(getFlatCategories(item.children));\n }\n }\n return categories;\n};\n\nconst OwnershipEvolution = ({ owners, close }) => {\n const [categories, setCategories] = useState(null);\n const [owner, setOwner] = useState(owners[0].name);\n const [category, setCategory] = useState(null);\n const [stat, setStat] = useState(null);\n useEffectOnce(() => {\n fetchWrapper.get(\"/api/search/tree\").then((categories) => {\n setCategories(getFlatCategories(categories.children));\n });\n });\n\n useEffect(() => {\n if (owner != null) {\n setStat(null);\n statsService.patents.evolution({ owner, category }).then((stat) => {\n const options = { ...stat.options };\n options.hAxis.title = \"Count\";\n options.vAxis.title = \"Year\";\n delete options.hAxis.textPosition;\n delete options.vAxis.textPosition;\n delete options.chartArea;\n options.chartArea = {\n top: 0,\n right: 0,\n width: \"85%\",\n height: 270,\n };\n delete options.bar;\n setStat({ ...stat, options });\n });\n }\n }, [category, owner]);\n\n const isLoading = categories == null || stat == null;\n\n return (\n <>\n

\n Patent Ownership Evolution{\" \"}\n close()} icon=\"times\" size=\"xs\" />\n

\n
\n
\n
\n \n {owners.length > 1 ? (\n \n ) : (\n

{owners[0].name}

\n )}\n
\n
\n \n {categories != null ? (\n \n ) : (\n \n )}\n
\n
\n\n {isLoading ? (\n \n ) : (\n \n )}\n
\n \n );\n};\n\nconst openOwnershipEvolutionModal = (owners) =>\n modalService.open({\n id: \"stats\",\n children: (\n modalService.close(\"stats\")}\n />\n ),\n });\n\nexport { openOwnershipEvolutionModal };\n","import React from \"react\";\nimport { TabPane, ModalBody, ModalHeader } from \"reactstrap\";\nimport {\n ResponseActions,\n openLicenseModal,\n openOwnershipEvolutionModal,\n} from \"components/response\";\nimport { FA } from \"components/FA\";\nimport { Loading } from \"components/Utils\";\nimport styles from \"./DetailTab.module.css\";\nimport { modalService } from \"services\";\nimport { useImagePreview } from \"hooks\";\nimport { ResponseType } from \"data/Types\";\n\nconst getLicenseInfo = (licensed = {}, licensable = {}) => {\n let status = licensed.status === \"Y\" ? \"Yes\" : \"No\";\n if (\n !licensed.status &&\n ((licensed.date && licensed.date !== \"9999-12-31\") ||\n (licensed.type && licensed.type !== \"n/a\") ||\n licensed.licensee ||\n licensed.licensedIn)\n ) {\n status = \"Yes\";\n }\n return (\n <>\n
\n Potentially Licensed:{\" \"}\n {\n e.preventDefault();\n openLicenseModal();\n }}\n >\n Info\n \n
\n
\n Status: {status}\n {licensed.date && !licensed.date.startsWith(\"9999-12-31\") && (\n <>\n
\n Date of license:{\" \"}\n {new Date(licensed.date).toLocaleDateString()}\n \n )}\n
\n Type of License:{\" \"}\n {licensed.type && licensed.type !== \"n/a\" ? (\n licensed.type\n ) : (\n N/A\n )}\n {licensed.licensee && (\n <>\n
\n Licensee: {licensed.licensee}\n \n )}\n {licensed.licensedIn && (\n <>\n
\n Licensed in: {licensed.licensedIn}\n \n )}\n
\n
\n Potentially Licensable:{\" \"}\n {\n e.preventDefault();\n openLicenseModal();\n }}\n >\n Info\n \n
\n
\n {licensable.status === \"Y\" ? (\n \"Yes\"\n ) : licensable.status === \"N\" ? (\n \"No\"\n ) : (\n N/A\n )}\n
\n {licensable.url &&\n Array.isArray(licensable.url) &&\n licensable.url.length > 0 &&\n licensable.url.map((url, i) => {\n let short = url;\n try {\n short = new URL(url).hostname;\n } catch (e) {\n console.error(url);\n }\n return (\n \n {i > 0 &&
}\n \n {short}\n \n
\n );\n })}\n
\n \n );\n};\n\nconst Detail = ({ response }) => {\n const [image, isImage, isLoading] = useImagePreview(response);\n return (\n
\n {image && (\n
\n \n
\n )}\n {isLoading && (\n
\n {isImage ? : }\n
\n )}\n {response.note && (\n <>\n
Personal Note:
\n
{response.note}
\n
\n \n )}\n {response.patentNumber && (\n <>\n
Patent Number:
\n
{response.patentNumber}
\n \n )}\n {response.ipc && Array.isArray(response.ipc) && response.ipc.length > 0 && (\n <>\n
\n IPC:\n
\n
{response.ipc.join(\", \")}
\n \n )}\n {response.cpc && Array.isArray(response.cpc) && response.cpc.length > 0 && (\n <>\n
\n \n CPC\n \n :\n
\n
{response.cpc.join(\", \")}
\n \n )}\n {response.date ? (\n <>\n
Date published:
\n
{new Date(response.date).toLocaleDateString()}
\n \n ) : (\n response.year && (\n <>\n
Year:
\n
{response.year}
\n \n )\n )}\n {response.dateGranted && (\n <>\n
Date granted:
\n
{new Date(response.dateGranted).toLocaleDateString()}
\n \n )}\n {response.authors && (\n <>\n
Authors:
\n
{response.authors.map((p) => p.name).join(\", \")}
\n \n )}\n {response.owners && (\n <>\n
\n Owners:{\" \"}\n {\n e.preventDefault();\n openOwnershipEvolutionModal(response.owners);\n }}\n >\n Info\n \n
\n
{response.owners.map((p) => p.name).join(\", \")}
\n \n )}\n {response.abstract && (\n <>\n
Abstract:
\n
{response.abstract}
\n \n )}\n {response.language && (\n <>\n
Language:
\n
{response.language}
\n \n )}\n {response.publisher && (\n <>\n
Publisher:
\n
{response.publisher}
\n \n )}\n {response.fos && (\n <>\n
\n FOS:\n
\n
{response.fos.join(\", \")}
\n \n )}\n {response.keywords && (\n <>\n
Keywords:
\n
{response.keywords.join(\", \")}
\n \n )}\n {response.issue && (\n <>\n
Issue:
\n
{response.issue}
\n \n )}\n {response.doi && (\n <>\n
\n DOI:\n
\n
{response.doi}
\n \n )}\n {response.venue && (\n <>\n
Venue:
\n
{response.venue}
\n \n )}\n {response.country && (\n <>\n
Country:
\n
{response.country}
\n \n )}\n {response.status && (\n <>\n
Status:
\n
{response.status}
\n \n )}\n {response.responseType === ResponseType.PATENT &&\n getLicenseInfo(\n response.potentiallyLicensed,\n response.potentiallyLicensable\n )}\n {response.claims > 0 && (\n <>\n
Claims:
\n
{response.claims}
\n \n )}\n {response.url && Array.isArray(response.url) && response.url.length > 0 && (\n <>\n
\n URLs:\n
\n
\n {response.url.map((url, i) => {\n let short = url;\n try {\n short = new URL(url).hostname;\n } catch (e) {\n console.error(url);\n }\n return (\n \n {i > 0 &&
}\n \n {short}\n \n
\n );\n })}\n
\n \n )}\n
\n );\n};\n\nconst DetailTab = ({ response, tabId, className }) => {\n return (\n \n \n \n );\n};\n\nconst openDetailModal = (response) =>\n modalService.open({\n id: \"detail\",\n children: (\n <>\n modalService.close(\"detail\")}>\n {response.title}\n \n \n \n \n \n \n ),\n });\n\nexport { DetailTab, openDetailModal };\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { TabPane } from \"reactstrap\";\nimport { openDetailModal } from \"components/tabs\";\nimport { Resultset } from \"components/response\";\nimport { useSearchSimilar } from \"hooks\";\n\nconst SimilarTab = ({ responseId, tabId, className }) => {\n const [detail, setDetail] = useState(null);\n const [result, search] = useSearchSimilar();\n const execute = useCallback(\n (page = 1, append = false) => search(responseId, page, append),\n [responseId, search]\n );\n useEffect(() => {\n execute();\n }, [execute]);\n return (\n \n {\n openDetailModal(response);\n return setDetail(response);\n }}\n status={result.status}\n result={result}\n execute={execute}\n detailId={detail != null ? detail.id : -1}\n />\n \n );\n};\n\nexport { SimilarTab };\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport { TabPane } from \"reactstrap\";\nimport { Resultset, WebRow } from \"components/response\";\nimport { useSearchWeb } from \"hooks\";\n\nconst WebTab = ({ q, tabId, className }) => {\n const [detail, setDetail] = useState(null);\n const [result, search] = useSearchWeb();\n const execute = useCallback(() => {\n search(q);\n }, [q, search]);\n const onRowClick = useCallback((detail) => {\n detail && detail.url && window.open(detail.url[0], \"_blank\");\n setDetail(detail);\n }, []);\n useEffect(() => {\n execute();\n }, [execute]);\n return (\n \n \n \n );\n};\n\nexport { WebTab };\n","import React, { useState, useEffect } from \"react\";\nimport {\n ButtonDropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n Button,\n} from \"reactstrap\";\nimport { FA } from \"components/FA\";\nimport { Loading } from \"components/Utils\";\n\nconst CallToAction = ({\n value = null,\n className = null,\n items = [],\n split = false,\n disabled = false,\n emptyLabel = \"Please choose...\",\n color = \"secondary\",\n size = null,\n addonType = null,\n spinner = false,\n caret = true,\n right = true,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [current, setCurrent] = useState(\n items.find((item) => item.value === value)\n );\n\n const handleToggle = () => setIsOpen(!isOpen);\n const handleClick = (item) => {\n if (caret) {\n setCurrent(item);\n }\n if (typeof item.action === \"function\") {\n item.action();\n }\n };\n\n // Update labels (if changed)\n useEffect(() => setCurrent(items.find((item) => item.value === value)), [\n items,\n value,\n ]);\n\n if (items.length === 1) {\n return (\n items[0].action()}\n disabled={disabled || spinner}\n title={items[0].label}\n >\n {spinner && }\n {items[0].icon && (\n <>\n {\" \"}\n \n )}\n {items[0].label}\n \n );\n }\n\n return (\n \n {split && current ? (\n <>\n current.action()}\n disabled={disabled || spinner}\n >\n {spinner && }\n {current.icon && (\n <>\n {\" \"}\n \n )}\n {current.label}\n \n \n \n ) : (\n \n {current == null ? (\n emptyLabel\n ) : (\n <>\n {spinner && }\n {current.icon && (\n <>\n {\" \"}\n \n )}\n {current.label}\n \n )}\n \n )}\n \n {items.map((item, i) =>\n item.value == null ? (\n
\n ) : (\n handleClick(item)}>\n {item.icon && (\n <>\n {\" \"}\n \n )}\n {item.label}\n \n )\n )}\n
\n \n );\n};\n\nexport { CallToAction };\n","import React from \"react\";\nimport { Formik, Field, Form, ErrorMessage } from \"formik\";\nimport { useHistory } from \"react-router-dom\";\nimport { FA } from \"components/FA\";\nimport { useTopic } from \"hooks\";\nimport * as Yup from \"yup\";\n\nimport { alertService, modalService } from \"services\";\n\nconst TopicForm = ({ id = null, isModal, close }) => {\n const { topics, actions } = useTopic();\n const history = useHistory();\n\n const initialValues = {\n name: \"\",\n description: \"\",\n };\n\n if (id != null) {\n const topic = topics.find((t) => t.id === id);\n initialValues.name = topic.name;\n initialValues.description = topic.description;\n }\n\n const validationSchema = Yup.object().shape({\n name: Yup.string().required(\"Topic is required\"),\n description: Yup.string(),\n });\n\n function onSubmit(fields, { setStatus, setSubmitting }) {\n setStatus();\n fields.id = id;\n let response;\n if (id == null) {\n response = actions.create(fields);\n } else {\n response = actions.edit(fields);\n }\n response\n .then((topic) => {\n alertService.success(`Topic \"${topic.name}\" saved`, {\n keepAfterRouteChange: true,\n });\n actions.current(topic);\n if (typeof close === \"function\") {\n close();\n } else {\n history.push(\"/\");\n }\n })\n .catch((error) => {\n setSubmitting(false);\n alertService.error(error);\n });\n }\n return (\n \n {({ errors, touched, isSubmitting }) => (\n
\n

\n {id == null ? \"Create Topic \" : \"Edit Topic \"}\n {isModal && (\n close()}\n icon=\"times\"\n size=\"xs\"\n />\n )}\n

\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n {isSubmitting && (\n \n )}\n Save\n \n
\n
\n
\n )}\n \n );\n};\n\nconst openTopicFormModal = (id) =>\n modalService.open({\n id: \"topic\",\n children: (\n modalService.close(\"topic\")}\n />\n ),\n });\n\nexport { TopicForm, openTopicFormModal };\n","import React from \"react\";\nimport { CallToAction } from \"components/CallToAction\";\nimport { FA } from \"components/FA\";\nimport { openTopicFormModal } from \"./TopicForm\";\nimport styles from \"./TopicSelector.module.css\";\n\nconst TopicSelector = ({\n value = \"none\",\n topics = [],\n onTopicSelect,\n onTopicDelete,\n right = true,\n}) => {\n const topicActions = topics.map((topic) => ({\n value: topic.id,\n label: topic.name,\n action: () => onTopicSelect(topic),\n }));\n topicActions.unshift({\n value: \"none\",\n label: \"Uncategorized\",\n action: () => onTopicSelect(null),\n });\n const currentActions = [\n {\n value: \"new-topic\",\n label: \"Create Topic\",\n icon: \"folder-plus\",\n action: () => openTopicFormModal(),\n },\n ];\n if (value !== \"none\") {\n currentActions.push({\n value: \"edit-topic\",\n label: `Edit`,\n icon: \"edit\",\n action: () => openTopicFormModal(value),\n });\n if (typeof onTopicDelete === \"function\") {\n currentActions.push({\n value: \"delete-topic\",\n label: `Delete`,\n icon: \"trash\",\n action: () => onTopicDelete(value),\n });\n }\n }\n return (\n <>\n \n }\n right={right}\n />\n \n );\n};\n\nexport { TopicSelector };\n","import React, { useState, useEffect } from \"react\";\nimport { TabPane, Badge, Button } from \"reactstrap\";\nimport { Resultset, ResponseDetail, PersonalRow } from \"components/response\";\nimport { TopicSelector } from \"components/topic/TopicSelector\";\nimport { QueryActions } from \"components/personal\";\nimport styles from \"./PersonalTab.module.css\";\nimport { useQuery, useTopic, useAuth } from \"hooks\";\nimport { QueryTypeLabel } from \"data/Types\";\nimport { FA } from \"components/FA\";\nimport { GetFieldsList } from \"components/Utils\";\nimport { LoginButton } from \"account/Login\";\n\nconst PersonalTab = ({ tabId, className }) => {\n const [detail, setDetail] = useState(null);\n const { query, resultset, actions } = useQuery();\n const { topics } = useTopic();\n const auth = useAuth();\n const detailId = (detail && detail.id) || null;\n useEffect(() => {\n if (detailId != null) setDetail(resultset.find((r) => r.id === detailId));\n }, [resultset, detailId]);\n const classNames = [styles.personalTab, className];\n classNames.push(detail != null ? styles.hasDetails : styles.default);\n if (!query) {\n return (\n _ != null).join(\" \")}\n >\n
\n {auth.user ? (\n <>\n

\n Please select an already saved query or save the current query\n to see your personalized results.\n

\n \n \n ) : (\n \n )}\n
\n \n );\n }\n const result = { ...query.report, docsCount: resultset.length };\n return (\n _ != null).join(\" \")}\n >\n
\n
\n
\n \n
\n
Topic
\n
\n \n (!topic || topic.id !== query.topicId) &&\n actions.topic(topic ? topic.id : query.topicId)\n }\n right={false}\n />\n
\n
Query
\n
{query.parameters.query}
\n
\n Type{\" \"}\n \n {query.parameters.isAdvanced ? \"Advanced\" : \"simple\"}\n \n
\n
{QueryTypeLabel[query.parameters.type]}
\n {!query.parameters.isAdvanced && (\n <>\n
Queried Fields
\n
{GetFieldsList(query.parameters.fields).join(\", \")}
\n \n )}\n
Results
\n
\n \n {(resultset.length || 0).toLocaleString()}\n \n /\n \n {(query.report.docsCount || 0).toLocaleString()}\n \n
\n
Summary:
\n
{query.report.summary}
\n
\n
\n
\n console.warn(\"PersonalTab: Pagination not supported!\")}\n detailId={detail != null ? detail.id : -1}\n RowComponent={PersonalRow}\n />\n
\n {detail != null && (\n setDetail(null)}\n personal\n />\n )}\n \n );\n};\n\nexport { PersonalTab };\n","import React, { useState } from \"react\";\nimport { Resultset, ResponseDetail } from \"components/response\";\nimport styles from \"./SearchTab.module.css\";\nimport { useSearch } from \"hooks\";\nimport { TabPane } from \"reactstrap\";\n\nconst SearchTab = ({ tabId, className }) => {\n const [detail, setDetail] = useState(null);\n const {\n status,\n result,\n actions: { execute },\n } = useSearch();\n const classNames = [styles.searchTab, className];\n classNames.push(detail != null ? styles.hasDetails : styles.default);\n return (\n _ != null).join(\" \")}\n >\n
\n
\n
\n {false &&

{result.summary}

}\n
\n
\n \n
\n {detail != null && (\n setDetail(null)}\n />\n )}\n \n );\n};\n\nexport { SearchTab };\n","import React, { useState, useEffect } from \"react\";\nimport { TabContent, Nav, NavItem, NavLink } from \"reactstrap\";\nimport { Container, Badge } from \"reactstrap\";\nimport { PersonalTab, SearchTab } from \"components/tabs\";\nimport { useSearchResult, useQuery } from \"hooks\";\nimport styles from \"./Results.module.css\";\n\nconst Tab = {\n SEARCH: \"search\",\n PERSONAL: \"personal\",\n};\n\nconst Results = () => {\n const [tab, setTab] = useState(Tab.SEARCH);\n const [result] = useSearchResult();\n const { resultset, query } = useQuery();\n const currentQuery = (query == null ? {} : query).id || \"none\";\n const [current, setCurrent] = useState(currentQuery);\n\n useEffect(() => {\n if (currentQuery !== current) {\n setTab(currentQuery !== \"none\" ? Tab.PERSONAL : Tab.SEARCH);\n setCurrent(currentQuery);\n }\n }, [currentQuery, current]);\n\n const handleToggle = (t) => {\n if (tab !== t) setTab(t);\n };\n return (\n \n \n \n {tab === Tab.SEARCH && }\n {tab === Tab.PERSONAL && }\n \n \n );\n};\n\nexport { Results };\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { Container } from \"reactstrap\";\nimport styles from \"./Alert.module.css\";\n\nimport { alertService } from \"services\";\nimport { AlertType } from \"data/Types\";\nimport { history } from \"data/History\";\n\nconst defaultProps = {\n id: \"default-alert\",\n fade: true,\n};\n\nconst Alert = ({ id, fade }) => {\n const [alerts, setAlerts] = useState([]);\n\n const removeAlert = useCallback(\n (alert) => {\n if (fade) {\n // fade out alert\n const alertWithFade = { ...alert, fade: true };\n setAlerts((alerts) =>\n alerts.map((x) => (x === alert ? alertWithFade : x))\n );\n\n // remove alert after faded out\n setTimeout(() => {\n setAlerts((alerts) => alerts.filter((x) => x !== alertWithFade));\n }, 250);\n } else {\n // remove alert\n setAlerts((alerts) => alerts.filter((x) => x !== alert));\n }\n },\n [fade]\n );\n\n useEffect(() => {\n // subscribe to new alert notifications\n const subscription = alertService.onAlert(id).subscribe((alert) => {\n // clear alerts when an empty alert is received\n if (!alert.message) {\n setAlerts((alerts) => {\n // filter out alerts without 'keepAfterRouteChange' flag\n const filteredAlerts = alerts.filter((x) => x.keepAfterRouteChange);\n\n // remove 'keepAfterRouteChange' flag on the rest\n filteredAlerts.forEach((x) => delete x.keepAfterRouteChange);\n return filteredAlerts;\n });\n } else {\n // add alert to array\n setAlerts((alerts) => [...alerts, alert]);\n\n // auto close alert if required\n if (alert.autoClose) {\n setTimeout(() => removeAlert(alert), 6000);\n }\n }\n });\n\n // clear alerts on location change\n const historyUnlisten = history.listen(({ pathname }) => {\n // don't clear if pathname has trailing slash because this will be auto redirected again\n if (pathname.endsWith(\"/\")) return;\n\n alertService.clear(id);\n });\n\n // clean up function that runs when the component unmounts\n return () => {\n // unsubscribe & unlisten to avoid memory leaks\n subscription.unsubscribe();\n historyUnlisten();\n };\n }, [id, removeAlert]);\n\n const cssClasses = useCallback((alert) => {\n if (!alert) return;\n\n const classes = [\"alert\", \"alert-dismissable\"];\n\n const alertTypeClass = {\n [AlertType.Success]: \"alert alert-success\",\n [AlertType.Error]: \"alert alert-danger\",\n [AlertType.Info]: \"alert alert-info\",\n [AlertType.Warning]: \"alert alert-warning\",\n };\n\n classes.push(alertTypeClass[alert.type]);\n\n if (alert.fade) {\n classes.push(\"fade\");\n }\n\n return classes.join(\" \");\n }, []);\n\n return (\n alerts.length > 0 && (\n
\n \n
\n {alerts.map((alert, index) => (\n
\n \n \n
\n ))}\n
\n
\n
\n )\n );\n};\n\nAlert.defaultProps = defaultProps;\nexport { Alert };\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Modal as ModalBase } from \"reactstrap\";\nimport styles from \"./Modal.module.css\";\n\nimport { modalService } from \"services\";\n\nconst Modal = ({ id = \"default-modal\" }) => {\n const history = useHistory();\n const [modals, setModals] = useState([]);\n\n const removeModal = useCallback(\n (modal) => setModals((modals) => modals.filter((m) => m.id !== modal.id)),\n []\n );\n\n useEffect(() => {\n // subscribe to new modal notifications\n const subscription = modalService.onModal().subscribe((modal) => {\n // close modals when an empty modal is received\n if (!modal.children) {\n removeModal(modal);\n } else {\n // add modal to array\n setModals((modals) => [...modals, modal]);\n }\n });\n\n // close modals on location change\n const historyUnlisten = history.listen(({ pathname }) => {\n // don't close if pathname has trailing slash because this will be auto redirected again\n if (pathname.endsWith(\"/\")) return;\n\n modalService.close(id);\n });\n\n // clean up function that runs when the component unmounts\n return () => {\n // unsubscribe & unlisten to avoid memory leaks\n subscription.unsubscribe();\n historyUnlisten();\n };\n }, [id, removeModal, history]);\n\n return (\n modals.length > 0 &&\n modals.map((modal, index) => (\n removeModal(modal)}\n >\n {modal.children}\n \n ))\n );\n};\n\nexport { Modal };\n","import React from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport { accountService } from \"services\";\nimport { fetchWrapper } from \"data/FetchWrapper\";\n\nconst Logout = () => {\n fetchWrapper.post(`/api/user/logout`);\n accountService.logout();\n return ;\n};\n\nexport { Logout };\n","import React, { useState } from \"react\";\nimport { Card, CardHeader, CardBody, Collapse } from \"reactstrap\";\nimport { NotAvailabe } from \"components/Utils\";\nimport styles from \"./SitebarCollapsable.module.css\";\n\nconst SitebarCollapsable = ({\n header,\n children,\n empty = ,\n toggled = false,\n}) => {\n const [isOpen, setIsOpen] = useState(toggled);\n const handleToggleClick = () => setIsOpen(!isOpen);\n return (\n \n \n {header}\n \n \n \n {children != null ? children : empty}\n \n \n \n );\n};\n\nexport { SitebarCollapsable };\n","import React, { useEffect } from \"react\";\nimport { SitebarCollapsable } from \"components/SitebarCollapsable\";\nimport { useAuth, useTopic, useSearch, useQuery } from \"hooks\";\nimport { LoginButton } from \"account/Login\";\nimport { Badge } from \"reactstrap\";\nimport { CallToAction } from \"components/CallToAction\";\nimport { FA } from \"components/FA\";\nimport { NotFound, Loading } from \"components/Utils\";\nimport { TopicSelector } from \"components/topic/TopicSelector\";\nimport styles from \"./Personal.module.css\";\n\nconst Personal = () => {\n const auth = useAuth();\n const {\n setQuery,\n actions: { execute },\n } = useSearch();\n const { topics, current, queries, actions } = useTopic();\n const { query, actions: qActions } = useQuery();\n useEffect(() => {\n if (auth.user) {\n actions.fetch();\n }\n }, [actions, auth.user]);\n return (\n \n {auth.user ? (\n
\n
Topic:
{\" \"}\n
\n \n

\n {current ? (\n current.description ? (\n current.description\n ) : (\n \n )\n ) : (\n \"Saved queries, not assigned to a topic, are listed below.\"\n )}\n

\n
\n
\n
Queries:
\n
\n {queries == null ? (\n
\n \n
\n ) : queries.length > 0 ? (\n queries.map((q) => {\n const showQuery = () =>\n qActions.current(\n !query || (query && query.id !== q.id) ? q : null\n );\n const queryActions = [\n {\n value: \"show\",\n label: \"Show\",\n icon: \"eye\",\n action: showQuery,\n },\n {\n value: \"search\",\n label: \"Search\",\n icon: \"search\",\n action: () => setQuery(q.parameters) || execute(),\n },\n {\n value: \"delete\",\n label: \"Delete\",\n icon: \"trash\",\n action: () => qActions.delete(q.id),\n },\n ];\n return (\n \n \n {q.parameters.query}\n \n \n {(q.report.resultset.length || 0).toLocaleString()}/\n {(q.report.docsCount || 0).toLocaleString()}\n \n \n }\n />\n \n );\n })\n ) : (\n
\n \n
\n )}\n
\n
\n ) : (\n \n )}\n
\n );\n};\n\nexport { Personal };\n","import React, { useState, useMemo } from \"react\";\nimport { SitebarCollapsable } from \"components/SitebarCollapsable\";\nimport { Nav, NavItem, NavLink } from \"reactstrap\";\nimport { useEffectOnce } from \"hooks\";\nimport { Select } from \"components/Utils\";\nimport { fetchWrapper } from \"data/FetchWrapper\";\n\nconst getCountries = (item, countries = []) => {\n if (item.country) {\n countries.push(item.country);\n }\n if (item.children) {\n for (let child of item.children) {\n getCountries(child, countries);\n }\n }\n return countries;\n};\n\nconst renderNav = (items = [], level = 0) =>\n items.length > 0 ? (\n \n ) : null;\n\nconst filterLinks = (_item, node, value) => {\n var item = { ..._item };\n if (item.children) {\n item.children = item.children\n .map((item) => filterLinks(item, node, value))\n .filter((item) => item !== null);\n }\n return item[node] == null || item[node] === value ? item : null;\n};\n\nconst RelevantSites = () => {\n const [items, setItems] = useState([]);\n const [country, setCountry] = useState(null);\n useEffectOnce(() => {\n fetchWrapper\n .get(\"/api/file/web-ressources\")\n .then((items) => setItems(items));\n });\n const countries = useMemo(() => {\n const countries = [];\n for (let item of items) {\n getCountries(item, countries);\n }\n countries.sort();\n return [...new Set(countries)];\n }, [items]);\n const filteredItem = useMemo(\n () =>\n items\n .map((item) => filterLinks(item, \"country\", country))\n .filter(\n (item) => item != null && (!item.children || item.children.length > 0)\n ),\n [country, items]\n );\n return (\n \n \n {renderNav(filteredItem)}\n \n );\n};\n\nexport { RelevantSites };\n","import React, { useMemo, useEffect } from \"react\";\nimport { FormGroup, Label, Input } from \"reactstrap\";\nimport { GetFieldsList } from \"components/Utils\";\nimport { QueryFields } from \"data/Types\";\nimport { useSearchQuery } from \"hooks\";\nimport styles from \"./BasicFilters.module.css\";\n\nconst BasicFilters = () => {\n const [query, setQuery] = useSearchQuery();\n const toggleField = (field) => {\n let fields = query.fields;\n if (fields & QueryFields[field]) {\n fields &= ~QueryFields[field];\n } else {\n fields |= QueryFields[field];\n }\n setQuery({ fields });\n };\n const availableFields = GetFieldsList(QueryFields[query.type], false);\n const allowedFields = useMemo(() => {\n let fields = query.fields;\n for (let field of GetFieldsList(query.fields, false)) {\n if (!(QueryFields[query.type] & QueryFields[field.key])) {\n console.warn(\n `QueryFields OutOfRange: Removing not allowed filter ${field.key} from query`\n );\n fields &= ~QueryFields[field.key];\n }\n }\n return fields;\n }, [query.fields, query.type]);\n useEffect(() => {\n if (allowedFields !== query.fields) {\n setQuery({ fields: allowedFields });\n }\n }, [allowedFields, query.fields, setQuery]);\n return availableFields.map((field, i) => (\n \n \n \n ));\n};\n\nexport { BasicFilters };\n","import React from \"react\";\nimport { Button, ButtonGroup } from \"reactstrap\";\nimport { useSearchQuery } from \"hooks\";\n\nconst FilterToggle = () => {\n const [{ isAdvanced }, setQuery] = useSearchQuery();\n const toggleSelected = (value) => setQuery({ isAdvanced: !isAdvanced });\n\n return (\n \n \n \n \n );\n};\n\nexport { FilterToggle };\n","import React, { useCallback } from \"react\";\nimport { SitebarCollapsable } from \"components/SitebarCollapsable\";\nimport { BasicFilters } from \"./BasicFilters\";\nimport { FilterToggle } from \"./FilterToggle\";\nimport { AdvancedFilters } from \"./AdvancedFilters\";\nimport { FA } from \"components/FA\";\nimport { useSearch } from \"hooks\";\n\nconst SearchFilter = () => {\n const { query, actions } = useSearch();\n const handleSubmit = useCallback(\n (e) => {\n e.preventDefault();\n actions.execute();\n },\n [actions]\n );\n return (\n \n
\n \n {!query.isAdvanced ? : }\n \n \n
\n );\n};\n\nexport { SearchFilter };\n","import React from \"react\";\nimport { CallToAction } from \"components/CallToAction\";\nimport { useAuth } from \"hooks\";\nimport { openDownloadModal } from \"components/standalone/Download\";\nimport styles from \"./UserButton.module.css\";\n\nconst UserButton = () => {\n const auth = useAuth();\n const actions = [];\n let key, value;\n if (auth.user) {\n key = \"loggedin\";\n value = \"profile\";\n actions.push({\n value: \"profile\",\n label: \"Profile\",\n icon: \"user-circle\",\n action: auth.profile,\n });\n actions.push({\n value: \"download\",\n label: \"Download\",\n icon: \"download\",\n action: openDownloadModal,\n });\n actions.push({\n value: \"sign-out\",\n label: \"Sign out\",\n icon: \"sign-in-alt\",\n action: auth.logout,\n });\n } else {\n key = \"anonym\";\n value = \"sign-in\";\n actions.push({\n value: \"sign-in\",\n label: \"Sign in\",\n icon: \"sign-in-alt\",\n action: auth.login,\n });\n actions.push({\n value: \"sign-up\",\n label: \"Sign up\",\n icon: \"user-plus\",\n action: auth.register,\n });\n actions.push({\n value: \"download\",\n label: \"Download\",\n icon: \"download\",\n action: openDownloadModal,\n });\n }\n return (\n \n );\n};\n\nexport { UserButton };\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Row, Col, InputGroup, Input } from \"reactstrap\";\nimport logo from \"static/logo.png\";\nimport { CallToAction } from \"components/CallToAction\";\nimport { UserButton } from \"account/UserButton\";\nimport { openHelpModal } from \"components/search/Help\";\nimport { QueryType, QueryTypeLabel, StatusType } from \"data/Types\";\nimport styles from \"./SearchBar.module.css\";\n\nimport { useAuth, useSearch, useQuery } from \"hooks\";\n\nconst getQueryTypeActions = (setQuery) => {\n const actions = [];\n for (let type of Object.keys(QueryType)) {\n // if ([QueryType.PUBLICATION, QueryType.PATENT].includes(type)) {\n // actions.push({});\n // }\n actions.push({\n value: type,\n label: QueryTypeLabel[type],\n action: () => setQuery({ type }),\n });\n }\n return actions;\n};\n\nconst SearchBar = () => {\n const search = useSearch();\n const query = useQuery();\n const auth = useAuth();\n const helpAction = [\n {\n value: \"help\",\n label: \"Help\",\n icon: \"info\",\n action: openHelpModal,\n },\n ];\n const searchActions = [\n {\n value: \"search\",\n label: \"Search\",\n icon: \"search\",\n action: search.actions.execute,\n },\n ];\n if (search.status & StatusType.Result && auth.user) {\n searchActions.push({\n value: \"save\",\n label: \"Save\",\n icon: \"star\",\n action: query.actions.create,\n });\n }\n /** #256 Remove due to UX feedback\n if (search.status > 0) {\n searchActions.push({\n value: \"reset\",\n label: \"Reset\",\n icon: \"times\",\n action: search.actions.reset,\n });\n } /**/\n return (\n {\n e.preventDefault();\n if (\n !search.query.query ||\n (search.status & StatusType.Queried &&\n !(search.status & StatusType.Result))\n ) {\n return false;\n }\n search.actions.execute();\n return false;\n }}\n >\n \n \n \"logo\"\n \n \n \n \n \n {\n search.setQuery({ query: e.target.value });\n }}\n />\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport { SearchBar };\n","import React, { useState, useEffect } from \"react\";\nimport queryString from \"query-string\";\n\nimport { accountService, alertService } from \"services\";\n\nfunction VerifyEmail({ history }) {\n const EmailStatus = {\n Verifying: \"Verifying\",\n Failed: \"Failed\",\n };\n\n const [emailStatus, setEmailStatus] = useState(EmailStatus.Verifying);\n\n useEffect(() => {\n const { email, token } = queryString.parse(history.location.search);\n\n // remove token from url to prevent http referer leakage\n history.replace(history.location.pathname);\n\n accountService\n .verifyEmail(email, token)\n .then(() => {\n alertService.success(\"Verification successful, you can now login\", {\n keepAfterRouteChange: true,\n });\n history.push(\"/account/login\");\n })\n .catch(() => {\n setEmailStatus(EmailStatus.Failed);\n });\n }, [EmailStatus.Failed, history]);\n\n function getBody() {\n switch (emailStatus) {\n case EmailStatus.Verifying:\n return
Verifying...
;\n case EmailStatus.Failed:\n return
Verification failed, please contact the site admin.
;\n default:\n throw new Error(\"Not implemented\");\n }\n }\n\n return (\n
\n

Verify Email

\n
{getBody()}
\n
\n );\n}\n\nexport { VerifyEmail };\n","import React, { useState } from \"react\";\nimport queryString from \"query-string\";\nimport { CardHeader, CardBody } from \"reactstrap\";\nimport { useEffectOnce } from \"hooks\";\n\nimport { accountService, alertService } from \"services\";\n\nconst EmailStatus = {\n Deleting: \"Deleting\",\n Failed: \"Failed\",\n};\n\nconst DeleteEmail = ({ history }) => {\n const [emailStatus, setEmailStatus] = useState(EmailStatus.Deleting);\n\n useEffectOnce(() => {\n const { email, token } = queryString.parse(history.location.search);\n\n // remove token from url to prevent http referer leakage\n history.replace(history.location.pathname);\n\n accountService\n .deleteEmail(email, token)\n .then(() => {\n alertService.success(\"Your Email has been deleted from our Database\", {\n keepAfterRouteChange: true,\n });\n history.push(\"/\");\n })\n .catch((e) => {\n alertService.success(e, {\n keepAfterRouteChange: true,\n });\n setEmailStatus(EmailStatus.Failed);\n });\n });\n\n function getBody() {\n switch (emailStatus) {\n case EmailStatus.Deleting:\n return
Deleting...
;\n case EmailStatus.Failed:\n return
Deleting failed, please contact the site admin.
;\n default:\n throw new Error(\"Not implemented\");\n }\n }\n\n return (\n <>\n Delete Email\n {getBody()}\n \n );\n};\n\nexport { DeleteEmail };\n","import React, { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport queryString from \"query-string\";\nimport { Formik, Field, Form, ErrorMessage } from \"formik\";\nimport * as Yup from \"yup\";\n\nimport { accountService, alertService } from \"services\";\n\nfunction ResetPassword({ history }) {\n const [token, setToken] = useState(null);\n const [email, setEmail] = useState(null);\n\n useEffect(() => {\n const { email, token } = queryString.parse(history.location.search);\n\n // remove token from url to prevent http referer leakage\n history.replace(history.location.pathname);\n\n setToken(token);\n setEmail(email);\n }, [history]);\n\n function getForm() {\n const initialValues = {\n password: \"\",\n confirmPassword: \"\",\n };\n\n const validationSchema = Yup.object().shape({\n password: Yup.string()\n .min(6, \"Password must be at least 6 characters\")\n .required(\"Password is required\"),\n confirmPassword: Yup.string()\n .oneOf([Yup.ref(\"password\"), null], \"Passwords must match\")\n .required(\"You must confirm your password\"),\n });\n\n function onSubmit({ password, confirmPassword }, { setSubmitting }) {\n alertService.clear();\n accountService\n .resetPassword({ email, token, password, confirmPassword })\n .then(() => {\n alertService.success(\"Password reset successful, you can now login\", {\n keepAfterRouteChange: true,\n });\n history.push(\"login\");\n })\n .catch((error) => {\n setSubmitting(false);\n alertService.error(error);\n });\n }\n\n return (\n \n {({ errors, touched, isSubmitting }) => (\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n {isSubmitting && (\n \n )}\n Reset Password\n \n \n Cancel\n \n
\n
\n
\n )}\n \n );\n }\n\n function getBody() {\n if (token && email) return getForm();\n console.error(\"Email and/or Token missing\");\n return (\n
\n Something went wrong. Please request a new token here:{\" \"}\n forgot password.\n
\n );\n }\n\n return (\n
\n

Reset Password

\n
{getBody()}
\n
\n );\n}\n\nexport { ResetPassword };\n","import React, { useEffect } from \"react\";\nimport { Route, Switch, Redirect } from \"react-router-dom\";\n\nimport { Button } from \"reactstrap\";\nimport { FA } from \"components/FA\";\n\nimport { accountService } from \"services\";\n\nimport { Card } from \"reactstrap\";\nimport { Login } from \"./Login\";\nimport { Register } from \"./Register\";\nimport { VerifyEmail } from \"./VerifyEmail\";\nimport { DeleteEmail } from \"./DeleteEmail\";\nimport { ForgotPassword } from \"./ForgotPassword\";\nimport { ResetPassword } from \"./ResetPassword\";\nimport { Profile } from \"./Profile\";\n\nimport styles from \"./Account.module.css\";\n\nfunction Account({ history, match }) {\n const { path } = match;\n\n useEffect(() => {\n // redirect to home if already logged in\n if (accountService.userValue) {\n history.push(\"/\");\n }\n }, [history]);\n\n return (\n <>\n {history.length > 2 && (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport { Account };\n","import React from \"react\";\nimport { Route } from \"react-router\";\nimport { Link } from \"react-router-dom\";\nimport { Container } from \"reactstrap\";\nimport { Layout } from \"components/Layout\";\nimport { Home } from \"components/Home\";\nimport { Results } from \"components/Results\";\nimport { Alert } from \"components/Alert\";\nimport { Modal } from \"components/Modal\";\nimport { Terms } from \"components/Terms\";\nimport { Download } from \"components/standalone/Download\";\nimport { Logout } from \"router/Logout\";\nimport { Personal } from \"components/topic/Personal\";\nimport { RelevantSites } from \"components/RelevantSites\";\nimport { SearchFilter } from \"components/search/SearchFilter\";\nimport { SearchBar } from \"components/search/SearchBar\";\nimport { HandleQueryString } from \"components/search/HandleQueryString\";\nimport { Account } from \"account\";\nimport { StatusType } from \"data/Types\";\nimport { useSearchStatus } from \"hooks\";\nimport styles from \"App.module.css\";\n\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n faInfo,\n faEdit,\n faTimes,\n faCheck,\n faComment,\n faStream,\n faUser,\n faQuoteLeft,\n faFilter,\n faDownload,\n faSearch,\n faBookmark,\n faExternalLinkAlt,\n faFilePdf,\n faGlobe,\n faLock,\n faHistory,\n faSignInAlt,\n faSignOutAlt,\n faEye,\n faSpinner,\n faFileUpload,\n faStar,\n faCaretDown,\n faCaretRight,\n faRedo,\n faTrash,\n faExclamationTriangle,\n faUserCircle,\n faFolderPlus,\n faUserPlus,\n faNewspaper,\n faEllipsisV,\n faSyncAlt,\n faRegistered,\n faFlagUsa,\n faFingerprint,\n faChessKnight,\n faAngleLeft,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {\n faGoogle,\n faWikipediaW,\n faMicrosoft,\n} from \"@fortawesome/free-brands-svg-icons\";\n\nlibrary.add(\n faInfo,\n faEdit,\n faTimes,\n faCheck,\n faComment,\n faStream,\n faUser,\n faQuoteLeft,\n faFilter,\n faDownload,\n faSearch,\n faBookmark,\n faExternalLinkAlt,\n faFilePdf,\n faGlobe,\n faLock,\n faHistory,\n faSignInAlt,\n faSignOutAlt,\n faEye,\n faSpinner,\n faFileUpload,\n faStar,\n faCaretDown,\n faCaretRight,\n faRedo,\n faTrash,\n faExclamationTriangle,\n faUserCircle,\n faFolderPlus,\n faUserPlus,\n faNewspaper,\n faEllipsisV,\n faSyncAlt,\n faRegistered,\n faFlagUsa,\n faFingerprint,\n faChessKnight,\n faAngleLeft,\n faGoogle,\n faWikipediaW,\n faMicrosoft\n);\n\nconst App = () => {\n const [status] = useSearchStatus();\n const MainComponent = !(status & StatusType.Queried) ? Home : Results;\n return (\n <>\n \n \n \n \n \n \n \n \n \n {false && }\n \n \n \n
\n Copyright KnowING IPR © All rights reserved 2019-\n {new Date().getFullYear()}. ·{\" \"}\n \n Terms\n {\" \"}\n · Download\n
\n \n \n \n \n );\n};\nexport default App;\n","import \"./wdyr\";\nimport \"bootstrap/dist/css/bootstrap.css\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Router } from \"react-router-dom\";\nimport { history } from \"data/History\";\nimport App from \"./App\";\nimport \"./index.css\";\n//import registerServiceWorker from './registerServiceWorker';\n\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\");\nconst rootElement = document.getElementById(\"root\");\n\nReactDOM.render(\n \n \n ,\n rootElement\n);\n\n// Uncomment the line above that imports the registerServiceWorker function\n// and the line below to register the generated service worker.\n// By default create-react-app includes a service worker to improve the\n// performance of the application by caching static assets. This service\n// worker can interfere with the Identity UI, so it is\n// disabled by default when Identity is being used.\n//\n//registerServiceWorker();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"queries\":\"Personal_queries__2LNjB\",\"query\":\"Personal_query__1DeXx\",\"queryString\":\"Personal_queryString__3mEdM\",\"action\":\"Personal_action__3Soio\",\"list\":\"Personal_list__3SpgL\",\"separator\":\"Personal_separator__3_Zfz\",\"wrapper\":\"Personal_wrapper__nppwm\",\"topic\":\"Personal_topic__2vTGx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"personalTab\":\"PersonalTab_personalTab__3gI3q\",\"default\":\"PersonalTab_default__5rU3M\",\"hasDetails\":\"PersonalTab_hasDetails__2o4P-\",\"report\":\"PersonalTab_report__1vqW7\",\"list\":\"PersonalTab_list__Duh6X\",\"minHeight\":\"PersonalTab_minHeight__GxtOz\",\"summary\":\"PersonalTab_summary__qBKrW\",\"summaryWrapper\":\"PersonalTab_summaryWrapper__1a0-a\",\"detail\":\"PersonalTab_detail__Q8ceb\"};","import { createBrowserHistory } from \"history\";\n\nexport const history = createBrowserHistory();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchTab\":\"SearchTab_searchTab__3af0A\",\"default\":\"SearchTab_default__Zk_VN\",\"hasDetails\":\"SearchTab_hasDetails__UyWb0\",\"report\":\"SearchTab_report__lNkFk\",\"list\":\"SearchTab_list__3yBlN\",\"summary\":\"SearchTab_summary__2q7Ea\",\"summaryWrapper\":\"SearchTab_summaryWrapper__YL-ya\",\"detail\":\"SearchTab_detail__3u0eY\"};","import React from \"react\";\nimport { Link, useLocation, useHistory } from \"react-router-dom\";\nimport { Formik, Field, Form, ErrorMessage } from \"formik\";\nimport { FA } from \"components/FA\";\nimport { openRegisterModal } from \"./Register\";\nimport { openForgotPasswordModal } from \"./ForgotPassword\";\nimport * as Yup from \"yup\";\n\nimport { accountService, alertService, modalService } from \"services\";\n\nfunction Login({ isModal = false, close = null }) {\n const location = useLocation();\n const history = useHistory();\n const initialValues = {\n email: \"\",\n password: \"\",\n };\n\n const validationSchema = Yup.object().shape({\n email: Yup.string().email(\"Email is invalid\").required(\"Email is required\"),\n password: Yup.string().required(\"Password is required\"),\n });\n\n function onSubmit({ email, password }, { setSubmitting }) {\n alertService.clear();\n accountService\n .login(email, password)\n .then(() => {\n if (typeof close === \"function\") {\n close();\n }\n const { from } = location.state || { from: { pathname: \"/\" } };\n history.push(from);\n })\n .catch((error) => {\n setSubmitting(false);\n alertService.error(error);\n });\n }\n\n return (\n \n {({ errors, touched, isSubmitting }) => (\n
\n

\n Login{\" \"}\n {isModal && (\n close()}\n icon=\"times\"\n size=\"xs\"\n />\n )}\n

\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n {isSubmitting && (\n \n )}\n Login\n \n {isModal ? (\n {\n close();\n openRegisterModal();\n }}\n className=\"btn btn-link\"\n >\n Register\n \n ) : (\n \n Register\n \n )}\n
\n
\n {isModal ? (\n {\n close();\n openForgotPasswordModal();\n }}\n className=\"btn btn-link\"\n >\n Forgot Password?\n \n ) : (\n \n Forgot Password?\n \n )}\n
\n
\n
\n
\n )}\n \n );\n}\n\nconst openLoginModal = () =>\n modalService.open({\n id: \"login\",\n children: (\n modalService.close(\"login\")} />\n ),\n });\n\nconst LoginButton = ({\n text = \"This feature is for logged in users only.\",\n}) => (\n <>\n

{text}

\n \n \n);\n\nexport { Login, openLoginModal, LoginButton };\n","import { useEffect, useState } from \"react\";\n\nconst useObservable = (observable) => {\n const [state, setState] = useState(observable.value);\n\n useEffect(() => {\n const subscribed = observable.subscribe(setState);\n return () => subscribed.unsubscribe();\n }, [observable]);\n return state;\n};\n\nexport { useObservable };\n","import { useSharedState } from \"hooks\";\nimport { accountService } from \"services\";\nimport { openLoginModal } from \"account/Login\";\nimport { openRegisterModal } from \"account/Register\";\nimport { openProfileModal } from \"account/Profile\";\n\nconst useAuth = () => {\n const [user] = useSharedState(accountService.user);\n return {\n user,\n logout: accountService.logout,\n profile: openProfileModal,\n login: openLoginModal,\n register: openRegisterModal,\n };\n};\n\nexport { useAuth };\n","import { useMemo } from \"react\";\nimport { useSharedState } from \"hooks\";\nimport { queryService } from \"services\";\n\nconst useQuery = () => {\n const [query] = useSharedState(queryService.query$);\n const resultset = useMemo(\n () => (query && query.report && query.report.resultset) || [],\n [query]\n );\n const actions = useMemo(\n () => ({\n create: queryService.create,\n current: queryService.current,\n edit: queryService.edit,\n delete: queryService.delete,\n topic: queryService.topic,\n note: queryService.note,\n response: queryService.response,\n file: queryService.file,\n download: queryService.download,\n }),\n []\n );\n return { query, resultset, actions };\n};\n\nexport { useQuery };\n","import { useMemo } from \"react\";\nimport { useQuery } from \"./useQuery\";\n\nconst useResponses = () => {\n const { query, actions: queryAction } = useQuery();\n const responseIds = useMemo(\n () =>\n (query && query.report && query.report.resultset.map((r) => r.id)) || [],\n [query]\n );\n const actions = useMemo(\n () => ({\n note: queryAction.note,\n response: queryAction.response,\n download: queryAction.download,\n }),\n [queryAction]\n );\n return { responseIds, actions };\n};\n\nexport { useResponses };\n","import { useMemo } from \"react\";\nimport { useSearchQuery, useSearchResult, useSearchStatus } from \"hooks\";\nimport { searchService } from \"services\";\n\nconst useSearch = (abort = true) => {\n const [query, setQuery] = useSearchQuery(abort);\n const [result, setResult] = useSearchResult();\n const [status, setStatus] = useSearchStatus();\n const actions = useMemo(\n () => ({\n execute: searchService.execute,\n reset: searchService.reset,\n abort: searchService.abort,\n }),\n []\n );\n return {\n query,\n setQuery,\n result,\n setResult,\n status,\n setStatus,\n actions,\n };\n};\n\nexport { useSearch };\n","import { useMemo, useCallback } from \"react\";\nimport { useSharedState, useSearchStatus } from \"hooks\";\nimport { StatusType } from \"data/Types\";\nimport { searchService } from \"services\";\n\nconst useSearchQuery = (abort = true) => {\n const [search, setSearch] = useSharedState(searchService.search$);\n const [status, setStatus] = useSearchStatus();\n const setSearchAndAbort = useCallback(\n (search) => {\n setSearch(search);\n setStatus(status | StatusType.Modified);\n if (status & StatusType.Querying) {\n console.warn(\"Aborting... new user input\");\n searchService.abort(true);\n }\n },\n [setSearch, status, setStatus]\n );\n return useMemo(() => [search, abort ? setSearchAndAbort : setSearch], [\n search,\n setSearchAndAbort,\n setSearch,\n abort,\n ]);\n};\n\nexport { useSearchQuery };\n","import { useSharedState } from \"hooks\";\nimport { searchService } from \"services\";\n\nconst useSearchResult = () => {\n return useSharedState(searchService.result$);\n};\n\nexport { useSearchResult };\n","import { useState, useEffect } from \"react\";\nimport { searchService } from \"services\";\n\nconst useSearchStatus = () => {\n const observable = searchService.status$;\n const [state, setState] = useState(observable.value);\n\n useEffect(() => {\n const subscribed = observable.subscribe(setState);\n return () => subscribed.unsubscribe();\n }, [observable]);\n const newSetState = (newState) => observable.next(newState);\n return [state, newSetState];\n};\n\nexport { useSearchStatus };\n","import { useEffect, useState, useCallback } from \"react\";\n\nconst useSharedState = (observable) => {\n const [state, setState] = useState(observable.value);\n\n useEffect(() => {\n const subscribed = observable.subscribe(setState);\n return () => subscribed.unsubscribe();\n }, [observable]);\n const newSetState = useCallback(\n (newState) => observable.next({ ...observable.value, ...newState }),\n [observable]\n );\n return [state, newSetState];\n};\n\nexport { useSharedState };\n","import { useObservable } from \"hooks\";\nimport { detailService } from \"services\";\n\nconst useSearchWeb = () => [\n useObservable(detailService.web$),\n detailService.web,\n];\n\nexport { useSearchWeb };\n","import { useObservable } from \"hooks\";\nimport { detailService } from \"services\";\n\nconst useSearchSimilar = () => [\n useObservable(detailService.similar$),\n detailService.similar,\n];\n\nexport { useSearchSimilar };\n","import { useMemo } from \"react\";\nimport { useObservable } from \"hooks\";\nimport { topicService } from \"services\";\n\nconst useTopic = () => {\n const topics = useObservable(topicService.topics$);\n const current = useObservable(topicService.current$);\n const queries = useObservable(topicService.queries$);\n const actions = useMemo(\n () => ({\n create: topicService.create,\n current: topicService.current,\n fetch: topicService.fetch,\n edit: topicService.edit,\n delete: topicService.delete,\n }),\n []\n );\n return { topics, current, queries, actions };\n};\n\nexport { useTopic };\n","import { useState, useMemo, useEffect } from \"react\";\nimport { fetchWrapper } from \"data/FetchWrapper\";\nimport {\n ResponseType,\n RegExFileExtension,\n ImageFileExtensions,\n} from \"data/Types\";\n\nconst useImagePreview = (response = {}) => {\n const [unique, setUnique] = useState(response.id);\n const [image, setImage] = useState(response.image);\n let isImage = false;\n if (response.responseType === ResponseType.FILE) {\n isImage = ImageFileExtensions.includes(\n RegExFileExtension.exec(response.title)[0]\n );\n }\n // handle row change\n useEffect(() => {\n if (!image && response.responseType === ResponseType.FILE && isImage) {\n fetchWrapper\n .download(`/api/file/${response.id}`)\n .then((image) => setImage(URL.createObjectURL(image)))\n .catch((e) => console.log(e));\n } else if (\n image &&\n response.responseType !== ResponseType.FILE &&\n response.responseType !== ResponseType.GOOGLE\n ) {\n setImage(null);\n }\n return () => {\n URL.revokeObjectURL(image);\n };\n }, [image, response.id, response.responseType, isImage]);\n // handle response change\n useEffect(() => {\n if (\n unique !== response.id &&\n response.responseType === ResponseType.FILE &&\n isImage\n ) {\n fetchWrapper\n .download(`/api/file/${response.id}`)\n .then((image) => {\n setImage(URL.createObjectURL(image));\n setUnique(response.id);\n })\n .catch((e) => console.log(e));\n }\n }, [unique, response.id, response.responseType, isImage]);\n const isLoading = !image && response.responseType === ResponseType.FILE;\n return useMemo(() => [image, isImage, isLoading], [\n image,\n isImage,\n isLoading,\n ]);\n};\nexport { useImagePreview };\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"app\":\"App_app__1kX79\",\"query\":\"App_query__1yIlU\",\"splash\":\"App_splash__2fEdQ\",\"header\":\"App_header__3ZZ1n\",\"nav\":\"App_nav__1_46_\",\"main\":\"App_main__3ZkGI\",\"footer\":\"App_footer__29Fsv\"};","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nconst prefix = (icon) =>\n [\"google\", \"wikipedia-w\", \"microsoft\"].includes(icon) ? \"fab\" : \"fa\";\n\nconst FA = ({ icon, ...props }) => (\n \n);\n\nexport { FA };\n"],"sourceRoot":""}