init the awkward code
24
static/html/koodo/asset-manifest.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"files": {
|
||||
"main.css": "./static/css/main.1c469a44.chunk.css",
|
||||
"main.js": "./static/js/main.588b597d.chunk.js",
|
||||
"main.js.map": "./static/js/main.588b597d.chunk.js.map",
|
||||
"runtime-main.js": "./static/js/runtime-main.f02faa8b.js",
|
||||
"runtime-main.js.map": "./static/js/runtime-main.f02faa8b.js.map",
|
||||
"static/css/2.d1c82cca.chunk.css": "./static/css/2.d1c82cca.chunk.css",
|
||||
"static/js/2.3d8e3fcb.chunk.js": "./static/js/2.3d8e3fcb.chunk.js",
|
||||
"static/js/2.3d8e3fcb.chunk.js.map": "./static/js/2.3d8e3fcb.chunk.js.map",
|
||||
"index.html": "./index.html",
|
||||
"static/css/2.d1c82cca.chunk.css.map": "./static/css/2.d1c82cca.chunk.css.map",
|
||||
"static/css/main.1c469a44.chunk.css.map": "./static/css/main.1c469a44.chunk.css.map",
|
||||
"static/js/2.3d8e3fcb.chunk.js.LICENSE.txt": "./static/js/2.3d8e3fcb.chunk.js.LICENSE.txt",
|
||||
"static/media/style.css": "./static/media/icomoon.e405fca6.eot"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.f02faa8b.js",
|
||||
"static/css/2.d1c82cca.chunk.css",
|
||||
"static/js/2.3d8e3fcb.chunk.js",
|
||||
"static/css/main.1c469a44.chunk.css",
|
||||
"static/js/main.588b597d.chunk.js"
|
||||
]
|
||||
}
|
||||
83
static/html/koodo/assets/_cover.svg
Normal file
@@ -0,0 +1,83 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="209.817" height="255.149" viewBox="0 0 209.817 255.149">
|
||||
<defs>
|
||||
<linearGradient id="linear-gradient" x1="0.43" y1="0.005" x2="0.43" y2="0.577" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#dae0e6"/>
|
||||
<stop offset="1" stop-color="#eff1f3"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear-gradient-2" x1="0.5" y1="1.739" x2="0.038" y2="-0.34" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#536db5" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#0e284b" stop-opacity="0.212"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear-gradient-3" x1="1.146" y1="1" x2="0.038" y2="-0.34" xlink:href="#linear-gradient-2"/>
|
||||
</defs>
|
||||
<g id="组_664" data-name="组 664" transform="translate(-522.193 -235)">
|
||||
<path id="Rectangle_Copy" data-name="Rectangle Copy" d="M375.991,53.044v75.7H166.174V88.733S173.35,10.018,221.553,1.41c40.324-7.2,64.98,14.371,124.765,37.694C370.2,48.422,375.991,53.044,375.991,53.044Z" transform="translate(356.019 361.405)" opacity="0.61" fill="url(#linear-gradient)"/>
|
||||
<g id="shadow" transform="translate(732.01 449.861) rotate(180)">
|
||||
<path id="shadow-2" data-name="shadow" d="M0,6.851l74.9,4.264V0L5.082,2.309Z" transform="translate(74.905 11.125) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<path id="shadow-3" data-name="shadow" d="M0,6.851l74.733,4.274V0L3.142,2.309Z" transform="translate(74.905 11.125) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
|
||||
</g>
|
||||
<g id="shadow-4" data-name="shadow" transform="translate(640.334 443.1) rotate(180)">
|
||||
<ellipse id="shadow-5" data-name="shadow" cx="13.039" cy="1.564" rx="13.039" ry="1.564" transform="translate(26.079 3.129) rotate(180)" fill="url(#linear-gradient-3)" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<ellipse id="shadow-6" data-name="shadow" cx="13.039" cy="1.564" rx="13.039" ry="1.564" transform="translate(26.079 3.129) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
|
||||
</g>
|
||||
<path id="Path_39" data-name="Path 39" d="M6.519,2.9A17.045,17.045,0,0,1,8.58,13.985a110.13,110.13,0,0,0-.9,15.524H4.263L0,1.52S4.842-.31,6.519.046,6.519,2.9,6.519,2.9Z" transform="translate(688.045 411.621)" fill="#9ea4b8"/>
|
||||
<path id="Path_39_Copy" data-name="Path 39 Copy" d="M6.519,5.13A17.045,17.045,0,0,1,8.58,16.212a110.13,110.13,0,0,0-.9,15.524H4.263L0,3.747,7.909,0Z" transform="translate(671.956 408.855) rotate(13)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_17" data-name="Rectangle 17" d="M12.366,1.261,8.187,0,5.378,1.261l-3.956.412A1.564,1.564,0,0,0,.08,2.8h0A2.074,2.074,0,0,0,2.066,5.433H10.28a2.086,2.086,0,0,0,2.086-2.086Z" transform="translate(683.516 439.753)" fill="#302c48"/>
|
||||
<path id="Rectangle_17_Copy" data-name="Rectangle 17 Copy" d="M12.366,1.261,8.187,0,5.378,1.261l-3.956.412A1.564,1.564,0,0,0,.08,2.8h0A2.074,2.074,0,0,0,2.066,5.433H10.28a2.086,2.086,0,0,0,2.086-2.086Z" transform="translate(660.393 439.753)" fill="#302c48"/>
|
||||
<path id="Path_31" data-name="Path 31" d="M28.22,28.013V0H3.211L0,28.013H11.416L14.931,13.59l2.477,14.423Z" transform="translate(668.778 386.259)" fill="#302c48"/>
|
||||
<path id="Path_32" data-name="Path 32" d="M0,31.606c5.663-5.352,5.8-5.2,8.285-8.558,1.187-1.6,2.551-2.858,2.476-3.047C9.657,17.2,5.85,14.083,0,6.531L3.518,0c8.54,8.186,11.122,14.3,12.421,17.583a7.538,7.538,0,0,1,.727,3.178c-.623,4.119-6.189,8.878-16.281,14.235Z" transform="matrix(0.995, -0.105, 0.105, 0.995, 691.611, 346.91)" fill="#9ea4b8"/>
|
||||
<g id="single_thread" data-name="single thread" transform="translate(652.847 438.466) rotate(180)">
|
||||
<path id="Path_36" data-name="Path 36" d="M5.026,5.689S1.621,1.588,1.309.24C.565-.635,0,1.166,0,1.166s2.064,8.729,4.121,10.12,2.057,0,2.057,0Z" transform="translate(12.114 94.082) rotate(180)" fill="#9ea4b8"/>
|
||||
<path id="Path_37" data-name="Path 37" d="M2.959,92.753C-2.963,84.448-.274,67.6,13.549,50.567S41.9,15.265,24.441,3.792C18.934.173,9.14-1.836,1.394,2.32" transform="translate(32.451 92.753) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.8"/>
|
||||
<path id="Path_35" data-name="Path 35" d="M1.67,9.451c1.226.293,1.9-4.333.672-5.18S1.7-.155.661.005.13,1.537.08,2.516.444,9.158,1.67,9.451Z" transform="translate(7.703 91.268) rotate(180)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<path id="Path_32_Copy" data-name="Path 32 Copy" d="M0,31.606c5.663-5.352,5.8-5.2,8.285-8.558,1.187-1.6,2.551-2.858,2.476-3.047C9.657,17.2,5.85,14.083,0,6.531L3.518,0c8.54,8.186,11.122,14.3,12.421,17.583,1.7,4.3-3.17,10.839-15.554,17.412Z" transform="translate(678.209 350.365) rotate(82)" fill="#9ea4b8"/>
|
||||
<path id="Path_33" data-name="Path 33" d="M5.268,0a4.064,4.064,0,0,1-1.3,3.136A38.305,38.305,0,0,0,.216,6.351c-.772.98.772.98.772.98L.216,13.658l6.426,2.875L5.268,21.89h7.7l.969-5.356S11.695,6.475,10.283,3.782A6.473,6.473,0,0,0,5.268,0Z" transform="translate(678.243 322.536)" fill="#9ea4b8"/>
|
||||
<path id="Oval_8" data-name="Oval 8" d="M7.1,22.163c-3.271,0-3.727-3.855-5.639-6.358C0,13.9,0,12.288,0,9.643,0,3.523,1.339,0,7.1,0S17.531,4.961,17.531,11.081,10.724,19.484,7.1,22.163Z" transform="translate(682.73 317.162)" fill="#302c48"/>
|
||||
<ellipse id="Oval" cx="3.651" cy="3.39" rx="3.651" ry="3.39" transform="translate(685.026 315.858)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy" data-name="Oval Copy" cx="2.347" cy="2.179" rx="2.347" ry="2.179" transform="translate(688.787 315.858)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_2" data-name="Oval Copy 2" cx="3.651" cy="3.39" rx="3.651" ry="3.39" transform="translate(691.395 317.944)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_6" data-name="Oval Copy 6" cx="3.651" cy="3.39" rx="3.651" ry="3.39" transform="translate(693.481 321.595)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_3" data-name="Oval Copy 3" cx="1.826" cy="1.695" rx="1.826" ry="1.695" transform="translate(692.438 316.901)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_4" data-name="Oval Copy 4" cx="1.826" cy="1.695" rx="1.826" ry="1.695" transform="translate(683.617 317.944)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_5" data-name="Oval Copy 5" cx="1.826" cy="1.695" rx="1.826" ry="1.695" transform="translate(682.611 320.552)" fill="#302c48"/>
|
||||
<ellipse id="Oval_2" data-name="Oval 2" cx="2.086" cy="2.347" rx="2.086" ry="2.347" transform="translate(682.596 328.374)" fill="#9ea4b8"/>
|
||||
<path id="Path_30" data-name="Path 30" d="M41.642,12.2,30.545,1.914S25.2,0,21.73,0H16.6C14.418,0,8.2,1.914,8.2,1.914L0,12.2l5.2,7.388L10.9,12.2,4.548,47.468A45.2,45.2,0,0,0,16.6,49.616c5.6,0,13.95-2.086,13.95-2.086V14.715l4.1,4.875Z" transform="translate(665.208 342.976)" fill="#fcfcfc"/>
|
||||
<path id="Path_34" data-name="Path 34" d="M2.447,19.974,1.83,0,0,5.547Z" transform="translate(683.955 394.336)" fill="#3b3c45" opacity="0.195" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<path id="Path_38" data-name="Path 38" d="M0,22.833,6.7,0s-2.751.86-2.9,1.962S0,22.833,0,22.833Z" transform="translate(674.153 353.377)" fill="#deeaf4" opacity="0.55" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<g id="Thread" transform="translate(630.587 442.057) rotate(180)">
|
||||
<ellipse id="Oval_9_Copy" data-name="Oval 9 Copy" cx="1.826" cy="4.693" rx="1.826" ry="4.693" transform="translate(15.126 9.908) rotate(180)" fill="#302c48"/>
|
||||
<rect id="Rectangle" width="11.475" height="6.779" transform="translate(13.039 8.344) rotate(180)" fill="#302c48"/>
|
||||
<path id="Rectangle_Copy-2" data-name="Rectangle Copy" d="M5.737,0H1.043A5.086,5.086,0,0,0,0,3.342,5.535,5.535,0,0,0,1.043,6.779H5.737A6.316,6.316,0,0,1,4.694,3.534,8.089,8.089,0,0,1,5.737,0Z" transform="translate(10.953 8.344) rotate(180)" fill="#fff"/>
|
||||
<ellipse id="Oval_9" data-name="Oval 9" cx="1.826" cy="5.215" rx="1.826" ry="5.215" transform="translate(3.651 10.43) rotate(180)" fill="#686b89"/>
|
||||
</g>
|
||||
<g id="Kite" transform="translate(608.476 306.623) rotate(180)">
|
||||
<g id="Group_6" data-name="Group 6" transform="matrix(0.883, -0.469, 0.469, 0.883, 25.482, 51.157)">
|
||||
<path id="Combined_Shape" data-name="Combined Shape" d="M0,0V11H7.448Z" transform="translate(7.448 23.178) rotate(180)" fill="#52556e"/>
|
||||
<path id="Rectangle_18_Copy" data-name="Rectangle 18 Copy" d="M7.448,0V11H0Z" transform="translate(15.898 23.178) rotate(180)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_18_Copy_3" data-name="Rectangle 18 Copy 3" d="M7.448,0V11H0Z" transform="translate(0 0)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_18_Copy_2" data-name="Rectangle 18 Copy 2" d="M0,0V11H7.448Z" transform="translate(8.45 0)" fill="#52556e"/>
|
||||
</g>
|
||||
<g id="Group_9" data-name="Group 9" transform="translate(25.396 58.506)">
|
||||
<path id="Triangle_2" data-name="Triangle 2" d="M1.643,0,0,4.216H3.286Z" transform="translate(3.236 2.281) rotate(25)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_7" data-name="Triangle 2 Copy 7" d="M1.643,0,3.286,4.216H0Z" transform="translate(4.847 0.948) rotate(103)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<g id="Group_8" data-name="Group 8" transform="matrix(-1, 0.017, -0.017, -1, 50.028, 56.511)">
|
||||
<path id="Triangle_2_Copy_9" data-name="Triangle 2 Copy 9" d="M1.643,0,0,4.216H3.286Z" transform="translate(3.236 2.281) rotate(25)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_8" data-name="Triangle 2 Copy 8" d="M1.643,0,3.286,4.216H0Z" transform="translate(4.847 0.948) rotate(103)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<g id="Group_7" data-name="Group 7" transform="translate(27.588)">
|
||||
<path id="Path_41" data-name="Path 41" stroke="#fff" d="M13.543,0c0,1.8,4.37,9.632-7.009,19.578S.96,42.521,6.534,46.87" fill="none" transform="translate(18.406 46.87) rotate(180)" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3.24" opacity="0.7"/>
|
||||
<path id="Triangle_2-2" data-name="Triangle 2" d="M1.643,0,0,4.216H3.286Z" transform="matrix(-0.602, 0.799, -0.799, -0.602, 5.345, 37.583)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_7-2" data-name="Triangle 2 Copy 7" d="M1.643,0,3.286,4.216H0Z" transform="matrix(0.588, -0.809, 0.809, 0.588, 3.287, 39.59)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy" data-name="Triangle 2 Copy" d="M1.643,0,0,4.216H3.286Z" transform="translate(11.155 28.537) rotate(155)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_6" data-name="Triangle 2 Copy 6" d="M1.643,0,3.286,4.216H0Z" transform="matrix(0.914, -0.407, 0.407, 0.914, 8.296, 29.811)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_2" data-name="Triangle 2 Copy 2" d="M1.643,0,0,4.216H3.286Z" transform="translate(18.346 17.083) rotate(109)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_5" data-name="Triangle 2 Copy 5" d="M1.643,0,3.286,4.216H0Z" transform="matrix(0.407, -0.914, 0.914, 0.407, 16.98, 19.999)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_3" data-name="Triangle 2 Copy 3" d="M1.643,0,0,4.216H3.286Z" transform="translate(16.057 4.605) rotate(76)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_4" data-name="Triangle 2 Copy 4" d="M1.643,0,3.286,4.216H0Z" transform="translate(16.743 7.66) rotate(-97)" fill="#52556e"/>
|
||||
</g>
|
||||
<path id="Path_40" data-name="Path 40" d="M37.1,38.464c-6.851-.4-17.353-4.406-19.857-17.418S8.038,1.7,0,0" transform="translate(37.103 57.527) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.62"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
83
static/html/koodo/assets/_empty.svg
Normal file
@@ -0,0 +1,83 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="987.234" height="565.416" viewBox="0 0 987.234 565.416">
|
||||
<defs>
|
||||
<linearGradient id="linear-gradient" x1="0.43" y1="0.005" x2="0.43" y2="0.577" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#dae0e6"/>
|
||||
<stop offset="1" stop-color="#eff1f3"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear-gradient-2" x1="0.5" y1="1.739" x2="0.038" y2="-0.34" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#536db5" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#0e284b" stop-opacity="0.212"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear-gradient-3" x1="1.146" y1="1" x2="0.038" y2="-0.34" xlink:href="#linear-gradient-2"/>
|
||||
</defs>
|
||||
<g id="组_664" data-name="组 664" transform="translate(-295.755 -235)">
|
||||
<path id="Rectangle_Copy" data-name="Rectangle Copy" d="M924.7,139.541s5.11,66.414,0,195.94c-54.321,0-473.383,1.025-757.763,0-130.459.181-114.97.147-172,0s-55.024.014-55.2,0c34-94.858,111.065-117.526,141.341-136.925,37.1-23.772,186.425-66.258,276.359-88.634S458.856,26.1,570.367,3.674C663.653-15.09,720.693,41.121,859,101.9,914.256,126.178,924.7,139.541,924.7,139.541Z" transform="translate(356.019 464.479)" opacity="0.61" fill="url(#linear-gradient)"/>
|
||||
<g id="shadow" transform="translate(1382.42 711.827) rotate(180)">
|
||||
<path id="shadow-2" data-name="shadow" d="M0,17.362l166.231,9.463V2.158L11.279,7.283Z" transform="translate(268.27 26.847) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<path id="shadow-3" data-name="shadow" d="M0,17.362l165.85,9.485V2.158L6.973,7.283Z" transform="translate(268.27 26.847) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
|
||||
</g>
|
||||
<g id="shadow-4" data-name="shadow" transform="translate(1068.709 696.823) rotate(180)">
|
||||
<ellipse id="shadow-5" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="url(#linear-gradient-3)" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<ellipse id="shadow-6" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
|
||||
</g>
|
||||
<path id="Path_39" data-name="Path 39" d="M14.468,6.443a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,3.373S10.745-.688,14.468.1,14.468,6.443,14.468,6.443Z" transform="translate(1179.929 626.963)" fill="#9ea4b8"/>
|
||||
<path id="Path_39_Copy" data-name="Path 39 Copy" d="M14.468,11.386a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,8.316,17.552,0Z" transform="translate(1142.736 620.824) rotate(13)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_17" data-name="Rectangle 17" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1169.747 689.395)" fill="#302c48"/>
|
||||
<path id="Rectangle_17_Copy" data-name="Rectangle 17 Copy" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1116.502 689.395)" fill="#302c48"/>
|
||||
<path id="Path_31" data-name="Path 31" d="M62.628,62.167V0H7.125L0,62.167H25.335l7.8-32.008,5.5,32.008Z" transform="translate(1136.878 570.678)" fill="#302c48"/>
|
||||
<path id="Path_32" data-name="Path 32" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02c.7,1.767,1.927,4.976,1.613,7.052C35.6,55.212,23.25,65.773.853,77.662Z" transform="matrix(0.995, -0.105, 0.105, 0.995, 1190.725, 483.355)" fill="#9ea4b8"/>
|
||||
<g id="single_thread" data-name="single thread" transform="translate(1097.346 686.539) rotate(180)">
|
||||
<path id="Path_36" data-name="Path 36" d="M11.153,12.624S3.6,3.525,2.906.532C1.254-1.41,0,2.587,0,2.587S4.581,21.959,9.147,25.046s4.565,0,4.565,0Z" transform="translate(26.883 208.789) rotate(180)" fill="#9ea4b8"/>
|
||||
<path id="Path_37" data-name="Path 37" d="M6.567,205.841c-13.143-18.431-7.175-55.829,23.5-93.621S92.989,33.876,54.24,8.415C42.018.384,20.284-4.075,3.095,5.149" transform="translate(72.016 205.841) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.8"/>
|
||||
<path id="Path_35" data-name="Path 35" d="M3.706,20.974c2.721.651,4.213-9.617,1.492-11.5S3.768-.343,1.467.012.289,3.411.177,5.584.985,20.323,3.706,20.974Z" transform="translate(17.095 202.544) rotate(180)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<path id="Path_32_Copy" data-name="Path 32 Copy" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02,39.143,48.57,28.336,63.074.853,77.662Z" transform="translate(1156.074 491.021) rotate(82)" fill="#9ea4b8"/>
|
||||
<path id="Path_33" data-name="Path 33" d="M11.692,0S11.939,4.47,8.8,6.959C5.3,9.737,1.384,12.948.48,14.1-1.234,16.27,2.194,16.27,2.194,16.27L.48,30.311l14.26,6.381L11.692,48.578H28.776l2.151-11.887s-4.973-22.321-8.106-28.3C18.576.3,11.692,0,11.692,0Z" transform="translate(1157.71 429.263)" fill="#9ea4b8"/>
|
||||
<path id="Oval_8" data-name="Oval 8" d="M15.756,49.185c-7.26,0-8.271-8.555-12.515-14.11C.011,30.847,0,27.269,0,21.4,0,7.818,2.971,0,15.756,0s23.15,11.01,23.15,24.592S23.8,43.24,15.756,49.185Z" transform="translate(1171.017 417.337)" fill="#302c48"/>
|
||||
<ellipse id="Oval" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1172.883 414.444)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy" data-name="Oval Copy" cx="5.209" cy="4.836" rx="5.209" ry="4.836" transform="translate(1184.458 414.444)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_2" data-name="Oval Copy 2" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1190.246 419.073)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_6" data-name="Oval Copy 6" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1194.876 427.174)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_3" data-name="Oval Copy 3" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1192.561 416.758)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_4" data-name="Oval Copy 4" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1169.411 419.073)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_5" data-name="Oval Copy 5" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1167.096 424.859)" fill="#302c48"/>
|
||||
<ellipse id="Oval_2" data-name="Oval 2" cx="4.63" cy="5.208" rx="4.63" ry="5.208" transform="translate(1167.096 442.219)" fill="#9ea4b8"/>
|
||||
<path id="Path_30" data-name="Path 30" d="M92.413,27.082,67.785,4.247S55.934,0,48.224,0h-11.4C32,0,18.195,4.247,18.195,4.247L0,27.082l11.549,16.4,12.633-16.4-14.09,78.261s14.3,4.767,26.736,4.767,30.957-4.629,30.957-4.629V32.657l9.1,10.82Z" transform="translate(1132.132 474.623)" fill="#fcfcfc"/>
|
||||
<path id="Path_34" data-name="Path 34" d="M5.431,44.328,4.061,0,0,12.311Z" transform="translate(1170.112 588.604)" fill="#3b3c45" opacity="0.195" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<path id="Path_38" data-name="Path 38" d="M0,50.671,14.863,0s-6.1,1.908-6.442,4.355S0,50.671,0,50.671Z" transform="translate(1147.833 497.706)" fill="#deeaf4" opacity="0.55" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<g id="Thread" transform="translate(1046.717 694.508) rotate(180)">
|
||||
<ellipse id="Oval_9_Copy" data-name="Oval 9 Copy" cx="4.051" cy="10.416" rx="4.051" ry="10.416" transform="translate(33.567 21.989) rotate(180)" fill="#302c48"/>
|
||||
<rect id="Rectangle" width="25.465" height="15.045" transform="translate(28.937 18.517) rotate(180)" fill="#302c48"/>
|
||||
<path id="Rectangle_Copy-2" data-name="Rectangle Copy" d="M12.732,0H2.315S0,2.487,0,7.416a12.284,12.284,0,0,0,2.315,7.629H12.732a14.017,14.017,0,0,1-2.315-7.2A17.951,17.951,0,0,1,12.732,0Z" transform="translate(24.307 18.517) rotate(180)" fill="#fff"/>
|
||||
<ellipse id="Oval_9" data-name="Oval 9" cx="4.051" cy="11.573" rx="4.051" ry="11.573" transform="translate(8.102 23.146) rotate(180)" fill="#686b89"/>
|
||||
</g>
|
||||
<g id="Kite" transform="translate(993.463 393.948) rotate(180)">
|
||||
<g id="Group_6" data-name="Group 6" transform="matrix(0.883, -0.469, 0.469, 0.883, 56.551, 113.53)">
|
||||
<path id="Combined_Shape" data-name="Combined Shape" d="M0,0V24.41H16.529Z" transform="translate(16.529 51.438) rotate(180)" fill="#52556e"/>
|
||||
<path id="Rectangle_18_Copy" data-name="Rectangle 18 Copy" d="M16.529,0V24.41H0Z" transform="translate(35.281 51.438) rotate(180)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_18_Copy_3" data-name="Rectangle 18 Copy 3" d="M16.529,0V24.41H0Z" transform="translate(0 0)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_18_Copy_2" data-name="Rectangle 18 Copy 2" d="M0,0V24.41H16.529Z" transform="translate(18.752 0)" fill="#52556e"/>
|
||||
</g>
|
||||
<g id="Group_9" data-name="Group 9" transform="translate(56.359 129.838)">
|
||||
<path id="Triangle_2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_7" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<g id="Group_8" data-name="Group 8" transform="matrix(-1, 0.017, -0.017, -1, 111.023, 125.412)">
|
||||
<path id="Triangle_2_Copy_9" data-name="Triangle 2 Copy 9" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_8" data-name="Triangle 2 Copy 8" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<g id="Group_7" data-name="Group 7" transform="translate(61.224 0)">
|
||||
<path id="Path_41" data-name="Path 41" stroke="#fff" d="M30.055,0c0,3.984,9.7,21.376-15.555,43.447s-12.37,50.917,0,60.569" fill="none" transform="translate(40.847 104.016) rotate(180)" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3.24" opacity="0.7"/>
|
||||
<path id="Triangle_2-2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="matrix(-0.602, 0.799, -0.799, -0.602, 11.861, 83.405)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_7-2" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.588, -0.809, 0.809, 0.588, 7.295, 87.86)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy" data-name="Triangle 2 Copy" d="M3.646,0,0,9.356H7.293Z" transform="translate(24.755 63.33) rotate(155)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_6" data-name="Triangle 2 Copy 6" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.914, -0.407, 0.407, 0.914, 18.411, 66.157)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_2" data-name="Triangle 2 Copy 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(40.715 37.911) rotate(109)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_5" data-name="Triangle 2 Copy 5" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.407, -0.914, 0.914, 0.407, 37.683, 44.383)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_3" data-name="Triangle 2 Copy 3" d="M3.646,0,0,9.356H7.293Z" transform="translate(35.635 10.22) rotate(76)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_4" data-name="Triangle 2 Copy 4" d="M3.646,0,7.293,9.356H0Z" transform="translate(37.156 16.999) rotate(-97)" fill="#52556e"/>
|
||||
</g>
|
||||
<path id="Path_40" data-name="Path 40" d="M82.34,85.36c-15.2-.889-38.511-9.777-44.068-38.656S17.838,3.77,0,0" transform="translate(82.34 127.666) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.62"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
7
static/html/koodo/assets/cover.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="139.905" height="126.831" viewBox="0 0 139.905 126.831">
|
||||
<g id="组_752" data-name="组 752" transform="translate(23.124 -1.214)" opacity="0.41">
|
||||
<path id="路径_2306" data-name="路径 2306" d="M-23.071,108.481A19.456,19.456,0,0,1-18.21,95.647c5.884-6.992,9.892-14.88,11.043-24,1.791-13.9-1.023-26.562-10.489-37.307A20.116,20.116,0,0,1-23.114,20.01c.3-9.636,8.1-17.694,18.206-18.717,9-.9,18.163,5.884,20.124,14.965A19.275,19.275,0,0,1,11.038,33.4C5.112,40.433,1.019,48.321-.218,57.573-2.051,71.728.933,84.519,10.569,95.391c4.946,5.628,6.438,12.066,4.178,19.229-2.942,9.252-12.194,14.667-21.958,13.089C-16.249,126.217-23.071,117.946-23.071,108.481Z" transform="translate(0 0)" fill="#fff"/>
|
||||
<path id="路径_2307" data-name="路径 2307" d="M252.751,20.952a19.02,19.02,0,0,1-4.775,12.663c-5.926,7.035-10.02,14.965-11.171,24.175-1.791,13.9,1.066,26.562,10.489,37.307a20.3,20.3,0,0,1,5.457,14.326c-.256,9.636-8.016,17.694-18.163,18.675-9,.9-18.163-5.926-20.124-14.965a19.173,19.173,0,0,1,4.221-17.14c5.926-7.035,10.062-14.923,11.213-24.175,1.791-14.07-1.066-26.818-10.659-37.648-4.946-5.585-6.566-12.023-4.349-19.186a19.435,19.435,0,0,1,22.043-13.26C245.929,3.216,252.751,11.487,252.751,20.952Z" transform="translate(-135.975 -0.132)" fill="#fff"/>
|
||||
<path id="路径_2308" data-name="路径 2308" d="M96.9,124.617a18.8,18.8,0,1,1,18.632,18.888A18.662,18.662,0,0,1,96.9,124.617Z" transform="translate(-68.85 -60.052)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
BIN
static/html/koodo/assets/data (4).epub
Normal file
82
static/html/koodo/assets/empty.svg
Normal file
@@ -0,0 +1,82 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1371.37" height="565.416" viewBox="0 0 1371.37 565.416">
|
||||
<defs>
|
||||
<linearGradient id="linear-gradient" x1="0.43" y1="0.005" x2="0.43" y2="0.577" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#dae0e6"/>
|
||||
<stop offset="1" stop-color="#eff1f3"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear-gradient-2" x1="1.146" y1="1" x2="0.038" y2="-0.34" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#536db5" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#0e284b" stop-opacity="0.212"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="组_763" data-name="组 763" transform="translate(-295.755 -235)">
|
||||
<path id="Rectangle_Copy" data-name="Rectangle Copy" d="M1311.106,335.481H924.7c-54.321,0-473.383,1.025-757.763,0-130.459.181-114.97.147-172,0s-55.024.014-55.2,0c34-94.858,111.065-117.526,141.341-136.925,37.1-23.772,186.425-66.258,276.359-88.634S458.856,26.1,570.367,3.674C663.653-15.09,760.674,41.28,889.9,132.376c106.941,77.594,154.175,95.475,273.271,129.213S1311.106,335.481,1311.106,335.481Z" transform="translate(356.019 464.479)" opacity="0.61" fill="url(#linear-gradient)"/>
|
||||
<g id="shadow" transform="translate(1068.709 696.823) rotate(180)">
|
||||
<ellipse id="shadow-2" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<ellipse id="shadow-3" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
|
||||
</g>
|
||||
<path id="Path_39" data-name="Path 39" d="M14.468,6.443a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,3.373S10.745-.688,14.468.1,14.468,6.443,14.468,6.443Z" transform="translate(1179.929 626.963)" fill="#9ea4b8"/>
|
||||
<path id="Path_39_Copy" data-name="Path 39 Copy" d="M14.468,11.386a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,8.316,17.552,0Z" transform="translate(1142.736 620.824) rotate(13)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_17" data-name="Rectangle 17" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1169.747 689.395)" fill="#302c48"/>
|
||||
<path id="Rectangle_17_Copy" data-name="Rectangle 17 Copy" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1116.502 689.395)" fill="#302c48"/>
|
||||
<path id="Path_31" data-name="Path 31" d="M62.628,62.167V0H7.125L0,62.167H25.335l7.8-32.008,5.5,32.008Z" transform="translate(1136.878 570.678)" fill="#302c48"/>
|
||||
<path id="Path_32" data-name="Path 32" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02c.7,1.767,1.927,4.976,1.613,7.052C35.6,55.212,23.25,65.773.853,77.662Z" transform="matrix(0.995, -0.105, 0.105, 0.995, 1190.725, 483.355)" fill="#9ea4b8"/>
|
||||
<g id="single_thread" data-name="single thread" transform="translate(1097.346 686.539) rotate(180)">
|
||||
<path id="Path_36" data-name="Path 36" d="M11.153,12.624S3.6,3.525,2.906.532C1.254-1.41,0,2.587,0,2.587S4.581,21.959,9.147,25.046s4.565,0,4.565,0Z" transform="translate(26.883 208.789) rotate(180)" fill="#9ea4b8"/>
|
||||
<path id="Path_37" data-name="Path 37" d="M6.567,205.841c-13.143-18.431-7.175-55.829,23.5-93.621S92.989,33.876,54.24,8.415C42.018.384,20.284-4.075,3.095,5.149" transform="translate(72.016 205.841) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.8"/>
|
||||
<path id="Path_35" data-name="Path 35" d="M3.706,20.974c2.721.651,4.213-9.617,1.492-11.5S3.768-.343,1.467.012.289,3.411.177,5.584.985,20.323,3.706,20.974Z" transform="translate(17.095 202.544) rotate(180)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<path id="Path_32_Copy" data-name="Path 32 Copy" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02,39.143,48.57,28.336,63.074.853,77.662Z" transform="translate(1156.074 491.021) rotate(82)" fill="#9ea4b8"/>
|
||||
<path id="Path_33" data-name="Path 33" d="M11.692,0S11.939,4.47,8.8,6.959C5.3,9.737,1.384,12.948.48,14.1-1.234,16.27,2.194,16.27,2.194,16.27L.48,30.311l14.26,6.381L11.692,48.578H28.776l2.151-11.887s-4.973-22.321-8.106-28.3C18.576.3,11.692,0,11.692,0Z" transform="translate(1157.71 429.263)" fill="#9ea4b8"/>
|
||||
<path id="Oval_8" data-name="Oval 8" d="M15.756,49.185c-7.26,0-8.271-8.555-12.515-14.11C.011,30.847,0,27.269,0,21.4,0,7.818,2.971,0,15.756,0s23.15,11.01,23.15,24.592S23.8,43.24,15.756,49.185Z" transform="translate(1171.017 417.337)" fill="#302c48"/>
|
||||
<ellipse id="Oval" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1172.883 414.444)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy" data-name="Oval Copy" cx="5.209" cy="4.836" rx="5.209" ry="4.836" transform="translate(1184.458 414.444)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_2" data-name="Oval Copy 2" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1190.246 419.073)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_6" data-name="Oval Copy 6" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1194.876 427.174)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_3" data-name="Oval Copy 3" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1192.561 416.758)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_4" data-name="Oval Copy 4" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1169.411 419.073)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_5" data-name="Oval Copy 5" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1167.096 424.859)" fill="#302c48"/>
|
||||
<ellipse id="Oval_2" data-name="Oval 2" cx="4.63" cy="5.208" rx="4.63" ry="5.208" transform="translate(1167.096 442.219)" fill="#9ea4b8"/>
|
||||
<path id="Path_30" data-name="Path 30" d="M92.413,27.082,67.785,4.247S55.934,0,48.224,0h-11.4C32,0,18.195,4.247,18.195,4.247L0,27.082l11.549,16.4,12.633-16.4-14.09,78.261s14.3,4.767,26.736,4.767,30.957-4.629,30.957-4.629V32.657l9.1,10.82Z" transform="translate(1132.132 474.623)" fill="#fcfcfc"/>
|
||||
<path id="Path_34" data-name="Path 34" d="M5.431,44.328,4.061,0,0,12.311Z" transform="translate(1170.112 588.604)" fill="#3b3c45" opacity="0.195" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<path id="Path_38" data-name="Path 38" d="M0,50.671,14.863,0s-6.1,1.908-6.442,4.355S0,50.671,0,50.671Z" transform="translate(1147.833 497.706)" fill="#deeaf4" opacity="0.55" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<g id="Thread" transform="translate(1046.717 694.508) rotate(180)">
|
||||
<ellipse id="Oval_9_Copy" data-name="Oval 9 Copy" cx="4.051" cy="10.416" rx="4.051" ry="10.416" transform="translate(33.567 21.989) rotate(180)" fill="#302c48"/>
|
||||
<rect id="Rectangle" width="25.465" height="15.045" transform="translate(28.937 18.517) rotate(180)" fill="#302c48"/>
|
||||
<path id="Rectangle_Copy-2" data-name="Rectangle Copy" d="M12.732,0H2.315S0,2.487,0,7.416a12.284,12.284,0,0,0,2.315,7.629H12.732a14.017,14.017,0,0,1-2.315-7.2A17.951,17.951,0,0,1,12.732,0Z" transform="translate(24.307 18.517) rotate(180)" fill="#fff"/>
|
||||
<ellipse id="Oval_9" data-name="Oval 9" cx="4.051" cy="11.573" rx="4.051" ry="11.573" transform="translate(8.102 23.146) rotate(180)" fill="#686b89"/>
|
||||
</g>
|
||||
<g id="Kite" transform="translate(993.463 393.948) rotate(180)">
|
||||
<g id="Group_6" data-name="Group 6" transform="matrix(0.883, -0.469, 0.469, 0.883, 56.551, 113.53)">
|
||||
<path id="Combined_Shape" data-name="Combined Shape" d="M0,0V24.41H16.529Z" transform="translate(16.529 51.438) rotate(180)" fill="#52556e"/>
|
||||
<path id="Rectangle_18_Copy" data-name="Rectangle 18 Copy" d="M16.529,0V24.41H0Z" transform="translate(35.281 51.438) rotate(180)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_18_Copy_3" data-name="Rectangle 18 Copy 3" d="M16.529,0V24.41H0Z" transform="translate(0 0)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_18_Copy_2" data-name="Rectangle 18 Copy 2" d="M0,0V24.41H16.529Z" transform="translate(18.752 0)" fill="#52556e"/>
|
||||
</g>
|
||||
<g id="Group_9" data-name="Group 9" transform="translate(56.359 129.838)">
|
||||
<path id="Triangle_2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_7" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<g id="Group_8" data-name="Group 8" transform="matrix(-1, 0.017, -0.017, -1, 111.023, 125.412)">
|
||||
<path id="Triangle_2_Copy_9" data-name="Triangle 2 Copy 9" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_8" data-name="Triangle 2 Copy 8" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<g id="Group_7" data-name="Group 7" transform="translate(61.224 0)">
|
||||
<path id="Path_41" data-name="Path 41" d="M30.055,0c0,3.984,9.7,21.376-15.555,43.447s-12.37,50.917,0,60.569" transform="translate(40.847 104.016) rotate(180)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3.24" opacity="0.7"/>
|
||||
<path id="Triangle_2-2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="matrix(-0.602, 0.799, -0.799, -0.602, 11.861, 83.405)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_7-2" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.588, -0.809, 0.809, 0.588, 7.295, 87.86)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy" data-name="Triangle 2 Copy" d="M3.646,0,0,9.356H7.293Z" transform="translate(24.755 63.33) rotate(155)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_6" data-name="Triangle 2 Copy 6" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.914, -0.407, 0.407, 0.914, 18.411, 66.157)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_2" data-name="Triangle 2 Copy 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(40.715 37.911) rotate(109)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_5" data-name="Triangle 2 Copy 5" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.407, -0.914, 0.914, 0.407, 37.683, 44.383)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_3" data-name="Triangle 2 Copy 3" d="M3.646,0,0,9.356H7.293Z" transform="translate(35.635 10.22) rotate(76)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_4" data-name="Triangle 2 Copy 4" d="M3.646,0,7.293,9.356H0Z" transform="translate(37.156 16.999) rotate(-97)" fill="#52556e"/>
|
||||
</g>
|
||||
<path id="Path_40" data-name="Path 40" d="M82.34,85.36c-15.2-.889-38.511-9.777-44.068-38.656S17.838,3.77,0,0" transform="translate(82.34 127.666) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.62"/>
|
||||
</g>
|
||||
<g id="shadow-4" data-name="shadow" transform="translate(1296.024 708.416) rotate(180)">
|
||||
<ellipse id="shadow-5" data-name="shadow" cx="91.095" cy="6.269" rx="91.095" ry="6.269" transform="translate(182.19 12.537) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<ellipse id="shadow-6" data-name="shadow" cx="91.095" cy="6.269" rx="91.095" ry="6.269" transform="translate(182.19 12.537) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
82
static/html/koodo/assets/empty_light.svg
Normal file
@@ -0,0 +1,82 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1371.37" height="565.416" viewBox="0 0 1371.37 565.416">
|
||||
<defs>
|
||||
<linearGradient id="linear-gradient" x1="0.43" y1="0.005" x2="0.43" y2="0.577" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#dae0e6"/>
|
||||
<stop offset="1" stop-color="#eff1f3"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear-gradient-2" x1="1.146" y1="1" x2="0.038" y2="-0.34" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#536db5" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#0e284b" stop-opacity="0.212"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="组_763" data-name="组 763" transform="translate(-295.755 -235)">
|
||||
<path id="Rectangle_Copy" data-name="Rectangle Copy" d="M1311.106,335.481H924.7c-54.321,0-473.383,1.025-757.763,0-130.459.181-114.97.147-172,0s-55.024.014-55.2,0c34-94.858,111.065-117.526,141.341-136.925,37.1-23.772,186.425-66.258,276.359-88.634S458.856,26.1,570.367,3.674C663.653-15.09,760.674,41.28,889.9,132.376c106.941,77.594,154.175,95.475,273.271,129.213S1311.106,335.481,1311.106,335.481Z" transform="translate(356.019 464.479)" opacity="0.25" fill="url(#linear-gradient)"/>
|
||||
<g id="shadow" transform="translate(1068.709 696.823) rotate(180)">
|
||||
<ellipse id="shadow-2" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<ellipse id="shadow-3" data-name="shadow" cx="28.937" cy="3.472" rx="28.937" ry="3.472" transform="translate(57.875 6.944) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
|
||||
</g>
|
||||
<path id="Path_39" data-name="Path 39" d="M14.468,6.443a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,3.373S10.745-.688,14.468.1,14.468,6.443,14.468,6.443Z" transform="translate(1179.929 626.963)" fill="#9ea4b8"/>
|
||||
<path id="Path_39_Copy" data-name="Path 39 Copy" d="M14.468,11.386a37.827,37.827,0,0,1,4.573,24.593c-2.287,13.934-2,34.451-2,34.451H9.461L0,8.316,17.552,0Z" transform="translate(1142.736 620.824) rotate(13)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_17" data-name="Rectangle 17" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1169.747 689.395)" fill="#302c48"/>
|
||||
<path id="Rectangle_17_Copy" data-name="Rectangle 17 Copy" d="M27.444,2.8,18.17,0,11.934,2.8l-8.779.914a3.472,3.472,0,0,0-2.979,2.5h0a4.6,4.6,0,0,0,4.409,5.845H22.814a4.629,4.629,0,0,0,4.629-4.629Z" transform="translate(1116.502 689.395)" fill="#302c48"/>
|
||||
<path id="Path_31" data-name="Path 31" d="M62.628,62.167V0H7.125L0,62.167H25.335l7.8-32.008,5.5,32.008Z" transform="translate(1136.878 570.678)" fill="#302c48"/>
|
||||
<path id="Path_32" data-name="Path 32" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02c.7,1.767,1.927,4.976,1.613,7.052C35.6,55.212,23.25,65.773.853,77.662Z" transform="matrix(0.995, -0.105, 0.105, 0.995, 1190.725, 483.355)" fill="#9ea4b8"/>
|
||||
<g id="single_thread" data-name="single thread" transform="translate(1097.346 686.539) rotate(180)">
|
||||
<path id="Path_36" data-name="Path 36" d="M11.153,12.624S3.6,3.525,2.906.532C1.254-1.41,0,2.587,0,2.587S4.581,21.959,9.147,25.046s4.565,0,4.565,0Z" transform="translate(26.883 208.789) rotate(180)" fill="#9ea4b8"/>
|
||||
<path id="Path_37" data-name="Path 37" d="M6.567,205.841c-13.143-18.431-7.175-55.829,23.5-93.621S92.989,33.876,54.24,8.415C42.018.384,20.284-4.075,3.095,5.149" transform="translate(72.016 205.841) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.8"/>
|
||||
<path id="Path_35" data-name="Path 35" d="M3.706,20.974c2.721.651,4.213-9.617,1.492-11.5S3.768-.343,1.467.012.289,3.411.177,5.584.985,20.323,3.706,20.974Z" transform="translate(17.095 202.544) rotate(180)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<path id="Path_32_Copy" data-name="Path 32 Copy" d="M0,70.14C12.567,58.262,12.871,58.6,18.387,51.149c2.633-3.558,5.661-6.342,5.5-6.761C21.431,38.182,12.983,31.253,0,14.494L7.807,0C26.758,18.166,32.49,31.727,35.371,39.02,39.143,48.57,28.336,63.074.853,77.662Z" transform="translate(1156.074 491.021) rotate(82)" fill="#9ea4b8"/>
|
||||
<path id="Path_33" data-name="Path 33" d="M11.692,0S11.939,4.47,8.8,6.959C5.3,9.737,1.384,12.948.48,14.1-1.234,16.27,2.194,16.27,2.194,16.27L.48,30.311l14.26,6.381L11.692,48.578H28.776l2.151-11.887s-4.973-22.321-8.106-28.3C18.576.3,11.692,0,11.692,0Z" transform="translate(1157.71 429.263)" fill="#9ea4b8"/>
|
||||
<path id="Oval_8" data-name="Oval 8" d="M15.756,49.185c-7.26,0-8.271-8.555-12.515-14.11C.011,30.847,0,27.269,0,21.4,0,7.818,2.971,0,15.756,0s23.15,11.01,23.15,24.592S23.8,43.24,15.756,49.185Z" transform="translate(1171.017 417.337)" fill="#302c48"/>
|
||||
<ellipse id="Oval" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1172.883 414.444)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy" data-name="Oval Copy" cx="5.209" cy="4.836" rx="5.209" ry="4.836" transform="translate(1184.458 414.444)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_2" data-name="Oval Copy 2" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1190.246 419.073)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_6" data-name="Oval Copy 6" cx="8.102" cy="7.522" rx="8.102" ry="7.522" transform="translate(1194.876 427.174)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_3" data-name="Oval Copy 3" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1192.561 416.758)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_4" data-name="Oval Copy 4" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1169.411 419.073)" fill="#302c48"/>
|
||||
<ellipse id="Oval_Copy_5" data-name="Oval Copy 5" cx="4.051" cy="3.761" rx="4.051" ry="3.761" transform="translate(1167.096 424.859)" fill="#302c48"/>
|
||||
<ellipse id="Oval_2" data-name="Oval 2" cx="4.63" cy="5.208" rx="4.63" ry="5.208" transform="translate(1167.096 442.219)" fill="#9ea4b8"/>
|
||||
<path id="Path_30" data-name="Path 30" d="M92.413,27.082,67.785,4.247S55.934,0,48.224,0h-11.4C32,0,18.195,4.247,18.195,4.247L0,27.082l11.549,16.4,12.633-16.4-14.09,78.261s14.3,4.767,26.736,4.767,30.957-4.629,30.957-4.629V32.657l9.1,10.82Z" transform="translate(1132.132 474.623)" fill="#d6d6d6"/>
|
||||
<path id="Path_34" data-name="Path 34" d="M5.431,44.328,4.061,0,0,12.311Z" transform="translate(1170.112 588.604)" fill="#3b3c45" opacity="0.195" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<path id="Path_38" data-name="Path 38" d="M0,50.671,14.863,0s-6.1,1.908-6.442,4.355S0,50.671,0,50.671Z" transform="translate(1147.833 497.706)" fill="#deeaf4" opacity="0.55" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<g id="Thread" transform="translate(1046.717 694.508) rotate(180)">
|
||||
<ellipse id="Oval_9_Copy" data-name="Oval 9 Copy" cx="4.051" cy="10.416" rx="4.051" ry="10.416" transform="translate(33.567 21.989) rotate(180)" fill="#302c48"/>
|
||||
<rect id="Rectangle" width="25.465" height="15.045" transform="translate(28.937 18.517) rotate(180)" fill="#302c48"/>
|
||||
<path id="Rectangle_Copy-2" data-name="Rectangle Copy" d="M12.732,0H2.315S0,2.487,0,7.416a12.284,12.284,0,0,0,2.315,7.629H12.732a14.017,14.017,0,0,1-2.315-7.2A17.951,17.951,0,0,1,12.732,0Z" transform="translate(24.307 18.517) rotate(180)" fill="#cacaca"/>
|
||||
<ellipse id="Oval_9" data-name="Oval 9" cx="4.051" cy="11.573" rx="4.051" ry="11.573" transform="translate(8.102 23.146) rotate(180)" fill="#686b89"/>
|
||||
</g>
|
||||
<g id="Kite" transform="translate(993.463 393.948) rotate(180)">
|
||||
<g id="Group_6" data-name="Group 6" transform="matrix(0.883, -0.469, 0.469, 0.883, 56.551, 113.53)">
|
||||
<path id="Combined_Shape" data-name="Combined Shape" d="M0,0V24.41H16.529Z" transform="translate(16.529 51.438) rotate(180)" fill="#52556e"/>
|
||||
<path id="Rectangle_18_Copy" data-name="Rectangle 18 Copy" d="M16.529,0V24.41H0Z" transform="translate(35.281 51.438) rotate(180)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_18_Copy_3" data-name="Rectangle 18 Copy 3" d="M16.529,0V24.41H0Z" transform="translate(0 0)" fill="#9ea4b8"/>
|
||||
<path id="Rectangle_18_Copy_2" data-name="Rectangle 18 Copy 2" d="M0,0V24.41H16.529Z" transform="translate(18.752 0)" fill="#52556e"/>
|
||||
</g>
|
||||
<g id="Group_9" data-name="Group 9" transform="translate(56.359 129.838)">
|
||||
<path id="Triangle_2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_7" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<g id="Group_8" data-name="Group 8" transform="matrix(-1, 0.017, -0.017, -1, 111.023, 125.412)">
|
||||
<path id="Triangle_2_Copy_9" data-name="Triangle 2 Copy 9" d="M3.646,0,0,9.356H7.293Z" transform="translate(7.181 5.062) rotate(25)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_8" data-name="Triangle 2 Copy 8" d="M3.646,0,7.293,9.356H0Z" transform="translate(10.757 2.105) rotate(103)" fill="#9ea4b8"/>
|
||||
</g>
|
||||
<g id="Group_7" data-name="Group 7" transform="translate(61.224 0)">
|
||||
<path id="Path_41" data-name="Path 41" d="M30.055,0c0,3.984,9.7,21.376-15.555,43.447s-12.37,50.917,0,60.569" transform="translate(40.847 104.016) rotate(180)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3.24" opacity="0.7"/>
|
||||
<path id="Triangle_2-2" data-name="Triangle 2" d="M3.646,0,0,9.356H7.293Z" transform="matrix(-0.602, 0.799, -0.799, -0.602, 11.861, 83.405)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_7-2" data-name="Triangle 2 Copy 7" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.588, -0.809, 0.809, 0.588, 7.295, 87.86)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy" data-name="Triangle 2 Copy" d="M3.646,0,0,9.356H7.293Z" transform="translate(24.755 63.33) rotate(155)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_6" data-name="Triangle 2 Copy 6" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.914, -0.407, 0.407, 0.914, 18.411, 66.157)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_2" data-name="Triangle 2 Copy 2" d="M3.646,0,0,9.356H7.293Z" transform="translate(40.715 37.911) rotate(109)" fill="#52556e"/>
|
||||
<path id="Triangle_2_Copy_5" data-name="Triangle 2 Copy 5" d="M3.646,0,7.293,9.356H0Z" transform="matrix(0.407, -0.914, 0.914, 0.407, 37.683, 44.383)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_3" data-name="Triangle 2 Copy 3" d="M3.646,0,0,9.356H7.293Z" transform="translate(35.635 10.22) rotate(76)" fill="#9ea4b8"/>
|
||||
<path id="Triangle_2_Copy_4" data-name="Triangle 2 Copy 4" d="M3.646,0,7.293,9.356H0Z" transform="translate(37.156 16.999) rotate(-97)" fill="#52556e"/>
|
||||
</g>
|
||||
<path id="Path_40" data-name="Path 40" d="M82.34,85.36c-15.2-.889-38.511-9.777-44.068-38.656S17.838,3.77,0,0" transform="translate(82.34 127.666) rotate(180)" fill="none" stroke="#cdd4e0" stroke-miterlimit="10" stroke-width="1.62"/>
|
||||
</g>
|
||||
<g id="shadow-4" data-name="shadow" transform="translate(1296.024 708.416) rotate(180)">
|
||||
<ellipse id="shadow-5" data-name="shadow" cx="91.095" cy="6.269" rx="91.095" ry="6.269" transform="translate(182.19 12.537) rotate(180)" fill="url(#linear-gradient-2)" style="mix-blend-mode: multiply;isolation: isolate"/>
|
||||
<ellipse id="shadow-6" data-name="shadow" cx="91.095" cy="6.269" rx="91.095" ry="6.269" transform="translate(182.19 12.537) rotate(180)" fill="rgba(216,216,216,0.08)" style="mix-blend-mode: darken;isolation: isolate"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
BIN
static/html/koodo/assets/gradient-left.png
Normal file
|
After Width: | Height: | Size: 312 B |
BIN
static/html/koodo/assets/gradient-right.png
Normal file
|
After Width: | Height: | Size: 399 B |
BIN
static/html/koodo/assets/label.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
static/html/koodo/assets/label_light.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
17
static/html/koodo/assets/logo.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="156" height="109" viewBox="0 0 156 109">
|
||||
<defs>
|
||||
<filter id="koodo" x="0" y="0" width="156" height="88" filterUnits="userSpaceOnUse">
|
||||
<feOffset input="SourceAlpha"/>
|
||||
<feGaussianBlur stdDeviation="3" result="blur"/>
|
||||
<feFlood flood-opacity="0.302"/>
|
||||
<feComposite operator="in" in2="blur"/>
|
||||
<feComposite in="SourceGraphic"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="组_649" data-name="组 649" transform="translate(-40 -23)">
|
||||
<text id="可道阅读器" transform="translate(55 125)" fill="#4b4b4b" font-size="25" font-family="SourceHanSerifCN-Bold, Source Han Serif CN" font-weight="700"><tspan x="0" y="0">可道阅读器</tspan></text>
|
||||
<g transform="matrix(1, 0, 0, 1, 40, 23)" filter="url(#koodo)">
|
||||
<text id="koodo-2" data-name="koodo" transform="translate(12 65)" fill="#4b4b4b" font-size="56" font-family="Lobster-Regular, Lobster"><tspan x="0" y="0">koodo</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
74
static/html/koodo/assets/styles/blue.css
Normal file
@@ -0,0 +1,74 @@
|
||||
.delete-digest-button,
|
||||
.add-dialog-comfirm,
|
||||
.backup-page-backup-selector,
|
||||
.delete-dialog-comfirm,
|
||||
.book-item-config,
|
||||
.book-cover-item-config,
|
||||
.side-menu-selector-container,
|
||||
.download-desk-button,
|
||||
.edit-dialog-comfirm,
|
||||
.change-location-button,
|
||||
.token-dialog-comfirm,
|
||||
.new-version-open,
|
||||
.update-dialog-container-button,
|
||||
.import-from-local,
|
||||
.single-control-switch,
|
||||
.side-menu-selector-container,
|
||||
.previous-chapter-single-container,
|
||||
.next-chapter-single-container,
|
||||
.book-bookmark-link,
|
||||
.message-box-container,
|
||||
.only-local-icon {
|
||||
background-color: rgba(1, 121, 202, 1) !important;
|
||||
}
|
||||
|
||||
.header-search-box,
|
||||
input::-webkit-input-placeholder,
|
||||
input::-moz-placeholder,
|
||||
input::-ms-input-placeholder,
|
||||
textarea::-webkit-input-placeholder,
|
||||
textarea::-moz-placeholder,
|
||||
textarea::-ms-input-placeholder,
|
||||
.header-search-text,
|
||||
.card-list-item-show-more {
|
||||
color: rgba(1, 121, 202, 0.8) !important;
|
||||
}
|
||||
.single-control-container,
|
||||
.book-list-view {
|
||||
color: rgba(1, 121, 202, 1) !important;
|
||||
}
|
||||
.reading-progress-icon,
|
||||
.header-search-box,
|
||||
#jumpPage,
|
||||
#jumpChapter,
|
||||
#newTag {
|
||||
background-color: rgba(1, 121, 202, 0.1) !important;
|
||||
}
|
||||
.backup-page-close-icon:hover,
|
||||
.sidebar-list-icon:hover,
|
||||
.nav-close-icon:hover,
|
||||
.setting-close-container:hover,
|
||||
.side-menu-hover-container,
|
||||
.setting-dialog-location-title,
|
||||
.note-option:hover,
|
||||
.digest-option:hover,
|
||||
.translation-option:hover,
|
||||
.speaker-option:hover,
|
||||
.search-book-option:hover,
|
||||
.google-option:hover,
|
||||
.header-search-text:hover,
|
||||
.reader-setting-icon-container:hover,
|
||||
.setting-icon-container:hover,
|
||||
.animation-mask,
|
||||
.animation-mask-local,
|
||||
.copy-option:hover {
|
||||
background-color: rgba(1, 121, 202, 0.035) !important;
|
||||
}
|
||||
|
||||
.book-content-name,
|
||||
.book-subcontent-name,
|
||||
.book-bookmark-list,
|
||||
.nav-search-list-item,
|
||||
.sort-dialog-seperator {
|
||||
border-bottom: 1px solid rgba(1, 121, 202, 0.1) !important;
|
||||
}
|
||||
257
static/html/koodo/assets/styles/dark.css
Normal file
@@ -0,0 +1,257 @@
|
||||
body,
|
||||
.editor-box {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
background: rgba(47, 52, 55, 1);
|
||||
color: rgba(235, 235, 235, 1);
|
||||
}
|
||||
|
||||
.book-content-name,
|
||||
.booklist-shelf-list,
|
||||
.lang-setting-dropdown,
|
||||
.delete-tag-container,
|
||||
.setting-subtitle,
|
||||
.book-subcontent-name {
|
||||
color: rgba(235, 235, 235, 1);
|
||||
}
|
||||
|
||||
.add-dialog-shelf-list-box,
|
||||
.add-dialog-shelf-list-option,
|
||||
.add-dialog-new-shelf-box,
|
||||
.add-dialog-cancel,
|
||||
.delete-dialog-cancel,
|
||||
.edit-dialog-book-name-box,
|
||||
.edit-dialog-book-author-box,
|
||||
.edit-dialog-cancel,
|
||||
.tag-list-item,
|
||||
.token-dialog-cancel,
|
||||
.lang-setting-dropdown,
|
||||
.tag-list-item-new,
|
||||
.input-value,
|
||||
.import-from-cloud,
|
||||
.booklist-shelf-list,
|
||||
.token-dialog-token-box,
|
||||
.token-dialog-url-box,
|
||||
.token-dialog-username-box,
|
||||
.token-dialog-password-box,
|
||||
.general-setting-dropdown,
|
||||
.active-color,
|
||||
.delete-dialog-uncheck-icon,
|
||||
.next-chapter,
|
||||
.progress-slide-circle,
|
||||
.setting-dialog-location-title,
|
||||
.delete-dialog-uncheck-icon,
|
||||
.previous-chapter,
|
||||
.color-option,
|
||||
.line-option,
|
||||
.original-text-box,
|
||||
.trans-text-box,
|
||||
.token-dialog-link-text,
|
||||
.token-dialog-token-text,
|
||||
.nav-search-page-item {
|
||||
border: 2px solid rgba(235, 235, 235, 1);
|
||||
}
|
||||
|
||||
.header-search-box,
|
||||
input::-webkit-input-placeholder,
|
||||
input::-moz-placeholder,
|
||||
input::-ms-input-placeholder,
|
||||
textarea::-webkit-input-placeholder,
|
||||
textarea::-moz-placeholder,
|
||||
textarea::-ms-input-placeholder,
|
||||
.header-search-text {
|
||||
color: rgba(235, 235, 235, 0.8);
|
||||
}
|
||||
.delete-digest-button,
|
||||
.add-dialog-comfirm,
|
||||
.backup-page-backup-selector,
|
||||
.delete-dialog-comfirm,
|
||||
.book-item-config,
|
||||
.book-cover-item-config,
|
||||
.side-menu-selector-container,
|
||||
.download-desk-button,
|
||||
.edit-dialog-comfirm,
|
||||
.change-location-button,
|
||||
.token-dialog-comfirm,
|
||||
.new-version-open,
|
||||
.update-dialog-container-button,
|
||||
.import-from-local,
|
||||
.side-menu-selector-container,
|
||||
.previous-chapter-single-container,
|
||||
.next-chapter-single-container,
|
||||
.book-bookmark-link,
|
||||
.message-box-container,
|
||||
.only-local-icon,
|
||||
.popup-close {
|
||||
background-color: rgba(71, 76, 80, 1);
|
||||
color: rgba(235, 235, 235, 1);
|
||||
}
|
||||
|
||||
.reading-progress-icon,
|
||||
.header-search-box,
|
||||
#jumpPage,
|
||||
#jumpChapter,
|
||||
#newTag {
|
||||
background-color: rgba(235, 235, 235, 0.1);
|
||||
}
|
||||
|
||||
.backup-page-close-icon:hover,
|
||||
.sidebar-list-icon:hover,
|
||||
.nav-close-icon:hover,
|
||||
.setting-close-container:hover,
|
||||
.side-menu-hover-container,
|
||||
.setting-dialog-location-title,
|
||||
.note-option:hover,
|
||||
.digest-option:hover,
|
||||
.translation-option:hover,
|
||||
.speaker-option:hover,
|
||||
.search-book-option:hover,
|
||||
.google-option:hover,
|
||||
.header-search-text:hover,
|
||||
.reader-setting-icon-container:hover,
|
||||
.setting-icon-container:hover,
|
||||
.animation-mask,
|
||||
.animation-mask-local,
|
||||
.sort-by-category-list:hover,
|
||||
.sort-by-order-list:hover,
|
||||
.backup-page-backup:hover,
|
||||
.action-dialog-add:hover,
|
||||
.action-dialog-delete:hover,
|
||||
.action-dialog-edit:hover,
|
||||
.backup-page-next:hover,
|
||||
.book-manage-title:hover,
|
||||
.backup-page-list-item:hover,
|
||||
.restore-file:hover,
|
||||
Z .copy-option:hover {
|
||||
background-color: rgba(235, 235, 235, 0.035);
|
||||
}
|
||||
.drag-background {
|
||||
background: hsla(0, 0%, 0%, 0.5);
|
||||
}
|
||||
.action-dialog-container,
|
||||
.add-dialog-container,
|
||||
.backup-page-container,
|
||||
.delete-dialog-container,
|
||||
.download-desk-container,
|
||||
.edit-dialog-container,
|
||||
.loading-dialog,
|
||||
.setting-dialog-container,
|
||||
.token-dialog-container,
|
||||
.new-version,
|
||||
.sort-dialog-container,
|
||||
.popup-menu-box,
|
||||
.loading-page-cover,
|
||||
.loading-page-cover,
|
||||
.navigation-panel,
|
||||
.book-operation-panel,
|
||||
.progress-panel,
|
||||
.input-value,
|
||||
.tag-list-item-new,
|
||||
.tag-list-item,
|
||||
.setting-panel-parent {
|
||||
background: rgba(47, 52, 55, 1);
|
||||
box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.book-item-cover,
|
||||
.book-cover,
|
||||
.book-cover-item-cover,
|
||||
.book-item-list-cover {
|
||||
background: rgba(235, 235, 235, 0.1);
|
||||
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
.backup-page-backup-selector,
|
||||
.message-box-container {
|
||||
box-shadow: 0px 0px 12px rgba(75, 75, 75, 1);
|
||||
}
|
||||
|
||||
.add-bookmark-button,
|
||||
.exit-reading-button,
|
||||
.add-bookmark-button,
|
||||
.enter-fullscreen-button,
|
||||
.card-list-item-card,
|
||||
.navigation-header {
|
||||
box-shadow: 0px 0px 5px rgba(30, 30, 30, 1);
|
||||
}
|
||||
.background-color-circle,
|
||||
.background-box1,
|
||||
.background-box2,
|
||||
.background-box3 {
|
||||
box-shadow: 0px 0px 2px rgba(235, 235, 235, 0.18);
|
||||
}
|
||||
|
||||
.add-dialog-cancel,
|
||||
.delete-dialog-cancel,
|
||||
.edit-dialog-cancel,
|
||||
.loading-dialog,
|
||||
.lang-setting-dropdown,
|
||||
.token-dialog-cancel,
|
||||
.new-version,
|
||||
.popup-menu-box,
|
||||
.general-setting-dropdown,
|
||||
.card-list-item-card,
|
||||
.navigation-header,
|
||||
.import-from-cloud,
|
||||
.only-local-slider,
|
||||
.background,
|
||||
.single-control-button,
|
||||
.add-dialog-shelf-list-box,
|
||||
.add-dialog-new-shelf-box,
|
||||
.edit-dialog-book-name-box,
|
||||
.edit-dialog-book-author-box,
|
||||
.booklist-shelf-list,
|
||||
.progress-slide-circle {
|
||||
background: rgba(47, 52, 55, 1);
|
||||
}
|
||||
.single-control-switch,
|
||||
::-webkit-scrollbar-thumb,
|
||||
::-webkit-scrollbar-thumb:hover,
|
||||
.active-tag,
|
||||
.active-page,
|
||||
.sk-chase-dot:before {
|
||||
background-color: rgba(235, 235, 235, 1) !important;
|
||||
}
|
||||
.exit-reading-text,
|
||||
.add-bookmark-text,
|
||||
.token-dialog-token-text,
|
||||
.enter-fullscreen-text,
|
||||
.reading-progress-icon,
|
||||
.image-operation,
|
||||
.add-bookmark-icon,
|
||||
.exit-reading-icon,
|
||||
.message-box-icon,
|
||||
.active-icon,
|
||||
.active-selector,
|
||||
.enter-fullscreen-icon,
|
||||
.icon-popup,
|
||||
.token-dialog-link-text,
|
||||
.token-dialog-token-text,
|
||||
.delete-dialog-uncheck-icon,
|
||||
.book-bookmark-link,
|
||||
.general-setting-dropdown,
|
||||
#jumpPage,
|
||||
#jumpChapter,
|
||||
.add-dialog-shelf-list-box,
|
||||
.add-dialog-new-shelf-box,
|
||||
.edit-dialog-book-name-box,
|
||||
.edit-dialog-book-author-box,
|
||||
.card-list-item-show-more,
|
||||
.cover-banner,
|
||||
.book-more-action,
|
||||
.reading-progress-icon,
|
||||
.book-love-icon,
|
||||
input,
|
||||
.input-value {
|
||||
color: rgba(235, 235, 235, 1);
|
||||
}
|
||||
.book-content-name,
|
||||
.book-subcontent-name,
|
||||
.book-bookmark-list,
|
||||
.nav-search-list-item,
|
||||
.sort-dialog-seperator {
|
||||
border-bottom: 1px solid rgba(235, 235, 235, 0.5);
|
||||
}
|
||||
.popup-menu-triangle-up,
|
||||
.active-tag,
|
||||
.active-page,
|
||||
.popup-menu-triangle-down {
|
||||
color: rgba(47, 52, 55, 1) !important;
|
||||
}
|
||||
249
static/html/koodo/assets/styles/default.css
Normal file
@@ -0,0 +1,249 @@
|
||||
body,
|
||||
.editor-box {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
background: rgba(255, 255, 255, 1);
|
||||
color: rgba(75, 75, 75, 1);
|
||||
}
|
||||
|
||||
.book-content-name,
|
||||
.delete-tag-container,
|
||||
.setting-subtitle,
|
||||
.book-subcontent-name {
|
||||
color: rgba(75, 75, 75, 1);
|
||||
}
|
||||
.reading-progress-icon,
|
||||
.book-love-icon,
|
||||
.book-loved-icon,
|
||||
.zoom-in-icon,
|
||||
.zoom-out-icon,
|
||||
.save-icon,
|
||||
.clockwise-icon,
|
||||
.counterclockwise-icon,
|
||||
.book-more-action {
|
||||
text-shadow: 0px 0px 5px rgba(75, 75, 75, 0.3);
|
||||
}
|
||||
.add-dialog-shelf-list-box,
|
||||
.add-dialog-shelf-list-option,
|
||||
.add-dialog-new-shelf-box,
|
||||
.add-dialog-cancel,
|
||||
.delete-dialog-cancel,
|
||||
.edit-dialog-book-name-box,
|
||||
.edit-dialog-book-author-box,
|
||||
.edit-dialog-cancel,
|
||||
.tag-list-item,
|
||||
.token-dialog-cancel,
|
||||
.lang-setting-dropdown,
|
||||
.tag-list-item-new,
|
||||
.input-value,
|
||||
.import-from-cloud,
|
||||
.booklist-shelf-list,
|
||||
.token-dialog-token-box,
|
||||
.token-dialog-url-box,
|
||||
.token-dialog-username-box,
|
||||
.token-dialog-password-box,
|
||||
.general-setting-dropdown,
|
||||
.active-color,
|
||||
.delete-dialog-uncheck-icon,
|
||||
.next-chapter,
|
||||
.progress-slide-circle,
|
||||
.setting-dialog-location-title,
|
||||
.delete-dialog-uncheck-icon,
|
||||
.previous-chapter,
|
||||
.color-option,
|
||||
.original-text-box,
|
||||
.trans-text-box,
|
||||
.line-option,
|
||||
.token-dialog-link-text,
|
||||
.token-dialog-token-text,
|
||||
.nav-search-page-item {
|
||||
border: 2px solid rgba(75, 75, 75, 1);
|
||||
}
|
||||
.header-search-box,
|
||||
input::-webkit-input-placeholder,
|
||||
input::-moz-placeholder,
|
||||
input::-ms-input-placeholder,
|
||||
textarea::-webkit-input-placeholder,
|
||||
textarea::-moz-placeholder,
|
||||
textarea::-ms-input-placeholder,
|
||||
.header-search-text,
|
||||
.card-list-item-show-more,
|
||||
.token-dialog-link-text,
|
||||
.token-dialog-token-text {
|
||||
color: rgba(75, 75, 75, 0.8);
|
||||
}
|
||||
::-webkit-scrollbar-thumb,
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color: rgba(75, 75, 75, 0.5);
|
||||
}
|
||||
.delete-digest-button,
|
||||
.add-dialog-comfirm,
|
||||
.backup-page-backup-selector,
|
||||
.delete-dialog-comfirm,
|
||||
.book-item-config,
|
||||
.book-cover-item-config,
|
||||
.side-menu-selector-container,
|
||||
.download-desk-button,
|
||||
.edit-dialog-comfirm,
|
||||
.change-location-button,
|
||||
.token-dialog-comfirm,
|
||||
.new-version-open,
|
||||
.update-dialog-container-button,
|
||||
.import-from-local,
|
||||
.active-tag,
|
||||
.single-control-switch,
|
||||
.side-menu-selector-container,
|
||||
.previous-chapter-single-container,
|
||||
.next-chapter-single-container,
|
||||
.book-bookmark-link,
|
||||
.message-box-container,
|
||||
.popup-close,
|
||||
.only-local-icon,
|
||||
.popup-close,
|
||||
.active-page,
|
||||
.sk-chase-dot:before {
|
||||
background-color: rgba(75, 75, 75, 1) !important;
|
||||
color: rgba(255, 255, 255, 1) !important;
|
||||
}
|
||||
|
||||
.reading-progress-icon,
|
||||
.header-search-box,
|
||||
#jumpPage,
|
||||
#jumpChapter,
|
||||
#newTag {
|
||||
background-color: rgba(75, 75, 75, 0.1);
|
||||
}
|
||||
.backup-page-close-icon:hover,
|
||||
.sidebar-list-icon:hover,
|
||||
.nav-close-icon:hover,
|
||||
.setting-close-container:hover,
|
||||
.side-menu-hover-container,
|
||||
.setting-dialog-location-title,
|
||||
.note-option:hover,
|
||||
.digest-option:hover,
|
||||
.translation-option:hover,
|
||||
.speaker-option:hover,
|
||||
.backup-page-backup:hover,
|
||||
.search-book-option:hover,
|
||||
.google-option:hover,
|
||||
.header-search-text:hover,
|
||||
.reader-setting-icon-container:hover,
|
||||
.setting-icon-container:hover,
|
||||
.animation-mask,
|
||||
.animation-mask-local,
|
||||
.sort-by-category-list:hover,
|
||||
.sort-by-order-list:hover,
|
||||
.action-dialog-add:hover,
|
||||
.action-dialog-delete:hover,
|
||||
.action-dialog-edit:hover,
|
||||
.backup-page-next:hover,
|
||||
.backup-page-list-item:hover,
|
||||
.restore-file:hover,
|
||||
.book-manage-title:hover,
|
||||
.copy-option:hover {
|
||||
background-color: rgba(75, 75, 75, 0.035);
|
||||
}
|
||||
.drag-background {
|
||||
background: hsla(0, 0%, 100%, 0.5);
|
||||
}
|
||||
|
||||
.action-dialog-container,
|
||||
.add-dialog-container,
|
||||
.backup-page-container,
|
||||
.delete-dialog-container,
|
||||
.download-desk-container,
|
||||
.edit-dialog-container,
|
||||
.loading-dialog,
|
||||
.setting-dialog-container,
|
||||
.token-dialog-container,
|
||||
.new-version,
|
||||
.sort-dialog-container,
|
||||
.popup-menu-box,
|
||||
.loading-page-cover,
|
||||
.loading-page-cover,
|
||||
.navigation-panel,
|
||||
.book-operation-panel,
|
||||
.progress-panel,
|
||||
.setting-panel-parent {
|
||||
background: rgba(255, 255, 255, 1);
|
||||
box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.book-item-cover,
|
||||
.book-cover,
|
||||
.book-cover-item-cover,
|
||||
.book-item-list-cover {
|
||||
background: rgba(255, 255, 255, 1);
|
||||
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
.book-item-list {
|
||||
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
.backup-page-backup-selector,
|
||||
.message-box-container {
|
||||
box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.tag-list-item {
|
||||
background-color: white;
|
||||
}
|
||||
.add-bookmark-button,
|
||||
.exit-reading-button,
|
||||
.add-bookmark-button,
|
||||
.enter-fullscreen-button,
|
||||
.card-list-item-card,
|
||||
.navigation-header,
|
||||
.book-cover {
|
||||
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
.background-color-circle,
|
||||
.background-box1,
|
||||
.background-box2,
|
||||
.background-box3 {
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
|
||||
.add-dialog-cancel,
|
||||
.delete-dialog-cancel,
|
||||
.edit-dialog-cancel,
|
||||
.loading-dialog,
|
||||
.lang-setting-dropdown,
|
||||
.token-dialog-cancel,
|
||||
.new-version,
|
||||
.popup-menu-box,
|
||||
.general-setting-dropdown,
|
||||
.card-list-item-card,
|
||||
.navigation-header,
|
||||
.import-from-cloud,
|
||||
.only-local-slider,
|
||||
.single-control-button,
|
||||
.progress-slide-circle {
|
||||
background: rgba(255, 255, 255, 1);
|
||||
}
|
||||
.cover-banner,
|
||||
.exit-reading-text,
|
||||
.add-bookmark-text,
|
||||
.enter-fullscreen-text,
|
||||
.reading-progress-icon,
|
||||
.book-love-icon,
|
||||
.book-more-action,
|
||||
.image-operation,
|
||||
.popup-menu-triangle-up,
|
||||
.popup-menu-triangle-down,
|
||||
.add-bookmark-icon,
|
||||
.active-page,
|
||||
.exit-reading-icon,
|
||||
.message-box-icon,
|
||||
.active-icon,
|
||||
.active-selector,
|
||||
.enter-fullscreen-icon,
|
||||
.icon-popup,
|
||||
.delete-dialog-uncheck-icon,
|
||||
.book-bookmark-link {
|
||||
color: rgba(255, 255, 255, 1);
|
||||
}
|
||||
.book-content-name,
|
||||
.book-subcontent-name,
|
||||
.book-bookmark-list,
|
||||
.nav-search-list-item,
|
||||
.sort-dialog-seperator {
|
||||
border-bottom: 1px solid rgba(75, 75, 75, 0.1);
|
||||
}
|
||||
74
static/html/koodo/assets/styles/green.css
Normal file
@@ -0,0 +1,74 @@
|
||||
.delete-digest-button,
|
||||
.add-dialog-comfirm,
|
||||
.backup-page-backup-selector,
|
||||
.delete-dialog-comfirm,
|
||||
.book-item-config,
|
||||
.book-cover-item-config,
|
||||
.side-menu-selector-container,
|
||||
.download-desk-button,
|
||||
.edit-dialog-comfirm,
|
||||
.change-location-button,
|
||||
.token-dialog-comfirm,
|
||||
.new-version-open,
|
||||
.update-dialog-container-button,
|
||||
.import-from-local,
|
||||
.single-control-switch,
|
||||
.side-menu-selector-container,
|
||||
.previous-chapter-single-container,
|
||||
.next-chapter-single-container,
|
||||
.book-bookmark-link,
|
||||
.message-box-container,
|
||||
.only-local-icon {
|
||||
background-color: rgba(0, 143, 145, 1) !important;
|
||||
}
|
||||
|
||||
.header-search-box,
|
||||
input::-webkit-input-placeholder,
|
||||
input::-moz-placeholder,
|
||||
input::-ms-input-placeholder,
|
||||
textarea::-webkit-input-placeholder,
|
||||
textarea::-moz-placeholder,
|
||||
textarea::-ms-input-placeholder,
|
||||
.header-search-text,
|
||||
.card-list-item-show-more {
|
||||
color: rgba(0, 143, 145, 0.8) !important;
|
||||
}
|
||||
.single-control-container,
|
||||
.book-list-view {
|
||||
color: rgba(0, 143, 145, 1) !important;
|
||||
}
|
||||
.reading-progress-icon,
|
||||
.header-search-box,
|
||||
#jumpPage,
|
||||
#jumpChapter,
|
||||
#newTag {
|
||||
background-color: rgba(0, 143, 145, 0.1) !important;
|
||||
}
|
||||
.backup-page-close-icon:hover,
|
||||
.sidebar-list-icon:hover,
|
||||
.nav-close-icon:hover,
|
||||
.setting-close-container:hover,
|
||||
.side-menu-hover-container,
|
||||
.setting-dialog-location-title,
|
||||
.note-option:hover,
|
||||
.digest-option:hover,
|
||||
.translation-option:hover,
|
||||
.speaker-option:hover,
|
||||
.search-book-option:hover,
|
||||
.google-option:hover,
|
||||
.header-search-text:hover,
|
||||
.reader-setting-icon-container:hover,
|
||||
.setting-icon-container:hover,
|
||||
.animation-mask,
|
||||
.animation-mask-local,
|
||||
.copy-option:hover {
|
||||
background-color: rgba(0, 143, 145, 0.035) !important;
|
||||
}
|
||||
|
||||
.book-content-name,
|
||||
.book-subcontent-name,
|
||||
.book-bookmark-list,
|
||||
.nav-search-list-item,
|
||||
.sort-dialog-seperator {
|
||||
border-bottom: 1px solid rgba(0, 143, 145, 0.1) !important;
|
||||
}
|
||||
74
static/html/koodo/assets/styles/purple.css
Normal file
@@ -0,0 +1,74 @@
|
||||
.delete-digest-button,
|
||||
.add-dialog-comfirm,
|
||||
.backup-page-backup-selector,
|
||||
.delete-dialog-comfirm,
|
||||
.book-item-config,
|
||||
.book-cover-item-config,
|
||||
.side-menu-selector-container,
|
||||
.download-desk-button,
|
||||
.edit-dialog-comfirm,
|
||||
.change-location-button,
|
||||
.token-dialog-comfirm,
|
||||
.new-version-open,
|
||||
.update-dialog-container-button,
|
||||
.import-from-local,
|
||||
.single-control-switch,
|
||||
.side-menu-selector-container,
|
||||
.previous-chapter-single-container,
|
||||
.next-chapter-single-container,
|
||||
.book-bookmark-link,
|
||||
.message-box-container,
|
||||
.only-local-icon {
|
||||
background-color: rgba(104, 103, 209, 1) !important;
|
||||
}
|
||||
|
||||
.header-search-box,
|
||||
input::-webkit-input-placeholder,
|
||||
input::-moz-placeholder,
|
||||
input::-ms-input-placeholder,
|
||||
textarea::-webkit-input-placeholder,
|
||||
textarea::-moz-placeholder,
|
||||
textarea::-ms-input-placeholder,
|
||||
.header-search-text,
|
||||
.card-list-item-show-more {
|
||||
color: rgba(104, 103, 209, 0.8) !important;
|
||||
}
|
||||
.single-control-container,
|
||||
.book-list-view {
|
||||
color: rgba(104, 103, 209, 1) !important;
|
||||
}
|
||||
.reading-progress-icon,
|
||||
.header-search-box,
|
||||
#jumpPage,
|
||||
#jumpChapter,
|
||||
#newTag {
|
||||
background-color: rgba(104, 103, 209, 0.1) !important;
|
||||
}
|
||||
.backup-page-close-icon:hover,
|
||||
.sidebar-list-icon:hover,
|
||||
.nav-close-icon:hover,
|
||||
.setting-close-container:hover,
|
||||
.side-menu-hover-container,
|
||||
.setting-dialog-location-title,
|
||||
.note-option:hover,
|
||||
.digest-option:hover,
|
||||
.translation-option:hover,
|
||||
.speaker-option:hover,
|
||||
.search-book-option:hover,
|
||||
.google-option:hover,
|
||||
.header-search-text:hover,
|
||||
.reader-setting-icon-container:hover,
|
||||
.setting-icon-container:hover,
|
||||
.animation-mask,
|
||||
.animation-mask-local,
|
||||
.copy-option:hover {
|
||||
background-color: rgba(104, 103, 209, 0.035) !important;
|
||||
}
|
||||
|
||||
.book-content-name,
|
||||
.book-subcontent-name,
|
||||
.book-bookmark-list,
|
||||
.nav-search-list-item,
|
||||
.sort-dialog-seperator {
|
||||
border-bottom: 1px solid rgba(104, 103, 209, 0.1) !important;
|
||||
}
|
||||
74
static/html/koodo/assets/styles/red.css
Normal file
@@ -0,0 +1,74 @@
|
||||
.delete-digest-button,
|
||||
.add-dialog-comfirm,
|
||||
.backup-page-backup-selector,
|
||||
.delete-dialog-comfirm,
|
||||
.book-item-config,
|
||||
.book-cover-item-config,
|
||||
.side-menu-selector-container,
|
||||
.download-desk-button,
|
||||
.edit-dialog-comfirm,
|
||||
.change-location-button,
|
||||
.token-dialog-comfirm,
|
||||
.new-version-open,
|
||||
.update-dialog-container-button,
|
||||
.import-from-local,
|
||||
.single-control-switch,
|
||||
.side-menu-selector-container,
|
||||
.previous-chapter-single-container,
|
||||
.next-chapter-single-container,
|
||||
.book-bookmark-link,
|
||||
.message-box-container,
|
||||
.only-local-icon {
|
||||
background-color: rgba(241, 100, 100, 1) !important;
|
||||
}
|
||||
|
||||
.header-search-box,
|
||||
input::-webkit-input-placeholder,
|
||||
input::-moz-placeholder,
|
||||
input::-ms-input-placeholder,
|
||||
textarea::-webkit-input-placeholder,
|
||||
textarea::-moz-placeholder,
|
||||
textarea::-ms-input-placeholder,
|
||||
.header-search-text,
|
||||
.card-list-item-show-more {
|
||||
color: rgba(241, 100, 100, 0.8) !important;
|
||||
}
|
||||
.single-control-container,
|
||||
.book-list-view {
|
||||
color: rgba(241, 100, 100, 1) !important;
|
||||
}
|
||||
.reading-progress-icon,
|
||||
.header-search-box,
|
||||
#jumpPage,
|
||||
#jumpChapter,
|
||||
#newTag {
|
||||
background-color: rgba(241, 100, 100, 0.1) !important;
|
||||
}
|
||||
.backup-page-close-icon:hover,
|
||||
.sidebar-list-icon:hover,
|
||||
.nav-close-icon:hover,
|
||||
.setting-close-container:hover,
|
||||
.side-menu-hover-container,
|
||||
.setting-dialog-location-title,
|
||||
.note-option:hover,
|
||||
.digest-option:hover,
|
||||
.translation-option:hover,
|
||||
.speaker-option:hover,
|
||||
.search-book-option:hover,
|
||||
.google-option:hover,
|
||||
.header-search-text:hover,
|
||||
.reader-setting-icon-container:hover,
|
||||
.setting-icon-container:hover,
|
||||
.animation-mask,
|
||||
.animation-mask-local,
|
||||
.copy-option:hover {
|
||||
background-color: rgba(241, 100, 100, 0.035) !important;
|
||||
}
|
||||
|
||||
.book-content-name,
|
||||
.book-subcontent-name,
|
||||
.book-bookmark-list,
|
||||
.nav-search-list-item,
|
||||
.sort-dialog-seperator {
|
||||
border-bottom: 1px solid rgba(241, 100, 100, 0.1) !important;
|
||||
}
|
||||
BIN
static/html/koodo/favicon.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
1
static/html/koodo/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.png"/><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%}</style><title>Koodo Reader</title><link href="./static/css/2.d1c82cca.chunk.css" rel="stylesheet"><link href="./static/css/main.1c469a44.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><canvas id="the-canvas"></canvas><script>var on_import_click=async()=>{},import_book=async o=>{console.log(o),await getMd5WithBrowser(o)},export_book=async o=>{},open_url=o=>{}</script><script type="text/javascript" src="./lib/JSZip/jszip.min.js"></script><script type="text/javascript" src="./lib/kookit/kookit.umd.js"></script><script type="text/javascript" src="./lib/marked/marked.js"></script><script type="text/javascript" src="./lib/EpubJS/epub.min.js"></script><script type="text/javascript" src="./lib/pdf/build/pdf.js"></script><script type="text/javascript" src="./lib/Dropbox/Dropbox-sdk.min.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-core.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-serializer.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-classapplier.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-highlighter.js"></script><script type="text/javascript" src="./lib/Rangy/rangy-textrange.js"></script><script type="text/javascript" src="./lib/Hammer/hammer.min.js"></script><script type="text/javascript" src="./lib/unrar/unrar.js"></script><script type="text/javascript" src="./lib/djvu/djvu.js"></script><script type="text/javascript" src="./lib/djvu/djvu_viewer.js"></script><script type="text/javascript" src="./lib/mammoth/mammoth.browser.min.js"></script><script>!function(e){function r(r){for(var n,l,a=r[0],f=r[1],i=r[2],c=0,s=[];c<a.length;c++)l=a[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var f=t[a];0!==o[f]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="./";var a=this["webpackJsonpkoodo-reader"]=this["webpackJsonpkoodo-reader"]||[],f=a.push.bind(a);a.push=r,a=a.slice();for(var i=0;i<a.length;i++)r(a[i]);var p=f;t()}([])</script><script src="./static/js/2.3d8e3fcb.chunk.js"></script><script src="./static/js/main.588b597d.chunk.js"></script></body></html>
|
||||
1
static/html/koodo/lib/Dropbox/Dropbox-sdk.min.js
vendored
Normal file
1
static/html/koodo/lib/EpubJS/epub.min.js
vendored
Normal file
7
static/html/koodo/lib/Hammer/hammer.min.js
vendored
Normal file
15
static/html/koodo/lib/JSZip/jszip.min.js
vendored
Normal file
1103
static/html/koodo/lib/Rangy/rangy-classapplier.js
Normal file
3845
static/html/koodo/lib/Rangy/rangy-core.js
Normal file
784
static/html/koodo/lib/Rangy/rangy-highlighter.js
Normal file
@@ -0,0 +1,784 @@
|
||||
/**
|
||||
* Highlighter module for Rangy, a cross-browser JavaScript range and selection library
|
||||
* https://github.com/timdown/rangy
|
||||
*
|
||||
* Depends on Rangy core, ClassApplier and optionally TextRange modules.
|
||||
*
|
||||
* Copyright 2015, Tim Down
|
||||
* Licensed under the MIT license.
|
||||
* Version: 1.3.0
|
||||
* Build date: 10 May 2015
|
||||
*/
|
||||
(function (factory, root) {
|
||||
if (typeof define == "function" && define.amd) {
|
||||
// AMD. Register as an anonymous module with a dependency on Rangy.
|
||||
define(["./rangy-core"], factory);
|
||||
} else if (typeof module != "undefined" && typeof exports == "object") {
|
||||
// Node/CommonJS style
|
||||
module.exports = factory(require("rangy"));
|
||||
} else {
|
||||
// No AMD or CommonJS support so we use the rangy property of root (probably the global variable)
|
||||
factory(root.rangy);
|
||||
}
|
||||
})(function (rangy) {
|
||||
rangy.createModule("Highlighter", ["ClassApplier"], function (api, module) {
|
||||
var dom = api.dom;
|
||||
var contains = dom.arrayContains;
|
||||
var getBody = dom.getBody;
|
||||
var createOptions = api.util.createOptions;
|
||||
var forEach = api.util.forEach;
|
||||
var nextHighlightId = 1;
|
||||
|
||||
// Puts highlights in order, last in document first.
|
||||
function compareHighlights(h1, h2) {
|
||||
return h1.characterRange.start - h2.characterRange.start;
|
||||
}
|
||||
|
||||
function getContainerElement(doc, id) {
|
||||
return id ? doc.getElementById(id) : getBody(doc);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
var highlighterTypes = {};
|
||||
|
||||
function HighlighterType(type, converterCreator) {
|
||||
this.type = type;
|
||||
this.converterCreator = converterCreator;
|
||||
}
|
||||
|
||||
HighlighterType.prototype.create = function () {
|
||||
var converter = this.converterCreator();
|
||||
converter.type = this.type;
|
||||
return converter;
|
||||
};
|
||||
|
||||
function registerHighlighterType(type, converterCreator) {
|
||||
highlighterTypes[type] = new HighlighterType(type, converterCreator);
|
||||
}
|
||||
|
||||
function getConverter(type) {
|
||||
var highlighterType = highlighterTypes[type];
|
||||
if (highlighterType instanceof HighlighterType) {
|
||||
return highlighterType.create();
|
||||
} else {
|
||||
throw new Error("Highlighter type '" + type + "' is not valid");
|
||||
}
|
||||
}
|
||||
|
||||
api.registerHighlighterType = registerHighlighterType;
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
function CharacterRange(start, end) {
|
||||
this.start = start;
|
||||
this.end = end;
|
||||
}
|
||||
|
||||
CharacterRange.prototype = {
|
||||
intersects: function (charRange) {
|
||||
return this.start < charRange.end && this.end > charRange.start;
|
||||
},
|
||||
|
||||
isContiguousWith: function (charRange) {
|
||||
return this.start == charRange.end || this.end == charRange.start;
|
||||
},
|
||||
|
||||
union: function (charRange) {
|
||||
return new CharacterRange(
|
||||
Math.min(this.start, charRange.start),
|
||||
Math.max(this.end, charRange.end)
|
||||
);
|
||||
},
|
||||
|
||||
intersection: function (charRange) {
|
||||
return new CharacterRange(
|
||||
Math.max(this.start, charRange.start),
|
||||
Math.min(this.end, charRange.end)
|
||||
);
|
||||
},
|
||||
|
||||
getComplements: function (charRange) {
|
||||
var ranges = [];
|
||||
if (this.start >= charRange.start) {
|
||||
if (this.end <= charRange.end) {
|
||||
return [];
|
||||
}
|
||||
ranges.push(new CharacterRange(charRange.end, this.end));
|
||||
} else {
|
||||
ranges.push(
|
||||
new CharacterRange(this.start, Math.min(this.end, charRange.start))
|
||||
);
|
||||
if (this.end > charRange.end) {
|
||||
ranges.push(new CharacterRange(charRange.end, this.end));
|
||||
}
|
||||
}
|
||||
return ranges;
|
||||
},
|
||||
|
||||
toString: function () {
|
||||
return "[CharacterRange(" + this.start + ", " + this.end + ")]";
|
||||
},
|
||||
};
|
||||
|
||||
CharacterRange.fromCharacterRange = function (charRange) {
|
||||
return new CharacterRange(charRange.start, charRange.end);
|
||||
};
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
var textContentConverter = {
|
||||
rangeToCharacterRange: function (range, containerNode) {
|
||||
var bookmark = range.getBookmark(containerNode);
|
||||
return new CharacterRange(bookmark.start, bookmark.end);
|
||||
},
|
||||
|
||||
characterRangeToRange: function (doc, characterRange, containerNode) {
|
||||
var range = api.createRange(doc);
|
||||
range.moveToBookmark({
|
||||
start: characterRange.start,
|
||||
end: characterRange.end,
|
||||
containerNode: containerNode,
|
||||
});
|
||||
|
||||
return range;
|
||||
},
|
||||
|
||||
serializeSelection: function (selection, containerNode) {
|
||||
var ranges = selection.getAllRanges(),
|
||||
rangeCount = ranges.length;
|
||||
var rangeInfos = [];
|
||||
|
||||
var backward = rangeCount == 1 && selection.isBackward();
|
||||
|
||||
for (var i = 0, len = ranges.length; i < len; ++i) {
|
||||
rangeInfos[i] = {
|
||||
characterRange: this.rangeToCharacterRange(
|
||||
ranges[i],
|
||||
containerNode
|
||||
),
|
||||
backward: backward,
|
||||
};
|
||||
}
|
||||
|
||||
return rangeInfos;
|
||||
},
|
||||
|
||||
restoreSelection: function (selection, savedSelection, containerNode) {
|
||||
selection.removeAllRanges();
|
||||
var doc = selection.win.document;
|
||||
for (
|
||||
var i = 0,
|
||||
len = savedSelection.length,
|
||||
range,
|
||||
rangeInfo,
|
||||
characterRange;
|
||||
i < len;
|
||||
++i
|
||||
) {
|
||||
rangeInfo = savedSelection[i];
|
||||
characterRange = rangeInfo.characterRange;
|
||||
range = this.characterRangeToRange(
|
||||
doc,
|
||||
rangeInfo.characterRange,
|
||||
containerNode
|
||||
);
|
||||
selection.addRange(range, rangeInfo.backward);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
registerHighlighterType("textContent", function () {
|
||||
return textContentConverter;
|
||||
});
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
// Lazily load the TextRange-based converter so that the dependency is only checked when required.
|
||||
registerHighlighterType(
|
||||
"TextRange",
|
||||
(function () {
|
||||
var converter;
|
||||
|
||||
return function () {
|
||||
if (!converter) {
|
||||
// Test that textRangeModule exists and is supported
|
||||
var textRangeModule = api.modules.TextRange;
|
||||
if (!textRangeModule) {
|
||||
throw new Error("TextRange module is missing.");
|
||||
} else if (!textRangeModule.supported) {
|
||||
throw new Error("TextRange module is present but not supported.");
|
||||
}
|
||||
|
||||
converter = {
|
||||
rangeToCharacterRange: function (range, containerNode) {
|
||||
return CharacterRange.fromCharacterRange(
|
||||
range.toCharacterRange(containerNode)
|
||||
);
|
||||
},
|
||||
|
||||
characterRangeToRange: function (
|
||||
doc,
|
||||
characterRange,
|
||||
containerNode
|
||||
) {
|
||||
var range = api.createRange(doc);
|
||||
range.selectCharacters(
|
||||
containerNode,
|
||||
characterRange.start,
|
||||
characterRange.end
|
||||
);
|
||||
return range;
|
||||
},
|
||||
|
||||
serializeSelection: function (selection, containerNode) {
|
||||
return selection.saveCharacterRanges(containerNode);
|
||||
},
|
||||
|
||||
restoreSelection: function (
|
||||
selection,
|
||||
savedSelection,
|
||||
containerNode
|
||||
) {
|
||||
selection.restoreCharacterRanges(containerNode, savedSelection);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
return converter;
|
||||
};
|
||||
})()
|
||||
);
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
function Highlight(
|
||||
doc,
|
||||
characterRange,
|
||||
classApplier,
|
||||
converter,
|
||||
id,
|
||||
containerElementId
|
||||
) {
|
||||
if (id) {
|
||||
this.id = id;
|
||||
nextHighlightId = Math.max(nextHighlightId, id + 1);
|
||||
} else {
|
||||
this.id = nextHighlightId++;
|
||||
}
|
||||
this.characterRange = characterRange;
|
||||
this.doc = doc;
|
||||
this.classApplier = classApplier;
|
||||
this.converter = converter;
|
||||
this.containerElementId = containerElementId || null;
|
||||
this.applied = false;
|
||||
}
|
||||
|
||||
Highlight.prototype = {
|
||||
getContainerElement: function () {
|
||||
return getContainerElement(this.doc, this.containerElementId);
|
||||
},
|
||||
|
||||
getRange: function () {
|
||||
return this.converter.characterRangeToRange(
|
||||
this.doc,
|
||||
this.characterRange,
|
||||
this.getContainerElement()
|
||||
);
|
||||
},
|
||||
|
||||
fromRange: function (range) {
|
||||
this.characterRange = this.converter.rangeToCharacterRange(
|
||||
range,
|
||||
this.getContainerElement()
|
||||
);
|
||||
},
|
||||
|
||||
getText: function () {
|
||||
return this.getRange().toString();
|
||||
},
|
||||
|
||||
containsElement: function (el) {
|
||||
return this.getRange().containsNodeContents(el.firstChild);
|
||||
},
|
||||
|
||||
unapply: function () {
|
||||
this.classApplier.undoToRange(this.getRange());
|
||||
this.applied = false;
|
||||
},
|
||||
|
||||
apply: function () {
|
||||
this.classApplier.applyToRange(this.getRange());
|
||||
this.applied = true;
|
||||
},
|
||||
|
||||
getHighlightElements: function () {
|
||||
return this.classApplier.getElementsWithClassIntersectingRange(
|
||||
this.getRange()
|
||||
);
|
||||
},
|
||||
|
||||
toString: function () {
|
||||
return (
|
||||
"[Highlight(ID: " +
|
||||
this.id +
|
||||
", class: " +
|
||||
this.classApplier.className +
|
||||
", character range: " +
|
||||
this.characterRange.start +
|
||||
" - " +
|
||||
this.characterRange.end +
|
||||
")]"
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
function Highlighter(doc, type) {
|
||||
type = type || "textContent";
|
||||
this.doc = doc || document;
|
||||
this.classAppliers = {};
|
||||
this.highlights = [];
|
||||
this.converter = getConverter(type);
|
||||
}
|
||||
|
||||
Highlighter.prototype = {
|
||||
addClassApplier: function (classApplier) {
|
||||
this.classAppliers[classApplier.className] = classApplier;
|
||||
},
|
||||
|
||||
getHighlightForElement: function (el) {
|
||||
var highlights = this.highlights;
|
||||
for (var i = 0, len = highlights.length; i < len; ++i) {
|
||||
if (highlights[i].containsElement(el)) {
|
||||
return highlights[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
removeHighlights: function (highlights) {
|
||||
for (var i = 0, len = this.highlights.length, highlight; i < len; ++i) {
|
||||
highlight = this.highlights[i];
|
||||
if (contains(highlights, highlight)) {
|
||||
highlight.unapply();
|
||||
this.highlights.splice(i--, 1);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
removeAllHighlights: function () {
|
||||
this.removeHighlights(this.highlights);
|
||||
},
|
||||
|
||||
getIntersectingHighlights: function (ranges) {
|
||||
// Test each range against each of the highlighted ranges to see whether they overlap
|
||||
var intersectingHighlights = [],
|
||||
highlights = this.highlights;
|
||||
forEach(ranges, function (range) {
|
||||
//var selCharRange = converter.rangeToCharacterRange(range);
|
||||
forEach(highlights, function (highlight) {
|
||||
if (
|
||||
range.intersectsRange(highlight.getRange()) &&
|
||||
!contains(intersectingHighlights, highlight)
|
||||
) {
|
||||
intersectingHighlights.push(highlight);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
return intersectingHighlights;
|
||||
},
|
||||
|
||||
highlightCharacterRanges: function (className, charRanges, options) {
|
||||
var i, len, j;
|
||||
var highlights = this.highlights;
|
||||
var converter = this.converter;
|
||||
var doc = this.doc;
|
||||
var highlightsToRemove = [];
|
||||
var classApplier = className ? this.classAppliers[className] : null;
|
||||
|
||||
options = createOptions(options, {
|
||||
containerElementId: null,
|
||||
exclusive: true,
|
||||
});
|
||||
|
||||
var containerElementId = options.containerElementId;
|
||||
var exclusive = options.exclusive;
|
||||
|
||||
var containerElement, containerElementRange, containerElementCharRange;
|
||||
if (containerElementId) {
|
||||
containerElement = this.doc.getElementById(containerElementId);
|
||||
if (containerElement) {
|
||||
containerElementRange = api.createRange(this.doc);
|
||||
containerElementRange.selectNodeContents(containerElement);
|
||||
containerElementCharRange = new CharacterRange(
|
||||
0,
|
||||
containerElementRange.toString().length
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
var charRange,
|
||||
highlightCharRange,
|
||||
removeHighlight,
|
||||
isSameClassApplier,
|
||||
highlightsToKeep,
|
||||
splitHighlight;
|
||||
|
||||
for (i = 0, len = charRanges.length; i < len; ++i) {
|
||||
charRange = charRanges[i];
|
||||
highlightsToKeep = [];
|
||||
|
||||
// Restrict character range to container element, if it exists
|
||||
if (containerElementCharRange) {
|
||||
charRange = charRange.intersection(containerElementCharRange);
|
||||
}
|
||||
|
||||
// Ignore empty ranges
|
||||
if (charRange.start == charRange.end) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check for intersection with existing highlights. For each intersection, create a new highlight
|
||||
// which is the union of the highlight range and the selected range
|
||||
for (j = 0; j < highlights.length; ++j) {
|
||||
removeHighlight = false;
|
||||
|
||||
if (containerElementId == highlights[j].containerElementId) {
|
||||
highlightCharRange = highlights[j].characterRange;
|
||||
isSameClassApplier = classApplier == highlights[j].classApplier;
|
||||
splitHighlight = !isSameClassApplier && exclusive;
|
||||
|
||||
// Replace the existing highlight if it needs to be:
|
||||
// 1. merged (isSameClassApplier)
|
||||
// 2. partially or entirely erased (className === null)
|
||||
// 3. partially or entirely replaced (isSameClassApplier == false && exclusive == true)
|
||||
if (
|
||||
(highlightCharRange.intersects(charRange) ||
|
||||
highlightCharRange.isContiguousWith(charRange)) &&
|
||||
(isSameClassApplier || splitHighlight)
|
||||
) {
|
||||
// Remove existing highlights, keeping the unselected parts
|
||||
if (splitHighlight) {
|
||||
forEach(
|
||||
highlightCharRange.getComplements(charRange),
|
||||
function (rangeToAdd) {
|
||||
highlightsToKeep.push(
|
||||
new Highlight(
|
||||
doc,
|
||||
rangeToAdd,
|
||||
highlights[j].classApplier,
|
||||
converter,
|
||||
null,
|
||||
containerElementId
|
||||
)
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
removeHighlight = true;
|
||||
if (isSameClassApplier) {
|
||||
charRange = highlightCharRange.union(charRange);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (removeHighlight) {
|
||||
highlightsToRemove.push(highlights[j]);
|
||||
highlights[j] = new Highlight(
|
||||
doc,
|
||||
highlightCharRange.union(charRange),
|
||||
classApplier,
|
||||
converter,
|
||||
null,
|
||||
containerElementId
|
||||
);
|
||||
} else {
|
||||
highlightsToKeep.push(highlights[j]);
|
||||
}
|
||||
}
|
||||
|
||||
// Add new range
|
||||
if (classApplier) {
|
||||
highlightsToKeep.push(
|
||||
new Highlight(
|
||||
doc,
|
||||
charRange,
|
||||
classApplier,
|
||||
converter,
|
||||
null,
|
||||
containerElementId
|
||||
)
|
||||
);
|
||||
}
|
||||
this.highlights = highlights = highlightsToKeep;
|
||||
}
|
||||
|
||||
// Remove the old highlights
|
||||
forEach(highlightsToRemove, function (highlightToRemove) {
|
||||
highlightToRemove.unapply();
|
||||
});
|
||||
|
||||
// Apply new highlights
|
||||
var newHighlights = [];
|
||||
forEach(highlights, function (highlight) {
|
||||
if (!highlight.applied) {
|
||||
highlight.apply();
|
||||
newHighlights.push(highlight);
|
||||
}
|
||||
});
|
||||
|
||||
return newHighlights;
|
||||
},
|
||||
|
||||
highlightRanges: function (className, ranges, options) {
|
||||
var selCharRanges = [];
|
||||
var converter = this.converter;
|
||||
|
||||
options = createOptions(options, {
|
||||
containerElement: null,
|
||||
exclusive: true,
|
||||
});
|
||||
|
||||
var containerElement = options.containerElement;
|
||||
var containerElementId = containerElement ? containerElement.id : null;
|
||||
var containerElementRange;
|
||||
if (containerElement) {
|
||||
containerElementRange = api.createRange(containerElement);
|
||||
containerElementRange.selectNodeContents(containerElement);
|
||||
}
|
||||
|
||||
forEach(ranges, function (range) {
|
||||
var scopedRange = containerElement
|
||||
? containerElementRange.intersection(range)
|
||||
: range;
|
||||
selCharRanges.push(
|
||||
converter.rangeToCharacterRange(
|
||||
scopedRange,
|
||||
containerElement || getBody(range.getDocument())
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
return this.highlightCharacterRanges(className, selCharRanges, {
|
||||
containerElementId: containerElementId,
|
||||
exclusive: options.exclusive,
|
||||
});
|
||||
},
|
||||
|
||||
highlightSelection: function (className, options) {
|
||||
var converter = this.converter;
|
||||
var classApplier = className ? this.classAppliers[className] : false;
|
||||
|
||||
options = createOptions(options, {
|
||||
containerElementId: null,
|
||||
selection: api.getSelection(this.doc),
|
||||
exclusive: true,
|
||||
});
|
||||
|
||||
var containerElementId = options.containerElementId;
|
||||
var exclusive = options.exclusive;
|
||||
var selection = options.selection;
|
||||
var doc = selection.win.document;
|
||||
var containerElement = getContainerElement(doc, containerElementId);
|
||||
|
||||
if (!classApplier && className !== false) {
|
||||
throw new Error(
|
||||
"No class applier found for class '" + className + "'"
|
||||
);
|
||||
}
|
||||
|
||||
// Store the existing selection as character ranges
|
||||
var serializedSelection = converter.serializeSelection(
|
||||
selection,
|
||||
containerElement
|
||||
);
|
||||
|
||||
// Create an array of selected character ranges
|
||||
var selCharRanges = [];
|
||||
forEach(serializedSelection, function (rangeInfo) {
|
||||
selCharRanges.push(
|
||||
CharacterRange.fromCharacterRange(rangeInfo.characterRange)
|
||||
);
|
||||
});
|
||||
|
||||
var newHighlights = this.highlightCharacterRanges(
|
||||
className,
|
||||
selCharRanges,
|
||||
{
|
||||
containerElementId: containerElementId,
|
||||
exclusive: exclusive,
|
||||
}
|
||||
);
|
||||
|
||||
// Restore selection
|
||||
converter.restoreSelection(
|
||||
selection,
|
||||
serializedSelection,
|
||||
containerElement
|
||||
);
|
||||
|
||||
return newHighlights;
|
||||
},
|
||||
|
||||
unhighlightSelection: function (selection) {
|
||||
selection = selection || api.getSelection(this.doc);
|
||||
var intersectingHighlights = this.getIntersectingHighlights(
|
||||
selection.getAllRanges()
|
||||
);
|
||||
this.removeHighlights(intersectingHighlights);
|
||||
selection.removeAllRanges();
|
||||
return intersectingHighlights;
|
||||
},
|
||||
|
||||
getHighlightsInSelection: function (selection) {
|
||||
selection = selection || api.getSelection(this.doc);
|
||||
return this.getIntersectingHighlights(selection.getAllRanges());
|
||||
},
|
||||
|
||||
selectionOverlapsHighlight: function (selection) {
|
||||
return this.getHighlightsInSelection(selection).length > 0;
|
||||
},
|
||||
|
||||
serialize: function (options) {
|
||||
var highlighter = this;
|
||||
var highlights = highlighter.highlights;
|
||||
var serializedType,
|
||||
serializedHighlights,
|
||||
convertType,
|
||||
serializationConverter;
|
||||
|
||||
highlights.sort(compareHighlights);
|
||||
options = createOptions(options, {
|
||||
serializeHighlightText: false,
|
||||
type: highlighter.converter.type,
|
||||
});
|
||||
|
||||
serializedType = options.type;
|
||||
convertType = serializedType != highlighter.converter.type;
|
||||
|
||||
if (convertType) {
|
||||
serializationConverter = getConverter(serializedType);
|
||||
}
|
||||
|
||||
serializedHighlights = ["type:" + serializedType];
|
||||
|
||||
forEach(highlights, function (highlight) {
|
||||
var characterRange = highlight.characterRange;
|
||||
var containerElement;
|
||||
|
||||
// Convert to the current Highlighter's type, if different from the serialization type
|
||||
if (convertType) {
|
||||
containerElement = highlight.getContainerElement();
|
||||
characterRange = serializationConverter.rangeToCharacterRange(
|
||||
highlighter.converter.characterRangeToRange(
|
||||
highlighter.doc,
|
||||
characterRange,
|
||||
containerElement
|
||||
),
|
||||
containerElement
|
||||
);
|
||||
}
|
||||
|
||||
var parts = [
|
||||
characterRange.start,
|
||||
characterRange.end,
|
||||
highlight.id,
|
||||
highlight.classApplier.className,
|
||||
highlight.containerElementId,
|
||||
];
|
||||
|
||||
if (options.serializeHighlightText) {
|
||||
parts.push(highlight.getText());
|
||||
}
|
||||
serializedHighlights.push(parts.join("$"));
|
||||
});
|
||||
|
||||
return serializedHighlights.join("|");
|
||||
},
|
||||
|
||||
deserialize: function (serialized) {
|
||||
var serializedHighlights = serialized.split("|");
|
||||
var highlights = [];
|
||||
|
||||
var firstHighlight = serializedHighlights[0];
|
||||
var regexResult;
|
||||
var serializationType,
|
||||
serializationConverter,
|
||||
convertType = false;
|
||||
if (
|
||||
firstHighlight &&
|
||||
(regexResult = /^type:(\w+)$/.exec(firstHighlight))
|
||||
) {
|
||||
serializationType = regexResult[1];
|
||||
if (serializationType != this.converter.type) {
|
||||
serializationConverter = getConverter(serializationType);
|
||||
convertType = true;
|
||||
}
|
||||
serializedHighlights.shift();
|
||||
} else {
|
||||
throw new Error("Serialized highlights are invalid.");
|
||||
}
|
||||
|
||||
var classApplier,
|
||||
highlight,
|
||||
characterRange,
|
||||
containerElementId,
|
||||
containerElement;
|
||||
|
||||
for (var i = serializedHighlights.length, parts; i-- > 0; ) {
|
||||
parts = serializedHighlights[i].split("$");
|
||||
characterRange = new CharacterRange(+parts[0], +parts[1]);
|
||||
containerElementId = parts[4] || null;
|
||||
|
||||
// Convert to the current Highlighter's type, if different from the serialization type
|
||||
if (convertType) {
|
||||
containerElement = getContainerElement(
|
||||
this.doc,
|
||||
containerElementId
|
||||
);
|
||||
characterRange = this.converter.rangeToCharacterRange(
|
||||
serializationConverter.characterRangeToRange(
|
||||
this.doc,
|
||||
characterRange,
|
||||
containerElement
|
||||
),
|
||||
containerElement
|
||||
);
|
||||
}
|
||||
|
||||
classApplier = this.classAppliers[parts[3]];
|
||||
|
||||
if (!classApplier) {
|
||||
throw new Error(
|
||||
"No class applier found for class '" + parts[3] + "'"
|
||||
);
|
||||
}
|
||||
|
||||
highlight = new Highlight(
|
||||
this.doc,
|
||||
characterRange,
|
||||
classApplier,
|
||||
this.converter,
|
||||
parseInt(parts[2]),
|
||||
containerElementId
|
||||
);
|
||||
highlight.apply();
|
||||
highlights.push(highlight);
|
||||
}
|
||||
this.highlights = highlights;
|
||||
},
|
||||
};
|
||||
|
||||
api.Highlighter = Highlighter;
|
||||
|
||||
api.createHighlighter = function (doc, rangeCharacterOffsetConverterType) {
|
||||
return new Highlighter(doc, rangeCharacterOffsetConverterType);
|
||||
};
|
||||
});
|
||||
|
||||
return rangy;
|
||||
}, this);
|
||||
314
static/html/koodo/lib/Rangy/rangy-serializer.js
Normal file
@@ -0,0 +1,314 @@
|
||||
/**
|
||||
* Serializer module for Rangy.
|
||||
* Serializes Ranges and Selections. An example use would be to store a user's selection on a particular page in a
|
||||
* cookie or local storage and restore it on the user's next visit to the same page.
|
||||
*
|
||||
* Part of Rangy, a cross-browser JavaScript range and selection library
|
||||
* https://github.com/timdown/rangy
|
||||
*
|
||||
* Depends on Rangy core.
|
||||
*
|
||||
* Copyright 2015, Tim Down
|
||||
* Licensed under the MIT license.
|
||||
* Version: 1.3.0
|
||||
* Build date: 10 May 2015
|
||||
*/
|
||||
(function(factory, root) {
|
||||
if (typeof define == "function" && define.amd) {
|
||||
// AMD. Register as an anonymous module with a dependency on Rangy.
|
||||
define(["./rangy-core"], factory);
|
||||
} else if (typeof module != "undefined" && typeof exports == "object") {
|
||||
// Node/CommonJS style
|
||||
module.exports = factory( require("rangy") );
|
||||
} else {
|
||||
// No AMD or CommonJS support so we use the rangy property of root (probably the global variable)
|
||||
factory(root.rangy);
|
||||
}
|
||||
})(function(rangy) {
|
||||
rangy.createModule("Serializer", ["WrappedSelection"], function(api, module) {
|
||||
var UNDEF = "undefined";
|
||||
var util = api.util;
|
||||
|
||||
// encodeURIComponent and decodeURIComponent are required for cookie handling
|
||||
if (typeof encodeURIComponent == UNDEF || typeof decodeURIComponent == UNDEF) {
|
||||
module.fail("encodeURIComponent and/or decodeURIComponent method is missing");
|
||||
}
|
||||
|
||||
// Checksum for checking whether range can be serialized
|
||||
var crc32 = (function() {
|
||||
function utf8encode(str) {
|
||||
var utf8CharCodes = [];
|
||||
|
||||
for (var i = 0, len = str.length, c; i < len; ++i) {
|
||||
c = str.charCodeAt(i);
|
||||
if (c < 128) {
|
||||
utf8CharCodes.push(c);
|
||||
} else if (c < 2048) {
|
||||
utf8CharCodes.push((c >> 6) | 192, (c & 63) | 128);
|
||||
} else {
|
||||
utf8CharCodes.push((c >> 12) | 224, ((c >> 6) & 63) | 128, (c & 63) | 128);
|
||||
}
|
||||
}
|
||||
return utf8CharCodes;
|
||||
}
|
||||
|
||||
var cachedCrcTable = null;
|
||||
|
||||
function buildCRCTable() {
|
||||
var table = [];
|
||||
for (var i = 0, j, crc; i < 256; ++i) {
|
||||
crc = i;
|
||||
j = 8;
|
||||
while (j--) {
|
||||
if ((crc & 1) == 1) {
|
||||
crc = (crc >>> 1) ^ 0xEDB88320;
|
||||
} else {
|
||||
crc >>>= 1;
|
||||
}
|
||||
}
|
||||
table[i] = crc >>> 0;
|
||||
}
|
||||
return table;
|
||||
}
|
||||
|
||||
function getCrcTable() {
|
||||
if (!cachedCrcTable) {
|
||||
cachedCrcTable = buildCRCTable();
|
||||
}
|
||||
return cachedCrcTable;
|
||||
}
|
||||
|
||||
return function(str) {
|
||||
var utf8CharCodes = utf8encode(str), crc = -1, crcTable = getCrcTable();
|
||||
for (var i = 0, len = utf8CharCodes.length, y; i < len; ++i) {
|
||||
y = (crc ^ utf8CharCodes[i]) & 0xFF;
|
||||
crc = (crc >>> 8) ^ crcTable[y];
|
||||
}
|
||||
return (crc ^ -1) >>> 0;
|
||||
};
|
||||
})();
|
||||
|
||||
var dom = api.dom;
|
||||
|
||||
function escapeTextForHtml(str) {
|
||||
return str.replace(/</g, "<").replace(/>/g, ">");
|
||||
}
|
||||
|
||||
function nodeToInfoString(node, infoParts) {
|
||||
infoParts = infoParts || [];
|
||||
var nodeType = node.nodeType, children = node.childNodes, childCount = children.length;
|
||||
var nodeInfo = [nodeType, node.nodeName, childCount].join(":");
|
||||
var start = "", end = "";
|
||||
switch (nodeType) {
|
||||
case 3: // Text node
|
||||
start = escapeTextForHtml(node.nodeValue);
|
||||
break;
|
||||
case 8: // Comment
|
||||
start = "<!--" + escapeTextForHtml(node.nodeValue) + "-->";
|
||||
break;
|
||||
default:
|
||||
start = "<" + nodeInfo + ">";
|
||||
end = "</>";
|
||||
break;
|
||||
}
|
||||
if (start) {
|
||||
infoParts.push(start);
|
||||
}
|
||||
for (var i = 0; i < childCount; ++i) {
|
||||
nodeToInfoString(children[i], infoParts);
|
||||
}
|
||||
if (end) {
|
||||
infoParts.push(end);
|
||||
}
|
||||
return infoParts;
|
||||
}
|
||||
|
||||
// Creates a string representation of the specified element's contents that is similar to innerHTML but omits all
|
||||
// attributes and comments and includes child node counts. This is done instead of using innerHTML to work around
|
||||
// IE <= 8's policy of including element properties in attributes, which ruins things by changing an element's
|
||||
// innerHTML whenever the user changes an input within the element.
|
||||
function getElementChecksum(el) {
|
||||
var info = nodeToInfoString(el).join("");
|
||||
return crc32(info).toString(16);
|
||||
}
|
||||
|
||||
function serializePosition(node, offset, rootNode) {
|
||||
var pathParts = [], n = node;
|
||||
rootNode = rootNode || dom.getDocument(node).documentElement;
|
||||
while (n && n != rootNode) {
|
||||
pathParts.push(dom.getNodeIndex(n, true));
|
||||
n = n.parentNode;
|
||||
}
|
||||
return pathParts.join("/") + ":" + offset;
|
||||
}
|
||||
|
||||
function deserializePosition(serialized, rootNode, doc) {
|
||||
if (!rootNode) {
|
||||
rootNode = (doc || document).documentElement;
|
||||
}
|
||||
var parts = serialized.split(":");
|
||||
var node = rootNode;
|
||||
var nodeIndices = parts[0] ? parts[0].split("/") : [], i = nodeIndices.length, nodeIndex;
|
||||
|
||||
while (i--) {
|
||||
nodeIndex = parseInt(nodeIndices[i], 10);
|
||||
if (nodeIndex < node.childNodes.length) {
|
||||
node = node.childNodes[nodeIndex];
|
||||
} else {
|
||||
throw module.createError("deserializePosition() failed: node " + dom.inspectNode(node) +
|
||||
" has no child with index " + nodeIndex + ", " + i);
|
||||
}
|
||||
}
|
||||
|
||||
return new dom.DomPosition(node, parseInt(parts[1], 10));
|
||||
}
|
||||
|
||||
function serializeRange(range, omitChecksum, rootNode) {
|
||||
rootNode = rootNode || api.DomRange.getRangeDocument(range).documentElement;
|
||||
if (!dom.isOrIsAncestorOf(rootNode, range.commonAncestorContainer)) {
|
||||
throw module.createError("serializeRange(): range " + range.inspect() +
|
||||
" is not wholly contained within specified root node " + dom.inspectNode(rootNode));
|
||||
}
|
||||
var serialized = serializePosition(range.startContainer, range.startOffset, rootNode) + "," +
|
||||
serializePosition(range.endContainer, range.endOffset, rootNode);
|
||||
if (!omitChecksum) {
|
||||
serialized += "{" + getElementChecksum(rootNode) + "}";
|
||||
}
|
||||
return serialized;
|
||||
}
|
||||
|
||||
var deserializeRegex = /^([^,]+),([^,\{]+)(\{([^}]+)\})?$/;
|
||||
|
||||
function deserializeRange(serialized, rootNode, doc) {
|
||||
if (rootNode) {
|
||||
doc = doc || dom.getDocument(rootNode);
|
||||
} else {
|
||||
doc = doc || document;
|
||||
rootNode = doc.documentElement;
|
||||
}
|
||||
var result = deserializeRegex.exec(serialized);
|
||||
var checksum = result[4];
|
||||
if (checksum) {
|
||||
var rootNodeChecksum = getElementChecksum(rootNode);
|
||||
if (checksum !== rootNodeChecksum) {
|
||||
throw module.createError("deserializeRange(): checksums of serialized range root node (" + checksum +
|
||||
") and target root node (" + rootNodeChecksum + ") do not match");
|
||||
}
|
||||
}
|
||||
var start = deserializePosition(result[1], rootNode, doc), end = deserializePosition(result[2], rootNode, doc);
|
||||
var range = api.createRange(doc);
|
||||
range.setStartAndEnd(start.node, start.offset, end.node, end.offset);
|
||||
return range;
|
||||
}
|
||||
|
||||
function canDeserializeRange(serialized, rootNode, doc) {
|
||||
if (!rootNode) {
|
||||
rootNode = (doc || document).documentElement;
|
||||
}
|
||||
var result = deserializeRegex.exec(serialized);
|
||||
var checksum = result[3];
|
||||
return !checksum || checksum === getElementChecksum(rootNode);
|
||||
}
|
||||
|
||||
function serializeSelection(selection, omitChecksum, rootNode) {
|
||||
selection = api.getSelection(selection);
|
||||
var ranges = selection.getAllRanges(), serializedRanges = [];
|
||||
for (var i = 0, len = ranges.length; i < len; ++i) {
|
||||
serializedRanges[i] = serializeRange(ranges[i], omitChecksum, rootNode);
|
||||
}
|
||||
return serializedRanges.join("|");
|
||||
}
|
||||
|
||||
function deserializeSelection(serialized, rootNode, win) {
|
||||
if (rootNode) {
|
||||
win = win || dom.getWindow(rootNode);
|
||||
} else {
|
||||
win = win || window;
|
||||
rootNode = win.document.documentElement;
|
||||
}
|
||||
var serializedRanges = serialized.split("|");
|
||||
var sel = api.getSelection(win);
|
||||
var ranges = [];
|
||||
|
||||
for (var i = 0, len = serializedRanges.length; i < len; ++i) {
|
||||
ranges[i] = deserializeRange(serializedRanges[i], rootNode, win.document);
|
||||
}
|
||||
sel.setRanges(ranges);
|
||||
|
||||
return sel;
|
||||
}
|
||||
|
||||
function canDeserializeSelection(serialized, rootNode, win) {
|
||||
var doc;
|
||||
if (rootNode) {
|
||||
doc = win ? win.document : dom.getDocument(rootNode);
|
||||
} else {
|
||||
win = win || window;
|
||||
rootNode = win.document.documentElement;
|
||||
}
|
||||
var serializedRanges = serialized.split("|");
|
||||
|
||||
for (var i = 0, len = serializedRanges.length; i < len; ++i) {
|
||||
if (!canDeserializeRange(serializedRanges[i], rootNode, doc)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
var cookieName = "rangySerializedSelection";
|
||||
|
||||
function getSerializedSelectionFromCookie(cookie) {
|
||||
var parts = cookie.split(/[;,]/);
|
||||
for (var i = 0, len = parts.length, nameVal, val; i < len; ++i) {
|
||||
nameVal = parts[i].split("=");
|
||||
if (nameVal[0].replace(/^\s+/, "") == cookieName) {
|
||||
val = nameVal[1];
|
||||
if (val) {
|
||||
return decodeURIComponent(val.replace(/\s+$/, ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function restoreSelectionFromCookie(win) {
|
||||
win = win || window;
|
||||
var serialized = getSerializedSelectionFromCookie(win.document.cookie);
|
||||
if (serialized) {
|
||||
deserializeSelection(serialized, win.doc);
|
||||
}
|
||||
}
|
||||
|
||||
function saveSelectionCookie(win, props) {
|
||||
win = win || window;
|
||||
props = (typeof props == "object") ? props : {};
|
||||
var expires = props.expires ? ";expires=" + props.expires.toUTCString() : "";
|
||||
var path = props.path ? ";path=" + props.path : "";
|
||||
var domain = props.domain ? ";domain=" + props.domain : "";
|
||||
var secure = props.secure ? ";secure" : "";
|
||||
var serialized = serializeSelection(api.getSelection(win));
|
||||
win.document.cookie = encodeURIComponent(cookieName) + "=" + encodeURIComponent(serialized) + expires + path + domain + secure;
|
||||
}
|
||||
|
||||
util.extend(api, {
|
||||
serializePosition: serializePosition,
|
||||
deserializePosition: deserializePosition,
|
||||
serializeRange: serializeRange,
|
||||
deserializeRange: deserializeRange,
|
||||
canDeserializeRange: canDeserializeRange,
|
||||
serializeSelection: serializeSelection,
|
||||
deserializeSelection: deserializeSelection,
|
||||
canDeserializeSelection: canDeserializeSelection,
|
||||
restoreSelectionFromCookie: restoreSelectionFromCookie,
|
||||
saveSelectionCookie: saveSelectionCookie,
|
||||
getElementChecksum: getElementChecksum,
|
||||
nodeToInfoString: nodeToInfoString
|
||||
});
|
||||
|
||||
util.crc32 = crc32;
|
||||
});
|
||||
|
||||
return rangy;
|
||||
}, this);
|
||||
1930
static/html/koodo/lib/Rangy/rangy-textrange.js
Normal file
15536
static/html/koodo/lib/djvu/djvu.js
Normal file
2
static/html/koodo/lib/djvu/djvu_viewer.js
Normal file
1
static/html/koodo/lib/kookit/kookit.umd.js
Normal file
22
static/html/koodo/lib/mammoth/mammoth.browser.min.js
vendored
Normal file
2986
static/html/koodo/lib/marked/marked.js
Normal file
15103
static/html/koodo/lib/pdf/build/pdf.js
Normal file
1
static/html/koodo/lib/pdf/build/pdf.js.map
Normal file
312
static/html/koodo/lib/pdf/build/pdf.sandbox.js
Normal file
1
static/html/koodo/lib/pdf/build/pdf.sandbox.js.map
Normal file
55421
static/html/koodo/lib/pdf/build/pdf.worker.js
vendored
Normal file
1
static/html/koodo/lib/pdf/build/pdf.worker.js.map
vendored
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/78-EUC-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/78-EUC-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/78-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/78-RKSJ-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/78-RKSJ-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/78-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/78ms-RKSJ-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/78ms-RKSJ-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/83pv-RKSJ-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/90ms-RKSJ-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/90ms-RKSJ-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/90msp-RKSJ-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/90msp-RKSJ-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/90pv-RKSJ-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/90pv-RKSJ-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Add-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Add-RKSJ-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Add-RKSJ-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Add-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-CNS1-0.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-CNS1-1.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-CNS1-2.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-CNS1-3.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-CNS1-4.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-CNS1-5.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-CNS1-6.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-CNS1-UCS2.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-GB1-0.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-GB1-1.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-GB1-2.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-GB1-3.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-GB1-4.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-GB1-5.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-GB1-UCS2.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Japan1-0.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Japan1-1.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Japan1-2.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Japan1-3.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Japan1-4.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Japan1-5.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Japan1-6.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Japan1-UCS2.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Korea1-0.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Korea1-1.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Korea1-2.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/Adobe-Korea1-UCS2.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/B5-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/B5-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/B5pc-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/B5pc-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/CNS-EUC-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/CNS-EUC-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/CNS1-H.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/CNS1-V.bcmap
Normal file
BIN
static/html/koodo/lib/pdf/web/cmaps/CNS2-H.bcmap
Normal file
3
static/html/koodo/lib/pdf/web/cmaps/CNS2-V.bcmap
Normal file
@@ -0,0 +1,3 @@
|
||||
<03>RCopyright 1990-2009 Adobe Systems Incorporated.
|
||||
All rights reserved.
|
||||
See ./LICENSE<53>CNS2-H
|
||||