mirror of
https://github.com/tachiyomiorg/website.git
synced 2024-12-21 07:31:58 +01:00
Project Linting (#209)
* More setup for ESLint * Initial linting * Fix: "Unexpected use of 'location': no-restricted-globals" * Fix: "Prop 'sidebarItems' should define at least its type" * Fix: "import/no-unresolved" * Fix: "import/no-extraneous-dependencies" * Fix: "Unexpected require() 'global-require'" * Fix: "vue/require-prop-types" * Line disable: "radix" * Line disable: "no-param-reassign" * Line disable: "no-shadow" This should usually be an actual problem but I don't think so in this case as the next prompt is basically just a one-action warning. * Add markdown linting support * Replace single quotes with double * Fix indentation for all files * Fix second level quotation marks * Change accordingly I'd still rather keep 4-tab for MD when applicable though, the alternative is a non-standard 3-space indent, which makes three different indentations to keep track of.
This commit is contained in:
parent
8c2459d492
commit
b520d4e448
1
.eslintignore
Normal file
1
.eslintignore
Normal file
@ -0,0 +1 @@
|
|||||||
|
!.vuepress
|
@ -5,18 +5,28 @@
|
|||||||
},
|
},
|
||||||
"extends": [
|
"extends": [
|
||||||
"plugin:vue/essential",
|
"plugin:vue/essential",
|
||||||
"vuepress",
|
"airbnb-base",
|
||||||
"prettier"
|
"prettier",
|
||||||
|
"vuepress"
|
||||||
],
|
],
|
||||||
|
"globals": {
|
||||||
|
"Atomics": "readonly",
|
||||||
|
"SharedArrayBuffer": "readonly"
|
||||||
|
},
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 2018,
|
"ecmaVersion": 2018,
|
||||||
"sourceType": "module"
|
"sourceType": "module"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"vue",
|
"vue",
|
||||||
"prettier"
|
"prettier",
|
||||||
|
"markdown"
|
||||||
],
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"prettier/prettier": ["error"]
|
"prettier/prettier": "error",
|
||||||
|
"import/no-unresolved": [
|
||||||
|
2,
|
||||||
|
{ "ignore": ["^@"] }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
4
.github/workflows/push.yml
vendored
4
.github/workflows/push.yml
vendored
@ -31,6 +31,6 @@ jobs:
|
|||||||
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
publish_branch: gh-pages
|
publish_branch: gh-pages
|
||||||
publish_dir: ./public
|
publish_dir: ./public
|
||||||
user_name: 'github-actions[bot]'
|
user_name: "github-actions[bot]"
|
||||||
user_email: 'github-actions[bot]@users.noreply.github.com'
|
user_email: "github-actions[bot]@users.noreply.github.com"
|
||||||
commit_message: ${{ github.event.head_commit.message }}
|
commit_message: ${{ github.event.head_commit.message }}
|
||||||
|
88
.stylintrc
88
.stylintrc
@ -1,47 +1,47 @@
|
|||||||
{
|
{
|
||||||
"blocks": false,
|
"blocks": false,
|
||||||
"brackets": "never",
|
"brackets": "never",
|
||||||
"colons": "never",
|
"colons": "never",
|
||||||
"colors": "always",
|
"colors": "always",
|
||||||
"commaSpace": "always",
|
"commaSpace": "always",
|
||||||
"commentSpace": "always",
|
"commentSpace": "always",
|
||||||
"cssLiteral": "never",
|
"cssLiteral": "never",
|
||||||
"customProperties": [],
|
"customProperties": [],
|
||||||
"depthLimit": false,
|
"depthLimit": false,
|
||||||
"duplicates": true,
|
"duplicates": true,
|
||||||
"efficient": "always",
|
"efficient": "always",
|
||||||
"exclude": [],
|
"exclude": [],
|
||||||
"extendPref": "@extends",
|
"extendPref": "@extends",
|
||||||
"globalDupe": true,
|
"globalDupe": true,
|
||||||
"groupOutputByFile": true,
|
"groupOutputByFile": true,
|
||||||
"indentPref": false,
|
"indentPref": false,
|
||||||
"leadingZero": "always",
|
"leadingZero": "always",
|
||||||
"maxErrors": false,
|
"maxErrors": false,
|
||||||
"maxWarnings": false,
|
"maxWarnings": false,
|
||||||
"mixed": true,
|
"mixed": true,
|
||||||
"mixins": [],
|
"mixins": [],
|
||||||
"namingConvention": false,
|
"namingConvention": false,
|
||||||
"namingConventionStrict": false,
|
"namingConventionStrict": false,
|
||||||
"none": "always",
|
"none": "always",
|
||||||
"noImportant": false,
|
"noImportant": false,
|
||||||
"parenSpace": "never",
|
"parenSpace": "never",
|
||||||
"placeholders": "always",
|
"placeholders": "always",
|
||||||
"prefixVarsWithDollar": "always",
|
"prefixVarsWithDollar": "always",
|
||||||
"quotePref": false,
|
"quotePref": false,
|
||||||
"reporterOptions": {
|
"reporterOptions": {
|
||||||
"columns": ["lineData", "severity", "description", "rule"],
|
"columns": ["lineData", "severity", "description", "rule"],
|
||||||
"columnSplitter": " ",
|
"columnSplitter": " ",
|
||||||
"showHeaders": false,
|
"showHeaders": false,
|
||||||
"truncate": true
|
"truncate": true
|
||||||
},
|
},
|
||||||
"semicolons": "never",
|
"semicolons": "never",
|
||||||
"sortOrder": ["grouped", "alphabetical"],
|
"sortOrder": ["grouped", "alphabetical"],
|
||||||
"stackedProperties": "never",
|
"stackedProperties": "never",
|
||||||
"trailingWhitespace": "never",
|
"trailingWhitespace": "never",
|
||||||
"universal": false,
|
"universal": false,
|
||||||
"valid": true,
|
"valid": true,
|
||||||
"zeroUnits": "never",
|
"zeroUnits": "never",
|
||||||
"zIndexNormalize": false,
|
"zIndexNormalize": false,
|
||||||
"stylusSupremacy.selectorSeparator": ",\n",
|
"stylusSupremacy.selectorSeparator": ",\n",
|
||||||
"stylusSupremacy.insertNewLineAroundBlocks": "root"
|
"stylusSupremacy.insertNewLineAroundBlocks": "root"
|
||||||
}
|
}
|
||||||
|
22
README.md
22
README.md
@ -1,9 +1,11 @@
|
|||||||
<h1 align="center"><img src="./src/.vuepress/public/assets/media/tachiyomi.png">Tachiyomi Website</h1>
|
<div>
|
||||||
<p align="center">
|
<h1 align="center"><img src="./src/.vuepress/public/assets/media/tachiyomi.png">Tachiyomi Website</h1>
|
||||||
<a href="https://discord.gg/tachiyomi">
|
<p align="center">
|
||||||
<img src="https://img.shields.io/discord/349436576037732353.svg?label=Discord&labelColor=7289da&color=2c2f33&style=flat" alt="Discord">
|
<a href="https://discord.gg/tachiyomi">
|
||||||
</a>
|
<img src="https://img.shields.io/discord/349436576037732353.svg?label=Discord&labelColor=7289da&color=2c2f33&style=flat" alt="Discord">
|
||||||
</p>
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
@ -18,8 +20,8 @@ Pull requests are welcome. For major changes, please open an issue first to disc
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright (C) 2018 The Tachiyomi Open Source Project
|
Copyright (C) 2018 The Tachiyomi Open Source Project
|
||||||
|
|
||||||
This Source Code Form is subject to the terms of the Mozilla Public
|
This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
257
package-lock.json
generated
257
package-lock.json
generated
@ -2189,6 +2189,12 @@
|
|||||||
"object.assign": "^4.1.0"
|
"object.assign": "^4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"bail": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
@ -2873,6 +2879,24 @@
|
|||||||
"supports-color": "^5.3.0"
|
"supports-color": "^5.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"character-entities": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
|
||||||
|
"integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"character-entities-legacy": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"character-reference-invalid": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"chardet": {
|
"chardet": {
|
||||||
"version": "0.7.0",
|
"version": "0.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
||||||
@ -3099,6 +3123,12 @@
|
|||||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"collapse-white-space": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz",
|
||||||
|
"integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"collection-visit": {
|
"collection-visit": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
|
||||||
@ -4716,6 +4746,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"eslint-plugin-markdown": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-BfvXKsO0K+zvdarNc801jsE/NTLmig4oKhZ1U3aSUgTf2dB/US5+CrfGxMsCK2Ki1vS1R3HPok+uYpufFndhzw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"object-assign": "^4.0.1",
|
||||||
|
"remark-parse": "^5.0.0",
|
||||||
|
"unified": "^6.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"eslint-plugin-node": {
|
"eslint-plugin-node": {
|
||||||
"version": "10.0.0",
|
"version": "10.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz",
|
||||||
@ -6490,6 +6531,22 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"is-alphabetical": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"is-alphanumerical": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"is-alphabetical": "^1.0.0",
|
||||||
|
"is-decimal": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"is-arguments": {
|
"is-arguments": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
|
||||||
@ -6580,6 +6637,12 @@
|
|||||||
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
|
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"is-decimal": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-descriptor": {
|
"is-descriptor": {
|
||||||
"version": "0.1.6",
|
"version": "0.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
|
||||||
@ -6638,6 +6701,12 @@
|
|||||||
"is-extglob": "^2.1.1"
|
"is-extglob": "^2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"is-hexadecimal": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-installed-globally": {
|
"is-installed-globally": {
|
||||||
"version": "0.3.2",
|
"version": "0.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
|
||||||
@ -6784,12 +6853,24 @@
|
|||||||
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
|
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"is-whitespace-character": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-windows": {
|
"is-windows": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
|
||||||
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
|
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"is-word-character": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-wsl": {
|
"is-wsl": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
||||||
@ -7111,8 +7192,7 @@
|
|||||||
"lodash.orderby": {
|
"lodash.orderby": {
|
||||||
"version": "4.6.0",
|
"version": "4.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.orderby/-/lodash.orderby-4.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.orderby/-/lodash.orderby-4.6.0.tgz",
|
||||||
"integrity": "sha1-5pfwTOXXhSL1TZM4syuBozk+TrM=",
|
"integrity": "sha1-5pfwTOXXhSL1TZM4syuBozk+TrM="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"lodash.padstart": {
|
"lodash.padstart": {
|
||||||
"version": "4.6.1",
|
"version": "4.6.1",
|
||||||
@ -7146,8 +7226,7 @@
|
|||||||
"lodash.throttle": {
|
"lodash.throttle": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
||||||
"integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
|
"integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"lodash.uniq": {
|
"lodash.uniq": {
|
||||||
"version": "4.5.0",
|
"version": "4.5.0",
|
||||||
@ -7247,6 +7326,12 @@
|
|||||||
"object-visit": "^1.0.0"
|
"object-visit": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"markdown-escapes": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"markdown-it": {
|
"markdown-it": {
|
||||||
"version": "8.4.2",
|
"version": "8.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
|
||||||
@ -8375,6 +8460,20 @@
|
|||||||
"safe-buffer": "^5.1.1"
|
"safe-buffer": "^5.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"parse-entities": {
|
||||||
|
"version": "1.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
|
||||||
|
"integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"character-entities": "^1.0.0",
|
||||||
|
"character-entities-legacy": "^1.0.0",
|
||||||
|
"character-reference-invalid": "^1.0.0",
|
||||||
|
"is-alphanumerical": "^1.0.0",
|
||||||
|
"is-decimal": "^1.0.0",
|
||||||
|
"is-hexadecimal": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"parse-json": {
|
"parse-json": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
||||||
@ -9627,6 +9726,29 @@
|
|||||||
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
|
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"remark-parse": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"collapse-white-space": "^1.0.2",
|
||||||
|
"is-alphabetical": "^1.0.0",
|
||||||
|
"is-decimal": "^1.0.0",
|
||||||
|
"is-whitespace-character": "^1.0.0",
|
||||||
|
"is-word-character": "^1.0.0",
|
||||||
|
"markdown-escapes": "^1.0.0",
|
||||||
|
"parse-entities": "^1.1.0",
|
||||||
|
"repeat-string": "^1.5.4",
|
||||||
|
"state-toggle": "^1.0.0",
|
||||||
|
"trim": "0.0.1",
|
||||||
|
"trim-trailing-lines": "^1.0.0",
|
||||||
|
"unherit": "^1.0.4",
|
||||||
|
"unist-util-remove-position": "^1.0.0",
|
||||||
|
"vfile-location": "^2.0.0",
|
||||||
|
"xtend": "^4.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"remove-trailing-separator": {
|
"remove-trailing-separator": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
||||||
@ -9712,6 +9834,12 @@
|
|||||||
"is-finite": "^1.0.0"
|
"is-finite": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"replace-ext": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"request": {
|
"request": {
|
||||||
"version": "2.88.2",
|
"version": "2.88.2",
|
||||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
|
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
|
||||||
@ -10665,6 +10793,12 @@
|
|||||||
"integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
|
"integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"state-toggle": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"static-extend": {
|
"static-extend": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
|
||||||
@ -11268,12 +11402,30 @@
|
|||||||
"punycode": "^2.1.0"
|
"punycode": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"trim": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"trim-newlines": {
|
"trim-newlines": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
|
||||||
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
|
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"trim-trailing-lines": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz",
|
||||||
|
"integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"trough": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"true-case-path": {
|
"true-case-path": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
|
||||||
@ -11380,6 +11532,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"unherit": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz",
|
||||||
|
"integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.0",
|
||||||
|
"xtend": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"unicode-canonical-property-names-ecmascript": {
|
"unicode-canonical-property-names-ecmascript": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
|
||||||
@ -11408,6 +11570,20 @@
|
|||||||
"integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
|
"integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"unified": {
|
||||||
|
"version": "6.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz",
|
||||||
|
"integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bail": "^1.0.0",
|
||||||
|
"extend": "^3.0.0",
|
||||||
|
"is-plain-obj": "^1.1.0",
|
||||||
|
"trough": "^1.0.0",
|
||||||
|
"vfile": "^2.0.0",
|
||||||
|
"x-is-string": "^0.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"union-value": {
|
"union-value": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
|
||||||
@ -11459,6 +11635,45 @@
|
|||||||
"crypto-random-string": "^2.0.0"
|
"crypto-random-string": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"unist-util-is": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"unist-util-remove-position": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"unist-util-visit": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"unist-util-stringify-position": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"unist-util-visit": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"unist-util-visit-parents": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"unist-util-visit-parents": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"unist-util-is": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"universalify": {
|
"universalify": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||||
@ -11776,6 +11991,33 @@
|
|||||||
"extsprintf": "^1.2.0"
|
"extsprintf": "^1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vfile": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"is-buffer": "^1.1.4",
|
||||||
|
"replace-ext": "1.0.0",
|
||||||
|
"unist-util-stringify-position": "^1.0.0",
|
||||||
|
"vfile-message": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vfile-location": {
|
||||||
|
"version": "2.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz",
|
||||||
|
"integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"vfile-message": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"unist-util-stringify-position": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vm-browserify": {
|
"vm-browserify": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
|
||||||
@ -11792,7 +12034,6 @@
|
|||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/vue-agile/-/vue-agile-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/vue-agile/-/vue-agile-1.1.3.tgz",
|
||||||
"integrity": "sha512-RnvKK6ZoXNAk2Q6h/ux+bhqYs4uflFew3xcsNfysQa+GVLKHfizAaeKHJndqGjSXA+qg+kJuYd4RDY/ry8RY4w==",
|
"integrity": "sha512-RnvKK6ZoXNAk2Q6h/ux+bhqYs4uflFew3xcsNfysQa+GVLKHfizAaeKHJndqGjSXA+qg+kJuYd4RDY/ry8RY4w==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"lodash.orderby": "^4.6.0",
|
"lodash.orderby": "^4.6.0",
|
||||||
"lodash.throttle": "^4.1.1"
|
"lodash.throttle": "^4.1.1"
|
||||||
@ -12624,6 +12865,12 @@
|
|||||||
"async-limiter": "~1.0.0"
|
"async-limiter": "~1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"x-is-string": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
|
||||||
|
"integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"xdg-basedir": {
|
"xdg-basedir": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
|
||||||
|
@ -16,13 +16,16 @@
|
|||||||
"@vuepress/plugin-google-analytics": "^1.5.0",
|
"@vuepress/plugin-google-analytics": "^1.5.0",
|
||||||
"eslint": "^6.8.0",
|
"eslint": "^6.8.0",
|
||||||
"eslint-config-airbnb": "^18.1.0",
|
"eslint-config-airbnb": "^18.1.0",
|
||||||
|
"eslint-config-airbnb-base": "^14.1.0",
|
||||||
"eslint-config-prettier": "^6.11.0",
|
"eslint-config-prettier": "^6.11.0",
|
||||||
"eslint-config-vuepress": "^2.2.0",
|
"eslint-config-vuepress": "^2.2.0",
|
||||||
|
"eslint-plugin-import": "^2.20.2",
|
||||||
|
"eslint-plugin-markdown": "^1.0.2",
|
||||||
"eslint-plugin-prettier": "^3.1.3",
|
"eslint-plugin-prettier": "^3.1.3",
|
||||||
|
"eslint-plugin-vue": "^6.2.2",
|
||||||
"node-sass": "^4.14.1",
|
"node-sass": "^4.14.1",
|
||||||
"prettier": "^2.0.5",
|
"prettier": "^2.0.5",
|
||||||
"sass-loader": "^8.0.2",
|
"sass-loader": "^8.0.2",
|
||||||
"vue-agile": "^1.1.3",
|
|
||||||
"vuepress": "^1.5.0",
|
"vuepress": "^1.5.0",
|
||||||
"vuepress-plugin-clean-urls": "^1.1.1",
|
"vuepress-plugin-clean-urls": "^1.1.1",
|
||||||
"vuepress-plugin-container": "^2.1.3"
|
"vuepress-plugin-container": "^2.1.3"
|
||||||
@ -33,6 +36,7 @@
|
|||||||
"lodash.groupby": "^4.6.0",
|
"lodash.groupby": "^4.6.0",
|
||||||
"lodash.sortby": "^4.7.0",
|
"lodash.sortby": "^4.7.0",
|
||||||
"material-design-icons": "^3.0.1",
|
"material-design-icons": "^3.0.1",
|
||||||
|
"vue-agile": "^1.1.3",
|
||||||
"vue-material-design-icons": "^4.6.0",
|
"vue-material-design-icons": "^4.6.0",
|
||||||
"vue-sweetalert2": "^3.0.5",
|
"vue-sweetalert2": "^3.0.5",
|
||||||
"vuepress-plugin-sitemap": "^2.3.1"
|
"vuepress-plugin-sitemap": "^2.3.1"
|
||||||
|
@ -16,18 +16,18 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
name: {
|
name: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "carousel"
|
default: "carousel",
|
||||||
},
|
},
|
||||||
config: {
|
config: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: function() {
|
default() {
|
||||||
return {
|
return {
|
||||||
navButtons: true,
|
navButtons: true,
|
||||||
centerMode: true
|
centerMode: true,
|
||||||
};
|
};
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -10,9 +10,9 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
name: {
|
name: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "carousel-cell"
|
default: "carousel-cell",
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -15,35 +15,34 @@ import axios from "axios";
|
|||||||
const RELEASE_URL =
|
const RELEASE_URL =
|
||||||
"https://api.github.com/repos/inorichi/tachiyomi/releases/latest";
|
"https://api.github.com/repos/inorichi/tachiyomi/releases/latest";
|
||||||
|
|
||||||
const PREVIEW_URL =
|
const PREVIEW_URL = "https://tachiyomi.kanade.eu/latest";
|
||||||
"https://tachiyomi.kanade.eu/latest";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
downloadStableTag: {
|
downloadStableTag: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true,
|
||||||
},
|
},
|
||||||
downloadPreviewTag: {
|
downloadPreviewTag: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true,
|
||||||
},
|
},
|
||||||
downloadStableLabel: {
|
downloadStableLabel: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "Stable"
|
default: "Stable",
|
||||||
},
|
},
|
||||||
downloadPreviewLabel: {
|
downloadPreviewLabel: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "Preview"
|
default: "Preview",
|
||||||
},
|
},
|
||||||
downloadStableUrl: {
|
downloadStableUrl: {
|
||||||
type: String,
|
type: String,
|
||||||
default: undefined
|
default: undefined,
|
||||||
},
|
},
|
||||||
downloadPreviewUrl: {
|
downloadPreviewUrl: {
|
||||||
type: String,
|
type: String,
|
||||||
default: undefined
|
default: undefined,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
@ -56,7 +55,7 @@ export default {
|
|||||||
async mounted() {
|
async mounted() {
|
||||||
const { data } = await axios.get(RELEASE_URL);
|
const { data } = await axios.get(RELEASE_URL);
|
||||||
// Maybe eventually some release has more than the apk in assets.
|
// Maybe eventually some release has more than the apk in assets.
|
||||||
const apkAsset = data.assets.find(a => a.name.includes(".apk"));
|
const apkAsset = data.assets.find((a) => a.name.includes(".apk"));
|
||||||
// Set the values.
|
// Set the values.
|
||||||
this.$data.tagName = data.tag_name;
|
this.$data.tagName = data.tag_name;
|
||||||
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
||||||
@ -66,7 +65,7 @@ export default {
|
|||||||
downloadStable() {
|
downloadStable() {
|
||||||
this.$swal({
|
this.$swal({
|
||||||
title: "Downloading",
|
title: "Downloading",
|
||||||
text: this.downloadStableLabel + " version is being downloaded.",
|
text: `${this.downloadStableLabel} version is being downloaded.`,
|
||||||
icon: "success",
|
icon: "success",
|
||||||
focusConfirm: false,
|
focusConfirm: false,
|
||||||
focusCancel: false,
|
focusCancel: false,
|
||||||
@ -74,24 +73,32 @@ export default {
|
|||||||
timerProgressBar: true,
|
timerProgressBar: true,
|
||||||
customClass: {
|
customClass: {
|
||||||
confirmButton: "download-confirm-button",
|
confirmButton: "download-confirm-button",
|
||||||
container: "download-container"
|
container: "download-container",
|
||||||
},
|
},
|
||||||
showClass: {
|
showClass: {
|
||||||
popup: "animated pulse faster"
|
popup: "animated pulse faster",
|
||||||
},
|
},
|
||||||
hideClass: {
|
hideClass: {
|
||||||
popup: "animated zoomOut faster"
|
popup: "animated zoomOut faster",
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
window.location.assign(
|
window.location.assign(
|
||||||
this.$props.downloadStableUrl || this.$data.browserDownloadUrl || RELEASE_URL
|
this.$props.downloadStableUrl ||
|
||||||
|
this.$data.browserDownloadUrl ||
|
||||||
|
RELEASE_URL
|
||||||
|
);
|
||||||
|
window.ga(
|
||||||
|
"send",
|
||||||
|
"event",
|
||||||
|
"Action",
|
||||||
|
"Download",
|
||||||
|
this.downloadStableTag
|
||||||
);
|
);
|
||||||
window.ga("send", "event", "Action", "Download", this.downloadStableTag);
|
|
||||||
},
|
},
|
||||||
downloadPreview() {
|
downloadPreview() {
|
||||||
this.$swal({
|
this.$swal({
|
||||||
title: "Downloading",
|
title: "Downloading",
|
||||||
text: this.downloadPreviewLabel + " version is being downloaded.",
|
text: `${this.downloadPreviewLabel} version is being downloaded.`,
|
||||||
icon: "success",
|
icon: "success",
|
||||||
focusConfirm: false,
|
focusConfirm: false,
|
||||||
focusCancel: false,
|
focusCancel: false,
|
||||||
@ -99,21 +106,27 @@ export default {
|
|||||||
timerProgressBar: true,
|
timerProgressBar: true,
|
||||||
customClass: {
|
customClass: {
|
||||||
confirmButton: "download-confirm-button",
|
confirmButton: "download-confirm-button",
|
||||||
container: "download-container"
|
container: "download-container",
|
||||||
},
|
},
|
||||||
showClass: {
|
showClass: {
|
||||||
popup: "animated pulse faster"
|
popup: "animated pulse faster",
|
||||||
},
|
},
|
||||||
hideClass: {
|
hideClass: {
|
||||||
popup: "animated zoomOut faster"
|
popup: "animated zoomOut faster",
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
window.location.assign(
|
window.location.assign(
|
||||||
this.$props.downloadPreviewUrl || PREVIEW_URL
|
this.$props.downloadPreviewUrl || PREVIEW_URL
|
||||||
);
|
);
|
||||||
window.ga("send", "event", "Action", "Download", this.downloadPreviewTag);
|
window.ga(
|
||||||
}
|
"send",
|
||||||
}
|
"event",
|
||||||
|
"Action",
|
||||||
|
"Download",
|
||||||
|
this.downloadPreviewTag
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -54,24 +54,26 @@ const EXTENSION_JSON =
|
|||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
extensions: []
|
extensions: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
async beforeMount() {
|
async beforeMount() {
|
||||||
const { data } = await axios.get(EXTENSION_JSON);
|
const { data } = await axios.get(EXTENSION_JSON);
|
||||||
const values = Object.values(groupBy(data, "lang"));
|
const values = Object.values(groupBy(data, "lang"));
|
||||||
this.$data.extensions = sortBy(values, [g => this.langName(g[0].lang)]);
|
this.$data.extensions = sortBy(values, [
|
||||||
|
(g) => this.langName(g[0].lang),
|
||||||
|
]);
|
||||||
},
|
},
|
||||||
|
|
||||||
updated() {
|
updated() {
|
||||||
if (location.hash) {
|
if (window.ocation.hash) {
|
||||||
location.replace(location.hash);
|
window.location.replace(window.location.hash);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
langName: code =>
|
langName: (code) =>
|
||||||
code === "all"
|
code === "all"
|
||||||
? "All"
|
? "All"
|
||||||
: `${ISO6391.getName(code)} (${ISO6391.getNativeName(code)})`,
|
: `${ISO6391.getName(code)} (${ISO6391.getNativeName(code)})`,
|
||||||
@ -79,9 +81,9 @@ export default {
|
|||||||
const pkgName = pkg.substring(0, pkg.lastIndexOf("."));
|
const pkgName = pkg.substring(0, pkg.lastIndexOf("."));
|
||||||
return `https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/icon/${pkgName}.png`;
|
return `https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/icon/${pkgName}.png`;
|
||||||
},
|
},
|
||||||
apkUrl: apk =>
|
apkUrl: (apk) =>
|
||||||
`https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/apk/${apk}`
|
`https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/apk/${apk}`,
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -1,9 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="downloadContainer">
|
<div class="downloadContainer">
|
||||||
<button class="downloadForkButton" :style="downloadForkStyle" @click="downloadFork">
|
<button
|
||||||
|
class="downloadForkButton"
|
||||||
|
:style="downloadForkStyle"
|
||||||
|
@click="downloadFork"
|
||||||
|
>
|
||||||
{{ downloadForkLabel }}
|
{{ downloadForkLabel }}
|
||||||
</button>
|
</button>
|
||||||
<button class="githubForkButton" :style="githubForkStyle" :onclick="githubForkLink">
|
<button
|
||||||
|
class="githubForkButton"
|
||||||
|
:style="githubForkStyle"
|
||||||
|
:onclick="githubForkLink"
|
||||||
|
>
|
||||||
{{ githubForkLabel }}
|
{{ githubForkLabel }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@ -16,44 +24,44 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
forkName: {
|
forkName: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true,
|
||||||
},
|
},
|
||||||
downloadForkLabel: {
|
downloadForkLabel: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "Download"
|
default: "Download",
|
||||||
},
|
},
|
||||||
downloadForkLink: {
|
downloadForkLink: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true,
|
||||||
},
|
},
|
||||||
downloadForkStyle: {
|
downloadForkStyle: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ""
|
default: "",
|
||||||
},
|
},
|
||||||
githubForkLabel: {
|
githubForkLabel: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "GitHub"
|
default: "GitHub",
|
||||||
},
|
},
|
||||||
githubForkLink: {
|
githubForkLink: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true,
|
||||||
},
|
},
|
||||||
githubForkStyle: {
|
githubForkStyle: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ""
|
default: "",
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
tagName: "",
|
tagName: "",
|
||||||
browserDownloadUrl: ""
|
browserDownloadUrl: "",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
async mounted() {
|
async mounted() {
|
||||||
const { data } = await axios.get(this.$props.downloadForkLink);
|
const { data } = await axios.get(this.$props.downloadForkLink);
|
||||||
// Maybe eventually some release has more than the apk in assets.
|
// Maybe eventually some release has more than the apk in assets.
|
||||||
const apkAsset = data.assets.find(a => a.name.includes(".apk"));
|
const apkAsset = data.assets.find((a) => a.name.includes(".apk"));
|
||||||
// Set the values.
|
// Set the values.
|
||||||
this.$data.tagName = data.tag_name;
|
this.$data.tagName = data.tag_name;
|
||||||
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
||||||
@ -63,7 +71,7 @@ export default {
|
|||||||
downloadFork() {
|
downloadFork() {
|
||||||
this.$swal({
|
this.$swal({
|
||||||
title: "Downloading",
|
title: "Downloading",
|
||||||
text: this.$props.forkName + " is being downloaded.",
|
text: `${this.$props.forkName} is being downloaded.`,
|
||||||
icon: "success",
|
icon: "success",
|
||||||
focusConfirm: false,
|
focusConfirm: false,
|
||||||
focusCancel: false,
|
focusCancel: false,
|
||||||
@ -71,21 +79,27 @@ export default {
|
|||||||
timerProgressBar: true,
|
timerProgressBar: true,
|
||||||
customClass: {
|
customClass: {
|
||||||
confirmButton: "download-confirm-button",
|
confirmButton: "download-confirm-button",
|
||||||
container: "download-container"
|
container: "download-container",
|
||||||
},
|
},
|
||||||
showClass: {
|
showClass: {
|
||||||
popup: "animated pulse faster"
|
popup: "animated pulse faster",
|
||||||
},
|
},
|
||||||
hideClass: {
|
hideClass: {
|
||||||
popup: "animated zoomOut faster"
|
popup: "animated zoomOut faster",
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
window.location.assign(
|
window.location.assign(
|
||||||
this.$data.browserDownloadUrl || this.$props.downloadForkLink
|
this.$data.browserDownloadUrl || this.$props.downloadForkLink
|
||||||
);
|
);
|
||||||
window.ga("send", "event", "Action", "Download", this.$props.forkName);
|
window.ga(
|
||||||
}
|
"send",
|
||||||
}
|
"event",
|
||||||
|
"Action",
|
||||||
|
"Download",
|
||||||
|
this.$props.forkName
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -1,27 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<Layout :class="$frontmatter.title">
|
<Layout :class="$frontmatter.title">
|
||||||
<main class="page">
|
<main class="page">
|
||||||
<slot name="top" />
|
<slot name="top" />
|
||||||
|
|
||||||
<Content class="theme-default-content" />
|
<Content class="theme-default-content" />
|
||||||
<PageEdit />
|
<PageEdit />
|
||||||
|
|
||||||
<PageNav v-bind="{ sidebarItems }" />
|
<slot name="bottom" />
|
||||||
|
|
||||||
<slot name="bottom" />
|
|
||||||
</main>
|
</main>
|
||||||
</Layout>
|
</Layout>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Layout from '@theme/layouts/Layout.vue'
|
import Layout from "@theme/layouts/Layout.vue";
|
||||||
import PageEdit from '@theme/components/PageEdit.vue'
|
import PageEdit from "@theme/components/PageEdit.vue";
|
||||||
import PageNav from '@theme/components/PageNav.vue'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { PageEdit, PageNav, Layout },
|
components: { PageEdit, Layout },
|
||||||
props: ['sidebarItems']
|
};
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus">
|
<style lang="stylus">
|
||||||
|
@ -158,209 +158,209 @@ export default {
|
|||||||
|
|
||||||
<style lang="stylus">
|
<style lang="stylus">
|
||||||
.help-page
|
.help-page
|
||||||
.page
|
.page
|
||||||
padding-left 0 !important
|
padding-left 0 !important
|
||||||
padding-bottom 2rem
|
padding-bottom 2rem
|
||||||
display block
|
display block
|
||||||
.theme-custom-content
|
.theme-custom-content
|
||||||
max-width 75rem
|
max-width 75rem
|
||||||
margin 0 auto
|
margin 0 auto
|
||||||
padding 2rem 2.5rem
|
padding 2rem 2.5rem
|
||||||
*
|
*
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
h1
|
h1
|
||||||
text-align center
|
text-align center
|
||||||
.header-anchor
|
.header-anchor
|
||||||
display none
|
display none
|
||||||
h3
|
h3
|
||||||
.header-anchor
|
.header-anchor
|
||||||
display none
|
display none
|
||||||
.content__center
|
.content__center
|
||||||
text-align center
|
text-align center
|
||||||
margin-bottom 2rem
|
margin-bottom 2rem
|
||||||
.algolia-search-wrapper
|
.algolia-search-wrapper
|
||||||
width 100%
|
width 100%
|
||||||
text-align center
|
text-align center
|
||||||
margin-bottom 5rem
|
margin-bottom 5rem
|
||||||
.algolia-autocomplete
|
.algolia-autocomplete
|
||||||
width 50%
|
width 50%
|
||||||
input
|
input
|
||||||
background #ffffff url('/assets/img/search.83621669.svg') 0.6rem 0.9rem no-repeat
|
background #ffffff url('/assets/img/search.83621669.svg') 0.6rem 0.9rem no-repeat
|
||||||
background-size 1rem
|
background-size 1rem
|
||||||
box-shadow 0 0 30px rgba(177, 174, 174, 0.322)
|
box-shadow 0 0 30px rgba(177, 174, 174, 0.322)
|
||||||
border 1px solid #cfd4db
|
border 1px solid #cfd4db
|
||||||
font-size 1.2rem
|
font-size 1.2rem
|
||||||
height 3rem
|
height 3rem
|
||||||
width 100%
|
width 100%
|
||||||
.card
|
.card
|
||||||
background-color white
|
background-color white
|
||||||
border-bottom 1px solid transparent
|
border-bottom 1px solid transparent
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
box-shadow 0 0 30px #b1aeae52
|
box-shadow 0 0 30px #b1aeae52
|
||||||
color $accentColor
|
color $accentColor
|
||||||
height 100%
|
height 100%
|
||||||
overflow hidden
|
overflow hidden
|
||||||
padding 0.5rem
|
padding 0.5rem
|
||||||
text-align center
|
text-align center
|
||||||
user-select none
|
user-select none
|
||||||
width auto
|
width auto
|
||||||
header
|
header
|
||||||
margin-top 1.25rem
|
margin-top 1.25rem
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
.material-icons,
|
.material-icons,
|
||||||
.material-design-icon
|
.material-design-icon
|
||||||
display contents
|
display contents
|
||||||
font-size 2.5em
|
font-size 2.5em
|
||||||
color $accentColorSecondary
|
color $accentColorSecondary
|
||||||
.material-design-icon > .material-design-icon__svg
|
.material-design-icon > .material-design-icon__svg
|
||||||
position relative
|
position relative
|
||||||
span
|
span
|
||||||
display block
|
display block
|
||||||
.icon.outbound
|
.icon.outbound
|
||||||
display inline-block
|
display inline-block
|
||||||
visibility hidden
|
visibility hidden
|
||||||
vertical-align baseline
|
vertical-align baseline
|
||||||
right 10px
|
right 10px
|
||||||
h3
|
h3
|
||||||
display inline-block
|
display inline-block
|
||||||
margin-left 1.8rem
|
margin-left 1.8rem
|
||||||
margin-bottom 0
|
margin-bottom 0
|
||||||
h3
|
h3
|
||||||
margin 10px
|
margin 10px
|
||||||
p
|
p
|
||||||
color #566573
|
color #566573
|
||||||
font-weight 400
|
font-weight 400
|
||||||
font-size 0.95rem
|
font-size 0.95rem
|
||||||
&:hover
|
&:hover
|
||||||
border-bottom 2px solid $accentColor
|
border-bottom 2px solid $accentColor
|
||||||
border-bottom-left-radius 0
|
border-bottom-left-radius 0
|
||||||
border-bottom-right-radius 0
|
border-bottom-right-radius 0
|
||||||
position relative
|
position relative
|
||||||
.material-design-icon
|
.material-design-icon
|
||||||
color $accentColor
|
color $accentColor
|
||||||
&.discord-icon
|
&.discord-icon
|
||||||
color $discordAccentColor
|
color $discordAccentColor
|
||||||
&.reddit-icon
|
&.reddit-icon
|
||||||
color $redditAccentColor
|
color $redditAccentColor
|
||||||
&.github-icon
|
&.github-icon
|
||||||
color $githubAccentColor
|
color $githubAccentColor
|
||||||
.icon.outbound
|
.icon.outbound
|
||||||
visibility visible
|
visibility visible
|
||||||
&__Discord:hover
|
&__Discord:hover
|
||||||
border-bottom 2px solid $discordAccentColor
|
border-bottom 2px solid $discordAccentColor
|
||||||
h3
|
h3
|
||||||
color $discordAccentColor
|
color $discordAccentColor
|
||||||
&__Reddit:hover
|
&__Reddit:hover
|
||||||
border-bottom 2px solid $redditAccentColor
|
border-bottom 2px solid $redditAccentColor
|
||||||
h3
|
h3
|
||||||
color $redditAccentColor
|
color $redditAccentColor
|
||||||
&__GitHub:hover
|
&__GitHub:hover
|
||||||
border-bottom 2px solid $githubAccentColor
|
border-bottom 2px solid $githubAccentColor
|
||||||
h3
|
h3
|
||||||
color $githubAccentColor
|
color $githubAccentColor
|
||||||
.column
|
.column
|
||||||
border 1px solid #cfd4db
|
border 1px solid #cfd4db
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
&:hover
|
&:hover
|
||||||
border-bottom none
|
border-bottom none
|
||||||
a:focus
|
a:focus
|
||||||
box-shadow none
|
box-shadow none
|
||||||
outline none
|
outline none
|
||||||
.card
|
.card
|
||||||
box-shadow 0 0 30px #b1aeae52, 0 0 0 1px #fff, 0 0 0 3px rgba(50, 100, 150, 0.4)
|
box-shadow 0 0 30px #b1aeae52, 0 0 0 1px #fff, 0 0 0 3px rgba(50, 100, 150, 0.4)
|
||||||
outline none
|
outline none
|
||||||
.row
|
.row
|
||||||
display grid
|
display grid
|
||||||
grid-template-columns repeat(4, 1fr)
|
grid-template-columns repeat(4, 1fr)
|
||||||
grid-auto-rows 1fr
|
grid-auto-rows 1fr
|
||||||
grid-gap 1rem
|
grid-gap 1rem
|
||||||
&:after
|
&:after
|
||||||
content ''
|
content ""
|
||||||
display table
|
display table
|
||||||
clear both
|
clear both
|
||||||
|
|
||||||
@media screen and (max-width $MQMobile)
|
@media screen and (max-width $MQMobile)
|
||||||
.help-page
|
.help-page
|
||||||
.page
|
.page
|
||||||
.theme-custom-content
|
.theme-custom-content
|
||||||
padding 2rem 0.75rem
|
padding 2rem 0.75rem
|
||||||
padding-bottom 0
|
padding-bottom 0
|
||||||
h1
|
h1
|
||||||
margin-bottom 0.5rem
|
margin-bottom 0.5rem
|
||||||
.content__center
|
.content__center
|
||||||
margin-top 0
|
margin-top 0
|
||||||
padding-top 0
|
padding-top 0
|
||||||
.algolia-search-wrapper
|
.algolia-search-wrapper
|
||||||
width 100%
|
width 100%
|
||||||
margin-bottom 1rem
|
margin-bottom 1rem
|
||||||
.algolia-autocomplete
|
.algolia-autocomplete
|
||||||
width 100%
|
width 100%
|
||||||
padding 0.4rem 0.65rem
|
padding 0.4rem 0.65rem
|
||||||
input
|
input
|
||||||
width 100%
|
width 100%
|
||||||
left 0
|
left 0
|
||||||
.column
|
.column
|
||||||
margin 0.4rem 0.6rem
|
margin 0.4rem 0.6rem
|
||||||
.card
|
.card
|
||||||
height auto
|
height auto
|
||||||
width auto
|
width auto
|
||||||
header
|
header
|
||||||
margin-top 1rem
|
margin-top 1rem
|
||||||
.material-icons,
|
.material-icons,
|
||||||
.material-design-icon
|
.material-design-icon
|
||||||
font-size 1.6em
|
font-size 1.6em
|
||||||
&.discord-icon
|
&.discord-icon
|
||||||
color $discordAccentColor
|
color $discordAccentColor
|
||||||
&.reddit-icon
|
&.reddit-icon
|
||||||
color $redditAccentColor
|
color $redditAccentColor
|
||||||
&.github-icon
|
&.github-icon
|
||||||
color $githubAccentColor
|
color $githubAccentColor
|
||||||
span
|
span
|
||||||
display inline-block
|
display inline-block
|
||||||
.icon.outbound
|
.icon.outbound
|
||||||
visibility visible
|
visibility visible
|
||||||
right 0
|
right 0
|
||||||
top -4px
|
top -4px
|
||||||
h3
|
h3
|
||||||
margin-left 0
|
margin-left 0
|
||||||
margin-bottom 0
|
margin-bottom 0
|
||||||
h3
|
h3
|
||||||
font-size 1.5rem
|
font-size 1.5rem
|
||||||
display inline-block
|
display inline-block
|
||||||
margin 0
|
margin 0
|
||||||
p
|
p
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
&:hover
|
&:hover
|
||||||
border-bottom 2px solid #cfd4db
|
border-bottom 2px solid #cfd4db
|
||||||
border-bottom-left-radius 6px
|
border-bottom-left-radius 6px
|
||||||
border-bottom-right-radius 6px
|
border-bottom-right-radius 6px
|
||||||
position inherit
|
position inherit
|
||||||
top unset
|
top unset
|
||||||
.material-design-icon
|
.material-design-icon
|
||||||
color $accentColorSecondary
|
color $accentColorSecondary
|
||||||
&__Discord
|
&__Discord
|
||||||
h3
|
h3
|
||||||
color $discordAccentColor
|
color $discordAccentColor
|
||||||
&__Reddit
|
&__Reddit
|
||||||
h3
|
h3
|
||||||
color $redditAccentColor
|
color $redditAccentColor
|
||||||
&__GitHub
|
&__GitHub
|
||||||
h3
|
h3
|
||||||
color $githubAccentColor
|
color $githubAccentColor
|
||||||
.row
|
.row
|
||||||
grid-template-columns repeat(1, 1fr)
|
grid-template-columns repeat(1, 1fr)
|
||||||
.navbar
|
.navbar
|
||||||
padding-left 1rem
|
padding-left 1rem
|
||||||
.logo
|
.logo
|
||||||
margin-right 0
|
margin-right 0
|
||||||
.can-hide
|
.can-hide
|
||||||
display block
|
display block
|
||||||
.sidebar-button
|
.sidebar-button
|
||||||
display none
|
display none
|
||||||
.site-name.can-hide
|
.site-name.can-hide
|
||||||
display none
|
display none
|
||||||
.nav-links.can-hide
|
.nav-links.can-hide
|
||||||
.nav-item,
|
.nav-item,
|
||||||
.repo-link
|
.repo-link
|
||||||
padding-left 0.8em
|
padding-left 0.8em
|
||||||
</style>
|
</style>
|
||||||
|
@ -14,17 +14,17 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
iconOnly: {
|
iconOnly: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false,
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ""
|
default: "",
|
||||||
},
|
},
|
||||||
iconName: {
|
iconName: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true,
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ export default {
|
|||||||
display inline
|
display inline
|
||||||
|
|
||||||
.material-icons
|
.material-icons
|
||||||
font-family 'Material Icons'
|
font-family "Material Icons"
|
||||||
font-size 1.35em
|
font-size 1.35em
|
||||||
font-style normal
|
font-style normal
|
||||||
position relative
|
position relative
|
||||||
@ -50,7 +50,6 @@ export default {
|
|||||||
white-space nowrap
|
white-space nowrap
|
||||||
word-wrap normal
|
word-wrap normal
|
||||||
direction ltr
|
direction ltr
|
||||||
font-feature-settings 'liga'
|
font-feature-settings "liga"
|
||||||
-webkit-font-smoothing antialiased
|
-webkit-font-smoothing antialiased
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,13 +1,27 @@
|
|||||||
<template>
|
<template>
|
||||||
<span v-if="nav.link" class="app-navigation" :class="nav.class" title="App navigation">
|
<span
|
||||||
|
v-if="nav.link"
|
||||||
|
class="app-navigation"
|
||||||
|
:class="nav.class"
|
||||||
|
title="App navigation"
|
||||||
|
>
|
||||||
<a class="app-link" :href="nav.link + entry">
|
<a class="app-link" :href="nav.link + entry">
|
||||||
<MaterialIcon v-if="nav.icon" class="app-icon" :iconName="nav.icon" />
|
<MaterialIcon
|
||||||
|
v-if="nav.icon"
|
||||||
|
class="app-icon"
|
||||||
|
:icon-name="nav.icon"
|
||||||
|
/>
|
||||||
<span class="app-label">{{ nav.text }}</span>
|
<span class="app-label">{{ nav.text }}</span>
|
||||||
<slot />
|
<slot />
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
<span v-else class="app-navigation" :class="nav.class" title="App navigation">
|
<span
|
||||||
<MaterialIcon v-if="nav.icon" class="app-icon" :iconName="nav.icon" />
|
v-else
|
||||||
|
class="app-navigation"
|
||||||
|
:class="nav.class"
|
||||||
|
title="App navigation"
|
||||||
|
>
|
||||||
|
<MaterialIcon v-if="nav.icon" class="app-icon" :icon-name="nav.icon" />
|
||||||
<span class="app-label">{{ nav.text }}</span>
|
<span class="app-label">{{ nav.text }}</span>
|
||||||
<slot />
|
<slot />
|
||||||
</span>
|
</span>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<span v-if="fileName" class="fileNameContainer" title="File name">
|
<span v-if="fileName" class="fileNameContainer" title="File name">
|
||||||
<MaterialIcon class="fileNameIcon" iconName="get_app" />
|
<MaterialIcon class="fileNameIcon" icon-name="get_app" />
|
||||||
<span class="fileName">tachiyomi-{{ this.$data.tagName }}.apk</span>
|
<span class="fileName">tachiyomi-{{ this.$data.tagName }}.apk</span>
|
||||||
<slot />
|
<slot />
|
||||||
</span>
|
</span>
|
||||||
@ -18,8 +18,8 @@ const RELEASE_URL =
|
|||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
fileName: {
|
fileName: {
|
||||||
type: Boolean
|
type: Boolean,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
@ -1,52 +1,53 @@
|
|||||||
module.exports = {
|
const pluginsConfig = require("./config/plugins");
|
||||||
dest: './public',
|
const navBarConfig = require("./config/navBar");
|
||||||
temp: './node_modules/.temp/theme',
|
const sideBarConfig = require("./config/sideBar");
|
||||||
|
|
||||||
title: 'Tachiyomi',
|
module.exports = {
|
||||||
description: 'Free and open source manga reader for Android',
|
dest: "./public",
|
||||||
|
temp: "./node_modules/.temp/theme",
|
||||||
|
|
||||||
|
title: "Tachiyomi",
|
||||||
|
description: "Free and open source manga reader for Android",
|
||||||
|
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
head: [
|
head: [
|
||||||
// Embed headers
|
// Embed headers
|
||||||
['link', { rel: 'icon', href: '/favicon.ico' }],
|
["link", { rel: "icon", href: "/favicon.ico" }],
|
||||||
['link', { rel: 'manifest', href: '/manifest.json' }],
|
["link", { rel: "manifest", href: "/manifest.json" }],
|
||||||
['meta', { name: 'theme-color', content: '#2e84bf' }],
|
["meta", { name: "theme-color", content: "#2e84bf" }],
|
||||||
['meta', { prefix: 'og: http://ogp.me/ns#', property: 'og:image', content: 'https://tachiyomi.org/icons/logo.png' }],
|
["meta", { prefix: "og: http://ogp.me/ns#", property: "og:image", content: "https://tachiyomi.org/icons/logo.png" }],
|
||||||
// Custom headers
|
// Custom headers
|
||||||
['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin:''}],
|
["link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin:""}],
|
||||||
['link', { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Open+Sans'}],
|
["link", { rel: "stylesheet", href: "https://fonts.googleapis.com/css?family=Open+Sans"}],
|
||||||
],
|
],
|
||||||
|
|
||||||
themeConfig: {
|
themeConfig: {
|
||||||
logo: '/icons/logo.svg',
|
logo: "/icons/logo.svg",
|
||||||
repo: 'inorichi/tachiyomi',
|
repo: "inorichi/tachiyomi",
|
||||||
docsRepo: 'tachiyomiorg/website',
|
docsRepo: "tachiyomiorg/website",
|
||||||
docsDir: 'src',
|
docsDir: "src",
|
||||||
smoothScroll: true,
|
smoothScroll: true,
|
||||||
algolia: {
|
algolia: {
|
||||||
apiKey: 'fc1c45b5a3835e1882cbbf0751dfe705',
|
apiKey: "fc1c45b5a3835e1882cbbf0751dfe705",
|
||||||
indexName: 'tachiyomi'
|
indexName: "tachiyomi",
|
||||||
},
|
},
|
||||||
searchPlaceholder: 'Search...',
|
searchPlaceholder: "Search...",
|
||||||
editLinks: true,
|
editLinks: true,
|
||||||
editLinkText: 'Help us improve this page',
|
editLinkText: "Help us improve this page",
|
||||||
lastUpdated: 'Last Updated',
|
lastUpdated: "Last Updated",
|
||||||
nav: require('./config/nav'),
|
nav: navBarConfig,
|
||||||
sidebar: {
|
sidebar: {
|
||||||
'/help/guides/': require('./config/sidebar/guides'),
|
"/help/guides/": sideBarConfig.guides,
|
||||||
'/help/faq/': require('./config/sidebar/faq'),
|
"/help/faq/": sideBarConfig.faq,
|
||||||
'/help/contribution': require('./config/sidebar/contribution'),
|
"/help/contribution": sideBarConfig.contribution,
|
||||||
'/extensions': require('./config/sidebar/extensions'),
|
"/extensions": sideBarConfig.extensions,
|
||||||
'/forks': require('./config/sidebar/forks')
|
"/forks": sideBarConfig.forks,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
plugins: require('./config/plugins'),
|
plugins: pluginsConfig,
|
||||||
extraWatchFiles: [
|
extraWatchFiles: [
|
||||||
'.vuepress/config/nav.js',
|
".vuepress/config/plugins.js",
|
||||||
'.vuepress/config/plugins.js',
|
".vuepress/config/navBar.js",
|
||||||
'.vuepress/config/sidebar/guides.js',
|
".vuepress/config/sideBar.js",
|
||||||
'.vuepress/config/sidebar/faq.js',
|
],
|
||||||
'.vuepress/config/sidebar/contribution.js',
|
};
|
||||||
'.vuepress/config/sidebar/extensions.js'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
@ -3,50 +3,50 @@ module.exports = [
|
|||||||
[
|
[
|
||||||
"clean-urls",
|
"clean-urls",
|
||||||
{
|
{
|
||||||
normalSuffix: "/"
|
normalSuffix: "/",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"@vuepress/google-analytics",
|
"@vuepress/google-analytics",
|
||||||
{
|
{
|
||||||
ga: "UA-148212082-1"
|
ga: "UA-148212082-1",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"vuepress-plugin-container",
|
"vuepress-plugin-container",
|
||||||
{
|
{
|
||||||
type: "expander",
|
type: "expander",
|
||||||
before: info =>
|
before: (info) =>
|
||||||
`<details class="expander"><summary class="expansion">${info}</summary>`,
|
`<details class="expander"><summary class="expansion">${info}</summary>`,
|
||||||
after: "</details>"
|
after: "</details>",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"vuepress-plugin-container",
|
"vuepress-plugin-container",
|
||||||
{
|
{
|
||||||
type: "guide",
|
type: "guide",
|
||||||
before: info => `<div class="guide"><p class="title">${info}</p>`,
|
before: (info) => `<div class="guide"><p class="title">${info}</p>`,
|
||||||
after: "</div>"
|
after: "</div>",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"vuepress-plugin-container",
|
"vuepress-plugin-container",
|
||||||
{
|
{
|
||||||
type: "aside",
|
type: "aside",
|
||||||
defaultTitle: ""
|
defaultTitle: "",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"vuepress-plugin-container",
|
"vuepress-plugin-container",
|
||||||
{
|
{
|
||||||
type: "aside-guide",
|
type: "aside-guide",
|
||||||
defaultTitle: ""
|
defaultTitle: "",
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"vuepress-plugin-sitemap",
|
"vuepress-plugin-sitemap",
|
||||||
{
|
{
|
||||||
hostname: "https://tachiyomi.org"
|
hostname: "https://tachiyomi.org",
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
];
|
];
|
||||||
|
148
src/.vuepress/config/sideBar.js
Normal file
148
src/.vuepress/config/sideBar.js
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
module.exports = {
|
||||||
|
guides: [
|
||||||
|
"/",
|
||||||
|
{
|
||||||
|
title: "Guides",
|
||||||
|
collapsable: false,
|
||||||
|
sidebarDepth: 2,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
title: "General",
|
||||||
|
collapsable: false,
|
||||||
|
sidebarDepth: 2,
|
||||||
|
children: [
|
||||||
|
"/help/guides/getting-started",
|
||||||
|
"/help/guides/source-problems",
|
||||||
|
"/help/guides/source-migration",
|
||||||
|
"/help/guides/creating-backups",
|
||||||
|
"/help/guides/reading-local-manga",
|
||||||
|
"/help/guides/categories",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Settings",
|
||||||
|
collapsable: false,
|
||||||
|
sidebarDepth: 2,
|
||||||
|
children: [
|
||||||
|
"/help/guides/settings/general",
|
||||||
|
"/help/guides/settings/reader",
|
||||||
|
"/help/guides/settings/downloads",
|
||||||
|
"/help/guides/settings/tracking",
|
||||||
|
"/help/guides/settings/backup",
|
||||||
|
"/help/guides/settings/advanced",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Frequently Asked Questions",
|
||||||
|
path: "/help/faq/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Forks",
|
||||||
|
path: "/forks/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Contribution",
|
||||||
|
path: "/help/contribution",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Available extensions",
|
||||||
|
path: "/extensions/",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
faq: [
|
||||||
|
"/",
|
||||||
|
{
|
||||||
|
title: "Frequently Asked Questions",
|
||||||
|
path: "/help/faq/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Guides",
|
||||||
|
path: "/help/guides/getting-started",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Forks",
|
||||||
|
path: "/forks/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Contribution",
|
||||||
|
path: "/help/contribution",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Available extensions",
|
||||||
|
path: "/extensions/",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
contribution: [
|
||||||
|
"/",
|
||||||
|
{
|
||||||
|
title: "Contribution",
|
||||||
|
collapsable: false,
|
||||||
|
sidebarDepth: 1,
|
||||||
|
children: ["/help/contribution"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Frequently Asked Questions",
|
||||||
|
path: "/help/faq/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Guides",
|
||||||
|
path: "/help/guides/getting-started",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Forks",
|
||||||
|
path: "/forks/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Available extensions",
|
||||||
|
path: "/extensions/",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
extensions: [
|
||||||
|
"/",
|
||||||
|
{
|
||||||
|
title: "Available extensions",
|
||||||
|
path: "/extensions/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Frequently Asked Questions",
|
||||||
|
path: "/help/faq/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Guides",
|
||||||
|
path: "/help/guides/getting-started",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Forks",
|
||||||
|
path: "/forks/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Contribution",
|
||||||
|
path: "/help/contribution",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
forks: [
|
||||||
|
"/",
|
||||||
|
{
|
||||||
|
title: "Forks",
|
||||||
|
path: "/forks/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Frequently Asked Questions",
|
||||||
|
path: "/help/faq/",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Guides",
|
||||||
|
path: "/help/guides/getting-started",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Contribution",
|
||||||
|
path: "/help/contribution",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Available extensions",
|
||||||
|
path: "/extensions/",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
@ -1,27 +0,0 @@
|
|||||||
module.exports = [
|
|
||||||
'/',
|
|
||||||
{
|
|
||||||
title: 'Contribution',
|
|
||||||
collapsable: false,
|
|
||||||
sidebarDepth: 1,
|
|
||||||
children: [
|
|
||||||
'/help/contribution'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Frequently Asked Questions',
|
|
||||||
path: '/help/faq/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Guides',
|
|
||||||
path: '/help/guides/getting-started',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Forks',
|
|
||||||
path: '/forks/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Available extensions',
|
|
||||||
path: '/extensions/'
|
|
||||||
}
|
|
||||||
];
|
|
@ -1,23 +0,0 @@
|
|||||||
module.exports = [
|
|
||||||
'/',
|
|
||||||
{
|
|
||||||
title: 'Available extensions',
|
|
||||||
path: '/extensions/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Frequently Asked Questions',
|
|
||||||
path: '/help/faq/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Guides',
|
|
||||||
path: '/help/guides/getting-started',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Forks',
|
|
||||||
path: '/forks/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Contribution',
|
|
||||||
path: '/help/contribution'
|
|
||||||
}
|
|
||||||
];
|
|
@ -1,23 +0,0 @@
|
|||||||
module.exports = [
|
|
||||||
'/',
|
|
||||||
{
|
|
||||||
title: 'Frequently Asked Questions',
|
|
||||||
path: '/help/faq/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Guides',
|
|
||||||
path: '/help/guides/getting-started',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Forks',
|
|
||||||
path: '/forks/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Contribution',
|
|
||||||
path: '/help/contribution'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Available extensions',
|
|
||||||
path: '/extensions/'
|
|
||||||
}
|
|
||||||
];
|
|
@ -1,23 +0,0 @@
|
|||||||
module.exports = [
|
|
||||||
'/',
|
|
||||||
{
|
|
||||||
title: 'Forks',
|
|
||||||
path: '/forks/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Frequently Asked Questions',
|
|
||||||
path: '/help/faq/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Guides',
|
|
||||||
path: '/help/guides/getting-started',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Contribution',
|
|
||||||
path: '/help/contribution'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Available extensions',
|
|
||||||
path: '/extensions/'
|
|
||||||
}
|
|
||||||
];
|
|
@ -1,52 +0,0 @@
|
|||||||
module.exports = [
|
|
||||||
'/',
|
|
||||||
{
|
|
||||||
title: 'Guides',
|
|
||||||
collapsable: false,
|
|
||||||
sidebarDepth: 2,
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
title: 'General',
|
|
||||||
collapsable: false,
|
|
||||||
sidebarDepth: 2,
|
|
||||||
children: [
|
|
||||||
'/help/guides/getting-started',
|
|
||||||
'/help/guides/source-problems',
|
|
||||||
'/help/guides/source-migration',
|
|
||||||
'/help/guides/creating-backups',
|
|
||||||
'/help/guides/reading-local-manga',
|
|
||||||
'/help/guides/categories'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Settings',
|
|
||||||
collapsable: false,
|
|
||||||
sidebarDepth: 2,
|
|
||||||
children: [
|
|
||||||
'/help/guides/settings/general',
|
|
||||||
'/help/guides/settings/reader',
|
|
||||||
'/help/guides/settings/downloads',
|
|
||||||
'/help/guides/settings/tracking',
|
|
||||||
'/help/guides/settings/backup',
|
|
||||||
'/help/guides/settings/advanced'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Frequently Asked Questions',
|
|
||||||
path: '/help/faq/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Forks',
|
|
||||||
path: '/forks/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Contribution',
|
|
||||||
path: '/help/contribution'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Available extensions',
|
|
||||||
path: '/extensions/'
|
|
||||||
}
|
|
||||||
];
|
|
@ -1,18 +1,18 @@
|
|||||||
import './styles/fonts.styl'
|
import "./styles/fonts.styl";
|
||||||
import './styles/animate.css'
|
import "./styles/animate.css";
|
||||||
import 'sweetalert2/dist/sweetalert2.min.css';
|
import "./styles/sweetalert2.css";
|
||||||
import 'vue-material-design-icons/styles.css';
|
import "vue-material-design-icons/styles.css";
|
||||||
|
|
||||||
import { VueAgile } from 'vue-agile';
|
import { VueAgile } from "vue-agile";
|
||||||
import VueSweetalert2 from 'vue-sweetalert2';
|
import VueSweetalert2 from "vue-sweetalert2";
|
||||||
|
|
||||||
export default ({
|
export default ({
|
||||||
Vue, // the version of Vue being used in the VuePress app
|
Vue, // the version of Vue being used in the VuePress app
|
||||||
options, // the options for the root Vue instance
|
options, // the options for the root Vue instance
|
||||||
router, // the router instance for the app
|
router, // the router instance for the app
|
||||||
siteData // site metadata
|
siteData, // site metadata
|
||||||
}) => {
|
}) => {
|
||||||
// eslint-disable-next-line vue/match-component-file-name
|
// eslint-disable-next-line vue/match-component-file-name
|
||||||
Vue.component('Agile', VueAgile);
|
Vue.component("Agile", VueAgile);
|
||||||
Vue.use(VueSweetalert2);
|
Vue.use(VueSweetalert2);
|
||||||
};
|
};
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
{
|
{
|
||||||
"name": "Tachiyomi",
|
"name": "Tachiyomi",
|
||||||
"short_name": "Tachiyomi",
|
"short_name": "Tachiyomi",
|
||||||
"description": "Free and open source manga reader for Android.",
|
"description": "Free and open source manga reader for Android.",
|
||||||
"lang": "en-US",
|
"lang": "en-US",
|
||||||
"theme_color": "#2e84bf",
|
"theme_color": "#2e84bf",
|
||||||
"background_color": "#ffffff",
|
"background_color": "#ffffff",
|
||||||
"start_url": "/",
|
"start_url": "/",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"orientation": "portrait-primary",
|
"orientation": "portrait-primary",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/icons/android-chrome-192x192.png",
|
"src": "/icons/android-chrome-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/icons/android-chrome-512x512.png",
|
"src": "/icons/android-chrome-512x512.png",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
6164
src/.vuepress/styles/animate.css
vendored
6164
src/.vuepress/styles/animate.css
vendored
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
@font-face
|
@font-face
|
||||||
font-family 'Material Icons'
|
font-family "Material Icons"
|
||||||
font-style normal
|
font-style normal
|
||||||
font-weight 400
|
font-weight 400
|
||||||
src url('~material-design-icons/iconfont/MaterialIcons-Regular.eot')
|
src url("~material-design-icons/iconfont/MaterialIcons-Regular.eot")
|
||||||
src local('Material Icons'), local('MaterialIcons-Regular'), url('~material-design-icons/iconfont/MaterialIcons-Regular.woff2') format('woff2'), url('~material-design-icons/iconfont/MaterialIcons-Regular.woff') format('woff'), url('~material-design-icons/iconfont/MaterialIcons-Regular.ttf') format('truetype'), url('~material-design-icons/iconfont/MaterialIcons-Regular.svg#MaterialIcons-Regular') format('svg')
|
src local("Material Icons"), local("MaterialIcons-Regular"), url("~material-design-icons/iconfont/MaterialIcons-Regular.woff2") format("woff2"), url("~material-design-icons/iconfont/MaterialIcons-Regular.woff") format("woff"), url("~material-design-icons/iconfont/MaterialIcons-Regular.ttf") format("truetype"), url("~material-design-icons/iconfont/MaterialIcons-Regular.svg#MaterialIcons-Regular") format("svg")
|
||||||
|
@ -72,7 +72,7 @@ font-feature-settings()
|
|||||||
font-weight normal
|
font-weight normal
|
||||||
&::before
|
&::before
|
||||||
&::after
|
&::after
|
||||||
content ''
|
content ""
|
||||||
left 0
|
left 0
|
||||||
position absolute
|
position absolute
|
||||||
&::before
|
&::before
|
||||||
|
@ -23,8 +23,8 @@ $MQNarrow = 959px
|
|||||||
$MQMobile = 767px
|
$MQMobile = 767px
|
||||||
$MQMobileNarrow = 419px
|
$MQMobileNarrow = 419px
|
||||||
// Fonts
|
// Fonts
|
||||||
$buttonFontFamily = 'Open Sans', Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif
|
$buttonFontFamily = "Open Sans", Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif
|
||||||
$codeFontFamily = source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace
|
$codeFontFamily = source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace
|
||||||
// Forks
|
// Forks
|
||||||
$nekoAccentColor = #3DDA83
|
$nekoAccentColor = #3DDA83
|
||||||
$j2kAccentColor = $accentColor
|
$j2kAccentColor = $accentColor
|
||||||
|
1371
src/.vuepress/styles/sweetalert2.css
Normal file
1371
src/.vuepress/styles/sweetalert2.css
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,182 +1,195 @@
|
|||||||
<template>
|
<template>
|
||||||
<form
|
<form
|
||||||
id="search-form"
|
id="search-form"
|
||||||
class="algolia-search-wrapper search-box"
|
class="algolia-search-wrapper search-box"
|
||||||
role="search"
|
role="search"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
id="algolia-search-input"
|
id="algolia-search-input"
|
||||||
class="search-query"
|
class="search-query"
|
||||||
:placeholder="placeholder"
|
:placeholder="placeholder"
|
||||||
>
|
/>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: 'AlgoliaSearchBox',
|
name: "AlgoliaSearchBox",
|
||||||
|
|
||||||
props: ['options'],
|
props: {
|
||||||
|
options: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
data () {
|
data() {
|
||||||
return {
|
return {
|
||||||
placeholder: undefined
|
placeholder: undefined,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
$lang (newValue) {
|
$lang(newValue) {
|
||||||
this.update(this.options, newValue)
|
this.update(this.options, newValue);
|
||||||
},
|
},
|
||||||
|
|
||||||
options (newValue) {
|
options(newValue) {
|
||||||
this.update(newValue, this.$lang)
|
this.update(newValue, this.$lang);
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted () {
|
mounted() {
|
||||||
this.initialize(this.options, this.$lang)
|
this.initialize(this.options, this.$lang);
|
||||||
this.placeholder = this.$site.themeConfig.searchPlaceholder || ''
|
this.placeholder = this.$site.themeConfig.searchPlaceholder || "";
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
initialize (userOptions, lang) {
|
initialize(userOptions, lang) {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.js'),
|
import(
|
||||||
import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.css')
|
/* webpackChunkName: "docsearch" */ "docsearch.js/dist/cdn/docsearch.min.js"
|
||||||
]).then(([docsearch]) => {
|
),
|
||||||
docsearch = docsearch.default
|
import(
|
||||||
const { algoliaOptions = {}} = userOptions
|
/* webpackChunkName: "docsearch" */ "docsearch.js/dist/cdn/docsearch.min.css"
|
||||||
docsearch(Object.assign(
|
),
|
||||||
{},
|
]).then(([docsearch]) => {
|
||||||
userOptions,
|
// eslint-disable-next-line no-param-reassign
|
||||||
{
|
docsearch = docsearch.default;
|
||||||
inputSelector: '#algolia-search-input',
|
const { algoliaOptions = {} } = userOptions;
|
||||||
// #697 Make docsearch work well at i18n mode.
|
docsearch({
|
||||||
algoliaOptions: Object.assign({
|
...userOptions,
|
||||||
'facetFilters': [`lang:${lang}`].concat(algoliaOptions.facetFilters || [])
|
inputSelector: "#algolia-search-input",
|
||||||
}, algoliaOptions),
|
// #697 Make docsearch work well at i18n mode.
|
||||||
handleSelected: (input, event, suggestion) => {
|
algoliaOptions: {
|
||||||
const { pathname, hash } = new URL(suggestion.url)
|
facetFilters: [`lang:${lang}`].concat(
|
||||||
const routepath = pathname.replace(this.$site.base, '/')
|
algoliaOptions.facetFilters || []
|
||||||
this.$router.push(`${routepath}${hash}`)
|
),
|
||||||
}
|
...algoliaOptions,
|
||||||
}
|
},
|
||||||
))
|
handleSelected: (input, event, suggestion) => {
|
||||||
})
|
const { pathname, hash } = new URL(suggestion.url);
|
||||||
},
|
const routepath = pathname.replace(
|
||||||
|
this.$site.base,
|
||||||
|
"/"
|
||||||
|
);
|
||||||
|
this.$router.push(`${routepath}${hash}`);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
update (options, lang) {
|
update(options, lang) {
|
||||||
this.$el.innerHTML = '<input id="algolia-search-input" class="search-query">'
|
this.$el.innerHTML =
|
||||||
this.initialize(options, lang)
|
'<input id="algolia-search-input" class="search-query">';
|
||||||
}
|
this.initialize(options, lang);
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus">
|
<style lang="stylus">
|
||||||
.algolia-search-wrapper
|
.algolia-search-wrapper
|
||||||
& > span
|
& > span
|
||||||
vertical-align middle
|
vertical-align middle
|
||||||
&.search-box
|
&.search-box
|
||||||
input
|
input
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
.algolia-autocomplete
|
.algolia-autocomplete
|
||||||
line-height normal
|
line-height normal
|
||||||
.ds-dropdown-menu
|
.ds-dropdown-menu
|
||||||
background-color #fff
|
background-color #fff
|
||||||
border 1px solid #dde0e5
|
border 1px solid #dde0e5
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
font-size 16px
|
font-size 16px
|
||||||
margin 6px 0 0
|
margin 6px 0 0
|
||||||
padding 12px
|
padding 12px
|
||||||
text-align left
|
text-align left
|
||||||
&:before
|
&:before
|
||||||
border-color #dde0e5
|
border-color #dde0e5
|
||||||
[class*=ds-dataset-]
|
[class*=ds-dataset-]
|
||||||
border none
|
border none
|
||||||
padding 0
|
padding 0
|
||||||
.ds-suggestions
|
.ds-suggestions
|
||||||
margin-top 0
|
margin-top 0
|
||||||
.ds-suggestion
|
.ds-suggestion
|
||||||
border-bottom none
|
border-bottom none
|
||||||
.algolia-docsearch-suggestion--text
|
.algolia-docsearch-suggestion--text
|
||||||
font-size 0.7em
|
font-size 0.7em
|
||||||
.algolia-docsearch-suggestion--highlight
|
.algolia-docsearch-suggestion--highlight
|
||||||
color $accentColor
|
color $accentColor
|
||||||
font-weight 600
|
font-weight 600
|
||||||
background rgba(143,187,237,0.05)
|
background rgba(143,187,237,0.05)
|
||||||
padding 0
|
padding 0
|
||||||
.algolia-docsearch-suggestion
|
.algolia-docsearch-suggestion
|
||||||
border-color $borderColor
|
border-color $borderColor
|
||||||
padding 0
|
padding 0
|
||||||
.algolia-docsearch-suggestion--category-header
|
.algolia-docsearch-suggestion--category-header
|
||||||
border 0px
|
border 0px
|
||||||
border-bottom 1px solid #EAECEF
|
border-bottom 1px solid #EAECEF
|
||||||
padding 5px 10px
|
padding 5px 10px
|
||||||
margin-top 0
|
margin-top 0
|
||||||
background transparent
|
background transparent
|
||||||
color $textColor
|
color $textColor
|
||||||
font-weight 400
|
font-weight 400
|
||||||
.algolia-docsearch-suggestion--highlight
|
.algolia-docsearch-suggestion--highlight
|
||||||
background rgba(255, 255, 255, 0.6)
|
background rgba(255, 255, 255, 0.6)
|
||||||
.algolia-docsearch-suggestion--wrapper
|
.algolia-docsearch-suggestion--wrapper
|
||||||
padding 0
|
padding 0
|
||||||
padding-top 0.5rem
|
padding-top 0.5rem
|
||||||
.algolia-docsearch-suggestion--title
|
.algolia-docsearch-suggestion--title
|
||||||
font-weight 500
|
font-weight 500
|
||||||
margin-bottom 0
|
margin-bottom 0
|
||||||
color $textColor
|
color $textColor
|
||||||
.algolia-docsearch-suggestion--subcategory-column
|
.algolia-docsearch-suggestion--subcategory-column
|
||||||
vertical-align top
|
vertical-align top
|
||||||
padding 5px 7px 5px 5px
|
padding 5px 7px 5px 5px
|
||||||
border-color $borderColor
|
border-color $borderColor
|
||||||
background #fff
|
background #fff
|
||||||
&:after
|
&:after
|
||||||
display none
|
display none
|
||||||
.algolia-docsearch-suggestion--subcategory-column-text
|
.algolia-docsearch-suggestion--subcategory-column-text
|
||||||
color lighten($accentColorSecondary, 40%)
|
color lighten($accentColorSecondary, 40%)
|
||||||
font-weight 400
|
font-weight 400
|
||||||
.algolia-docsearch-footer
|
.algolia-docsearch-footer
|
||||||
border-color $borderColor
|
border-color $borderColor
|
||||||
.ds-cursor .algolia-docsearch-suggestion--content
|
.ds-cursor .algolia-docsearch-suggestion--content
|
||||||
background-color #e7edf3 !important
|
background-color #e7edf3 !important
|
||||||
color $textColor
|
color $textColor
|
||||||
|
|
||||||
@media (min-width: $MQMobile)
|
@media (min-width: $MQMobile)
|
||||||
.algolia-search-wrapper
|
.algolia-search-wrapper
|
||||||
.algolia-autocomplete
|
.algolia-autocomplete
|
||||||
.algolia-docsearch-suggestion
|
.algolia-docsearch-suggestion
|
||||||
.algolia-docsearch-suggestion--subcategory-column
|
.algolia-docsearch-suggestion--subcategory-column
|
||||||
float none
|
float none
|
||||||
width 150px
|
width 150px
|
||||||
min-width 150px
|
min-width 150px
|
||||||
display table-cell
|
display table-cell
|
||||||
.algolia-docsearch-suggestion--content
|
.algolia-docsearch-suggestion--content
|
||||||
float none
|
float none
|
||||||
display table-cell
|
display table-cell
|
||||||
width 100%
|
width 100%
|
||||||
vertical-align top
|
vertical-align top
|
||||||
.ds-dropdown-menu
|
.ds-dropdown-menu
|
||||||
min-width 515px !important
|
min-width 515px !important
|
||||||
|
|
||||||
@media (max-width: $MQMobile)
|
@media (max-width: $MQMobile)
|
||||||
.algolia-search-wrapper
|
.algolia-search-wrapper
|
||||||
.ds-dropdown-menu
|
.ds-dropdown-menu
|
||||||
min-width calc(100vw - 4rem) !important
|
min-width calc(100vw - 4rem) !important
|
||||||
max-width calc(100vw - 4rem) !important
|
max-width calc(100vw - 4rem) !important
|
||||||
.algolia-docsearch-suggestion--wrapper
|
.algolia-docsearch-suggestion--wrapper
|
||||||
padding 5px 7px 5px 5px !important
|
padding 5px 7px 5px 5px !important
|
||||||
.algolia-docsearch-suggestion--subcategory-column
|
.algolia-docsearch-suggestion--subcategory-column
|
||||||
padding 0 !important
|
padding 0 !important
|
||||||
background white !important
|
background white !important
|
||||||
.algolia-docsearch-suggestion--subcategory-column-text:after
|
.algolia-docsearch-suggestion--subcategory-column-text:after
|
||||||
content " > "
|
content " > "
|
||||||
font-size 10px
|
font-size 10px
|
||||||
line-height 14.4px
|
line-height 14.4px
|
||||||
display inline-block
|
display inline-block
|
||||||
width 5px
|
width 5px
|
||||||
margin -3px 3px 0
|
margin -3px 3px 0
|
||||||
vertical-align middle
|
vertical-align middle
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -230,6 +230,7 @@ export default {
|
|||||||
popup:
|
popup:
|
||||||
"animate__animated animate__faster animate__zoomOut",
|
"animate__animated animate__faster animate__zoomOut",
|
||||||
},
|
},
|
||||||
|
// eslint-disable-next-line no-shadow
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.value) {
|
if (result.value) {
|
||||||
this.$swal({
|
this.$swal({
|
||||||
|
@ -1,95 +1,114 @@
|
|||||||
<template>
|
<template>
|
||||||
<header class="navbar">
|
<header class="navbar">
|
||||||
<SidebarButton @toggle-sidebar="$emit('toggle-sidebar')" />
|
<SidebarButton @toggle-sidebar="$emit('toggle-sidebar')" />
|
||||||
|
|
||||||
<RouterLink
|
<RouterLink :to="$localePath" class="home-link">
|
||||||
:to="$localePath"
|
<img
|
||||||
class="home-link"
|
v-if="$site.themeConfig.logo"
|
||||||
>
|
class="logo"
|
||||||
<img
|
:src="$withBase($site.themeConfig.logo)"
|
||||||
v-if="$site.themeConfig.logo"
|
:alt="$siteTitle"
|
||||||
class="logo"
|
/>
|
||||||
:src="$withBase($site.themeConfig.logo)"
|
<span
|
||||||
:alt="$siteTitle"
|
v-if="$siteTitle"
|
||||||
>
|
ref="siteName"
|
||||||
<span
|
class="site-name"
|
||||||
v-if="$siteTitle"
|
:class="{ 'can-hide': $site.themeConfig.logo }"
|
||||||
ref="siteName"
|
>{{ $siteTitle }}</span
|
||||||
class="site-name"
|
>
|
||||||
:class="{ 'can-hide': $site.themeConfig.logo }"
|
</RouterLink>
|
||||||
>{{ $siteTitle }}</span>
|
|
||||||
</RouterLink>
|
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="links"
|
class="links"
|
||||||
:style="linksWrapMaxWidth ? {
|
:style="
|
||||||
'max-width': linksWrapMaxWidth + 'px'
|
linksWrapMaxWidth
|
||||||
} : {}"
|
? {
|
||||||
>
|
'max-width': linksWrapMaxWidth + 'px',
|
||||||
<div v-if="$page.frontmatter.hideSearch"/>
|
}
|
||||||
<AlgoliaSearchBox
|
: {}
|
||||||
v-else-if="isAlgoliaSearch"
|
"
|
||||||
:options="algolia"
|
>
|
||||||
/>
|
<div v-if="$page.frontmatter.hideSearch" />
|
||||||
<SearchBox v-else-if="$site.themeConfig.search !== false && $page.frontmatter.search !== false" />
|
<AlgoliaSearchBox v-else-if="isAlgoliaSearch" :options="algolia" />
|
||||||
<NavLinks class="can-hide" />
|
<SearchBox
|
||||||
</div>
|
v-else-if="
|
||||||
</header>
|
$site.themeConfig.search !== false &&
|
||||||
|
$page.frontmatter.search !== false
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
<NavLinks class="can-hide" />
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import AlgoliaSearchBox from './AlgoliaSearchBox.vue'
|
import SearchBox from "@SearchBox";
|
||||||
import SearchBox from '@SearchBox'
|
import SidebarButton from "@theme/components/SidebarButton.vue";
|
||||||
import SidebarButton from '@theme/components/SidebarButton.vue'
|
import NavLinks from "@theme/components/NavLinks.vue";
|
||||||
import NavLinks from '@theme/components/NavLinks.vue'
|
import AlgoliaSearchBox from "./AlgoliaSearchBox.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Navbar',
|
name: "Navbar",
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
SidebarButton,
|
SidebarButton,
|
||||||
NavLinks,
|
NavLinks,
|
||||||
SearchBox,
|
SearchBox,
|
||||||
AlgoliaSearchBox
|
AlgoliaSearchBox,
|
||||||
},
|
},
|
||||||
|
|
||||||
data () {
|
data() {
|
||||||
return {
|
return {
|
||||||
linksWrapMaxWidth: null
|
linksWrapMaxWidth: null,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
algolia () {
|
algolia() {
|
||||||
return this.$themeLocaleConfig.algolia || this.$site.themeConfig.algolia || {}
|
return (
|
||||||
},
|
this.$themeLocaleConfig.algolia ||
|
||||||
|
this.$site.themeConfig.algolia ||
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
isAlgoliaSearch () {
|
isAlgoliaSearch() {
|
||||||
return this.algolia && this.algolia.apiKey && this.algolia.indexName
|
return (
|
||||||
}
|
this.algolia && this.algolia.apiKey && this.algolia.indexName
|
||||||
},
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
mounted () {
|
mounted() {
|
||||||
const MOBILE_DESKTOP_BREAKPOINT = 719 // refer to config.styl
|
const MOBILE_DESKTOP_BREAKPOINT = 719; // refer to config.styl
|
||||||
const NAVBAR_VERTICAL_PADDING = parseInt(css(this.$el, 'paddingLeft')) + parseInt(css(this.$el, 'paddingRight'))
|
const NAVBAR_VERTICAL_PADDING =
|
||||||
const handleLinksWrapWidth = () => {
|
// eslint-disable-next-line radix
|
||||||
if (document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT) {
|
parseInt(css(this.$el, "paddingLeft")) +
|
||||||
this.linksWrapMaxWidth = null
|
// eslint-disable-next-line radix
|
||||||
} else {
|
parseInt(css(this.$el, "paddingRight"));
|
||||||
this.linksWrapMaxWidth = this.$el.offsetWidth - NAVBAR_VERTICAL_PADDING
|
const handleLinksWrapWidth = () => {
|
||||||
- (this.$refs.siteName && this.$refs.siteName.offsetWidth || 0)
|
if (
|
||||||
}
|
document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT
|
||||||
}
|
) {
|
||||||
handleLinksWrapWidth()
|
this.linksWrapMaxWidth = null;
|
||||||
window.addEventListener('resize', handleLinksWrapWidth, false)
|
} else {
|
||||||
}
|
this.linksWrapMaxWidth =
|
||||||
}
|
this.$el.offsetWidth -
|
||||||
|
NAVBAR_VERTICAL_PADDING -
|
||||||
|
((this.$refs.siteName && this.$refs.siteName.offsetWidth) ||
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
handleLinksWrapWidth();
|
||||||
|
window.addEventListener("resize", handleLinksWrapWidth, false);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
function css (el, property) {
|
function css(el, property) {
|
||||||
// NOTE: Known bug, will return 'auto' if style value is 'auto'
|
// NOTE: Known bug, will return "auto" if style value is "auto"
|
||||||
const win = el.ownerDocument.defaultView
|
const win = el.ownerDocument.defaultView;
|
||||||
// null means not to return pseudo styles
|
// null means not to return pseudo styles
|
||||||
return win.getComputedStyle(el, null)[property]
|
return win.getComputedStyle(el, null)[property];
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -98,44 +117,44 @@ $navbar-vertical-padding = 0.7rem
|
|||||||
$navbar-horizontal-padding = 1.5rem
|
$navbar-horizontal-padding = 1.5rem
|
||||||
|
|
||||||
.navbar
|
.navbar
|
||||||
padding $navbar-vertical-padding $navbar-horizontal-padding
|
padding $navbar-vertical-padding $navbar-horizontal-padding
|
||||||
line-height $navbarHeight - 1.4rem
|
line-height $navbarHeight - 1.4rem
|
||||||
a, span, img
|
a, span, img
|
||||||
display inline-block
|
display inline-block
|
||||||
.logo
|
.logo
|
||||||
height $navbarHeight - 1.4rem
|
height $navbarHeight - 1.4rem
|
||||||
min-width $navbarHeight - 1.4rem
|
min-width $navbarHeight - 1.4rem
|
||||||
margin-right 0.8rem
|
margin-right 0.8rem
|
||||||
vertical-align top
|
vertical-align top
|
||||||
.site-name
|
.site-name
|
||||||
font-size 1.3rem
|
font-size 1.3rem
|
||||||
font-weight 600
|
font-weight 600
|
||||||
color $textColor
|
color $textColor
|
||||||
position relative
|
position relative
|
||||||
.links
|
.links
|
||||||
padding-left 1.5rem
|
padding-left 1.5rem
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
background-color white
|
background-color white
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
font-size 0.9rem
|
font-size 0.9rem
|
||||||
position absolute
|
position absolute
|
||||||
right $navbar-horizontal-padding
|
right $navbar-horizontal-padding
|
||||||
top $navbar-vertical-padding
|
top $navbar-vertical-padding
|
||||||
display flex
|
display flex
|
||||||
.search-box
|
.search-box
|
||||||
flex: 0 0 auto
|
flex: 0 0 auto
|
||||||
vertical-align top
|
vertical-align top
|
||||||
|
|
||||||
@media (max-width: $MQMobile)
|
@media (max-width: $MQMobile)
|
||||||
.navbar
|
.navbar
|
||||||
padding-left 4rem
|
padding-left 4rem
|
||||||
.can-hide
|
.can-hide
|
||||||
display none
|
display none
|
||||||
.links
|
.links
|
||||||
padding-left 1.5rem
|
padding-left 1.5rem
|
||||||
.site-name
|
.site-name
|
||||||
width calc(100vw - 9.4rem)
|
width calc(100vw - 9.4rem)
|
||||||
overflow hidden
|
overflow hidden
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
text-overflow ellipsis
|
text-overflow ellipsis
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
extend: "@vuepress/theme-default"
|
extend: "@vuepress/theme-default",
|
||||||
};
|
};
|
||||||
|
@ -6,14 +6,14 @@ buttonDownload: Download
|
|||||||
buttonGuides: User guide
|
buttonGuides: User guide
|
||||||
buttonGuidesLink: /help/guides/getting-started
|
buttonGuidesLink: /help/guides/getting-started
|
||||||
features:
|
features:
|
||||||
- title: Tracking
|
- title: Tracking
|
||||||
details: Automatically keep track of your manga with MyAnimeList, AniList, Kitsu, Shikimori, and Bangumi.
|
details: Automatically keep track of your manga with MyAnimeList, AniList, Kitsu, Shikimori, and Bangumi.
|
||||||
image: Library
|
image: Library
|
||||||
- title: Extensions
|
- title: Extensions
|
||||||
details: Online reading from sources such as MangaDex, MangaKakalot and hundreds more.
|
details: Online reading from sources such as MangaDex, MangaKakalot and hundreds more.
|
||||||
image: Browse
|
image: Browse
|
||||||
- title: Customization
|
- title: Customization
|
||||||
details: A configurable reader with multiple viewers, reading directions and other settings.
|
details: A configurable reader with multiple viewers, reading directions and other settings.
|
||||||
image: Manga
|
image: Manga
|
||||||
footer: Apache Licensed | Copyright © 2015-present Javier Tomás
|
footer: Apache Licensed | Copyright © 2015-present Javier Tomás
|
||||||
---
|
---
|
||||||
|
@ -47,6 +47,6 @@ Visit our translation project [here](https://hosted.weblate.org/projects/tachiyo
|
|||||||
## Donation
|
## Donation
|
||||||
If you can't contribute code or translations but you still wish to help, then you can choose to contribute directly to the projects founder, [Inorichi](https://github.com/inorichi/) by using the button below, or going [directly to Ko-Fi](https://ko-fi.com/inorichi).
|
If you can't contribute code or translations but you still wish to help, then you can choose to contribute directly to the projects founder, [Inorichi](https://github.com/inorichi/) by using the button below, or going [directly to Ko-Fi](https://ko-fi.com/inorichi).
|
||||||
***
|
***
|
||||||
<a href='https://ko-fi.com/inorichi' target='_blank' rel='noopener'>
|
<a href="https://ko-fi.com/inorichi" target="_blank" rel="noopener">
|
||||||
<img height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi1.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com' />
|
<img height="36" style="border:0px;height:36px;" src="https://cdn.ko-fi.com/cdn/kofi1.png?v=2" border="0" alt="Buy Me a Coffee at ko-fi.com" />
|
||||||
</a>
|
</a>
|
@ -36,40 +36,40 @@ All examples are illustrations and may not reflect what actually happens.
|
|||||||
<Carousel name="carousel-scale-type">
|
<Carousel name="carousel-scale-type">
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Fit screen</h4>
|
<h4>Fit screen</h4>
|
||||||
<p>Will fit either to width or height depending on image resolution</p>
|
<p>Will fit either to width or height depending on image resolution</p>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitscreen.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitscreen.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Stretch</h4>
|
<h4>Stretch</h4>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/stretch.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/stretch.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Fit width</h4>
|
<h4>Fit width</h4>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitwidth.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitwidth.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Fit height</h4>
|
<h4>Fit height</h4>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitheight.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/fitheight.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Original size</h4>
|
<h4>Original size</h4>
|
||||||
<p>Will be either zoom in or out depending on image resolution</p>
|
<p>Will be either zoom in or out depending on image resolution</p>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/originalsize.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/originalsize.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Smart fit</h4>
|
<h4>Smart fit</h4>
|
||||||
<p>Fits to the longest side of the image</p>
|
<p>Fits to the longest side of the image</p>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/smartfit.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/smartfit.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
@ -90,23 +90,23 @@ All examples are illustrations
|
|||||||
<Carousel name="carousel-zoom-start-position">
|
<Carousel name="carousel-zoom-start-position">
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Left</h4>
|
<h4>Left</h4>
|
||||||
<p>Will start at the left side of the page.</p>
|
<p>Will start at the left side of the page.</p>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositionleft.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositionleft.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Right</h4>
|
<h4>Right</h4>
|
||||||
<p>Will start at the right side of the page.</p>
|
<p>Will start at the right side of the page.</p>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositionright.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositionright.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>Center</h4>
|
<h4>Center</h4>
|
||||||
<p>Will start at the center of the page.</p>
|
<p>Will start at the center of the page.</p>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositioncenter.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/zoomstartpositioncenter.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
</Carousel>
|
</Carousel>
|
||||||
@ -126,16 +126,16 @@ This allows you to control what color the background should be in reader. Backgr
|
|||||||
<Carousel name="carousel-background-color">
|
<Carousel name="carousel-background-color">
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/backgroundcolorblack.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/backgroundcolorblack.png')">
|
||||||
<h4>Black</h4>
|
<h4>Black</h4>
|
||||||
<p>Surrounds page with black. With an AMOLED screen you can save battery by using this.</p>
|
<p>Surrounds page with black. With an AMOLED screen you can save battery by using this.</p>
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/backgroundcolorwhite.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/backgroundcolorwhite.png')">
|
||||||
<h4>White</h4>
|
<h4>White</h4>
|
||||||
<p>Surrounds page with white. Makes pages seemless with the screen.</p>
|
<p>Surrounds page with white. Makes pages seemless with the screen.</p>
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
</Carousel>
|
</Carousel>
|
||||||
@ -172,14 +172,14 @@ Tries to remove excess white borders
|
|||||||
<Carousel name="carousel-crop-borders">
|
<Carousel name="carousel-crop-borders">
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>With Crop borders on</h4>
|
<h4>With Crop borders on</h4>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/withcropborder.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/withcropborder.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
<CarouselItem>
|
<CarouselItem>
|
||||||
<figure class="centered">
|
<figure class="centered">
|
||||||
<h4>With Crop borders off</h4>
|
<h4>With Crop borders off</h4>
|
||||||
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/withoutcropborder.png')">
|
<img height="400" intrinsicsize="208x500" width="260" :src="$withBase('/assets/media/withoutcropborder.png')">
|
||||||
</figure>
|
</figure>
|
||||||
</CarouselItem>
|
</CarouselItem>
|
||||||
</Carousel>
|
</Carousel>
|
||||||
|
@ -12,8 +12,7 @@ Migration is the process of moving manga from one source to another while keepin
|
|||||||
1. Go to <Navigation item="more"/> and tap <Navigation item="source_migration"/>.
|
1. Go to <Navigation item="more"/> and tap <Navigation item="source_migration"/>.
|
||||||
1. Select the **Source** you're migrating from.
|
1. Select the **Source** you're migrating from.
|
||||||
1. Find and select the title that you want to migrate.
|
1. Find and select the title that you want to migrate.
|
||||||
|
> **Tachiyomi** will do a global search of all the sources you have installed and enabled. If you don't find the manga you want, try searching for other titles it might go under.
|
||||||
**Tachiyomi** will do a global search of all the sources you have installed and enabled. If you don't find the manga you want, try searching for other titles it might go under.
|
|
||||||
1. Once you find the manga you want to migrate, select it and then choose which data you want to transfer over, and you're done.
|
1. Once you find the manga you want to migrate, select it and then choose which data you want to transfer over, and you're done.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
@ -54,9 +54,9 @@ In this case it is a problem with the site.
|
|||||||
You can open WebView in two of the following ways:
|
You can open WebView in two of the following ways:
|
||||||
|
|
||||||
* If you already have a manga in **Library**
|
* If you already have a manga in **Library**
|
||||||
* Open the manga in **Library**, then click on the <Navigation item="webview"/> on the **INFO** tab.
|
* Open the manga in **Library**, then click on the <Navigation item="webview"/> on the **INFO** tab.
|
||||||
* If you don't have manga in **Library**
|
* If you don't have manga in **Library**
|
||||||
* Go to <Navigation item="browse"/> and click on **BROWSE** beside the source. Then open a manga and click on <Navigation item="webview"/>.
|
* Go to <Navigation item="browse"/> and click on **BROWSE** beside the source. Then open a manga and click on <Navigation item="webview"/>.
|
||||||
|
|
||||||
Once in WebView, you will see a webpage and a bar on top with an arrow at the left side, pointing to the left edge of your screen.
|
Once in WebView, you will see a webpage and a bar on top with an arrow at the left side, pointing to the left edge of your screen.
|
||||||
If there is no CAPTCHA on the webpage, initiate one by tapping a manga title, if possible. Once a CAPTCHA is shown, solve it. After that, use the aforementioned back arrow on the bar at the top of your screen to go back to your manga. Please do not use the back button on your phone as it does not work as expected.
|
If there is no CAPTCHA on the webpage, initiate one by tapping a manga title, if possible. Once a CAPTCHA is shown, solve it. After that, use the aforementioned back arrow on the bar at the top of your screen to go back to your manga. Please do not use the back button on your phone as it does not work as expected.
|
||||||
|
Loading…
Reference in New Issue
Block a user