1 line
67 KiB
JSON
1 line
67 KiB
JSON
{"ast":null,"code":"var _jsxFileName = \"/home/seanedmunds/dev/home-page/src/index.js\",\n _s = $RefreshSig$();\n\nimport React from 'react';\nimport { useState, useEffect } from 'react';\nimport ReactDOM from 'react-dom'; //import { unstable_createPortal } from 'react-dom';\n\nimport './index.css';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\n\nfunction Homepage() {\n return /*#__PURE__*/_jsxDEV(\"main\", {\n id: \"container\",\n className: \"fade\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(Search, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 11,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 10,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(Header, {\n date: date(),\n greet: greet()\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 14,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 13,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(Applications, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 20,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 19,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(Bookmarks, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 23,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 22,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(ModalMenu, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 26,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 25,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(ModalInit, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 29,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 28,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 9,\n columnNumber: 5\n }, this);\n}\n\n_c = Homepage;\n\nfunction Search() {\n return /*#__PURE__*/_jsxDEV(\"section\", {\n id: \"search\",\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"abackground\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n name: \"keywords\",\n type: \"text\",\n className: \"keyword\",\n id: \"keywords\",\n size: \"50\",\n spellCheck: \"true\",\n placeholder: \"\"\n /*onFocus={this.placeholder = \"\"} onBlur={this.placeholder = ''}*/\n ,\n autoComplete: \"off\",\n autoFocus: true,\n onKeyUp: handleKeyPress\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 39,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n id: \"searchType\",\n className: \"Input-label\",\n children: \"Google search\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 40,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 38,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 37,\n columnNumber: 5\n }, this);\n}\n\n_c2 = Search;\n\nfunction Header(props) {\n return /*#__PURE__*/_jsxDEV(\"section\", {\n id: \"header\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n id: \"greeting_block\",\n children: /*#__PURE__*/_jsxDEV(\"h1\", {\n id: \"header_greet\",\n children: props.greet\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 50,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 49,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n id: \"date_block\",\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n id: \"header_date\",\n children: props.date\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 53,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Clock, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 54,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 52,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 48,\n columnNumber: 5\n }, this);\n}\n\n_c3 = Header;\n\nfunction Applications() {\n let appList = getApps();\n var items = [];\n\n for (var i = 0; i < appList.apps.length; i++) {\n items.push( /*#__PURE__*/_jsxDEV(App, {\n name: appList.apps[i].name,\n url: appList.apps[i].url,\n icon: appList.apps[i].icon,\n NSFW: appList.apps[i].NSFW\n }, i, false, {\n fileName: _jsxFileName,\n lineNumber: 65,\n columnNumber: 7\n }, this));\n }\n\n return /*#__PURE__*/_jsxDEV(\"section\", {\n id: \"apps\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n children: \"Applications\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 76,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n id: \"apps_loop\",\n children: items\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 77,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 5\n }, this);\n}\n\n_c4 = Applications;\n\nfunction App(props) {\n let classNameType = props.NSFW + \"-content\";\n let hrefUrl = \"https://\" + props.url;\n let iconName = \"mdi-\" + props.icon;\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(\"a\", {\n href: hrefUrl,\n className: classNameType,\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"apps_item\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"apps_icon\",\n children: /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"iconify icon\",\n \"data-icon\": iconName\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 93,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 92,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"apps_text\",\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n id: \"app-name\",\n children: props.name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 96,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n id: \"app-address\",\n children: props.url\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 97,\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: 91,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 90,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 89,\n columnNumber: 5\n }, this);\n}\n\n_c5 = App;\n\nfunction Bookmarks() {\n let bookmarkList = getLinks();\n var items = [];\n\n for (var i = 0; i < bookmarkList.bookmarks.length; i++) {\n items.push( /*#__PURE__*/_jsxDEV(LinkGroups, {\n category: bookmarkList.bookmarks[i].category,\n links: bookmarkList.bookmarks[i].links\n }, i, false, {\n fileName: _jsxFileName,\n lineNumber: 110,\n columnNumber: 7\n }, this));\n }\n\n return /*#__PURE__*/_jsxDEV(\"section\", {\n id: \"links\",\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n children: \"Bookmarks\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 119,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n id: \"links_loop\",\n children: items\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 120,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 118,\n columnNumber: 5\n }, this);\n}\n\n_c6 = Bookmarks;\n\nfunction LinkGroups(props) {\n var items = [];\n\n for (var i = 0; i < props.links.length; i++) {\n items.push( /*#__PURE__*/_jsxDEV(LinkItem, {\n link: props.links[i]\n }, i, false, {\n fileName: _jsxFileName,\n lineNumber: 131,\n columnNumber: 7\n }, this));\n }\n\n return /*#__PURE__*/_jsxDEV(\"div\", {\n id: \"links_item\",\n children: [/*#__PURE__*/_jsxDEV(\"h4\", {\n children: props.category\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 139,\n columnNumber: 7\n }, this), items]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 138,\n columnNumber: 5\n }, this);\n}\n\n_c7 = LinkGroups;\n\nfunction LinkItem(props) {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(\"a\", {\n href: props.link.url,\n className: \"theme_color-border theme_text-select\",\n children: props.link.name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 148,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 147,\n columnNumber: 5\n }, this);\n}\n\n_c8 = LinkItem;\n\nfunction ModalMenu() {\n var providers = getProviders();\n var items = [];\n\n for (var i = 0; i < providers.providers.length; i++) {\n items.push( /*#__PURE__*/_jsxDEV(Provider, {\n provider: providers.providers[i]\n }, i, false, {\n fileName: _jsxFileName,\n lineNumber: 158,\n columnNumber: 7\n }, this));\n }\n\n return /*#__PURE__*/_jsxDEV(\"section\", {\n id: \"modal\",\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"header\", {\n id: \"modal-header\",\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n children: \"Options\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 168,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"a\", {\n href: \"#\",\n title: \"Close\",\n className: \"modal-close\",\n children: /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"iconify\",\n \"data-icon\": \"mdi-close\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 170,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 169,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 167,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"h2\", {\n children: \"Color themes\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 174,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n id: \"modal-theme\",\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"blackboard\",\n className: \"theme-button theme-blackboard\",\n onClick: updateTheme,\n children: \"Blackboard\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 177,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"gazette\",\n className: \"theme-button theme-gazette\",\n children: \"Gazette\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 178,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"espresso\",\n className: \"theme-button theme-espresso\",\n children: \"Espresso\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 179,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"cab\",\n className: \"theme-button theme-cab\",\n children: \"Cab\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 180,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"cloud\",\n className: \"theme-button theme-cloud\",\n children: \"Cloud\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 181,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"lime\",\n className: \"theme-button theme-lime\",\n children: \"Lime\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 182,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"passion\",\n className: \"theme-button theme-passion\",\n children: \"Passion\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 183,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"blues\",\n className: \"theme-button theme-blues\",\n children: \"Blues\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 184,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"chalk\",\n className: \"theme-button theme-chalk\",\n children: \"Chalk\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 185,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"tron\",\n className: \"theme-button theme-tron\",\n children: \"Tron\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 186,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"paper\",\n className: \"theme-button theme-paper\",\n children: \"Paper\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 187,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"cyberpunk\",\n className: \"theme-button theme-cyberpunk\",\n children: \"Cyberpunk\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 188,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"quadra\",\n className: \"theme-button theme-panam\",\n children: \"Quadra\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 189,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"panam\",\n className: \"theme-button theme-panam\",\n children: \"Panam\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 190,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"touch\",\n className: \"theme-button theme-touch\",\n children: \"Touch\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 191,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n \"data-theme\": \"peek\",\n className: \"theme-button theme-peek\",\n children: \"Peek\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 192,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 176,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"h2\", {\n children: \"Search options\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 196,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"section\", {\n id: \"providers\",\n children: /*#__PURE__*/_jsxDEV(\"table\", {\n children: /*#__PURE__*/_jsxDEV(\"tbody\", {\n children: [/*#__PURE__*/_jsxDEV(\"tr\", {\n children: [/*#__PURE__*/_jsxDEV(\"th\", {\n children: \"Website\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 201,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n children: \"Prefix\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 202,\n columnNumber: 19\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 200,\n columnNumber: 17\n }, this), items]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 199,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 198,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 197,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"header\", {\n id: \"modal-footer\",\n children: [/*#__PURE__*/_jsxDEV(\"a\", {\n href: \"https://github.com/jeroenpardon/\",\n children: /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"iconify\",\n \"data-icon\": \"mdi-github-box\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 210,\n columnNumber: 54\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 210,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"a\", {\n href: \"https://materialdesignicons.com/\",\n children: /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"iconify\",\n \"data-icon\": \"mdi-material-design\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 211,\n columnNumber: 54\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 211,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"sneaky\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"checkbox\",\n id: \"contenttype\",\n onChange: \"nsfw(this)\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 212,\n columnNumber: 35\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n for: \"contenttype\",\n children: /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"iconify\",\n \"data-icon\": \"mdi-domino-mask\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 213,\n columnNumber: 36\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 213,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 212,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 209,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 166,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 165,\n columnNumber: 5\n }, this);\n}\n\n_c9 = ModalMenu;\n\nfunction Provider(props) {\n return /*#__PURE__*/_jsxDEV(\"tr\", {\n children: [/*#__PURE__*/_jsxDEV(\"td\", {\n children: /*#__PURE__*/_jsxDEV(\"a\", {\n href: props.provider.url,\n children: props.provider.name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 223,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 223,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n children: props.provider.prefix\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 224,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 222,\n columnNumber: 5\n }, this);\n}\n\n_c10 = Provider;\n\nfunction ModalInit() {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n id: \"modal_init\",\n children: /*#__PURE__*/_jsxDEV(\"a\", {\n className: \"btn\",\n href: \"#modal\",\n children: /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"iconify icon\",\n \"data-icon\": \"mdi-xbox-controller-menu\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 233,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 232,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 231,\n columnNumber: 5\n }, this);\n}\n\n_c11 = ModalInit;\nReactDOM.render( /*#__PURE__*/_jsxDEV(Homepage, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 240,\n columnNumber: 3\n}, this), document.getElementById('root')); //Functions below this line are for calculating data for\n//other functions\n\nfunction date() {\n let currentDate = new Date();\n let dateOptions = {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\"\n };\n let date = currentDate.toLocaleDateString(\"en-GB\", dateOptions);\n return date;\n}\n\nfunction fixDigits(k) {\n if (k < 10) {\n return \"0\" + k;\n } else {\n return k;\n }\n}\n\nfunction greet() {\n let currentTime = new Date();\n let greet = Math.floor(currentTime.getHours() / 6);\n let easterEggChance = Math.floor(Math.random() * 100);\n\n let greetings = require('./messages.json');\n\n let timeBased = [];\n let easterEggs = [];\n\n for (var i = 0; i < greetings.messages.length; i++) {\n if (greetings.messages[i].easteregg === \"FALSE\") {\n timeBased = timeBased.concat(greetings.messages[i]);\n } else {\n easterEggs = easterEggs.concat(greetings.messages[i]);\n }\n }\n\n if (easterEggChance > 10) {\n return timeBased[greet].message;\n } else {\n let easterEggText = Math.floor(Math.random() * easterEggs.length);\n return easterEggs[easterEggText].message;\n }\n}\n\nfunction Clock() {\n _s();\n\n const [date, setDate] = useState(new Date());\n\n function refreshClock() {\n setDate(new Date());\n }\n\n useEffect(() => {\n const timerId = setInterval(refreshClock, 1000);\n return function cleanup() {\n clearInterval(timerId);\n };\n }, []);\n var hour = date.getHours();\n var minutes = date.getMinutes(); //var seconds = date.getSeconds();\n\n var midday = \"AM\";\n midday = hour >= 12 ? \"PM\" : \"AM\";\n hour = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;\n minutes = fixDigits(minutes); //seconds = fixDigits(seconds);\n\n let time = hour + \":\" + minutes + \" \" + midday;\n return /*#__PURE__*/_jsxDEV(\"h2\", {\n id: \"clock\",\n children: time\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 311,\n columnNumber: 5\n }, this);\n}\n\n_s(Clock, \"Gqi45WOZhU2c0BLYX0HoJeiR0fk=\");\n\n_c12 = Clock;\n\nfunction getApps() {\n let applications = require('./apps.json');\n\n return applications;\n}\n\nfunction getLinks() {\n let links = require('./links.json');\n\n return links;\n}\n\nfunction getProviders() {\n let providers = require('./providers.json');\n\n return providers;\n}\n\nfunction getThemes() {\n let themes = require('./themes.json');\n\n return themes;\n}\n\nfunction updateTheme(e) {\n var themes = getThemes();\n var themeName = e.target.innerHTML.toLowerCase();\n console.log(themes.themes.name);\n}\n\nfunction handleKeyPress(e) {\n var sindex = 0;\n var cycle = false;\n var key = e.keyCode || e.which;\n var text = e.target.value.replaceAll(\"+\", \"%2B\");\n var option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n var subtext = text.substr(2 + option.length);\n\n if (key == 13) {\n // Search functions\n search(text);\n }\n\n if (key == 9) {\n // Tab Completion Functions\n e.preventDefault();\n e.stopPropagation();\n\n if (text[0] === ';') {\n switch (option) {\n case 't':\n var streamers = ['admiralbahroo', 'moonmoon_ow', 'witwix'];\n\n if (!subtext || cycle) {\n cycle = true;\n if (sindex > streamers.length - 1) sindex = 0;\n document.getElementById(\"keywords\").value = ';t ' + streamers[sindex++];\n return;\n }\n\n for (var streamer of streamers) {\n if (subtext === streamer.substr(0, subtext.length)) {\n document.getElementById(\"keywords\").value = ';t ' + streamer;\n return;\n }\n }\n\n break;\n }\n }\n }\n\n if (key == 32) {\n //Space to go to search\n updateLabel(text);\n }\n\n sindex = 0;\n cycle = false;\n updateLabel(text);\n}\n\nfunction updateLabel(text) {\n var option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n\n if (text[0] === '/') {\n // if (text.indexOf(' ') > -1) {\n switch (option) {\n case \"am\":\n document.getElementById(\"searchType\").innerHTML = \"Allmusic search\";\n break;\n\n case \"d\":\n document.getElementById(\"searchType\").innerHTML = \"Duck Duck Go search\";\n break;\n\n case \"di\":\n document.getElementById(\"searchType\").innerHTML = \"Discogs search\";\n break;\n\n case \"i\":\n document.getElementById(\"searchType\").innerHTML = \"IMDB search\";\n break;\n\n case \"m\":\n document.getElementById(\"searchType\").innerHTML = \"TheMovieDB search\";\n break;\n\n case \"r\":\n document.getElementById(\"searchType\").innerHTML = \"Reddit search\";\n break;\n\n case \"q\":\n document.getElementById(\"searchType\").innerHTML = \"Qwant search\";\n break;\n\n case \"so\":\n document.getElementById(\"searchType\").innerHTML = \"Soundcloud search\";\n break;\n\n case \"s\":\n document.getElementById(\"searchType\").innerHTML = \"Spotify search\";\n break;\n\n case \"tv\":\n document.getElementById(\"searchType\").innerHTML = \"TheTVDB search\";\n break;\n\n case \"t\":\n document.getElementById(\"searchType\").innerHTML = \"Trakt search\";\n break;\n\n case \"y\":\n document.getElementById(\"searchType\").innerHTML = \"YouTube search\";\n break;\n\n case \"w\":\n document.getElementById(\"searchType\").innerHTML = \"Wikipedia search\";\n break;\n\n case \"p\":\n document.getElementById(\"searchType\").innerHTML = \"Plex search\";\n break;\n\n case \"rt\":\n document.getElementById(\"searchType\").innerHTML = \"Rotten Tomatoes search\";\n break;\n\n default:\n document.getElementById(\"searchType\").innerHTML = \"Invalid search\";\n break;\n }\n } else {\n document.getElementById(\"searchType\").innerHTML = \"Google search\";\n }\n}\n\nfunction search(text) {\n var option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n var subtext = text.substr(2 + option.length);\n\n if (text[0] === '/') {\n if (text.indexOf(' ') > -1) {\n switch (option) {\n case \"am\":\n window.location = \"https://www.allmusic.com/search/all/\" + subtext;\n break;\n\n case \"d\":\n window.location = \"https://duckduckgo.com/?q=\" + subtext;\n break;\n\n case \"di\":\n window.location = \"https://www.discogs.com/search/?q=\" + subtext;\n break;\n\n case \"i\":\n window.location = \"https://www.imdb.com/find?q=\" + subtext;\n break;\n\n case \"m\":\n window.location = \"https://www.themoviedb.org/search?query=\" + subtext;\n break;\n\n case \"r\":\n window.location = \"https://www.reddit.com/search?q=\" + subtext;\n break;\n\n case \"q\":\n window.location = \"https://www.qwant.com/?q=\" + subtext;\n break;\n\n case \"so\":\n window.location = \"https://soundcloud.com/search?q=\" + subtext;\n break;\n\n case \"s\":\n window.location = \"https://open.spotify.com/search/results/\" + subtext;\n break;\n\n case \"t\":\n window.location = \"https://trakt.tv/search?query=\" + subtext;\n break;\n\n case \"tv\":\n window.location = \"https://www.thetvdb.com/search?query=\" + subtext;\n break;\n\n case \"y\":\n window.location = \"https://www.youtube.com/results?search_query=\" + subtext;\n break;\n\n case \"w\":\n window.location = \"https://en.wikipedia.org/w/index.php?search=\" + subtext;\n break;\n\n case \"p\":\n window.location = \"https://app.plex.tv/desktop/#!/search?query=\" + subtext;\n break;\n\n case \"rt\":\n window.location = \"https://www.rottentomatoes.com/search?search=\" + subtext;\n break;\n }\n } else {\n var option = text.substr(1);\n\n switch (option) {\n case \"d\":\n window.location = \"https://www.duckduckgo.com\";\n break;\n\n case \"y\":\n window.location = \"https://www.youtube.com\";\n break;\n\n case \"r\":\n window.location = \"https://reddit.com\";\n break;\n\n case \"s\":\n window.location = \"https://open.spotify.com\";\n break;\n }\n }\n } else if (validURL(text)) {\n if (containsProtocol(text)) window.location = text;else window.location = \"https://\" + text;\n } else {\n window.location = \"https://www.google.com/search?q=\" + text;\n }\n} // Source: https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n\n\nfunction validURL(str) {\n var pattern = new RegExp('^(https?:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$', 'i'); // fragment locator\n\n return !!pattern.test(str);\n}\n\nfunction containsProtocol(str) {\n var pattern = new RegExp('^(https?:\\\\/\\\\/){1}.*', 'i');\n return !!pattern.test(str);\n}\n\nString.prototype.replaceAll = function (search, replacement) {\n var target = this;\n return target.split(search).join(replacement);\n};\n\nvar _c, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c10, _c11, _c12;\n\n$RefreshReg$(_c, \"Homepage\");\n$RefreshReg$(_c2, \"Search\");\n$RefreshReg$(_c3, \"Header\");\n$RefreshReg$(_c4, \"Applications\");\n$RefreshReg$(_c5, \"App\");\n$RefreshReg$(_c6, \"Bookmarks\");\n$RefreshReg$(_c7, \"LinkGroups\");\n$RefreshReg$(_c8, \"LinkItem\");\n$RefreshReg$(_c9, \"ModalMenu\");\n$RefreshReg$(_c10, \"Provider\");\n$RefreshReg$(_c11, \"ModalInit\");\n$RefreshReg$(_c12, \"Clock\");","map":{"version":3,"sources":["/home/seanedmunds/dev/home-page/src/index.js"],"names":["React","useState","useEffect","ReactDOM","Homepage","date","greet","Search","handleKeyPress","Header","props","Applications","appList","getApps","items","i","apps","length","push","name","url","icon","NSFW","App","classNameType","hrefUrl","iconName","Bookmarks","bookmarkList","getLinks","bookmarks","category","links","LinkGroups","LinkItem","link","ModalMenu","providers","getProviders","updateTheme","Provider","provider","prefix","ModalInit","render","document","getElementById","currentDate","Date","dateOptions","weekday","year","month","day","toLocaleDateString","fixDigits","k","currentTime","Math","floor","getHours","easterEggChance","random","greetings","require","timeBased","easterEggs","messages","easteregg","concat","message","easterEggText","Clock","setDate","refreshClock","timerId","setInterval","cleanup","clearInterval","hour","minutes","getMinutes","midday","time","applications","getThemes","themes","e","themeName","target","innerHTML","toLowerCase","console","log","sindex","cycle","key","keyCode","which","text","value","replaceAll","option","substr","indexOf","subtext","search","preventDefault","stopPropagation","streamers","streamer","updateLabel","window","location","validURL","containsProtocol","str","pattern","RegExp","test","String","prototype","replacement","split","join"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { useState, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\n//import { unstable_createPortal } from 'react-dom';\nimport './index.css';\n\nfunction Homepage() {\n return (\n <main id=\"container\" className=\"fade\">\n <div>\n <Search />\n </div>\n <div>\n <Header\n date={date()}\n greet={greet()}\n />\n </div>\n <div>\n <Applications />\n </div>\n <div>\n <Bookmarks />\n </div>\n <div>\n <ModalMenu />\n </div>\n <div>\n <ModalInit />\n </div>\n </main>\n );\n}\n\nfunction Search() {\n return (\n <section id=\"search\">\n <div className=\"abackground\">\n <input name=\"keywords\" type=\"text\" className=\"keyword\" id=\"keywords\" size=\"50\" spellCheck=\"true\" placeholder=\"\" /*onFocus={this.placeholder = \"\"} onBlur={this.placeholder = ''}*/ autoComplete=\"off\" autoFocus={true} onKeyUp={handleKeyPress}/>\n <label id=\"searchType\" className=\"Input-label\">Google search</label>\n </div>\n </section>\n )\n}\n\nfunction Header(props) {\n return (\n <section id=\"header\">\n <div id=\"greeting_block\">\n <h1 id=\"header_greet\">{props.greet}</h1>\n </div>\n <div id=\"date_block\">\n <h2 id=\"header_date\">{props.date}</h2>\n <Clock />\n </div>\n </section>\n );\n}\n\nfunction Applications() {\n let appList = getApps();\n var items = [];\n for (var i = 0; i < appList.apps.length; i++) {\n items.push(\n <App\n key={i}\n name={appList.apps[i].name}\n url={appList.apps[i].url}\n icon={appList.apps[i].icon}\n NSFW={appList.apps[i].NSFW}\n />\n );\n }\n return (\n <section id=\"apps\">\n <h3>Applications</h3>\n <div id=\"apps_loop\">\n {items}\n </div>\n </section>\n );\n}\n\nfunction App(props) {\n let classNameType = props.NSFW + \"-content\";\n let hrefUrl = \"https://\" + props.url;\n let iconName = \"mdi-\" + props.icon;\n return (\n <div>\n <a href={hrefUrl} className={classNameType}>\n <div className=\"apps_item\">\n <div className=\"apps_icon\">\n <span className=\"iconify icon\" data-icon={iconName}></span>\n </div>\n <div className=\"apps_text\">\n <span id=\"app-name\">{props.name}</span>\n <span id=\"app-address\">{props.url}</span>\n </div>\n </div>\n </a>\n </div>\n );\n}\n\nfunction Bookmarks() {\n let bookmarkList = getLinks();\n var items = [];\n for (var i = 0; i < bookmarkList.bookmarks.length; i++) {\n items.push(\n <LinkGroups\n key={i}\n category={bookmarkList.bookmarks[i].category}\n links={bookmarkList.bookmarks[i].links}\n />\n );\n }\n return (\n <section id=\"links\">\n <h3>Bookmarks</h3>\n <div id=\"links_loop\">\n {items}\n </div>\n </section>\n );\n}\n\nfunction LinkGroups(props) {\n var items = [];\n for (var i = 0; i < props.links.length; i++) {\n items.push(\n <LinkItem\n key={i}\n link={props.links[i]}\n />\n );\n }\n return (\n <div id=\"links_item\">\n <h4>{props.category}</h4>\n {items}\n </div>\n );\n}\n\nfunction LinkItem(props) {\n return (\n <div>\n <a href={props.link.url} className=\"theme_color-border theme_text-select\">{props.link.name}</a>\n </div>\n );\n}\n\nfunction ModalMenu() {\n var providers = getProviders();\n var items = [];\n for (var i = 0; i < providers.providers.length; i++) {\n items.push(\n <Provider \n key={i}\n provider={providers.providers[i]}\n />\n );\n }\n return (\n <section id=\"modal\">\n <div>\n <header id=\"modal-header\">\n <h1>Options</h1>\n <a href=\"#\" title=\"Close\" className=\"modal-close\">\n <span className=\"iconify\" data-icon=\"mdi-close\"></span>\n </a>\n </header>\n\n <h2>Color themes</h2>\n\n <div id=\"modal-theme\">\n <button data-theme=\"blackboard\" className=\"theme-button theme-blackboard\" onClick={updateTheme}>Blackboard</button>\n <button data-theme=\"gazette\" className=\"theme-button theme-gazette\">Gazette</button>\n <button data-theme=\"espresso\" className=\"theme-button theme-espresso\">Espresso</button>\n <button data-theme=\"cab\" className=\"theme-button theme-cab\">Cab</button>\n <button data-theme=\"cloud\" className=\"theme-button theme-cloud\">Cloud</button>\n <button data-theme=\"lime\" className=\"theme-button theme-lime\">Lime</button>\n <button data-theme=\"passion\" className=\"theme-button theme-passion\">Passion</button>\n <button data-theme=\"blues\" className=\"theme-button theme-blues\">Blues</button>\n <button data-theme=\"chalk\" className=\"theme-button theme-chalk\">Chalk</button>\n <button data-theme=\"tron\" className=\"theme-button theme-tron\">Tron</button>\n <button data-theme=\"paper\" className=\"theme-button theme-paper\">Paper</button>\n <button data-theme=\"cyberpunk\" className=\"theme-button theme-cyberpunk\">Cyberpunk</button>\n <button data-theme=\"quadra\" className=\"theme-button theme-panam\">Quadra</button>\n <button data-theme=\"panam\" className=\"theme-button theme-panam\">Panam</button>\n <button data-theme=\"touch\" className=\"theme-button theme-touch\">Touch</button>\n <button data-theme=\"peek\" className=\"theme-button theme-peek\">Peek</button>\n </div>\n\n\n <h2>Search options</h2>\n <section id=\"providers\">\n <table>\n <tbody>\n <tr>\n <th>Website</th>\n <th>Prefix</th>\n </tr>\n {items}\n </tbody>\n </table>\n </section>\n\n <header id=\"modal-footer\">\n <a href=\"https://github.com/jeroenpardon/\"><span className=\"iconify\" data-icon=\"mdi-github-box\"></span></a>\n <a href=\"https://materialdesignicons.com/\"><span className=\"iconify\" data-icon=\"mdi-material-design\"></span></a>\n <div className=\"sneaky\"><input type=\"checkbox\" id=\"contenttype\" onChange=\"nsfw(this)\"></input>\n <label for=\"contenttype\"><span className=\"iconify\" data-icon=\"mdi-domino-mask\"></span></label></div>\n </header>\n </div>\n </section>\n );\n}\n\nfunction Provider(props) {\n return (\n <tr>\n <td><a href={props.provider.url}>{props.provider.name}</a></td>\n <td>{props.provider.prefix}</td>\n </tr>\n );\n}\n\nfunction ModalInit() {\n return (\n <div id=\"modal_init\">\n <a className=\"btn\" href=\"#modal\">\n <span className=\"iconify icon\" data-icon=\"mdi-xbox-controller-menu\"></span>\n </a>\n </div>\n );\n}\n\nReactDOM.render(\n <Homepage />,\n document.getElementById('root')\n);\n\n//Functions below this line are for calculating data for\n//other functions\n\nfunction date() {\n let currentDate = new Date();\n let dateOptions = {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\"\n };\n let date = currentDate.toLocaleDateString(\"en-GB\", dateOptions);\n return date;\n}\nfunction fixDigits(k) {\n if (k < 10) {\n return \"0\" + k;\n }\n else {\n return k;\n }\n}\nfunction greet() {\n let currentTime = new Date();\n let greet = Math.floor(currentTime.getHours() / 6);\n let easterEggChance = Math.floor(Math.random() * 100);\n let greetings = require('./messages.json');\n let timeBased = [];\n let easterEggs = [];\n for (var i = 0; i < greetings.messages.length; i++) {\n if (greetings.messages[i].easteregg === \"FALSE\") {\n timeBased = timeBased.concat(greetings.messages[i]);\n } else {\n easterEggs = easterEggs.concat(greetings.messages[i]);\n }\n }\n if (easterEggChance > 10) {\n return timeBased[greet].message;\n } else {\n let easterEggText = Math.floor(Math.random() * easterEggs.length);\n return easterEggs[easterEggText].message;\n }\n}\nfunction Clock() {\n const [date, setDate] = useState(new Date());\n\n function refreshClock() {\n setDate(new Date());\n }\n useEffect(() => {\n const timerId = setInterval(refreshClock, 1000);\n return function cleanup() {\n clearInterval(timerId);\n };\n }, []);\n\n var hour = date.getHours();\n var minutes = date.getMinutes();\n //var seconds = date.getSeconds();\n var midday = \"AM\";\n midday = (hour >= 12) ? \"PM\" : \"AM\";\n hour = (hour === 0) ? 12 : ((hour > 12) ? (hour - 12) : hour);\n minutes = fixDigits(minutes);\n //seconds = fixDigits(seconds);\n let time = hour + \":\" + minutes + \" \" + midday;\n\n return (\n <h2 id=\"clock\">{time}</h2>\n\n );\n}\nfunction getApps() {\n let applications = require('./apps.json');\n return applications;\n}\nfunction getLinks() {\n let links = require('./links.json');\n return links;\n}\nfunction getProviders() {\n let providers = require('./providers.json');\n return providers;\n}\nfunction getThemes() {\n let themes = require('./themes.json');\n return themes;\n}\n\nfunction updateTheme(e) {\n var themes = getThemes();\n var themeName = e.target.innerHTML.toLowerCase();\n console.log(themes.themes.name);\n}\n\nfunction handleKeyPress(e) {\n var sindex = 0;\n var cycle = false;\n var key = e.keyCode || e.which;\n var text = e.target.value.replaceAll(\"+\", \"%2B\");\n var option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n var subtext = text.substr(2 + option.length);\n if (key == 13) { // Search functions\n search(text);\n }\n if (key == 9) { // Tab Completion Functions\n e.preventDefault();\n e.stopPropagation();\n if (text[0] === ';') {\n switch (option) {\n case 't':\n var streamers = ['admiralbahroo', 'moonmoon_ow', 'witwix'];\n if (!subtext || cycle) {\n cycle = true;\n if (sindex > streamers.length - 1) sindex = 0;\n document.getElementById(\"keywords\").value = ';t ' + streamers[sindex++];\n return;\n }\n for (var streamer of streamers) {\n if (subtext === streamer.substr(0, subtext.length)) {\n document.getElementById(\"keywords\").value = ';t ' + streamer;\n return;\n }\n }\n break;\n }\n }\n }\n if(key == 32){ //Space to go to search\nupdateLabel(text);\n }\n sindex = 0;\n cycle = false;\n updateLabel(text);\n}\n\nfunction updateLabel(text) {\n var option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n if (text[0] === '/') {\n// if (text.indexOf(' ') > -1) {\n switch (option) {\n case \"am\":\n document.getElementById(\"searchType\").innerHTML = \"Allmusic search\";\n break;\n case \"d\":\n document.getElementById(\"searchType\").innerHTML = \"Duck Duck Go search\";\n break;\n case \"di\":\n document.getElementById(\"searchType\").innerHTML = \"Discogs search\";\n break;\n case \"i\":\n document.getElementById(\"searchType\").innerHTML = \"IMDB search\";\n break;\n case \"m\":\n document.getElementById(\"searchType\").innerHTML = \"TheMovieDB search\";\n break;\n case \"r\":\n document.getElementById(\"searchType\").innerHTML = \"Reddit search\";\n break;\n case \"q\":\n document.getElementById(\"searchType\").innerHTML = \"Qwant search\";\n break;\n case \"so\":\n document.getElementById(\"searchType\").innerHTML = \"Soundcloud search\";\n break;\n case \"s\":\n document.getElementById(\"searchType\").innerHTML = \"Spotify search\";\n break;\n case \"tv\":\n document.getElementById(\"searchType\").innerHTML = \"TheTVDB search\";\n break;\n case \"t\":\n document.getElementById(\"searchType\").innerHTML = \"Trakt search\";\n break;\n case \"y\":\n document.getElementById(\"searchType\").innerHTML = \"YouTube search\";\n break;\n case \"w\":\n document.getElementById(\"searchType\").innerHTML = \"Wikipedia search\";\n break;\n case \"p\":\n document.getElementById(\"searchType\").innerHTML = \"Plex search\";\n break;\n case \"rt\":\n document.getElementById(\"searchType\").innerHTML = \"Rotten Tomatoes search\";\n break;\n default:\n document.getElementById(\"searchType\").innerHTML = \"Invalid search\";\n break;\n }\n}else {\n document.getElementById(\"searchType\").innerHTML = \"Google search\";\n }\n}\n\nfunction search(text) {\n var option = text.substr(1, text.indexOf(' ') - 1) || text.substr(1);\n var subtext = text.substr(2 + option.length);\n if (text[0] === '/') {\n if (text.indexOf(' ') > -1) {\n switch (option) {\n case \"am\":\n window.location = \"https://www.allmusic.com/search/all/\" + subtext;\n break;\n case \"d\":\n window.location = \"https://duckduckgo.com/?q=\" + subtext;\n break;\n case \"di\":\n window.location = \"https://www.discogs.com/search/?q=\" + subtext;\n break;\n case \"i\":\n window.location = \"https://www.imdb.com/find?q=\" + subtext;\n break;\n case \"m\":\n window.location = \"https://www.themoviedb.org/search?query=\" + subtext;\n break;\n case \"r\":\n window.location = \"https://www.reddit.com/search?q=\" + subtext;\n break;\n case \"q\":\n window.location = \"https://www.qwant.com/?q=\" + subtext;\n break;\n case \"so\":\n window.location = \"https://soundcloud.com/search?q=\" + subtext;\n break;\n case \"s\":\n window.location = \"https://open.spotify.com/search/results/\" + subtext;\n break;\n case \"t\":\n window.location = \"https://trakt.tv/search?query=\" + subtext;\n break;\n case \"tv\":\n window.location = \"https://www.thetvdb.com/search?query=\" + subtext;\n break;\n case \"y\":\n window.location = \"https://www.youtube.com/results?search_query=\" + subtext;\n break;\n case \"w\":\n window.location = \"https://en.wikipedia.org/w/index.php?search=\" + subtext;\n break;\n case \"p\":\n window.location = \"https://app.plex.tv/desktop/#!/search?query=\" + subtext;\n break;\n case \"rt\":\n window.location = \"https://www.rottentomatoes.com/search?search=\" + subtext;\n break;\n }\n } else {\n var option = text.substr(1);\n switch (option) {\n case \"d\":\n window.location = \"https://www.duckduckgo.com\";\n break;\n case \"y\":\n window.location = \"https://www.youtube.com\";\n break;\n case \"r\":\n window.location = \"https://reddit.com\";\n break;\n case \"s\":\n window.location = \"https://open.spotify.com\";\n break;\n }\n }\n } else if (validURL(text)) {\n if (containsProtocol(text))\n window.location = text;\n else\n window.location = \"https://\" + text;\n } else {\n window.location = \"https://www.google.com/search?q=\" + text;\n }\n}\n\n// Source: https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\nfunction validURL(str) {\n var pattern = new RegExp('^(https?:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$', 'i'); // fragment locator\n return !!pattern.test(str);\n}\n\nfunction containsProtocol(str) {\n var pattern = new RegExp('^(https?:\\\\/\\\\/){1}.*', 'i');\n return !!pattern.test(str);\n}\n\nString.prototype.replaceAll = function(search, replacement) {\n var target = this;\n return target.split(search).join(replacement);\n};"]},"metadata":{},"sourceType":"module"} |