mirror of
https://github.com/koodo-reader/koodo-reader.git
synced 2026-06-19 13:20:50 -04:00
202 lines
5.1 KiB
HTML
202 lines
5.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<link rel="icon" href="%PUBLIC_URL%/favicon.png" />
|
|
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
|
<link rel="dns-prefetch" href="https://reader.960960.xyz" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<meta name="keywords" content="epub reader free koodo" />
|
|
<meta
|
|
itemprop="name"
|
|
content="Koodo Reader - Free Epub Reader for Windows, Mac and Web"
|
|
/>
|
|
<meta
|
|
itemprop="description"
|
|
content="Koodo Reader is an open-source epub reader with backup and restore support, runs on Windows, Mac and Web"
|
|
/>
|
|
|
|
<style>
|
|
#root {
|
|
height: 100%;
|
|
width: 100%;
|
|
}
|
|
.loading-cover {
|
|
position: absolute;
|
|
top: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
}
|
|
.logo-container {
|
|
width: 200px;
|
|
}
|
|
.loading-cover img {
|
|
width: 80px;
|
|
position: relative;
|
|
left: 50%;
|
|
top: 50%;
|
|
margin-left: -40px;
|
|
margin-top: -80px;
|
|
}
|
|
.cover-spinner {
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 50%;
|
|
margin-left: -20px;
|
|
margin-top: 40px;
|
|
}
|
|
.sk-chase {
|
|
width: 30px;
|
|
height: 30px;
|
|
animation: sk-chase 2.5s infinite linear both;
|
|
z-index: 20;
|
|
}
|
|
|
|
.sk-chase-dot {
|
|
width: 100%;
|
|
height: 100%;
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
animation: sk-chase-dot 2s infinite ease-in-out both;
|
|
}
|
|
|
|
.sk-chase-dot:before {
|
|
content: "";
|
|
display: block;
|
|
width: 25%;
|
|
height: 25%;
|
|
background-color: rgba(75, 75, 75, 1);
|
|
border-radius: 100%;
|
|
animation: sk-chase-dot-before 2s infinite ease-in-out both;
|
|
}
|
|
|
|
.sk-chase-dot:nth-child(1) {
|
|
animation-delay: -1.1s;
|
|
}
|
|
.sk-chase-dot:nth-child(2) {
|
|
animation-delay: -1s;
|
|
}
|
|
.sk-chase-dot:nth-child(3) {
|
|
animation-delay: -0.9s;
|
|
}
|
|
.sk-chase-dot:nth-child(4) {
|
|
animation-delay: -0.8s;
|
|
}
|
|
.sk-chase-dot:nth-child(5) {
|
|
animation-delay: -0.7s;
|
|
}
|
|
.sk-chase-dot:nth-child(6) {
|
|
animation-delay: -0.6s;
|
|
}
|
|
.sk-chase-dot:nth-child(1):before {
|
|
animation-delay: -1.1s;
|
|
}
|
|
.sk-chase-dot:nth-child(2):before {
|
|
animation-delay: -1s;
|
|
}
|
|
.sk-chase-dot:nth-child(3):before {
|
|
animation-delay: -0.9s;
|
|
}
|
|
.sk-chase-dot:nth-child(4):before {
|
|
animation-delay: -0.8s;
|
|
}
|
|
.sk-chase-dot:nth-child(5):before {
|
|
animation-delay: -0.7s;
|
|
}
|
|
.sk-chase-dot:nth-child(6):before {
|
|
animation-delay: -0.6s;
|
|
}
|
|
|
|
@keyframes sk-chase {
|
|
100% {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes sk-chase-dot {
|
|
80%,
|
|
100% {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes sk-chase-dot-before {
|
|
50% {
|
|
transform: scale(0.4);
|
|
}
|
|
100%,
|
|
0% {
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
</style>
|
|
<title>Koodo Reader</title>
|
|
</head>
|
|
<body>
|
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
<div class="loading-cover">
|
|
<img src="./favicon.png" alt="logo" class="loading-logo" />
|
|
<div class="cover-spinner">
|
|
<div class="sk-chase">
|
|
<div class="sk-chase-dot"></div>
|
|
<div class="sk-chase-dot"></div>
|
|
<div class="sk-chase-dot"></div>
|
|
<div class="sk-chase-dot"></div>
|
|
<div class="sk-chase-dot"></div>
|
|
<div class="sk-chase-dot"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="root"></div>
|
|
<canvas id="the-canvas"></canvas>
|
|
<script>
|
|
if (
|
|
document.location.href.indexOf("epub") > -1 ||
|
|
document.location.href.indexOf("pdf") > -1
|
|
) {
|
|
let coverLoading = document.querySelector(".loading-cover");
|
|
coverLoading && coverLoading.parentNode.removeChild(coverLoading);
|
|
}
|
|
</script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/JSZip/jszip.min.js"
|
|
></script>
|
|
<script type="text/javascript" src="%PUBLIC_URL%/lib/pdf/pdf.js"></script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/EpubJS/epub.min.js"
|
|
></script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/Dropbox/Dropbox-sdk.min.js"
|
|
></script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/Rangy/rangy-core.js"
|
|
></script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/Rangy/rangy-serializer.js"
|
|
></script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/Rangy/rangy-classapplier.js"
|
|
></script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/Rangy/rangy-highlighter.js"
|
|
></script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/Rangy/rangy-textrange.js"
|
|
></script>
|
|
<script
|
|
type="text/javascript"
|
|
src="%PUBLIC_URL%/lib/Hammer/hammer.min.js"
|
|
></script>
|
|
</body>
|
|
</html>
|