├── .github └── FUNDING.yml ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── about.html ├── css ├── about.css ├── app.ui.css ├── responsive.css ├── style.css ├── themes │ ├── auto.css │ ├── dark.css │ └── light.css └── wiki-fix.css ├── custom-style.md ├── index.html ├── js ├── app.js ├── app.ui.js ├── index.js ├── keyboard.js ├── share.js └── themes.js ├── src ├── assets │ ├── icons │ │ ├── favicon-black.svg │ │ ├── favicon-violet.svg │ │ ├── favicon-white.svg │ │ └── icon.png │ ├── images │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── GitHub-Mark-Light-32px.png │ │ ├── banner.png │ │ ├── download.png │ │ ├── inky-search.png │ │ ├── not-found.png │ │ └── share.png │ └── resources │ │ └── wikilist.json └── libs │ ├── google-fonts │ └── fonts.css │ ├── hotkeysjs │ └── hotekeys.min.js │ ├── jquery │ └── jquery.js │ ├── share-this │ ├── share-this.css │ ├── share-this.js │ └── sharers │ │ ├── email.js │ │ ├── email.js.map │ │ ├── facebook.js │ │ ├── facebook.js.map │ │ ├── linked-in.js │ │ ├── linked-in.js.map │ │ ├── reddit.js │ │ ├── reddit.js.map │ │ ├── speakers.js │ │ ├── twitter.js │ │ └── twitter.js.map │ ├── sharer.js │ └── sharer.js │ └── wikifox │ └── wikifox.js └── wiki.html /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: 4 | patreon: # Replace with a single Patreon username 5 | open_collective: wikifox 6 | ko_fi: harrytom 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: https://www.buymeacoffee.com/harrytom 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | test.js 2 | backup.js -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "svg.preview.background": "transparent", 3 | "cSpell.ignoreWords": [ 4 | "Infobox", 5 | "Wikifox" 6 | ] 7 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Just Doodle 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 🦊 Introducing [Wikifox!](https://wikifox.netlify.app/) ![Beta](https://img.shields.io/badge/-BETA-blue) 4 | 5 | Wikifox (beta) is a clean and simplified version of the real Wikipedia! This works with official Wikipedia, so nothing to worry about!. It has a good and clean user interface with Dark, Light and custom themes! Check it out : https://wikifox.netlify.app/ 6 | 7 | [![Netlify Status](https://api.netlify.com/api/v1/badges/78e53b07-785b-481c-a033-5bef6a642843/deploy-status)](https://app.netlify.com/sites/wikifox/deploys) 8 | 9 | [](https://discord.gg/wdDXnFz3bm) 10 | 11 | # What's New 12 | 13 | - Fixed Shortcut bug [Issue#3](https://github.com/Wikifox/wikifox/issues/3) 14 | - Added Keyboard shortcuts. Press `k` or got to `options` to see what are the new shortcuts! 15 | 16 | # 💫 Features 17 | 18 | - 👍 Super-awesome and Clean UI 19 | - 🔍 Search any articles Easily 20 | - 🔖 Bookmark Articles 21 | - ☀️ Dark/Light theme + Custom CSS themes! 22 | - 📃 Endless list of languages 23 | - 🔽 Download articles 24 | - ⏩ Sharing 25 | - Share quotes (sentances) 26 | - Share the Whole article 27 | - 📢 Read aloud 28 | - 🦘 Quick Jump to headings 29 | - 🎲 Random Articles 30 | - ⌨️ Keyboard Shortcuts 31 | - 📱 Mobile Friendly 32 | - ℹ️ Infobox (beta) 33 | - 💫 And much more! 34 | 35 | # 🔔 Upcoming Features 36 | 37 | - More keyboard shortcuts 38 | - Comments 39 | - Reactions 40 | 41 | # ✂️ Few Screenshots 42 | 43 | | | | 44 | | ----------------------------------- | ----------------------------------- | 45 | | | | 46 | 47 | # 🧱 Made with 48 | 49 | - 🦊 [wikifox.js](https://github.com/harry260/wikifox.js) (modified) 50 | - 🍪 [Jquery](https://jquery.com/) 51 | - 📩 [MaxArt2501/share-this](https://github.com/MaxArt2501/share-this) 52 | - 🔤 [Google Fonts](https://fonts.google.com/) 53 | - 🅱️ [Bootstrap Icons](https://icons.getbootstrap.com/) 54 | - 🌍 [Official Wikipedia Api](https://wikipedia.org/) 55 | - ⌨️ [hotekeys-js](https://github.com/jaywcjlove/hotkeys) 56 | 57 | [![Readme Card](https://github-readme-stats.vercel.app/api/pin/?username=harry260&repo=wikifox.js&theme=radical)](https://github.com/harry260/wikifox.js) 58 | 59 | # 😺 Featured on [Producthunt](https://www.producthunt.com/posts/wikifox) 60 | 61 | Wikifox - Wikipedia reimagined - clean, simplified, powerful | Product Hunt 62 | Wikifox - Wikipedia reimagined - clean, simplified, powerful | Product Hunt 63 | 64 | # Thanks 65 | 66 | Special Thanks for [@byothe](https://github.com/byothe) for finding a major bug [Issue#3](https://github.com/Wikifox/wikifox/issues/3) 67 | 68 | # 💪 Support 69 | 70 | Support this project by buying me a coffee and starring ⭐ this repo! 71 | 72 | Buy Me A Coffee
73 | 74 | | PROTIP: You can also customize the entire User Interface with the Custom CSS theme option (`OPTIONS` > `Appearance` > `Custom CSS`) | 75 | | ---------------------------------------------------------------------------------------------------------------------------------- | 76 | -------------------------------------------------------------------------------- /about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | Wikifox - Wikipedia Re-imagined 12 | 13 | 17 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 31 | 32 | 33 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 56 | 57 | 58 |
59 |
60 |
61 | 65 |

About

66 |
67 | 74 | 89 |
90 |
91 |
92 |
93 | Wikifox - Wikipedia re-imagined - clean, simplified, powerful | Product Hunt 103 |
104 | 107 |
108 |
109 |

Introducing Wikifox!

110 |
BETA
111 |
112 |

113 | Wikifox (beta) is a clean and simplified version of the real 114 | Wikipedia! This works with official Wikipedia, so nothing to worry 115 | about!. It has a good and clean user interface with Dark, Light and 116 | custom themes! 117 |

118 |
119 | 122 |
123 |

Getting Started

124 |

125 | To get started, click the Launch button and Start searching! The 126 | Search features have awesome search suggestions and you can also 127 | search for a specific article. There is also Option to change theme. 128 | You can also Import custom css themes. 129 |

130 |
131 | 134 |
135 |

Features

136 |

137 | This also has some awesome small features such as : Searching 138 | articles, Bookmarking Articles, Downloading articles as PDF, Instant 139 | Sharing, Sharing Quotes, Social Sharing, Fully customizable UI + 140 | Themes and much more than you can imagine! 141 |

142 |
143 |
144 |
145 |

Proudly made with

