
{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\ikhba\\\\OneDrive\\\\Documents\\\\CIS3308\\\\landing_page\\\\src\\\\App.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport './App.css';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction App() {\n _s();\n const [query, setQuery] = useState('');\n const [category, setCategory] = useState('science');\n const [suggestion, setSuggestion] = useState(null);\n useEffect(() => {\n const timer = setTimeout(() => {\n if (query.length > 3) {\n checkGrammar(query);\n } else {\n setSuggestion(null);\n }\n }, 500);\n return () => clearTimeout(timer);\n }, [query]);\n const checkGrammar = async text => {\n try {\n const response = await fetch(\"https://api.languagetool.org/v2/check\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n },\n body: new URLSearchParams({\n text: text,\n language: \"en-US\"\n })\n });\n const data = await response.json();\n if (data.matches.length > 0) {\n var _data$matches$0$repla;\n const suggestion = (_data$matches$0$repla = data.matches[0].replacements[0]) === null || _data$matches$0$repla === void 0 ? void 0 : _data$matches$0$repla.value;\n if (suggestion) {\n setSuggestion(suggestion);\n } else {\n setSuggestion(null);\n }\n } else {\n setSuggestion(null);\n }\n } catch (error) {\n console.error('Grammar check failed:', error);\n setSuggestion(null);\n }\n };\n const applyCorrection = () => {\n if (suggestion) {\n setQuery(suggestion);\n setSuggestion(null);\n }\n };\n const handleSubmit = e => {\n e.preventDefault();\n let actionUrl = '';\n switch (category) {\n case 'science':\n actionUrl = 'https://science.tsugutsugugo.com/yacysearch.html?query=';\n break;\n case 'philosophy':\n actionUrl = 'https://sophos.tsugutsugugo.com/yacysearch.html?query=';\n break;\n case 'tech':\n actionUrl = 'https://tech.tsugutsugugo.com/yacysearch.html?query=';\n break;\n case 'discover':\n actionUrl = 'https://web.tsugutsugugo.com/yacysearch.html?query=';\n break;\n default:\n actionUrl = 'https://science.tsugutsugugo.com/yacysearch.html?query=';\n }\n // navigation woes\n window.location.href = `${actionUrl}${encodeURIComponent(query)}`;\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"App\",\n children: [/*#__PURE__*/_jsxDEV(\"header\", {\n className: \"header-bar\",\n children: /*#__PURE__*/_jsxDEV(\"img\", {\n src: \"header.png\",\n alt: \"Header\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 79,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 78,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"main\", {\n className: \"main-content\",\n children: [/*#__PURE__*/_jsxDEV(\"img\", {\n id: \"mascot-img\",\n src: \"main.png\",\n alt: \"Mascot\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 82,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n id: \"tagline\",\n children: \"a search engine for the rest of us\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 83,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n className: \"search-form\",\n onSubmit: handleSubmit,\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"search-container\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n name: \"search\",\n placeholder: \"Search...\",\n value: query,\n onChange: e => setQuery(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 86,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n children: \"Search\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 93,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 85,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"radio-options\",\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n htmlFor: \"science\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"radio\",\n name: \"category\",\n id: \"science\",\n value: \"science\",\n checked: category === 'science',\n onChange: e => setCategory(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 97,\n columnNumber: 15\n }, this), \"Science\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 96,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n htmlFor: \"philosophy\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"radio\",\n name: \"category\",\n id: \"philosophy\",\n value: \"philosophy\",\n checked: category === 'philosophy',\n onChange: e => setCategory(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 108,\n columnNumber: 15\n }, this), \"Philosophy\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 107,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n htmlFor: \"tech\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"radio\",\n name: \"category\",\n id: \"tech\",\n value: \"tech\",\n checked: category === 'tech',\n onChange: e => setCategory(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 119,\n columnNumber: 15\n }, this), \"Tech\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 118,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n htmlFor: \"discover\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"radio\",\n name: \"category\",\n id: \"discover\",\n value: \"discover\",\n checked: category === 'discover',\n onChange: e => setCategory(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 130,\n columnNumber: 15\n }, this), \"Discover the Web\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 95,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 84,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 81,\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: 144,\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: 145,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 143,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 77,\n columnNumber: 5\n }, this);\n}\n_s(App, \"2w3OduaKLteGWhxfCErMfSWNALM=\");\n_c = App;\nexport default App;\nvar _c;\n$RefreshReg$(_c, \"App\");","map":{"version":3,"names":["React","useState","useEffect","jsxDEV","_jsxDEV","App","_s","query","setQuery","category","setCategory","suggestion","setSuggestion","timer","setTimeout","length","checkGrammar","clearTimeout","text","response","fetch","method","headers","body","URLSearchParams","language","data","json","matches","_data$matches$0$repla","replacements","value","error","console","applyCorrection","handleSubmit","e","preventDefault","actionUrl","window","location","href","encodeURIComponent","className","children","src","alt","fileName","_jsxFileName","lineNumber","columnNumber","id","onSubmit","type","name","placeholder","onChange","target","htmlFor","checked","_c","$RefreshReg$"],"sources":["C:/Users/ikhba/OneDrive/Documents/CIS3308/landing_page/src/App.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\r\nimport './App.css';\r\n\r\nfunction App() {\r\n const [query, setQuery] = useState('');\r\n const [category, setCategory] = useState('science');\r\n const [suggestion, setSuggestion] = useState(null);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n if (query.length > 3) {\r\n checkGrammar(query);\r\n } else {\r\n setSuggestion(null);\r\n }\r\n }, 500);\r\n\r\n return () => clearTimeout(timer);\r\n }, [query]);\r\n\r\n const checkGrammar = async (text) => {\r\n try {\r\n const response = await fetch(\"https://api.languagetool.org/v2/check\", {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\r\n body: new URLSearchParams({ text: text, language: \"en-US\" })\r\n });\r\n\r\n const data = await response.json();\r\n if (data.matches.length > 0) {\r\n const suggestion = data.matches[0].replacements[0]?.value;\r\n if (suggestion) {\r\n setSuggestion(suggestion);\r\n } else {\r\n setSuggestion(null);\r\n }\r\n } else {\r\n setSuggestion(null);\r\n }\r\n } catch (error) {\r\n console.error('Grammar check failed:', error);\r\n setSuggestion(null);\r\n }\r\n };\r\n\r\n const applyCorrection = () => {\r\n if (suggestion) {\r\n setQuery(suggestion);\r\n setSuggestion(null);\r\n }\r\n };\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n let actionUrl = '';\r\n switch (category) {\r\n case 'science':\r\n actionUrl = 'https://science.tsugutsugugo.com/yacysearch.html?query=';\r\n break;\r\n case 'philosophy':\r\n actionUrl = 'https://sophos.tsugutsugugo.com/yacysearch.html?query=';\r\n break;\r\n case 'tech':\r\n actionUrl = 'https://tech.tsugutsugugo.com/yacysearch.html?query=';\r\n break;\r\n case 'discover':\r\n actionUrl = 'https://web.tsugutsugugo.com/yacysearch.html?query=';\r\n break;\r\n default:\r\n actionUrl = 'https://science.tsugutsugugo.com/yacysearch.html?query=';\r\n }\r\n // navigation woes\r\n window.location.href = `${actionUrl}${encodeURIComponent(query)}`;\r\n };\r\n \r\n\r\n return (\r\n