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": [
|
||||
"plugin:vue/essential",
|
||||
"vuepress",
|
||||
"prettier"
|
||||
"airbnb-base",
|
||||
"prettier",
|
||||
"vuepress"
|
||||
],
|
||||
"globals": {
|
||||
"Atomics": "readonly",
|
||||
"SharedArrayBuffer": "readonly"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"vue",
|
||||
"prettier"
|
||||
"prettier",
|
||||
"markdown"
|
||||
],
|
||||
"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 }}
|
||||
publish_branch: gh-pages
|
||||
publish_dir: ./public
|
||||
user_name: 'github-actions[bot]'
|
||||
user_email: 'github-actions[bot]@users.noreply.github.com'
|
||||
user_name: "github-actions[bot]"
|
||||
user_email: "github-actions[bot]@users.noreply.github.com"
|
||||
commit_message: ${{ github.event.head_commit.message }}
|
||||
|
@ -1,9 +1,11 @@
|
||||
<h1 align="center"><img src="./src/.vuepress/public/assets/media/tachiyomi.png">Tachiyomi Website</h1>
|
||||
<p align="center">
|
||||
<div>
|
||||
<h1 align="center"><img src="./src/.vuepress/public/assets/media/tachiyomi.png">Tachiyomi Website</h1>
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/tachiyomi">
|
||||
<img src="https://img.shields.io/discord/349436576037732353.svg?label=Discord&labelColor=7289da&color=2c2f33&style=flat" alt="Discord">
|
||||
</a>
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Contributing
|
||||
|
||||
|
257
package-lock.json
generated
257
package-lock.json
generated
@ -2189,6 +2189,12 @@
|
||||
"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": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
@ -2873,6 +2879,24 @@
|
||||
"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": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
||||
@ -3099,6 +3123,12 @@
|
||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||
"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": {
|
||||
"version": "1.0.0",
|
||||
"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": {
|
||||
"version": "10.0.0",
|
||||
"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": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
|
||||
@ -6580,6 +6637,12 @@
|
||||
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
|
||||
"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": {
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
|
||||
@ -6638,6 +6701,12 @@
|
||||
"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": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
|
||||
@ -6784,12 +6853,24 @@
|
||||
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
|
||||
"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": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
|
||||
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
|
||||
"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": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
||||
@ -7111,8 +7192,7 @@
|
||||
"lodash.orderby": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.orderby/-/lodash.orderby-4.6.0.tgz",
|
||||
"integrity": "sha1-5pfwTOXXhSL1TZM4syuBozk+TrM=",
|
||||
"dev": true
|
||||
"integrity": "sha1-5pfwTOXXhSL1TZM4syuBozk+TrM="
|
||||
},
|
||||
"lodash.padstart": {
|
||||
"version": "4.6.1",
|
||||
@ -7146,8 +7226,7 @@
|
||||
"lodash.throttle": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
||||
"integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
|
||||
"dev": true
|
||||
"integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
|
||||
},
|
||||
"lodash.uniq": {
|
||||
"version": "4.5.0",
|
||||
@ -7247,6 +7326,12 @@
|
||||
"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": {
|
||||
"version": "8.4.2",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
|
||||
@ -8375,6 +8460,20 @@
|
||||
"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": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
||||
@ -9627,6 +9726,29 @@
|
||||
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
|
||||
"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": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
||||
@ -9712,6 +9834,12 @@
|
||||
"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": {
|
||||
"version": "2.88.2",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
|
||||
@ -10665,6 +10793,12 @@
|
||||
"integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
|
||||
"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": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
|
||||
@ -11268,12 +11402,30 @@
|
||||
"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": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
|
||||
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
|
||||
"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": {
|
||||
"version": "1.0.3",
|
||||
"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": {
|
||||
"version": "1.0.4",
|
||||
"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==",
|
||||
"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": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
|
||||
@ -11459,6 +11635,45 @@
|
||||
"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": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
@ -11776,6 +11991,33 @@
|
||||
"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": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
|
||||
@ -11792,7 +12034,6 @@
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/vue-agile/-/vue-agile-1.1.3.tgz",
|
||||
"integrity": "sha512-RnvKK6ZoXNAk2Q6h/ux+bhqYs4uflFew3xcsNfysQa+GVLKHfizAaeKHJndqGjSXA+qg+kJuYd4RDY/ry8RY4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash.orderby": "^4.6.0",
|
||||
"lodash.throttle": "^4.1.1"
|
||||
@ -12624,6 +12865,12 @@
|
||||
"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": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
|
||||
|
@ -16,13 +16,16 @@
|
||||
"@vuepress/plugin-google-analytics": "^1.5.0",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-airbnb": "^18.1.0",
|
||||
"eslint-config-airbnb-base": "^14.1.0",
|
||||
"eslint-config-prettier": "^6.11.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-vue": "^6.2.2",
|
||||
"node-sass": "^4.14.1",
|
||||
"prettier": "^2.0.5",
|
||||
"sass-loader": "^8.0.2",
|
||||
"vue-agile": "^1.1.3",
|
||||
"vuepress": "^1.5.0",
|
||||
"vuepress-plugin-clean-urls": "^1.1.1",
|
||||
"vuepress-plugin-container": "^2.1.3"
|
||||
@ -33,6 +36,7 @@
|
||||
"lodash.groupby": "^4.6.0",
|
||||
"lodash.sortby": "^4.7.0",
|
||||
"material-design-icons": "^3.0.1",
|
||||
"vue-agile": "^1.1.3",
|
||||
"vue-material-design-icons": "^4.6.0",
|
||||
"vue-sweetalert2": "^3.0.5",
|
||||
"vuepress-plugin-sitemap": "^2.3.1"
|
||||
|
@ -16,18 +16,18 @@ export default {
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: "carousel"
|
||||
default: "carousel",
|
||||
},
|
||||
config: {
|
||||
type: Object,
|
||||
default: function() {
|
||||
default() {
|
||||
return {
|
||||
navButtons: true,
|
||||
centerMode: true
|
||||
centerMode: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -10,9 +10,9 @@ export default {
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: "carousel-cell"
|
||||
}
|
||||
}
|
||||
default: "carousel-cell",
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -15,35 +15,34 @@ import axios from "axios";
|
||||
const RELEASE_URL =
|
||||
"https://api.github.com/repos/inorichi/tachiyomi/releases/latest";
|
||||
|
||||
const PREVIEW_URL =
|
||||
"https://tachiyomi.kanade.eu/latest";
|
||||
const PREVIEW_URL = "https://tachiyomi.kanade.eu/latest";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
downloadStableTag: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
downloadPreviewTag: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
downloadStableLabel: {
|
||||
type: String,
|
||||
default: "Stable"
|
||||
default: "Stable",
|
||||
},
|
||||
downloadPreviewLabel: {
|
||||
type: String,
|
||||
default: "Preview"
|
||||
default: "Preview",
|
||||
},
|
||||
downloadStableUrl: {
|
||||
type: String,
|
||||
default: undefined
|
||||
default: undefined,
|
||||
},
|
||||
downloadPreviewUrl: {
|
||||
type: String,
|
||||
default: undefined
|
||||
}
|
||||
default: undefined,
|
||||
},
|
||||
},
|
||||
|
||||
data() {
|
||||
@ -56,7 +55,7 @@ export default {
|
||||
async mounted() {
|
||||
const { data } = await axios.get(RELEASE_URL);
|
||||
// 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.
|
||||
this.$data.tagName = data.tag_name;
|
||||
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
||||
@ -66,7 +65,7 @@ export default {
|
||||
downloadStable() {
|
||||
this.$swal({
|
||||
title: "Downloading",
|
||||
text: this.downloadStableLabel + " version is being downloaded.",
|
||||
text: `${this.downloadStableLabel} version is being downloaded.`,
|
||||
icon: "success",
|
||||
focusConfirm: false,
|
||||
focusCancel: false,
|
||||
@ -74,24 +73,32 @@ export default {
|
||||
timerProgressBar: true,
|
||||
customClass: {
|
||||
confirmButton: "download-confirm-button",
|
||||
container: "download-container"
|
||||
container: "download-container",
|
||||
},
|
||||
showClass: {
|
||||
popup: "animated pulse faster"
|
||||
popup: "animated pulse faster",
|
||||
},
|
||||
hideClass: {
|
||||
popup: "animated zoomOut faster"
|
||||
}
|
||||
popup: "animated zoomOut faster",
|
||||
},
|
||||
});
|
||||
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() {
|
||||
this.$swal({
|
||||
title: "Downloading",
|
||||
text: this.downloadPreviewLabel + " version is being downloaded.",
|
||||
text: `${this.downloadPreviewLabel} version is being downloaded.`,
|
||||
icon: "success",
|
||||
focusConfirm: false,
|
||||
focusCancel: false,
|
||||
@ -99,21 +106,27 @@ export default {
|
||||
timerProgressBar: true,
|
||||
customClass: {
|
||||
confirmButton: "download-confirm-button",
|
||||
container: "download-container"
|
||||
container: "download-container",
|
||||
},
|
||||
showClass: {
|
||||
popup: "animated pulse faster"
|
||||
popup: "animated pulse faster",
|
||||
},
|
||||
hideClass: {
|
||||
popup: "animated zoomOut faster"
|
||||
}
|
||||
popup: "animated zoomOut faster",
|
||||
},
|
||||
});
|
||||
window.location.assign(
|
||||
this.$props.downloadPreviewUrl || PREVIEW_URL
|
||||
);
|
||||
window.ga("send", "event", "Action", "Download", this.downloadPreviewTag);
|
||||
}
|
||||
}
|
||||
window.ga(
|
||||
"send",
|
||||
"event",
|
||||
"Action",
|
||||
"Download",
|
||||
this.downloadPreviewTag
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -54,24 +54,26 @@ const EXTENSION_JSON =
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
extensions: []
|
||||
extensions: [],
|
||||
};
|
||||
},
|
||||
|
||||
async beforeMount() {
|
||||
const { data } = await axios.get(EXTENSION_JSON);
|
||||
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() {
|
||||
if (location.hash) {
|
||||
location.replace(location.hash);
|
||||
if (window.ocation.hash) {
|
||||
window.location.replace(window.location.hash);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
langName: code =>
|
||||
langName: (code) =>
|
||||
code === "all"
|
||||
? "All"
|
||||
: `${ISO6391.getName(code)} (${ISO6391.getNativeName(code)})`,
|
||||
@ -79,9 +81,9 @@ export default {
|
||||
const pkgName = pkg.substring(0, pkg.lastIndexOf("."));
|
||||
return `https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/icon/${pkgName}.png`;
|
||||
},
|
||||
apkUrl: apk =>
|
||||
`https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/apk/${apk}`
|
||||
}
|
||||
apkUrl: (apk) =>
|
||||
`https://raw.githubusercontent.com/inorichi/tachiyomi-extensions/repo/apk/${apk}`,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -1,9 +1,17 @@
|
||||
<template>
|
||||
<div class="downloadContainer">
|
||||
<button class="downloadForkButton" :style="downloadForkStyle" @click="downloadFork">
|
||||
<button
|
||||
class="downloadForkButton"
|
||||
:style="downloadForkStyle"
|
||||
@click="downloadFork"
|
||||
>
|
||||
{{ downloadForkLabel }}
|
||||
</button>
|
||||
<button class="githubForkButton" :style="githubForkStyle" :onclick="githubForkLink">
|
||||
<button
|
||||
class="githubForkButton"
|
||||
:style="githubForkStyle"
|
||||
:onclick="githubForkLink"
|
||||
>
|
||||
{{ githubForkLabel }}
|
||||
</button>
|
||||
</div>
|
||||
@ -16,44 +24,44 @@ export default {
|
||||
props: {
|
||||
forkName: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
downloadForkLabel: {
|
||||
type: String,
|
||||
default: "Download"
|
||||
default: "Download",
|
||||
},
|
||||
downloadForkLink: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
downloadForkStyle: {
|
||||
type: String,
|
||||
default: ""
|
||||
default: "",
|
||||
},
|
||||
githubForkLabel: {
|
||||
type: String,
|
||||
default: "GitHub"
|
||||
default: "GitHub",
|
||||
},
|
||||
githubForkLink: {
|
||||
type: String,
|
||||
required: true
|
||||
required: true,
|
||||
},
|
||||
githubForkStyle: {
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tagName: "",
|
||||
browserDownloadUrl: ""
|
||||
browserDownloadUrl: "",
|
||||
};
|
||||
},
|
||||
|
||||
async mounted() {
|
||||
const { data } = await axios.get(this.$props.downloadForkLink);
|
||||
// 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.
|
||||
this.$data.tagName = data.tag_name;
|
||||
this.$data.browserDownloadUrl = apkAsset.browser_download_url;
|
||||
@ -63,7 +71,7 @@ export default {
|
||||
downloadFork() {
|
||||
this.$swal({
|
||||
title: "Downloading",
|
||||
text: this.$props.forkName + " is being downloaded.",
|
||||
text: `${this.$props.forkName} is being downloaded.`,
|
||||
icon: "success",
|
||||
focusConfirm: false,
|
||||
focusCancel: false,
|
||||
@ -71,21 +79,27 @@ export default {
|
||||
timerProgressBar: true,
|
||||
customClass: {
|
||||
confirmButton: "download-confirm-button",
|
||||
container: "download-container"
|
||||
container: "download-container",
|
||||
},
|
||||
showClass: {
|
||||
popup: "animated pulse faster"
|
||||
popup: "animated pulse faster",
|
||||
},
|
||||
hideClass: {
|
||||
popup: "animated zoomOut faster"
|
||||
}
|
||||
popup: "animated zoomOut faster",
|
||||
},
|
||||
});
|
||||
window.location.assign(
|
||||
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>
|
||||
|
||||
|
@ -6,22 +6,18 @@
|
||||
<Content class="theme-default-content" />
|
||||
<PageEdit />
|
||||
|
||||
<PageNav v-bind="{ sidebarItems }" />
|
||||
|
||||
<slot name="bottom" />
|
||||
</main>
|
||||
</Layout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Layout from '@theme/layouts/Layout.vue'
|
||||
import PageEdit from '@theme/components/PageEdit.vue'
|
||||
import PageNav from '@theme/components/PageNav.vue'
|
||||
import Layout from "@theme/layouts/Layout.vue";
|
||||
import PageEdit from "@theme/components/PageEdit.vue";
|
||||
|
||||
export default {
|
||||
components: { PageEdit, PageNav, Layout },
|
||||
props: ['sidebarItems']
|
||||
}
|
||||
components: { PageEdit, Layout },
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
|
@ -275,7 +275,7 @@ export default {
|
||||
grid-auto-rows 1fr
|
||||
grid-gap 1rem
|
||||
&:after
|
||||
content ''
|
||||
content ""
|
||||
display table
|
||||
clear both
|
||||
|
||||
|
@ -14,17 +14,17 @@ export default {
|
||||
props: {
|
||||
iconOnly: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
default: false,
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
default: ""
|
||||
default: "",
|
||||
},
|
||||
iconName: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -37,7 +37,7 @@ export default {
|
||||
display inline
|
||||
|
||||
.material-icons
|
||||
font-family 'Material Icons'
|
||||
font-family "Material Icons"
|
||||
font-size 1.35em
|
||||
font-style normal
|
||||
position relative
|
||||
@ -50,7 +50,6 @@ export default {
|
||||
white-space nowrap
|
||||
word-wrap normal
|
||||
direction ltr
|
||||
font-feature-settings 'liga'
|
||||
font-feature-settings "liga"
|
||||
-webkit-font-smoothing antialiased
|
||||
|
||||
</style>
|
||||
|
@ -1,13 +1,27 @@
|
||||
<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">
|
||||
<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>
|
||||
<slot />
|
||||
</a>
|
||||
</span>
|
||||
<span v-else class="app-navigation" :class="nav.class" title="App navigation">
|
||||
<MaterialIcon v-if="nav.icon" class="app-icon" :iconName="nav.icon" />
|
||||
<span
|
||||
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>
|
||||
<slot />
|
||||
</span>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<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>
|
||||
<slot />
|
||||
</span>
|
||||
@ -18,8 +18,8 @@ const RELEASE_URL =
|
||||
export default {
|
||||
props: {
|
||||
fileName: {
|
||||
type: Boolean
|
||||
}
|
||||
type: Boolean,
|
||||
},
|
||||
},
|
||||
|
||||
data() {
|
||||
|
@ -1,52 +1,53 @@
|
||||
module.exports = {
|
||||
dest: './public',
|
||||
temp: './node_modules/.temp/theme',
|
||||
const pluginsConfig = require("./config/plugins");
|
||||
const navBarConfig = require("./config/navBar");
|
||||
const sideBarConfig = require("./config/sideBar");
|
||||
|
||||
title: 'Tachiyomi',
|
||||
description: 'Free and open source manga reader for Android',
|
||||
module.exports = {
|
||||
dest: "./public",
|
||||
temp: "./node_modules/.temp/theme",
|
||||
|
||||
title: "Tachiyomi",
|
||||
description: "Free and open source manga reader for Android",
|
||||
|
||||
// prettier-ignore
|
||||
head: [
|
||||
// Embed headers
|
||||
['link', { rel: 'icon', href: '/favicon.ico' }],
|
||||
['link', { rel: 'manifest', href: '/manifest.json' }],
|
||||
['meta', { name: 'theme-color', content: '#2e84bf' }],
|
||||
['meta', { prefix: 'og: http://ogp.me/ns#', property: 'og:image', content: 'https://tachiyomi.org/icons/logo.png' }],
|
||||
["link", { rel: "icon", href: "/favicon.ico" }],
|
||||
["link", { rel: "manifest", href: "/manifest.json" }],
|
||||
["meta", { name: "theme-color", content: "#2e84bf" }],
|
||||
["meta", { prefix: "og: http://ogp.me/ns#", property: "og:image", content: "https://tachiyomi.org/icons/logo.png" }],
|
||||
// Custom headers
|
||||
['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin:''}],
|
||||
['link', { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Open+Sans'}],
|
||||
["link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin:""}],
|
||||
["link", { rel: "stylesheet", href: "https://fonts.googleapis.com/css?family=Open+Sans"}],
|
||||
],
|
||||
|
||||
themeConfig: {
|
||||
logo: '/icons/logo.svg',
|
||||
repo: 'inorichi/tachiyomi',
|
||||
docsRepo: 'tachiyomiorg/website',
|
||||
docsDir: 'src',
|
||||
logo: "/icons/logo.svg",
|
||||
repo: "inorichi/tachiyomi",
|
||||
docsRepo: "tachiyomiorg/website",
|
||||
docsDir: "src",
|
||||
smoothScroll: true,
|
||||
algolia: {
|
||||
apiKey: 'fc1c45b5a3835e1882cbbf0751dfe705',
|
||||
indexName: 'tachiyomi'
|
||||
apiKey: "fc1c45b5a3835e1882cbbf0751dfe705",
|
||||
indexName: "tachiyomi",
|
||||
},
|
||||
searchPlaceholder: 'Search...',
|
||||
searchPlaceholder: "Search...",
|
||||
editLinks: true,
|
||||
editLinkText: 'Help us improve this page',
|
||||
lastUpdated: 'Last Updated',
|
||||
nav: require('./config/nav'),
|
||||
editLinkText: "Help us improve this page",
|
||||
lastUpdated: "Last Updated",
|
||||
nav: navBarConfig,
|
||||
sidebar: {
|
||||
'/help/guides/': require('./config/sidebar/guides'),
|
||||
'/help/faq/': require('./config/sidebar/faq'),
|
||||
'/help/contribution': require('./config/sidebar/contribution'),
|
||||
'/extensions': require('./config/sidebar/extensions'),
|
||||
'/forks': require('./config/sidebar/forks')
|
||||
}
|
||||
"/help/guides/": sideBarConfig.guides,
|
||||
"/help/faq/": sideBarConfig.faq,
|
||||
"/help/contribution": sideBarConfig.contribution,
|
||||
"/extensions": sideBarConfig.extensions,
|
||||
"/forks": sideBarConfig.forks,
|
||||
},
|
||||
plugins: require('./config/plugins'),
|
||||
},
|
||||
plugins: pluginsConfig,
|
||||
extraWatchFiles: [
|
||||
'.vuepress/config/nav.js',
|
||||
'.vuepress/config/plugins.js',
|
||||
'.vuepress/config/sidebar/guides.js',
|
||||
'.vuepress/config/sidebar/faq.js',
|
||||
'.vuepress/config/sidebar/contribution.js',
|
||||
'.vuepress/config/sidebar/extensions.js'
|
||||
]
|
||||
}
|
||||
".vuepress/config/plugins.js",
|
||||
".vuepress/config/navBar.js",
|
||||
".vuepress/config/sideBar.js",
|
||||
],
|
||||
};
|
||||
|
@ -3,50 +3,50 @@ module.exports = [
|
||||
[
|
||||
"clean-urls",
|
||||
{
|
||||
normalSuffix: "/"
|
||||
}
|
||||
normalSuffix: "/",
|
||||
},
|
||||
],
|
||||
[
|
||||
"@vuepress/google-analytics",
|
||||
{
|
||||
ga: "UA-148212082-1"
|
||||
}
|
||||
ga: "UA-148212082-1",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-container",
|
||||
{
|
||||
type: "expander",
|
||||
before: info =>
|
||||
before: (info) =>
|
||||
`<details class="expander"><summary class="expansion">${info}</summary>`,
|
||||
after: "</details>"
|
||||
}
|
||||
after: "</details>",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-container",
|
||||
{
|
||||
type: "guide",
|
||||
before: info => `<div class="guide"><p class="title">${info}</p>`,
|
||||
after: "</div>"
|
||||
}
|
||||
before: (info) => `<div class="guide"><p class="title">${info}</p>`,
|
||||
after: "</div>",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-container",
|
||||
{
|
||||
type: "aside",
|
||||
defaultTitle: ""
|
||||
}
|
||||
defaultTitle: "",
|
||||
},
|
||||
],
|
||||
[
|
||||
"vuepress-plugin-container",
|
||||
{
|
||||
type: "aside-guide",
|
||||
defaultTitle: ""
|
||||
}
|
||||
defaultTitle: "",
|
||||
},
|
||||
],
|
||||
[
|
||||
"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/animate.css'
|
||||
import 'sweetalert2/dist/sweetalert2.min.css';
|
||||
import 'vue-material-design-icons/styles.css';
|
||||
import "./styles/fonts.styl";
|
||||
import "./styles/animate.css";
|
||||
import "./styles/sweetalert2.css";
|
||||
import "vue-material-design-icons/styles.css";
|
||||
|
||||
import { VueAgile } from 'vue-agile';
|
||||
import VueSweetalert2 from 'vue-sweetalert2';
|
||||
import { VueAgile } from "vue-agile";
|
||||
import VueSweetalert2 from "vue-sweetalert2";
|
||||
|
||||
export default ({
|
||||
Vue, // the version of Vue being used in the VuePress app
|
||||
options, // the options for the root Vue instance
|
||||
router, // the router instance for the app
|
||||
siteData // site metadata
|
||||
siteData, // site metadata
|
||||
}) => {
|
||||
// eslint-disable-next-line vue/match-component-file-name
|
||||
Vue.component('Agile', VueAgile);
|
||||
Vue.component("Agile", VueAgile);
|
||||
Vue.use(VueSweetalert2);
|
||||
};
|
||||
|
2
src/.vuepress/styles/animate.css
vendored
2
src/.vuepress/styles/animate.css
vendored
@ -106,7 +106,7 @@
|
||||
animation-iteration-count: 1 !important;
|
||||
}
|
||||
|
||||
.animate__animated[class*='Out'] {
|
||||
.animate__animated[class*="Out"] {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
@font-face
|
||||
font-family 'Material Icons'
|
||||
font-family "Material Icons"
|
||||
font-style normal
|
||||
font-weight 400
|
||||
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 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")
|
||||
|
@ -72,7 +72,7 @@ font-feature-settings()
|
||||
font-weight normal
|
||||
&::before
|
||||
&::after
|
||||
content ''
|
||||
content ""
|
||||
left 0
|
||||
position absolute
|
||||
&::before
|
||||
|
@ -23,8 +23,8 @@ $MQNarrow = 959px
|
||||
$MQMobile = 767px
|
||||
$MQMobileNarrow = 419px
|
||||
// Fonts
|
||||
$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
|
||||
$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
|
||||
// Forks
|
||||
$nekoAccentColor = #3DDA83
|
||||
$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
@ -8,70 +8,84 @@
|
||||
id="algolia-search-input"
|
||||
class="search-query"
|
||||
:placeholder="placeholder"
|
||||
>
|
||||
/>
|
||||
</form>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'AlgoliaSearchBox',
|
||||
name: "AlgoliaSearchBox",
|
||||
|
||||
props: ['options'],
|
||||
props: {
|
||||
options: {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
},
|
||||
|
||||
data () {
|
||||
data() {
|
||||
return {
|
||||
placeholder: undefined
|
||||
}
|
||||
placeholder: undefined,
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
$lang (newValue) {
|
||||
this.update(this.options, newValue)
|
||||
$lang(newValue) {
|
||||
this.update(this.options, newValue);
|
||||
},
|
||||
|
||||
options (newValue) {
|
||||
this.update(newValue, this.$lang)
|
||||
}
|
||||
options(newValue) {
|
||||
this.update(newValue, this.$lang);
|
||||
},
|
||||
},
|
||||
|
||||
mounted () {
|
||||
this.initialize(this.options, this.$lang)
|
||||
this.placeholder = this.$site.themeConfig.searchPlaceholder || ''
|
||||
mounted() {
|
||||
this.initialize(this.options, this.$lang);
|
||||
this.placeholder = this.$site.themeConfig.searchPlaceholder || "";
|
||||
},
|
||||
|
||||
methods: {
|
||||
initialize (userOptions, lang) {
|
||||
initialize(userOptions, lang) {
|
||||
Promise.all([
|
||||
import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.js'),
|
||||
import(/* webpackChunkName: "docsearch" */ 'docsearch.js/dist/cdn/docsearch.min.css')
|
||||
import(
|
||||
/* webpackChunkName: "docsearch" */ "docsearch.js/dist/cdn/docsearch.min.js"
|
||||
),
|
||||
import(
|
||||
/* webpackChunkName: "docsearch" */ "docsearch.js/dist/cdn/docsearch.min.css"
|
||||
),
|
||||
]).then(([docsearch]) => {
|
||||
docsearch = docsearch.default
|
||||
const { algoliaOptions = {}} = userOptions
|
||||
docsearch(Object.assign(
|
||||
{},
|
||||
userOptions,
|
||||
{
|
||||
inputSelector: '#algolia-search-input',
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
docsearch = docsearch.default;
|
||||
const { algoliaOptions = {} } = userOptions;
|
||||
docsearch({
|
||||
...userOptions,
|
||||
inputSelector: "#algolia-search-input",
|
||||
// #697 Make docsearch work well at i18n mode.
|
||||
algoliaOptions: Object.assign({
|
||||
'facetFilters': [`lang:${lang}`].concat(algoliaOptions.facetFilters || [])
|
||||
}, algoliaOptions),
|
||||
algoliaOptions: {
|
||||
facetFilters: [`lang:${lang}`].concat(
|
||||
algoliaOptions.facetFilters || []
|
||||
),
|
||||
...algoliaOptions,
|
||||
},
|
||||
handleSelected: (input, event, suggestion) => {
|
||||
const { pathname, hash } = new URL(suggestion.url)
|
||||
const routepath = pathname.replace(this.$site.base, '/')
|
||||
this.$router.push(`${routepath}${hash}`)
|
||||
}
|
||||
}
|
||||
))
|
||||
})
|
||||
const { pathname, hash } = new URL(suggestion.url);
|
||||
const routepath = pathname.replace(
|
||||
this.$site.base,
|
||||
"/"
|
||||
);
|
||||
this.$router.push(`${routepath}${hash}`);
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
update (options, lang) {
|
||||
this.$el.innerHTML = '<input id="algolia-search-input" class="search-query">'
|
||||
this.initialize(options, lang)
|
||||
}
|
||||
}
|
||||
}
|
||||
update(options, lang) {
|
||||
this.$el.innerHTML =
|
||||
'<input id="algolia-search-input" class="search-query">';
|
||||
this.initialize(options, lang);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
@ -178,5 +192,4 @@ export default {
|
||||
width 5px
|
||||
margin -3px 3px 0
|
||||
vertical-align middle
|
||||
|
||||
</style>
|
||||
|
@ -230,6 +230,7 @@ export default {
|
||||
popup:
|
||||
"animate__animated animate__faster animate__zoomOut",
|
||||
},
|
||||
// eslint-disable-next-line no-shadow
|
||||
}).then((result) => {
|
||||
if (result.value) {
|
||||
this.$swal({
|
||||
|
@ -2,94 +2,113 @@
|
||||
<header class="navbar">
|
||||
<SidebarButton @toggle-sidebar="$emit('toggle-sidebar')" />
|
||||
|
||||
<RouterLink
|
||||
:to="$localePath"
|
||||
class="home-link"
|
||||
>
|
||||
<RouterLink :to="$localePath" class="home-link">
|
||||
<img
|
||||
v-if="$site.themeConfig.logo"
|
||||
class="logo"
|
||||
:src="$withBase($site.themeConfig.logo)"
|
||||
:alt="$siteTitle"
|
||||
>
|
||||
/>
|
||||
<span
|
||||
v-if="$siteTitle"
|
||||
ref="siteName"
|
||||
class="site-name"
|
||||
:class="{ 'can-hide': $site.themeConfig.logo }"
|
||||
>{{ $siteTitle }}</span>
|
||||
>{{ $siteTitle }}</span
|
||||
>
|
||||
</RouterLink>
|
||||
|
||||
<div
|
||||
class="links"
|
||||
:style="linksWrapMaxWidth ? {
|
||||
'max-width': linksWrapMaxWidth + 'px'
|
||||
} : {}"
|
||||
:style="
|
||||
linksWrapMaxWidth
|
||||
? {
|
||||
'max-width': linksWrapMaxWidth + 'px',
|
||||
}
|
||||
: {}
|
||||
"
|
||||
>
|
||||
<div v-if="$page.frontmatter.hideSearch"/>
|
||||
<AlgoliaSearchBox
|
||||
v-else-if="isAlgoliaSearch"
|
||||
:options="algolia"
|
||||
<div v-if="$page.frontmatter.hideSearch" />
|
||||
<AlgoliaSearchBox v-else-if="isAlgoliaSearch" :options="algolia" />
|
||||
<SearchBox
|
||||
v-else-if="
|
||||
$site.themeConfig.search !== false &&
|
||||
$page.frontmatter.search !== false
|
||||
"
|
||||
/>
|
||||
<SearchBox v-else-if="$site.themeConfig.search !== false && $page.frontmatter.search !== false" />
|
||||
<NavLinks class="can-hide" />
|
||||
</div>
|
||||
</header>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AlgoliaSearchBox from './AlgoliaSearchBox.vue'
|
||||
import SearchBox from '@SearchBox'
|
||||
import SidebarButton from '@theme/components/SidebarButton.vue'
|
||||
import NavLinks from '@theme/components/NavLinks.vue'
|
||||
import SearchBox from "@SearchBox";
|
||||
import SidebarButton from "@theme/components/SidebarButton.vue";
|
||||
import NavLinks from "@theme/components/NavLinks.vue";
|
||||
import AlgoliaSearchBox from "./AlgoliaSearchBox.vue";
|
||||
|
||||
export default {
|
||||
name: 'Navbar',
|
||||
name: "Navbar",
|
||||
|
||||
components: {
|
||||
SidebarButton,
|
||||
NavLinks,
|
||||
SearchBox,
|
||||
AlgoliaSearchBox
|
||||
AlgoliaSearchBox,
|
||||
},
|
||||
|
||||
data () {
|
||||
data() {
|
||||
return {
|
||||
linksWrapMaxWidth: null
|
||||
}
|
||||
linksWrapMaxWidth: null,
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
algolia () {
|
||||
return this.$themeLocaleConfig.algolia || this.$site.themeConfig.algolia || {}
|
||||
algolia() {
|
||||
return (
|
||||
this.$themeLocaleConfig.algolia ||
|
||||
this.$site.themeConfig.algolia ||
|
||||
{}
|
||||
);
|
||||
},
|
||||
|
||||
isAlgoliaSearch () {
|
||||
return this.algolia && this.algolia.apiKey && this.algolia.indexName
|
||||
}
|
||||
isAlgoliaSearch() {
|
||||
return (
|
||||
this.algolia && this.algolia.apiKey && this.algolia.indexName
|
||||
);
|
||||
},
|
||||
},
|
||||
|
||||
mounted () {
|
||||
const MOBILE_DESKTOP_BREAKPOINT = 719 // refer to config.styl
|
||||
const NAVBAR_VERTICAL_PADDING = parseInt(css(this.$el, 'paddingLeft')) + parseInt(css(this.$el, 'paddingRight'))
|
||||
mounted() {
|
||||
const MOBILE_DESKTOP_BREAKPOINT = 719; // refer to config.styl
|
||||
const NAVBAR_VERTICAL_PADDING =
|
||||
// eslint-disable-next-line radix
|
||||
parseInt(css(this.$el, "paddingLeft")) +
|
||||
// eslint-disable-next-line radix
|
||||
parseInt(css(this.$el, "paddingRight"));
|
||||
const handleLinksWrapWidth = () => {
|
||||
if (document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT) {
|
||||
this.linksWrapMaxWidth = null
|
||||
if (
|
||||
document.documentElement.clientWidth < MOBILE_DESKTOP_BREAKPOINT
|
||||
) {
|
||||
this.linksWrapMaxWidth = null;
|
||||
} else {
|
||||
this.linksWrapMaxWidth = this.$el.offsetWidth - NAVBAR_VERTICAL_PADDING
|
||||
- (this.$refs.siteName && this.$refs.siteName.offsetWidth || 0)
|
||||
this.linksWrapMaxWidth =
|
||||
this.$el.offsetWidth -
|
||||
NAVBAR_VERTICAL_PADDING -
|
||||
((this.$refs.siteName && this.$refs.siteName.offsetWidth) ||
|
||||
0);
|
||||
}
|
||||
}
|
||||
handleLinksWrapWidth()
|
||||
window.addEventListener('resize', handleLinksWrapWidth, false)
|
||||
}
|
||||
}
|
||||
};
|
||||
handleLinksWrapWidth();
|
||||
window.addEventListener("resize", handleLinksWrapWidth, false);
|
||||
},
|
||||
};
|
||||
|
||||
function css (el, property) {
|
||||
// NOTE: Known bug, will return 'auto' if style value is 'auto'
|
||||
const win = el.ownerDocument.defaultView
|
||||
function css(el, property) {
|
||||
// NOTE: Known bug, will return "auto" if style value is "auto"
|
||||
const win = el.ownerDocument.defaultView;
|
||||
// null means not to return pseudo styles
|
||||
return win.getComputedStyle(el, null)[property]
|
||||
return win.getComputedStyle(el, null)[property];
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
extend: "@vuepress/theme-default"
|
||||
extend: "@vuepress/theme-default",
|
||||
};
|
||||
|
@ -47,6 +47,6 @@ Visit our translation project [here](https://hosted.weblate.org/projects/tachiyo
|
||||
## 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).
|
||||
***
|
||||
<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' />
|
||||
<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" />
|
||||
</a>
|
@ -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. Select the **Source** you're migrating from.
|
||||
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.
|
||||
:::
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user