146 | 160 |
161 |
162 | 175 |
176 | 177 | 182 | 183 | -------------------------------------------------------------------------------- /css/about.css: -------------------------------------------------------------------------------- 1 | body{ 2 | background-color: black; 3 | color: white; 4 | } 5 | 6 | .hero-header{ 7 | width: 100%; 8 | padding: 10px; 9 | position: fixed; 10 | left: 0; 11 | top:0; 12 | background-color: rgba(0, 0, 0, 0.445); 13 | backdrop-filter: blur(20px); 14 | z-index: 99; 15 | border: 1px solid #242426; 16 | } 17 | 18 | .hero-header-inner{ 19 | width: 90%; 20 | padding: 10px 0; 21 | justify-content: space-between; 22 | } 23 | 24 | .header-icon img{ 25 | width: 50px; 26 | } 27 | 28 | .header-icon h1{ 29 | color: white; 30 | letter-spacing: -3px; 31 | font-size: 30px; 32 | } 33 | 34 | .button-open{ 35 | background-color: #0070f3; 36 | color: white; 37 | border-radius: 10px; 38 | cursor: pointer; 39 | } 40 | 41 | .button-open:hover{ 42 | transform:scale(1.1); 43 | } 44 | 45 | .button-open h2{ 46 | font-size: 15px; 47 | padding: 10px 20px; 48 | } 49 | 50 | .github-icon img{ 51 | width: 40px; 52 | margin-left: 20px; 53 | border-radius: 50%; 54 | opacity: 0.5; 55 | } 56 | 57 | .github-icon img:hover{ 58 | opacity: 1; 59 | cursor: pointer; 60 | } 61 | 62 | i, 63 | i::before { 64 | color: var(white); 65 | display: flex !important; 66 | } 67 | 68 | .icon-lc{ 69 | margin-left: 5px; 70 | } 71 | 72 | .content{ 73 | width: 600px; 74 | padding-top: 120px; 75 | } 76 | 77 | .banner-image img{ 78 | width: 100%; 79 | border: 1px solid #242426; 80 | border-radius: 10px; 81 | margin-bottom: 30px; 82 | cursor: pointer; 83 | } 84 | 85 | .banner-image:hover{ 86 | transform: scale(1.1); 87 | } 88 | 89 | .hero-nav a{ 90 | color: gray; 91 | text-decoration: none; 92 | letter-spacing: 0px; 93 | margin: 0 5px; 94 | font-size: 15px; 95 | } 96 | 97 | .hero-nav a:hover{ 98 | color: white; 99 | } 100 | 101 | .text-content h1{ 102 | margin: 20px 0; 103 | } 104 | 105 | .text-content{ 106 | margin-bottom: 50px; 107 | } 108 | .text-content p{ 109 | font-size: 15px; 110 | color: rgb(131, 131, 131); 111 | } 112 | 113 | .tag{ 114 | background-color: #0070f3; 115 | display: inline-flex; 116 | margin: 5px; 117 | padding: 5px; 118 | border-radius: 5px; 119 | margin-left: 10px; 120 | } 121 | 122 | hr{ 123 | border: 1px solid #242426; 124 | } 125 | 126 | .powered-ul a{ 127 | color: white; 128 | text-decoration: none; 129 | } 130 | 131 | .powered-ul a li{ 132 | color: rgb(131, 131, 131); 133 | transition: 0ms; 134 | } 135 | 136 | .powered-ul a li:hover{ 137 | transition: 0s; 138 | color: #0070f3; 139 | } 140 | 141 | .item-info{ 142 | justify-content: space-between; 143 | } 144 | 145 | .item-people{ 146 | width: 100%; 147 | background-color: #19191a; 148 | padding: 10px 20px; 149 | border-radius: 10px; 150 | } 151 | 152 | .item-people img{ 153 | width: 30px; 154 | height: 30px; 155 | border-radius: 50%; 156 | margin-right: 10px; 157 | } 158 | 159 | .item-ppl-content h1{ 160 | font-size: 15px; 161 | line-height: 5px; 162 | } 163 | 164 | .wtf{ 165 | margin-left: 5px; 166 | font-size: 16px; 167 | } 168 | 169 | .open-profile{ 170 | padding: 5px; 171 | font-size: 16px; 172 | color: white; 173 | border-radius: 5px; 174 | text-decoration: none; 175 | padding: 5px 10px; 176 | margin-left: 10px; 177 | } 178 | 179 | .footer{ 180 | width: 100%; 181 | justify-content: space-between; 182 | padding: 20px 0px ; 183 | } 184 | 185 | .footer-inner{ 186 | width: 90%; 187 | padding-bottom:15px; 188 | } 189 | 190 | .footer h1{ 191 | font-size: 15px; 192 | display: inline-block; 193 | color: gray; 194 | letter-spacing: -1px; 195 | } -------------------------------------------------------------------------------- /css/app.ui.css: -------------------------------------------------------------------------------- 1 | @import url("../src/libs/google-fonts/fonts.css"); 2 | @import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.2/font/bootstrap-icons.css"); 3 | 4 | *{ 5 | padding: 0; 6 | margin: 0; 7 | box-sizing: border-box; 8 | outline-width: 0; 9 | font-family: "poppins", sans-serif; 10 | scroll-behavior: smooth; 11 | } 12 | 13 | .center{ 14 | display: flex; 15 | align-items: center; 16 | justify-content: center; 17 | } 18 | 19 | .h-center{ 20 | display: flex; 21 | justify-content: center; 22 | } 23 | 24 | .v-center{ 25 | display: flex; 26 | align-items: center; 27 | } 28 | 29 | ::-webkit-scrollbar { 30 | width: 5px; 31 | } 32 | 33 | ::-webkit-scrollbar-track { 34 | background: transparent; 35 | padding: 0 5px; 36 | } 37 | 38 | /* Handle */ 39 | ::-webkit-scrollbar-thumb { 40 | background: var(--primary-color); 41 | border-radius: 99999px; 42 | } 43 | 44 | /* Handle on hover */ 45 | ::-webkit-scrollbar-thumb:hover { 46 | background: black; 47 | } 48 | 49 | .one-line{ 50 | overflow: hidden !important; 51 | text-overflow: ellipsis !important; 52 | display: -webkit-box; 53 | -webkit-line-clamp: 1 !important; 54 | line-clamp: 1 !important; 55 | -webkit-box-orient: vertical !important; 56 | } 57 | 58 | .overlay{ 59 | position: fixed !important; 60 | top: 0 !important; 61 | left: 0 !important; 62 | width: 100%; 63 | height: 100%; 64 | background: rgba(0,0,0,0.2); 65 | z-index: 99999; 66 | display: none; 67 | } 68 | 69 | .overlay-inner{ 70 | width: 500px !important; 71 | height: 500px; 72 | box-shadow: var(--box-shadow-prime); 73 | background-color: var(--background); 74 | border: 1px solid var(--hairline); 75 | border-radius: 20px; 76 | } 77 | 78 | .ui-button{ 79 | background-color: var(--button); 80 | color: white; 81 | border-radius: 10px; 82 | padding: 10px 15px; 83 | cursor: pointer; 84 | transition: 0.1s; 85 | } 86 | 87 | .ui-button:hover{ 88 | background-color: var(--highlight); 89 | } 90 | 91 | .ui-button h1{ 92 | font-size: 13px; 93 | margin-left: 10px; 94 | } 95 | 96 | .progress-container { 97 | --progressbar-height: 5px; 98 | 99 | min-width: 100% !important; 100 | min-height: var(--progressbar-height); 101 | position: fixed; 102 | bottom: 0; 103 | left: 0; 104 | z-index: 99999; 105 | } 106 | 107 | .progress-bar { 108 | min-height: var(--progressbar-height); 109 | background: var(--highlight); 110 | width: 0%; 111 | opacity: 0.9; 112 | } 113 | 114 | .progress-bar:hover{ 115 | transform: scaleY(3); 116 | cursor: pointer; 117 | } 118 | 119 | .pa-t-70{ 120 | padding-top: 70px !important; 121 | } 122 | 123 | .relative-div{ 124 | position: relative; 125 | } 126 | 127 | .us{ 128 | user-select: none; 129 | -moz-user-select: none; 130 | -khtml-user-select: none; 131 | -webkit-user-select: none; 132 | -o-user-select: none; 133 | } -------------------------------------------------------------------------------- /css/responsive.css: -------------------------------------------------------------------------------- 1 | .mobile-view{ 2 | display: none; 3 | } 4 | 5 | @media (max-width:1200px){ 6 | .article-abstract, .page-content p{ 7 | font-size: 15px 8 | } 9 | } 10 | 11 | @media (max-width:1100px){ 12 | .bar-right{ 13 | display: none; 14 | position: fixed; 15 | width: var(--sidebar-width); 16 | top:0; 17 | right: 0; 18 | box-shadow: var(--box-shadow-prime); 19 | border-top-left-radius: 10px; 20 | border-bottom-left-radius: 10px; 21 | z-index: 999; 22 | } 23 | 24 | .button-close-bar{ 25 | display: flex; 26 | } 27 | 28 | .info-content{ 29 | padding-top: 0!important; 30 | } 31 | 32 | .infobox-open{ 33 | display: flex; 34 | } 35 | } 36 | 37 | @media (max-width:940px){ 38 | .bar-left{ 39 | display: none; 40 | } 41 | 42 | .content-header{ 43 | width: 100%; 44 | left: 0; 45 | display: flex !important; 46 | } 47 | 48 | .content-wrap{ 49 | padding-top: 100px; 50 | } 51 | 52 | .header-logo svg{ 53 | display: flex; 54 | } 55 | 56 | .input-wrapper{ 57 | display: none; 58 | 59 | } 60 | 61 | .download-pop{ 62 | display: flex; 63 | } 64 | } 65 | 66 | 67 | @media (max-width: 700px) { 68 | .text-div{ 69 | padding: 60px !important; 70 | } 71 | 72 | .sentance-hero{ 73 | font-size: 30px !important; 74 | line-height: 30px !important; 75 | } 76 | 77 | .text-content h1{ 78 | font-size: 25px; 79 | margin-bottom: 15px; 80 | } 81 | 82 | .text-content p{ 83 | font-size: 13px; 84 | } 85 | 86 | .content{ 87 | width: 100%; 88 | padding: 0 20px; 89 | padding-top: 150px; 90 | } 91 | 92 | .hero-nav{ 93 | display: none; 94 | } 95 | 96 | .header-icon h1{ 97 | display: none; 98 | } 99 | } 100 | 101 | @media (max-width:640px){ 102 | 103 | 104 | .content-header{ 105 | padding: 35px 20px; 106 | } 107 | 108 | .content-block{ 109 | padding: 0 30px; 110 | } 111 | 112 | .image-block{ 113 | padding:0; 114 | } 115 | 116 | .image-show{ 117 | box-shadow: none; 118 | border-radius: 0; 119 | } 120 | 121 | .mobile-view{ 122 | display: flex; 123 | } 124 | 125 | .header-navig-wrap{ 126 | display: none; 127 | } 128 | } 129 | 130 | @media (max-width:540px){ 131 | .index-header-nav{ 132 | display: none; 133 | } 134 | 135 | .index-search-bar-active{ 136 | position: fixed; 137 | top: -1px; 138 | left: -1px; 139 | right: -1px; 140 | border-radius: 0; 141 | min-width: 100%; 142 | } 143 | 144 | .hero-abs{ 145 | width: 70%; 146 | font-size: 12px; 147 | } 148 | 149 | .index-wrapper{ 150 | width: 100%; 151 | } 152 | } 153 | 154 | @media (max-width:440px){ 155 | 156 | .index-search-bar{ 157 | width: 90%; 158 | } 159 | 160 | .header-button{ 161 | padding: auto 5px; 162 | } 163 | 164 | .overlay-inner{ 165 | max-width: 100%; 166 | height: 80vh; 167 | max-height: none; 168 | min-width: auto; 169 | bottom: 0 !important; 170 | position: fixed; 171 | left: 0; 172 | bottom: 0; 173 | } 174 | 175 | 176 | } -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | /* ___________________ 2 | | | 3 | | [WIKI-PAGE] | 4 | |___________________| 5 | */ 6 | 7 | 8 | #app, .app-wrapper{ 9 | width: 100%; 10 | height: 100vh; 11 | background-color: var(--background); 12 | } 13 | 14 | .content-wrap{ 15 | overflow-y: scroll; 16 | padding: 40px 0; 17 | height: 100vh; 18 | } 19 | 20 | .content-wrap::-webkit-scrollbar { 21 | width: 0px; 22 | background: transparent; 23 | } 24 | 25 | .content-block{ 26 | margin: 50px 0; 27 | padding: 0 60px; 28 | } 29 | 30 | .content-block:nth-child(1){ 31 | margin-top: 0; 32 | } 33 | 34 | .article-title{ 35 | font-family: var(--serif); 36 | font-style: normal; 37 | font-weight: 900; 38 | font-size: 60px; 39 | line-height: 60px; 40 | margin-bottom: 20px; 41 | color: var(--primary-color); 42 | } 43 | 44 | .article-abstract, .article-summary, .page-content p{ 45 | font-family: var(--primary-font); 46 | font-style: normal; 47 | font-weight: 500; 48 | font-size: 15px; 49 | width: 100%; 50 | color: var(--secondary-color); 51 | } 52 | 53 | 54 | .two-line{ 55 | overflow: hidden !important; 56 | text-overflow: ellipsis !important; 57 | display: -webkit-box !important; 58 | -webkit-line-clamp: 2 !important; 59 | line-clamp: 2 !important; 60 | -webkit-box-orient: vertical !important; 61 | } 62 | 63 | .article-summary{ 64 | font-family: var(--secondary-serif) !important; 65 | font-size: 22px; 66 | line-height: 28px; 67 | } 68 | 69 | .image-block *{ 70 | transition: 0.4s; 71 | } 72 | 73 | .image-show{ 74 | max-height: 500px; 75 | overflow: hidden; 76 | border-radius: 10px; 77 | box-shadow: var(--box-shadow-prime); 78 | background-color: white; 79 | } 80 | 81 | .image-show:hover .image-show-img{ 82 | transform: scale(1.19) rotate(5deg); 83 | } 84 | 85 | .image-show-img{ 86 | width: 100%; 87 | } 88 | 89 | 90 | .page-content h2 *{ 91 | font-family: var(--serif); 92 | font-weight: 900; 93 | font-size: 40px; 94 | line-height: 42px; 95 | color: var(--primary-color); 96 | display: block; 97 | width: 100%; 98 | border-bottom: 1px solid var(--hairline); 99 | padding-bottom: 10px; 100 | color: var(--primary-color); 101 | margin-bottom: 15px; 102 | margin-top: 50px; 103 | } 104 | 105 | .page-content i{ 106 | display: inline; 107 | } 108 | 109 | .page-content h3 *{ 110 | margin-top: 30px; 111 | margin-bottom: 20px; 112 | display: block; 113 | font-size: 20px; 114 | font-weight: 500; 115 | font-family: var(--primary-font); 116 | color: var(--tertiary-color); 117 | font-weight: 600; 118 | } 119 | 120 | 121 | .page-content h4{ 122 | display: inline-block; 123 | } 124 | 125 | .page-content h4 span{ 126 | margin-bottom: 10px; 127 | display: block; 128 | margin-top: 20px; 129 | color: var(--secondary-color); 130 | } 131 | 132 | .page-content p{ 133 | margin-bottom: 30px; 134 | line-height: 29px; 135 | font-size: 16px; 136 | } 137 | 138 | .page-content ul{ 139 | margin: 20px 0; 140 | } 141 | 142 | .page-content ul li{ 143 | margin-bottom: 10px; 144 | color: var(--secondary-color); 145 | } 146 | 147 | .gallery{ 148 | display: none; 149 | } 150 | 151 | .page-content ol { 152 | padding: 1px !important; 153 | list-style-position: inside; 154 | } 155 | 156 | .summary-read-more{ 157 | color: var(--primary-color); 158 | margin-top: 10px; 159 | display: block; 160 | text-decoration: none; 161 | font-size: 12px; 162 | color: var(--primary-color); 163 | } 164 | 165 | .quick-jump-overlay{ 166 | display: none; 167 | } 168 | 169 | .quick-jump-wrap{ 170 | display: flex; 171 | flex-direction: column; 172 | height: fit-content; 173 | max-height: 500px; 174 | background-color: var(--background); 175 | padding: 30px; 176 | } 177 | 178 | .quick-jump-wrap header h1{ 179 | color: var(--secondary-color); 180 | font-weight: 900; 181 | letter-spacing: -1px; 182 | font-family: var(--serif); 183 | } 184 | 185 | .search-bar-jump{ 186 | background-color: var(--secondary-background); 187 | padding: 8px 10px; 188 | margin: 20px 0; 189 | border-radius: 5px; 190 | } 191 | 192 | .search-bar-jump input{ 193 | border: none; 194 | outline: none; 195 | background-color: transparent; 196 | color: var(--primary-color); 197 | font-size: 16px; 198 | font-weight: 500; 199 | font-family: var(--primary-font); 200 | width: 100%; 201 | color: var(--primary-color); 202 | } 203 | 204 | .toc-wrap{ 205 | overflow-y: scroll; 206 | transition: 0.4s; 207 | height: 100%; 208 | padding: 0 10px; 209 | } 210 | 211 | .toc-wrap::-webkit-scrollbar{ 212 | width: 3px; 213 | } 214 | 215 | .toc-wrap::-webkit-scrollbar-thumb{ 216 | background-color:var(--secondary-background); 217 | } 218 | 219 | .toc-item, .toc-a{ 220 | text-decoration: none; 221 | line-break: strict; 222 | } 223 | 224 | .toc-item-level-1, .toc-item-level-1 a{ 225 | font-size: 20px; 226 | line-height: 20px; 227 | font-weight: 700; 228 | margin: 5.0px 0; 229 | color: var(--secondary-color); 230 | margin-bottom: 10px; 231 | } 232 | 233 | .toc-item-level-2, .toc-item-level-2 a{ 234 | font-size: 12px; 235 | line-height: 15px; 236 | font-weight: 400; 237 | font-family:var(--primary-font); 238 | color: var(--secondary-color); 239 | border-radius: 5px; 240 | padding: 3px; 241 | margin-bottom: 2px; 242 | } 243 | 244 | .toc-item-level-2:hover{ 245 | background-color: var(--secondary-background); 246 | } 247 | 248 | .sub-topic-active{ 249 | display: block; 250 | } 251 | 252 | .search-preview img{ 253 | width: 200px; 254 | margin: 0 auto; 255 | display: block; 256 | } 257 | 258 | .search-preview-info{ 259 | font-size: 15px; 260 | width: 300px; 261 | text-align: center; 262 | color: var(--secondary-color); 263 | line-height: 14px; 264 | font-weight: 600; 265 | font-size: 12px; 266 | } 267 | 268 | 269 | .side-bar{ 270 | height: 100vh; 271 | min-width: var(--sidebar-width); 272 | background-color: var(--background); 273 | } 274 | 275 | .bar-left{ 276 | border-right: 1px solid var(--hairline); 277 | padding: 30px; 278 | padding-top: 60px; 279 | } 280 | 281 | .bar-right{ 282 | /* border-left: 1px solid var(--hairline); */ 283 | padding: 40px; 284 | padding-left: 0; 285 | } 286 | 287 | .logo-section img{ 288 | width: 60px; 289 | } 290 | 291 | .logo-text{ 292 | font-family: var(--serif); 293 | font-size: 20px; 294 | font-weight: 900; 295 | letter-spacing: -1px; 296 | color: var(--primary-color); 297 | } 298 | 299 | .option-list{ 300 | list-style: none; 301 | margin-top: 50px; 302 | } 303 | 304 | .option-list li{ 305 | padding: 5px 10px; 306 | font-size: 15px; 307 | font-weight: 600; 308 | color:var(--secondary-color); 309 | transition: 0.04s; 310 | } 311 | 312 | .option-list li:hover{ 313 | background-color: var(--secondary-background); 314 | transform: scale(1.05); 315 | cursor: pointer; 316 | } 317 | 318 | .option-icon i{ 319 | margin-right: 5px; 320 | } 321 | 322 | .x-l{ 323 | text-decoration: none; 324 | } 325 | 326 | .download-button{ 327 | position: absolute; 328 | bottom: 30px; 329 | } 330 | 331 | .prefix__fil0{ 332 | fill: var(--primary-color); 333 | } 334 | 335 | .svg-logo{ 336 | width: 60px; 337 | } 338 | 339 | .download-go-button{ 340 | display: inline-flex; 341 | margin-top: 20px; 342 | } 343 | 344 | .download-overlay{ 345 | display: none; 346 | } 347 | 348 | .right-bar{ 349 | width: 250px !important; 350 | height: 100vh; 351 | background-color: bisque; 352 | } 353 | 354 | .info-content{ 355 | overflow-y: scroll; 356 | } 357 | 358 | .content-header{ 359 | width: calc(100% - var(--sidebar-width)); 360 | height: 50px; 361 | position: fixed; 362 | left: var(--sidebar-width); 363 | top: 0; 364 | background-color: var(--semi-color); 365 | backdrop-filter: blur(20px); 366 | z-index: 99; 367 | box-shadow: var(--box-shadow-prime); 368 | border-bottom: 1px solid rgba(128, 128, 128, 0.164); 369 | padding: 0 40px; 370 | display: none; 371 | } 372 | 373 | .header-inner{ 374 | width: calc(100%); 375 | justify-content: space-between; 376 | } 377 | 378 | .header-button{ 379 | padding: 5px 8px; 380 | transition: 10ms; 381 | color: var(--secondary-color); 382 | } 383 | 384 | .header-button:hover{ 385 | transform: scale(0.8); 386 | cursor: pointer; 387 | } 388 | 389 | .header-logo svg{ 390 | width: 30px; 391 | margin-right: 10px; 392 | display:none; 393 | opacity: 0.8; 394 | } 395 | 396 | .search-input-art{ 397 | border: none; 398 | background-color: transparent; 399 | width: 300px; 400 | font-size: 16px; 401 | font-weight: 500; 402 | color: var(--primary-color); 403 | } 404 | 405 | .search-suggessions{ 406 | position: absolute; 407 | background-color: var(--background); 408 | box-shadow: var(--box-shadow-light); 409 | border-radius: 10px; 410 | margin-top: 10px; 411 | max-width: 500px; 412 | padding: 20px 0; 413 | max-height: 80vh; 414 | overflow-y: scroll; 415 | overflow-x: hidden; 416 | margin-left: -10px; 417 | border: 1px solid var(--hairline); 418 | } 419 | 420 | .search-suggessions::-webkit-scrollbar{ 421 | display:none; 422 | } 423 | 424 | .search-suggessions ul{ 425 | list-style: none; 426 | min-width: 160px; 427 | padding: 10px 0; 428 | } 429 | 430 | .search-suggessions ul li{ 431 | padding: 2.5px 20px; 432 | } 433 | 434 | 435 | .search-item:hover{ 436 | background-color: var(--secondary-background); 437 | cursor: pointer; 438 | } 439 | 440 | .search-item{ 441 | padding: 20px 30px; 442 | width: 100%; 443 | } 444 | 445 | .search-info h1{ 446 | font-size: 16px; 447 | margin-bottom: 10px; 448 | font-size: 20px; 449 | line-height: 20px; 450 | color: var(--primary-color); 451 | font-family: var(--serif); 452 | font-weight: 900; 453 | } 454 | 455 | .search-info h6{ 456 | font-size: 11px; 457 | line-height: 13px; 458 | font-weight: 500; 459 | color: var(--secondary-color); 460 | } 461 | 462 | .search-image{ 463 | display: none; 464 | } 465 | 466 | .search-image img{ 467 | width: 60px; 468 | border-radius: 5px; 469 | box-shadow: var(--box-shadow-light); 470 | margin-left: 20px; 471 | } 472 | 473 | 474 | ::-moz-selection { 475 | color: white; 476 | background: var(--highlight); 477 | } 478 | 479 | ::selection { 480 | color: white; 481 | background: var(--highlight); 482 | } 483 | 484 | .bookmark-btn .bi-heart-fill, .bookmarks-item .bi-heart-fill{ 485 | color: var(--highlight); 486 | } 487 | 488 | .share-buttons-wrap .ui-button{ 489 | margin: 10px 2.5px; 490 | } 491 | 492 | .overlay-share{ 493 | display: none; 494 | } 495 | 496 | .button-close-bar{ 497 | position: fixed; 498 | top: calc(50% - 15px); 499 | right: calc(var(--sidebar-width) + 10px); 500 | padding: 5px; 501 | cursor: pointer; 502 | background-color: rgb(10, 10, 10); 503 | color: white; 504 | opacity: 1; 505 | border: var(--hairline); 506 | height: 30px; 507 | width: 30px; 508 | border-radius: 50%; 509 | display: none; 510 | } 511 | 512 | .infobox-open{ 513 | display: none; 514 | } 515 | 516 | .menu-open i{ 517 | font-size: 22px; 518 | } 519 | 520 | 521 | /* ___________________ 522 | | | 523 | | [INDEX-PAGE] | 524 | |___________________| 525 | */ 526 | 527 | 528 | .index-body::-webkit-scrollbar{ 529 | display: none; 530 | } 531 | 532 | .index-wrapper{ 533 | height: 100vh; 534 | scroll-snap-align: start; 535 | } 536 | 537 | .index-search-wrap{ 538 | position: relative; 539 | padding-top: 60px; 540 | z-index: 9999; 541 | } 542 | 543 | .index-search-bar{ 544 | background-color: var(--background); 545 | border: 1px solid var(--hairline); 546 | box-shadow: var(--box-shadow-prime); 547 | border-radius: 10px; 548 | width: 500px; 549 | overflow: hidden; 550 | margin: 0 auto; 551 | z-index: 9999; 552 | position: relative; 553 | } 554 | 555 | .index-search-bar-active{ 556 | position: fixed; 557 | left: calc(50% - 250px); 558 | top:20px; 559 | } 560 | 561 | .index-search-bar input{ 562 | background: transparent; 563 | border: none; 564 | outline: none; 565 | width: 100%; 566 | font-weight: 600; 567 | font-size: 15px; 568 | color: var(--secondary-color); 569 | } 570 | 571 | .svg-overhide svg{ 572 | width: 150px; 573 | position: absolute; 574 | bottom: 0; 575 | z-index: -1; 576 | } 577 | 578 | .hero-abs{ 579 | text-align: center; 580 | font-weight: bold; 581 | font-size: 15px; 582 | width: 100%; 583 | max-width: 310px; 584 | line-height: 110%; 585 | color: var(--secondary-color); 586 | margin-top: 20px; 587 | } 588 | 589 | .index-header{ 590 | position:fixed; 591 | top: 0; 592 | left: 0; 593 | width: 100%; 594 | padding: 10px 0; 595 | backdrop-filter: blur(20px); 596 | z-index: 999; 597 | } 598 | 599 | .index-header-inner{ 600 | width: 90%; 601 | justify-content: space-between; 602 | } 603 | 604 | .logo-text h1{ 605 | font-size: 30px; 606 | font-family: var(--primary-font); 607 | letter-spacing: -2px; 608 | margin-right: 20px; 609 | font-style: italic; 610 | } 611 | 612 | .index-header-nav a{ 613 | color: var(--secondary-color); 614 | font-weight: 500; 615 | text-decoration: none; 616 | margin-right: 5px; 617 | cursor: pointer; 618 | font-size: 12px; 619 | } 620 | 621 | .index-header-nav a:hover{ 622 | color: var(--primary-color); 623 | } 624 | 625 | .option-pop-button{ 626 | background: var(--primary-color); 627 | color: var(--background); 628 | padding: 3px 10px; 629 | border-radius: 20px; 630 | transition: 0.1s; 631 | cursor: pointer; 632 | } 633 | 634 | .option-pop-button:hover{ 635 | background: var(--highlight); 636 | color: white; 637 | opacity: 1; 638 | transition: 0.4s; 639 | } 640 | 641 | .option-pop-button h1{ 642 | font-size: 15px; 643 | margin-left: 5px; 644 | } 645 | 646 | .img-day-wrap{ 647 | scroll-snap-align: start; 648 | padding: 50px; 649 | height: 100vh; 650 | position: relative; 651 | } 652 | 653 | .img-day-wrap img{ 654 | width: 100%; 655 | border-radius: 20px; 656 | box-shadow: var(--box-shadow-prime); 657 | } 658 | 659 | .index-snap-layout{ 660 | scroll-snap-type: mandatory; 661 | } 662 | 663 | .index-body{ 664 | scroll-snap-type: y mandatory; 665 | height: 100vh; 666 | overflow-y: scroll; 667 | background: var(--background); 668 | } 669 | 670 | .go-to-bottom-btn{ 671 | position: absolute; 672 | bottom: 20px; 673 | left: calc(50% - 20px); 674 | color: var(--secondary-color); 675 | font-size: 30px;; 676 | padding: 5px 10px; 677 | border-radius: 20px; 678 | transition: 0.1s; 679 | cursor: pointer; 680 | } 681 | 682 | .bottom-nav{ 683 | margin-top: 10px; 684 | } 685 | 686 | .bottom-nav span{ 687 | color: var(--secondary-color); 688 | margin: 0 5px; 689 | } 690 | 691 | .bottom-nav a{ 692 | color: var(--secondary-color); 693 | font-size: 12px; 694 | } 695 | 696 | .go-to-bottom-btn:hover{ 697 | color: var(--primary-color); 698 | } 699 | 700 | .random-article-dice{ 701 | color: var(--secondary-color); 702 | } 703 | 704 | .random-article-dice:hover{ 705 | transform: scale(1.1) rotate(360deg); 706 | transition: 0.3s; 707 | cursor: pointer; 708 | } 709 | 710 | .title-image{ 711 | position: absolute; 712 | z-index: 99; 713 | color: white; 714 | top: 50px; 715 | font-size: 50px; 716 | letter-spacing: -5px; 717 | text-decoration: underline; 718 | } 719 | 720 | .index-sug-wrap{ 721 | background-color: var(--background); 722 | max-height: 60vh; 723 | overflow-y: scroll; 724 | overflow-x: hidden; 725 | } 726 | 727 | .search-bar{ 728 | padding: 18px; 729 | background-color: var(--background); 730 | } 731 | 732 | .sug-item{ 733 | width: 100%; 734 | padding: 10px 20px; 735 | background-color: var(--background); 736 | } 737 | 738 | .sug-item:last-child{ 739 | margin-bottom: 10px; 740 | } 741 | 742 | .sug-item:first-child{ 743 | padding-top: 20px; 744 | } 745 | 746 | .sug-item:hover{ 747 | background: var(--secondary-background);; 748 | color: var(--primary-color); 749 | transition: 0.3s; 750 | cursor: pointer; 751 | } 752 | 753 | .sug-item-img img{ 754 | width: 50px; 755 | border-radius: 5px; 756 | margin-left: 20px; 757 | display: none; 758 | } 759 | 760 | .sug-item-text h1{ 761 | font-size: 15px; 762 | margin-bottom: 5px; 763 | color: var(--secondary-color); 764 | font-family: var(--serif); 765 | font-weight: 900; 766 | } 767 | 768 | .sug-item-text p{ 769 | font-size: 10px; 770 | line-height: 14px; 771 | color: var(--secondary-color); 772 | } 773 | 774 | .options-title{ 775 | color: var(--secondary-color); 776 | font-weight: 900; 777 | letter-spacing: -1px; 778 | font-family: var(--serif); 779 | } 780 | 781 | .option-item h6{ 782 | font-size: 18px; 783 | line-height: 15px; 784 | color: var(--secondary-color); 785 | margin-bottom: 15px; 786 | } 787 | 788 | .option-item span{ 789 | font-size: 12px; 790 | line-height: 14px; 791 | margin-bottom: 15px; 792 | display: block; 793 | color: var(--secondary-color); 794 | } 795 | 796 | .option-item select, .css-file-ext{ 797 | width: 100%; 798 | padding: 5px; 799 | border-radius: 5px; 800 | border: 1px solid var(--hairline); 801 | background-color: var(--secondary-background); 802 | color: var(--secondary-color); 803 | margin-bottom: 10px; 804 | } 805 | 806 | .options-inner{ 807 | background-color: var(--background); 808 | padding: 40px; 809 | min-height: auto !important; 810 | height: auto; 811 | } 812 | 813 | .options-header{ 814 | margin-bottom: 22px; 815 | } 816 | 817 | .option-item{ 818 | margin-bottom: 20px; 819 | } 820 | 821 | .custom-css-wrap{ 822 | display: none; 823 | } 824 | 825 | .custom-css-wrap a{ 826 | font-size: 10px; 827 | color: var(--highlight); 828 | } 829 | 830 | .bookmarks-btn{ 831 | border-radius: 50%; 832 | border: 2px solid var(--primary-color); 833 | padding: 5px; 834 | height: 30px; 835 | width: 30px; 836 | margin-right: 10px; 837 | color: var(--primary-color); 838 | } 839 | 840 | .bookmarks-btn:hover{ 841 | background-color: var(--primary-color); 842 | color: var(--background) !important; 843 | cursor: pointer; 844 | } 845 | 846 | .bookmarks-btn i{ 847 | font-size: 12px; 848 | } 849 | 850 | .bookmarks-bar{ 851 | position: absolute; 852 | right: 0; 853 | top: 0; 854 | height: 100vh; 855 | width: 300px; 856 | z-index: 999; 857 | background-color: var(--background); 858 | box-shadow: var(--box-shadow-light); 859 | overflow-y: scroll; 860 | height: 100%; 861 | border-left: 1px solid var(--hairline); 862 | } 863 | 864 | a{ 865 | text-decoration: none; 866 | } 867 | 868 | .bookmarks-header{ 869 | padding: 20px 25px; 870 | } 871 | 872 | .bookmarks-header p{ 873 | font-size: 12px; 874 | color: var(--secondary-color); 875 | line-height: 14px; 876 | margin-top: 20px; 877 | } 878 | 879 | .bookmarks-list{ 880 | padding: 0 20px; 881 | } 882 | 883 | .bookmarks-item{ 884 | padding: 10px 20px; 885 | cursor: pointer; 886 | justify-content: space-between; 887 | margin: 10px 0; 888 | border-radius: 5px; 889 | background-color: var(--secondary-background); 890 | } 891 | 892 | .bookmarks-item:hover{ 893 | transform: scale(1.1) rotate(2deg); 894 | transition: 0.2s; 895 | } 896 | 897 | .bookmarks-item h4{ 898 | font-size: 15px; 899 | color: var(--secondary-color); 900 | font-weight: 400; 901 | } 902 | 903 | .bookmarnk-404{ 904 | padding: 50px; 905 | } 906 | 907 | .bookmarnk-404 img{ 908 | width: 100%; 909 | } 910 | 911 | .loading-overlay{ 912 | display: flex; 913 | background-color: var(--background); 914 | } 915 | 916 | .index-footer{ 917 | bottom: 0; 918 | position: fixed; 919 | left: 0; 920 | width: 100%; 921 | padding-bottom: 20px; 922 | } 923 | 924 | .product-hunt-image{ 925 | box-shadow: var(--box-shadow-prime); 926 | } 927 | .short-cuts-wrap{ 928 | padding-top: 20px; 929 | } 930 | 931 | 932 | .key-code{ 933 | background-color: var(--secondary-background); 934 | color: var(--secondary-color); 935 | padding: 3px; 936 | font-size: 15px; 937 | height: 30px; 938 | min-width: 30px; 939 | display: flex; 940 | font-weight: 900; 941 | border-radius: 5px; 942 | } 943 | 944 | .key-title{ 945 | color: var(--secondary-color); 946 | margin-left: 10px; 947 | font-size: 13px; 948 | } 949 | 950 | .keyboard-shortcut-item{ 951 | margin-bottom: 10px; 952 | display: flex; 953 | align-items: center; 954 | cursor: pointer; 955 | } 956 | 957 | .keyboard-shortcut-item:hover .key-code{ 958 | color: var(--highlight); 959 | transform: scale(1.1); 960 | } -------------------------------------------------------------------------------- /css/themes/auto.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/css/themes/auto.css -------------------------------------------------------------------------------- /css/themes/dark.css: -------------------------------------------------------------------------------- 1 | :root{ 2 | 3 | /* Theme Colors */ 4 | --button: rgb(29, 29, 29); 5 | --highlight: #0070f3; 6 | --background: black; 7 | --secondary-background: #0e0e0e; 8 | --hairline: #3b3e3f; 9 | 10 | /* Fonts*/ 11 | --primary-font: "Poppins", sans-serif; 12 | --serif: 'Playfair Display', serif;; 13 | --secondary-serif: 'Crimson Pro', serif;; 14 | 15 | /* Font Colors */ 16 | --primary-color: whitesmoke; 17 | --secondary-color: #bebebe; 18 | --tertiary-color: rgb(211, 211, 211); 19 | 20 | /* Misc */ 21 | --box-shadow-prime: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, rgba(0, 0, 0, 0.3) 0px 30px 60px -30px; 22 | --sidebar-width: 250px; 23 | 24 | --semi-color: rgba(19, 19, 19, 0.5) 25 | } -------------------------------------------------------------------------------- /css/themes/light.css: -------------------------------------------------------------------------------- 1 | :root{ 2 | 3 | /* Theme Colors */ 4 | --button: #181818; 5 | --highlight: #0070f3; 6 | --background: #ffffff; 7 | --secondary-background: #f0f0f08e; 8 | --hairline: #d1dbe0; 9 | 10 | /* Fonts*/ 11 | --primary-font: "Poppins", sans-serif; 12 | --serif: 'Playfair Display', serif;; 13 | --secondary-serif: 'Lora', serif;; 14 | 15 | /* Font Colors */ 16 | --primary-color: rgb(48, 48, 48); 17 | --secondary-color: #6c757d; 18 | --tertiary-color: #365463; 19 | 20 | /* Misc */ 21 | --box-shadow-prime: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, rgba(0, 0, 0, 0.3) 0px 30px 60px -30px; 22 | --box-shadow-light: rgba(17, 12, 46, 0.15) 0px 48px 100px 0px; 23 | --sidebar-width: 250px; 24 | 25 | --semi-color: rgba(250, 250, 250, 0.5); 26 | } -------------------------------------------------------------------------------- /css/wiki-fix.css: -------------------------------------------------------------------------------- 1 | .info-content tbody{ 2 | min-width: 300px; 3 | } 4 | 5 | .info-content tbody *{ 6 | color: var(--secondary-color); 7 | font-size: 14px; 8 | line-height: 18px; 9 | } 10 | 11 | .info-content .infobox-title{ 12 | display: none; 13 | } 14 | 15 | .info-content tr{ 16 | display: flex; 17 | flex-direction: column; 18 | padding: 15px; 19 | margin: 10px; 20 | border-radius: 5px; 21 | border: 1px dashed var(--hairline); 22 | min-width: 100%; 23 | } 24 | 25 | .info-content td{ 26 | width: 100%; 27 | } 28 | 29 | .info-content tbody *{ 30 | text-align: left; 31 | text-decoration: none; 32 | } 33 | 34 | .info-content tbody img{ 35 | width: 100%; 36 | height: auto; 37 | border-radius: 10px; 38 | } 39 | 40 | .info-content sup, .info-content .penicon, .info-content .infobox-caption{ 41 | display: none; 42 | } 43 | 44 | .info-content ul{ 45 | list-style: none; 46 | margin-block-start: 0; 47 | padding: 0; 48 | display: block !important; 49 | font-size: 10px; 50 | margin-top: 5px; 51 | } 52 | 53 | .info-content th *, .info-content th, .info-content .sidebar-list-title, .info-content .sidebar-list-title *{ 54 | font-size: 19px; 55 | color: gray !important; 56 | font-family: var(--serif) !important; 57 | margin-bottom: 3px; 58 | } 59 | 60 | 61 | .info-content .infobox-data{ 62 | font-size: 12px; 63 | line-height: 14px; 64 | margin-top: 5px 65 | } 66 | 67 | .info-content .infobox-data a{ 68 | color: var(--secondary-color); 69 | text-decoration: underline; 70 | font-size: 12px; 71 | } 72 | 73 | .info-content .mbox-text-span{ 74 | font-size: 12px; 75 | } 76 | 77 | .info-content .country-name{ 78 | display: inline; 79 | } 80 | 81 | .info-content .ib-settlement-caption, .info-content .ib-settlement-caption-link{ 82 | margin-top: 5px; 83 | font-size: 8px; 84 | } 85 | 86 | .info-content .mergedtoprow{ 87 | display: none; 88 | } 89 | 90 | .mw-editsection{ 91 | display: none !important; 92 | } 93 | -------------------------------------------------------------------------------- /custom-style.md: -------------------------------------------------------------------------------- 1 | # Add your custom Theme 2 | Adding your own theme to wikifox is just simple as blinking your eyes. Follow the below step to acheive it! 3 | 4 | - Click the `options` button on the wikifox homepage 5 | - Under `Appearence`, Choose `Custom CSS` 6 | - Add the link to your hosted css file after creating it (see below) 7 | - Thats all you got it! 8 | 9 | # Template 10 | Modify this template according to your color sense! 11 | 12 | ```css 13 | :root{ 14 | 15 | /* Theme Colors */ 16 | --button: #181818; 17 | --highlight: #0070f3; 18 | --background: #ffffff; 19 | --secondary-background: #f0f0f08e; 20 | --hairline: #d1dbe0; 21 | 22 | /* Font Colors */ 23 | --primary-color: rgb(48, 48, 48); 24 | --secondary-color: #6c757d; 25 | --tertiary-color: #365463; 26 | 27 | /* Misc */ 28 | --box-shadow-prime: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, rgba(0, 0, 0, 0.3) 0px 30px 60px -30px; 29 | --box-shadow-light: rgba(17, 12, 46, 0.15) 0px 48px 100px 0px; 30 | } 31 | ``` 32 | # Explaination 33 | | Variable | Description | 34 | |------------------------|-------------------------------------------------------------| 35 | | --button | The color of the buttons in the page | 36 | | --highlight | Some elements may highlight on hover, This may come in use! | 37 | | --background | Primary background of the page | 38 | | --secondary-background | Secondary elements, eg a search bar | 39 | | --hairline | Border colors | 40 | | --primary-color | Primary colors - Headings | 41 | | --secondary-color | Sub headings and content | 42 | | --tertiary-color | Rarely used in some parts (font color) | 43 | | --box-shadow-prime | Primary box shadow | 44 | | --box-shadow-light | Secondary box-shadow | 45 | 46 | 47 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | Wikifox - Wikipedia Re-imagined 25 | 26 | 30 | 34 | 35 | 36 | 37 | 38 | 39 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 53 | 54 | 55 | 67 | 68 | 70 | 71 | 72 | 73 |
74 |
75 |
76 |

Wikifox

77 |
78 | 85 |
86 |
87 | 88 |
89 |
90 | 91 |

options

92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |

Bookmarks

100 |

101 | All the items you bookmarked while you were reading appear here! 102 |

103 |
104 |
105 |
106 | 107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 | 134 |
135 | 147 |
148 | 149 |
150 |
151 |

152 | Wikifox is a clean and simplified version of the real Wikipedia! 153 |

154 |
155 | 158 |
159 |
160 |
161 | 162 |
163 |
164 |
165 |

Options

166 |
167 |
168 |
Appearance
169 | Choose your preferred Theme, or create your own css theme! Pro-tip: 171 | Dark theme make people invincible! 173 | 179 | 191 |
192 |
193 |
Language
194 | Choose your wikipedia from the endless list! 195 | 198 |
199 | 200 |
201 |
Keyboard Shortcuts
202 | Increase your productivity with Keyboard shortcuts! 203 |
204 |
205 |

View shortcuts

206 |
207 |
208 |
209 |
210 |
211 | 212 |
213 |
214 |
215 |

Keyboard Shortcuts

216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 | 225 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 263 | 264 | 265 | -------------------------------------------------------------------------------- /js/app.js: -------------------------------------------------------------------------------- 1 | var AppComponents = { 2 | root: $("#app"), 3 | contentWrap: $(".content-wrap"), 4 | introWrap: $(".intro-block"), 5 | imageBlock: $(".image-block"), 6 | pageBlock: $(".page-block"), 7 | sideBar: $(".side-bar"), 8 | infobox: $(".info-content"), 9 | editLink: $(".edit-link"), 10 | wikiLink: $(".wiki-link") 11 | } 12 | 13 | const language = localStorage.getItem("lang") || "en" 14 | const wiki = new Wikipedia(language); 15 | 16 | var wikiPage = { 17 | 18 | getData: function (xtitle) { 19 | 20 | var title; 21 | 22 | window["wiki"] = { 23 | title: title 24 | } 25 | 26 | 27 | wiki.getSummary(xtitle).then((data) => { 28 | 29 | 30 | var data = data.data; 31 | 32 | AppComponents.introWrap.html(` 33 |

${data.title}

34 |
${data.content}
35 | Read More 36 | `) 37 | 38 | var readmoreButton = $(".summary-read-more"); 39 | readmoreButton.on("click", function () { 40 | 41 | var status = $(this).attr("readmore"), 42 | abstract = $(".article-abstract"); 43 | 44 | if (status === "true") { 45 | abstract.removeClass("two-line") 46 | $(this).attr("readmore", "false").html("Read Less ") 47 | } 48 | else { 49 | abstract.addClass("two-line") 50 | $(this).attr("readmore", "true").html("Read More ") 51 | } 52 | }) 53 | 54 | window.wiki = { 55 | title: data.title, 56 | abstract: data.abstract 57 | } 58 | 59 | this.fetchContent(data.title); 60 | 61 | document.title = data.title + " - " + data.abstract + " - Wikifox"; 62 | 63 | AppComponents.editLink.attr("href", `https://en.wikipedia.org/w/index.php?title=${data.title}&action=edit`); 64 | AppComponents.wikiLink.attr("href", `https://en.wikipedia.org/wiki/${data.title}`); 65 | appUI.setBookMarkState(data.title); 66 | }) 67 | 68 | }, 69 | 70 | fetchContent: function (title) { 71 | 72 | wiki.getThumbnail(title).then((data) => { 73 | 74 | if(data.status !== "failed"){ 75 | AppComponents.imageBlock.html(` 76 |
77 | 78 |
`) 79 | 80 | } 81 | 82 | }) 83 | 84 | wiki.getFullContent(title).then((data) => { 85 | 86 | AppComponents.pageBlock.html(` 87 |
88 | ${data.data.content} 89 |
` 90 | ) 91 | 92 | $('#See_also').parent().nextAll('*').remove(); 93 | $('#See_also').remove() 94 | 95 | $('#References').parent().remove() 96 | $('#External_links').parent().remove() 97 | 98 | this.generateTOC() 99 | }) 100 | 101 | wiki.getInfoBox(title).then((data) => { 102 | 103 | if(data.status !== "failed"){ 104 | 105 | AppComponents.infobox.append(data.content) 106 | 107 | if(data.content === undefined){ 108 | AppComponents.infobox.remove() 109 | appUI.Elements.infoboxOpen.remove() 110 | } 111 | 112 | appUI.infoboxFix() 113 | } 114 | else{ 115 | AppComponents.infobox.remove() 116 | } 117 | 118 | }) 119 | 120 | appUI.hideLoader(); 121 | }, 122 | 123 | generateTOC: function () { 124 | var pageContent = $(".page-content"); 125 | var headings = pageContent.find("h2, h3"); 126 | 127 | var html = ""; 128 | 129 | $('span').each(function () { // For each element 130 | if ($(this).text().trim() === '') 131 | $(this).remove(); // if it is empty, it removes it 132 | }); 133 | 134 | for (let i = 0; i < headings.length; i++) { 135 | 136 | var text = $(headings[i]).find("span"), 137 | title = text.html(), 138 | href = text.attr("id"), 139 | level = text.parent().prop("tagName"); 140 | 141 | if (title !== undefined && title !== "") { 142 | html += ` 143 | <${level} class="toc-item toc-item-level-${parseInt(level.substr(1)) - 1} one-line"> 144 | 145 | ${title} 146 | 147 | 148 | 149 | ` 150 | } 151 | } 152 | 153 | $(".toc-wrap").append(` 154 | ${html} 155 | `) 156 | groupList(); 157 | 158 | 159 | function groupList() { 160 | var levelOne = $(".toc-item-level-1"); 161 | 162 | for (let i = 0; i < levelOne.length; i++) { 163 | var item = $(levelOne[i]), 164 | itemText = safeCss(item.find("a").text().trim()) 165 | 166 | item.nextUntil("h2").wrapAll(`
`) 167 | item.prependTo(`.item-box-${itemText}`).addClass("toc-top") 168 | } 169 | 170 | } 171 | $(".toc-wrap a").click(function () { 172 | appUI.OverlayHide(); 173 | }) 174 | 175 | }, 176 | getPDFfile(){ 177 | window.open("https://en.wikipedia.org/api/rest_v1/page/pdf/" + window.wiki.title) 178 | appUI.OverlayHide(); 179 | } 180 | } 181 | 182 | function safeCss(str) { 183 | return str.replace(/[!\"#$%&'\(\)\*\+,\.\/:;<=>\?\@\[\\\]\^`\{\|\}~]/g, '').replace(/ /g, '-'); 184 | } 185 | 186 | ShareThis({ 187 | sharers: [ ShareThisViaTwitter, ShareThisViaReddit, ShareThisViaSpeakers, ShareThisViaFacebook, ShareThisViaEmail], 188 | selector: ".content-wrap", 189 | popoverClass: "action-hide share-this-popover" 190 | }).init(); 191 | 192 | const search = pSearch = window.location.search; 193 | const urlParams = new URLSearchParams(search); 194 | const sQ = { 195 | article : urlParams.get('article'), 196 | a : urlParams.get('a'), 197 | w : urlParams.get('w'), 198 | wiki : urlParams.get('wiki'), 199 | cs: urlParams.get('cs'), 200 | } 201 | 202 | var title = sQ.article || sQ.a || sQ.w || sQ.wiki || search.substr(1) || "wikipedia" 203 | wikiPage.getData(title) 204 | 205 | 206 | if(sQ.cs === "dark"){ 207 | $("#themefile").attr("href", "css/themes/dark.css") 208 | } -------------------------------------------------------------------------------- /js/app.ui.js: -------------------------------------------------------------------------------- 1 | const appUI = { 2 | 3 | Elements: { 4 | searchInput: $('.jump-search-bar-input'), 5 | QuickSearch: $('.quick-jump-overlay'), 6 | QuickSearchPreview: $('.search-info-pv'), 7 | QuickSearchTOC: $('.toc-wrap'), 8 | QuickJumpBtn: $('.quick-jump-btn'), 9 | downloadGo: $(".download-go-button"), 10 | downloadOverlay: $(".download-overlay"), 11 | downloadButton: $(".download-pop"), 12 | contentHeader: $(".content-header"), 13 | searchSugWrap: $(".search-sug-wrap"), 14 | articelSearchInput: $(".search-input-art"), 15 | contentWrap: $(".content-wrap"), 16 | bookMarkBtn: $(".bookmark-btn"), 17 | shareGoBtn: $(".share-go-btn"), 18 | shareOverlay: $(".overlay-share"), 19 | infoboxOpen: $(".infobox-open"), 20 | infoboxClose: $(".infobox-close"), 21 | menuOpen: $(".menu-open"), 22 | menuNavig: $(".header-navig-wrap"), 23 | indexSearchBar: $(".index-search-bar") 24 | }, 25 | 26 | 27 | OverlayHide: function () { 28 | $('.action-hide').fadeOut(); 29 | try { 30 | this.Elements.indexSearchBar.removeClass("index-search-bar-active"); 31 | } catch { } 32 | }, 33 | 34 | hideLoader: function () { 35 | $(".loading-overlay").fadeOut(); 36 | }, 37 | 38 | QuickSearch: function () { 39 | this.Elements.QuickSearch.fadeIn(200).css('display', 'flex'); 40 | this.Elements.QuickSearchPreview.show(); 41 | this.Elements.QuickSearchTOC.hide(); 42 | }, 43 | 44 | DownloadPopup: function () { 45 | appUI.Elements.downloadOverlay.fadeIn().css('display', 'flex'); 46 | }, 47 | 48 | infoboxFix: function () { 49 | 50 | 51 | var removeItems = [ 52 | $($(".infobox-image")[1]).parent(), 53 | //$(".reference").parent().parent(), 54 | $(".sidebar-title-with-pretitle").parent(), 55 | $(".sidebar-pretitle").parent(), 56 | $(".navbar-mini").parent().parent(), 57 | $(".infobox-subheader").parent(), 58 | ] 59 | 60 | for (let i = 0; i < removeItems.length; i++) { 61 | $(removeItems[i]).remove(); 62 | } 63 | 64 | $("tbody * , page-content *").removeAttr("style") 65 | 66 | var barRight = $('.bar-right'); 67 | 68 | if (!barRight.html().trim()) { 69 | barRight.remove(); 70 | } 71 | 72 | 73 | $('tbody td').each(function () { 74 | if ($(this).text().trim() === '') 75 | $(this).parent().remove(); 76 | 77 | $('tbody').each(function () { 78 | if ($(this).text().trim() === '') 79 | $(this).parent().remove(); 80 | }) 81 | }); 82 | 83 | $(".info-content tr:empty").remove(); 84 | 85 | $("tbody a").click(function () { 86 | 87 | var href = $(this).attr("href"); 88 | 89 | if (href.startsWith("/wiki")) { 90 | 91 | var articleTitle = href.split("/"); 92 | $(this).attr("href", "?wiki=" + articleTitle[articleTitle.length - 1]); 93 | } 94 | 95 | }); 96 | 97 | setTimeout(function () { 98 | links = barRight.find('a'); 99 | 100 | links.each(function () { 101 | var href = $(this).attr("href"); 102 | 103 | if (href.startsWith("/wiki")) { 104 | var articleTitle = href.split("/"); 105 | $(this).attr("href", "?wiki=" + articleTitle[articleTitle.length - 1]); 106 | } 107 | }) 108 | }, 1000); 109 | 110 | }, 111 | 112 | searchSuggessionRender: function (data) { 113 | 114 | var resultDataArr = Object.values(data.data.results); 115 | 116 | const sugs = Object.values(resultDataArr).map((item, index) => ` 117 | 118 | 127 | 128 | `) 129 | 130 | this.Elements.searchSugWrap.html(`
${sugs.join('')}
`); 131 | 132 | 133 | $(".wikilink").on("click", function () { 134 | var x = $(this).attr("wikititle"); 135 | window.location.href = "?wiki=" + x; 136 | }); 137 | }, 138 | 139 | bookMarkArticle: function (title) { 140 | var bookMark = localStorage.getItem("bookmarks") || JSON.stringify([]) 141 | var ParsedbookMark = JSON.parse(bookMark); 142 | 143 | if (ParsedbookMark.includes(title)) { 144 | ParsedbookMark.splice(ParsedbookMark.indexOf(title), 1); 145 | } 146 | else { 147 | ParsedbookMark.push(title); 148 | } 149 | 150 | localStorage.setItem("bookmarks", JSON.stringify(ParsedbookMark)); 151 | this.setBookMarkState(title); 152 | }, 153 | 154 | 155 | 156 | setBookMarkState: function (title) { 157 | var bookMark = localStorage.getItem("bookmarks") || JSON.stringify([]); 158 | var ParsedbookMark = JSON.parse(bookMark); 159 | 160 | 161 | var bookMarkBtn = this.Elements.bookMarkBtn; 162 | 163 | if (ParsedbookMark.includes(title)) { 164 | 165 | window.wiki.bookMarkArticle = true; 166 | bookMarkBtn.find("i").removeClass("bi-heart").addClass("bi-heart-fill"); 167 | bookMarkBtn.attr("title", "Remove from Bookmarks"); 168 | 169 | } 170 | else { 171 | window.wiki.bookMarkArticle = false; 172 | bookMarkBtn.find("i").removeClass("bi-heart-fill").addClass("bi-heart"); 173 | bookMarkBtn.attr("title", "Add to Bookmarks"); 174 | } 175 | }, 176 | 177 | menuToggle: function () { 178 | 179 | var menuBtn = appUI.Elements.menuOpen, menuStatus = menuBtn.attr("open_s"), menuNavig = appUI.Elements.menuNavig, logotext = $(".logo-text"); 180 | 181 | if (menuStatus === "true") { 182 | 183 | logotext.fadeIn(); 184 | menuBtn.attr("open_s", "false"); 185 | menuNavig.fadeOut(); 186 | menuBtn.find("i").removeClass("bi-x").addClass("bi-list"); 187 | 188 | } 189 | else { 190 | 191 | logotext.fadeOut() 192 | menuBtn.attr("open_s", "true"); 193 | menuNavig.fadeIn().css("display", "flex"); 194 | menuBtn.find("i").removeClass("bi-list").addClass("bi-x"); 195 | 196 | } 197 | }, 198 | 199 | OpenDownloadPopup: function () { 200 | appUI.Elements.downloadOverlay.fadeIn().css('display', 'flex'); 201 | } 202 | 203 | } 204 | 205 | appUI.Elements.searchInput.on("input", (thisx) => { 206 | 207 | appUI.Elements.QuickSearchPreview.hide(); 208 | appUI.Elements.QuickSearchTOC.show(); 209 | 210 | var val = $(thisx.target).val(); 211 | $(".toc-wrap h3, .toc-wrap h2").each(function () { 212 | $(this).toggle($(this).text().toLowerCase().includes(val)); 213 | }); 214 | }); 215 | 216 | $(document).keydown(function (e) { 217 | var inputFocused = $("input[type=text]").is(":focus"); 218 | 219 | if (!inputFocused) { 220 | if (e.which === 81 && e.ctrlKey) { 221 | appUI.QuickSearch() 222 | } 223 | else if (e.which === 27) { 224 | appUI.OverlayHide(); 225 | } 226 | else if (e.which === 75) { 227 | $(".keyboard-overlay").fadeIn().css("display", "flex"); 228 | } 229 | } 230 | }); 231 | 232 | appUI.Elements.downloadGo.on("click", function () { 233 | wikiPage.getPDFfile() 234 | }) 235 | 236 | appUI.Elements.downloadButton.on("click", appUI.DownloadPopup) 237 | 238 | appUI.Elements.contentWrap.scroll(function () { 239 | 240 | var x = $(".info-content") 241 | appUI.OverlayHide(); 242 | var width = document.body.clientWidth; 243 | 244 | if (width > 940) { 245 | if ($(this).scrollTop() > 30) { 246 | appUI.Elements.contentHeader.fadeIn().css('display', 'flex'); 247 | x.addClass("pa-t-70") 248 | } else { 249 | appUI.Elements.contentHeader.fadeOut(); 250 | x.removeClass("pa-t-70") 251 | } 252 | } 253 | 254 | var winScroll = $(this).scrollTop() 255 | var height = $(this).prop('scrollHeight') - $(this).prop('clientHeight') 256 | var scrolled = (winScroll / height) * 100; 257 | 258 | $(".scroll-thumb").css("min-width", scrolled + "%"); 259 | 260 | }); 261 | 262 | appUI.Elements.articelSearchInput.on("input", function () { 263 | var x = $(this).val(); 264 | wiki.searchArticles(x).then((data) => { 265 | 266 | appUI.searchSuggessionRender(data); 267 | 268 | var resultDataArr = Object.values(data.data.results); 269 | for (let i = 0; i < resultDataArr.length; i++) { 270 | var title = resultDataArr[i].title, 271 | elem = $(`.image-${safeCss(title)}`); 272 | 273 | setImage(elem, title) 274 | } 275 | 276 | function setImage(elem, title) { 277 | wiki.getThumbnail(title, 100).then((idata) => { 278 | 279 | if (idata.data.image !== undefined) { 280 | elem.attr("src", idata.data.image); 281 | elem.parent().css("display", "block"); 282 | } 283 | 284 | }) 285 | 286 | } 287 | }) 288 | }); 289 | 290 | appUI.Elements.QuickJumpBtn.on("click", function () { 291 | appUI.QuickSearch() 292 | }) 293 | 294 | $(document).on('click', function (e) { 295 | if ($(e.target).closest(".action-x").length === 0) { 296 | $(".action-hide").hide(); 297 | } 298 | }); 299 | 300 | appUI.Elements.bookMarkBtn.on("click", function () { 301 | appUI.bookMarkArticle(window.wiki.title); 302 | }) 303 | 304 | appUI.Elements.shareGoBtn.on("click", function () { 305 | appUI.Elements.shareOverlay.fadeIn().css("display", "flex"); 306 | }) 307 | 308 | appUI.Elements.infoboxOpen.on("click", function () { 309 | AppComponents.infobox.fadeIn(); 310 | }) 311 | 312 | appUI.Elements.infoboxClose.on("click", function () { 313 | AppComponents.infobox.fadeOut(); 314 | }) 315 | 316 | appUI.Elements.menuOpen.on("click", appUI.menuToggle) 317 | 318 | Theme.setTheme() 319 | 320 | -------------------------------------------------------------------------------- /js/index.js: -------------------------------------------------------------------------------- 1 | const language = localStorage.getItem("lang") || "en" 2 | const wiki = new Wikipedia(language); 3 | 4 | var AppComponents = { 5 | SuggessionWrap: $(".index-sug-wrap"), 6 | SearchBar: $(".search-index-input"), 7 | RandomOpen: $(".random-open"), 8 | LangList: $(".lang-list"), 9 | themeList: $(".theme-list"), 10 | cssFileInputWrap: $(".custom-css-wrap"), 11 | cssFileInput: $(".css-file-ext"), 12 | optionOverlay: $(".options-overlay"), 13 | optionButton: $(".options-btn"), 14 | bookMarkList: $(".bookmarks-list"), 15 | bookMarksOpen: $(".bookmarks-btn"), 16 | bookmarksOverlay: $(".bookmarks-overlay"), 17 | githubBBtutton: $(".go-to-bottom-btn") 18 | } 19 | const Search = { 20 | 21 | renderSearchSugs: function (data) { 22 | 23 | var resultDataArr = Object.values(data.data.results); 24 | 25 | const sugs = Object.values(resultDataArr).map((item, index) => ` 26 | 27 | 36 | 37 | `) 38 | 39 | $(".index-sug-wrap").show(); 40 | AppComponents.githubBBtutton.hide(); 41 | AppComponents.SuggessionWrap.html(`${sugs.join('')}`); 42 | 43 | 44 | $(".wikilink").on("click", function () { 45 | var x = $(this).attr("wikititle"); 46 | window.location.href = "wiki.html?" + x; 47 | }); 48 | 49 | $(document).on('click', function (e) { 50 | if ($(e.target).closest(".action-x").length === 0) { 51 | $(".index-sug-wrap").hide(); 52 | } 53 | }); 54 | }, 55 | 56 | blurSearchBar: function () { 57 | $(".index-sug-wrap").hide() 58 | AppComponents.SuggessionWrap.html(``); 59 | AppComponents.SearchBar.val(``); 60 | AppComponents.SearchBar.blur(``); 61 | AppComponents.githubBBtutton.show(); 62 | } 63 | } 64 | 65 | const commonFuctions = { 66 | randomArticleOpen: function () { 67 | wiki.getRandomArticle().then(data => { 68 | var title = data.data.title 69 | window.location.href = "wiki.html?" + title; 70 | }) 71 | } 72 | } 73 | 74 | const Options = { 75 | loadWikiList: function(){ 76 | 77 | var url = "src/assets/resources/wikilist.json" 78 | 79 | fetch(url) 80 | .then(function (response) { 81 | return response.json(); 82 | }) 83 | .then(function (json) { 84 | 85 | const list = Object.values(json).map(item => ` 86 | 87 | `) 88 | AppComponents.LangList.html(list.join(" ")) 89 | 90 | var language = localStorage.getItem("lang"); 91 | 92 | try { 93 | document.querySelector(`.lang-list option[value="${language}"]`).selected = true 94 | } catch (error) {} 95 | }) 96 | 97 | this.setBookmarksList(); 98 | }, 99 | 100 | setBookmarksList: function(){ 101 | 102 | var x = JSON.parse(localStorage.getItem("bookmarks")) || false 103 | 104 | if(x.length !== 0){ 105 | AppComponents.bookMarkList.html("") 106 | for (let i = 0; i < x.length; i ++){ 107 | var title = x[i] 108 | AppComponents.bookMarkList.append( 109 | ` 110 | 111 |
112 |

${title}

113 |
114 |
115 | ` 116 | ) 117 | } 118 | } 119 | else{ 120 | AppComponents.bookMarkList.html(` 121 |
122 | 123 |
124 | `) 125 | } 126 | 127 | } 128 | } 129 | 130 | AppComponents.SearchBar.on("input", function () { 131 | 132 | var x = $(this).val(); 133 | $(".index-search-bar").addClass("index-search-bar-active"); 134 | 135 | 136 | try { 137 | document.title = "Search Results for \"" + x +"\" - Wikifox" 138 | wiki.searchArticles(x).then((data) => { 139 | 140 | Search.renderSearchSugs(data); 141 | 142 | var resultDataArr = Object.values(data.data.results); 143 | 144 | for (let i = 0; i < resultDataArr.length; i++) { 145 | var title = resultDataArr[i].title, 146 | elem = $(`.image-${safeCss(title)}`); 147 | 148 | setImage(elem, title) 149 | } 150 | 151 | function setImage(elem, title) { 152 | wiki.getThumbnail(title, 100).then((idata) => { 153 | 154 | if (idata.data.image !== undefined) { 155 | elem.attr("src", idata.data.image); 156 | elem.css("display", "block"); 157 | } 158 | 159 | }) 160 | 161 | } 162 | }) 163 | 164 | } catch (error) { 165 | Search.blurSearchBar() 166 | } 167 | }); 168 | 169 | function safeCss(str) { 170 | return str.replace(/[!\"#$%&'\(\)\*\+,\.\/:;<=>\?\@\[\\\]\^`\{\|\}~]/g, '').replace(/ /g, '-'); 171 | } 172 | 173 | $(document).keydown(function (e) { 174 | if (e.which === 27) { 175 | Search.blurSearchBar(); 176 | } 177 | }); 178 | 179 | 180 | AppComponents.RandomOpen.on("click", commonFuctions.randomArticleOpen) 181 | 182 | AppComponents.bookMarksOpen.on("click", function(){ 183 | AppComponents.bookmarksOverlay.fadeIn().css("display", "flex") 184 | }) 185 | 186 | AppComponents.optionButton.on("click", function(){ 187 | AppComponents.optionOverlay.fadeIn().css("display", "flex") 188 | }) 189 | 190 | AppComponents.themeList.on("change", (t)=> { 191 | var theme = $(t.target).val(); 192 | 193 | if (theme === "dark" || theme === "light" || theme === "auto"){ 194 | localStorage.setItem("cs", theme) 195 | AppComponents.cssFileInputWrap.hide() 196 | } 197 | else{ 198 | AppComponents.cssFileInputWrap.show() 199 | } 200 | 201 | AppComponents.cssFileInput.on("input", function(t){ 202 | var val = $(t.target).val() 203 | localStorage.setItem("cs", val) 204 | Theme.setTheme() 205 | 206 | }) 207 | 208 | Theme.setTheme() 209 | }) 210 | 211 | AppComponents.LangList.on("change", (t)=> { 212 | var lang = $(t.target).val(); 213 | localStorage.setItem("lang", lang) 214 | }) 215 | 216 | $(window).on("navigate", function (event, data) { 217 | var direction = data.state.direction; 218 | if (direction == 'back') { 219 | Search.blurSearchBar() 220 | } 221 | }); 222 | 223 | Options.loadWikiList() 224 | 225 | const search = pSearch = window.location.search; 226 | const urlParams = new URLSearchParams(search); 227 | var searchq = urlParams.get('search') 228 | 229 | if(searchq){ 230 | AppComponents.SearchBar.val(searchq) 231 | AppComponents.SearchBar.trigger("input") 232 | } -------------------------------------------------------------------------------- /js/keyboard.js: -------------------------------------------------------------------------------- 1 | const keyPairs = { 2 | keys :{ 3 | "b": { 4 | selector: '[class="option-icon bookmark-btn"]', 5 | description: "Bookmark article", 6 | key: "b" 7 | }, 8 | "d":{ 9 | selector: ".download-button", 10 | description: "Download the article", 11 | key: "d" 12 | }, 13 | "e": { 14 | selector: ".edit-link", 15 | description: "Edit page on Wikipedia", 16 | key: "e" 17 | }, 18 | "h": { 19 | selector: ".goHomeBtn", 20 | description: "Open home in new tab", 21 | key: "h" 22 | }, 23 | "p": { 24 | selector: ".download-button", 25 | description: "Download the article", 26 | key: "p" 27 | }, 28 | "s": { 29 | selector: ".share-go-btn", 30 | description: "Share articles", 31 | key: "s" 32 | }, 33 | "q": { 34 | selector: ".quick-jump-btn", 35 | description: "Quick Jump", 36 | key: "q" 37 | }, 38 | "w": { 39 | selector: ".wiki-link", 40 | description: "Open in Wikipedia", 41 | key: "w" 42 | }, 43 | "k": { 44 | selector: ".keyboard-btn", 45 | description: "Keyboard Shortcuts", 46 | key: "k" 47 | }, 48 | "esc": { 49 | selector: "", 50 | description: "Close pop-ups", 51 | key: "esc" 52 | }, 53 | }, 54 | links: ["e", "w", "h"] 55 | } 56 | 57 | 58 | $(document).ready(function() { 59 | 60 | var listenKeys = Object.keys(keyPairs.keys).join(",") 61 | hotkeys(listenKeys, function (event, handler){ 62 | 63 | if(keyPairs.links.includes(handler.key)){ 64 | var inputFocused = $("input[type=text]").is(":focus"); 65 | 66 | if(!inputFocused){ 67 | var link = $(keyPairs.keys[handler.key].selector).attr("href") 68 | if(link){ 69 | window.open(link) 70 | } 71 | } 72 | 73 | return; 74 | } 75 | 76 | $(keyPairs.keys[handler.key].selector).trigger("click"); 77 | }); 78 | 79 | var shortCutItems = Object.values(keyPairs.keys).map(item => ` 80 | 81 | 82 | 83 | ${item.key} 84 | 85 | 86 | 87 |
${item.description}
88 | 89 | 90 | `) 91 | 92 | $(".short-cuts-table").html(shortCutItems.join("")) 93 | }); 94 | 95 | $(".keyboard-btn").click(function(){ 96 | $(".keyboard-overlay").fadeIn().css("display","flex"); 97 | }) 98 | -------------------------------------------------------------------------------- /js/share.js: -------------------------------------------------------------------------------- 1 | $(".share-btn").click(function(){ 2 | var via = $(this).attr("via"); 3 | var body = window.wiki.title + ", " +window.wiki.abstract + " on Wikifox!"; 4 | Share(via, body); 5 | }) 6 | 7 | function Share(via, body, url = location.href) { 8 | if(via === "twitter"){ 9 | window.open('http://twitter.com/share?url='+encodeURIComponent(url)+'&text='+encodeURIComponent(body), '', 'left=0,top=0,width=550,height=450,personalbar=0,toolbar=0,scrollbars=0,resizable=0'); 10 | } 11 | else if(via === "facebook"){ 12 | window.open('https://www.facebook.com/sharer/sharer.php?u= '+encodeURIComponent(url) + ""e=" + body, '', 'left=0,top=0,width=600,height=400,personalbar=0,toolbar=0,scrollbars=0,resizable=0'); 13 | } 14 | else if(via === "reddit"){ 15 | window.open('http://www.reddit.com/submit?url='+encodeURIComponent(url)+'&title='+encodeURIComponent(body), '', 'left=0,top=0,width=600,height=400,personalbar=0,toolbar=0,scrollbars=0,resizable=0'); 16 | } 17 | else if(via === "copy"){ 18 | var dummy = document.createElement("input"); 19 | document.body.appendChild(dummy); 20 | dummy.setAttribute('value', url); 21 | dummy.select(); 22 | document.execCommand("copy"); 23 | document.body.removeChild(dummy); 24 | } 25 | else if(via === "email"){ 26 | window.open('mailto:?subject='+encodeURIComponent(body)+'&body='+encodeURIComponent(url), '', 'left=0,top=0,width=600,height=400,personalbar=0,toolbar=0,scrollbars=0,resizable=0'); 27 | } 28 | appUI.OverlayHide(); 29 | } -------------------------------------------------------------------------------- /js/themes.js: -------------------------------------------------------------------------------- 1 | const Theme = { 2 | setTheme: function(){ 3 | var theme = localStorage.getItem("cs") ?? "auto" 4 | 5 | 6 | if(theme === "auto"){ 7 | if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { 8 | theme= "dark" 9 | } 10 | else{ 11 | theme = "light" 12 | } 13 | } 14 | 15 | if(theme === "light" || theme === "dark" || theme === "auto"){ 16 | selectOption(theme) 17 | theme = `css/themes/${theme}.css`; 18 | } 19 | else{ 20 | selectOption("css") 21 | } 22 | 23 | this.importCss(theme) 24 | 25 | function selectOption(value){ 26 | try { 27 | document.querySelector(`.theme-list option[value="${value}"]`).selected = true 28 | } catch {} 29 | } 30 | 31 | }, 32 | importCss: function(fileurl){ 33 | $("head").append(``) 34 | } 35 | } -------------------------------------------------------------------------------- /src/assets/icons/favicon-black.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/favicon-violet.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 10 | 38 | 40 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/assets/icons/favicon-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/icons/icon.png -------------------------------------------------------------------------------- /src/assets/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/1.png -------------------------------------------------------------------------------- /src/assets/images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/2.png -------------------------------------------------------------------------------- /src/assets/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/3.png -------------------------------------------------------------------------------- /src/assets/images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/4.png -------------------------------------------------------------------------------- /src/assets/images/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/5.png -------------------------------------------------------------------------------- /src/assets/images/GitHub-Mark-Light-32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/GitHub-Mark-Light-32px.png -------------------------------------------------------------------------------- /src/assets/images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/banner.png -------------------------------------------------------------------------------- /src/assets/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/download.png -------------------------------------------------------------------------------- /src/assets/images/inky-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/inky-search.png -------------------------------------------------------------------------------- /src/assets/images/not-found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/not-found.png -------------------------------------------------------------------------------- /src/assets/images/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wikifox/wikifox/2e310d5bec2f8b1a85b4f7d92b50de3c8c8e6099/src/assets/images/share.png -------------------------------------------------------------------------------- /src/assets/resources/wikilist.json: -------------------------------------------------------------------------------- 1 | { 2 | "English": { 3 | "code": "en", 4 | "name": "English Wikipedia", 5 | "title": "English" 6 | }, 7 | "Simple English": { 8 | "code": "simple", 9 | "name": "Simple English Wikipedia", 10 | "title": "Simple English" 11 | }, 12 | "French": { 13 | "code": "fr", 14 | "name": "Wikipédia en français", 15 | "title": "French" 16 | }, 17 | "German": { 18 | "code": "de", 19 | "name": "Deutschsprachige Wikipedia", 20 | "title": "German" 21 | }, 22 | "Spanish": { 23 | "code": "es", 24 | "name": "Wikipedia en español", 25 | "title": "Spanish" 26 | }, 27 | "Japanese": { 28 | "code": "ja", 29 | "name": "ウィキペディア 日本語版", 30 | "title": "Japanese" 31 | }, 32 | "Russian": { 33 | "code": "ru", 34 | "name": "Русская Википедия", 35 | "title": "Russian" 36 | }, 37 | "Portuguese": { 38 | "code": "pt", 39 | "name": "Wikipédia em português", 40 | "title": "Portuguese" 41 | }, 42 | "Chinese (written vernacular Chinese, a form of Mandarin)": { 43 | "code": "zh", 44 | "name": "中文維基百科", 45 | "title": "Chinese" 46 | }, 47 | "Italian": { 48 | "code": "it", 49 | "name": "Wikipedia in italiano", 50 | "title": "Italian" 51 | }, 52 | "Persian": { 53 | "code": "fa", 54 | "name": "ویکی‌پدیای فارسی", 55 | "title": "Persian" 56 | }, 57 | "Arabic": { 58 | "code": "ar", 59 | "name": "ويكيبيديا العربية", 60 | "title": "Arabic" 61 | }, 62 | "Polish": { 63 | "code": "pl", 64 | "name": "Polskojęzyczna Wikipedia", 65 | "title": "Polish" 66 | }, 67 | "Dutch": { 68 | "code": "nl", 69 | "name": "Nederlandstalige Wikipedia", 70 | "title": "Dutch" 71 | }, 72 | "Ukrainian": { 73 | "code": "uk", 74 | "name": "Українська Вікіпедія", 75 | "title": "Ukrainian" 76 | }, 77 | "Indonesian": { 78 | "code": "id", 79 | "name": "Wikipedia bahasa Indonesia", 80 | "title": "Indonesian" 81 | }, 82 | "Hebrew": { 83 | "code": "he", 84 | "name": "ויקיפדיה העברית", 85 | "title": "Hebrew" 86 | }, 87 | "Vietnamese": { 88 | "code": "vi", 89 | "name": "Wikipedia tiếng Việt", 90 | "title": "Vietnamese" 91 | }, 92 | "Turkish": { 93 | "code": "tr", 94 | "name": "Türkçe Vikipedi", 95 | "title": "Turkish" 96 | }, 97 | "Swedish": { 98 | "code": "sv", 99 | "name": "Svenskspråkiga Wikipedia", 100 | "title": "Swedish" 101 | }, 102 | "Korean": { 103 | "code": "ko", 104 | "name": "한국어 위키백과", 105 | "title": "Korean" 106 | }, 107 | "Czech": { 108 | "code": "cs", 109 | "name": "Česká Wikipedie", 110 | "title": "Czech" 111 | }, 112 | "Finnish": { 113 | "code": "fi", 114 | "name": "Suomenkielinen Wikipedia", 115 | "title": "Finnish" 116 | }, 117 | "Hungarian": { 118 | "code": "hu", 119 | "name": "Magyar Wikipédia", 120 | "title": "Hungarian" 121 | }, 122 | "Catalan": { 123 | "code": "ca", 124 | "name": "Viquipèdia en català", 125 | "title": "Catalan" 126 | }, 127 | "Hindi": { 128 | "code": "hi", 129 | "name": "हिन्दी विकिपीडिया", 130 | "title": "Hindi" 131 | }, 132 | "Norwegian (Bokmål)": { 133 | "code": "no", 134 | "name": "Bokmål Wikipedia", 135 | "title": "Norwegian (Bokmål)" 136 | }, 137 | "Bengali": { 138 | "code": "bn", 139 | "name": "বাংলা উইকিপিডিয়া", 140 | "title": "Bengali" 141 | }, 142 | "Thai": { 143 | "code": "th", 144 | "name": "วิกิพีเดียภาษาไทย", 145 | "title": "Thai" 146 | }, 147 | "Greek": { 148 | "code": "el", 149 | "name": "Ελληνική Βικιπαίδεια", 150 | "title": "Greek" 151 | }, 152 | "Romanian": { 153 | "code": "ro", 154 | "name": "Wikipedia în română", 155 | "title": "Romanian" 156 | }, 157 | "Danish": { 158 | "code": "da", 159 | "name": "Dansk Wikipedia", 160 | "title": "Danish" 161 | }, 162 | "Azerbaijani": { 163 | "code": "az", 164 | "name": "Azərbaycanca Vikipediya", 165 | "title": "Azerbaijani" 166 | }, 167 | "Serbian": { 168 | "code": "sr", 169 | "name": "Википедија на српском језику", 170 | "title": "Serbian" 171 | }, 172 | "Bulgarian": { 173 | "code": "bg", 174 | "name": "Българоезична Уикипедия", 175 | "title": "Bulgarian" 176 | }, 177 | "Malay": { 178 | "code": "ms", 179 | "name": "Wikipedia Bahasa Melayu", 180 | "title": "Malay" 181 | }, 182 | "Estonian": { 183 | "code": "et", 184 | "name": "Eestikeelne Vikipeedia", 185 | "title": "Estonian" 186 | }, 187 | "Croatian": { 188 | "code": "hr", 189 | "name": "Hrvatska Wikipedija", 190 | "title": "Croatian" 191 | }, 192 | "Armenian": { 193 | "code": "hy", 194 | "name": "Հայերեն Վիքիպեդիա", 195 | "title": "Armenian" 196 | }, 197 | "Slovak": { 198 | "code": "sk", 199 | "name": "Slovenská Wikipedia", 200 | "title": "Slovak" 201 | }, 202 | "Malayalam": { 203 | "code": "ml", 204 | "name": "Malayalam Wikipedia", 205 | "title": "Malayalam" 206 | }, 207 | "Basque": { 208 | "code": "eu", 209 | "name": "Euskarazko Wikipedia", 210 | "title": "Basque" 211 | }, 212 | "Cantonese": { 213 | "code": "zh-yue", 214 | "name": "Cantonese Wikipedia", 215 | "title": "Cantonese" 216 | }, 217 | "Slovene": { 218 | "code": "sl", 219 | "name": "Slovenska Wikipedija", 220 | "title": "Slovene" 221 | }, 222 | "Esperanto": { 223 | "code": "eo", 224 | "name": "Vikipedio en Esperanto", 225 | "title": "Esperanto" 226 | }, 227 | "Lithuanian": { 228 | "code": "lt", 229 | "name": "Lietuviškoji Vikipedija", 230 | "title": "Lithuanian" 231 | }, 232 | "Tamil": { 233 | "code": "ta", 234 | "name": "தமிழ் விக்கிபீடியா", 235 | "title": "Tamil" 236 | }, 237 | "Albanian": { 238 | "code": "sq", 239 | "name": "Wikipedia shqip", 240 | "title": "Albanian" 241 | }, 242 | "Latvian": { 243 | "code": "lv", 244 | "name": "Vikipēdija latviešu valodā", 245 | "title": "Latvian" 246 | }, 247 | "Belarusian": { 248 | "code": "be", 249 | "name": "Беларуская Вікіпедыя", 250 | "title": "Belarusian" 251 | }, 252 | "Galician": { 253 | "code": "gl", 254 | "name": "Galipedia", 255 | "title": "Galician" 256 | }, 257 | "Georgian": { 258 | "code": "ka", 259 | "name": "ქართული ვიკიპედია", 260 | "title": "Georgian" 261 | }, 262 | "Urdu": { 263 | "code": "ur", 264 | "name": "اردو ویکیپیڈیا", 265 | "title": "Urdu" 266 | }, 267 | "Kazakh": { 268 | "code": "kk", 269 | "name": "Қазақша Уикипедия", 270 | "title": "Kazakh" 271 | }, 272 | "Macedonian": { 273 | "code": "mk", 274 | "name": "Македонска Википедија", 275 | "title": "Macedonian" 276 | }, 277 | "Uzbek": { 278 | "code": "uz", 279 | "name": "Oʻzbekcha Vikipediya", 280 | "title": "Uzbek" 281 | }, 282 | "Telugu": { 283 | "code": "te", 284 | "name": "తెలుగు వికీపీడియా", 285 | "title": "Telugu" 286 | }, 287 | "Marathi": { 288 | "code": "mr", 289 | "name": "Marathi Wikipedia", 290 | "title": "Marathi" 291 | }, 292 | "Serbo-Croatian": { 293 | "code": "sh", 294 | "name": "Srpskohrvatska Wikipedija", 295 | "title": "Serbo-Croatian" 296 | }, 297 | "Egyptian Arabic": { 298 | "code": "arz", 299 | "name": "ويكيپيديا مصرى", 300 | "title": "Egyptian Arabic" 301 | }, 302 | "Afrikaans": { 303 | "code": "af", 304 | "name": "Afrikaanse Wikipedia", 305 | "title": "Afrikaans" 306 | }, 307 | "Bosnian": { 308 | "code": "bs", 309 | "name": "Wikipedia na bosanskom jeziku", 310 | "title": "Bosnian" 311 | }, 312 | "Cebuano": { 313 | "code": "ceb", 314 | "name": "Wikipedya sa Sinugboanon", 315 | "title": "Cebuano" 316 | }, 317 | "Kannada": { 318 | "code": "kn", 319 | "name": "ಕನ್ನಡ ವಿಕಿಪೀಡಿಯ", 320 | "title": "Kannada" 321 | }, 322 | "Hausa": { 323 | "code": "ha", 324 | "name": "Hausa Wikipedia", 325 | "title": "Hausa" 326 | }, 327 | "Norwegian (Nynorsk)": { 328 | "code": "nn", 329 | "name": "Nynorsk Wikipedia", 330 | "title": "Norwegian (Nynorsk)" 331 | }, 332 | "Icelandic": { 333 | "code": "is", 334 | "name": "Icelandic Wikipedia", 335 | "title": "Icelandic" 336 | }, 337 | "Latin": { 338 | "code": "la", 339 | "name": "Vicipaedia Latina", 340 | "title": "Latin" 341 | }, 342 | "Burmese": { 343 | "code": "my", 344 | "name": "Burmese Wikipedia", 345 | "title": "Burmese" 346 | }, 347 | "Swahili": { 348 | "code": "sw", 349 | "name": "Wikipedia ya Kiswahili", 350 | "title": "Swahili" 351 | }, 352 | "Asturian": { 353 | "code": "ast", 354 | "name": "Asturian Wikipedia", 355 | "title": "Asturian" 356 | }, 357 | "Tagalog": { 358 | "code": "tl", 359 | "name": "Tagalog Wikipedia", 360 | "title": "Tagalog" 361 | }, 362 | "Belarusian (Taraškievica)": { 363 | "code": "be-tarask", 364 | "name": "Беларуская Вікіпэдыя", 365 | "title": "Belarusian (Taraškievica)" 366 | }, 367 | "Javanese": { 368 | "code": "jv", 369 | "name": "Javanese Wikipedia", 370 | "title": "Javanese" 371 | }, 372 | "Bashkir": { 373 | "code": "ba", 374 | "name": "Bashkir Wikipedia", 375 | "title": "Bashkir" 376 | }, 377 | "Assamese": { 378 | "code": "as", 379 | "name": "অসমীয়া ৱিকিপিডিয়া", 380 | "title": "Assamese" 381 | }, 382 | "Kurdish (Sorani)": { 383 | "code": "ckb", 384 | "name": "ویکیپیدیای کوردی", 385 | "title": "Kurdish (Sorani)" 386 | }, 387 | "Iran Azerbaijani": { 388 | "code": "azb", 389 | "name": "تورکجه ویکی‌پدیا", 390 | "title": "Iran Azerbaijani" 391 | }, 392 | "Sinhalese": { 393 | "code": "si", 394 | "name": "Sinhalese Wikipedia", 395 | "title": "Sinhalese" 396 | }, 397 | "Welsh": { 398 | "code": "cy", 399 | "name": "Welsh Wikipedia", 400 | "title": "Welsh" 401 | }, 402 | "Scots": { 403 | "code": "sco", 404 | "name": "Scots Wikipedia", 405 | "title": "Scots" 406 | }, 407 | "Nepali": { 408 | "code": "ne", 409 | "name": "Nepali Wikipedia", 410 | "title": "Nepali" 411 | }, 412 | "Breton": { 413 | "code": "br", 414 | "name": "Breton Wikipedia", 415 | "title": "Breton" 416 | }, 417 | "Tatar": { 418 | "code": "tt", 419 | "name": "Tatar Wikipedia", 420 | "title": "Tatar" 421 | }, 422 | "Alemannic": { 423 | "code": "als", 424 | "name": "Alemannic Wikipedia", 425 | "title": "Alemannic" 426 | }, 427 | "Irish": { 428 | "code": "ga", 429 | "name": "Vicipéid na Gaeilge", 430 | "title": "Irish" 431 | }, 432 | "Southern Min /Min Nan": { 433 | "code": "zh-min-nan", 434 | "name": "Min Nan Wikipedia", 435 | "title": "Southern Min /Min Nan" 436 | }, 437 | "Occitan": { 438 | "code": "oc", 439 | "name": "Occitan Wikipedia", 440 | "title": "Occitan" 441 | }, 442 | "Mongolian": { 443 | "code": "mn", 444 | "name": "Монгол Википедиа", 445 | "title": "Mongolian" 446 | }, 447 | "Somali": { 448 | "code": "so", 449 | "name": "Somali Wikipedia", 450 | "title": "Somali" 451 | }, 452 | "Gujarati": { 453 | "code": "gu", 454 | "name": "Gujarati Wikipedia", 455 | "title": "Gujarati" 456 | }, 457 | "Eastern Punjabi": { 458 | "code": "pa", 459 | "name": "Eastern Punjabi Wikipedia", 460 | "title": "Eastern Punjabi" 461 | }, 462 | "Kyrgyz": { 463 | "code": "ky", 464 | "name": "Kyrgyz Wikipedia", 465 | "title": "Kyrgyz" 466 | }, 467 | "Waray": { 468 | "code": "war", 469 | "name": "Waray Wikipedia", 470 | "title": "Waray" 471 | }, 472 | "Aragonese": { 473 | "code": "an", 474 | "name": "Aragonese Wikipedia", 475 | "title": "Aragonese" 476 | }, 477 | "Kurdish (Kurmanji)": { 478 | "code": "ku", 479 | "name": "Wîkîpediya kurdî", 480 | "title": "Kurdish (Kurmanji)" 481 | }, 482 | "Dagbani": { 483 | "code": "dag", 484 | "name": "Dagbani Wikipedia", 485 | "title": "Dagbani" 486 | }, 487 | "Luxembourgish": { 488 | "code": "lb", 489 | "name": "Luxembourgish Wikipedia", 490 | "title": "Luxembourgish" 491 | }, 492 | "Tajik": { 493 | "code": "tg", 494 | "name": "Tajik Wikipedia", 495 | "title": "Tajik" 496 | }, 497 | "Bavarian": { 498 | "code": "bar", 499 | "name": "Bavarian Wikipedia", 500 | "title": "Bavarian" 501 | }, 502 | "Khmer": { 503 | "code": "km", 504 | "name": "Khmer Wikipedia", 505 | "title": "Khmer" 506 | }, 507 | "Classical Chinese": { 508 | "code": "zh-classical", 509 | "name": "Classical Chinese Wikipedia", 510 | "title": "Classical Chinese" 511 | }, 512 | "Yoruba": { 513 | "code": "yo", 514 | "name": "Yoruba Wikipedia", 515 | "title": "Yoruba" 516 | }, 517 | "Sundanese": { 518 | "code": "su", 519 | "name": "Sundanese Wikipedia", 520 | "title": "Sundanese" 521 | }, 522 | "Minangkabau": { 523 | "code": "min", 524 | "name": "Minangkabau Wikipedia", 525 | "title": "Minangkabau" 526 | }, 527 | "Pashto": { 528 | "code": "ps", 529 | "name": "Pashto Wikipedia", 530 | "title": "Pashto" 531 | }, 532 | "Central Bikol": { 533 | "code": "bcl", 534 | "name": "Central Bicolano Wikipedia", 535 | "title": "Central Bikol" 536 | }, 537 | "Western Punjabi": { 538 | "code": "pnb", 539 | "name": "Western Punjabi Wikipedia", 540 | "title": "Western Punjabi" 541 | }, 542 | "Low German": { 543 | "code": "nds", 544 | "name": "Low Saxon Wikipedia", 545 | "title": "Low German" 546 | }, 547 | "Turkmen": { 548 | "code": "tk", 549 | "name": "Turkmen Wikipedia", 550 | "title": "Turkmen" 551 | }, 552 | "Malagasy": { 553 | "code": "mg", 554 | "name": "Malagasy Wikipedia", 555 | "title": "Malagasy" 556 | }, 557 | "West Frisian": { 558 | "code": "fy", 559 | "name": "West Frisian Wikipedia", 560 | "title": "West Frisian" 561 | }, 562 | "Odia": { 563 | "code": "or", 564 | "name": "Odia Wikipedia", 565 | "title": "Odia" 566 | }, 567 | "Old English /Anglo-Saxon": { 568 | "code": "ang", 569 | "name": "Anglo-Saxon Wikipedia", 570 | "title": "Old English /Anglo-Saxon" 571 | }, 572 | "Fiji Hindi": { 573 | "code": "hif", 574 | "name": "Fiji Hindi Wikipedia", 575 | "title": "Fiji Hindi" 576 | }, 577 | "Ido": { 578 | "code": "io", 579 | "name": "Ido Wikipedia", 580 | "title": "Ido" 581 | }, 582 | "Chuvash": { 583 | "code": "cv", 584 | "name": "Chuvash Wikipedia", 585 | "title": "Chuvash" 586 | }, 587 | "Chechen": { 588 | "code": "ce", 589 | "name": "Chechen Wikipedia", 590 | "title": "Chechen" 591 | }, 592 | "Haitian Creole": { 593 | "code": "ht", 594 | "name": "Haitian Creole Wikipedia", 595 | "title": "Haitian Creole" 596 | }, 597 | "Lombard": { 598 | "code": "lmo", 599 | "name": "Lombard Wikipedia", 600 | "title": "Lombard" 601 | }, 602 | "Wu": { 603 | "code": "wuu", 604 | "name": "Wu Wikipedia", 605 | "title": "Wu" 606 | }, 607 | "Amharic": { 608 | "code": "am", 609 | "name": "Amharic Wikipedia", 610 | "title": "Amharic" 611 | }, 612 | "Igbo": { 613 | "code": "ig", 614 | "name": "Igbo Wikipedia", 615 | "title": "Igbo" 616 | }, 617 | "Yiddish": { 618 | "code": "yi", 619 | "name": "Yiddish Wikipedia", 620 | "title": "Yiddish" 621 | }, 622 | "Quechua": { 623 | "code": "qu", 624 | "name": "Quechua Wikipedia", 625 | "title": "Quechua" 626 | }, 627 | "Bihari (Bhojpuri)": { 628 | "code": "bh", 629 | "name": "Bhojpuri Wikipedia", 630 | "title": "Bihari (Bhojpuri)" 631 | }, 632 | "Balinese": { 633 | "code": "ban", 634 | "name": "Balinese Wikipedia", 635 | "title": "Balinese" 636 | }, 637 | "Mazanderani": { 638 | "code": "mzn", 639 | "name": "Mazandarani Wikipedia", 640 | "title": "Mazanderani" 641 | }, 642 | "Moroccan Arabic": { 643 | "code": "ary", 644 | "name": "Moroccan Arabic Wikipedia", 645 | "title": "Moroccan Arabic" 646 | }, 647 | "Yakut/Sakha": { 648 | "code": "sah", 649 | "name": "Sakha Wikipedia", 650 | "title": "Yakut/Sakha" 651 | }, 652 | "Interlingua": { 653 | "code": "ia", 654 | "name": "Interlingua Wikipedia", 655 | "title": "Interlingua" 656 | }, 657 | "Venetian": { 658 | "code": "vec", 659 | "name": "Venetian Wikipedia", 660 | "title": "Venetian" 661 | }, 662 | "Acehnese": { 663 | "code": "ace", 664 | "name": "Acehnese Wikipedia", 665 | "title": "Acehnese" 666 | }, 667 | "Lao": { 668 | "code": "lo", 669 | "name": "Lao Wikipedia", 670 | "title": "Lao" 671 | }, 672 | "Sicilian": { 673 | "code": "scn", 674 | "name": "Sicilian Wikipedia", 675 | "title": "Sicilian" 676 | }, 677 | "Faroese": { 678 | "code": "fo", 679 | "name": "Faroese Wikipedia", 680 | "title": "Faroese" 681 | }, 682 | "Sanskrit": { 683 | "code": "sa", 684 | "name": "संस्कृतविकिपीडिया", 685 | "title": "Sanskrit" 686 | }, 687 | "Cornish": { 688 | "code": "kw", 689 | "name": "Cornish Wikipedia", 690 | "title": "Cornish" 691 | }, 692 | "Zazaki": { 693 | "code": "diq", 694 | "name": "Zazaki Wikipedia", 695 | "title": "Zazaki" 696 | }, 697 | "Guarani": { 698 | "code": "gn", 699 | "name": "Guarani Wikipedia", 700 | "title": "Guarani" 701 | }, 702 | "Sindhi": { 703 | "code": "sd", 704 | "name": "سنڌي وڪيپيڊيا", 705 | "title": "Sindhi" 706 | }, 707 | "Westerm Armenian": { 708 | "code": "hyw", 709 | "name": "Western Armenian Wikipedia", 710 | "title": "Westerm Armenian" 711 | }, 712 | "Emilian- Romagnol": { 713 | "code": "eml", 714 | "name": "Emilian-Romagnol Wikipedia", 715 | "title": "Emilian- Romagnol" 716 | }, 717 | "Interlingue": { 718 | "code": "ie", 719 | "name": "Interlingue Wikipedia", 720 | "title": "Interlingue" 721 | }, 722 | "Kinyarwanda": { 723 | "code": "rw", 724 | "name": "Kinyarwanda Wikipedia", 725 | "title": "Kinyarwanda" 726 | }, 727 | "Maithili": { 728 | "code": "mai", 729 | "name": "Maithili Wikipedia", 730 | "title": "Maithili" 731 | }, 732 | "Silesian": { 733 | "code": "szl", 734 | "name": "Silesian Wikipedia", 735 | "title": "Silesian" 736 | }, 737 | "Volapük": { 738 | "code": "vo", 739 | "name": "Vükiped Volapükik", 740 | "title": "Volapük" 741 | }, 742 | "Aymara": { 743 | "code": "ay", 744 | "name": "Aymara Wikipedia", 745 | "title": "Aymara" 746 | }, 747 | "Santali": { 748 | "code": "sat", 749 | "name": "Santali Wikipedia", 750 | "title": "Santali" 751 | }, 752 | "Corsican": { 753 | "code": "co", 754 | "name": "Corsican Wikipedia", 755 | "title": "Corsican" 756 | }, 757 | "Sardinian": { 758 | "code": "sc", 759 | "name": "Sardinian Wikipedia", 760 | "title": "Sardinian" 761 | }, 762 | "Mingrelian": { 763 | "code": "xmf", 764 | "name": "Mingrelian Wikipedia", 765 | "title": "Mingrelian" 766 | }, 767 | "Newar/ Nepal Bhasa": { 768 | "code": "new", 769 | "name": "Newar Wikipedia", 770 | "title": "Newar/ Nepal Bhasa" 771 | }, 772 | "Zulu": { 773 | "code": "zu", 774 | "name": "Zulu Wikipedia", 775 | "title": "Zulu" 776 | }, 777 | "Upper Sorbian": { 778 | "code": "hsb", 779 | "name": "Hornjoserbska wikipedija", 780 | "title": "Upper Sorbian" 781 | }, 782 | "Ligurian": { 783 | "code": "lij", 784 | "name": "Ligurian Wikipedia", 785 | "title": "Ligurian" 786 | }, 787 | "Dutch Low Saxon": { 788 | "code": "nds-nl", 789 | "name": "Dutch Low Saxon Wikipedia", 790 | "title": "Dutch Low Saxon" 791 | }, 792 | "Ossetian": { 793 | "code": "os", 794 | "name": "Ossetian Wikipedia", 795 | "title": "Ossetian" 796 | }, 797 | "Scottish Gaelic": { 798 | "code": "gd", 799 | "name": "Scottish Gaelic Wikipedia", 800 | "title": "Scottish Gaelic" 801 | }, 802 | "Akan": { 803 | "code": "ak", 804 | "name": "Akan Wikipedia", 805 | "title": "Akan" 806 | }, 807 | "Hakka": { 808 | "code": "hak", 809 | "name": "Hakka Wikipedia", 810 | "title": "Hakka" 811 | }, 812 | "West Flemish": { 813 | "code": "vls", 814 | "name": "West Flemish Wikipedia", 815 | "title": "West Flemish" 816 | }, 817 | "Bislama": { 818 | "code": "bi", 819 | "name": "Bislama Wikipedia", 820 | "title": "Bislama" 821 | }, 822 | "Franco- Provençal /Arpitan": { 823 | "code": "frp", 824 | "name": "Franco-Provençal Wikipedia", 825 | "title": "Franco- Provençal /Arpitan" 826 | }, 827 | "Maltese": { 828 | "code": "mt", 829 | "name": "Maltese Wikipedia", 830 | "title": "Maltese" 831 | }, 832 | "Neapolitan": { 833 | "code": "nap", 834 | "name": "Neapolitan Wikipedia", 835 | "title": "Neapolitan" 836 | }, 837 | "Shona": { 838 | "code": "sn", 839 | "name": "Shona Wikipedia", 840 | "title": "Shona" 841 | }, 842 | "Veps": { 843 | "code": "vep", 844 | "name": "Veps Wikipedia", 845 | "title": "Veps" 846 | }, 847 | "Crimean Tatar": { 848 | "code": "crh", 849 | "name": "Crimean Tatar Wikipedia", 850 | "title": "Crimean Tatar" 851 | }, 852 | "Samogitian": { 853 | "code": "bat-smg", 854 | "name": "Samogitian Wikipedia", 855 | "title": "Samogitian" 856 | }, 857 | "Limburgish": { 858 | "code": "li", 859 | "name": "Limburgish Wikipedia", 860 | "title": "Limburgish" 861 | }, 862 | "Piedmontese": { 863 | "code": "pms", 864 | "name": "Piedmontese Wikipedia", 865 | "title": "Piedmontese" 866 | }, 867 | "Ilokano": { 868 | "code": "ilo", 869 | "name": "Ilokano Wikipedia", 870 | "title": "Ilokano" 871 | }, 872 | "Kashmiri": { 873 | "code": "ks", 874 | "name": "Kashmiri Wikipedia", 875 | "title": "Kashmiri" 876 | }, 877 | "Eastern Min /Min Dong": { 878 | "code": "cdo", 879 | "name": "Min Dong Wikipedia", 880 | "title": "Eastern Min /Min Dong" 881 | }, 882 | "Nahuatl": { 883 | "code": "nah", 884 | "name": "Nāhuatl Wikipedia", 885 | "title": "Nahuatl" 886 | }, 887 | "Tibetan": { 888 | "code": "bo", 889 | "name": "Tibetan Wikipedia", 890 | "title": "Tibetan" 891 | }, 892 | "Walloon": { 893 | "code": "wa", 894 | "name": "Walloon Wikipedia", 895 | "title": "Walloon" 896 | }, 897 | "Kapampangan": { 898 | "code": "pam", 899 | "name": "Kapampangan Wikipedia", 900 | "title": "Kapampangan" 901 | }, 902 | "Erzya": { 903 | "code": "myv", 904 | "name": "Erzya Wikipedia", 905 | "title": "Erzya" 906 | }, 907 | "Māori": { 908 | "code": "mi", 909 | "name": "Māori Wikipedia", 910 | "title": "Māori" 911 | }, 912 | "North Frisian": { 913 | "code": "frr", 914 | "name": "North Frisian Wikipedia", 915 | "title": "North Frisian" 916 | }, 917 | "Bishnupriya Manipuri": { 918 | "code": "bpy", 919 | "name": "বিষ্ণুপ্রিয়া মনিপুরী উইকিপিডিয়া", 920 | "title": "Bishnupriya Manipuri" 921 | }, 922 | "Judaeo-Spanish /Ladino": { 923 | "code": "lad", 924 | "name": "Ladino Wikipedia", 925 | "title": "Judaeo-Spanish /Ladino" 926 | }, 927 | "Northern Sami": { 928 | "code": "se", 929 | "name": "Northern Sami Wikipedia", 930 | "title": "Northern Sami" 931 | }, 932 | "Friulian": { 933 | "code": "fur", 934 | "name": "Friulian Wikipedia", 935 | "title": "Friulian" 936 | }, 937 | "Gagauz": { 938 | "code": "gag", 939 | "name": "Gagauz Wikipedia", 940 | "title": "Gagauz" 941 | }, 942 | "Inari Sami": { 943 | "code": "smn", 944 | "name": "Inari Sami Wikipedia", 945 | "title": "Inari Sami" 946 | }, 947 | "Picard": { 948 | "code": "pcd", 949 | "name": "Picard Wikipedia", 950 | "title": "Picard" 951 | }, 952 | "Udmurt": { 953 | "code": "udm", 954 | "name": "Udmurt Wikipedia", 955 | "title": "Udmurt" 956 | }, 957 | "Buginese": { 958 | "code": "bug", 959 | "name": "Buginese Wikipedia", 960 | "title": "Buginese" 961 | }, 962 | "Kotava": { 963 | "code": "avk", 964 | "name": "Kotava Wikipedia", 965 | "title": "Kotava" 966 | }, 967 | "Cherokee": { 968 | "code": "chr", 969 | "name": "Cherokee Wikipedia", 970 | "title": "Cherokee" 971 | }, 972 | "Gan Chinese": { 973 | "code": "gan", 974 | "name": "Gan Chinese Wikipedia", 975 | "title": "Gan Chinese" 976 | }, 977 | "Komi": { 978 | "code": "kv", 979 | "name": "Komi Wikipedia", 980 | "title": "Komi" 981 | }, 982 | "Meadow Mari": { 983 | "code": "mhr", 984 | "name": "Meadow Mari Wikipedia", 985 | "title": "Meadow Mari" 986 | }, 987 | "Twi": { 988 | "code": "tw", 989 | "name": "Twi Wikipedia", 990 | "title": "Twi" 991 | }, 992 | "Võro": { 993 | "code": "fiu-vro", 994 | "name": "Voro Wikipedia", 995 | "title": "Võro" 996 | }, 997 | "Kabyle": { 998 | "code": "kab", 999 | "name": "Kabyle Wikipedia", 1000 | "title": "Kabyle" 1001 | }, 1002 | "Mon": { 1003 | "code": "mnw", 1004 | "name": "ဝဳကဳပဳဒဳယာမန်", 1005 | "title": "Mon" 1006 | }, 1007 | "Tulu": { 1008 | "code": "tcy", 1009 | "name": "Tulu Wikipedia", 1010 | "title": "Tulu" 1011 | }, 1012 | "Uyghur": { 1013 | "code": "ug", 1014 | "name": "Uyghur Wikipedia", 1015 | "title": "Uyghur" 1016 | }, 1017 | "Abkhaz": { 1018 | "code": "ab", 1019 | "name": "Abkhazian Wikipedia", 1020 | "title": "Abkhaz" 1021 | }, 1022 | "Lingala": { 1023 | "code": "ln", 1024 | "name": "Lingala Wikipedia", 1025 | "title": "Lingala" 1026 | }, 1027 | "Lingua Franca Nova": { 1028 | "code": "lfn", 1029 | "name": "Lingua Franca Nova Wikipedia", 1030 | "title": "Lingua Franca Nova" 1031 | }, 1032 | "Papiamento": { 1033 | "code": "pap", 1034 | "name": "Papiamentu Wikipedia", 1035 | "title": "Papiamento" 1036 | }, 1037 | "Doteli": { 1038 | "code": "dty", 1039 | "name": "Doteli Wikipedia", 1040 | "title": "Doteli" 1041 | }, 1042 | "Dzongkha": { 1043 | "code": "dz", 1044 | "name": "Dzongkha Wikipedia", 1045 | "title": "Dzongkha" 1046 | }, 1047 | "Hawaiian": { 1048 | "code": "haw", 1049 | "name": "Hawaiian Wikipedia", 1050 | "title": "Hawaiian" 1051 | }, 1052 | "Manx": { 1053 | "code": "gv", 1054 | "name": "Manx Wikipedia", 1055 | "title": "Manx" 1056 | }, 1057 | "Rusyn": { 1058 | "code": "rue", 1059 | "name": "Rusyn Wikipedia", 1060 | "title": "Rusyn" 1061 | }, 1062 | "Banjar": { 1063 | "code": "bjn", 1064 | "name": "Banjar Wikipedia", 1065 | "title": "Banjar" 1066 | }, 1067 | "Banyumasan": { 1068 | "code": "map-bms", 1069 | "name": "Banyumasan Wikipedia", 1070 | "title": "Banyumasan" 1071 | }, 1072 | "Old Church Slavonic": { 1073 | "code": "cu", 1074 | "name": "Old Church Slavonic Wikipedia", 1075 | "title": "Old Church Slavonic" 1076 | }, 1077 | "Sakizaya": { 1078 | "code": "szy", 1079 | "name": "Sakizaya Wikipedia", 1080 | "title": "Sakizaya" 1081 | }, 1082 | "Buryat": { 1083 | "code": "bxr", 1084 | "name": "Buryat Wikipedia", 1085 | "title": "Buryat" 1086 | }, 1087 | "Chewa": { 1088 | "code": "ny", 1089 | "name": "Chichewa Wikipedia", 1090 | "title": "Chewa" 1091 | }, 1092 | "Dhivehi": { 1093 | "code": "dv", 1094 | "name": "Divehi Wikipedia", 1095 | "title": "Dhivehi" 1096 | }, 1097 | "Gorontalo": { 1098 | "code": "gor", 1099 | "name": "Gorontalo Wikipedia", 1100 | "title": "Gorontalo" 1101 | }, 1102 | "Greenlandic": { 1103 | "code": "kl", 1104 | "name": "Greenlandic Wikipedia", 1105 | "title": "Greenlandic" 1106 | }, 1107 | "Kirundi": { 1108 | "code": "rn", 1109 | "name": "Kirundi Wikipedia", 1110 | "title": "Kirundi" 1111 | }, 1112 | "Ladin": { 1113 | "code": "lld", 1114 | "name": "Ladin Wikipedia", 1115 | "title": "Ladin" 1116 | }, 1117 | "Zamboanga Chavacano": { 1118 | "code": "cbk-zam", 1119 | "name": "Zamboanga Chavacano Wikipedia", 1120 | "title": "Zamboanga Chavacano" 1121 | }, 1122 | "Extremaduran": { 1123 | "code": "ext", 1124 | "name": "Extremaduran Wikipedia", 1125 | "title": "Extremaduran" 1126 | }, 1127 | "Ripuarian": { 1128 | "code": "ksh", 1129 | "name": "Ripuarian Wikipedia", 1130 | "title": "Ripuarian" 1131 | }, 1132 | "Adyghe": { 1133 | "code": "ady", 1134 | "name": "Adyghe Wikipedia", 1135 | "title": "Adyghe" 1136 | }, 1137 | "Avar": { 1138 | "code": "av", 1139 | "name": "Avar Wikipedia", 1140 | "title": "Avar" 1141 | }, 1142 | "Chamorro": { 1143 | "code": "ch", 1144 | "name": "Chamorro Wikipedia", 1145 | "title": "Chamorro" 1146 | }, 1147 | "Cheyenne": { 1148 | "code": "chy", 1149 | "name": "Cheyenne Wikipedia", 1150 | "title": "Cheyenne" 1151 | }, 1152 | "Cree": { 1153 | "code": "cr", 1154 | "name": "Cree Wikipedia", 1155 | "title": "Cree" 1156 | }, 1157 | "Lower Sorbian": { 1158 | "code": "dsb", 1159 | "name": "Dolnoserbska wikipedija", 1160 | "title": "Lower Sorbian" 1161 | }, 1162 | "Kabiye": { 1163 | "code": "kbp", 1164 | "name": "Kabiye Wikipedia", 1165 | "title": "Kabiye" 1166 | }, 1167 | "Kashubian": { 1168 | "code": "csb", 1169 | "name": "Kashubian Wikipedia", 1170 | "title": "Kashubian" 1171 | }, 1172 | "Kongo": { 1173 | "code": "kg", 1174 | "name": "Kongo Wikipedia", 1175 | "title": "Kongo" 1176 | }, 1177 | "Lojban": { 1178 | "code": "jbo", 1179 | "name": "Lojban Wikipedia", 1180 | "title": "Lojban" 1181 | }, 1182 | "Mirandese": { 1183 | "code": "mwl", 1184 | "name": "Mirandese Wikipedia", 1185 | "title": "Mirandese" 1186 | }, 1187 | "Pennsylvania German": { 1188 | "code": "pdc", 1189 | "name": "Pennsylvania German Wikipedia", 1190 | "title": "Pennsylvania German" 1191 | }, 1192 | "Romansh": { 1193 | "code": "rm", 1194 | "name": "Romansh Wikipedia", 1195 | "title": "Romansh" 1196 | }, 1197 | "Shilha": { 1198 | "code": "shi", 1199 | "name": "Shilha Wikipedia", 1200 | "title": "Shilha" 1201 | }, 1202 | "Aromanian": { 1203 | "code": "roa-rup", 1204 | "name": "Wikipedia pi armãneashti", 1205 | "title": "Aromanian" 1206 | }, 1207 | "Inuktitut": { 1208 | "code": "iu", 1209 | "name": "Inuktitut Wikipedia", 1210 | "title": "Inuktitut" 1211 | }, 1212 | "Madurese": { 1213 | "code": "mad", 1214 | "name": "Madurese Wikipedia", 1215 | "title": "Madurese" 1216 | }, 1217 | "Novial": { 1218 | "code": "nov", 1219 | "name": "Novial Wikipedia", 1220 | "title": "Novial" 1221 | }, 1222 | "Aramaic": { 1223 | "code": "arc", 1224 | "name": "Syriac Wikipedia", 1225 | "title": "Aramaic" 1226 | }, 1227 | "Tok Pisin": { 1228 | "code": "tpi", 1229 | "name": "Tok Pisin Wikipedia", 1230 | "title": "Tok Pisin" 1231 | }, 1232 | "Tsonga": { 1233 | "code": "ts", 1234 | "name": "Tsonga Wikipedia", 1235 | "title": "Tsonga" 1236 | }, 1237 | "Tuvan": { 1238 | "code": "tyv", 1239 | "name": "Tuvinian Wikipedia", 1240 | "title": "Tuvan" 1241 | }, 1242 | "Zeelandic": { 1243 | "code": "zea", 1244 | "name": "Zealandic Wikipedia", 1245 | "title": "Zeelandic" 1246 | }, 1247 | "Shan": { 1248 | "code": "shn", 1249 | "name": "ဝီႇၶီႇၽီးတီးယႃးတႆး", 1250 | "title": "Shan" 1251 | }, 1252 | "Gilaki": { 1253 | "code": "glk", 1254 | "name": "Gilaki Wikipedia", 1255 | "title": "Gilaki" 1256 | }, 1257 | "Hill Mari": { 1258 | "code": "mrj", 1259 | "name": "Hill Mari Wikipedia", 1260 | "title": "Hill Mari" 1261 | }, 1262 | "Nauruan": { 1263 | "code": "na", 1264 | "name": "Nauruan Wikipedia", 1265 | "title": "Nauruan" 1266 | }, 1267 | "Navajo": { 1268 | "code": "nv", 1269 | "name": "Navajo Wikipedia", 1270 | "title": "Navajo" 1271 | }, 1272 | "Norman": { 1273 | "code": "nrm", 1274 | "name": "Norman Wikipedia", 1275 | "title": "Norman" 1276 | }, 1277 | "Samoan": { 1278 | "code": "sm", 1279 | "name": "Samoan Wikipedia", 1280 | "title": "Samoan" 1281 | }, 1282 | "Tetum": { 1283 | "code": "tet", 1284 | "name": "Tetum Wikipedia", 1285 | "title": "Tetum" 1286 | }, 1287 | "Bambara": { 1288 | "code": "bm", 1289 | "name": "Bambara Wikipedia", 1290 | "title": "Bambara" 1291 | }, 1292 | "Pangasinan": { 1293 | "code": "pag", 1294 | "name": "Pangasinan Wikipedia", 1295 | "title": "Pangasinan" 1296 | }, 1297 | "Wolof": { 1298 | "code": "wo", 1299 | "name": "Wolof Wikipedia", 1300 | "title": "Wolof" 1301 | }, 1302 | "Awadhi": { 1303 | "code": "awa", 1304 | "name": "Awadhi Wikipedia", 1305 | "title": "Awadhi" 1306 | }, 1307 | "Fula": { 1308 | "code": "ff", 1309 | "name": "Fula Wikipedia", 1310 | "title": "Fula" 1311 | }, 1312 | "Gothic": { 1313 | "code": "got", 1314 | "name": "Gothic Wikipedia", 1315 | "title": "Gothic" 1316 | }, 1317 | "Ingush": { 1318 | "code": "inh", 1319 | "name": "Ingush Wikipedia", 1320 | "title": "Ingush" 1321 | }, 1322 | "Karachay- Balkar": { 1323 | "code": "krc", 1324 | "name": "Karachay-Balkar Wikipedia", 1325 | "title": "Karachay- Balkar" 1326 | }, 1327 | "Karakalpak": { 1328 | "code": "kaa", 1329 | "name": "Karakalpak Wikipedia", 1330 | "title": "Karakalpak" 1331 | }, 1332 | "Lak": { 1333 | "code": "lbe", 1334 | "name": "Lak Wikipedia", 1335 | "title": "Lak" 1336 | }, 1337 | "Lezgian": { 1338 | "code": "lez", 1339 | "name": "Lezgi Wikipedia", 1340 | "title": "Lezgian" 1341 | }, 1342 | "Norfolk": { 1343 | "code": "pih", 1344 | "name": "Norfolk Wikipedia", 1345 | "title": "Norfolk" 1346 | }, 1347 | "Xhosa": { 1348 | "code": "xh", 1349 | "name": "Xhosa Wikipedia", 1350 | "title": "Xhosa" 1351 | }, 1352 | "Fijian": { 1353 | "code": "fj", 1354 | "name": "Fijian Wikipedia", 1355 | "title": "Fijian" 1356 | }, 1357 | "Jamaican Patois": { 1358 | "code": "jam", 1359 | "name": "Jamaican Wikipedia", 1360 | "title": "Jamaican Patois" 1361 | }, 1362 | "Kabardian": { 1363 | "code": "kbd", 1364 | "name": "Kabardian Wikipedia", 1365 | "title": "Kabardian" 1366 | }, 1367 | "Kalmyk": { 1368 | "code": "xal", 1369 | "name": "Kalmyk Wikipedia", 1370 | "title": "Kalmyk" 1371 | }, 1372 | "Oromo": { 1373 | "code": "om", 1374 | "name": "Oromo Wikipedia", 1375 | "title": "Oromo" 1376 | }, 1377 | "Swazi": { 1378 | "code": "ss", 1379 | "name": "Swati Wikipedia", 1380 | "title": "Swazi" 1381 | }, 1382 | "Tswana": { 1383 | "code": "tn", 1384 | "name": "Tswana Wikipedia", 1385 | "title": "Tswana" 1386 | }, 1387 | "Vlax Romani": { 1388 | "code": "rmy", 1389 | "name": "Vlax Romani Wikipedia", 1390 | "title": "Vlax Romani" 1391 | }, 1392 | "Konkani": { 1393 | "code": "gom", 1394 | "name": "Konkani Wikipedia", 1395 | "title": "Konkani" 1396 | }, 1397 | "Dinka": { 1398 | "code": "din", 1399 | "name": "Dinka Wikipedia", 1400 | "title": "Dinka" 1401 | }, 1402 | "Ewe": { 1403 | "code": "ee", 1404 | "name": "Ewe Wikipedia", 1405 | "title": "Ewe" 1406 | }, 1407 | "Inupiaq": { 1408 | "code": "ik", 1409 | "name": "Inupiak Wikipedia", 1410 | "title": "Inupiaq" 1411 | }, 1412 | "Livvi-Karelian": { 1413 | "code": "olo", 1414 | "name": "Livvi-Karelian Wikipedia", 1415 | "title": "Livvi-Karelian" 1416 | }, 1417 | "Moksha": { 1418 | "code": "mdf", 1419 | "name": "Moksha Wikipedia", 1420 | "title": "Moksha" 1421 | }, 1422 | "N'Ko": { 1423 | "code": "nqo", 1424 | "name": "N'Ko Wikipedia", 1425 | "title": "N'Ko" 1426 | }, 1427 | "Tarantino": { 1428 | "code": "roa-tara", 1429 | "name": "Tarantino Wikipedia", 1430 | "title": "Tarantino" 1431 | }, 1432 | "Tigrinya": { 1433 | "code": "ti", 1434 | "name": "Tigrinya Wikipedia", 1435 | "title": "Tigrinya" 1436 | }, 1437 | "Luganda": { 1438 | "code": "lg", 1439 | "name": "Luganda Wikipedia", 1440 | "title": "Luganda" 1441 | }, 1442 | "Nias": { 1443 | "code": "nia", 1444 | "name": "Nias Wikipedia", 1445 | "title": "Nias" 1446 | }, 1447 | "Komi-Permyak": { 1448 | "code": "koi", 1449 | "name": "Komi-Permyak Wikipedia", 1450 | "title": "Komi-Permyak" 1451 | }, 1452 | "Latgalian": { 1453 | "code": "ltg", 1454 | "name": "Latgalian Wikipedia", 1455 | "title": "Latgalian" 1456 | }, 1457 | "Pontic Greek": { 1458 | "code": "pnt", 1459 | "name": "Pontic Wikipedia", 1460 | "title": "Pontic Greek" 1461 | }, 1462 | "Tongan": { 1463 | "code": "to", 1464 | "name": "Tongan Wikipedia", 1465 | "title": "Tongan" 1466 | }, 1467 | "Zhuang": { 1468 | "code": "za", 1469 | "name": "Zhuang Wikipedia", 1470 | "title": "Zhuang" 1471 | }, 1472 | "Saraiki": { 1473 | "code": "skr", 1474 | "name": "Saraiki Wikipedia", 1475 | "title": "Saraiki" 1476 | }, 1477 | "Kikuyu": { 1478 | "code": "ki", 1479 | "name": "Kikuyu Wikipedia", 1480 | "title": "Kikuyu" 1481 | }, 1482 | "Saterland Frisian": { 1483 | "code": "stq", 1484 | "name": "Saterland Frisian Wikipedia", 1485 | "title": "Saterland Frisian" 1486 | }, 1487 | "Sotho": { 1488 | "code": "st", 1489 | "name": "Sesotho Wikipedia", 1490 | "title": "Sotho" 1491 | }, 1492 | "Tahitian": { 1493 | "code": "ty", 1494 | "name": "Tahitian Wikipedia", 1495 | "title": "Tahitian" 1496 | }, 1497 | "Atikamekw": { 1498 | "code": "atj", 1499 | "name": "Atikamekw Wikipedia", 1500 | "title": "Atikamekw" 1501 | }, 1502 | "Northern Sotho": { 1503 | "code": "nso", 1504 | "name": "Northern Sotho Wikipedia", 1505 | "title": "Northern Sotho" 1506 | }, 1507 | "Pali": { 1508 | "code": "pi", 1509 | "name": "Pali Wikipedia", 1510 | "title": "Pali" 1511 | }, 1512 | "Sranan Tongo": { 1513 | "code": "srn", 1514 | "name": "Sranan Tongo Wikipedia", 1515 | "title": "Sranan Tongo" 1516 | }, 1517 | "Venda": { 1518 | "code": "ve", 1519 | "name": "Venda Wikipedia", 1520 | "title": "Venda" 1521 | }, 1522 | "Guianan Creole": { 1523 | "code": "gcr", 1524 | "name": "Guianan Creole Wikipedia", 1525 | "title": "Guianan Creole" 1526 | }, 1527 | "Palatine German": { 1528 | "code": "pfl", 1529 | "name": "Palatine German Wikipedia", 1530 | "title": "Palatine German" 1531 | }, 1532 | "Sango": { 1533 | "code": "sg", 1534 | "name": "Sango Wikipedia", 1535 | "title": "Sango" 1536 | }, 1537 | "Tumbuka": { 1538 | "code": "tum", 1539 | "name": "Tumbuku Wikipedia", 1540 | "title": "Tumbuka" 1541 | }, 1542 | "Ndonga": { 1543 | "code": "ng (closed)", 1544 | "name": "Ndonga Wikipedia (closed)", 1545 | "title": "Ndonga" 1546 | }, 1547 | "Northern Luri": { 1548 | "code": "lrc (locked)", 1549 | "name": "Northern Luri Wikipedia (locked)", 1550 | "title": "Northern Luri" 1551 | }, 1552 | "Nuosu/Sichuan Yi": { 1553 | "code": "ii (closed)", 1554 | "name": "Sichuan Yi Wikipedia (closed)", 1555 | "title": "Nuosu/Sichuan Yi" 1556 | }, 1557 | "Afar": { 1558 | "code": "aa (closed)", 1559 | "name": "Afar Wikipedia (closed)", 1560 | "title": "Afar" 1561 | }, 1562 | "Choctaw": { 1563 | "code": "cho (closed)", 1564 | "name": "Choctaw Wikipedia (closed)", 1565 | "title": "Choctaw" 1566 | }, 1567 | "Herero": { 1568 | "code": "hz (closed)", 1569 | "name": "Herero Wikipedia (closed)", 1570 | "title": "Herero" 1571 | }, 1572 | "Hiri Motu": { 1573 | "code": "ho (closed)", 1574 | "name": "Hiri Motu Wikipedia (closed)", 1575 | "title": "Hiri Motu" 1576 | }, 1577 | "Kanuri": { 1578 | "code": "kr (closed)", 1579 | "name": "Kanuri Wikipedia (closed)", 1580 | "title": "Kanuri" 1581 | }, 1582 | "Kuanyama": { 1583 | "code": "kj (closed)", 1584 | "name": "Kuanyama Wikipedia (closed)", 1585 | "title": "Kuanyama" 1586 | }, 1587 | "Marshallese": { 1588 | "code": "mh (closed)", 1589 | "name": "Marshallese Wikipedia (closed)", 1590 | "title": "Marshallese" 1591 | }, 1592 | "Muscogee": { 1593 | "code": "mus (closed)", 1594 | "name": "Muscogee Wikipedia (closed)", 1595 | "title": "Muscogee" 1596 | }, 1597 | "Moldovan": { 1598 | "code": "mo (deleted)", 1599 | "name": "Moldovan Wikipedia (deleted)", 1600 | "title": "Moldovan" 1601 | } 1602 | } -------------------------------------------------------------------------------- /src/libs/google-fonts/fonts.css: -------------------------------------------------------------------------------- 1 | /* | POPPINS | */ 2 | @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800;900&display=swap'); 3 | 4 | /* | Playfair Display | */ 5 | @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,900'); 6 | 7 | /* | Crimson Display | */ 8 | @import url('https://fonts.googleapis.com/css2?family=Crimson+Pro&family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,900'); 9 | 10 | /* | Lora Spicemen | */ 11 | @import url('https://fonts.googleapis.com/css2?family=Lora&display=swap'); -------------------------------------------------------------------------------- /src/libs/hotkeysjs/hotekeys.min.js: -------------------------------------------------------------------------------- 1 | /*! hotkeys-js v3.8.7 | MIT (c) 2021 kenny wong | http://jaywcjlove.github.io/hotkeys */ 2 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).hotkeys=t()}(this,function(){"use strict";var e="undefined"!=typeof navigator&&0ul{ 10 | pointer-events:auto; 11 | list-style:none; 12 | padding:0; 13 | margin:-.75em 0 0; 14 | white-space:nowrap; 15 | color:#fff; 16 | border-radius:.25em; 17 | position:absolute; 18 | left:50%; 19 | -webkit-transform:translate(-50%,-100%); 20 | -ms-transform:translate(-50%,-100%); 21 | transform:translate(-50%,-100%); 22 | background-color: var(--background); 23 | backdrop-filter: blur(20px); 24 | border-radius: 10px; 25 | padding: 5px; 26 | box-shadow: rgba(0, 0, 0, 0.2) 0px 20px 30px; 27 | border: 1px solid var(--hairline); 28 | } 29 | .share-this-popover>ul>li{ 30 | display:inline-block; 31 | width:2em; 32 | height:2em; 33 | line-height:2em; 34 | text-align:center; 35 | color: var(--secondary-color); 36 | } 37 | .share-this-popover>ul>li>a{ 38 | display:inline-block; 39 | width:100%; 40 | height:100%; 41 | color:inherit; 42 | box-sizing:border-box; 43 | padding:.35em; 44 | border-radius:.25em; 45 | } 46 | .share-this-popover>ul>li>a:focus,.share-this-popover>ul>li>a:hover{ 47 | background:var(--secondary-background); 48 | } 49 | @media (pointer:coarse){ 50 | .share-this-popover{ 51 | font-size:150% 52 | } 53 | .share-this-popover:before{ 54 | bottom:auto; 55 | top:100%; 56 | border-width:0 .5em .5em; 57 | margin-top:0 58 | } 59 | .share-this-popover>ul{ 60 | top:100%; 61 | transform:translateX(-50%); 62 | margin:.5em 0 0 63 | } 64 | } 65 | @media (max-width:575px){ 66 | .share-this-popover{ 67 | left:0!important; 68 | right:0!important; 69 | width:auto!important; 70 | max-width:none 71 | } 72 | .share-this-popover:before{ 73 | bottom:auto; 74 | top:100%; 75 | border-width:0 .5em .5em; 76 | margin-top:0 77 | } 78 | .share-this-popover>ul{ 79 | top:100%; 80 | transform:translateX(-50%); 81 | margin:.5em 0 0; 82 | left:0; 83 | width:100%; 84 | transform:none; 85 | border-radius:0; 86 | text-align:center 87 | } 88 | } 89 | @-webkit-keyframes a{ 90 | 0%{ 91 | -webkit-transform:translateY(-3em); 92 | opacity:0 93 | } 94 | 80%{ 95 | -webkit-transform:translateY(.5em); 96 | opacity:1 97 | } 98 | to{ 99 | -webkit-transform:translateY(0) 100 | } 101 | } 102 | @keyframes a{ 103 | 0%{ 104 | transform:translateY(-3em); 105 | opacity:0 106 | } 107 | 80%{ 108 | transform:translateY(.5em); 109 | opacity:1 110 | } 111 | to{ 112 | transform:translateY(0) 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /src/libs/share-this/share-this.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.ShareThis=t()}(this,function(){"use strict";function e(e){var t=e.document.body,n="static"===e.getComputedStyle(t).position?t.parentNode:t;return n.getBoundingClientRect()}function t(e,t){return h||(h=o(e)),e[h](t)}function n(e,n){for(var r=e;r&&(1!==r.nodeType||!t(r,n));)r=r.parentNode;return r}function r(e,t){var n=e.compareDocumentPosition(t);return!n||(16&n)>0}function o(e){for(var t="atchesSelector",n=["matches","m"+t,"webkitM"+t,"mozM"+t,"msM"+t,"oM"+t],r=0;r0:e.anchorOffseti)break;i=c.left}n=o(a+1)}else{for(var f=-(1/0),l=0;l"+t.map(function(e){return'
  • '+e.render.call(e,n,r,o)+"
  • "}).join("")+""},b=void 0,C=["selectionchange","mouseup","touchend","touchcancel"],S=function(e){function t(e){g.addEventListener(e,o)}function n(e){g.removeEventListener(e,o)}function r(){E&&d(E,i(),p)}function o(e){var t=e.type,n="selectionchange"===t;!E!==n&&setTimeout(function(){var e=i();e?u(e):f()},10)}function i(){var e=S.getSelection(),t=e.rangeCount&&e.getRangeAt(0);if(t){var n=s(t,p.selector);if(!n.collapsed&&n.getClientRects().length)return n}}function u(e){var t=!E,n=e.toString(),r=p.transformer(n),o=p.sharers.filter(l.bind(null,r,n));return o.length?(t&&(E=M.createPopover()),E.sharers=o,E.innerHTML=y(p,o,r,n),d(E,e,p),void(t&&(M.attachPopover(E),c(p.onOpen)&&p.onOpen(E,r,n)))):void(E&&f())}function f(){E&&(M.removePopover(E),E=b,c(p.onClose)&&p.onClose())}function l(e,t,n){var r=n.active;return c(r)?r(e,t):r===b||r}var p=(Object.assign||a)({document:document,selector:"body",sharers:[],popoverClass:"share-this-popover",transformer:function(e){return e.trim().replace(/\s+/g," ")}},e||{}),h=!1,m=!1,g=b,S=b,E=b,M=b;return{init:function(){return!h&&(g=p.document,S=g.defaultView,S.getSelection?(C.forEach(t),S.addEventListener("resize",r),M=v(g),h=!0):(console.warn("share-this: Selection API isn't supported"),!1))},destroy:function(){return!(!h||m)&&(C.forEach(n),S.removeEventListener("resize",r),f(),g=b,S=b,m=!0)}}};return S}); -------------------------------------------------------------------------------- /src/libs/share-this/sharers/email.js: -------------------------------------------------------------------------------- 1 | !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports):"function"==typeof define&&define.amd?define(["exports"],o):o((e=e||self).ShareThisViaEmail={})}(this,function(e){"use strict";e.getShareUrl=function(e,o){return"mailto:?body="+encodeURIComponent(e)+"%0a%0a"+encodeURIComponent(o)},e.name="email",e.render=function(e,o,n){return''},Object.defineProperty(e,"__esModule",{value:!0})}); 2 | //# sourceMappingURL=email.js.map 3 | -------------------------------------------------------------------------------- /src/libs/share-this/sharers/email.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"email.js","sources":["../../src/sharers/email.js"],"sourcesContent":["export function render(text, rawText, refUrl) {\n const url = this.getShareUrl(text, refUrl);\n\n return ``\n + \"\"\n + \"\"\n + \"\";\n}\n\nexport function getShareUrl(text, refUrl) {\n return `mailto:?body=${encodeURIComponent(text)}%0a%0a${encodeURIComponent(refUrl)}`;\n}\n\nexport const name = \"email\";\n"],"names":["text","refUrl","encodeURIComponent","rawText","this","getShareUrl"],"mappings":"4NAWO,SAAqBA,EAAMC,yBACPC,mBAAmBF,YAAcE,mBAAmBD,WAG3D,iBAfb,SAAgBD,EAAMG,EAASF,SAG3B,YAFKG,KAAKC,YAAYL,EAAMC"} -------------------------------------------------------------------------------- /src/libs/share-this/sharers/facebook.js: -------------------------------------------------------------------------------- 1 | !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports):"function"==typeof define&&define.amd?define(["exports"],o):o((e=e||self).ShareThisViaFacebook={})}(this,function(e){"use strict";e.action=function(e,o){e.preventDefault(),o.ownerDocument.defaultView.open(o.firstChild.href,"share_via_facebook","height=440,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,width=640").opener=null},e.getShareUrl=function(e,o){return"https://www.facebook.com/sharer/sharer.php?quote="+encodeURIComponent(e)+"&u="+encodeURIComponent(o)},e.name="facebook",e.render=function(e,o,n){return''},Object.defineProperty(e,"__esModule",{value:!0})}); 2 | //# sourceMappingURL=facebook.js.map 3 | -------------------------------------------------------------------------------- /src/libs/share-this/sharers/facebook.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"facebook.js","sources":["../../src/sharers/facebook.js"],"sourcesContent":["export function render(text, rawText, refUrl) {\n const url = this.getShareUrl(text, refUrl);\n\n return ``\n + \"\"\n + \"\"\n + \"\";\n}\n\nexport function getShareUrl(text, refUrl) {\n return `https://www.facebook.com/sharer/sharer.php?quote=${encodeURIComponent(text)}&u=${encodeURIComponent(refUrl)}`;\n}\n\nexport function action(event, item) {\n event.preventDefault();\n const popup = item.ownerDocument.defaultView.open(\n item.firstChild.href,\n \"share_via_facebook\",\n \"height=440,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,width=640\"\n );\n popup.opener = null;\n}\n\nexport const name = \"facebook\";\n"],"names":["event","item","preventDefault","ownerDocument","defaultView","open","firstChild","href","opener","text","refUrl","encodeURIComponent","rawText","this","getShareUrl"],"mappings":"0NAeO,SAAgBA,EAAOC,GAC1BD,EAAME,iBACQD,EAAKE,cAAcC,YAAYC,KACzCJ,EAAKK,WAAWC,KAChB,qBACA,kFAEEC,OAAS,oBAXZ,SAAqBC,EAAMC,6DAC6BC,mBAAmBF,SAAWE,mBAAmBD,WAa5F,oBAzBb,SAAgBD,EAAMG,EAASF,SAG3B,YAFKG,KAAKC,YAAYL,EAAMC"} -------------------------------------------------------------------------------- /src/libs/share-this/sharers/linked-in.js: -------------------------------------------------------------------------------- 1 | !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).ShareThisViaLinkedIn={})}(this,function(e){"use strict";var n=!1;e.action=function(e,n){e.preventDefault(),n.ownerDocument.defaultView.open(n.firstChild.href,"share_via_linked_in","height=440,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,width=640").opener=null},e.getShareUrl=function(e){return"https://www.linkedin.com/sharing/share-offsite/?url="+encodeURIComponent(e)},e.name="linked-in",e.render=function(e,o,t){return n||(n=!0,console.warn("LinkedIn doesn't allow sharing links with custom titles anymore, so the main point of ShareThis (sharing a portion of text) couldn't be accomplished. You're encouraged to share your URLs with other, more conventional means, like the official LinkedIn share plugin. See https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/plugins/share-plugin")),''},Object.defineProperty(e,"__esModule",{value:!0})}); 2 | //# sourceMappingURL=linked-in.js.map 3 | -------------------------------------------------------------------------------- /src/libs/share-this/sharers/linked-in.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"linked-in.js","sources":["../../src/sharers/linked-in.js"],"sourcesContent":["let shownWarning = false;\n\nexport function render(_text, _rawText, refUrl) {\n if (!shownWarning) {\n shownWarning = true;\n console.warn(\"LinkedIn doesn't allow sharing links with custom titles anymore, so the main point of ShareThis \"\n + \"(sharing a portion of text) couldn't be accomplished. You're encouraged to share your URLs with other, \"\n + \"more conventional means, like the official LinkedIn share plugin. See \"\n + \"https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/plugins/share-plugin\");\n }\n const url = this.getShareUrl(refUrl);\n\n return ``\n + \"\"\n + \"\"\n + \"\";\n}\n\nexport function getShareUrl(refUrl) {\n return `https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(refUrl)}`;\n}\n\nexport function action(event, item) {\n event.preventDefault();\n const popup = item.ownerDocument.defaultView.open(\n item.firstChild.href,\n \"share_via_linked_in\",\n \"height=440,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,width=640\"\n );\n popup.opener = null;\n}\n\nexport const name = \"linked-in\";\n"],"names":["shownWarning","event","item","preventDefault","ownerDocument","defaultView","open","firstChild","href","opener","refUrl","encodeURIComponent","_text","_rawText","console","warn","this","getShareUrl"],"mappings":"iNAAA,IAAIA,GAAe,WA0BZ,SAAgBC,EAAOC,GAC1BD,EAAME,iBACQD,EAAKE,cAAcC,YAAYC,KACzCJ,EAAKK,WAAWC,KAChB,sBACA,kFAEEC,OAAS,oBAXZ,SAAqBC,gEACsCC,mBAAmBD,WAajE,qBAlCb,SAAgBE,EAAOC,EAAUH,UAC/BV,IACDA,GAAe,EACfc,QAAQC,KAAK,iXAOV,YAFKC,KAAKC,YAAYP"} -------------------------------------------------------------------------------- /src/libs/share-this/sharers/reddit.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).ShareThisViaReddit={})}(this,function(e){"use strict";var t=120;e.getShareUrl=function(e,t){return"https://reddit.com/submit?title="+encodeURIComponent(e)+"&url="+encodeURIComponent(t)},e.getText=function(e){var r=e.trim();return r.length>t-2&&(r=r.slice(0,t-3).trim()+"…"),"“"+r+"”"},e.name="reddit",e.render=function(e,t,r){var n=this.getText(e);return''},Object.defineProperty(e,"__esModule",{value:!0})}); 2 | //# sourceMappingURL=reddit.js.map 3 | -------------------------------------------------------------------------------- /src/libs/share-this/sharers/reddit.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"reddit.js","sources":["../../src/sharers/reddit.js"],"sourcesContent":["export function render(text, rawText, refUrl) {\n const shareText = this.getText(text);\n const url = this.getShareUrl(shareText, refUrl);\n\n return ``\n + \"\"\n + \"\"\n + \"\";\n}\n\nconst CHAR_LIMIT = 120;\nexport function getText(text) {\n let chunk = text.trim();\n if (chunk.length > CHAR_LIMIT - 2) {\n chunk = chunk.slice(0, CHAR_LIMIT - 3).trim() + \"\\u2026\";\n }\n\n return `\\u201c${chunk}\\u201d`;\n}\n\nexport function getShareUrl(text, refUrl) {\n return `https://reddit.com/submit?title=${encodeURIComponent(text)}&url=${encodeURIComponent(refUrl)}`;\n}\n\nexport const name = \"reddit\";\n"],"names":["CHAR_LIMIT","text","refUrl","encodeURIComponent","chunk","trim","length","slice","rawText","shareText","this","getText","getShareUrl"],"mappings":"+MAgCA,IAAMA,EAAa,kBAUZ,SAAqBC,EAAMC,4CACYC,mBAAmBF,WAAaE,mBAAmBD,cAV1F,SAAiBD,OAChBG,EAAQH,EAAKI,cACbD,EAAME,OAASN,EAAa,IAC5BI,EAAQA,EAAMG,MAAM,EAAGP,EAAa,GAAGK,OAAS,SAGpCD,cAOA,kBA9Cb,SAAgBH,EAAMO,EAASN,OAC5BO,EAAYC,KAAKC,QAAQV,SAGxB,YAFKS,KAAKE,YAAYH,EAAWP"} -------------------------------------------------------------------------------- /src/libs/share-this/sharers/speakers.js: -------------------------------------------------------------------------------- 1 | var ShareThisViaSpeakers = (function() { 2 | var langs = [ "en-US", "en_US", "en-GB", "en_GB", "en" ]; 3 | function findVoice() { 4 | // Filtering english voices and sorting by the given order 5 | var localVoices = synth.getVoices().filter(function(voice) { 6 | return langs.indexOf(voice.lang) >= 0; 7 | }).sort(function(v1, v2) { 8 | return langs.indexOf(v1.lang) - langs.indexOf(v2.lang); 9 | }); 10 | return localVoices[0]; 11 | } 12 | 13 | var synth = window.speechSynthesis; 14 | return { 15 | name: "speakers", 16 | render: function(text, rawText, refUrl) { 17 | this.text = text; 18 | return "" 19 | + "" 20 | + "" 21 | + "" 22 | + "" 23 | + ""; 24 | }, 25 | active: !!synth, 26 | action: function(event) { 27 | event.preventDefault(); 28 | if (this.text) { 29 | var utterance = new SpeechSynthesisUtterance(this.text); 30 | var voice = findVoice(); 31 | if (voice) utterance.voice = voice; 32 | synth.speak(utterance); 33 | } 34 | } 35 | }; 36 | })(); 37 | -------------------------------------------------------------------------------- /src/libs/share-this/sharers/twitter.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).ShareThisViaTwitter={})}(this,function(e){"use strict";var t=120;e.action=function(e,t){e.preventDefault(),t.ownerDocument.defaultView.open(t.firstChild.href,"share_via_twitter","height=440,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,width=640").opener=null},e.getShareUrl=function(e,t){return"https://twitter.com/intent/tweet?text="+encodeURIComponent(e)+"&url="+encodeURIComponent(t)},e.getText=function(e){var n=e.trim();return n.length>t-2&&(n=n.slice(0,t-3).trim()+"…"),"“"+n+"”"},e.name="twitter",e.render=function(e,t,n){var r=this.getText(e);return''},Object.defineProperty(e,"__esModule",{value:!0})}); 2 | //# sourceMappingURL=twitter.js.map 3 | -------------------------------------------------------------------------------- /src/libs/share-this/sharers/twitter.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"twitter.js","sources":["../../src/sharers/twitter.js"],"sourcesContent":["export function render(text, rawText, refUrl) {\n const shareText = this.getText(text);\n const url = this.getShareUrl(shareText, refUrl);\n\n return ``\n + \"\"\n + \"\"\n + \"\";\n}\n\nconst CHAR_LIMIT = 120;\nexport function getText(text) {\n let chunk = text.trim();\n if (chunk.length > CHAR_LIMIT - 2) {\n chunk = chunk.slice(0, CHAR_LIMIT - 3).trim() + \"\\u2026\";\n }\n\n return `\\u201c${chunk}\\u201d`;\n}\n\nexport function getShareUrl(text, refUrl) {\n return `https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(refUrl)}`;\n}\n\nexport function action(event, item) {\n event.preventDefault();\n const popup = item.ownerDocument.defaultView.open(\n item.firstChild.href,\n \"share_via_twitter\",\n \"height=440,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,width=640\"\n );\n popup.opener = null;\n}\n\nexport const name = \"twitter\";\n"],"names":["CHAR_LIMIT","event","item","preventDefault","ownerDocument","defaultView","open","firstChild","href","opener","text","refUrl","encodeURIComponent","chunk","trim","length","slice","rawText","shareText","this","getText","getShareUrl"],"mappings":"gNAeA,IAAMA,EAAa,aAcZ,SAAgBC,EAAOC,GAC1BD,EAAME,iBACQD,EAAKE,cAAcC,YAAYC,KACzCJ,EAAKK,WAAWC,KAChB,oBACA,kFAEEC,OAAS,oBAXZ,SAAqBC,EAAMC,kDACkBC,mBAAmBF,WAAaE,mBAAmBD,cAVhG,SAAiBD,OAChBG,EAAQH,EAAKI,cACbD,EAAME,OAASf,EAAa,IAC5Ba,EAAQA,EAAMG,MAAM,EAAGhB,EAAa,GAAGc,OAAS,SAGpCD,cAiBA,mBAvCb,SAAgBH,EAAMO,EAASN,OAC5BO,EAAYC,KAAKC,QAAQV,SAGxB,YAFKS,KAAKE,YAAYH,EAAWP"} -------------------------------------------------------------------------------- /src/libs/sharer.js/sharer.js: -------------------------------------------------------------------------------- 1 | (function(g,r){"use strict";var s=function(t){this.elem=t};s.init=function(){var t=r.querySelectorAll("[data-sharer]"),e,a=t.length;for(e=0;e0?"?":"";for(r=0;r { 54 | 55 | if (error) { 56 | x = wikiApp.createErrorObj(error); 57 | var Obj = { 58 | data:x, 59 | status: false 60 | }; 61 | return Obj; 62 | } 63 | }) 64 | } 65 | 66 | getRandomArticle() { 67 | 68 | var wikipedia = this.wiki; 69 | return fetch( 70 | `https://${wikipedia}.wikipedia.org/api/rest_v1/page/random/title`) 71 | .then(function (response) { 72 | return response.json(); 73 | }) 74 | .then(function (json) { 75 | var data = json.items[0]; 76 | 77 | var Obj = { 78 | 79 | status: "success", 80 | data: { 81 | title: data.title, 82 | pageid: data.page_id, 83 | } 84 | } 85 | 86 | return Obj; 87 | }) 88 | .catch((error) => { 89 | if (error) { 90 | var Obj = wikiApp.createErrorObj(error); 91 | return Obj; 92 | } 93 | }) 94 | } 95 | searchArticles(title) { 96 | var wikipedia = this.wiki; 97 | if (!title) { 98 | return wikiApp.createErrorObj("Page title cannot be null.") 99 | } 100 | 101 | return fetch( 102 | `https://${wikipedia}.wikipedia.org/w/api.php?format=json&action=query&origin=*&prop=revisions&list=search&srsearch=${title}`) 103 | .then(function (response) { 104 | return response.json(); 105 | }) 106 | .then(function (json) { 107 | var data = json.query.search; 108 | var sResults = {}; 109 | 110 | data.forEach(function (item) { 111 | sResults[item.title] = { 112 | title: item.title, 113 | page: item.pageid, 114 | words: item.wordcount, 115 | snippet: wikiApp.stripHTML(item.snippet), 116 | url: `http://${wikipedia}.wikipedia.org/?curid=` + item.pageid 117 | } 118 | }); 119 | var Obj = { 120 | 121 | status: "success", 122 | data: { 123 | results: sResults, 124 | } 125 | } 126 | 127 | return Obj; 128 | }) 129 | .catch((error) => { 130 | if (error) { 131 | var Obj = wikiApp.createErrorObj(error); 132 | return Obj; 133 | } 134 | }) 135 | } 136 | getImage(title) { 137 | if (!title) { 138 | return wikiApp.createErrorObj("Page title cannot be null.") 139 | } 140 | 141 | return fetch( 142 | `https://en.wikipedia.org/w/api.php?action=query&titles=${title}&format=json&prop=images&origin=*`) 143 | .then(function (response) { 144 | return response.json(); 145 | }) 146 | .then(function (json) { 147 | var data = json; 148 | 149 | var results = []; 150 | 151 | var pages = data.query.pages; 152 | 153 | var x = pages[Object.keys(pages)[0]].images; 154 | 155 | 156 | x.forEach(function (item, intex) { 157 | results.push(" https://en.wikipedia.org/w/index.php?title=Special:Redirect/file/" + item.title) 158 | }); 159 | 160 | var Obj = { 161 | page: Object.keys(pages)[0], 162 | images: Object.assign({}, results) 163 | } 164 | 165 | return Obj 166 | }) 167 | .catch((error) => { 168 | if (error) { 169 | var Obj = wikiApp.createErrorObj(error); 170 | return Obj; 171 | } 172 | }) 173 | } 174 | getOnThisDay(params = {}) { 175 | 176 | const today = new Date(); 177 | var type = params.type || "events", 178 | day = params.day || today.getDate(), 179 | month = params.month || today.getMonth() + 1; 180 | 181 | if (type === "events" || type === "deaths" || type === "births") { } else { 182 | return wikiApp.createErrorObj(`Parameter Error - [${type}] is not a valid category [events/deaths/births]`) 183 | } 184 | 185 | if (wikiApp.isBetween(day, 0, 32) && wikiApp.isBetween(month, 0, 13)) { } else { 186 | return wikiApp.createErrorObj("Parameter Error - Parameter should be in the format (date [d], month [m]).\nExample (1, 12) which means December 1st") 187 | } 188 | 189 | return fetch( 190 | `https://cdn.jsdelivr.net/gh/harrify-apis/historyjs/${type}/${month}_${day}.json`) 191 | .then(function (response) { 192 | return response.json(); 193 | }) 194 | .then(function (json) { 195 | var data = json; 196 | var Obj = { 197 | date: data.date, 198 | url: data.wikipedia, 199 | type: type, 200 | data: data[type] 201 | } 202 | 203 | return Obj; 204 | }) 205 | .catch((error) => { 206 | if (error) { 207 | var Obj = wikiApp.createErrorObj(error); 208 | return Obj; 209 | } 210 | }) 211 | 212 | } 213 | getFullContent(title) { 214 | var wikipedia = this.wiki; 215 | return fetch( 216 | `https://${wikipedia}.wikipedia.org/w/api.php?action=query&prop=extracts&titles=${title}&format=json&origin=*`) 217 | .then(function (response) { 218 | return response.json(); 219 | }) 220 | .then(function (json) { 221 | var data = json.query.pages; 222 | var pageid = data[Object.keys(data)[0]].pageid; 223 | var wiki = data[pageid]; 224 | 225 | var Obj = { 226 | status: "success", 227 | data: { 228 | title: wiki.title, 229 | content: wiki.extract, 230 | id: wiki.pageid, 231 | url: `http://${wikipedia}.wikipedia.org/?curid=` + pageid 232 | } 233 | } 234 | 235 | return Obj; 236 | }) 237 | .catch((error) => { 238 | if (error) { 239 | var Obj = wikiApp.createErrorObj(error); 240 | return Obj; 241 | } 242 | }) 243 | 244 | } 245 | getPageHTML(title) { 246 | var wikipedia = this.wiki; 247 | return fetch( 248 | `https://en.wikipedia.org/w/api.php?action=parse&format=json&page=${title}&prop=text&origin=*`) 249 | .then(function (response) { 250 | return response.json(); 251 | }) 252 | .then(function (json) { 253 | var data = json.parse; 254 | 255 | var Obj = { 256 | status: "success", 257 | data: { 258 | title: data.title, 259 | content: data.text["*"], 260 | id: data.pageid, 261 | url: `http://${wikipedia}.wikipedia.org/?curid=` + data.pageid 262 | } 263 | } 264 | 265 | return Obj; 266 | }) 267 | .catch((error) => { 268 | if (error) { 269 | var Obj = wikiApp.createErrorObj(error); 270 | return Obj; 271 | } 272 | }) 273 | 274 | } 275 | getSummary(title) { 276 | var wikipedia = this.wiki; 277 | return fetch( 278 | `https://${wikipedia}.wikipedia.org/api/rest_v1/page/summary/${title}`) 279 | .then(function (response) { 280 | return response.json(); 281 | }) 282 | .then(function (json) { 283 | var data = json 284 | 285 | var Obj = { 286 | status: "success", 287 | data: { 288 | title: data.title, 289 | abstract: data.description, 290 | id: data.pageid, 291 | content: data.extract, 292 | url: `http://${wikipedia}.wikipedia.org/?curid=` + data.pageid 293 | } 294 | } 295 | 296 | return Obj; 297 | }) 298 | .catch((error) => { 299 | if (error) { 300 | var Obj = wikiApp.createErrorObj(error); 301 | return Obj; 302 | } 303 | }) 304 | 305 | } 306 | getThumbnail(title, size = 1000) { 307 | var wikipedia = this.wiki; 308 | return fetch( 309 | `https://en.wikipedia.org/w/api.php?action=query&titles=${title}&origin=*&prop=pageimages&format=json&pithumbsize=${size}`) 310 | .then(function (response) { 311 | return response.json(); 312 | }) 313 | .then(function (json) { 314 | var data = json.query.pages; 315 | var pageid = data[Object.keys(data)[0]].pageid; 316 | var wiki = data[pageid]; 317 | 318 | var Obj = { 319 | status: "success", 320 | data: { 321 | id: wiki.pageid, 322 | image: wiki.thumbnail.source, 323 | } 324 | } 325 | 326 | return Obj; 327 | }) 328 | .catch((error) => { 329 | if (error) { 330 | var Obj = wikiApp.createErrorObj(error); 331 | Obj["status"] = "failed" 332 | return Obj; 333 | } 334 | }) 335 | } 336 | 337 | getImage2(title) { 338 | var wikipedia = this.wiki; 339 | return fetch( 340 | `https://${wikipedia}.wikipedia.org/w/api.php?action=parse&page=${title}&prop=images&format=json&origin=*`) 341 | .then(function (response) { 342 | return response.json(); 343 | }) 344 | .then(function (json) { 345 | var data = json.parse, 346 | 347 | pictures = data["images"] 348 | 349 | return { 350 | data: pictures, 351 | status: "success" 352 | }; 353 | }) 354 | .catch((error) => { 355 | if (error) { 356 | var Obj = wikiApp.createErrorObj(error); 357 | return Obj; 358 | } 359 | }) 360 | } 361 | getPDF(title) { 362 | var endpoint = `https://en.wikipedia.org/api/rest_v1/page/pdf/${title}`; 363 | return fetch(endpoint) 364 | .then(function (response) { 365 | return response.json(); 366 | }) 367 | .then(function () { 368 | return wikiApp.createErrorObj("Wiki Error: Page not found") 369 | }) 370 | .catch(() => { 371 | window.location = endpoint 372 | 373 | }) 374 | } 375 | getInfoBox(title) { 376 | var wikipedia = this.wiki; 377 | return fetch( 378 | `https://${wikipedia}.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=${title}&rvsection=0&rvparse&origin=*`) 379 | .then(function (response) { 380 | return response.json(); 381 | }) 382 | .then(function (json) { 383 | var data = json.query.pages; 384 | var pageid = data[Object.keys(data)[0]].pageid; 385 | var wiki = data[pageid]; 386 | 387 | var html = wiki.revisions[0]["*"] 388 | var s = document.createElement("div"); 389 | s.innerHTML = html; 390 | 391 | var x = $(s).find("table").html(); 392 | 393 | var Obj = { 394 | status: "success", 395 | content: x, 396 | id: wiki.pageid, 397 | url: `http://${wikipedia}.wikipedia.org/?curid=` + wiki.pageid 398 | } 399 | 400 | return Obj; 401 | }) 402 | .catch((error) => { 403 | if (error) { 404 | var Obj = wikiApp.createErrorObj(error); 405 | return { 406 | data: Obj, 407 | status: "failed" 408 | }; 409 | } 410 | }) 411 | } 412 | } 413 | 414 | const wikiApp = { 415 | createErrorObj(data) { 416 | var Obj = { 417 | status: "failed", 418 | data: data 419 | } 420 | //console.error("Wiki Error /", data) 421 | return Obj; 422 | }, 423 | stripHTML: function (html) { 424 | try { 425 | var div = document.createElement("div"); 426 | div.innerHTML = html; 427 | return div.innerText; 428 | } catch { 429 | return html 430 | } 431 | }, 432 | isBetween: function (x, a, b) { 433 | if (x > a && x < b) { 434 | return true 435 | } else { 436 | return false 437 | } 438 | }, 439 | availableWikipedia: ["en", "fr", "de", "es", "ja", "ru", "pt", "zh", "it", "fa", "ar", "pl", "nl", "uk", "id", "he", "vi", "tr", "sv", "ko", "cs", "fi", "hu", "ca", "hi", "simple", "no", "bn", "th", "el", "ro", "da", "az", "sr", "bg", "ms", "et", "hr", "hy", "sk", "ml", "eu", "sl", "eo", "lt", "ta", "sq", "lv", "be", "gl", "ka", "ur", "kk", "mk", "uz", "te", "mr", "sh", "arz", "af", "bs", "ceb", "kn", "ha", "nn", "is", "la", "my", "sw", "ast", "tl", "jv", "ba", "as", "ckb", "azb", "si", "cy", "sco", "ne", "br", "tt", "als", "ga", "oc", "mn", "so", "gu", "pa", "ky", "war", "an", "ku", "dag", "lb", "tg", "bar", "km", "yo", "su", "min", "ps", "bcl", "pnb", "nds", "tk", "mg", "fy", "or", "ang", "hif", "io", "cv", "ce", "ht", "lmo", "wuu", "am", "ig", "yi", "qu", "bh", "ban", "mzn", "ary", "sah", "ia", "vec", "ace", "lo", "scn", "fo", "sa", "kw", "diq", "gn", "sd", "hyw", "eml", "ie", "rw", "mai", "szl", "vo", "ay", "sat", "co", "sc", "xmf", "new", "zu", "hsb", "lij", "os", "gd", "ak", "hak", "vls", "bi", "frp", "mt", "nap", "sn", "vep", "crh", "li", "pms", "ilo", "ks", "cdo", "nah", "bo", "wa", "pam", "myv", "mi", "frr", "bpy", "lad", "se", "fur", "gag", "smn", "pcd", "udm", "bug", "avk", "chr", "gan", "kv", "mhr", "tw", "kab", "mnw", "tcy", "ug", "ab", "ln", "lfn", "pap", "dty", "dz", "haw", "gv", "rue", "bjn", "cu", "szy", "bxr", "ny", "dv", "gor", "kl", "rn", "lld", "ext", "ksh", "ady", "av", "ch", "chy", "cr", "dsb", "kbp", "csb", "kg", "jbo", "mwl", "pdc", "rm", "shi", "iu", "mad", "nov", "arc", "tpi", "ts", "tyv", "zea", "shn", "glk", "mrj", "na", "nv", "nrm", "sm", "tet", "bm", "pag", "wo", "awa", "ff", "got", "inh", "krc", "kaa", "lbe", "lez", "pih", "xh", "fj", "jam", "kbd", "xal", "om", "ss", "tn", "rmy", "gom", "din", "ee", "ik", "olo", "mdf", "nqo", "ti", "lg", "nia", "koi", "ltg", "pnt", "to", "za", "skr", "ki", "stq", "st", "ty", "atj", "nso", "pi", "srn", "ve", "gcr", "pfl", "sg", "tum", "nostalgia"] 440 | } -------------------------------------------------------------------------------- /wiki.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Wikifox - Wikipedia Re-imagined 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 41 | 42 | 43 | 44 | 45 |
    46 | 47 |
    48 |
    49 |
    50 |
    51 |
    52 |
    53 | 66 |
    67 | 68 |
    69 |
    70 |
    71 |
    72 |
    73 |
    74 | 75 |
    76 | 77 |
    78 |
    79 | 80 |
    81 | 82 |
    83 |
    84 |
    85 | 86 |
    87 | 90 |
    91 | 92 |
    93 |
    94 | 95 |
    96 |
    97 | 98 |
    99 | 100 |
    101 | 102 | 105 |
    106 |
    107 |
    108 | 109 |
    110 |
    111 |
    112 |

    Quick Jump

    113 |
    114 | 115 |
    116 |
    117 | 118 | 119 |
    120 |
    121 | Search! 122 |
    Search for section titles or sub-topics. You can also search 123 | from the whole content!
    124 |
    125 |
    126 |
    127 |
    128 |
    129 |
    130 |
    131 |
    132 | Search! 133 |
    Do you want to download this article as Classic wikipedia-styled 134 | PDF document? We will generate it for you!
    135 |
    136 |
    137 | 138 |

    Download

    139 |
    140 |
    141 |
    142 |
    143 |
    144 |
    145 | 146 |
    147 |
    148 |
    149 |

    Keyboard Shortcuts

    150 |
    151 |
    152 |
    153 |
    154 |
    155 |
    156 |
    157 |
    158 |
    159 |
    160 |
    161 |
    162 | Search! 163 |
    Share this article to your friend's, family and anyone with your 164 | favorite platform!
    165 | 182 |
    183 |
    184 |
    185 |
    186 | 187 |
    188 | 236 |
    237 |
    238 |
    239 |
    240 |
    241 | 246 | 247 |
    248 | 249 |
    250 |
    251 | 259 |
    260 |
    261 | 262 | 263 | 264 | 271 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | --------------------------------------------------------------------------------