{"ast":null,"code":"var _jsxFileName = \"/home/magh/Documents/landing_page/src/ResultsPage.js\",\n _s = $RefreshSig$();\nimport React, { useEffect, useState } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction ResultsPage() {\n _s();\n const location = useLocation();\n const navigate = useNavigate();\n\n // Retrieve the state passed via react-router (search query and category)\n const {\n query,\n category\n } = location.state || {};\n const [results, setResults] = useState([]);\n useEffect(() => {\n // If no query or category in state (e.g. user directly navigated), we can early-return or handle it\n if (!query || !category) return;\n\n // Define the base API URL for each category\n const baseUrlMap = {\n science: \"https://science.tsugutsugugo.com/yacysearch.json\",\n philosophy: \"https://philosophy.tsugutsugugo.com/yacysearch.json\",\n tech: \"https://tech.tsugutsugugo.com/yacysearch.json\",\n // add other categories mapping as needed, or a default:\n default: \"https://tsugutsugugo.com/yacysearch.json\"\n };\n const baseUrl = baseUrlMap[category] || baseUrlMap.default;\n\n // Build the full API URL with the query. We request JSON results.\n const apiUrl = `${baseUrl}?query=${encodeURIComponent(query)}&maximumRecords=10`;\n\n // Fetch search results from the YaCy API\n const fetchResults = async () => {\n try {\n var _data$channels, _data$channels$;\n const response = await fetch(apiUrl);\n const data = await response.json();\n // YaCy returns results in data.channels[0].items (OpenSearch format)\n const items = ((_data$channels = data.channels) === null || _data$channels === void 0 ? void 0 : (_data$channels$ = _data$channels[0]) === null || _data$channels$ === void 0 ? void 0 : _data$channels$.items) || [];\n setResults(items);\n } catch (error) {\n console.error(\"Error fetching search results:\", error);\n }\n };\n fetchResults();\n }, [query, category]);\n\n // If the page is accessed without state (e.g., direct link or refresh), handle gracefully\n if (!query || !category) {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n children: \"No search query provided.\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 50,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate(\"/\"),\n children: \"Go to Search\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 51,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 49,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: `results-page ${category}-theme`,\n children: [/*#__PURE__*/_jsxDEV(\"header\", {\n className: \"results-header\",\n children: [/*#__PURE__*/_jsxDEV(\"img\", {\n src: `/assets/mascot-${category}.png`,\n alt: `${category} mascot`,\n className: \"mascot-img\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 61,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"h2\", {\n children: [category.charAt(0).toUpperCase() + category.slice(1), \" Search Results for \\\"\", query, \"\\\"\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 66,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 59,\n columnNumber: 7\n }, this), results.length === 0 ? /*#__PURE__*/_jsxDEV(\"p\", {\n children: /*#__PURE__*/_jsxDEV(\"em\", {\n children: [\"No results found for \\\"\", query, \"\\\".\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 71,\n columnNumber: 12\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 71,\n columnNumber: 9\n }, this) : /*#__PURE__*/_jsxDEV(\"ul\", {\n className: \"results-list\",\n children: results.map(item => /*#__PURE__*/_jsxDEV(\"li\", {\n className: \"result-item\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n children: /*#__PURE__*/_jsxDEV(\"a\", {\n href: item.link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: item.title\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 78,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 77,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n children: item.description\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 83,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"a\", {\n href: `https://web.archive.org/web/*/${encodeURIComponent(item.link)}`,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"cache-link\",\n children: \"Cache\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 85,\n columnNumber: 15\n }, this)]\n }, item.link, true, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate(-1),\n className: \"back-button\",\n children: \"\\u2190 Back to Search\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 99,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 57,\n columnNumber: 5\n }, this);\n}\n_s(ResultsPage, \"e5p5/A0NSunLoRfs+Y0D+FxZ4Bo=\", false, function () {\n return [useLocation, useNavigate];\n});\n_c = ResultsPage;\nexport default ResultsPage;\nvar _c;\n$RefreshReg$(_c, \"ResultsPage\");","map":{"version":3,"names":["React","useEffect","useState","useLocation","useNavigate","jsxDEV","_jsxDEV","ResultsPage","_s","location","navigate","query","category","state","results","setResults","baseUrlMap","science","philosophy","tech","default","baseUrl","apiUrl","encodeURIComponent","fetchResults","_data$channels","_data$channels$","response","fetch","data","json","items","channels","error","console","children","fileName","_jsxFileName","lineNumber","columnNumber","onClick","className","src","alt","charAt","toUpperCase","slice","length","map","item","href","link","target","rel","title","description","_c","$RefreshReg$"],"sources":["/home/magh/Documents/landing_page/src/ResultsPage.js"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\n\nfunction ResultsPage() {\n const location = useLocation();\n const navigate = useNavigate();\n\n // Retrieve the state passed via react-router (search query and category)\n const { query, category } = location.state || {};\n\n const [results, setResults] = useState([]);\n\n useEffect(() => {\n // If no query or category in state (e.g. user directly navigated), we can early-return or handle it\n if (!query || !category) return;\n\n // Define the base API URL for each category\n const baseUrlMap = {\n science: \"https://science.tsugutsugugo.com/yacysearch.json\",\n philosophy: \"https://philosophy.tsugutsugugo.com/yacysearch.json\",\n tech: \"https://tech.tsugutsugugo.com/yacysearch.json\",\n // add other categories mapping as needed, or a default:\n default: \"https://tsugutsugugo.com/yacysearch.json\"\n };\n const baseUrl = baseUrlMap[category] || baseUrlMap.default;\n\n // Build the full API URL with the query. We request JSON results.\n const apiUrl = `${baseUrl}?query=${encodeURIComponent(query)}&maximumRecords=10`;\n\n // Fetch search results from the YaCy API\n const fetchResults = async () => {\n try {\n const response = await fetch(apiUrl);\n const data = await response.json();\n // YaCy returns results in data.channels[0].items (OpenSearch format)\n const items = data.channels?.[0]?.items || [];\n setResults(items);\n } catch (error) {\n console.error(\"Error fetching search results:\", error);\n }\n };\n\n fetchResults();\n }, [query, category]);\n\n // If the page is accessed without state (e.g., direct link or refresh), handle gracefully\n if (!query || !category) {\n return (\n
No results found for \"{query}\".
\n ) : (\n{item.description}
\n {/* \"Cache\" link pointing to Internet Archive (Wayback Machine) for the item */}\n \n Cache\n \n