search_interface/node_modules/.cache/babel-loader/48aa27d963b9c7fb60f1c1c816d964c372aa13bbd1da7334a8e9db71c5cdf5c1.json
2025-04-14 09:23:55 +09:00

1 line
42 KiB
JSON

{"ast":null,"code":"var _jsxFileName = \"/home/magh/Documents/landing_page_experimental/src/ResultsPage.jsx\",\n _s = $RefreshSig$();\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, Link } from 'react-router-dom';\nimport './App.css';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nfunction ResultsPage() {\n _s();\n const [results, setResults] = useState([]);\n const [videoResults, setVideoResults] = useState([]);\n const [loading, setLoading] = useState(true);\n const [videoLoading, setVideoLoading] = useState(false);\n // currentPage is relevant primarily for multi-category pagination\n const [currentPage, setCurrentPage] = useState(1);\n const [viewMode, setViewMode] = useState('web'); // \"web\" or \"video\"\n const [visitedLinks, setVisitedLinks] = useState(() => {\n const stored = localStorage.getItem('visitedLinks');\n return stored ? JSON.parse(stored) : [];\n });\n const resultsPerPage = 10;\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n const query = queryParams.get('q') || '';\n\n // --- Categories and primary category ---\n const catParam = queryParams.get('cat') || 'science';\n const categories = catParam.split(',').filter(Boolean);\n const primaryCategory = categories[0] || 'science';\n const numCats = categories.length;\n\n // Check if we have a multi-category search\n const multiCategorySearch = numCats > 1;\n\n // --- Pages per category, as you specified ---\n // 1 category: 9 pages total\n // 2 categories: 4 each (8 total)\n // 3 categories: 3 each (9 total)\n // 4+ categories: 2 each (8 total)\n let pagesPerCat;\n if (!multiCategorySearch) {\n // Single category (only used by aggregator logic, see below)\n pagesPerCat = 9;\n } else {\n if (numCats === 2) {\n pagesPerCat = 4;\n } else if (numCats === 3) {\n pagesPerCat = 3;\n } else {\n pagesPerCat = 2;\n }\n }\n\n // --- For multi-category search, define total pages, fetchCategory, pageForCategory ---\n let totalPagesMulti, fetchCategory, pageForCategory;\n if (multiCategorySearch) {\n totalPagesMulti = numCats * pagesPerCat;\n const categoryIndex = (currentPage - 1) % numCats;\n pageForCategory = Math.floor((currentPage - 1) / numCats) + 1;\n fetchCategory = categories[categoryIndex];\n }\n\n // --- For header, we always use the primary category's style ---\n const headerCategory = primaryCategory;\n\n // --- Source and styling maps (unchanged) ---\n const sourceMap = {\n science: 'https://science.tsugutsugugo.com/yacysearch.json',\n philosophy: 'https://sophos.tsugutsugugo.com/yacysearch.json',\n tech: 'https://tech.tsugutsugugo.com/yacysearch.json',\n discover: 'https://web.tsugutsugugo.com/yacysearch.json'\n };\n const headerMap = {\n science: '/header.png',\n philosophy: '/header_philosophy.png',\n tech: '/header_tech.png',\n discover: '/header_web.png',\n multi: '/header_multi.png'\n };\n const headerBgMap = {\n science: '#f8f8f8',\n philosophy: '#ffffff',\n tech: '#ffffff',\n discover: '#ffffff',\n multi: '#ffffff'\n };\n const appBgMap = {\n science: '#fcfcff',\n philosophy: '#ffffff',\n tech: '#ffffff',\n discover: '#ffffff',\n multi: '#ffffff'\n };\n\n // -------------------- Single-Category UseEffect --------------------\n useEffect(() => {\n // Only runs if we have exactly one category selected.\n if (!multiCategorySearch && viewMode === 'web') {\n const fetchSingleCategory = async () => {\n setLoading(true);\n let allResults = [];\n // Original aggregator logic: 10 pages\n for (let page = 0; page < 10; page++) {\n const startRecord = page * resultsPerPage;\n try {\n const resp = await fetch(`${sourceMap[primaryCategory]}?query=${encodeURIComponent(query)}&resource=global&urlmaskfilter=.*&prefermaskfilter=&nav=all&maximumRecords=${resultsPerPage}&startRecord=${startRecord}`);\n if (resp.ok) {\n var _data$channels$;\n const data = await resp.json();\n allResults = [...allResults, ...(((_data$channels$ = data.channels[0]) === null || _data$channels$ === void 0 ? void 0 : _data$channels$.items) || [])];\n }\n } catch (error) {\n console.error(\"Error fetching single-category results:\", error);\n }\n }\n setResults(allResults);\n setLoading(false);\n };\n fetchSingleCategory();\n }\n }, [multiCategorySearch, viewMode, primaryCategory, query]);\n\n // ------------------- Multi-Category UseEffect -------------------\n useEffect(() => {\n // Only runs if we have multiple categories\n if (multiCategorySearch && viewMode === 'web') {\n const fetchMultiCategory = async () => {\n setLoading(true);\n const startRecord = (pageForCategory - 1) * resultsPerPage;\n try {\n const resp = await fetch(`${sourceMap[fetchCategory]}?query=${encodeURIComponent(query)}&resource=global&urlmaskfilter=.*&prefermaskfilter=&nav=all&maximumRecords=${resultsPerPage}&startRecord=${startRecord}`);\n if (resp.ok) {\n var _data$channels$2;\n const data = await resp.json();\n setResults(((_data$channels$2 = data.channels[0]) === null || _data$channels$2 === void 0 ? void 0 : _data$channels$2.items) || []);\n } else {\n setResults([]);\n }\n } catch (error) {\n console.error(\"Error fetching multi-category results:\", error);\n setResults([]);\n }\n setLoading(false);\n };\n fetchMultiCategory();\n }\n }, [multiCategorySearch, viewMode, query, fetchCategory, pageForCategory, sourceMap, resultsPerPage]);\n\n // ------------------- Video Results Logic (unchanged) -------------------\n const fetchVideoResults = async () => {\n setVideoLoading(true);\n try {\n const resp = await fetch(`https://stream.tsugutsugugo.com/api/v1/videos?search=${encodeURIComponent(query)}`);\n if (!resp.ok) {\n throw new Error(`Video API responded with status ${resp.status}`);\n }\n const data = await resp.json();\n setVideoResults(data.data || []);\n } catch (error) {\n console.error(\"Error fetching video results:\", error);\n } finally {\n setVideoLoading(false);\n }\n };\n\n // ------------------- Pagination Calculation -------------------\n // For single category: computedPages = results.length / resultsPerPage.\n // For multiple categories: totalPages = numCats * pagesPerCat.\n const computedPages = multiCategorySearch ? numCats * pagesPerCat : Math.ceil(results.length / resultsPerPage);\n const paginate = page => setCurrentPage(page);\n\n // Link tracking\n const handleLinkClick = url => {\n setVisitedLinks(prev => {\n if (!prev.includes(url)) {\n const newVisited = [...prev, url];\n localStorage.setItem('visitedLinks', JSON.stringify(newVisited));\n return newVisited;\n }\n return prev;\n });\n };\n return /*#__PURE__*/_jsxDEV(_Fragment, {\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"App results-page\",\n style: {\n backgroundColor: appBgMap[headerCategory]\n },\n children: [/*#__PURE__*/_jsxDEV(\"header\", {\n className: \"header-bar\",\n style: {\n backgroundColor: headerBgMap[headerCategory]\n },\n children: /*#__PURE__*/_jsxDEV(Link, {\n to: \"/\",\n children: /*#__PURE__*/_jsxDEV(\"img\", {\n src: headerMap[headerCategory],\n alt: `${headerCategory} Header`\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 204,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 203,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 202,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"main\", {\n className: \"main-content\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n id: \"tagline\",\n children: [\"Search Results for \", /*#__PURE__*/_jsxDEV(\"strong\", {\n children: query\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 212,\n columnNumber: 32\n }, this), \",\", \" \", viewMode === \"web\" ? /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"link-switch\",\n onClick: async () => {\n await fetchVideoResults();\n setViewMode(\"video\");\n },\n children: \"browse videos\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 214,\n columnNumber: 15\n }, this) : /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"link-switch\",\n onClick: () => setViewMode(\"web\"),\n children: \"browse web results\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 224,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 211,\n columnNumber: 11\n }, this), viewMode === \"web\" ? loading ? /*#__PURE__*/_jsxDEV(\"p\", {\n children: \"Loading results...\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 232,\n columnNumber: 15\n }, this) : results.length > 0 ? /*#__PURE__*/_jsxDEV(_Fragment, {\n children: [/*#__PURE__*/_jsxDEV(\"ul\", {\n className: \"results-list\",\n children: multiCategorySearch ? results.map((item, idx) => /*#__PURE__*/_jsxDEV(\"li\", {\n className: \"result-item\",\n children: [/*#__PURE__*/_jsxDEV(\"a\", {\n href: item.link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n onClick: () => handleLinkClick(item.link),\n className: `result-title ${visitedLinks.includes(item.link) ? \"visited-link\" : \"\"}`,\n children: item.title\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 246,\n columnNumber: 27\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n dangerouslySetInnerHTML: {\n __html: item.description\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 257,\n columnNumber: 27\n }, this), /*#__PURE__*/_jsxDEV(\"a\", {\n href: `https://web.archive.org/web/*/${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: 258,\n columnNumber: 27\n }, this)]\n }, idx, true, {\n fileName: _jsxFileName,\n lineNumber: 245,\n columnNumber: 25\n }, this)) :\n // Single category: slice the aggregated array based on currentPage\n results.slice(window.innerWidth < 600 ? 0 : (currentPage - 1) * resultsPerPage, window.innerWidth < 600 ? results.length : currentPage * resultsPerPage).map((item, idx) => /*#__PURE__*/_jsxDEV(\"li\", {\n className: \"result-item\",\n children: [/*#__PURE__*/_jsxDEV(\"a\", {\n href: item.link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n onClick: () => handleLinkClick(item.link),\n className: `result-title ${visitedLinks.includes(item.link) ? \"visited-link\" : \"\"}`,\n children: item.title\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 280,\n columnNumber: 29\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n dangerouslySetInnerHTML: {\n __html: item.description\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 291,\n columnNumber: 29\n }, this), /*#__PURE__*/_jsxDEV(\"a\", {\n href: `https://web.archive.org/web/*/${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: 292,\n columnNumber: 29\n }, this)]\n }, idx, true, {\n fileName: _jsxFileName,\n lineNumber: 279,\n columnNumber: 27\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 235,\n columnNumber: 17\n }, this), window.innerWidth >= 600 && computedPages > 1 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"pagination\",\n children: [...Array(computedPages)].map((_, idx) => /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => paginate(idx + 1),\n className: `page-btn ${currentPage === idx + 1 ? \"active-page\" : \"\"}`,\n children: idx + 1\n }, idx, false, {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 23\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 306,\n columnNumber: 19\n }, this)]\n }, void 0, true) : /*#__PURE__*/_jsxDEV(\"p\", {\n children: \"No search results found.\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 320,\n columnNumber: 15\n }, this) : videoLoading ? /*#__PURE__*/_jsxDEV(\"p\", {\n children: \"Loading videos...\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 323,\n columnNumber: 13\n }, this) : videoResults && videoResults.length > 0 ? /*#__PURE__*/_jsxDEV(\"ul\", {\n className: \"results-list\",\n children: videoResults.map((video, idx) => /*#__PURE__*/_jsxDEV(\"li\", {\n className: \"result-item\",\n children: [/*#__PURE__*/_jsxDEV(\"a\", {\n href: video.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"result-title\",\n children: video.name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 328,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n dangerouslySetInnerHTML: {\n __html: video.description\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 336,\n columnNumber: 19\n }, this)]\n }, idx, true, {\n fileName: _jsxFileName,\n lineNumber: 327,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 325,\n columnNumber: 13\n }, this) : /*#__PURE__*/_jsxDEV(\"p\", {\n children: \"No video results found.\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 341,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 210,\n columnNumber: 9\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: 345,\n columnNumber: 11\n }, this), \" |\", \" \", /*#__PURE__*/_jsxDEV(\"a\", {\n href: \"https://docs.tsugutsugugo.com/\",\n children: \"Docs\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 346,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 344,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 201,\n columnNumber: 7\n }, this)\n }, void 0, false);\n}\n_s(ResultsPage, \"1aCip1yMdnkfUzc47KAN4YDP8UQ=\", 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","Fragment","_Fragment","ResultsPage","_s","results","setResults","videoResults","setVideoResults","loading","setLoading","videoLoading","setVideoLoading","currentPage","setCurrentPage","viewMode","setViewMode","visitedLinks","setVisitedLinks","stored","localStorage","getItem","JSON","parse","resultsPerPage","location","queryParams","URLSearchParams","search","query","get","catParam","categories","split","filter","Boolean","primaryCategory","numCats","length","multiCategorySearch","pagesPerCat","totalPagesMulti","fetchCategory","pageForCategory","categoryIndex","Math","floor","headerCategory","sourceMap","science","philosophy","tech","discover","headerMap","multi","headerBgMap","appBgMap","fetchSingleCategory","allResults","page","startRecord","resp","fetch","encodeURIComponent","ok","_data$channels$","data","json","channels","items","error","console","fetchMultiCategory","_data$channels$2","fetchVideoResults","Error","status","computedPages","ceil","paginate","handleLinkClick","url","prev","includes","newVisited","setItem","stringify","children","className","style","backgroundColor","to","src","alt","fileName","_jsxFileName","lineNumber","columnNumber","id","onClick","map","item","idx","href","link","target","rel","title","dangerouslySetInnerHTML","__html","description","slice","window","innerWidth","Array","_","video","name","_c","$RefreshReg$"],"sources":["/home/magh/Documents/landing_page_experimental/src/ResultsPage.jsx"],"sourcesContent":["import 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 [videoResults, setVideoResults] = useState([]);\n const [loading, setLoading] = useState(true);\n const [videoLoading, setVideoLoading] = useState(false);\n // currentPage is relevant primarily for multi-category pagination\n const [currentPage, setCurrentPage] = useState(1);\n const [viewMode, setViewMode] = useState('web'); // \"web\" or \"video\"\n const [visitedLinks, setVisitedLinks] = useState(() => {\n const stored = localStorage.getItem('visitedLinks');\n return stored ? JSON.parse(stored) : [];\n });\n const resultsPerPage = 10;\n\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n const query = queryParams.get('q') || '';\n\n // --- Categories and primary category ---\n const catParam = queryParams.get('cat') || 'science';\n const categories = catParam.split(',').filter(Boolean);\n const primaryCategory = categories[0] || 'science';\n const numCats = categories.length;\n\n // Check if we have a multi-category search\n const multiCategorySearch = numCats > 1;\n\n // --- Pages per category, as you specified ---\n // 1 category: 9 pages total\n // 2 categories: 4 each (8 total)\n // 3 categories: 3 each (9 total)\n // 4+ categories: 2 each (8 total)\n let pagesPerCat;\n if (!multiCategorySearch) {\n // Single category (only used by aggregator logic, see below)\n pagesPerCat = 9;\n } else {\n if (numCats === 2) {\n pagesPerCat = 4;\n } else if (numCats === 3) {\n pagesPerCat = 3;\n } else {\n pagesPerCat = 2;\n }\n }\n\n // --- For multi-category search, define total pages, fetchCategory, pageForCategory ---\n let totalPagesMulti, fetchCategory, pageForCategory;\n if (multiCategorySearch) {\n totalPagesMulti = numCats * pagesPerCat;\n const categoryIndex = (currentPage - 1) % numCats;\n pageForCategory = Math.floor((currentPage - 1) / numCats) + 1;\n fetchCategory = categories[categoryIndex];\n }\n\n // --- For header, we always use the primary category's style ---\n const headerCategory = primaryCategory;\n\n // --- Source and styling maps (unchanged) ---\n const sourceMap = {\n science: 'https://science.tsugutsugugo.com/yacysearch.json',\n philosophy: 'https://sophos.tsugutsugugo.com/yacysearch.json',\n tech: 'https://tech.tsugutsugugo.com/yacysearch.json',\n discover: 'https://web.tsugutsugugo.com/yacysearch.json',\n };\n\n const headerMap = {\n science: '/header.png',\n philosophy: '/header_philosophy.png',\n tech: '/header_tech.png',\n discover: '/header_web.png',\n multi: '/header_multi.png',\n };\n\n const headerBgMap = {\n science: '#f8f8f8',\n philosophy: '#ffffff',\n tech: '#ffffff',\n discover: '#ffffff',\n multi: '#ffffff',\n };\n\n const appBgMap = {\n science: '#fcfcff',\n philosophy: '#ffffff',\n tech: '#ffffff',\n discover: '#ffffff',\n multi: '#ffffff',\n };\n\n // -------------------- Single-Category UseEffect --------------------\n useEffect(() => {\n // Only runs if we have exactly one category selected.\n if (!multiCategorySearch && viewMode === 'web') {\n const fetchSingleCategory = async () => {\n setLoading(true);\n let allResults = [];\n // Original aggregator logic: 10 pages\n for (let page = 0; page < 10; page++) {\n const startRecord = page * resultsPerPage;\n try {\n const resp = await fetch(\n `${sourceMap[primaryCategory]}?query=${encodeURIComponent(query)}&resource=global&urlmaskfilter=.*&prefermaskfilter=&nav=all&maximumRecords=${resultsPerPage}&startRecord=${startRecord}`\n );\n if (resp.ok) {\n const data = await resp.json();\n allResults = [...allResults, ...(data.channels[0]?.items || [])];\n }\n } catch (error) {\n console.error(\"Error fetching single-category results:\", error);\n }\n }\n setResults(allResults);\n setLoading(false);\n };\n fetchSingleCategory();\n }\n }, [multiCategorySearch, viewMode, primaryCategory, query]);\n\n // ------------------- Multi-Category UseEffect -------------------\n useEffect(() => {\n // Only runs if we have multiple categories\n if (multiCategorySearch && viewMode === 'web') {\n const fetchMultiCategory = async () => {\n setLoading(true);\n const startRecord = (pageForCategory - 1) * resultsPerPage;\n try {\n const resp = await fetch(\n `${sourceMap[fetchCategory]}?query=${encodeURIComponent(query)}&resource=global&urlmaskfilter=.*&prefermaskfilter=&nav=all&maximumRecords=${resultsPerPage}&startRecord=${startRecord}`\n );\n if (resp.ok) {\n const data = await resp.json();\n setResults(data.channels[0]?.items || []);\n } else {\n setResults([]);\n }\n } catch (error) {\n console.error(\"Error fetching multi-category results:\", error);\n setResults([]);\n }\n setLoading(false);\n };\n fetchMultiCategory();\n }\n }, [\n multiCategorySearch,\n viewMode,\n query,\n fetchCategory,\n pageForCategory,\n sourceMap,\n resultsPerPage\n ]);\n\n // ------------------- Video Results Logic (unchanged) -------------------\n const fetchVideoResults = async () => {\n setVideoLoading(true);\n try {\n const resp = await fetch(\n `https://stream.tsugutsugugo.com/api/v1/videos?search=${encodeURIComponent(query)}`\n );\n if (!resp.ok) {\n throw new Error(`Video API responded with status ${resp.status}`);\n }\n const data = await resp.json();\n setVideoResults(data.data || []);\n } catch (error) {\n console.error(\"Error fetching video results:\", error);\n } finally {\n setVideoLoading(false);\n }\n };\n\n // ------------------- Pagination Calculation -------------------\n // For single category: computedPages = results.length / resultsPerPage.\n // For multiple categories: totalPages = numCats * pagesPerCat.\n const computedPages = multiCategorySearch\n ? numCats * pagesPerCat\n : Math.ceil(results.length / resultsPerPage);\n\n const paginate = (page) => setCurrentPage(page);\n\n // Link tracking\n const handleLinkClick = (url) => {\n setVisitedLinks((prev) => {\n if (!prev.includes(url)) {\n const newVisited = [...prev, url];\n localStorage.setItem('visitedLinks', JSON.stringify(newVisited));\n return newVisited;\n }\n return prev;\n });\n };\n\n return (\n <>\n <div className=\"App results-page\" style={{ backgroundColor: appBgMap[headerCategory] }}>\n <header className=\"header-bar\" style={{ backgroundColor: headerBgMap[headerCategory] }}>\n <Link to=\"/\">\n <img\n src={headerMap[headerCategory]}\n alt={`${headerCategory} Header`}\n />\n </Link>\n </header>\n <main className=\"main-content\">\n <div id=\"tagline\">\n Search Results for <strong>{query}</strong>,{\" \"}\n {viewMode === \"web\" ? (\n <span\n className=\"link-switch\"\n onClick={async () => {\n await fetchVideoResults();\n setViewMode(\"video\");\n }}\n >\n browse videos\n </span>\n ) : (\n <span className=\"link-switch\" onClick={() => setViewMode(\"web\")}>\n browse web results\n </span>\n )}\n </div>\n\n {viewMode === \"web\" ? (\n loading ? (\n <p>Loading results...</p>\n ) : results.length > 0 ? (\n <>\n <ul className=\"results-list\">\n {/*\n For single-category, we do normal slicing by currentPage:\n if multiCategorySearch == false, we allow the user to page\n through the aggregated results.\n If multiCategorySearch == true, we are already fetching *only*\n the results for the relevant page, so we display them all.\n */}\n {multiCategorySearch\n ? results.map((item, idx) => (\n <li key={idx} className=\"result-item\">\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => handleLinkClick(item.link)}\n className={`result-title ${\n visitedLinks.includes(item.link) ? \"visited-link\" : \"\"\n }`}\n >\n {item.title}\n </a>\n <p dangerouslySetInnerHTML={{ __html: item.description }} />\n <a\n href={`https://web.archive.org/web/*/${item.link}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cache-link\"\n >\n Cache\n </a>\n </li>\n ))\n : // Single category: slice the aggregated array based on currentPage\n results\n .slice(\n window.innerWidth < 600\n ? 0\n : (currentPage - 1) * resultsPerPage,\n window.innerWidth < 600\n ? results.length\n : currentPage * resultsPerPage\n )\n .map((item, idx) => (\n <li key={idx} className=\"result-item\">\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => handleLinkClick(item.link)}\n className={`result-title ${\n visitedLinks.includes(item.link) ? \"visited-link\" : \"\"\n }`}\n >\n {item.title}\n </a>\n <p dangerouslySetInnerHTML={{ __html: item.description }} />\n <a\n href={`https://web.archive.org/web/*/${item.link}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cache-link\"\n >\n Cache\n </a>\n </li>\n ))}\n </ul>\n\n {/* Pagination */}\n {window.innerWidth >= 600 && computedPages > 1 && (\n <div className=\"pagination\">\n {[...Array(computedPages)].map((_, idx) => (\n <button\n key={idx}\n onClick={() => paginate(idx + 1)}\n className={`page-btn ${currentPage === idx + 1 ? \"active-page\" : \"\"}`}\n >\n {idx + 1}\n </button>\n ))}\n </div>\n )}\n </>\n ) : (\n <p>No search results found.</p>\n )\n ) : videoLoading ? (\n <p>Loading videos...</p>\n ) : videoResults && videoResults.length > 0 ? (\n <ul className=\"results-list\">\n {videoResults.map((video, idx) => (\n <li key={idx} className=\"result-item\">\n <a\n href={video.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"result-title\"\n >\n {video.name}\n </a>\n <p dangerouslySetInnerHTML={{ __html: video.description }} />\n </li>\n ))}\n </ul>\n ) : (\n <p>No video results found.</p>\n )}\n </main>\n <footer className=\"footer\">\n <a href=\"https://git.tsugutsugugo.com/explore/repos\">Source</a> |{\" \"}\n <a href=\"https://docs.tsugutsugugo.com/\">Docs</a>\n </footer>\n </div>\n </>\n );\n}\n\nexport default ResultsPage;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}