diff --git a/assets/__app.html b/assets/__app.html index b0d6eba..59b0183 100644 --- a/assets/__app.html +++ b/assets/__app.html @@ -14,6 +14,8 @@ + + diff --git a/package-lock.json b/package-lock.json index e7b1913..bb19dfd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,10 +7,15 @@ "": { "name": "svelte-app", "version": "1.0.0", + "dependencies": { + "fflate": "^0.6.10", + "streamsaver": "^2.0.5" + }, "devDependencies": { "@rollup/plugin-commonjs": "^19.0.0", "@rollup/plugin-node-resolve": "^13.0.0", "@roxi/routify": "^2.18.1", + "@types/streamsaver": "^2.0.0", "cross-env": "^7.0.3", "fs-extra": "^10.0.0", "nollup": "^0.16.4", @@ -1709,6 +1714,12 @@ "@types/node": "*" } }, + "node_modules/@types/streamsaver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/streamsaver/-/streamsaver-2.0.0.tgz", + "integrity": "sha512-TzUEZk30QmNaS6GAhcOnH/Cl2mO7HCFhQUr6GpzvuoFziFCxmvuyLftHW79agJpZvIrqti9jSiDHMgflUwbejg==", + "dev": true + }, "node_modules/abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -3050,6 +3061,11 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "node_modules/fflate": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==" + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -5695,6 +5711,11 @@ "node": ">=0.10.0" } }, + "node_modules/streamsaver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/streamsaver/-/streamsaver-2.0.5.tgz", + "integrity": "sha512-KIWtBvi8A6FiFZGNSyuIZRZM6C8AvnWTiCx/TYa7so420vC5sQwcBKkdqInuGWoWMfeWy/P+/cRqMtWVf4RW9w==" + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -8182,6 +8203,12 @@ "@types/node": "*" } }, + "@types/streamsaver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/streamsaver/-/streamsaver-2.0.0.tgz", + "integrity": "sha512-TzUEZk30QmNaS6GAhcOnH/Cl2mO7HCFhQUr6GpzvuoFziFCxmvuyLftHW79agJpZvIrqti9jSiDHMgflUwbejg==", + "dev": true + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -9229,6 +9256,11 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fflate": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==" + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -11265,6 +11297,11 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, + "streamsaver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/streamsaver/-/streamsaver-2.0.5.tgz", + "integrity": "sha512-KIWtBvi8A6FiFZGNSyuIZRZM6C8AvnWTiCx/TYa7so420vC5sQwcBKkdqInuGWoWMfeWy/P+/cRqMtWVf4RW9w==" + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", diff --git a/package.json b/package.json index 6a38bc4..a745a8e 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "@rollup/plugin-commonjs": "^19.0.0", "@rollup/plugin-node-resolve": "^13.0.0", "@roxi/routify": "^2.18.1", + "@types/streamsaver": "^2.0.0", "cross-env": "^7.0.3", "fs-extra": "^10.0.0", "nollup": "^0.16.4", @@ -54,5 +55,9 @@ "blacklist": [ "/example/modal/basic/4" ] + }, + "dependencies": { + "fflate": "^0.6.10", + "streamsaver": "^2.0.5" } } diff --git a/src/pages/[manga]/[chapter]/_layout.svelte b/src/pages/[manga]/[chapter]/_layout.svelte index 257c174..707fbbb 100644 --- a/src/pages/[manga]/[chapter]/_layout.svelte +++ b/src/pages/[manga]/[chapter]/_layout.svelte @@ -1,4 +1,7 @@ diff --git a/src/pages/[manga]/[chapter]/index.svelte b/src/pages/[manga]/[chapter]/index.svelte new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/[manga]/index.svelte b/src/pages/[manga]/index.svelte index 23be62c..a1a3c29 100644 --- a/src/pages/[manga]/index.svelte +++ b/src/pages/[manga]/index.svelte @@ -1,4 +1,8 @@ @@ -28,12 +180,31 @@

{manga.title.en}

+
+
+ +

+ {text} +

+
+ +

+ + Do not close the tab when a download is in progress. + +

+ {#await chapters} Loading chapters... {:then chapters}
    - {#each chapters.results as chapter} -
  1. {chapter.data.attributes.volume ? "Vol " + chapter.data.attributes.volume : ""} Chapter {chapter.data.attributes.chapter} {chapter.data.attributes.title}
  2. + {#each chapters.results.filter(c => c.data.attributes.translatedLanguage === "en") as chapter} +
  3. prepare(chapter)}> + {chapter.data.attributes.volume ? "Vol " + chapter.data.attributes.volume : ""} + Chapter {chapter.data.attributes.chapter} + {chapter.data.attributes.title} + - Download - View +
  4. {/each}
{/await} @@ -43,4 +214,46 @@ .hide-nums { list-style-type: disc; } + + .state { + border-radius: 10px; + border-width: 4px; + border-style: solid; + padding: 10px; + position: relative; + transition: all .3s; + } + + .state.idle { + background: rgb(140, 209, 255); + border-color: rgb(77, 184, 255); + } + + .state.active { + background: rgb(255, 255, 81); + border-color: yellow; + } + .state.error { + background: rgb(255, 103, 103); + border-color: rgb(255, 59, 59); + } + + .state p { + margin: 0; + z-index: 1; + position: relative; + } + + .progress { + z-index: 0; + position: absolute; + top: 0; + left: 0; + height: 100%; + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; + } + .state.active .progress { + background: rgb(140, 209, 255); + } \ No newline at end of file