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}
+
+
+
+
+ Do not close the tab when a download is in progress.
+
+
+
{#await chapters}
Loading chapters...
{:then chapters}
- {#each chapters.results as chapter}
- - {chapter.data.attributes.volume ? "Vol " + chapter.data.attributes.volume : ""} Chapter {chapter.data.attributes.chapter} {chapter.data.attributes.title}
+ {#each chapters.results.filter(c => c.data.attributes.translatedLanguage === "en") as chapter}
+ - prepare(chapter)}>
+ {chapter.data.attributes.volume ? "Vol " + chapter.data.attributes.volume : ""}
+ Chapter {chapter.data.attributes.chapter}
+ {chapter.data.attributes.title}
+ - Download - View
+
{/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