Loading results...
\n ) : results.length > 0 ? (\n- \n {results.map((item, idx) => (\n
- \n \n {item.title}\n \n \n \n Cache\n \n \n ))}\n
No search results found.
\n )}\n{"ast":null,"code":"var _jsxFileName = \"/home/magh/Documents/landing_page/src/ResultsPage.jsx\",\n _s = $RefreshSig$();\n// ResultsPage.jsx\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, Link } from 'react-router-dom';\nimport './App.css';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction ResultsPage() {\n _s();\n const [results, setResults] = useState([]);\n const [loading, setLoading] = useState(true);\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const query = searchParams.get('q') || '';\n const category = searchParams.get('cat') || 'science';\n const sourceMap = {\n science: 'https://science.tsugutsugugo.com/yacysearch.json',\n sophos: 'https://sophos.tsugutsugugo.com/yacysearch.json',\n tech: 'https://tech.tsugutsugugo.com/yacysearch.json',\n web: 'https://web.tsugutsugugo.com/yacysearch.json'\n };\n useEffect(() => {\n const fetchResults = async () => {\n const resultsPerPage = 10;\n const totalPages = 5;\n let allResults = [];\n for (let page = 0; page < totalPages; page++) {\n var _data$channels, _data$channels$;\n const startRecord = page * resultsPerPage;\n const response = await fetch(`${sourceMap[category]}?query=${encodeURIComponent(query)}&resource=global&urlmaskfilter=.*&prefermaskfilter=&nav=all&maximumRecords=${resultsPerPage}&startRecord=${startRecord}`);\n const data = await response.json();\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 allResults = [...allResults, ...items];\n }\n setResults(allResults);\n setLoading(false);\n };\n fetchResults();\n }, [query, category]);\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"App\",\n children: [/*#__PURE__*/_jsxDEV(\"header\", {\n className: \"header-bar\",\n children: /*#__PURE__*/_jsxDEV(Link, {\n to: \"/\",\n children: /*#__PURE__*/_jsxDEV(\"img\", {\n src: \"/header.png\",\n alt: \"Header\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 48,\n columnNumber: 22\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 48,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 47,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"main\", {\n className: \"main-content\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n id: \"tagline\",\n children: [\"Search Results for \\\\\\\"\", query, \"\\\\\\\"\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 51,\n columnNumber: 9\n }, this), loading ? /*#__PURE__*/_jsxDEV(\"p\", {\n children: \"Loading results...\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 54,\n columnNumber: 11\n }, this) : results.length > 0 ? /*#__PURE__*/_jsxDEV(\"ul\", {\n style: {\n textAlign: 'left',\n marginTop: '20px',\n listStyleType: 'none'\n },\n children: results.map((item, idx) => /*#__PURE__*/_jsxDEV(\"li\", {\n style: {\n marginBottom: '20px'\n },\n children: [/*#__PURE__*/_jsxDEV(\"a\", {\n href: item.link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n style: {\n color: 'blue',\n fontSize: '1.1em',\n textDecoration: 'none',\n fontWeight: 'bold'\n },\n children: item.title\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 59,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n dangerouslySetInnerHTML: {\n __html: item.description\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 62,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"a\", {\n href: `https://web.archive.org/web/*/${item.link}`,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n style: {\n color: '#888',\n fontSize: '0.9em'\n },\n children: \"Cache\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 63,\n columnNumber: 17\n }, this)]\n }, idx, true, {\n fileName: _jsxFileName,\n lineNumber: 58,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 56,\n columnNumber: 11\n }, this) : /*#__PURE__*/_jsxDEV(\"p\", {\n children: \"No search results found.\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 50,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"footer\", {\n className: \"footer\",\n children: [/*#__PURE__*/_jsxDEV(\"a\", {\n href: \"https://git.tsugutsugugo.com/explore/repos\",\n children: \"Source\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 79,\n columnNumber: 9\n }, this), \" |\", ' ', /*#__PURE__*/_jsxDEV(\"a\", {\n href: \"https://docs.tsugutsugugo.com/\",\n children: \"Docs\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 80,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 78,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 46,\n columnNumber: 5\n }, this);\n}\n_s(ResultsPage, \"tisgxuaUHm2G07XYn4AewBafuwY=\", false, function () {\n return [useLocation];\n});\n_c = ResultsPage;\nexport default ResultsPage;\nvar _c;\n$RefreshReg$(_c, \"ResultsPage\");","map":{"version":3,"names":["React","useEffect","useState","useLocation","Link","jsxDEV","_jsxDEV","ResultsPage","_s","results","setResults","loading","setLoading","location","searchParams","URLSearchParams","search","query","get","category","sourceMap","science","sophos","tech","web","fetchResults","resultsPerPage","totalPages","allResults","page","_data$channels","_data$channels$","startRecord","response","fetch","encodeURIComponent","data","json","items","channels","className","children","to","src","alt","fileName","_jsxFileName","lineNumber","columnNumber","id","length","style","textAlign","marginTop","listStyleType","map","item","idx","marginBottom","href","link","target","rel","color","fontSize","textDecoration","fontWeight","title","dangerouslySetInnerHTML","__html","description","_c","$RefreshReg$"],"sources":["/home/magh/Documents/landing_page/src/ResultsPage.jsx"],"sourcesContent":["// ResultsPage.jsx\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, Link } from 'react-router-dom';\nimport './App.css';\n\nfunction ResultsPage() {\n const [results, setResults] = useState([]);\n const [loading, setLoading] = useState(true);\n const location = useLocation();\n\n const searchParams = new URLSearchParams(location.search);\n const query = searchParams.get('q') || '';\n const category = searchParams.get('cat') || 'science';\n\n const sourceMap = {\n science: 'https://science.tsugutsugugo.com/yacysearch.json',\n sophos: 'https://sophos.tsugutsugugo.com/yacysearch.json',\n tech: 'https://tech.tsugutsugugo.com/yacysearch.json',\n web: 'https://web.tsugutsugugo.com/yacysearch.json',\n };\n\n useEffect(() => {\n const fetchResults = async () => {\n const resultsPerPage = 10;\n const totalPages = 5;\n let allResults = [];\n\n for (let page = 0; page < totalPages; page++) {\n const startRecord = page * resultsPerPage;\n const response = await fetch(\n `${sourceMap[category]}?query=${encodeURIComponent(query)}&resource=global&urlmaskfilter=.*&prefermaskfilter=&nav=all&maximumRecords=${resultsPerPage}&startRecord=${startRecord}`\n );\n const data = await response.json();\n const items = data.channels?.[0]?.items || [];\n allResults = [...allResults, ...items];\n }\n\n setResults(allResults);\n setLoading(false);\n };\n\n fetchResults();\n }, [query, category]);\n\n return (\n
Loading results...
\n ) : results.length > 0 ? (\nNo search results found.
\n )}\n