,
3 | expectedValueX: string,
4 | expectedValueY: string
5 | ): void => {
6 | cy.window().then((win) => {
7 | const styles = win.getComputedStyle($elm[0]);
8 | const scaleX = styles.getPropertyValue('--chakra-scale-x');
9 | const scaleY = styles.getPropertyValue('--chakra-scale-y');
10 | expect(scaleX).to.eq(expectedValueX);
11 | expect(scaleY).to.eq(expectedValueY);
12 | });
13 | };
14 |
--------------------------------------------------------------------------------
/cypress/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "include": ["**/*.ts", "**/*.js"],
4 | "exclude": [],
5 | "compilerOptions": {
6 | "types": ["cypress", "@testing-library/cypress", "node"]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/example/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .cache
3 | dist
--------------------------------------------------------------------------------
/example/README.txt:
--------------------------------------------------------------------------------
1 | The AxisNow example is a real book in the NYPL Open eBooks catalog. If it
2 | isn't working, you may need to re-borrow it and then use a new book_vault_uuid
3 | and isbn in your env vars.
4 |
5 | This is the link to the OPDS entry
6 | https://USERNAME:PASSWORD@circulation.openebooks.us/USOEI/works/Axis%20360%20ID/0018450548/
7 |
8 | Borrow this book with this command:
9 | curl https://USERNAME:PASSWORD@circulation.openebooks.us/USOEI/works/Axis%20360%20ID/0018450548/borrow/44
10 |
11 | Then fulfill the book with this command to get the params:
12 | curl https://USERNAME:PASSWORD@circulation.openebooks.us/USOEI/works/6141/fulfill/44
--------------------------------------------------------------------------------
/example/cors-proxy.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const request = require('request');
3 | const app = express();
4 | const port = process.env.PORT | 3001;
5 |
6 | app.use((req, res, next) => {
7 | res.header('Access-Control-Allow-Origin', '*');
8 | next();
9 | });
10 |
11 | app.get('/', (req, res) => {
12 | // read query parameters
13 | const requestUrl = req.query['requestUrl'];
14 |
15 | console.log(`Proxying request to: ${requestUrl}`);
16 |
17 | // make request to IEX API and forward response
18 | try {
19 | // allow a 30s timeout
20 | request(requestUrl, { timeout: 300000 })
21 | .on('error', (e) => {
22 | const msg = `Request error at ${requestUrl}: ${e.message}`;
23 | console.error(e);
24 | res.status(500);
25 | res.send(msg);
26 | })
27 | .pipe(res);
28 | } catch (e) {
29 | console.error(e);
30 | res.status(500);
31 | res.send(e.message);
32 | }
33 | });
34 |
35 | app.listen(port, () =>
36 | console.log(`CORS Proxy Listening on: http://localhost:${port}`)
37 | );
38 |
--------------------------------------------------------------------------------
/example/globals.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'url:*' {
2 | const url: string;
3 | export default url;
4 | }
5 |
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
13 | NYPL Web Reader Example
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example/static/css/sample.css:
--------------------------------------------------------------------------------
1 | /* this is a sample css file for testing */
2 | body {
3 | color: rgb(0, 0, 255);
4 | }
5 |
--------------------------------------------------------------------------------
/example/static/fonts/opendyslexic/opendyslexic-regular-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/fonts/opendyslexic/opendyslexic-regular-webfont.woff
--------------------------------------------------------------------------------
/example/static/fonts/opendyslexic/opendyslexic-regular-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/fonts/opendyslexic/opendyslexic-regular-webfont.woff2
--------------------------------------------------------------------------------
/example/static/fonts/opendyslexic/opendyslexic.css:
--------------------------------------------------------------------------------
1 | /*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 16, 2019 */
2 |
3 |
4 |
5 | @font-face {
6 | font-family: 'opendyslexic';
7 | src: url('opendyslexic-regular-webfont.woff2') format('woff2'),
8 | url('opendyslexic-regular-webfont.woff') format('woff');
9 | font-weight: normal;
10 | font-style: normal;
11 |
12 | }
--------------------------------------------------------------------------------
/example/static/js/sample.js:
--------------------------------------------------------------------------------
1 | document.addEventListener('click', (_) => {
2 | console.log('user clicked inside the iframe');
3 | });
4 |
--------------------------------------------------------------------------------
/example/static/pdf-worker/pdf.worker.entry.js:
--------------------------------------------------------------------------------
1 | /* Copyright 2022 Mozilla Foundation
2 | *
3 | * Licensed under the Apache License, Version 2.0 (the "License");
4 | * you may not use this file except in compliance with the License.
5 | * You may obtain a copy of the License at
6 | *
7 | * http://www.apache.org/licenses/LICENSE-2.0
8 | *
9 | * Unless required by applicable law or agreed to in writing, software
10 | * distributed under the License is distributed on an "AS IS" BASIS,
11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | * See the License for the specific language governing permissions and
13 | * limitations under the License.
14 | */
15 |
16 | (typeof window !== "undefined"
17 | ? window
18 | : {}
19 | ).pdfjsWorker = require("./pdf.worker.js");
20 |
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/META-INF/com.apple.ibooks.display-options.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 |
6 |
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/META-INF/container.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/Fragmented-Model.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/Fragmented-Model.jpg
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/Page-Model.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/Page-Model.jpg
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/alt-lines.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/alt-lines.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/charis-sil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/charis-sil.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/clear-sans.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/clear-sans.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/cover.jpg
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/dynamic-leading.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/dynamic-leading.jpg
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/faustina.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/faustina.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/fira-sans.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/fira-sans.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/libre-franklin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/libre-franklin.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/literata.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/literata.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/merriweather-sans.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/merriweather-sans.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/merriweather.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/merriweather.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/plex-serif.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/plex-serif.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/pt-sans.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/pt-sans.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/pt-serif.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/pt-serif.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/source-sans-pro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/source-sans-pro.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/spread-model.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/spread-model.jpg
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Images/vollkorn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/ReadiumCSS-docs/OEBPS/Images/vollkorn.png
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Text/cover.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Readium CSS Implementers’ doc
9 |
10 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/OEBPS/Text/title_page.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Readium CSS Implementers’ doc
9 |
10 |
11 |
12 |
13 |
14 | Readium CSS Implementers’ doc
15 |
16 |
17 |
--------------------------------------------------------------------------------
/example/static/samples/ReadiumCSS-docs/mimetype:
--------------------------------------------------------------------------------
1 | application/epub+zip
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/cover.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | A Tale of Two Cities
7 |
16 |
17 |
18 |
19 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/fonts/im-fell-double-pica-pro.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/decrypted/OEBPS/fonts/im-fell-double-pica-pro.otf
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/fell-flower-abc-fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/fell-flower-abc-fixed.png
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/fell-flower-d-fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/fell-flower-d-fixed.png
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/fell-flower-kj-fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/fell-flower-kj-fixed.png
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/recovering-the-classics-stacked-logo-black-on-white.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/recovering-the-classics-stacked-logo-black-on-white.jpg
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/rtc_ataleoftwocities_alexislampley.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/rtc_ataleoftwocities_alexislampley.jpg
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/vellum-created-fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/decrypted/OEBPS/images/vellum-created-fixed.png
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/title-page.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | Title Page
7 |
10 |
13 |
15 |
16 |
17 |
18 |
19 |
A Tale of Two Cities
20 |
21 |
22 |
Charles Dickens
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/vol-001.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | Book the First
7 |
10 |
13 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Book the First
24 |
25 |
Recalled to Life
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/vol-002.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | Book the Second
7 |
10 |
13 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Book the Second
24 |
25 |
The Golden Thread
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/decrypted/OEBPS/vol-003.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | Book the Third
7 |
10 |
13 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Book the Third
24 |
25 |
The Track of a Storm
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/copyright.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/copyright.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/cover.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/cover.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/css/media.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/css/media.css
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/css/style.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/css/style.css
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/fonts/SIL-Open-Font-License-1.1.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/fonts/SIL-Open-Font-License-1.1.txt
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/fonts/im-fell-double-pica-pro.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/fonts/im-fell-double-pica-pro.otf
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/fell-flower-abc-fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/fell-flower-abc-fixed.png
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/fell-flower-d-fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/fell-flower-d-fixed.png
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/fell-flower-kj-fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/fell-flower-kj-fixed.png
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/recovering-the-classics-stacked-logo-black-on-white.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/recovering-the-classics-stacked-logo-black-on-white.jpg
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/rtc_ataleoftwocities_alexislampley.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/rtc_ataleoftwocities_alexislampley.jpg
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/vellum-created-fixed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/images/vellum-created-fixed.png
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/recovering-the-classics.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/recovering-the-classics.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/title-page.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/title-page.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-001.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-001.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-002.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-002.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-003.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-003.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-004.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-004.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-005.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-005.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-006.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001-chapter-006.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-001.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-001.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-001.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-002.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-002.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-003.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-003.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-004.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-004.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-005.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-005.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-006.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-006.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-007.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-007.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-008.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-008.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-009.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-009.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-010.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-010.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-011.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-011.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-012.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-012.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-013.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-013.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-014.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-014.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-015.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-015.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-016.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-016.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-017.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-017.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-018.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-018.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-019.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-019.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-020.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-020.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-021.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-021.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-022.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-022.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-023.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-023.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-024.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002-chapter-024.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-002.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-001.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-001.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-002.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-002.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-003.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-003.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-004.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-004.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-005.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-005.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-006.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-006.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-007.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-007.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-008.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-008.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-009.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-009.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-010.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-010.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-011.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-011.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-012.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-012.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-013.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-013.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-014.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-014.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-015.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003-chapter-015.xhtml
--------------------------------------------------------------------------------
/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003.xhtml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/dickens-axisnow/encrypted/OEBPS/vol-003.xhtml
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_000.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_001.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_002.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_003.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_004.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_005.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_006.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_007.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/PageBlanche_Page_008.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Content/cover.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | La Page Blanche
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_001.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_001.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_002.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_002.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_003.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_003.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_004.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_004.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_005.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_005.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_006.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_006.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_007.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_007.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_008.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/PageBlanche_Page_008.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Image/cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/EPUB/Image/cover.jpg
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Navigation/nav.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | La Page Blanche
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 | Dédicace
16 |
17 |
18 | Commencer la lecture
19 |
20 |
21 |
22 |
23 |
24 | 1
25 | 2
26 | 3
27 | 4
28 | 5
29 | 6
30 | 7
31 | 8
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/EPUB/Style/style.css:
--------------------------------------------------------------------------------
1 |
2 | /* FL */
3 | body {
4 | width: 1200px;
5 | height: 1577px;
6 | margin: 0;
7 | }
8 | img {
9 | position: absolute;
10 | margin: 0;
11 | z-index: 0;
12 | }
13 |
14 | /* NAV */
15 | a {
16 | color: black !important;
17 | }
18 |
19 | #guide {
20 | display: none;
21 | }
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/META-INF/container.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/mimetype:
--------------------------------------------------------------------------------
1 | application/epub+zip
--------------------------------------------------------------------------------
/example/static/samples/fixed-layout/page-blanche.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fixed-layout/page-blanche.epub
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/META-INF/container.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/fonts/texgyrebonum-bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fxl-poems/OPS/fonts/texgyrebonum-bold.woff
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/fonts/texgyrebonum-bolditalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fxl-poems/OPS/fonts/texgyrebonum-bolditalic.woff
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/fonts/texgyrebonum-italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fxl-poems/OPS/fonts/texgyrebonum-italic.woff
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/fonts/texgyrebonum-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fxl-poems/OPS/fonts/texgyrebonum-regular.woff
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/images/ss_fixed_online.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fxl-poems/OPS/images/ss_fixed_online.jpg
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s001-Cover-01.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s002-BookTitlePage-01.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
blankpage
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s003-Section-01.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | THE WAR POEMS OF SIEGFRIED SASSOON
6 |
7 |
8 |
9 |
10 |
11 |
THE WAR POEMS OF SIEGFRIED SASSOON
12 |
13 |
14 |
1919
15 |
16 |
Siegfried Sassoon
17 |
18 |
19 |
20 |
21 |
22 |
23 |
INFOGRID PACIFIC
24 |
25 |
Auckland London Singapore Pune
26 |
27 |
28 |
29 | iii
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s008-Section-03.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s009-Part-001.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Part I
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
Part I
19 |
20 |
21 | 1
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s010-Section-004.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s014-Section-005.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
He faced me, reeling in his weariness,
12 |
13 |
14 |
Shouldering his load of planks, so hard to bear.
15 |
16 |
I say that he was Christ, who wrought to bless
17 |
18 |
All groping things with freedom bright as air,
19 |
20 |
And with His mercy washed and made them fair.
21 |
22 |
Then the flame sank, and all grew black as pitch,
23 |
24 |
While we began to struggle along the ditch;
25 |
26 |
And some one flung his burden in the muck,
27 |
28 |
Mumbling: “O Christ Almighty, now I’m stuck!”
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | 6
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s042-Section-010.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s043-Part-002.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Part II
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
Part II
19 |
20 |
21 | 35
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s044-Section-011.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s066-Section-012.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s067-Part-003.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Part III
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
Part III
19 |
20 |
21 | 59
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s068-Section-013.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/OPS/s089-Section-019.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Do you remember the stretcher-cases lurching back
14 |
15 |
With dying eyes and lolling heads,—those ashen-grey
16 |
17 |
Masks of the lads who once were keen and kind and gay?
18 |
19 |
Have you forgotten yet?…
20 |
21 |
22 |
Look up, and swear by the green of the Spring that
23 | you’ll never forget.
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | 81
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/igp-twss-fxl.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/fxl-poems/igp-twss-fxl.epub
--------------------------------------------------------------------------------
/example/static/samples/fxl-poems/mimetype:
--------------------------------------------------------------------------------
1 | application/epub+zip
--------------------------------------------------------------------------------
/example/static/samples/moby-epub2-exploded/META-INF/container.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub2-exploded/OEBPS/0.css:
--------------------------------------------------------------------------------
1 | /**/
2 | body {
3 | margin-left: 15%;
4 | margin-right: 15%;
5 | text-align: justify
6 | }
7 | p {
8 | text-indent: 1em;
9 | margin-top: 0.25em;
10 | margin-bottom: 0.25em
11 | }
12 | h1, h2, h3, h4, h5, h6 {
13 | text-align: center;
14 | margin-left: 15%;
15 | margin-right: 15%
16 | }
17 | hr {
18 | width: 50%;
19 | text-align: center
20 | }
21 | blockquote {
22 | font-size: 100%;
23 | margin-left: 0%;
24 | margin-right: 0%
25 | }
26 | .mynote {
27 | background-color: #DDE;
28 | color: #000;
29 | padding: 0.5em;
30 | margin-left: 10%;
31 | margin-right: 10%;
32 | font-family: sans-serif;
33 | font-size: 95%
34 | }
35 | .toc {
36 | margin-left: 10%;
37 | margin-bottom: 0.75em
38 | }
39 | pre {
40 | font-family: times new roman;
41 | font-size: 100%;
42 | margin-left: 10%
43 | }
44 | table {
45 | margin-left: 10%
46 | }
47 | a:link {
48 | color: blue;
49 | text-decoration: none
50 | }
51 | link {
52 | color: blue;
53 | text-decoration: none
54 | }
55 | a:visited {
56 | color: blue;
57 | text-decoration: none
58 | }
59 | a:hover {
60 | color: red
61 | }
62 | /**/
--------------------------------------------------------------------------------
/example/static/samples/moby-epub2-exploded/OEBPS/1.css:
--------------------------------------------------------------------------------
1 | /**/
2 | div.c15 {
3 | margin-left: 0.7em
4 | }
5 | div.c14 {
6 | text-indent: -0.7em
7 | }
8 | div.c13 {
9 | display: block;
10 | font-size: 1.1em;
11 | margin: 1em 0;
12 | font-weight: bold
13 | }
14 | div.c12 {
15 | margin: 0.83em 0;
16 | font-size: 1.1em;
17 | text-align: center
18 | }
19 | span.c11 {
20 | font-size: smaller
21 | }
22 | div.c10 {
23 | display: block;
24 | margin: 1em 0
25 | }
26 | div.c9 {
27 | display: block;
28 | margin-top: 4em
29 | }
30 | div.c8 {
31 | height: 4em
32 | }
33 | big.c7 {
34 | font-weight: bold
35 | }
36 | div.c6 {
37 | margin-top: 2em;
38 | margin-bottom: 4em
39 | }
40 | div.c5 {
41 | display: block;
42 | margin-left: 2em;
43 | text-indent: -2em
44 | }
45 | div.c4 {
46 | display: block;
47 | margin: 1em 0
48 | }
49 | div.c3 {
50 | display: block;
51 | margin-top: 1em;
52 | margin-bottom: 1em;
53 | margin-left: 2em;
54 | text-indent: -2em
55 | }
56 | div.c2 {
57 | display: block;
58 | margin: 1em 0
59 | }
60 | div.c1 {
61 | text-align: center;
62 | font-size: 1.2em;
63 | font-weight: bold
64 | }
65 | /**/
--------------------------------------------------------------------------------
/example/static/samples/moby-epub2-exploded/OEBPS/@export@sunsite@users@gutenbackend@cache@epub@2701@2701-cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/moby-epub2-exploded/OEBPS/@export@sunsite@users@gutenbackend@cache@epub@2701@2701-cover.png
--------------------------------------------------------------------------------
/example/static/samples/moby-epub2-exploded/OEBPS/pgepub.css:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 | body, body.tei.tei-text {
3 | color: black;
4 | background-color: white;
5 | margin: 0.5em;
6 | width: auto;
7 | border: 0;
8 | padding: 0
9 | }
10 | div, p, pre, h1, h2, h3, h4, h5, h6 {
11 | margin-left: 0;
12 | margin-right: 0;
13 | display: block
14 | }
15 | div.pgebub-root-div {
16 | margin: 0
17 | }
18 | h2 {
19 | page-break-before: always;
20 | padding-top: 1em
21 | }
22 | div.figcenter span.caption {
23 | display: block
24 | }
25 | .pgmonospaced {
26 | font-family: monospace;
27 | font-size: 0.9em
28 | }
29 | a.pgkilled {
30 | text-decoration: none
31 | }
--------------------------------------------------------------------------------
/example/static/samples/moby-epub2-exploded/OEBPS/wrap0000.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | "Cover"
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub2-exploded/mimetype:
--------------------------------------------------------------------------------
1 | application/epub+zip
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/META-INF/container.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/chapter_030.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 | Chapter 30. The Pipe.
11 | When Stubb had departed, Ahab stood for a while leaning over the bulwarks; and then, as had been usual with him of late, calling a sailor of the watch, he sent him below for his ivory stool, and also his pipe. Lighting the pipe at the binnacle lamp and planting the stool on the weather side of the deck, he sat and smoked.
12 | In old Norse times, the thrones of the sea-loving Danish kings were fabricated, saith tradition, of the tusks of the narwhale. How could one look at Ahab then, seated on that tripod of bones, without bethinking him of the royalty it symbolized? For a Khan of the plank, and a king of the sea, and a great lord of Leviathans was Ahab.
13 | Some moments passed, during which the thick vapour came from his mouth in quick and constant puffs, which blew back again into his face. “How now,” he soliloquized at last, withdrawing the tube, “this smoking no longer soothes. Oh, my pipe! hard must it go with me if thy charm be gone! Here have I been unconsciously toiling, not pleasuring—aye, and ignorantly smoking to windward all the while; to windward, and with such nervous whiffs, as if, like the dying whale, my final jets were the strongest and fullest of trouble. What business have I with this pipe? This thing that is meant for sereneness, to send up mild white vapours among mild white hairs, not among torn iron-grey locks like mine. I’ll smoke no more—”
14 | He tossed the still lighted pipe into the sea. The fire hissed in the waves; the same instant the ship shot by the bubble the sinking pipe made. With slouched hat, Ahab lurchingly paced the planks.
15 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/chapter_039.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 | Chapter 39. First Night Watch.
11 | Fore-Top.
12 | (STUBB SOLUS, AND MENDING A BRACE.)
13 | Ha! ha! ha! ha! hem! clear my throat!—I’ve been thinking over it ever since, and that ha, ha’s the final consequence. Why so? Because a laugh’s the wisest, easiest answer to all that’s queer; and come what will, one comfort’s always left—that unfailing comfort is, it’s all predestinated. I heard not all his talk with Starbuck; but to my poor eye Starbuck then looked something as I the other evening felt. Be sure the old Mogul has fixed him, too. I twigged it, knew it; had had the gift, might readily have prophesied it—for when I clapped my eye upon his skull I saw it. Well, Stubb, WISE Stubb—that’s my title—well, Stubb, what of it, Stubb? Here’s a carcase. I know not all that may be coming, but be it what it will, I’ll go to it laughing. Such a waggish leering as lurks in all your horribles! I feel funny. Fa, la! lirra, skirra! What’s my juicy little pear at home doing now? Crying its eyes out?—Giving a party to the last arrived harpooneers, I dare say, gay as a frigate’s pennant, and so am I—fa, la! lirra, skirra! Oh—
14 | We’ll drink to-night with hearts as light, To love, as gay and fleeting As bubbles that swim, on the beaker’s brim, And break on the lips while meeting.
15 | A brave stave that—who calls? Mr. Starbuck? Aye, aye, sir—(ASIDE) he’s my superior, he has his too, if I’m not mistaken.—Aye, aye, sir, just through with this job—coming.
16 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/chapter_097.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 | Chapter 97. The Lamp.
11 | Had you descended from the Pequod’s try-works to the Pequod’s forecastle, where the off duty watch were sleeping, for one single moment you would have almost thought you were standing in some illuminated shrine of canonized kings and counsellors. There they lay in their triangular oaken vaults, each mariner a chiselled muteness; a score of lamps flashing upon his hooded eyes.
12 | In merchantmen, oil for the sailor is more scarce than the milk of queens. To dress in the dark, and eat in the dark, and stumble in darkness to his pallet, this is his usual lot. But the whaleman, as he seeks the food of light, so he lives in light. He makes his berth an Aladdin’s lamp, and lays him down in it; so that in the pitchiest night the ship’s black hull still houses an illumination.
13 | See with what entire freedom the whaleman takes his handful of lamps—often but old bottles and vials, though—to the copper cooler at the try-works, and replenishes them there, as mugs of ale at a vat. He burns, too, the purest of oil, in its unmanufactured, and, therefore, unvitiated state; a fluid unknown to solar, lunar, or astral contrivances ashore. It is sweet as early grass butter in April. He goes and hunts for his oil, so as to be sure of its freshness and genuineness, even as the traveller on the prairie hunts up his own supper of game.
14 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/chapter_120.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 | Chapter 120. The Deck Towards the End of the First Night Watch.
11 | AHAB STANDING BY THE HELM. STARBUCK APPROACHING HIM.
12 | “We must send down the main-top-sail yard, sir. The band is working loose and the lee lift is half-stranded. Shall I strike it, sir?”
13 | “Strike nothing; lash it. If I had sky-sail poles, I’d sway them up now.”
14 | “Sir!—in God’s name!—sir?”
15 | “Well.”
16 | “The anchors are working, sir. Shall I get them inboard?”
17 | “Strike nothing, and stir nothing, but lash everything. The wind rises, but it has not got up to my table-lands yet. Quick, and see to it.—By masts and keels! he takes me for the hunch-backed skipper of some coasting smack. Send down my main-top-sail yard! Ho, gluepots! Loftiest trucks were made for wildest winds, and this brain-truck of mine now sails amid the cloud-scud. Shall I strike that? Oh, none but cowards send down their brain-trucks in tempest time. What a hooroosh aloft there! I would e’en take it for sublime, did I not know that the colic is a noisy malady. Oh, take medicine, take medicine!”
18 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/chapter_122.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 | Chapter 122. Midnight Aloft.—Thunder and Lightning.
11 | THE MAIN-TOP-SAIL YARD.—TASHTEGO PASSING NEW LASHINGS AROUND IT.
12 | “Um, um, um. Stop that thunder! Plenty too much thunder up here. What’s the use of thunder? Um, um, um. We don’t want thunder; we want rum; give us a glass of rum. Um, um, um!”
13 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/chapter_136.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
16 | The drama’s done. Why then here does any one step forth?—Because one did survive the wreck.
17 | It so chanced, that after the Parsee’s disappearance, I was he whom the Fates ordained to take the place of Ahab’s bowsman, when that bowsman assumed the vacant post; the same, who, when on the last day the three men were tossed from out of the rocking boat, was dropped astern. So, floating on the margin of the ensuing scene, and in full sight of it, when the halfspent suction of the sunk ship reached me, I was then, but slowly, drawn towards the closing vortex. When I reached it, it had subsided to a creamy pool. Round and round, then, and ever contracting towards the button-like black bubble at the axis of that slowly wheeling circle, like another Ixion I did revolve. Till, gaining that vital centre, the black bubble upward burst; and now, liberated by reason of its cunning spring, and, owing to its great buoyancy, rising with great force, the coffin life-buoy shot lengthwise from the sea, fell over, and floated by my side. Buoyed up by that coffin, for almost one whole day and night, I floated on a soft and dirgelike main. The unharming sharks, they glided by as if with padlocks on their mouths; the savage sea-hawks sailed with sheathed beaks. On the second day, a sail drew near, nearer, and picked me up at last. It was the devious-cruising Rachel, that in her retracing search after her missing children, only found another orphan.
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/copyright.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 |
11 | The Project Gutenberg EBook of Moby-Dick; or The Whale, by Herman Melville
12 |
13 |
14 |
15 | This eBook is for the use of anyone anywhere at no cost and with
16 | almost no restrictions whatsoever. You may copy it, give it away or
17 | re-use it under the terms of the Project Gutenberg License included
18 | with this eBook or online at www.gutenberg.org
19 |
20 |
21 |
22 |
23 | Title: Moby-Dick; or The Whale
24 |
25 |
26 |
27 | Author: Herman Melville
28 |
29 |
30 |
31 | Last Updated: January 3, 2009
32 |
33 |
34 | Posting Date: December 25, 2008 [EBook #2701]
35 |
36 |
37 | Release Date: June, 2001
38 |
39 |
40 |
41 | Language: English
42 |
43 |
44 |
45 | Produced by Daniel Lazarus and Jonesey
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/cover.xhtml:
--------------------------------------------------------------------------------
1 | Moby-Dick
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/fonts/STIXGeneral.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/moby-epub3-exploded/OPS/fonts/STIXGeneral.otf
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/fonts/STIXGeneralBol.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/moby-epub3-exploded/OPS/fonts/STIXGeneralBol.otf
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/fonts/STIXGeneralBolIta.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/moby-epub3-exploded/OPS/fonts/STIXGeneralBolIta.otf
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/fonts/STIXGeneralItalic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/moby-epub3-exploded/OPS/fonts/STIXGeneralItalic.otf
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/images/9780316000000.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/moby-epub3-exploded/OPS/images/9780316000000.jpg
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/images/Moby-Dick_FE_title_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/moby-epub3-exploded/OPS/images/Moby-Dick_FE_title_page.jpg
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/preface_001.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 |
11 | Original Transcriber’s Notes:
12 |
13 | This text is a combination of etexts, one from the now-defunct ERIS project at Virginia Tech and one from Project Gutenberg’s archives. The proofreaders of this version are indebted to The University of Adelaide Library for preserving the Virginia Tech version. The resulting etext was compared with a public domain hard copy version of the text.
14 | In chapters 24, 89, and 90, we substituted a capital L for the symbol for the British pound, a unit of currency.1
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/titlepage.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/OPS/toc-short.xhtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Moby-Dick
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
49 |
50 |
--------------------------------------------------------------------------------
/example/static/samples/moby-epub3-exploded/mimetype:
--------------------------------------------------------------------------------
1 | application/epub+zip
--------------------------------------------------------------------------------
/example/static/samples/moby-webpub/OEBPS/0.css:
--------------------------------------------------------------------------------
1 | /**/
2 | body {
3 | margin-left: 15%;
4 | margin-right: 15%;
5 | text-align: justify
6 | }
7 | p {
8 | text-indent: 1em;
9 | margin-top: 0.25em;
10 | margin-bottom: 0.25em
11 | }
12 | h1, h2, h3, h4, h5, h6 {
13 | text-align: center;
14 | margin-left: 15%;
15 | margin-right: 15%
16 | }
17 | hr {
18 | width: 50%;
19 | text-align: center
20 | }
21 | blockquote {
22 | font-size: 100%;
23 | margin-left: 0%;
24 | margin-right: 0%
25 | }
26 | .mynote {
27 | background-color: #DDE;
28 | color: #000;
29 | padding: 0.5em;
30 | margin-left: 10%;
31 | margin-right: 10%;
32 | font-family: sans-serif;
33 | font-size: 95%
34 | }
35 | .toc {
36 | margin-left: 10%;
37 | margin-bottom: 0.75em
38 | }
39 | pre {
40 | font-family: times new roman;
41 | font-size: 100%;
42 | margin-left: 10%
43 | }
44 | table {
45 | margin-left: 10%
46 | }
47 | a:link {
48 | color: blue;
49 | text-decoration: none
50 | }
51 | link {
52 | color: blue;
53 | text-decoration: none
54 | }
55 | a:visited {
56 | color: blue;
57 | text-decoration: none
58 | }
59 | a:hover {
60 | color: red
61 | }
62 | /**/
--------------------------------------------------------------------------------
/example/static/samples/moby-webpub/OEBPS/1.css:
--------------------------------------------------------------------------------
1 | /**/
2 | div.c15 {
3 | margin-left: 0.7em
4 | }
5 | div.c14 {
6 | text-indent: -0.7em
7 | }
8 | div.c13 {
9 | display: block;
10 | font-size: 1.1em;
11 | margin: 1em 0;
12 | font-weight: bold
13 | }
14 | div.c12 {
15 | margin: 0.83em 0;
16 | font-size: 1.1em;
17 | text-align: center
18 | }
19 | span.c11 {
20 | font-size: smaller
21 | }
22 | div.c10 {
23 | display: block;
24 | margin: 1em 0
25 | }
26 | div.c9 {
27 | display: block;
28 | margin-top: 4em
29 | }
30 | div.c8 {
31 | height: 4em
32 | }
33 | big.c7 {
34 | font-weight: bold
35 | }
36 | div.c6 {
37 | margin-top: 2em;
38 | margin-bottom: 4em
39 | }
40 | div.c5 {
41 | display: block;
42 | margin-left: 2em;
43 | text-indent: -2em
44 | }
45 | div.c4 {
46 | display: block;
47 | margin: 1em 0
48 | }
49 | div.c3 {
50 | display: block;
51 | margin-top: 1em;
52 | margin-bottom: 1em;
53 | margin-left: 2em;
54 | text-indent: -2em
55 | }
56 | div.c2 {
57 | display: block;
58 | margin: 1em 0
59 | }
60 | div.c1 {
61 | text-align: center;
62 | font-size: 1.2em;
63 | font-weight: bold
64 | }
65 | /**/
--------------------------------------------------------------------------------
/example/static/samples/moby-webpub/OEBPS/@export@sunsite@users@gutenbackend@cache@epub@2701@2701-cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NYPL/web-reader/f652d3f3e3ad7a4182ab572289dba1a5461e6cd4/example/static/samples/moby-webpub/OEBPS/@export@sunsite@users@gutenbackend@cache@epub@2701@2701-cover.png
--------------------------------------------------------------------------------
/example/static/samples/moby-webpub/OEBPS/@public@vhost@g@gutenberg@html@files@2701@2701-h@2701-h-24.htm.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | The Project Gutenberg eBook of Moby Dick; Or the Whale, by Herman Melville
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | Section 5. General Information About Project Gutenberg™ electronic works
19 | Professor Michael S. Hart was the originator of the Project Gutenberg™ concept of a library of electronic works that could be freely shared with anyone. For forty years, he produced and distributed Project Gutenberg™ eBooks with only a loose network of volunteer support.
20 | Project Gutenberg™ eBooks are often created from several printed editions, all of which are confirmed as not protected by copyright in the U.S. unless a copyright notice is included. Thus, we do not necessarily keep eBooks in compliance with any particular paper edition.
21 | Most people start at our website which has the main PG search facility:
www.gutenberg.org .
22 | This website includes information about Project Gutenberg™, including how to make donations to the Project Gutenberg Literary Archive Foundation, how to help produce our new eBooks, and how to subscribe to our email newsletter to hear about new eBooks.
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/static/samples/moby-webpub/OEBPS/pgepub.css:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 | body, body.tei.tei-text {
3 | color: black;
4 | background-color: white;
5 | margin: 0.5em;
6 | width: auto;
7 | border: 0;
8 | padding: 0
9 | }
10 | div, p, pre, h1, h2, h3, h4, h5, h6 {
11 | margin-left: 0;
12 | margin-right: 0;
13 | display: block
14 | }
15 | div.pgebub-root-div {
16 | margin: 0
17 | }
18 | h2 {
19 | page-break-before: always;
20 | padding-top: 1em
21 | }
22 | div.figcenter span.caption {
23 | display: block
24 | }
25 | .pgmonospaced {
26 | font-family: monospace;
27 | font-size: 0.9em
28 | }
29 | a.pgkilled {
30 | text-decoration: none
31 | }
--------------------------------------------------------------------------------
/example/static/samples/moby-webpub/OEBPS/wrap0000.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | "Cover"
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/example/static/samples/pdf/single-resource-long.json:
--------------------------------------------------------------------------------
1 | {
2 | "context": "https://drb-files-qa-s3.amazonaws.com/manifests/context.jsonld",
3 | "metadata": {
4 | "@type": "https://schema.org/Book",
5 | "title": "Pioneers of Zionism: Hess, Pinsker, R\u00fclf Messianism, Settlement Policy, and the Israeli-Palestinian Conflict",
6 | "author": "Schoeps, Julius H.",
7 | "identifier": "urn:isbn:9783110314724",
8 | "conformsTo": "http://librarysimplified.org/terms/profiles/pdf"
9 | },
10 | "links": [
11 | {
12 | "href": "https://www.degruyter.com/document/doi/10.1515/9783110314724/pdf",
13 | "type": "application/pdf",
14 | "rel": "alternate"
15 | },
16 | {
17 | "rel": "self",
18 | "href": "https://drb-files-qa.s3.amazonaws.com/manifests/degruyter/9783110314724.json",
19 | "type": "application/webpub+json"
20 | }
21 | ],
22 | "readingOrder": [
23 | {
24 | "href": "https://www.degruyter.com/document/doi/10.1515/9783110314724/pdf",
25 | "title": "Pioneers of Zionism: Hess, Pinsker, R\u00fclf Messianism, Settlement Policy, and the Israeli-Palestinian Conflict",
26 | "type": "application/pdf"
27 | }
28 | ],
29 | "resources": [
30 | {
31 | "href": "https://www.degruyter.com/document/doi/10.1515/9783110314724/pdf",
32 | "type": "application/pdf"
33 | }
34 | ],
35 | "toc": [
36 | {
37 | "href": "https://www.degruyter.com/document/doi/10.1515/9783110314724/pdf",
38 | "title": "Pioneers of Zionism: Hess, Pinsker, R\u00fclf Messianism, Settlement Policy, and the Israeli-Palestinian Conflict"
39 | }
40 | ]
41 | }
--------------------------------------------------------------------------------
/example/static/samples/pdf/single-resource-short.json:
--------------------------------------------------------------------------------
1 | {
2 | "context": "https://drb-files-qa-s3.amazonaws.com/manifests/context.jsonld",
3 | "metadata": {
4 | "@type": "https://schema.org/Book",
5 | "title": "EIB Working Paper 2021/03 - Assessing climate change risks at the country level",
6 | "author": "Ferrazzi, Matteo",
7 | "conformsTo": "http://librarysimplified.org/terms/profiles/pdf"
8 | },
9 | "links": [
10 | {
11 | "href": "https://library.oapen.org/bitstream/20.500.12657/50076/1/9789286150340.pdf",
12 | "type": "application/pdf",
13 | "rel": "alternate"
14 | },
15 | {
16 | "rel": "self",
17 | "href": "https://drb-files-qa.s3.amazonaws.com/manifests/doab/20.500.12854/71362.json",
18 | "type": "application/webpub+json"
19 | }
20 | ],
21 | "readingOrder": [
22 | {
23 | "href": "https://library.oapen.org/bitstream/20.500.12657/50076/1/9789286150340.pdf",
24 | "title": "EIB Working Paper 2021/03 - Assessing climate change risks at the country level",
25 | "type": "application/pdf"
26 | }
27 | ],
28 | "resources": [
29 | {
30 | "href": "https://library.oapen.org/bitstream/20.500.12657/50076/1/9789286150340.pdf",
31 | "type": "application/pdf"
32 | }
33 | ],
34 | "toc": [
35 | {
36 | "href": "https://library.oapen.org/bitstream/20.500.12657/50076/1/9789286150340.pdf",
37 | "title": "EIB Working Paper 2021/03 - Assessing climate change risks at the country level"
38 | }
39 | ]
40 | }
--------------------------------------------------------------------------------
/example/static/samples/test/missing-resource.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": "https://readium.org/webpub-manifest/context.jsonld",
3 | "metadata": {
4 | "title": "Moby Dick; Or, The Whale",
5 | "language": "en",
6 | "author": "Herman Melville"
7 | },
8 | "resources": [
9 | {
10 | "href": "OEBPS/@export@sunsite@users@gutenbackend@cache@epub@2701@2701-cover.png",
11 | "type": "image/png",
12 | "id": "item1"
13 | },
14 | { "href": "OEBPS/pgepub.css", "type": "text/css", "id": "item2" },
15 | { "href": "OEBPS/0.css", "type": "text/css", "id": "item3" },
16 | { "href": "OEBPS/1.css", "type": "text/css", "id": "item4" },
17 | { "href": "OEBPS/toc.ncx", "type": "application/x-dtbncx+xml", "id": "ncx" }
18 | ],
19 | "readingOrder": [
20 | {
21 | "href": "OEBPS/non-existent.html",
22 | "type": "application/xhtml+xml",
23 | "id": "coverpage-wrapper"
24 | },
25 | {
26 | "href": "OEBPS/@public@vhost@g@gutenberg@html@files@2701@2701-h@2701-h-0.htm.html",
27 | "type": "application/xhtml+xml",
28 | "id": "item5"
29 | }
30 | ],
31 | "toc": [
32 | {
33 | "title": "MOBY-DICK; or, THE WHALE.",
34 | "href": "OEBPS/@public@vhost@g@gutenberg@html@files@2701@2701-h@2701-h-0.htm.html#pgepubid00000"
35 | }
36 | ],
37 | "links": []
38 | }
39 |
--------------------------------------------------------------------------------
/example/static/samples/test/missing-toc.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": "https://readium.org/webpub-manifest/context.jsonld",
3 | "metadata": {
4 | "title": "Moby-Dick",
5 | "language": "en-US",
6 | "author": "Herman Melville"
7 | },
8 | "resources": [],
9 | "readingOrder": [
10 | {
11 | "href": "OPS/copyright.html",
12 | "type": "text/html",
13 | "id": "copyright"
14 | }
15 | ],
16 | "toc": [],
17 | "links": []
18 | }
19 |
--------------------------------------------------------------------------------
/example/static/samples/test/unparsable-manifst.json:
--------------------------------------------------------------------------------
1 | this is not a valid json file.
--------------------------------------------------------------------------------
/example/static/samples/test/unparseable-manifst.json:
--------------------------------------------------------------------------------
1 | this is not a valid json file.
--------------------------------------------------------------------------------
/example/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "include": [".", "../src"],
4 | "compilerOptions": {
5 | "module": "esnext",
6 | "resolveJsonModule": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/example/use-html-reader.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { useHtmlReader } from '../src';
3 | import { Injectable } from '../src/Readium/Injectable';
4 | import { WebpubManifest } from '../src/types';
5 | import Footer from '../src/ui/Footer';
6 | import Header from '../src/ui/Header';
7 |
8 | type HTMLReaderProps = {
9 | injectablesReflowable: Injectable[];
10 | webpubManifestUrl: string;
11 | manifest: WebpubManifest;
12 | };
13 |
14 | /**
15 | * This sample shows setting how to use the useHTMLReader hook
16 | * to render EPUBs. Use it when you know you're _not_ going to be
17 | * opening PDFs.
18 | */
19 | const UseHtmlReader: React.FC = ({
20 | injectablesReflowable,
21 | webpubManifestUrl,
22 | manifest,
23 | }) => {
24 | const reader = useHtmlReader({
25 | webpubManifestUrl,
26 | manifest,
27 | injectablesReflowable,
28 | });
29 | const containerRef = React.useRef(null);
30 |
31 | if (!reader || !reader.type) {
32 | return null;
33 | }
34 |
35 | return (
36 |
37 | Back}
40 | containerRef={containerRef}
41 | />
42 | {reader.content}
43 |
44 |
45 | );
46 | };
47 |
48 | export default UseHtmlReader;
49 |
--------------------------------------------------------------------------------
/example/use-pdf-reader.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { usePdfReader } from '../src';
3 | import { WebpubManifest } from '../src/types';
4 | import Footer from '../src/ui/Footer';
5 | import Header from '../src/ui/Header';
6 |
7 | type PDFReaderProps = {
8 | webpubManifestUrl: string;
9 | manifest: WebpubManifest;
10 | proxyUrl: string | undefined;
11 | pdfWorkerSrc: string;
12 | };
13 |
14 | /**
15 | * This sample shows setting how to use the usePdfReader hook
16 | * to render PDFs. Use it when you know you're _not_ going to be
17 | * opening EPUBs.
18 | */
19 | const UsePdfReader: React.FC = ({
20 | webpubManifestUrl,
21 | manifest,
22 | proxyUrl,
23 | pdfWorkerSrc,
24 | }) => {
25 | const reader = usePdfReader({
26 | webpubManifestUrl,
27 | manifest,
28 | proxyUrl,
29 | pdfWorkerSrc,
30 | });
31 | const containerRef = React.useRef(null);
32 |
33 | if (!reader || !reader.type) {
34 | return null;
35 | }
36 |
37 | return (
38 |
39 | Back}
42 | containerRef={containerRef}
43 | />
44 | {reader.content}
45 |
46 |
47 | );
48 | };
49 |
50 | export default UsePdfReader;
51 |
--------------------------------------------------------------------------------
/jest.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from '@jest/types';
2 |
3 | const config: Config.InitialOptions = {
4 | transform: {
5 | // '.(ts|tsx)$': require.resolve('ts-jest/dist'),
6 | '^.+\\.tsx?$': 'esbuild-jest',
7 | '^.+\\.jsx?$': 'esbuild-jest',
8 | '.(js|jsx)$': require.resolve('babel-jest'), // jest's default
9 | },
10 | transformIgnorePatterns: ['[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$'],
11 | testPathIgnorePatterns: ['/playwright/'],
12 | moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
13 | collectCoverageFrom: ['src/**/*.{ts,tsx,js,jsx}'],
14 | testMatch: ['/**/*.(spec|test).{ts,tsx,js,jsx}'],
15 | rootDir: '.',
16 | watchPlugins: [
17 | require.resolve('jest-watch-typeahead/filename'),
18 | require.resolve('jest-watch-typeahead/testname'),
19 | ],
20 | moduleNameMapper: {
21 | '\\.(css|less)$': '/tests/cssStub.js',
22 | },
23 | snapshotSerializers: ['@emotion/jest/serializer'],
24 | setupFilesAfterEnv: ['/tests/jest.setup.ts'],
25 | testEnvironment: 'jsdom',
26 | };
27 |
28 | export default config;
29 |
--------------------------------------------------------------------------------
/playwright/tests/test.spec.ts:
--------------------------------------------------------------------------------
1 | import { test, expect } from '@playwright/test';
2 |
3 | test('Open moby-epub3', async ({ page }) => {
4 | await page.goto('/html/moby-epub3');
5 | await expect(page.getByLabel('Return to Homepage')).toBeVisible();
6 | });
7 |
--------------------------------------------------------------------------------
/src/HtmlReader/ReadiumCss/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2017, Readium
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | * Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | * Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 |
--------------------------------------------------------------------------------
/src/HtmlReader/injectable-styles.css:
--------------------------------------------------------------------------------
1 | @import './ReadiumCss/ReadiumCSS-before.css';
2 | @import './ReadiumCss/ReadiumCSS-default.css';
3 | @import './ReadiumCss/ReadiumCSS-after.css';
4 |
--------------------------------------------------------------------------------
/src/HtmlReader/useIframeLinkClick.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { WebpubManifest } from '../WebpubManifestTypes/WebpubManifest';
3 | import { getFromReadingOrder } from './lib';
4 | import { HtmlAction } from './types';
5 |
6 | export default function useIframeLinkClick(
7 | baseUrl: string | undefined,
8 | manifest: WebpubManifest | undefined,
9 | dispatch: React.Dispatch
10 | ): void {
11 | React.useEffect(() => {
12 | if (!baseUrl || !manifest) return;
13 |
14 | const messageHandler = ({ data }: { data: MessageEvent['data'] }) => {
15 | if (typeof data === 'object' && data !== null && 'type' in data) {
16 | switch (data.type) {
17 | case 'LINK_CLICKED':
18 | handleIframeLink(data.href, manifest, baseUrl, dispatch);
19 | }
20 | }
21 | };
22 |
23 | window.addEventListener('message', messageHandler);
24 |
25 | return () => window.removeEventListener('message', messageHandler);
26 | }, [dispatch, baseUrl, manifest]);
27 | }
28 |
29 | const handleIframeLink = (
30 | href: string,
31 | manifest: WebpubManifest,
32 | baseUrl: string,
33 | dispatch: React.Dispatch
34 | ) => {
35 | if (isExternalLink(href, manifest, baseUrl)) {
36 | window.open(href, '_blank');
37 | } else {
38 | dispatch({ type: 'GO_TO_HREF', href: href });
39 | }
40 | };
41 |
42 | // If the href doesn't exist in the readingOrder, it's not
43 | // part of the book link, we can say this is an external link
44 | const isExternalLink = (
45 | href: string,
46 | manifest: WebpubManifest,
47 | baseUrl: string
48 | ) => {
49 | const resource = getFromReadingOrder(href, manifest, baseUrl);
50 | return resource === undefined;
51 | };
52 |
--------------------------------------------------------------------------------
/src/HtmlReader/useUpdateCSS.ts:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { WebpubManifest } from '../types';
3 | import { setReflowableCss } from './effects';
4 | import { getMaybeIframeHtml } from './lib';
5 | import { HtmlState } from './types';
6 |
7 | /**
8 | * Set CSS variables when user state changes
9 | */
10 | export default function useUpdateCSS(
11 | state: HtmlState,
12 | manifest: WebpubManifest | undefined
13 | ): void {
14 | React.useEffect(() => {
15 | if (!manifest) return;
16 | if (state.state !== 'NAVIGATING' && state.state !== 'READY') return;
17 | const html = getMaybeIframeHtml(state.iframe);
18 | if (!html) return;
19 | setReflowableCss(html, state.settings);
20 | }, [state.state, state.iframe, state.settings, manifest]);
21 | }
22 |
--------------------------------------------------------------------------------
/src/HtmlReader/useUpdateScroll.ts:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { HtmlAction, HtmlState } from './types';
3 |
4 | const SCROLL_STOP_DEBOUNCE = 100;
5 |
6 | /**
7 | * Dispatch a USER_SCROLLED event after some delay
8 | */
9 | export function useUpdateScroll(
10 | state: HtmlState,
11 | dispatch: React.Dispatch
12 | ): void {
13 | const timeout = React.useRef();
14 |
15 | React.useLayoutEffect(() => {
16 | if (state.state !== 'READY') return;
17 | const iframeDocument = state.iframe.contentDocument;
18 | if (!iframeDocument) return;
19 |
20 | function handleScroll() {
21 | if (timeout.current) clearTimeout(timeout.current);
22 | timeout.current = window.setTimeout(() => {
23 | dispatch({ type: 'USER_SCROLLED' });
24 | }, SCROLL_STOP_DEBOUNCE);
25 | }
26 | iframeDocument.addEventListener('scroll', handleScroll);
27 | return () => iframeDocument.removeEventListener('scroll', handleScroll);
28 | }, [state.state, state.iframe, dispatch]);
29 | }
30 |
--------------------------------------------------------------------------------
/src/HtmlReader/useWindowResize.ts:
--------------------------------------------------------------------------------
1 | import debounce from 'debounce';
2 | import React from 'react';
3 | import { WebpubManifest } from '../types';
4 | import { setFixedCss } from './effects';
5 | import { HtmlAction, HtmlState } from './types';
6 |
7 | /**
8 | * Simply dispatches an action when the window is resized.
9 | */
10 | export default function useWindowResize(
11 | manifest: WebpubManifest | undefined,
12 | state: HtmlState,
13 | dispatch: React.Dispatch
14 | ): void {
15 | React.useEffect(() => {
16 | if (state.state !== 'NAVIGATING' && state.state !== 'READY') return;
17 | function handleResize() {
18 | const iframeDocument = state.iframe?.contentDocument as Document;
19 | const iframeContainer = window.document.querySelector(
20 | 'main'
21 | ) as HTMLElement;
22 |
23 | const isFixedLayout =
24 | manifest?.metadata?.presentation?.layout === 'fixed';
25 | if (isFixedLayout) setFixedCss(iframeDocument, iframeContainer);
26 |
27 | dispatch({
28 | type: 'WINDOW_RESIZED',
29 | });
30 | }
31 |
32 | const deboucedHandleResize = debounce(handleResize, 100);
33 | window.addEventListener('resize', deboucedHandleResize);
34 | return () => window.removeEventListener('resize', deboucedHandleResize);
35 | }, [dispatch, manifest, state]);
36 | }
37 |
--------------------------------------------------------------------------------
/src/PdfReader/ChakraPage.tsx:
--------------------------------------------------------------------------------
1 | import { Page } from 'react-pdf';
2 | import { chakra, shouldForwardProp } from '@chakra-ui/react';
3 |
4 | // Wrap Page component so that we can pass it styles
5 | const ChakraPage = chakra(Page, {
6 | shouldForwardProp: (prop) => {
7 | // Definitely forward width and height
8 | if (['width', 'height', 'scale'].includes(prop)) return true;
9 | // don't forward the rest of Chakra's props
10 | const isChakraProp = !shouldForwardProp(prop);
11 | if (isChakraProp) return false;
12 | // else, only forward `sample` prop
13 | return true;
14 | },
15 | baseStyle: {
16 | outline: '1px',
17 | outlineColor: 'ui.gray.light-cool',
18 | },
19 | });
20 |
21 | export default ChakraPage;
22 |
--------------------------------------------------------------------------------
/src/PdfReader/ScrollPage.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import ChakraPage from './ChakraPage';
3 | import { useInView } from 'react-intersection-observer';
4 | import { PageProps } from 'react-pdf';
5 |
6 | type ScrollPageProps = {
7 | pageNumber: number;
8 | width: number | undefined;
9 | scale: number;
10 | onLoadSuccess: (page: PageProps) => void;
11 | placeholderHeight: number;
12 | placeholderWidth: number;
13 | };
14 |
15 | type PlaceholderProps = {
16 | height: number;
17 | width: number | undefined;
18 | pageNumber: number;
19 | };
20 |
21 | const Placeholder: FC = ({ width, height, pageNumber }) => {
22 | return (
23 |
28 | );
29 | };
30 |
31 | const ScrollPage: FC = ({
32 | scale,
33 | pageNumber,
34 | width,
35 | onLoadSuccess,
36 | placeholderHeight,
37 | placeholderWidth,
38 | }) => {
39 | const { ref, inView } = useInView({
40 | threshold: 0,
41 | triggerOnce: true,
42 | });
43 |
44 | return (
45 |
46 | {inView ? (
47 |
55 | ) : (
56 |
61 | )}
62 |
63 | );
64 | };
65 |
66 | export default ScrollPage;
67 |
--------------------------------------------------------------------------------
/src/PdfReader/pdf.css:
--------------------------------------------------------------------------------
1 | /* CSS from react-pdf in order to make links clickable */
2 | @import url('../../node_modules/react-pdf/dist/esm/Page/AnnotationLayer.css');
3 | /* CSS from react-pdf for text layer */
4 | @import url('../../node_modules/react-pdf/dist/esm/Page/TextLayer.css');
5 |
--------------------------------------------------------------------------------
/src/PdfReader/types.ts:
--------------------------------------------------------------------------------
1 | import {
2 | ActiveReaderArguments,
3 | InactiveReaderArguments,
4 | ReaderSettings,
5 | ReaderState,
6 | } from '../types';
7 |
8 | export type InternalState = {
9 | resourceIndex: number;
10 | resource: { data: Uint8Array } | null;
11 | // we only know the numPages once the resource has been parsed
12 | numPages: number | null;
13 | // if pageNumber is -1, we will navigate to the end of the
14 | // resource once it is parsed
15 | pageNumber: number;
16 | scale: number;
17 | pdfHeight: number;
18 | pdfWidth: number;
19 | pageHeight: number | undefined;
20 | pageWidth: number | undefined;
21 | rendered: boolean;
22 | };
23 |
24 | export type InactiveState = ReaderState &
25 | InternalState & { state: 'INACTIVE'; settings: undefined };
26 |
27 | export type ActiveState = ReaderState &
28 | InternalState & { state: 'ACTIVE'; settings: ReaderSettings };
29 |
30 | export type ErrorState = ReaderState &
31 | InternalState & {
32 | state: 'ERROR';
33 | error: Error;
34 | settings: ReaderSettings;
35 | };
36 |
37 | export type PdfState = InactiveState | ActiveState | ErrorState;
38 |
39 | export type PdfReaderArguments =
40 | | ActiveReaderArguments
41 | | InactiveReaderArguments;
42 |
43 | export type PdfReaderAction =
44 | | {
45 | type: 'ARGS_CHANGED';
46 | args: PdfReaderArguments;
47 | }
48 | | { type: 'GO_FORWARD' }
49 | | { type: 'GO_BACKWARD' }
50 | | { type: 'GO_TO_HREF'; href: string }
51 | | { type: 'RESOURCE_FETCH_SUCCESS'; resource: { data: Uint8Array } }
52 | | { type: 'PDF_PARSED'; numPages: number }
53 | | { type: 'PDF_LOAD_ERROR'; error: Error }
54 | | { type: 'SET_SCALE'; scale: number }
55 | | { type: 'SET_SCROLL'; isScrolling: boolean }
56 | | { type: 'PAGE_LOAD_SUCCESS'; height: number; width: number }
57 | | {
58 | type: 'RESIZE_PAGE';
59 | height: number | undefined;
60 | width: number | undefined;
61 | }
62 | | { type: 'BOOK_BOUNDARY_CHANGED'; atStart: boolean; atEnd: boolean };
63 |
--------------------------------------------------------------------------------
/src/Readium/Injectable.ts:
--------------------------------------------------------------------------------
1 | export interface Injectable {
2 | type: string;
3 | url?: string;
4 | r2after?: boolean;
5 | r2before?: boolean;
6 | r2default?: boolean;
7 | fontFamily?: string;
8 | systemFont?: boolean;
9 | appearance?: string;
10 | async?: boolean;
11 | }
12 |
--------------------------------------------------------------------------------
/src/Readium/Locator.ts:
--------------------------------------------------------------------------------
1 | export interface Locator {
2 | href: string;
3 | type?: string;
4 | title?: string;
5 | locations: Locations;
6 | text?: LocatorText;
7 | }
8 | export interface LocatorText {
9 | after?: string;
10 | before?: string;
11 | highlight?: string;
12 | }
13 | export interface Locations {
14 | fragment?: string;
15 | progression?: number;
16 | position?: number;
17 | totalProgression?: number;
18 | remainingPositions?: number;
19 | totalRemainingPositions?: number;
20 | }
21 |
--------------------------------------------------------------------------------
/src/WebpubManifestTypes/ConformsTo.ts:
--------------------------------------------------------------------------------
1 | // a webpub pdf collection
2 | export const WebpubPdfConformsTo =
3 | 'http://librarysimplified.org/terms/profiles/pdf';
4 | // Epub profiles
5 | export const EpubConformsTo =
6 | 'https://readium.org/webpub-manifest/profiles/epub';
7 |
8 | export type ConformsTo = typeof WebpubPdfConformsTo | typeof EpubConformsTo;
9 |
--------------------------------------------------------------------------------
/src/WebpubManifestTypes/Contributor.ts:
--------------------------------------------------------------------------------
1 | import { ReadiumLink } from './ReadiumLink';
2 |
3 | export interface ContributorObject {
4 | name:
5 | | string
6 | | {
7 | /**
8 | * This interface was referenced by `undefined`'s JSON-Schema definition
9 | * via the `patternProperty` "^((?(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))|((?([A-Za-z]{2,3}(-(?[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?