diff --git a/app/calibre-pages/package.json b/app/calibre-pages/package.json
index b868dd7..dd734ac 100644
--- a/app/calibre-pages/package.json
+++ b/app/calibre-pages/package.json
@@ -14,6 +14,7 @@
"@element-plus/icons-vue": "^2.3.1",
"element-plus": "^2.7.8",
"vue": "^3.4.29",
+ "vue-reader": "^1.2.15",
"vue-router": "^4.3.3"
},
"devDependencies": {
diff --git a/app/calibre-pages/pnpm-lock.yaml b/app/calibre-pages/pnpm-lock.yaml
index d80c383..3ead3a8 100644
--- a/app/calibre-pages/pnpm-lock.yaml
+++ b/app/calibre-pages/pnpm-lock.yaml
@@ -17,6 +17,9 @@ importers:
vue:
specifier: ^3.4.29
version: 3.4.34(typescript@5.5.4)
+ vue-reader:
+ specifier: ^1.2.15
+ version: 1.2.15(vue@3.4.34(typescript@5.5.4))
vue-router:
specifier: ^4.3.3
version: 4.4.0(vue@3.4.34(typescript@5.5.4))
@@ -384,6 +387,10 @@ packages:
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ '@types/localforage@0.0.34':
+ resolution: {integrity: sha512-tJxahnjm9dEI1X+hQSC5f2BSd/coZaqbIl1m3TCl0q9SVuC52XcXfV0XmoCU1+PmjyucuVITwoTnN8OlTbEXXA==}
+ deprecated: This is a stub types definition for localforage (https://github.com/localForage/localForage). localforage provides its own type definitions, so you don't need @types/localforage installed!
+
'@types/lodash-es@4.17.12':
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
@@ -393,10 +400,6 @@ packages:
'@types/node@22.1.0':
resolution: {integrity: sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==}
- '@types/vue@2.0.0':
- resolution: {integrity: sha512-WDElkBv/o4lVwu6wYHB06AXs4Xo2fwDjJUpvPRc1QQdzkUSiGFjrYuSCy8raxLE5FObgKq8ND7R5gSZTFLK60w==}
- deprecated: This is a stub types definition for vuejs (https://github.com/vuejs/vue). vuejs provides its own type definitions, so you don't need @types/vue installed!
-
'@types/web-bluetooth@0.0.16':
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
@@ -457,6 +460,10 @@ packages:
'@vueuse/shared@9.13.0':
resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
+ '@xmldom/xmldom@0.7.13':
+ resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==}
+ engines: {node: '>=10.0.0'}
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -533,6 +540,12 @@ packages:
confbox@0.1.7:
resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
+ core-js@3.38.0:
+ resolution: {integrity: sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -545,6 +558,10 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ d@1.0.2:
+ resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
+ engines: {node: '>=0.12'}
+
dayjs@1.11.12:
resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==}
@@ -573,6 +590,20 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
+ epubjs@0.3.93:
+ resolution: {integrity: sha512-c06pNSdBxcXv3dZSbXAVLE1/pmleRhOT6mXNZo6INKmvuKpYB65MwU/lO7830czCtjIiK9i+KR+3S+p0wtljrw==}
+
+ es5-ext@0.10.64:
+ resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==}
+ engines: {node: '>=0.10'}
+
+ es6-iterator@2.0.3:
+ resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
+
+ es6-symbol@3.1.4:
+ resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==}
+ engines: {node: '>=0.12'}
+
esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
@@ -628,6 +659,10 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
+ esniff@2.0.1:
+ resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==}
+ engines: {node: '>=0.10'}
+
espree@9.6.1:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -654,6 +689,12 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ event-emitter@0.3.5:
+ resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
+
+ ext@1.7.0:
+ resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
+
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
@@ -727,6 +768,9 @@ packages:
resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
engines: {node: '>= 4'}
+ immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+
immutable@4.3.7:
resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==}
@@ -765,6 +809,9 @@ packages:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -784,6 +831,9 @@ packages:
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ jszip@3.10.1:
+ resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
+
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
@@ -791,10 +841,19 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
+ lie@3.1.1:
+ resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==}
+
+ lie@3.3.0:
+ resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
+
local-pkg@0.5.0:
resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
engines: {node: '>=14'}
+ localforage@1.10.0:
+ resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==}
+
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -818,6 +877,9 @@ packages:
magic-string@0.30.10:
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
+ marks-pane@1.0.9:
+ resolution: {integrity: sha512-Ahs4oeG90tbdPWwAJkAAoHg2lRR8lAs9mZXETNPO9hYg3AkjUJBKi1NQ4aaIQZVGrig7c/3NUV1jANl8rFTeMg==}
+
memoize-one@6.0.0:
resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
@@ -850,6 +912,9 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ next-tick@1.1.0:
+ resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
+
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -875,6 +940,9 @@ packages:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
+ pako@1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -891,6 +959,9 @@ packages:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
+ path-webpack@0.0.3:
+ resolution: {integrity: sha512-AmeDxedoo5svf7aB3FYqSAKqMxys014lVKBzy1o/5vv9CtU7U4wgGWL1dA2o6MOzcD53ScN4Jmiq6VbtLz1vIQ==}
+
pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
@@ -925,6 +996,9 @@ packages:
engines: {node: '>=14'}
hasBin: true
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -932,6 +1006,9 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@@ -957,6 +1034,9 @@ packages:
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
sass@1.77.8:
resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==}
engines: {node: '>=14.0.0'}
@@ -970,6 +1050,9 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ setimmediate@1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -982,6 +1065,9 @@ packages:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -1023,6 +1109,9 @@ packages:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
+ type@2.7.3:
+ resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
+
typescript@5.5.4:
resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
engines: {node: '>=14.17'}
@@ -1117,6 +1206,15 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
+ vue-reader@1.2.15:
+ resolution: {integrity: sha512-kkBCm0Reqi0PRLOFxsaizDTeyMZ5C3+HIaJu6dLXnGteyYOFNkhwzN0HLntzaR6rLZiuc7E9iD2304UiV/rL5Q==}
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^2.0.0 || >=3.0.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
vue-router@4.4.0:
resolution: {integrity: sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==}
peerDependencies:
@@ -1374,6 +1472,10 @@ snapshots:
'@types/estree@1.0.5': {}
+ '@types/localforage@0.0.34':
+ dependencies:
+ localforage: 1.10.0
+
'@types/lodash-es@4.17.12':
dependencies:
'@types/lodash': 4.17.7
@@ -1384,12 +1486,6 @@ snapshots:
dependencies:
undici-types: 6.13.0
- '@types/vue@2.0.0(typescript@5.5.4)':
- dependencies:
- vue: 3.4.34(typescript@5.5.4)
- transitivePeerDependencies:
- - typescript
-
'@types/web-bluetooth@0.0.16': {}
'@ungap/structured-clone@1.2.0': {}
@@ -1483,6 +1579,8 @@ snapshots:
- '@vue/composition-api'
- vue
+ '@xmldom/xmldom@0.7.13': {}
+
acorn-jsx@5.3.2(acorn@8.12.1):
dependencies:
acorn: 8.12.1
@@ -1559,6 +1657,10 @@ snapshots:
confbox@0.1.7: {}
+ core-js@3.38.0: {}
+
+ core-util-is@1.0.3: {}
+
cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
@@ -1569,6 +1671,11 @@ snapshots:
csstype@3.1.3: {}
+ d@1.0.2:
+ dependencies:
+ es5-ext: 0.10.64
+ type: 2.7.3
+
dayjs@1.11.12: {}
debug@4.3.6:
@@ -1604,6 +1711,36 @@ snapshots:
entities@4.5.0: {}
+ epubjs@0.3.93:
+ dependencies:
+ '@types/localforage': 0.0.34
+ '@xmldom/xmldom': 0.7.13
+ core-js: 3.38.0
+ event-emitter: 0.3.5
+ jszip: 3.10.1
+ localforage: 1.10.0
+ lodash: 4.17.21
+ marks-pane: 1.0.9
+ path-webpack: 0.0.3
+
+ es5-ext@0.10.64:
+ dependencies:
+ es6-iterator: 2.0.3
+ es6-symbol: 3.1.4
+ esniff: 2.0.1
+ next-tick: 1.1.0
+
+ es6-iterator@2.0.3:
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ es6-symbol: 3.1.4
+
+ es6-symbol@3.1.4:
+ dependencies:
+ d: 1.0.2
+ ext: 1.7.0
+
esbuild@0.21.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.21.5
@@ -1713,6 +1850,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ esniff@2.0.1:
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ event-emitter: 0.3.5
+ type: 2.7.3
+
espree@9.6.1:
dependencies:
acorn: 8.12.1
@@ -1737,6 +1881,15 @@ snapshots:
esutils@2.0.3: {}
+ event-emitter@0.3.5:
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+
+ ext@1.7.0:
+ dependencies:
+ type: 2.7.3
+
fast-deep-equal@3.1.3: {}
fast-diff@1.3.0: {}
@@ -1810,6 +1963,8 @@ snapshots:
ignore@5.3.1: {}
+ immediate@3.0.6: {}
+
immutable@4.3.7: {}
import-fresh@3.3.0:
@@ -1840,6 +1995,8 @@ snapshots:
is-path-inside@3.0.3: {}
+ isarray@1.0.0: {}
+
isexe@2.0.0: {}
js-tokens@9.0.0: {}
@@ -1854,6 +2011,13 @@ snapshots:
json-stable-stringify-without-jsonify@1.0.1: {}
+ jszip@3.10.1:
+ dependencies:
+ lie: 3.3.0
+ pako: 1.0.11
+ readable-stream: 2.3.8
+ setimmediate: 1.0.5
+
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -1863,11 +2027,23 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
+ lie@3.1.1:
+ dependencies:
+ immediate: 3.0.6
+
+ lie@3.3.0:
+ dependencies:
+ immediate: 3.0.6
+
local-pkg@0.5.0:
dependencies:
mlly: 1.7.1
pkg-types: 1.1.3
+ localforage@1.10.0:
+ dependencies:
+ lie: 3.1.1
+
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
@@ -1888,6 +2064,8 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
+ marks-pane@1.0.9: {}
+
memoize-one@6.0.0: {}
merge2@1.4.1: {}
@@ -1918,6 +2096,8 @@ snapshots:
natural-compare@1.4.0: {}
+ next-tick@1.1.0: {}
+
normalize-path@3.0.0: {}
normalize-wheel-es@1.2.0: {}
@@ -1947,6 +2127,8 @@ snapshots:
dependencies:
p-limit: 3.1.0
+ pako@1.0.11: {}
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
@@ -1957,6 +2139,8 @@ snapshots:
path-key@3.1.1: {}
+ path-webpack@0.0.3: {}
+
pathe@1.1.2: {}
picocolors@1.0.1: {}
@@ -1988,10 +2172,22 @@ snapshots:
prettier@3.3.3: {}
+ process-nextick-args@2.0.1: {}
+
punycode@2.3.1: {}
queue-microtask@1.2.3: {}
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
readdirp@3.6.0:
dependencies:
picomatch: 2.3.1
@@ -2030,6 +2226,8 @@ snapshots:
dependencies:
queue-microtask: 1.2.3
+ safe-buffer@5.1.2: {}
+
sass@1.77.8:
dependencies:
chokidar: 3.6.0
@@ -2040,6 +2238,8 @@ snapshots:
semver@7.6.3: {}
+ setimmediate@1.0.5: {}
+
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
@@ -2048,6 +2248,10 @@ snapshots:
source-map-js@1.2.0: {}
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
strip-ansi@6.0.1:
dependencies:
ansi-regex: 5.0.1
@@ -2083,6 +2287,8 @@ snapshots:
type-fest@0.20.2: {}
+ type@2.7.3: {}
+
typescript@5.5.4: {}
ufo@1.5.4: {}
@@ -2181,6 +2387,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ vue-reader@1.2.15(vue@3.4.34(typescript@5.5.4)):
+ dependencies:
+ epubjs: 0.3.93
+ vue: 3.4.34(typescript@5.5.4)
+ vue-demi: 0.14.10(vue@3.4.34(typescript@5.5.4))
+
vue-router@4.4.0(vue@3.4.34(typescript@5.5.4)):
dependencies:
'@vue/devtools-api': 6.6.3
diff --git a/app/calibre-pages/src/components/MetadataEdit.vue b/app/calibre-pages/src/components/MetadataEdit.vue
index 72380b3..65bde58 100644
--- a/app/calibre-pages/src/components/MetadataEdit.vue
+++ b/app/calibre-pages/src/components/MetadataEdit.vue
@@ -9,92 +9,45 @@
-
- Full
-
-
-
- 新
- 旧
-
-
-
-
-
-
-
-
- 新
- 旧
-
+
+
-
-
- 新
- 旧
-
-
+
-
-
- 新
- 旧
-
-
+
-
-
- 新
- 旧
-
-
+
@@ -109,52 +62,34 @@
>
-
-
- 新
- 旧
-
-
-
-
-
-
-
-
- 新
- 旧
-
+
+
+
-
- 新
- 旧
-
+
+ 更新
+
diff --git a/app/calibre-pages/src/components/MetadataUpdate.vue b/app/calibre-pages/src/components/MetadataUpdate.vue
new file mode 100644
index 0000000..fcb9e6d
--- /dev/null
+++ b/app/calibre-pages/src/components/MetadataUpdate.vue
@@ -0,0 +1,425 @@
+
+
+
+
+
+
+ Full
+
+
+
+
+
+ 新
+ 旧
+
+
+
+
+
+
+
+
+
+
+
+ 新
+ 旧
+
+
+
+
+
+
+
+
+
+ 新
+ 旧
+
+
+
+
+
+
+
+
+
+ 新
+ 旧
+
+
+
+
+
+
+
+
+
+ 新
+ 旧
+
+
+
+
+
+ (form.rating = val * 2)"
+ show-score
+ text-color="#ff9900"
+ :max="5"
+ allow-half
+ :score-template="`${form.rating}分`"
+ >
+
+
+
+
+ 新
+ 旧
+
+
+
+
+
+
+
+
+
+
+
+ 新
+ 旧
+
+
+
+
+
+ 新
+ 旧
+
+
+
+
+
+
+
+
+
diff --git a/app/calibre-pages/src/router/index.ts b/app/calibre-pages/src/router/index.ts
index 29bde92..12f3ac2 100644
--- a/app/calibre-pages/src/router/index.ts
+++ b/app/calibre-pages/src/router/index.ts
@@ -1,21 +1,23 @@
-import { createRouter, createWebHistory } from 'vue-router'
+import {createRouter, createWebHistory} from 'vue-router'
import Home from '../views/Home.vue'
import Books from '../views/Books.vue'
import Search from '../views/Search.vue'
import Setting from '../views/Setting.vue'
import Detail from '../views/Detail.vue'
import BatchMeta from '../views/BatchMeta.vue'
+import ReadBook from '../views/ReadBook.vue'
const router = createRouter({
- history: createWebHistory(import.meta.env.BASE_URL),
- routes: [
- { path: '/', name: 'home', component: Home },
- { path: '/books', component: Books },
- { path: '/search', component: Search },
- { path: '/setting', component: Setting },
- { path: '/metadata/manager', component: BatchMeta },
- { path: '/detail/:id', component: Detail, props: true }
- ]
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes: [
+ {path: '/', name: 'home', component: Home},
+ {path: '/books', component: Books},
+ {path: '/search', component: Search},
+ {path: '/setting', component: Setting},
+ {path: '/metadata/manager', component: BatchMeta},
+ {path: '/detail/:id', component: Detail, props: true},
+ {path: '/read/:id', component: ReadBook, props: true},
+ ]
})
export default router
diff --git a/app/calibre-pages/src/views/Detail.vue b/app/calibre-pages/src/views/Detail.vue
index 8bf3005..7fc4f42 100644
--- a/app/calibre-pages/src/views/Detail.vue
+++ b/app/calibre-pages/src/views/Detail.vue
@@ -12,7 +12,7 @@
- 更新元数据
+ 更新
编辑
@@ -130,6 +130,9 @@
预览目录
+
+ 阅读
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file