├── .gitmodules ├── COPYING ├── Makefile.am ├── NEWS ├── README.md ├── autogen.sh ├── configure.ac ├── data ├── Makefile.am ├── org.gnome.Books.appdata.xml.in ├── org.gnome.Books.desktop.in ├── org.gnome.Books.search-provider.ini └── org.gnome.books.gschema.xml ├── epub.js ├── .jshintrc ├── .nojekyll ├── Gruntfile.js ├── README.md ├── build │ ├── epub.js │ ├── epub.js.map │ ├── epub.min.js │ ├── epub.min.map │ ├── epub_no_underscore.js │ ├── epub_no_underscore.js.map │ ├── hooks.js │ ├── hooks.js.map │ ├── hooks.min.js │ ├── hooks.min.map │ ├── libs │ │ ├── inflate.js │ │ ├── inflate.map │ │ ├── screenfull.min.js │ │ ├── zip.min.js │ │ └── zip.min.map │ ├── reader.js │ ├── reader.js.map │ ├── reader.min.js │ └── reader.min.map ├── documentation │ └── README.md ├── examples │ ├── android-patch.html │ ├── annotator.html │ ├── backbone.html │ ├── basic-dev.html │ ├── basic.css │ ├── basic.html │ ├── contained.html │ ├── custom-elements.html │ ├── fixed.html │ ├── hypothesis.html │ ├── index.html │ ├── mathml.html │ ├── page_list.json │ ├── pagination.html │ ├── promises.html │ ├── search.html │ ├── single.html │ └── single1.html ├── hooks │ ├── default │ │ ├── endnotes.js │ │ ├── mathml.js │ │ ├── smartimages.js │ │ └── transculsions.js │ └── extensions │ │ ├── annotate.js │ │ ├── embedh.js │ │ ├── example.js │ │ ├── highlight.js │ │ ├── hypothesis.js │ │ ├── music.js │ │ └── pageturns.js ├── index.html ├── libs │ ├── annotator │ │ ├── annotator-full.js │ │ ├── css │ │ │ └── annotator.css │ │ ├── img │ │ │ ├── annotator-glyph-sprite.png │ │ │ └── annotator-icon-sprite.png │ │ ├── lib │ │ │ ├── annotator.js │ │ │ ├── annotator.map │ │ │ ├── class.js │ │ │ ├── class.map │ │ │ ├── console.js │ │ │ ├── console.map │ │ │ ├── editor.js │ │ │ ├── editor.map │ │ │ ├── helpers │ │ │ │ ├── spec_helper.js │ │ │ │ └── spec_helper.map │ │ │ ├── notification.js │ │ │ ├── notification.map │ │ │ ├── plugin │ │ │ │ ├── annotateitpermissions.js │ │ │ │ ├── annotateitpermissions.map │ │ │ │ ├── auth.js │ │ │ │ ├── auth.map │ │ │ │ ├── document.js │ │ │ │ ├── document.map │ │ │ │ ├── filter.js │ │ │ │ ├── filter.map │ │ │ │ ├── kitchensink.js │ │ │ │ ├── kitchensink.map │ │ │ │ ├── markdown.js │ │ │ │ ├── markdown.map │ │ │ │ ├── permissions.js │ │ │ │ ├── permissions.map │ │ │ │ ├── store.js │ │ │ │ ├── store.map │ │ │ │ ├── tags.js │ │ │ │ ├── tags.map │ │ │ │ ├── unsupported.js │ │ │ │ └── unsupported.map │ │ │ ├── preamble.js │ │ │ ├── preamble.map │ │ │ ├── range.js │ │ │ ├── range.map │ │ │ ├── spec │ │ │ │ ├── annotator_spec.js │ │ │ │ ├── annotator_spec.map │ │ │ │ ├── class_spec.js │ │ │ │ ├── class_spec.map │ │ │ │ ├── console_spec.js │ │ │ │ ├── console_spec.map │ │ │ │ ├── editor_spec.js │ │ │ │ ├── editor_spec.map │ │ │ │ ├── notification_spec.js │ │ │ │ ├── notification_spec.map │ │ │ │ ├── plugin │ │ │ │ │ ├── annotateitpermissions_spec.js │ │ │ │ │ ├── annotateitpermissions_spec.map │ │ │ │ │ ├── auth_spec.js │ │ │ │ │ ├── auth_spec.map │ │ │ │ │ ├── document_spec.js │ │ │ │ │ ├── document_spec.map │ │ │ │ │ ├── filter_spec.js │ │ │ │ │ ├── filter_spec.map │ │ │ │ │ ├── kitchensink_spec.js │ │ │ │ │ ├── kitchensink_spec.map │ │ │ │ │ ├── markdown_spec.js │ │ │ │ │ ├── markdown_spec.map │ │ │ │ │ ├── permissions_spec.js │ │ │ │ │ ├── permissions_spec.map │ │ │ │ │ ├── store_spec.js │ │ │ │ │ ├── store_spec.map │ │ │ │ │ ├── tags_spec.js │ │ │ │ │ ├── tags_spec.map │ │ │ │ │ ├── unsupported_spec.js │ │ │ │ │ └── unsupported_spec.map │ │ │ │ ├── range_spec.js │ │ │ │ ├── range_spec.map │ │ │ │ ├── util_spec.js │ │ │ │ ├── util_spec.map │ │ │ │ ├── viewer_spec.js │ │ │ │ ├── viewer_spec.map │ │ │ │ ├── widget_spec.js │ │ │ │ └── widget_spec.map │ │ │ ├── util.js │ │ │ ├── util.map │ │ │ ├── vendor │ │ │ │ ├── gettext.js │ │ │ │ ├── jquery.js │ │ │ │ ├── json2.js │ │ │ │ ├── showdown.js │ │ │ │ └── xpath.js │ │ │ ├── viewer.js │ │ │ ├── viewer.map │ │ │ ├── widget.js │ │ │ ├── widget.map │ │ │ ├── xpath.js │ │ │ └── xpath.map │ │ └── util.js │ ├── backbone │ │ ├── backbone-min.js │ │ └── backbone-min.map │ ├── fileStorage │ │ ├── fileStorage.js │ │ ├── fileStorage.min.js │ │ └── workers │ │ │ ├── loader_filesystem.js │ │ │ └── loader_filesystem.min.js │ ├── jquery │ │ ├── jquery-2.1.0.js │ │ ├── jquery-2.1.0.min.js │ │ └── jquery-2.1.0.min.map │ ├── polymer │ │ ├── custom-elements.min.js │ │ ├── platform.min.js │ │ ├── platform.min.js.map │ │ ├── platform.native.min.js │ │ ├── platform.native.min.js.map │ │ ├── platform.sandbox.min.js │ │ ├── platform.sandbox.min.js.map │ │ ├── polymer.min.js │ │ ├── polymer.min.js.map │ │ ├── polymer.native.min.js │ │ ├── polymer.native.min.js.map │ │ ├── polymer.sandbox.min.js │ │ └── polymer.sandbox.min.js.map │ ├── rsvp │ │ └── rsvp.js │ ├── screenfull.min.js │ ├── underscore │ │ ├── underscore-min.js │ │ └── underscore.js │ ├── urljs │ │ ├── README.md │ │ ├── url-min.js │ │ └── url.js │ └── zip │ │ ├── deflate.js │ │ ├── inflate.js │ │ ├── mime-types.js │ │ ├── zip-ext.js │ │ ├── zip-fs.js │ │ └── zip.js ├── license ├── package.json ├── reader │ ├── css │ │ ├── annotations.css │ │ ├── main.css │ │ ├── normalize.css │ │ └── popup.css │ ├── dev.html │ ├── font │ │ ├── fontello.eot │ │ ├── fontello.svg │ │ ├── fontello.ttf │ │ └── fontello.woff │ ├── humans.txt │ ├── img │ │ ├── .gitignore │ │ ├── annotator-glyph-sprite.png │ │ ├── annotator-icon-sprite.png │ │ ├── apple-touch-icon.png │ │ ├── cancelfullscreen.png │ │ ├── close.png │ │ ├── fullscreen.png │ │ ├── loader.gif │ │ ├── menu-icon.png │ │ ├── save.png │ │ ├── saved.png │ │ ├── settings-s.png │ │ ├── settings.png │ │ └── star.png │ ├── index.html │ ├── js │ │ ├── epub.js.map │ │ ├── epub.min.js │ │ ├── hooks.js.map │ │ ├── hooks.min.js │ │ ├── hooks │ │ │ └── extensions │ │ │ │ └── highlight.js │ │ ├── libs │ │ │ ├── fileStorage.min.js │ │ │ ├── inflate.js │ │ │ ├── inflate.min.js │ │ │ ├── jquery-2.1.0.min.js │ │ │ ├── jquery.highlight.js │ │ │ ├── loader_filesystem.min.js │ │ │ ├── screenfull.min.js │ │ │ └── zip.min.js │ │ ├── plugins │ │ │ ├── hypothesis.js │ │ │ └── search.js │ │ └── reader.min.js │ ├── moby-dick.epub │ ├── moby-dick │ │ ├── META-INF │ │ │ └── container.xml │ │ ├── OPS │ │ │ ├── chapter_001.html │ │ │ ├── chapter_001.xhtml │ │ │ ├── chapter_002.xhtml │ │ │ ├── chapter_003.xhtml │ │ │ ├── chapter_004.xhtml │ │ │ ├── chapter_005.xhtml │ │ │ ├── chapter_006.xhtml │ │ │ ├── chapter_007.xhtml │ │ │ ├── chapter_008.xhtml │ │ │ ├── chapter_009.xhtml │ │ │ ├── chapter_010.xhtml │ │ │ ├── chapter_011.xhtml │ │ │ ├── chapter_012.xhtml │ │ │ ├── chapter_013.xhtml │ │ │ ├── chapter_014.xhtml │ │ │ ├── chapter_015.xhtml │ │ │ ├── chapter_016.xhtml │ │ │ ├── chapter_017.xhtml │ │ │ ├── chapter_018.xhtml │ │ │ ├── chapter_019.xhtml │ │ │ ├── chapter_020.xhtml │ │ │ ├── chapter_021.xhtml │ │ │ ├── chapter_022.xhtml │ │ │ ├── chapter_023.xhtml │ │ │ ├── chapter_024.xhtml │ │ │ ├── chapter_025.xhtml │ │ │ ├── chapter_026.xhtml │ │ │ ├── chapter_027.xhtml │ │ │ ├── chapter_028.xhtml │ │ │ ├── chapter_029.xhtml │ │ │ ├── chapter_030.xhtml │ │ │ ├── chapter_031.xhtml │ │ │ ├── chapter_032.xhtml │ │ │ ├── chapter_033.xhtml │ │ │ ├── chapter_034.xhtml │ │ │ ├── chapter_035.xhtml │ │ │ ├── chapter_036.xhtml │ │ │ ├── chapter_037.xhtml │ │ │ ├── chapter_038.xhtml │ │ │ ├── chapter_039.xhtml │ │ │ ├── chapter_040.xhtml │ │ │ ├── chapter_041.xhtml │ │ │ ├── chapter_042.xhtml │ │ │ ├── chapter_043.xhtml │ │ │ ├── chapter_044.xhtml │ │ │ ├── chapter_045.xhtml │ │ │ ├── chapter_046.xhtml │ │ │ ├── chapter_047.xhtml │ │ │ ├── chapter_048.xhtml │ │ │ ├── chapter_049.xhtml │ │ │ ├── chapter_050.xhtml │ │ │ ├── chapter_051.xhtml │ │ │ ├── chapter_052.xhtml │ │ │ ├── chapter_053.xhtml │ │ │ ├── chapter_054.xhtml │ │ │ ├── chapter_055.xhtml │ │ │ ├── chapter_056.xhtml │ │ │ ├── chapter_057.xhtml │ │ │ ├── chapter_058.xhtml │ │ │ ├── chapter_059.xhtml │ │ │ ├── chapter_060.xhtml │ │ │ ├── chapter_061.xhtml │ │ │ ├── chapter_062.xhtml │ │ │ ├── chapter_063.xhtml │ │ │ ├── chapter_064.xhtml │ │ │ ├── chapter_065.xhtml │ │ │ ├── chapter_066.xhtml │ │ │ ├── chapter_067.xhtml │ │ │ ├── chapter_068.xhtml │ │ │ ├── chapter_069.xhtml │ │ │ ├── chapter_070.xhtml │ │ │ ├── chapter_071.xhtml │ │ │ ├── chapter_072.xhtml │ │ │ ├── chapter_073.xhtml │ │ │ ├── chapter_074.xhtml │ │ │ ├── chapter_075.xhtml │ │ │ ├── chapter_076.xhtml │ │ │ ├── chapter_077.xhtml │ │ │ ├── chapter_078.xhtml │ │ │ ├── chapter_079.xhtml │ │ │ ├── chapter_080.xhtml │ │ │ ├── chapter_081.xhtml │ │ │ ├── chapter_082.xhtml │ │ │ ├── chapter_083.xhtml │ │ │ ├── chapter_084.xhtml │ │ │ ├── chapter_085.xhtml │ │ │ ├── chapter_086.xhtml │ │ │ ├── chapter_087.xhtml │ │ │ ├── chapter_088.xhtml │ │ │ ├── chapter_089.xhtml │ │ │ ├── chapter_090.xhtml │ │ │ ├── chapter_091.xhtml │ │ │ ├── chapter_092.xhtml │ │ │ ├── chapter_093.xhtml │ │ │ ├── chapter_094.xhtml │ │ │ ├── chapter_095.xhtml │ │ │ ├── chapter_096.xhtml │ │ │ ├── chapter_097.xhtml │ │ │ ├── chapter_098.xhtml │ │ │ ├── chapter_099.xhtml │ │ │ ├── chapter_100.xhtml │ │ │ ├── chapter_101.xhtml │ │ │ ├── chapter_102.xhtml │ │ │ ├── chapter_103.xhtml │ │ │ ├── chapter_104.xhtml │ │ │ ├── chapter_105.xhtml │ │ │ ├── chapter_106.xhtml │ │ │ ├── chapter_107.xhtml │ │ │ ├── chapter_108.xhtml │ │ │ ├── chapter_109.xhtml │ │ │ ├── chapter_110.xhtml │ │ │ ├── chapter_111.xhtml │ │ │ ├── chapter_112.xhtml │ │ │ ├── chapter_113.xhtml │ │ │ ├── chapter_114.xhtml │ │ │ ├── chapter_115.xhtml │ │ │ ├── chapter_116.xhtml │ │ │ ├── chapter_117.xhtml │ │ │ ├── chapter_118.xhtml │ │ │ ├── chapter_119.xhtml │ │ │ ├── chapter_120.xhtml │ │ │ ├── chapter_121.xhtml │ │ │ ├── chapter_122.xhtml │ │ │ ├── chapter_123.xhtml │ │ │ ├── chapter_124.xhtml │ │ │ ├── chapter_125.xhtml │ │ │ ├── chapter_126.xhtml │ │ │ ├── chapter_127.xhtml │ │ │ ├── chapter_128.xhtml │ │ │ ├── chapter_129.xhtml │ │ │ ├── chapter_130.xhtml │ │ │ ├── chapter_131.xhtml │ │ │ ├── chapter_132.xhtml │ │ │ ├── chapter_133.xhtml │ │ │ ├── chapter_134.xhtml │ │ │ ├── chapter_135.xhtml │ │ │ ├── chapter_136.xhtml │ │ │ ├── copyright.xhtml │ │ │ ├── cover.xhtml │ │ │ ├── css │ │ │ │ └── stylesheet.css │ │ │ ├── epigraph_001.xhtml │ │ │ ├── fonts │ │ │ │ ├── STIXGeneral.otf │ │ │ │ ├── STIXGeneralBol.otf │ │ │ │ ├── STIXGeneralBolIta.otf │ │ │ │ └── STIXGeneralItalic.otf │ │ │ ├── images │ │ │ │ ├── 9780316000000.jpg │ │ │ │ └── Moby-Dick_FE_title_page.jpg │ │ │ ├── introduction_001.xhtml │ │ │ ├── package.opf │ │ │ ├── preface_001.xhtml │ │ │ ├── titlepage.xhtml │ │ │ ├── toc-short.xhtml │ │ │ ├── toc.ncx │ │ │ └── toc.xhtml │ │ └── mimetype │ ├── robots.txt │ └── the-lifestone │ │ ├── META-INF │ │ ├── container.xml │ │ └── container.xml~ │ │ ├── content.opf │ │ ├── cover.jpg │ │ ├── mimetype │ │ ├── stylesheet.css │ │ ├── titlepage.xhtml │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_000.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_001.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_002.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_003.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_004.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_005.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_006.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_007.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_008.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_009.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_010.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_011.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_012.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_013.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_014.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_015.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_016.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_017.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_018.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_019.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_020.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_021.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_022.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_023.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_024.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_025.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_026.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_027.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_028.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_029.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_030.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_031.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_032.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_033.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_034.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_035.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_036.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_037.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_038.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_039.html │ │ ├── tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_040.html │ │ └── toc.ncx ├── reader_src │ ├── controllers │ │ ├── bookmarks_controller.js │ │ ├── controls_controller.js │ │ ├── meta_controller.js │ │ ├── notes_controller.js │ │ ├── reader_controller.js │ │ ├── settings_controller.js │ │ ├── sidebar_controller.js │ │ └── toc_controller.js │ ├── old │ │ ├── app.js │ │ └── utils.js │ ├── plugins │ │ ├── hypothesis.js │ │ └── search.js │ └── reader.js ├── server.js ├── src │ ├── base.js │ ├── book.js │ ├── chapter.js │ ├── core.js │ ├── epubcfi.js │ ├── events.js │ ├── hooks.js │ ├── layout.js │ ├── pagination.js │ ├── parser.js │ ├── render_iframe.js │ ├── renderer.js │ ├── replace.js │ ├── shims.js │ └── unarchiver.js ├── tests │ ├── core.js │ ├── epubcfi.js │ ├── index.html │ ├── pagination.js │ ├── qunit │ │ ├── qunit.css │ │ └── qunit.js │ ├── render.js │ └── unarchiver.js └── tools │ ├── appcache.py │ └── server ├── git.mk ├── po └── POTFILES └── src ├── Makefile-js.am ├── Makefile-lib.am ├── Makefile.am ├── application.js ├── config.js ├── config.js.in ├── contents.js ├── embed.js ├── epub-metadata.py ├── epub-thumbnailer.py ├── gnome-books.desktop.in ├── gnome-books.gresource.xml ├── gnome-books.in ├── lib ├── gb-book-links.c ├── gb-book-links.h ├── gb-nav-bar.c ├── gb-nav-bar.h ├── gb-resources.c ├── gb-resources.xml ├── gb-webview.c └── gb-webview.h ├── library.js ├── main.js ├── mainToolbar.js ├── mainWindow.js ├── manager.js ├── org.gnome.Books.service ├── org.gnome.Books.service.in ├── path.js ├── path.js.in ├── resources ├── Adwaita.css ├── app-menu.ui ├── read-menu.ui └── thumbnail-frame.png ├── utils.js ├── view.js ├── webView.js └── windowMode.js /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libgd"] 2 | path = libgd 3 | url = git://git.gnome.org/libgd 4 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | ACLOCAL_AMFLAGS = -I m4 -I libgd ${ACLOCAL_FLAGS} 2 | DISTCHECK_CONFIGURE_FLAGS = --enable-introspection 3 | SUBDIRS=libgd src data 4 | 5 | MAINTAINERCLEANFILES = \ 6 | $(srcdir)/AUTHORS \ 7 | $(srcdir)/INSTALL \ 8 | $(srcdir)/ar-lib \ 9 | $(srcdir)/aclocal.m4 \ 10 | $(srcdir)/autoscan.log \ 11 | $(srcdir)/compile \ 12 | $(srcdir)/config.guess \ 13 | $(srcdir)/config.h.in \ 14 | $(srcdir)/config.sub \ 15 | $(srcdir)/configure.scan \ 16 | $(srcdir)/depcomp \ 17 | $(srcdir)/install-sh \ 18 | $(srcdir)/ltmain.sh \ 19 | $(srcdir)/missing \ 20 | $(srcdir)/mkinstalldirs \ 21 | $(srcdir)/omf.make \ 22 | $(srcdir)/xmldocs.make \ 23 | $(srcdir)/gtk-doc.make \ 24 | $(NULL) 25 | 26 | GITIGNOREFILES = \ 27 | m4 \ 28 | config \ 29 | node_modules \ 30 | $(NULL) 31 | 32 | -include $(top_srcdir)/git.mk 33 | -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/NEWS -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GNOME Books 2 | 3 | Google Summer of Code project for GNOME. 4 | 5 | Books is application for listing, searching and reading eBooks. 6 | More information on https://wiki.gnome.org/Outreach/SummerOfCode/2014/Projects/MartaMilakovic_GnomeBooks 7 | 8 | Books will be implemented upon the application gnome-documents, and it is going to live in the same git repository. This would be a great solution regarding code duplication, because it would be possible to reuse relevant code blocks from gnome-documents and add extra features related to eBooks. 9 | 10 | Using epub.js library for the reading mode. 11 | 12 | The idea is to integrate Books with an existing online eBook store. 13 | 14 | ## 1. Installing GNOME Books 15 | 16 | $ ./autogen.sh 17 | $ make 18 | $ sudo make install 19 | $ cd src/ && glib-compile-resources gnome-books.gresource.xml 20 | $ export LD_LIBRARY_PATH=`pwd`/src/.libs:$LD_LIBRARY_PATH 21 | $ export GI_TYPELIB_PATH=`pwd`/src 22 | 23 | ## 2. Running GNOME Books 24 | 25 | Make a folder Books in your $home directory and add all the .epubs you would like to read. 26 | 27 | $ gnome-books 28 | When GNOME Books is running choose your eBook and press 'Load Table of Contents'. This will load the chapters and notify you when finished with the pop-up bar. Next you should click on 'Load Total Pages' and you are ready to enjoy your EBook. 29 | (These steps should be removed in the future.) 30 | -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Run this to generate all the initial makefiles, etc. 3 | 4 | srcdir=`dirname $0` 5 | test -z "$srcdir" && srcdir=. 6 | 7 | PKG_NAME="gnome-books" 8 | ACLOCAL_FLAGS="-I libgd ${ACLOCAL_FLAGS}" 9 | 10 | (test -f $srcdir/src/main.js) || { 11 | echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" 12 | echo " top-level $PKG_NAME directory" 13 | exit 1 14 | } 15 | 16 | which gnome-autogen.sh || { 17 | echo "You need to install gnome-common from the GNOME git" 18 | exit 1 19 | } 20 | 21 | git submodule update --init --recursive 22 | 23 | REQUIRED_AUTOCONF_VERSION=2.59 24 | REQUIRED_AUTOMAKE_VERSION=1.9 25 | REQUIRED_INTLTOOL_VERSION=0.40.0 26 | REQUIRED_PKG_CONFIG_VERSION=0.22 27 | . gnome-autogen.sh -------------------------------------------------------------------------------- /configure.ac: -------------------------------------------------------------------------------- 1 | dnl -*- mode: m4 -*- 2 | AC_PREREQ(2.69) 3 | AC_INIT([Books], [1.0.0], []) 4 | 5 | AC_CONFIG_AUX_DIR([config]) 6 | AC_CONFIG_MACRO_DIR([m4]) 7 | AC_CONFIG_SRCDIR([src/main.js]) 8 | AC_CONFIG_HEADER([config/config.h]) 9 | 10 | GOBJECT_INTROSPECTION_REQUIRE([0.9.6]) 11 | 12 | AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip subdir-objects]) 13 | AM_MAINTAINER_MODE([enable]) 14 | 15 | IT_PROG_INTLTOOL([0.40.0]) 16 | 17 | AC_PROG_CC 18 | AC_LANG_C 19 | AM_PROG_CC_C_O 20 | AC_PROG_CXX 21 | AC_ISC_POSIX 22 | AC_HEADER_STDC 23 | 24 | AC_CHECK_LIBM 25 | AC_SUBST(LIBM) 26 | 27 | WEBKIT2GTK_MIN_VERSION=1.10.0 28 | GLIB_MIN_VERSION=2.39.3 29 | GTK_MIN_VERSION=3.12 30 | GOBJECT_INTROSPECTION_MIN_VERSION=1.31.6 31 | 32 | PKG_CHECK_MODULES(DEPEND, \ 33 | gtk+-3.0 >= $GTK_MIN_VERSION \ 34 | webkit2gtk-4.0 >= $WEBKIT2GTK_MIN_VERSION \ 35 | gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION \ 36 | gjs-1.0) 37 | 38 | AC_PROG_CC_STDC 39 | 40 | BOOKS_CFLAGS="-Wall" 41 | 42 | # library-specific macros 43 | m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) 44 | LT_INIT 45 | 46 | LIBGD_INIT([ 47 | gtk-hacks 48 | main-view 49 | notification 50 | tagged-entry 51 | gir 52 | ]) 53 | 54 | GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0` 55 | AC_SUBST(GJS_CONSOLE) 56 | 57 | GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0` 58 | AC_SUBST(GLIB_COMPILE_RESOURCES) 59 | 60 | AC_SUBST(BOOKS_CFLAGS) 61 | AC_SUBST(DEPEND_CFLAGS) 62 | AC_SUBST(DEPEND_LIBS) 63 | 64 | top_builddir=`pwd` 65 | AC_SUBST(top_builddir) 66 | 67 | GLIB_GSETTINGS 68 | 69 | AC_CONFIG_FILES([ 70 | Makefile 71 | data/Makefile 72 | libgd/Makefile 73 | src/Makefile 74 | po/Makefile.in 75 | ]) 76 | 77 | AC_OUTPUT 78 | 79 | dnl ========================================================================== 80 | echo " 81 | 82 | gnome-books $VERSION 83 | ==================== 84 | 85 | prefix: ${prefix} 86 | compiler: ${CC} 87 | 88 | " 89 | -------------------------------------------------------------------------------- /data/Makefile.am: -------------------------------------------------------------------------------- 1 | appdatadir = $(datadir)/appdata 2 | appdata_DATA = $(appdata_in_files:.xml.in=.xml) 3 | appdata_in_files = org.gnome.Books.appdata.xml.in 4 | 5 | @INTLTOOL_XML_RULE@ 6 | 7 | desktopdir = $(datadir)/applications 8 | desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) 9 | desktop_in_files = org.gnome.Books.desktop.in 10 | 11 | searchproviderdir = $(datadir)/gnome-shell/search-providers 12 | searchprovider_DATA = org.gnome.Books.search-provider.ini 13 | 14 | @INTLTOOL_DESKTOP_RULE@ 15 | 16 | check-local: org.gnome.Books.desktop 17 | $(DESKTOP_FILE_VALIDATE) org.gnome.Books.desktop 18 | 19 | gsettings_ENUM_NAMESPACE = org.gnome.Books 20 | gsettings_ENUM_FILES = \ 21 | $(top_srcdir)/libgd/libgd/gd-main-view.h 22 | 23 | gsettings_SCHEMAS = org.gnome.books.gschema.xml 24 | .PRECIOUS: $(gsettings_SCHEMAS) 25 | 26 | @GSETTINGS_RULES@ 27 | 28 | EXTRA_DIST= \ 29 | $(appdata_in_files) \ 30 | $(desktop_in_files) \ 31 | $(searchprovider_DATA) \ 32 | $(gsettings_SCHEMAS) 33 | 34 | CLEANFILES = \ 35 | $(appdata_DATA) \ 36 | $(desktop_DATA) 37 | 38 | -include $(top_srcdir)/git.mk 39 | -------------------------------------------------------------------------------- /data/org.gnome.Books.appdata.xml.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | org.gnome.Books.desktop 5 | CC0-1.0 6 | GPL-2.0+ 7 | <_name>Books 8 | <_summary>A eBook manager application for GNOME 9 | 10 | <_p> 11 | A simple application to readeBook on GNOME. 12 | 13 | <_p>It lets you: 14 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /data/org.gnome.Books.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | _Name=Books 3 | _Comment=Read eBooks 4 | Exec=gnome-books 5 | Icon=gnome-books 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | DBusActivatable=true 10 | OnlyShowIn=GNOME; 11 | Categories=GNOME;GTK;Utility;Core; 12 | _Keywords=Docs;PDF;Document; -------------------------------------------------------------------------------- /data/org.gnome.Books.search-provider.ini: -------------------------------------------------------------------------------- 1 | [Shell Search Provider] 2 | DesktopId=org.gnome.Books.desktop 3 | BusName=org.gnome.Books 4 | ObjectPath=/org/gnome/Books/SearchProvider 5 | Version=2 -------------------------------------------------------------------------------- /data/org.gnome.books.gschema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 'icon' 5 | View as 6 | View as type 7 | 8 | 9 | [768, 600] 10 | Window size 11 | Window size (width and height). 12 | 13 | 14 | [] 15 | Window position 16 | Window position (x and y). 17 | 18 | 19 | true 20 | Window maximized 21 | Window maximized state 22 | 23 | 24 | -------------------------------------------------------------------------------- /epub.js/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | // Environments 3 | "browser": true, 4 | "devel": true, 5 | "worker": true, 6 | 7 | // Enforcing 8 | //"maxlen": 80, 9 | //"quotmark": "single", 10 | "trailing": true, 11 | "strict": false, 12 | 13 | // Relaxing 14 | "boss": true, 15 | "funcscope": true, 16 | "globalstrict": true, 17 | "loopfunc": true, 18 | "maxerr": 1000, 19 | "nonstandard": true, 20 | "sub": true, 21 | "validthis": true, 22 | 23 | "globals": { 24 | "_": false, 25 | "define" : false, 26 | "module" : false 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /epub.js/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/.nojekyll -------------------------------------------------------------------------------- /epub.js/build/hooks.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "hooks.js", 4 | "sources": [ 5 | "hooks/default/endnotes.js", 6 | "hooks/default/mathml.js", 7 | "hooks/default/smartimages.js", 8 | "hooks/default/transculsions.js" 9 | ], 10 | "names": [], 11 | "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA" 12 | } -------------------------------------------------------------------------------- /epub.js/build/libs/screenfull.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * screenfull 3 | * v1.1.0 - 2013-09-06 4 | * https://github.com/sindresorhus/screenfull.js 5 | * (c) Sindre Sorhus; MIT License 6 | */ 7 | !function(a,b){"use strict";var c="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,d=function(){for(var a,c,d=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenchange","MSFullscreenerror"]],e=0,f=d.length,g={};f>e;e++)if(a=d[e],a&&a[1]in b){for(e=0,c=a.length;c>e;e++)g[d[0][e]]=a[e];return g}return!1}(),e={request:function(a){var e=d.requestFullscreen;a=a||b.documentElement,/5\.1[\.\d]* Safari/.test(navigator.userAgent)?a[e]():a[e](c&&Element.ALLOW_KEYBOARD_INPUT)},exit:function(){b[d.exitFullscreen]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},onchange:function(){},onerror:function(){},raw:d};return d?(Object.defineProperties(e,{isFullscreen:{get:function(){return!!b[d.fullscreenElement]}},element:{enumerable:!0,get:function(){return b[d.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return!!b[d.fullscreenEnabled]}}}),b.addEventListener(d.fullscreenchange,function(a){e.onchange.call(e,a)}),b.addEventListener(d.fullscreenerror,function(a){e.onerror.call(e,a)}),a.screenfull=e,void 0):(a.screenfull=!1,void 0)}(window,document); -------------------------------------------------------------------------------- /epub.js/examples/basic.css: -------------------------------------------------------------------------------- 1 | body { 2 | overflow: hidden; 3 | } 4 | 5 | #main { 6 | position: absolute; 7 | width: 100%; 8 | height: 100%; 9 | } 10 | 11 | #area { 12 | width: 80%; 13 | height: 80%; 14 | margin: 5% auto; 15 | max-width: 1250px; 16 | } 17 | 18 | #area iframe { 19 | border: none; 20 | } 21 | 22 | #prev { 23 | left: 40px; 24 | } 25 | 26 | #next { 27 | right: 40px; 28 | } 29 | 30 | .arrow { 31 | position: absolute; 32 | top: 50%; 33 | margin-top: -32px; 34 | font-size: 64px; 35 | color: #E2E2E2; 36 | font-family: arial, sans-serif; 37 | font-weight: bold; 38 | cursor: pointer; 39 | -webkit-user-select: none; 40 | -moz-user-select: none; 41 | user-select: none; 42 | } 43 | 44 | .arrow:hover { 45 | color: #777; 46 | } 47 | 48 | .arrow:active { 49 | color: #000; 50 | } 51 | 52 | #loader { 53 | position: absolute; 54 | z-index: 10; 55 | left: 50%; 56 | top: 50%; 57 | margin: -33px 0 0 -33px; 58 | } 59 | 60 | #toc { 61 | position: absolute; 62 | top: 0; 63 | left: 0; 64 | } -------------------------------------------------------------------------------- /epub.js/examples/basic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Basic ePubJS Example 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 68 | 69 | 75 | 76 | 77 |
78 | 79 |
80 | 81 |
82 | 83 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /epub.js/examples/contained.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Contained ePub Example 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 25 | 31 | 32 | 33 |
34 | 35 |
36 | 37 |
38 | 39 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /epub.js/examples/fixed.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Basic ePubJS Example 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 45 | 46 | 58 | 59 | 60 |
61 | 62 |
63 |
64 |
65 | 66 |
67 | 68 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /epub.js/examples/mathml.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Basic ePubJS Example 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 |
26 | 27 |
28 | 29 |
30 | 31 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /epub.js/examples/promises.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ePubJS Promises Example 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 23 | 24 | 25 |
26 | 27 |
28 | 29 |
30 | 31 |
32 | 33 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /epub.js/examples/single.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Basic ePubJS Example 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 63 | 64 | 65 | 66 |
67 | 68 |
69 |
70 | 71 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /epub.js/examples/single1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Basic ePubJS Example 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 46 | 47 | 58 | 59 | 60 |
61 | 62 |
63 |
64 |
65 | 66 |
67 | 68 | 75 | 76 | -------------------------------------------------------------------------------- /epub.js/hooks/default/mathml.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Hooks.register("beforeChapterDisplay").mathml = function(callback, renderer){ 2 | 3 | // check of currentChapter properties contains 'mathml' 4 | if(renderer.currentChapter.manifestProperties.indexOf("mathml") !== -1 ){ 5 | 6 | // Assign callback to be inside iframe window 7 | renderer.iframe.contentWindow.mathmlCallback = callback; 8 | 9 | // add MathJax config script tag to the renderer body 10 | var s = document.createElement("script"); 11 | s.type = 'text/x-mathjax-config'; 12 | s.innerHTML = '\ 13 | MathJax.Hub.Register.StartupHook("End",function () { \ 14 | window.mathmlCallback(); \ 15 | });\ 16 | MathJax.Hub.Config({jax: ["input/TeX","input/MathML","output/SVG"],extensions: ["tex2jax.js","mml2jax.js","MathEvents.js"],TeX: {extensions: ["noErrors.js","noUndefined.js","autoload-all.js"]},MathMenu: {showRenderer: false},menuSettings: {zoom: "Click"},messageStyle: "none"}); \ 17 | '; 18 | renderer.doc.body.appendChild(s); 19 | // add MathJax.js to renderer head 20 | EPUBJS.core.addScript("http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML", null, renderer.doc.head); 21 | 22 | } else { 23 | if(callback) callback(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /epub.js/hooks/default/smartimages.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Hooks.register("beforeChapterDisplay").smartimages = function(callback, renderer){ 2 | var images = renderer.contents.querySelectorAll('img'), 3 | items = Array.prototype.slice.call(images), 4 | iheight = renderer.height,//chapter.bodyEl.clientHeight,//chapter.doc.body.getBoundingClientRect().height, 5 | oheight; 6 | 7 | if(renderer.layoutSettings.layout != "reflowable") { 8 | callback(); 9 | return; //-- Only adjust images for reflowable text 10 | } 11 | 12 | items.forEach(function(item){ 13 | 14 | function size() { 15 | var itemRect = item.getBoundingClientRect(), 16 | rectHeight = itemRect.height, 17 | top = itemRect.top, 18 | oHeight = item.getAttribute('data-height'), 19 | height = oHeight || rectHeight, 20 | newHeight, 21 | fontSize = Number(getComputedStyle(item, "").fontSize.match(/(\d*(\.\d*)?)px/)[1]), 22 | fontAdjust = fontSize ? fontSize / 2 : 0; 23 | 24 | iheight = renderer.contents.clientHeight; 25 | if(top < 0) top = 0; 26 | 27 | if(height + top >= iheight) { 28 | 29 | if(top < iheight/2) { 30 | // Remove top and half font-size from height to keep container from overflowing 31 | newHeight = iheight - top - fontAdjust; 32 | item.style.maxHeight = newHeight + "px"; 33 | item.style.width= "auto"; 34 | }else{ 35 | if(height > iheight) { 36 | item.style.maxHeight = iheight + "px"; 37 | item.style.width= "auto"; 38 | itemRect = item.getBoundingClientRect(); 39 | height = itemRect.height; 40 | } 41 | item.style.display = "block"; 42 | item.style["WebkitColumnBreakBefore"] = "always"; 43 | item.style["breakBefore"] = "column"; 44 | 45 | } 46 | 47 | item.setAttribute('data-height', newHeight); 48 | 49 | }else{ 50 | item.style.removeProperty('max-height'); 51 | item.style.removeProperty('margin-top'); 52 | } 53 | } 54 | 55 | item.addEventListener('load', size, false); 56 | 57 | renderer.on("renderer:resized", size); 58 | 59 | renderer.on("renderer:chapterUnloaded", function(){ 60 | item.removeEventListener('load', size); 61 | renderer.off("renderer:resized", size); 62 | }); 63 | 64 | size(); 65 | 66 | }); 67 | 68 | if(callback) callback(); 69 | 70 | } 71 | -------------------------------------------------------------------------------- /epub.js/hooks/default/transculsions.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Hooks.register("beforeChapterDisplay").transculsions = function(callback, renderer){ 2 | /* 3 | 6 | */ 7 | 8 | var trans = renderer.contents.querySelectorAll('[transclusion]'), 9 | items = Array.prototype.slice.call(trans); 10 | 11 | items.forEach(function(item){ 12 | var src = item.getAttribute("ref"), 13 | iframe = document.createElement('iframe'), 14 | orginal_width = item.getAttribute("width"), 15 | orginal_height = item.getAttribute("height"), 16 | parent = item.parentNode, 17 | width = orginal_width, 18 | height = orginal_height, 19 | ratio; 20 | 21 | 22 | function size() { 23 | width = orginal_width; 24 | height = orginal_height; 25 | 26 | if(width > chapter.colWidth){ 27 | ratio = chapter.colWidth / width; 28 | 29 | width = chapter.colWidth; 30 | height = height * ratio; 31 | } 32 | 33 | iframe.width = width; 34 | iframe.height = height; 35 | } 36 | 37 | 38 | size(); 39 | 40 | //-- resize event 41 | 42 | 43 | renderer.listenUntil("renderer:resized", "renderer:chapterUnloaded", size); 44 | 45 | iframe.src = src; 46 | 47 | // 48 | parent.replaceChild(iframe, item); 49 | 50 | 51 | }); 52 | 53 | 54 | 55 | 56 | if(callback) callback(); 57 | 58 | 59 | } 60 | -------------------------------------------------------------------------------- /epub.js/hooks/extensions/embedh.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Hooks.register("beforeChapterDisplay").example = function(callback, chapter){ 2 | 3 | 4 | var s = document.createElement("script"); 5 | s.type = 'text/javascript'; 6 | s.src ="https://test.hypothes.is/app/embed.js" 7 | 8 | chapter.doc.body.appendChild(s); 9 | 10 | //-- Continue to other hooks 11 | if(callback) callback();} -------------------------------------------------------------------------------- /epub.js/hooks/extensions/highlight.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Hooks.register("beforeChapterDisplay").highlight = function(callback, renderer){ 2 | 3 | // EPUBJS.core.addScript("js/libs/jquery.highlight.js", null, renderer.doc.head); 4 | 5 | var s = document.createElement("style"); 6 | s.innerHTML =".highlight { background: yellow; font-weight: normal; }"; 7 | 8 | renderer.render.document.head.appendChild(s); 9 | 10 | if(callback) callback(); 11 | 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /epub.js/hooks/extensions/hypothesis.js: -------------------------------------------------------------------------------- 1 | // EPUBJS.Hooks.register("beforeChapterDisplay").hypothesis = function(callback, chapter){ 2 | // 3 | // 4 | // EPUBJS.core.addScript("https://hypothes.is/app/embed.js", null, chapter.doc.head); 5 | // 6 | // if(callback) callback(); 7 | // 8 | // } 9 | // 10 | // 11 | EPUBJS.Hooks.register("beforeChapterDisplay").hypothesis = function(callback, renderer){ 12 | var folder = EPUBJS.core.folder(location.pathname); 13 | var cssPath = (folder + EPUBJS.cssPath) || folder; 14 | 15 | if(!renderer) return; 16 | 17 | EPUBJS.core.addScript("https://hypothes.is/app/embed.js?role=guest&light=true", null, renderer.doc.head); 18 | 19 | EPUBJS.core.addCss( cssPath + "annotations.css", null, renderer.doc.head); 20 | 21 | if(callback) callback(); 22 | }; -------------------------------------------------------------------------------- /epub.js/hooks/extensions/music.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Hooks.register("beforeChapterDisplay").music = function(callback, chapter){ 2 | 3 | var trans = chapter.doc.querySelectorAll('audio'), 4 | items = Array.prototype.slice.call(trans), 5 | playing = false; 6 | 7 | items.forEach(function(item){ 8 | var onSpread = 0; 9 | 10 | 11 | function getPage() { 12 | left = item.getBoundingClientRect().left; 13 | onSpread = Math.floor(left / chapter.spreadWidth) + 1; //-- pages start at 1 14 | //console.log("left", left, onPage) 15 | // width = orginal_width; 16 | // height = orginal_height; 17 | // 18 | // if(width > chapter.colWidth){ 19 | // ratio = chapter.colWidth / width; 20 | // 21 | // width = chapter.colWidth; 22 | // height = height * ratio; 23 | // } 24 | // 25 | // iframe.width = width; 26 | // iframe.height = height; 27 | } 28 | 29 | function shouldPlay(e) { 30 | page = 1; 31 | if(e) page = e.msg; 32 | 33 | if(page != onSpread) return; 34 | 35 | if(playing) playing.pause(); 36 | 37 | item.play(); 38 | 39 | playing = item; 40 | 41 | console.log("start", item.src) 42 | 43 | } 44 | 45 | 46 | 47 | 48 | //-- resize event 49 | 50 | 51 | chapter.book.listenUntil("book:resized", "book:chapterDestroy", getPage); 52 | 53 | chapter.book.listenUntil("book:pageChanged", "book:chapterDestroy", shouldPlay); 54 | 55 | item.removeAttribute("controls"); 56 | 57 | getPage(); 58 | shouldPlay(); 59 | 60 | }); 61 | 62 | 63 | 64 | 65 | if(callback) callback(); 66 | 67 | 68 | } 69 | -------------------------------------------------------------------------------- /epub.js/hooks/extensions/pageturns.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Hooks.register("beforeChapterDisplay").pageTurns = function(callback, renderer){ 2 | 3 | var lock = false; 4 | var arrowKeys = function(e){ 5 | if(lock) return; 6 | 7 | if (e.keyCode == 37) { 8 | renderer.book.prevPage(); 9 | lock = true; 10 | setTimeout(function(){ 11 | lock = false; 12 | }, 100); 13 | return false; 14 | } 15 | 16 | if (e.keyCode == 39) { 17 | renderer.book.nextPage(); 18 | lock = true; 19 | setTimeout(function(){ 20 | lock = false; 21 | }, 100); 22 | return false; 23 | } 24 | 25 | }; 26 | renderer.docEl.addEventListener('keydown', arrowKeys, false); 27 | if(callback) callback(); 28 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/img/annotator-glyph-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/libs/annotator/img/annotator-glyph-sprite.png -------------------------------------------------------------------------------- /epub.js/libs/annotator/img/annotator-icon-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/libs/annotator/img/annotator-icon-sprite.png -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/class.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "class.js", 4 | "sourceRoot": "..", 5 | "sources": [ 6 | "src/class.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAGA,IAAA,KAAA;GAAA;gCAAA;;AAAM,CAAN;CAGE,CAAA,CAAQ,GAAR;;CAAA,CAAA,CAGS,IAAT;;CAHA,EAMS,CANT,GAMA;;CAgBa,CAAA,CAAA,IAAA,YAAC;CACZ,CAA0B,CAAf,CAAX,EAAW,CAAX;CAAA,EACW,CAAX,GAAA;CADA,CAAA,CAKa,CAAb,KAAA;CALA,CAOA,CAAU,CAAV,KAPA;CAAA,GAQA,KAAA;CA/BF,EAsBa;;CAtBb,EA0DW,MAAX;CACE,OAAA,uBAAA;CAAA;CAAA;UAAA,iCAAA;wBAAA;CACE,CAA+B,EAA3B,CAAgB,GAApB,CAAA,GAAA;CADF;qBADS;CA1DX,EA0DW;;CA1DX,EAqEc,MAAA,GAAd;CACE,OAAA,uBAAA;CAAA;CAAA;UAAA,iCAAA;wBAAA;CACE,CAAkC,EAA9B,CAAmB,GAAvB,IAAA;CADF;qBADY;CArEd,EAqEc;;CArEd,CA8FsB,CAAX,EAAA,GAAA,CAAX,GAAW;CACT,MAAA,CAAA;OAAA,KAAA;CAAA,EAAU,CAAV,GAAA,EAAU;CAAQ,CAA0B,GAA1B,IAAL,GAAK,CAAL;CAAb,IAAU;CAEV,CAAG,EAAH,CAAe,GAAZ,CAA4B,KAAT;CACpB,CAAsB,EAAlB,CAAJ,CAAA,CAAA,EAAA;MADF;CAGE,CAA4B,EAA3B,CAAD,CAAA,CAAQ,CAAR;MALF;CAAA,CAOW,CAAE,CAAb,CAAW,EAPX,CAOW,CAAA,GAAA;CARF,UAUT;CAxGF,EA8FW;;CA9FX,CAsHyB,CAAX,EAAA,GAAA,CAAC,GAAf;CACE,MAAA,CAAA;CAAA,CAAqB,CAAX,CAAV,CAAqB,EAArB,CAAqB,CAAA,GAAA;CAErB,CAAG,EAAH,CAAe,GAAZ,CAA4B,KAAT;CACpB,CAAwB,EAApB,CAAJ,CAAA,CAAA,IAAA;MADF;CAGE,CAA8B,EAA7B,CAAD,CAAA,CAAQ,CAAR,EAAA;MALF;AAOA,CAPA,CAOkB,CAAE,CAApB,CAAkB,CAAlB,EAAkB,CAAA,GAAA;CARN,UAUZ;CAhIF,EAsHc;;CAtHd,EAmJS,IAAT,EAAS;CACP,CAAwC,EAAxC,CAAA,EAAQ,EAAR,KAAuB;CADhB,UAEP;CArJF,EAmJS;;CAnJT,CAsKmB,CAAR,EAAA,GAAA,CAAX;CACE,MAAA,CAAA;CAAA,EAAU,CAAV,GAAA,EAAU;CAAY,CAAY,EAArB,CAAA,GAAQ,CAAa,IAArB;CAAb,IAAU;CAAV,EAIe,CAAf,GAAO,CAAgB;CAJvB,CAMqB,EAArB,CAAA,EAAQ;CAPC,UAQT;CA9KF,EAsKW;;CAtKX,EAkMa,MAAA,EAAb;CACE,CAAgC,EAAhC,CAAA,CAAe,CAAP,EAAR;CADW,UAEX;CApMF,EAkMa;;CAlMb;;CAHF;;AA4MA,CA5MA,EA4MyB,MAAhB,GAAT;CACI,KAAA,8CAAA;CAAA,CAAA,CAAS,GAAT;AACA,CAAA,MAAA,SAAA;mCAAA;CACE,CAAC,CAAyB,CAA1B,CAAuB,EAAA,sEAAvB;CAAA,GACA,EAAM;CAAM,CACA,CAAA,CAAA,EAAV,EAAA;CADU,CAEH,GAAP,CAAA;CAFU,CAGI,IAAd,MAAA;CAJF,KACA;CAFF,EADA;CAQA,KAAA,GAAO;CATc;;AAczB,CA1NA,EA0NuB,IAAvB,EAAS;CACP,KAAA,YAAA;CAAA,CAAA,MAAA;;CAAY;CAAA;UAAA,CAAA;;uBAAA;CAAA;CAAA;;CAAZ;CAKI,IAJJ,CAAA,EAAA,CAAA,sLAIG;CANkB;;AAqBvB,CA/OA,EA+O2B,EAAA,IAAlB,KAAT;CACE,CAAC,CAAS,EAAK;AACyB,CAAvC,CAAgB,GAAjB,EAAA,EAAA;CAFyB" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/console.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | var fn, functions, _i, _j, _len, _len1, 3 | __slice = [].slice; 4 | 5 | functions = ["log", "debug", "info", "warn", "exception", "assert", "dir", "dirxml", "trace", "group", "groupEnd", "groupCollapsed", "time", "timeEnd", "profile", "profileEnd", "count", "clear", "table", "error", "notifyFirebug", "firebug", "userObjects"]; 6 | 7 | if (typeof console !== "undefined" && console !== null) { 8 | if (console.group == null) { 9 | console.group = function(name) { 10 | return console.log("GROUP: ", name); 11 | }; 12 | } 13 | if (console.groupCollapsed == null) { 14 | console.groupCollapsed = console.group; 15 | } 16 | for (_i = 0, _len = functions.length; _i < _len; _i++) { 17 | fn = functions[_i]; 18 | if (console[fn] == null) { 19 | console[fn] = function() { 20 | return console.log(_t("Not implemented:") + (" console." + name)); 21 | }; 22 | } 23 | } 24 | } else { 25 | this.console = {}; 26 | for (_j = 0, _len1 = functions.length; _j < _len1; _j++) { 27 | fn = functions[_j]; 28 | this.console[fn] = function() {}; 29 | } 30 | this.console['error'] = function() { 31 | var args; 32 | args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; 33 | return alert("ERROR: " + (args.join(', '))); 34 | }; 35 | this.console['warn'] = function() { 36 | var args; 37 | args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; 38 | return alert("WARNING: " + (args.join(', '))); 39 | }; 40 | } 41 | 42 | /* 43 | //@ sourceMappingURL=console.map 44 | */ 45 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/console.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "console.js", 4 | "sourceRoot": "..", 5 | "sources": [ 6 | "src/console.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAEA,IAAA,8BAAA;GAAA,eAAA;;AAAA,CAAA,CACS,CADG,EAAA,CAAA,CAAA,CAAA,CAAZ,CAAY,CAAA,CAAA,CAAA,EAAA,CAAA;;AAOZ,CAAA,GAAG,8CAAH;CAEE,CAAA,EAAO,iBAAP;CACE,EAAgB,CAAhB,CAAA,EAAO,EAAU;CAAiB,CAAe,CAAvB,CAAA,GAAO,EAAP,IAAA;CAA1B,IAAgB;IADlB;CAIA,CAAA,EAAO,0BAAP;CACE,EAAyB,CAAzB,CAAA,EAAO,OAAP;IALF;AAQA,CAAA,MAAA,yCAAA;wBAAA;CACE,GAAA,eAAA;CACE,CAAQ,CAAM,GAAd,CAAQ,EAAM;CAAW,CAAI,CAAZ,CAAqC,GAA9B,IAA+B,IAAtC,GAAY;CAA7B,MAAc;MAFlB;CAAA,EAVF;EAAA,IAAA;CAcE,CAAA,CAAe,CAAX,GAAJ;AAEA,CAAA,MAAA,2CAAA;wBAAA;CACE,CAAa,CAAM,CAAnB,GAAa,EAAM;CADrB,EAFA;CAAA,CAKA,CAAwB,CAApB,GAAS,EAAW;CACtB,GAAA,IAAA;CAAA,GADuB,mDACvB;CAAO,EAAQ,CAAI,CAAnB,IAAO,EAAP;CANF,EAKwB;CALxB,CAQA,CAAuB,CAAnB,EAAS,CAAA,EAAU;CACrB,GAAA,IAAA;CAAA,GADsB,mDACtB;CAAO,EAAU,CAAI,CAArB,MAAA;CATF,EAQuB;EA7BzB" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/helpers/spec_helper.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "spec_helper.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "test/helpers/spec_helper.coffee" 7 | ], 8 | "names": [], 9 | "mappings": "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" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/notification.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | var Annotator, 3 | __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, 4 | __hasProp = {}.hasOwnProperty, 5 | __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; 6 | 7 | Annotator = Annotator || {}; 8 | 9 | Annotator.Notification = (function(_super) { 10 | __extends(Notification, _super); 11 | 12 | Notification.prototype.events = { 13 | "click": "hide" 14 | }; 15 | 16 | Notification.prototype.options = { 17 | html: "
", 18 | classes: { 19 | show: "annotator-notice-show", 20 | info: "annotator-notice-info", 21 | success: "annotator-notice-success", 22 | error: "annotator-notice-error" 23 | } 24 | }; 25 | 26 | function Notification(options) { 27 | this.hide = __bind(this.hide, this); 28 | this.show = __bind(this.show, this); 29 | Notification.__super__.constructor.call(this, $(this.options.html).appendTo(document.body)[0], options); 30 | } 31 | 32 | Notification.prototype.show = function(message, status) { 33 | if (status == null) { 34 | status = Annotator.Notification.INFO; 35 | } 36 | $(this.element).addClass(this.options.classes.show).addClass(this.options.classes[status]).html(Util.escape(message || "")); 37 | setTimeout(this.hide, 5000); 38 | return this; 39 | }; 40 | 41 | Notification.prototype.hide = function() { 42 | $(this.element).removeClass(this.options.classes.show); 43 | return this; 44 | }; 45 | 46 | return Notification; 47 | 48 | })(Delegator); 49 | 50 | Annotator.Notification.INFO = 'show'; 51 | 52 | Annotator.Notification.SUCCESS = 'success'; 53 | 54 | Annotator.Notification.ERROR = 'error'; 55 | 56 | $(function() { 57 | var notification; 58 | notification = new Annotator.Notification; 59 | Annotator.showNotification = notification.show; 60 | return Annotator.hideNotification = notification.hide; 61 | }); 62 | 63 | /* 64 | //@ sourceMappingURL=notification.map 65 | */ 66 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/notification.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "notification.js", 4 | "sourceRoot": "..", 5 | "sources": [ 6 | "src/notification.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAAA,IAAA,KAAA;GAAA;;kSAAA;;AAAA,CAAA,CAAA,CAAY,CAAa,KAAzB;;AAMM,CANN,QAMe;CAGb;;CAAA,EACE,GADF;CACE,CAAS,EAAT,EAAA,CAAA;CADF,GAAA;;CAAA,EAKE,IADF;CACE,CAAM,EAAN,kCAAA;CAAA,CAEE,EADF,GAAA;CACE,CAAS,EAAT,EAAA,iBAAA;CAAA,CACS,EAAT,EAAA,iBADA;CAAA,CAES,IAAT,CAAA,mBAFA;CAAA,CAGS,GAAT,CAAA,kBAHA;MAFF;CALF,GAAA;;CA0Ba,CAAA,CAAA,IAAA,eAAC;CACZ,kCAAA;CAAA,kCAAA;CAAA,CAAmD,EAAnD,GAAgB,CAAV,sCAAA;CA3BR,EA0Ba;;CA1Bb,CA6CgB,CAAV,CAAN,EAAM,CAAA,EAAC;;CAA0B,EAAV,GAAP,GAAgB,GAAa;MAC3C;CAAA,CAGQ,EAHR,EAE6B,CAF7B,CAAA;CAAA,CAKsB,EAAtB,MAAA;CANI,UAOJ;CApDF,EA6CM;;CA7CN,EA8DM,CAAN,KAAM;CACJ,GAAA,GAAA,IAAA;CADI,UAEJ;CAhEF,EA8DM;;CA9DN;;CAHmC;;AAuErC,CA7EA,EA6EiC,CAAjC,EA7EA,GA6ES,GAAa;;AACtB,CA9EA,EA8EiC,IAAjC,EAAS,GAAa;;AACtB,CA/EA,EA+EiC,EAAjC,EA/EA,EA+ES,GAAa;;AAGtB,CAlFA,EAkFE,MAAA;CACA,KAAA,MAAA;AAAe,CAAf,CAAA,CAAe,MAAa,GAA5B;CAAA,CAEA,CAA6B,CAF7B,KAES,GAAgC,IAAzC;CACU,EAAmB,MAA7B,GAAyC,IAAzC;CAJA" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/plugin/annotateitpermissions.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "annotateitpermissions.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "src/plugin/annotateitpermissions.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAYA,IAAA;GAAA;;;wJAAA;;AAAM,CAAN,KAAsB,GAAP;CAGb;;;;;;;;;CAAA;;CAAA,EAGE,IAHF;CAGE,CAA6B,EAA7B,uBAAA;CAAA,CAG6B,EAA7B,uBAAA;CAHA,CAOE,EADF,EAAA;CACE,CAAO,GAAP,CAAA,WAAA;CAAA,CACe,IAAf,OAAA,YADA;CAAA,CAEU,IAAV,EAAA,YAFA;MAPF;CAAA,CAWQ,CAAA,CAAR,EAAA,GAAS;CAAc,GAAD,SAAJ;CAXlB,IAWQ;CAXR,CAYY,CAAA,CAAZ,KAAa,CAAb;CAA2B,GAAD,SAAJ;CAZtB,IAYY;CAZZ,CAsBe,CAAA,CAAf,EAAe,GAAC,CAAD,GAAf;CACE,SAAA,2CAAA;CAAA,CAAA,CAAc,CAA0B,EAAxC,IAAwB,CAAxB;CAAA,CAAA,CACe,CAAuB,EAAtC,KAA2B,CAA3B;CAEA,CAAG,CAAA,CAAC,CAAD,CAAH,MAAG,GAAiB;CAClB,GAAA,WAAO;IAED,EAHR,EAAA,MAGQ,OAAA,KAHR;CAIE,GAAG,CAAe,CAAf,EAAH,EAA4B,CAAU;CACpC,GAAA,aAAO;CACA,CAAD,CAAA,CAAC,CAAD,CAFR,IAAA,EAEQ,CAAA,EAAyB;CAC/B,GAAA,aAAO;CACI,CAAuC,CAAA,CAA5C,CAAoB,CAJ5B,EAIQ,EAJR,CAIQ,CAA4C,GAAoB;CACtE,GAAA,aAAO;CACI,CAAuC,CAAA,CAA5C,CAAoB,CAN5B,EAMQ,EANR,CAMQ,CAA4C,GAAe;CACjE,GAAA,aAAO;CACI,GAAL,CAAoB,CAR5B,EAQQ,EARR,CAQQ;CACN,GAAA,aAAO;MATT,IAAA;CAWE,IAAA,YAAO;UAfX;MAAA,EAAA;CAiBE,IAAA,UAAO;QArBI;CAtBf,IAsBe;CAtBf,CA+Ca,EAAb,OAAA;CAAa,CACD,IAAV,WAAU;CADC,CAED,IAAV,EAAA;CAFW,CAGD,IAAV,EAAA;CAHW,CAID,IAAV,CAAA;MAnDF;CAHF,GAAA;;CAAA,EAsEuB,MAAC,CAAD,WAAvB;CACE,GAAA,MAAA;CACE,EAAyB,CAAC,EAA1B,CAAiC,GAAvB,CAAV;CACA,GAAG,EAAH;CACE,EAAkB,CAAlB,EAAA,EAAA,EAAU;CACC,EAAW,CAAC,IAAvB,EAAU,KAAV;QAJJ;MADqB;CAtEvB,EAsEuB;;CAtEvB,CAoFiC,CAAT,EAAA,CAAA,GAAC,CAAD,YAAxB;CACE,IAAA,GAAA;CAAA,EAAQ,CAAR,CAAA;CAAA,EACQ,CAAR,CAAA,EAAQ,GAAA;AAGY,CAApB,CAA4C,EAA5C,GAAoB,EAAA,CAAA;CAApB,GAAA,CAAK,CAAL;MAJA;CAOA,CAAoC,EAApC,EAAa,GAAA,CAAuB;CAAkB,CAAS,IAAR,eAAD;CAAA,CAA6C,EAAC,EAAd,KAAA;CAAtF,KAAa;CACL,CAAgB,EAAtB,CAAK,IAAL,IAAA;MADF;CAGQ,IAAD,IAAL,CAAA,GAAA;MAXoB;CApFxB,EAoFwB;;CApFxB,CA0GoC,CAAP,CAAA,CAAA,IAAC,CAAD,iBAA7B;CACE,MAAA,CAAA;AAAqD,CAArD,GAAA,MAA+D,CAA/D;CAAA,EAAyB,CAAC,EAA1B,CAAiC,GAAvB,CAAV;MAAA;CAAA,EAEU,CAAV,GAAA,OAFA;CAIA,CAAG,EAAH,CAAG,EAAA,GAAA;CACU,EAAoB,CAAR,CAAoB,CAAX,CAA+B,CAAhC,EAArB,CAAa,EAAvB;MADF;CAGa,EAAoB,CAAR,MAAb,CAAa,EAAvB;MARyB;CA1G7B,EA0G6B;;CA1G7B,EA0HmB,EAAA,IAAC,QAApB;CACO,GAAD,CAAJ,EAAA,IAAA;CA3HF,EA0HmB;;CA1HnB;;CAHmD,KAAgB,GAAP" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/plugin/kitchensink.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | var __hasProp = {}.hasOwnProperty, 3 | __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; 4 | 5 | Annotator.prototype.setupPlugins = function(config, options) { 6 | var name, opts, pluginConfig, plugins, uri, win, _i, _len, _results; 7 | if (config == null) { 8 | config = {}; 9 | } 10 | if (options == null) { 11 | options = {}; 12 | } 13 | win = Annotator.Util.getGlobal(); 14 | plugins = ['Unsupported', 'Auth', 'Tags', 'Filter', 'Store', 'AnnotateItPermissions']; 15 | if (win.Showdown) { 16 | plugins.push('Markdown'); 17 | } 18 | uri = win.location.href.split(/#|\?/).shift() || ''; 19 | pluginConfig = { 20 | Tags: {}, 21 | Filter: { 22 | filters: [ 23 | { 24 | label: Annotator._t('User'), 25 | property: 'user' 26 | }, { 27 | label: Annotator._t('Tags'), 28 | property: 'tags' 29 | } 30 | ] 31 | }, 32 | Auth: { 33 | tokenUrl: config.tokenUrl || 'http://annotateit.org/api/token' 34 | }, 35 | Store: { 36 | prefix: config.storeUrl || 'http://annotateit.org/api', 37 | annotationData: { 38 | uri: uri 39 | }, 40 | loadFromSearch: { 41 | uri: uri 42 | } 43 | } 44 | }; 45 | for (name in options) { 46 | if (!__hasProp.call(options, name)) continue; 47 | opts = options[name]; 48 | if (__indexOf.call(plugins, name) < 0) { 49 | plugins.push(name); 50 | } 51 | } 52 | $.extend(true, pluginConfig, options); 53 | _results = []; 54 | for (_i = 0, _len = plugins.length; _i < _len; _i++) { 55 | name = plugins[_i]; 56 | if (!(name in pluginConfig) || pluginConfig[name]) { 57 | _results.push(this.addPlugin(name, pluginConfig[name])); 58 | } else { 59 | _results.push(void 0); 60 | } 61 | } 62 | return _results; 63 | }; 64 | 65 | /* 66 | //@ sourceMappingURL=kitchensink.map 67 | */ 68 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/plugin/kitchensink.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "kitchensink.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "src/plugin/kitchensink.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AA2BA,IAAA;wJAAA;;AAAA,CAAA,CAAsC,CAAZ,GAAA,CAAA,EAAjB,GAAT;CACE,KAAA,yDAAA;;GADgC,CAAP;IACzB;;GAD4C,CAAR;IACpC;CAAA,CAAA,CAAA,CAAoB,KAAL;CAAf,CAGA,CAAU,GAAA,CAAV,CAAU,KAAA,UAAA;CAGV,CAAA,CAAM,CAAH,IAAH;CACE,GAAA,GAAO,GAAP;IAPF;CAAA,CAUA,CAAA,CAAuB,CAAjB,CAAA,EAAY;CAVlB,CAYA,CACE,SADF;CACE,CAAM,EAAN;CAAA,CAEE,EADF,EAAA;CACE,CAAS,IAAT,CAAA;SACE;CAAA,CAAQ,GAAP,CAAO,GAAS,CAAhB;CAAD,CAAwC,IAAxC,EAA8B,EAAA;EAC9B,QAFO;CAEP,CAAQ,GAAP,CAAO,GAAS,CAAhB;CAAD,CAAwC,IAAxC,EAA8B,EAAA;UAFvB;QAAT;MAFF;CAAA,CAOE,EADF;CACE,CAAU,EAAmB,EAA7B,EAAA,yBAAA;MAPF;CAAA,CASE,EADF,CAAA;CACE,CAAQ,EAAmB,EAA3B,EAAQ,mBAAR;CAAA,CAEE,IADF,QAAA;CACE,CAAK,CAAL,KAAA;QAFF;CAAA,CAIE,IADF,QAAA;CACE,CAAK,CAAL,KAAA;QAJF;MATF;CAbF,GAAA;AA4BA,CAAA,MAAA,QAAA;;0BAAA;CACE,CAAG,EAAH,CAAA,EAAG,QAAY;CACb,GAAA,EAAA,CAAO;MAFX;CAAA,EA5BA;CAAA,CAgCA,EAAA,EAAA,CAAA,KAAA;AAEA,CAAA;QAAA,sCAAA;wBAAA;AACK,CAAH,GAAA,QAAG;CACD,CAAqB,EAAjB,KAAJ,GAAkC;MADpC;CAAA;MADF;CAAA;mBAnCwB;CAAA" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/plugin/markdown.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, 3 | __hasProp = {}.hasOwnProperty, 4 | __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; 5 | 6 | Annotator.Plugin.Markdown = (function(_super) { 7 | __extends(Markdown, _super); 8 | 9 | Markdown.prototype.events = { 10 | 'annotationViewerTextField': 'updateTextField' 11 | }; 12 | 13 | function Markdown(element, options) { 14 | this.updateTextField = __bind(this.updateTextField, this); 15 | if ((typeof Showdown !== "undefined" && Showdown !== null ? Showdown.converter : void 0) != null) { 16 | Markdown.__super__.constructor.apply(this, arguments); 17 | this.converter = new Showdown.converter(); 18 | } else { 19 | console.error(Annotator._t("To use the Markdown plugin, you must include Showdown into the page first.")); 20 | } 21 | } 22 | 23 | Markdown.prototype.updateTextField = function(field, annotation) { 24 | var text; 25 | text = Annotator.Util.escape(annotation.text || ''); 26 | return $(field).html(this.convert(text)); 27 | }; 28 | 29 | Markdown.prototype.convert = function(text) { 30 | return this.converter.makeHtml(text); 31 | }; 32 | 33 | return Markdown; 34 | 35 | })(Annotator.Plugin); 36 | 37 | /* 38 | //@ sourceMappingURL=markdown.map 39 | */ 40 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/plugin/markdown.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "markdown.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "src/plugin/markdown.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAEA,IAAA;;kSAAA;;AAAM,CAAN,KAAsB,GAAP;CAEb;;CAAA,EACE,GADF;CACE,CAA6B,EAA7B,aAAA,UAAA;CADF,GAAA;;CAaa,CAAA,CAAA,IAAA,WAAC;CACZ,wDAAA;CAAA,GAAA,wFAAA;CACE,KAAA,GAAA,kCAAA;CAAA,EACiB,CAAhB,EAAD,EAAyB,CAAzB;MAFF;CAIE,CAAc,GAAd,CAAA,CAAO,EAAgB,mEAAT;MALL;CAbb,EAaa;;CAbb,CAiCyB,CAAR,EAAA,IAAC,CAAD,KAAjB;CAEE,GAAA,IAAA;CAAA,CAAO,CAAA,CAAP,EAAO,GAAS,CAAuB;CACvC,GAAA,CAAA,EAAc,IAAd;CApCF,EAiCiB;;CAjCjB,EAgDS,CAAA,GAAT,EAAU;CACP,GAAA,IAAD,CAAU,EAAV;CAjDF,EAgDS;;CAhDT;;CAFsC,QAAS" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/plugin/tags.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "tags.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "src/plugin/tags.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAEA,IAAA;GAAA;;kSAAA;;AAAM,CAAN,KAAsB,GAAP;CAEb;;;;;;;CAAA;;CAAA,EAIE,IAJF;CAIE,CAAW,CAAA,CAAX,EAAW,GAAX;CACE,GAAA,MAAA;CAAA,EAAS,CAAA,EAAT;CAAA,CAAA,CAEO,CAAP,EAAA;CACA,GAA8B,EAA9B;CAAA,EAAO,CAAP,CAAO,CAAM,EAAb;QAHA;CADS,YAKT;CALF,IAAW;CAAX,CASe,CAAA,CAAf,CAAe,IAAC,IAAhB;CACQ,EAAN,CAAA,CAAK,QAAL;CAVF,IASe;CAbjB,GAAA;;CAAA,EAkBO,CAlBP,CAkBA;;CAlBA,EAsBO,CAtBP,CAsBA;;CAtBA,EA6BY,MAAA,CAAZ;AACgB,CAAd,GAAA,KAAuB;CAAvB,WAAA;MAAA;CAAA,EAES,CAAT,CAAA,CAA0B,EAAjB,CAAU;CAAiB,CAC1B,CAAqC,EAA7C,CAAA,EADkC,CACjB,WAAT;CAD0B,CAE1B,EAAR,EAAA,KAFkC;CAAA,CAG1B,EAAI,EAAZ,WAHkC;CAFpC,KAES;CAFT,GAQA,EAAiB,EAAjB,CAAU;CAAiB,CACnB,EAAN,EAAA,MADyB;CAR3B,KAQA;CAKA,GAAA,EAAA,CAAqB,EAAR;CACX,GAAC,EAAD,CAAkB,EAAR;CACR,CAAO,GAAP,GAAA,CAAgB;CAAhB,CACU,IADV,EACA;CADA,CAEY,EAAqB,EAAL,EAA5B,CAAqB,CAArB,IAFA;CADF,OAAA;MAdF;CAmBC,EAAQ,CAAR,CAAD,GAAS,GAAT;CAjDF,EA6BY;;CA7BZ,EA6DW,GAAA,GAAX;CACG,GAAA,EAAD,CAAQ,EAAR,EAAA;CA9DF,EA6DW;;CA7DX,EA0Ee,EAAA,IAAC,IAAhB;CACG,GAAA,CAAD,EAAQ,IAAR,EAAA;CA3EF,EA0Ee;;CA1Ef,CA0FqB,CAAR,EAAA,IAAC,CAAD,CAAb;CACE,IAAA,GAAA;CAAA,CAAA,CAAQ,CAAR,CAAA;CACA,GAAA,MAAyD;CAAzD,EAAQ,CAAI,CAAZ,CAAA,IAAqC,GAA7B;MADR;CAGC,EAAD,CAAC,CAAK,MAAN;CA9FF,EA0Fa;;CA1Fb,CA+G2B,CAAR,EAAA,IAAC,CAAD,OAAnB;CACa,EAAO,CAAlB,CAAuC,IAArB,CAAR,CAAV;CAhHF,EA+GmB;;CA/GnB,CA+HsB,CAAR,EAAA,IAAC,CAAD,EAAd;CACE,EAAQ,CAAR,CAAA;CAEA,GAAA,EAAA,CAAuB,GAAV;CACL,EAAgC,CAAtC,CAAK,GAAL,CAAsC,IAAtC,GAAA;CACE,KAAA,MAAA;CAAU,CAAqB,CAAtB,CAAA,EAAT,GAAgC,CAAP,KAAzB;CAC+C,EAAV,CAAc,EAAd,GAAS,QAA1C,aAAA;CADK,EAAA,CAAA,KAAsB;CADjC,MAAsC;MADxC;CAOQ,IAAD,CAAL,OAAA;MAVU;CA/Hd,EA+Hc;;CA/Hd;;CAFkC,QAAS;;AA0J7C,CA1JA,CA0J+C,CAAR,CAAlB,CAAkB,CAAvB,GAAP,KAAT;CACE,KAAA,8CAAA;;GADoD,CAAP;IAC7C;CAAA,CAAA,CAAW,IAAX;CAAA,CACA,CAAW,KAAX;CACA,CAAA,EAAG,CAAH;CACE,EAAW,CAAX,CAAgB,CAAL,EAAX;AACA,CAAA,QAAA,sCAAA;8BAAA;CAAkC,GAAL;AAC3B,CAAA,YAAA,gCAAA;0BAAA;AAA2D,CAArB,EAAD,CAAH,CAAwB,EAAxB;CAAlC,GAAW,GAAX,KAAA;YAAA;CAAA;QADF;CAAA,IAFF;IAFA;CAOoB,IAAT,EAAX,CAAmB,CAAnB;CARqC" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/plugin/unsupported.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | var _ref, 3 | __hasProp = {}.hasOwnProperty, 4 | __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; 5 | 6 | Annotator.Plugin.Unsupported = (function(_super) { 7 | __extends(Unsupported, _super); 8 | 9 | function Unsupported() { 10 | _ref = Unsupported.__super__.constructor.apply(this, arguments); 11 | return _ref; 12 | } 13 | 14 | Unsupported.prototype.options = { 15 | message: Annotator._t("Sorry your current browser does not support the Annotator") 16 | }; 17 | 18 | Unsupported.prototype.pluginInit = function() { 19 | var _this = this; 20 | if (!Annotator.supported()) { 21 | return $(function() { 22 | Annotator.showNotification(_this.options.message); 23 | if ((window.XMLHttpRequest === void 0) && (ActiveXObject !== void 0)) { 24 | return $('html').addClass('ie6'); 25 | } 26 | }); 27 | } 28 | }; 29 | 30 | return Unsupported; 31 | 32 | })(Annotator.Plugin); 33 | 34 | /* 35 | //@ sourceMappingURL=unsupported.map 36 | */ 37 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/plugin/unsupported.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "unsupported.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "src/plugin/unsupported.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAEA,IAAA;GAAA;kSAAA;;AAAM,CAAN,KAAsB,GAAP;CAEb;;;;;CAAA;;CAAA,EACE,IADF;CACE,CAAS,EAAT,GAAA,EAAkB,kDAAT;CADX,GAAA;;CAAA,EAOY,MAAA,CAAZ;CACE,OAAA,IAAA;AAAO,CAAP,GAAA,KAAgB;CACd,EAAE,MAAA,IAAF;CAEE,IAA4B,EAAO,CAAnC,CAAS,OAAT;CAIA,GAAG,CAA0B,CAAnB,EAAV,KAA6C,CAAzC;CACF,IAAA,CAAA,EAAA,SAAA;UAPF;CAAF,MAAE;MAFM;CAPZ,EAOY;;CAPZ;;CAFyC,QAAS" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/preamble.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | /* 3 | ** Annotator {{VERSION}} 4 | ** https://github.com/okfn/annotator/ 5 | ** 6 | ** Copyright 2012 {{AUTHORS}}. 7 | ** Dual licensed under the MIT and GPLv3 licenses. 8 | ** https://github.com/okfn/annotator/blob/master/LICENSE 9 | ** 10 | ** Built at: {{DATE}} 11 | */ 12 | 13 | 14 | 15 | /* 16 | //@ sourceMappingURL=preamble.map 17 | */ 18 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/preamble.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "preamble.js", 4 | "sourceRoot": "..", 5 | "sources": [ 6 | "src/preamble.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAAA;;;;;;;;;;CAAA;CAAA" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/console_spec.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | 3 | 4 | /* 5 | //@ sourceMappingURL=console_spec.map 6 | */ 7 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/console_spec.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "console_spec.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "test/spec/console_spec.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AA6I6D" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/notification_spec.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | describe('Annotator.Notification', function() { 3 | var notification; 4 | notification = null; 5 | beforeEach(function() { 6 | return notification = new Annotator.Notification(); 7 | }); 8 | afterEach(function() { 9 | return notification.element.remove(); 10 | }); 11 | it('should be appended to the document.body', function() { 12 | return assert.equal(notification.element[0].parentNode, document.body); 13 | }); 14 | describe('.show()', function() { 15 | var message; 16 | message = 'This is a notification message'; 17 | beforeEach(function() { 18 | return notification.show(message); 19 | }); 20 | it('should have a class named "annotator-notice-show"', function() { 21 | return assert.isTrue(notification.element.hasClass('annotator-notice-show')); 22 | }); 23 | return it('should update the notification message', function() { 24 | return assert.equal(notification.element.html(), message); 25 | }); 26 | }); 27 | return describe('.hide()', function() { 28 | beforeEach(function() { 29 | return notification.hide(); 30 | }); 31 | return it('should not have a class named "show"', function() { 32 | return assert.isFalse(notification.element.hasClass('show')); 33 | }); 34 | }); 35 | }); 36 | 37 | /* 38 | //@ sourceMappingURL=notification_spec.map 39 | */ 40 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/notification_spec.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "notification_spec.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "test/spec/notification_spec.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAAA,CAAS,CAA0B,CAAA,KAAnC,CAAmC,eAAnC;CACE,KAAA,MAAA;CAAA,CAAA,CAAe,CAAf,QAAA;CAAA,CAEA,CAAW,MAAA,CAAX;CAC+B,EAAV,CAAA,KAAS,EAA5B,CAAA;CADF,EAAW;CAFX,CAKA,CAAU,MAAV;CACe,KAAb,CAAoB,IAApB,CAAY;CADd,EAAU;CALV,CAQA,CAA8C,MAAA,gCAA9C;CACS,CAA0C,EAAjD,CAAA,CAAM,CAA4B,CAAuB,EAAzD,CAAA,CAAyB;CAD3B,EAA8C;CAR9C,CAWA,CAAoB,KAApB,CAAA;CACE,MAAA,CAAA;CAAA,EAAU,CAAV,GAAA,yBAAA;CAAA,EAEW,CAAX,KAAW,CAAX;CACe,GAAb,GAAA,KAAY,CAAZ;CADF,IAAW;CAFX,CAKA,CAAwD,CAAxD,KAAwD,0CAAxD;CACS,KAAD,CAA4B,CAApB,IAAY,CAA1B,UAAc;CADhB,IAAwD;CAGrD,CAAH,CAA6C,MAAA,EAA7C,6BAAA;CACS,CAAmC,EAA7B,CAAb,CAAM,CAA2B,KAAR,CAAzB;CADF,IAA6C;CAT/C,EAAoB;CAYX,CAAW,CAAA,KAApB,CAAA;CACE,EAAW,CAAX,KAAW,CAAX;CACe,GAAb,QAAY,CAAZ;CADF,IAAW;CAGR,CAAH,CAA2C,MAAA,EAA3C,2BAAA;CACS,KAAD,CAAN,CAAe,IAAY,CAA3B;CADF,IAA2C;CAJ7C,EAAoB;CAxBa" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/plugin/auth_spec.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "auth_spec.js", 4 | "sourceRoot": "../../..", 5 | "sources": [ 6 | "test/spec/plugin/auth_spec.coffee" 7 | ], 8 | "names": [], 9 | "mappings": "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" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/plugin/kitchensink_spec.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "kitchensink_spec.js", 4 | "sourceRoot": "../../..", 5 | "sources": [ 6 | "test/spec/plugin/kitchensink_spec.coffee" 7 | ], 8 | "names": [], 9 | "mappings": "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" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/plugin/markdown_spec.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | describe('Annotator.Plugin.Markdown', function() { 3 | var input, output, plugin; 4 | input = 'Is **this** [Markdown](http://daringfireball.com)?'; 5 | output = '

Is this Markdown?

'; 6 | plugin = null; 7 | beforeEach(function() { 8 | return plugin = new Annotator.Plugin.Markdown($('
')[0]); 9 | }); 10 | describe("events", function() { 11 | return it("should call Markdown#updateTextField() when annotationViewerTextField event is fired", function() { 12 | var annotation, field; 13 | field = $('
')[0]; 14 | annotation = { 15 | text: 'test' 16 | }; 17 | sinon.spy(plugin, 'updateTextField'); 18 | plugin.publish('annotationViewerTextField', [field, annotation]); 19 | return assert.isTrue(plugin.updateTextField.calledWith(field, annotation)); 20 | }); 21 | }); 22 | describe("constructor", function() { 23 | it("should create a new instance of Showdown", function() { 24 | return assert.ok(plugin.converter); 25 | }); 26 | return it("should log an error if Showdown is not loaded", function() { 27 | var converter; 28 | sinon.stub(console, 'error'); 29 | converter = Showdown.converter; 30 | Showdown.converter = null; 31 | plugin = new Annotator.Plugin.Markdown($('
')[0]); 32 | assert(console.error.calledOnce); 33 | Showdown.converter = converter; 34 | return console.error.restore(); 35 | }); 36 | }); 37 | describe("updateTextField", function() { 38 | var annotation, field; 39 | field = null; 40 | annotation = null; 41 | beforeEach(function() { 42 | field = $('
')[0]; 43 | annotation = { 44 | text: input 45 | }; 46 | sinon.stub(plugin, 'convert').returns(output); 47 | sinon.stub(Annotator.Util, 'escape').returns(input); 48 | return plugin.updateTextField(field, annotation); 49 | }); 50 | afterEach(function() { 51 | return Annotator.Util.escape.restore(); 52 | }); 53 | it('should process the annotation text as Markdown', function() { 54 | return assert.isTrue(plugin.convert.calledWith(input)); 55 | }); 56 | it('should update the content in the field', function() { 57 | return assert.equal($(field).html(), output); 58 | }); 59 | return it("should escape any existing HTML to prevent XSS", function() { 60 | return assert.isTrue(Annotator.Util.escape.calledWith(input)); 61 | }); 62 | }); 63 | return describe("convert", function() { 64 | return it("should convert the provided text into markdown", function() { 65 | return assert.equal(plugin.convert(input), output); 66 | }); 67 | }); 68 | }); 69 | 70 | /* 71 | //@ sourceMappingURL=markdown_spec.map 72 | */ 73 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/plugin/markdown_spec.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "markdown_spec.js", 4 | "sourceRoot": "../../..", 5 | "sources": [ 6 | "test/spec/plugin/markdown_spec.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAAA,CAAS,CAA6B,CAAA,KAAtC,CAAsC,kBAAtC;CACE,KAAA,eAAA;CAAA,CAAA,CAAS,EAAT,+CAAA;CAAA,CACA,CAAS,GAAT,6EADA;CAAA,CAEA,CAAS,CAFT,EAEA;CAFA,CAKA,CAAW,MAAA,CAAX;CACyB,EAAV,CAAA,EAAb,EAAa,CAAS,EAAtB;CADF,EAAW;CALX,CAQA,CAAmB,KAAnB,CAAmB;CACd,CAAH,CAA2F,MAAA,EAA3F,2EAAA;CACE,SAAA,OAAA;CAAA,EAAQ,EAAR,CAAA,GAAQ;CAAR,EACa,GAAb,IAAA;CAAa,CAAO,EAAN,EAAD,EAAC;CADd,OAAA;CAAA,CAGkB,CAAlB,EAAK,CAAL,WAAA;CAHA,CAI4C,GAAA,CAA5C,CAAA,GAA4C,iBAA5C;CACO,CAAgD,GAAzC,CAAR,IAAQ,GAAd,EAAoC;CANtC,IAA2F;CAD7F,EAAmB;CARnB,CAiBA,CAAwB,KAAxB,CAAwB,IAAxB;CACE,CAAA,CAA+C,CAA/C,KAA+C,iCAA/C;CACS,CAAP,IAAM,GAAN,IAAA;CADF,IAA+C;CAG5C,CAAH,CAAoD,MAAA,EAApD,oCAAA;CACE,QAAA,CAAA;CAAA,CAAoB,EAApB,CAAK,CAAL,CAAA;CAAA,EAEY,GAAZ,EAAoB,CAApB;CAFA,EAGqB,CAHrB,EAGA,EAAQ,CAAR;CAHA,EAKa,CAAA,EAAb,EAAa,CAAS;CALtB,IAMoB,CAApB,CAAc,GAAd;CANA,EAQqB,GAArB,EAAQ,CAAR;CACQ,IAAK,EAAN,MAAP;CAVF,IAAoD;CAJtD,EAAwB;CAjBxB,CAiCA,CAA4B,KAA5B,CAA4B,QAA5B;CACE,OAAA,SAAA;CAAA,EAAa,CAAb,CAAA;CAAA,EACa,CAAb,MAAA;CADA,EAGW,CAAX,KAAW,CAAX;CACE,EAAQ,EAAR,CAAA,GAAQ;CAAR,EACa,GAAb,IAAA;CAAa,CAAO,EAAN,CAAD,GAAC;CADd,OAAA;CAAA,CAEmB,EAAnB,CAAK,CAAL,CAAA,EAAA;CAFA,CAG2B,EAA3B,CAAK,CAAL,CAAA,CAAA,CAAoB;CAEb,CAAuB,GAA9B,CAAM,IAAN,GAAA,EAAA;CANF,IAAW;CAHX,EAWU,CAAV,KAAA;CACY,GAAI,EAAO,CAArB,EAAS,IAAT;CADF,IAAU;CAXV,CAcA,CAAqD,CAArD,KAAqD,uCAArD;CACS,IAAO,CAAR,CAAsB,GAAd,GAAd;CADF,IAAqD;CAdrD,CAiBA,CAA6C,CAA7C,KAA6C,+BAA7C;CACS,CAAuB,EAAjB,CAAb,CAAM,OAAN;CADF,IAA6C;CAG1C,CAAH,CAAqD,MAAA,EAArD,qCAAA;CACS,GAAqB,CAAd,CAAR,GAAiB,CAAT,GAAd;CADF,IAAqD;CArBvD,EAA4B;CAwBnB,CAAW,CAAA,KAApB,CAAA;CACK,CAAH,CAAqD,MAAA,EAArD,qCAAA;CACS,CAA6B,GAApC,CAAM,CAAO,MAAb;CADF,IAAqD;CADvD,EAAoB;CA1DgB" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/plugin/tags_spec.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "tags_spec.js", 4 | "sourceRoot": "../../..", 5 | "sources": [ 6 | "test/spec/plugin/tags_spec.coffee" 7 | ], 8 | "names": [], 9 | "mappings": "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" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/plugin/unsupported_spec.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | 3 | 4 | /* 5 | //@ sourceMappingURL=unsupported_spec.map 6 | */ 7 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/plugin/unsupported_spec.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "unsupported_spec.js", 4 | "sourceRoot": "../../..", 5 | "sources": [ 6 | "test/spec/plugin/unsupported_spec.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAwFyC" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/spec/util_spec.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "util_spec.js", 4 | "sourceRoot": "../..", 5 | "sources": [ 6 | "test/spec/util_spec.coffee" 7 | ], 8 | "names": [], 9 | "mappings": "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" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/util.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "util.js", 4 | "sourceRoot": "..", 5 | "sources": [ 6 | "src/util.coffee" 7 | ], 8 | "names": [], 9 | "mappings": "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" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/viewer.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "viewer.js", 4 | "sourceRoot": "..", 5 | "sources": [ 6 | "src/viewer.coffee" 7 | ], 8 | "names": [], 9 | "mappings": "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" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/widget.js: -------------------------------------------------------------------------------- 1 | // Generated by CoffeeScript 1.6.3 2 | var __hasProp = {}.hasOwnProperty, 3 | __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; 4 | 5 | Annotator.Widget = (function(_super) { 6 | __extends(Widget, _super); 7 | 8 | Widget.prototype.classes = { 9 | hide: 'annotator-hide', 10 | invert: { 11 | x: 'annotator-invert-x', 12 | y: 'annotator-invert-y' 13 | } 14 | }; 15 | 16 | function Widget(element, options) { 17 | Widget.__super__.constructor.apply(this, arguments); 18 | this.classes = $.extend({}, Annotator.Widget.prototype.classes, this.classes); 19 | } 20 | 21 | Widget.prototype.destroy = function() { 22 | this.removeEvents(); 23 | return this.element.remove(); 24 | }; 25 | 26 | Widget.prototype.checkOrientation = function() { 27 | var current, offset, viewport, widget, window; 28 | this.resetOrientation(); 29 | window = $(Annotator.Util.getGlobal()); 30 | widget = this.element.children(":first"); 31 | offset = widget.offset(); 32 | viewport = { 33 | top: window.scrollTop(), 34 | right: window.width() + window.scrollLeft() 35 | }; 36 | current = { 37 | top: offset.top, 38 | right: offset.left + widget.width() 39 | }; 40 | if ((current.top - viewport.top) < 0) { 41 | this.invertY(); 42 | } 43 | if ((current.right - viewport.right) > 0) { 44 | this.invertX(); 45 | } 46 | return this; 47 | }; 48 | 49 | Widget.prototype.resetOrientation = function() { 50 | this.element.removeClass(this.classes.invert.x).removeClass(this.classes.invert.y); 51 | return this; 52 | }; 53 | 54 | Widget.prototype.invertX = function() { 55 | this.element.addClass(this.classes.invert.x); 56 | return this; 57 | }; 58 | 59 | Widget.prototype.invertY = function() { 60 | this.element.addClass(this.classes.invert.y); 61 | return this; 62 | }; 63 | 64 | Widget.prototype.isInvertedY = function() { 65 | return this.element.hasClass(this.classes.invert.y); 66 | }; 67 | 68 | Widget.prototype.isInvertedX = function() { 69 | return this.element.hasClass(this.classes.invert.x); 70 | }; 71 | 72 | return Widget; 73 | 74 | })(Delegator); 75 | 76 | /* 77 | //@ sourceMappingURL=widget.map 78 | */ 79 | -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/widget.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "widget.js", 4 | "sourceRoot": "..", 5 | "sources": [ 6 | "src/widget.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AAEA,IAAA;kSAAA;;AAAM,CAAN,QAAe;CAEb;;CAAA,EACE,IADF;CACE,CAAM,EAAN,YAAA;CAAA,CAEE,EADF,EAAA;CACE,CAAG,IAAH,cAAA;CAAA,CACG,IAAH,cADA;MAFF;CADF,GAAA;;CAiBa,CAAA,CAAA,IAAA,SAAC;CACZ,GAAA,KAAA,gCAAA;CAAA,CACW,CAAA,CAAX,EAAW,CAAX,EAAiC;CAnBnC,EAiBa;;CAjBb,EAwBS,IAAT,EAAS;CACP,GAAA,QAAA;CACC,GAAA,EAAD,CAAQ,IAAR;CA1BF,EAwBS;;CAxBT,EA4BkB,MAAA,OAAlB;CACE,OAAA,iCAAA;CAAA,GAAA,YAAA;CAAA,EAEW,CAAX,EAAA,GAAsB;CAFtB,EAGW,CAAX,EAAA,CAAmB,CAAR;CAHX,EAIW,CAAX,EAAA;CAJA,EAKW,CAAX,IAAA;CAAW,CACF,CAAP,GAAA,GAAO;CADE,CAEF,CAAiB,EAAxB,CAAA,IAAwB;CAP1B,KAAA;CAAA,EASU,CAAV,GAAA;CAAU,CACD,CAAP,GAAA;CADQ,CAED,CAAc,CAAd,CAAP,CAAA;CAXF,KAAA;CAcA,EAAI,CAAJ,GAAW,CAAe;CACxB,GAAI,EAAJ,CAAA;MAfF;CAiBA,EAAoB,CAApB,CAAI,EAAO,CAAiB;CAC1B,GAAI,EAAJ,CAAA;MAlBF;CADgB,UAqBhB;CAjDF,EA4BkB;;CA5BlB,EA0DkB,MAAA,OAAlB;CACE,GAAA,EAAoC,CAA5B,IAAR;CADgB,UAEhB;CA5DF,EA0DkB;;CA1DlB,EAqES,IAAT,EAAS;CACP,GAAA,EAAiC,CAAzB,CAAR;CADO,UAEP;CAvEF,EAqES;;CArET,EAgFS,IAAT,EAAS;CACP,GAAA,EAAiC,CAAzB,CAAR;CADO,UAEP;CAlFF,EAgFS;;CAhFT,EAuFa,MAAA,EAAb;CACG,GAAA,EAAgC,CAAzB,CAAR,GAAA;CAxFF,EAuFa;;CAvFb,EA6Fa,MAAA,EAAb;CACG,GAAA,EAAgC,CAAzB,CAAR,GAAA;CA9FF,EA6Fa;;CA7Fb;;CAF6B" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/annotator/lib/xpath.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "xpath.js", 4 | "sourceRoot": "..", 5 | "sources": [ 6 | "src/xpath.coffee" 7 | ], 8 | "names": [], 9 | "mappings": ";AACA,IAAA,uEAAA;;AAAA,CAAA,EAAoB,MAAC,GAAD,KAApB;CACE,CAAA,IAAA;CAAA,CAAA,CAAK,CAAI,KAAK;CACZ,OAAA,gBAAA;CAAA,CAAA,CAAO,CAAP;CAAA,EACO,CAAP;CAEA,EAAM,CAAI,CAAc,OAAlB;CACJ,CAAoC,CAA1B,CAAI,CAAJ,CAAV,CAAA;CAAA,EACA,CAAY,CAAN,CAAN,CAAM,CAAA,EAAA;CADN,EAGA,GAAA;CAHA,EAIO,CAAP,EAAA,CAAyB,IAAZ;CAJb,EAKO,CAAP,EAAA,IALA;CAJF,IAGA;CAJY,UAYZ;CAZG,EAAS;CAcX,CAAD,CAAF,MAAA;CAfkB;;AAmBpB,CAnBA,EAmBkB,MAAC,GAAD,GAAlB;CAEE,KAAA,iCAAA;CAAA,CAAA,CAAiB,CAAA,KAAC,KAAlB;CACE,OAAA,CAAA;CAAA,EAAO,CAAP,OAAO;CAAP,EACA,CAAA,WAAM;CAFS,CAGf,CAAE,CAAF,OAAA;CAHF,EAAiB;CAAjB,CAKA,CAAW,KAAX,IALA;CAAA,CAOA,CAAY,CAAA,KAAZ;CACE,IAAA,GAAA;CAAA,CAAA,CAAQ,CAAR,CAAA;CACA,EAAA,CAAM,CAAQ,GAAd,GAAM;CACJ,GAAO,EAAP,MAAA;CACE,EAAyF,CAA/E,CAAA,GAAA,MAAA,wDAAM;QADlB;CAAA,EAEQ,CAAC,CAAT,CAAA,QAAS;CAFT,EAGO,CAAP,EAAA,IAHA;CAFF,IACA;CADA,EAMQ,CAAR,CAAA;CANA,CAO6B,CAArB,CAAR,CAAA,EAAQ;CARE,UASV;CAhBF,EAOY;CAPZ,CAkBA,CAAK,CAAI,KAAK;CACZ,GAAA,IAAA;CAAA,EAAO,CAAP,KAAO;CADK,UAGZ;CAHG,EAAS;CAKX,CAAD,CAAF,MAAA;CAzBgB;;AA2BlB,CA9CA,CA8CmB,CAAP,CAAA,CAAA,IAAZ;CACE,KAAA,gCAAA;AAAO,CAAP,CAAA,EAAA,SAAO;CACL,GAAU,CAAA,KAAA,0BAAA;IADZ;CAAA,CAEA,CAAW,CAAI,IAAf,EAFA;CAAA,CAGA,CAAQ,EAAR;AACA,CAAA,MAAA,wCAAA;0BAAA;CACE,EAAO,CAAP,CAAO,MAAA;CACP,GAAA,CAAW;CACT,GAAS,CAAT,CAAA;CACA,GAAG,CAAA,CAAH;CACE,IAAA,UAAO;QAHX;MAFF;CAAA,EAJA;CAUA,GAAU,CAAA,GAAA,8BAAA;CAXA;;AAcZ,CA5DA,EA4Dc,CAAA,KAAC,EAAf;CACI,KAAA,EAAA;CAAA,CAAA,CAAW,CAAI,IAAf,GAAW;CACX,OAAA,EAAO;CAAP,MAAA,EACO;CAAa,OAAA,KAAO;CAD3B,QAEO,CAFP;CAEuB,UAAA,EAAO;CAF9B,QAGO,OAHP;CAG6B,YAAO,IAAP;CAH7B;CAIO,OAAA,KAAO;CAJd,EAFU;CAAA;;AASd,CArEA,EAqEkB,CAAA,KAAC,MAAnB;CACE,KAAA,EAAA;CAAA,CAAA,CAAA;CAAA,CACA,CAAA,CADA;CAEA,EAAA,MAAM;CACJ,EAAM,CAAN,CAAmB,GAAhB;AACD,CAAA,CAAA,CAAA,GAAA;MADF;CAAA,EAEA,CAAA,WAFA;CAHF,EAEA;CAHgB,QAOhB;CAPgB" 10 | } -------------------------------------------------------------------------------- /epub.js/libs/fileStorage/workers/loader_filesystem.min.js: -------------------------------------------------------------------------------- 1 | /*! fileStorage - v0.1.0 - 2013-06-04 */var fileStorage = fileStorage || {}; 2 | var _requestFileSystem=self.requestFileSystem||self.webkitRequestFileSystem;const DBSIZE=5242880,DBTYPE=TEMPORARY;self.onmessage=function(e){var t=e.data;self.request(t,function(e){self.save(t,e,function(){self.postMessage(t)})})},self.openFs=function(e){if(self._fs){e&&e(self._fs);return}_requestFileSystem(DBTYPE,DBSIZE,function(t){self._fs=t,e&&e(t)},self.failure)},self.request=function(e,t){var n=new self.loadFile(e);n.succeeded=function(e){t&&t(e)},n.failed=function(e){self.postMessage("failed: "+e.toString())},n.start()},self.save=function(e,t,n){self.openFs(function(r){var i=e.split("/").slice(0,-1);self.createDir(r.root,i),r.root.getFile(e,{create:!0},function(r){r.createWriter(function(r){r.onwriteend=function(e){n(e)},r.onerror=function(t){self.postMessage("write error:"+self.errorHandler(err)+" path="+e)},r.write(t)})},self.failure)})},self.createDir=function(e,t){if(t[0]=="."||t[0]=="")t=t.slice(1);e.getDirectory(t[0],{create:!0},function(e){t.length&&createDir(e,t.slice(1))},self.failure)},self.failure=function(e){self.postMessage("failed: "+self.errorHandler(e))},self.errorHandler=function(e){switch(e.code){case FileError.QUOTA_EXCEEDED_ERR:return"QUOTA_EXCEEDED_ERR";case FileError.NOT_FOUND_ERR:return"NOT_FOUND_ERR";case FileError.SECURITY_ERR:return"SECURITY_ERR";case FileError.INVALID_MODIFICATION_ERR:return"INVALID_MODIFICATION_ERR";case FileError.INVALID_STATE_ERR:return"INVALID_STATE_ERR";default:return"Unknown Error"}},self.loadFile=function(e,t){var n=new XMLHttpRequest;return this.succeeded=function(e){t&&t(e)},this.failed=function(e){console.log("Error:",e)},this.start=function(){var t=this;n.open("GET",e,!0),n.responseType="blob",n.onload=function(e){this.status==200&&t.succeeded(this.response)},n.onerror=function(e){t.failed(this.status)},n.send()},{start:this.start,succeeded:this.succeeded,failed:this.failed}},self.openFs(); -------------------------------------------------------------------------------- /epub.js/libs/screenfull.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * screenfull 3 | * v1.1.0 - 2013-09-06 4 | * https://github.com/sindresorhus/screenfull.js 5 | * (c) Sindre Sorhus; MIT License 6 | */ 7 | !function(a,b){"use strict";var c="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,d=function(){for(var a,c,d=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenchange","MSFullscreenerror"]],e=0,f=d.length,g={};f>e;e++)if(a=d[e],a&&a[1]in b){for(e=0,c=a.length;c>e;e++)g[d[0][e]]=a[e];return g}return!1}(),e={request:function(a){var e=d.requestFullscreen;a=a||b.documentElement,/5\.1[\.\d]* Safari/.test(navigator.userAgent)?a[e]():a[e](c&&Element.ALLOW_KEYBOARD_INPUT)},exit:function(){b[d.exitFullscreen]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},onchange:function(){},onerror:function(){},raw:d};return d?(Object.defineProperties(e,{isFullscreen:{get:function(){return!!b[d.fullscreenElement]}},element:{enumerable:!0,get:function(){return b[d.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return!!b[d.fullscreenEnabled]}}}),b.addEventListener(d.fullscreenchange,function(a){e.onchange.call(e,a)}),b.addEventListener(d.fullscreenerror,function(a){e.onerror.call(e,a)}),a.screenfull=e,void 0):(a.screenfull=!1,void 0)}(window,document); -------------------------------------------------------------------------------- /epub.js/license: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013, FuturePress 2 | 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 15 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 18 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | The views and conclusions contained in the software and documentation are those 26 | of the authors and should not be interpreted as representing official policies, 27 | either expressed or implied, of the FreeBSD Project. 28 | -------------------------------------------------------------------------------- /epub.js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EpubJS", 3 | "version": "0.2.1", 4 | "repository": "https://github.com/futurepress/epub.js", 5 | "devDependencies": { 6 | "grunt": "~0.4.4", 7 | "grunt-contrib-connect": "~0.7.1", 8 | "connect": "~2.14.4", 9 | "colors": "~0.6.2", 10 | "optimist": "~0.6.1", 11 | "portfinder": "~0.2.1", 12 | "grunt-contrib-concat": "~0.4.0", 13 | "grunt-contrib-uglify": "~0.4.0", 14 | "grunt-contrib-jshint": "~0.10.0", 15 | "grunt-contrib-copy": "~0.5.0", 16 | "grunt-concat-sourcemap": "~0.4.1" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /epub.js/reader/css/annotations.css: -------------------------------------------------------------------------------- 1 | .ui-loader { 2 | display: none; 3 | } 4 | 5 | .annotator-hl { 6 | box-shadow: none !important; 7 | cursor: pointer !important; 8 | } -------------------------------------------------------------------------------- /epub.js/reader/css/popup.css: -------------------------------------------------------------------------------- 1 | /* http://davidwalsh.name/css-tooltips */ 2 | /* base CSS element */ 3 | .popup { 4 | background: #eee; 5 | border: 1px solid #ccc; 6 | padding: 10px; 7 | border-radius: 8px; 8 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); 9 | position: fixed; 10 | max-width: 300px; 11 | font-size: 12px; 12 | 13 | display: none; 14 | margin-left: 2px; 15 | 16 | margin-top: 30px; 17 | } 18 | 19 | .popup.above { 20 | margin-top: -10px; 21 | } 22 | 23 | .popup.left { 24 | margin-left: -20px; 25 | } 26 | 27 | .popup.right { 28 | margin-left: 40px; 29 | } 30 | 31 | .pop_content { 32 | max-height: 225px; 33 | overflow-y: auto; 34 | } 35 | 36 | .pop_content > p { 37 | margin-top: 0; 38 | } 39 | 40 | /* below */ 41 | .popup:before { 42 | position: absolute; 43 | display: inline-block; 44 | border-bottom: 10px solid #eee; 45 | border-right: 10px solid transparent; 46 | border-left: 10px solid transparent; 47 | border-bottom-color: rgba(0, 0, 0, 0.2); 48 | left: 50%; 49 | top: -10px; 50 | margin-left: -6px; 51 | content: ''; 52 | } 53 | 54 | .popup:after { 55 | position: absolute; 56 | display: inline-block; 57 | border-bottom: 9px solid #eee; 58 | border-right: 9px solid transparent; 59 | border-left: 9px solid transparent; 60 | left: 50%; 61 | top: -9px; 62 | margin-left: -5px; 63 | content: ''; 64 | } 65 | 66 | /* above */ 67 | .popup.above:before { 68 | border-bottom: none; 69 | border-top: 10px solid #eee; 70 | border-top-color: rgba(0, 0, 0, 0.2); 71 | top: 100%; 72 | } 73 | 74 | .popup.above:after { 75 | border-bottom: none; 76 | border-top: 9px solid #eee; 77 | top: 100%; 78 | } 79 | 80 | .popup.left:before, 81 | .popup.left:after 82 | { 83 | left: 20px; 84 | } 85 | 86 | .popup.right:before, 87 | .popup.right:after 88 | { 89 | left: auto; 90 | right: 20px; 91 | } 92 | 93 | 94 | .popup.show, .popup.on { 95 | display: block; 96 | } -------------------------------------------------------------------------------- /epub.js/reader/font/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/font/fontello.eot -------------------------------------------------------------------------------- /epub.js/reader/font/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/font/fontello.ttf -------------------------------------------------------------------------------- /epub.js/reader/font/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/font/fontello.woff -------------------------------------------------------------------------------- /epub.js/reader/humans.txt: -------------------------------------------------------------------------------- 1 | # humanstxt.org/ 2 | # The humans responsible & technology colophon 3 | 4 | # TEAM 5 | 6 | -- -- 7 | 8 | # THANKS 9 | 10 | 11 | 12 | # TECHNOLOGY COLOPHON 13 | 14 | HTML5, CSS3 15 | jQuery, Modernizr 16 | -------------------------------------------------------------------------------- /epub.js/reader/img/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/.gitignore -------------------------------------------------------------------------------- /epub.js/reader/img/annotator-glyph-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/annotator-glyph-sprite.png -------------------------------------------------------------------------------- /epub.js/reader/img/annotator-icon-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/annotator-icon-sprite.png -------------------------------------------------------------------------------- /epub.js/reader/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/apple-touch-icon.png -------------------------------------------------------------------------------- /epub.js/reader/img/cancelfullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/cancelfullscreen.png -------------------------------------------------------------------------------- /epub.js/reader/img/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/close.png -------------------------------------------------------------------------------- /epub.js/reader/img/fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/fullscreen.png -------------------------------------------------------------------------------- /epub.js/reader/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/loader.gif -------------------------------------------------------------------------------- /epub.js/reader/img/menu-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/menu-icon.png -------------------------------------------------------------------------------- /epub.js/reader/img/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/save.png -------------------------------------------------------------------------------- /epub.js/reader/img/saved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/saved.png -------------------------------------------------------------------------------- /epub.js/reader/img/settings-s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/settings-s.png -------------------------------------------------------------------------------- /epub.js/reader/img/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/settings.png -------------------------------------------------------------------------------- /epub.js/reader/img/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/img/star.png -------------------------------------------------------------------------------- /epub.js/reader/js/hooks/extensions/highlight.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Hooks.register("beforeChapterDisplay").highlight = function(callback, renderer){ 2 | 3 | // EPUBJS.core.addScript("js/libs/jquery.highlight.js", null, renderer.doc.head); 4 | 5 | var s = document.createElement("style"); 6 | s.innerHTML =".highlight { background: yellow; font-weight: normal; }"; 7 | 8 | renderer.render.document.head.appendChild(s); 9 | 10 | if(callback) callback(); 11 | 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /epub.js/reader/js/libs/loader_filesystem.min.js: -------------------------------------------------------------------------------- 1 | /*! fileStorage - v0.1.0 - 2013-06-04 */var fileStorage = fileStorage || {}; 2 | var _requestFileSystem=self.requestFileSystem||self.webkitRequestFileSystem;const DBSIZE=5242880,DBTYPE=TEMPORARY;self.onmessage=function(e){var t=e.data;self.request(t,function(e){self.save(t,e,function(){self.postMessage(t)})})},self.openFs=function(e){if(self._fs){e&&e(self._fs);return}_requestFileSystem(DBTYPE,DBSIZE,function(t){self._fs=t,e&&e(t)},self.failure)},self.request=function(e,t){var n=new self.loadFile(e);n.succeeded=function(e){t&&t(e)},n.failed=function(e){self.postMessage("failed: "+e.toString())},n.start()},self.save=function(e,t,n){self.openFs(function(r){var i=e.split("/").slice(0,-1);self.createDir(r.root,i),r.root.getFile(e,{create:!0},function(r){r.createWriter(function(r){r.onwriteend=function(e){n(e)},r.onerror=function(t){self.postMessage("write error:"+self.errorHandler(err)+" path="+e)},r.write(t)})},self.failure)})},self.createDir=function(e,t){if(t[0]=="."||t[0]=="")t=t.slice(1);e.getDirectory(t[0],{create:!0},function(e){t.length&&createDir(e,t.slice(1))},self.failure)},self.failure=function(e){self.postMessage("failed: "+self.errorHandler(e))},self.errorHandler=function(e){switch(e.code){case FileError.QUOTA_EXCEEDED_ERR:return"QUOTA_EXCEEDED_ERR";case FileError.NOT_FOUND_ERR:return"NOT_FOUND_ERR";case FileError.SECURITY_ERR:return"SECURITY_ERR";case FileError.INVALID_MODIFICATION_ERR:return"INVALID_MODIFICATION_ERR";case FileError.INVALID_STATE_ERR:return"INVALID_STATE_ERR";default:return"Unknown Error"}},self.loadFile=function(e,t){var n=new XMLHttpRequest;return this.succeeded=function(e){t&&t(e)},this.failed=function(e){console.log("Error:",e)},this.start=function(){var t=this;n.open("GET",e,!0),n.responseType="blob",n.onload=function(e){this.status==200&&t.succeeded(this.response)},n.onerror=function(e){t.failed(this.status)},n.send()},{start:this.start,succeeded:this.succeeded,failed:this.failed}},self.openFs(); 3 | //# sourceMappingURL=loader_filesystem.min.js.map -------------------------------------------------------------------------------- /epub.js/reader/js/libs/screenfull.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * screenfull 3 | * v1.1.0 - 2013-09-06 4 | * https://github.com/sindresorhus/screenfull.js 5 | * (c) Sindre Sorhus; MIT License 6 | */ 7 | !function(a,b){"use strict";var c="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,d=function(){for(var a,c,d=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenchange","MSFullscreenerror"]],e=0,f=d.length,g={};f>e;e++)if(a=d[e],a&&a[1]in b){for(e=0,c=a.length;c>e;e++)g[d[0][e]]=a[e];return g}return!1}(),e={request:function(a){var e=d.requestFullscreen;a=a||b.documentElement,/5\.1[\.\d]* Safari/.test(navigator.userAgent)?a[e]():a[e](c&&Element.ALLOW_KEYBOARD_INPUT)},exit:function(){b[d.exitFullscreen]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},onchange:function(){},onerror:function(){},raw:d};return d?(Object.defineProperties(e,{isFullscreen:{get:function(){return!!b[d.fullscreenElement]}},element:{enumerable:!0,get:function(){return b[d.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return!!b[d.fullscreenEnabled]}}}),b.addEventListener(d.fullscreenchange,function(a){e.onchange.call(e,a)}),b.addEventListener(d.fullscreenerror,function(a){e.onerror.call(e,a)}),a.screenfull=e,void 0):(a.screenfull=!1,void 0)}(window,document); -------------------------------------------------------------------------------- /epub.js/reader/moby-dick.epub: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/moby-dick.epub -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/META-INF/container.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/chapter_023.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

Chapter 23. The Lee Shore.

11 |

Some chapters back, one Bulkington was spoken of, a tall, newlanded mariner, encountered in New Bedford at the inn.

12 |

When on that shivering winter’s night, the Pequod thrust her vindictive bows into the cold malicious waves, who should I see standing at her helm but Bulkington! I looked with sympathetic awe and fearfulness upon the man, who in mid-winter just landed from a four years’ dangerous voyage, could so unrestingly push off again for still another tempestuous term. The land seemed scorching to his feet. Wonderfullest things are ever the unmentionable; deep memories yield no epitaphs; this six-inch chapter is the stoneless grave of Bulkington. Let me only say that it fared with him as with the storm-tossed ship, that miserably drives along the leeward land. The port would fain give succor; the port is pitiful; in the port is safety, comfort, hearthstone, supper, warm blankets, friends, all that’s kind to our mortalities. But in that gale, the port, the land, is that ship’s direst jeopardy; she must fly all hospitality; one touch of land, though it but graze the keel, would make her shudder through and through. With all her might she crowds all sail off shore; in so doing, fights 'gainst the very winds that fain would blow her homeward; seeks all the lashed sea’s landlessness again; for refuge’s sake forlornly rushing into peril; her only friend her bitterest foe!

13 |

Know ye now, Bulkington? Glimpses do ye seem to see of that mortally intolerable truth; that all deep, earnest thinking is but the intrepid effort of the soul to keep the open independence of her sea; while the wildest winds of heaven and earth conspire to cast her on the treacherous, slavish shore?

14 |

But as in landlessness alone resides highest truth, shoreless, indefinite as God—so, better is it to perish in that howling infinite, than be ingloriously dashed upon the lee, even if that were safety! For worm-like, then, oh! who would craven crawl to land! Terrors of the terrible! is all this agony so vain? Take heart, take heart, O Bulkington! Bear thee grimly, demigod! Up from the spray of thy ocean-perishing—straight up, leaps thy apotheosis!

15 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/chapter_025.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

Chapter 25. Postscript.

11 |

In behalf of the dignity of whaling, I would fain advance naught but substantiated facts. But after embattling his facts, an advocate who should wholly suppress a not unreasonable surmise, which might tell eloquently upon his cause—such an advocate, would he not be blameworthy?

12 |

It is well known that at the coronation of kings and queens, even modern ones, a certain curious process of seasoning them for their functions is gone through. There is a saltcellar of state, so called, and there may be a castor of state. How they use the salt, precisely—who knows? Certain I am, however, that a king’s head is solemnly oiled at his coronation, even as a head of salad. Can it be, though, that they anoint it with a view of making its interior run well, as they anoint machinery? Much might be ruminated here, concerning the essential dignity of this regal process, because in common life we esteem but meanly and contemptibly a fellow who anoints his hair, and palpably smells of that anointing. In truth, a mature man who uses hair-oil, unless medicinally, that man has probably got a quoggy spot in him somewhere. As a general rule, he can’t amount to much in his totality.

13 |

But the only thing to be considered here, is this—what kind of oil is used at coronations? Certainly it cannot be olive oil, nor macassar oil, nor castor oil, nor bear’s oil, nor train oil, nor cod-liver oil. What then can it possibly be, but sperm oil in its unmanufactured, unpolluted state, the sweetest of all oils?

14 |

Think of that, ye loyal Britons! we whalemen supply your kings and queens with coronation stuff!

15 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/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 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/chapter_038.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

Chapter 38. Dusk.

11 |

BY THE MAINMAST; STARBUCK LEANING AGAINST IT.

12 |

My soul is more than matched; she’s overmanned; and by a madman! Insufferable sting, that sanity should ground arms on such a field! But he drilled deep down, and blasted all my reason out of me! I think I see his impious end; but feel that I must help him to it. Will I, nill I, the ineffable thing has tied me to him; tows me with a cable I have no knife to cut. Horrible old man! Who’s over him, he cries;—aye, he would be a democrat to all above; look, how he lords it over all below! Oh! I plainly see my miserable office,—to obey, rebelling; and worse yet, to hate with touch of pity! For in his eyes I read some lurid woe would shrivel me up, had I it. Yet is there hope. Time and tide flow wide. The hated whale has the round watery world to swim in, as the small gold-fish has its glassy globe. His heaven-insulting purpose, God may wedge aside. I would up heart, were it not like lead. But my whole clock’s run down; my heart the all-controlling weight, I have no key to lift again.

13 |

[A BURST OF REVELRY FROM THE FORECASTLE.]

14 |

Oh, God! to sail with such a heathen crew that have small touch of human mothers in them! Whelped somewhere by the sharkish sea. The white whale is their demigorgon. Hark! the infernal orgies! that revelry is forward! mark the unfaltering silence aft! Methinks it pictures life. Foremost through the sparkling sea shoots on the gay, embattled, bantering bow, but only to drag dark Ahab after it, where he broods within his sternward cabin, builded over the dead water of the wake, and further on, hunted by its wolfish gurglings. The long howl thrills me through! Peace! ye revellers, and set the watch! Oh, life! 'tis in an hour like this, with soul beat down and held to knowledge,—as wild, untutored things are forced to feed—Oh, life! 'tis now that I do feel the latent horror in thee! but 'tis not me! that horror’s out of me! and with the soft feeling of the human in me, yet will I try to fight ye, ye grim, phantom futures! Stand by me, hold me, bind me, O ye blessed influences!

15 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/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 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/chapter_043.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

Chapter 43. Hark!

11 |

“HIST! Did you hear that noise, Cabaco?”

12 |

It was the middle-watch; a fair moonlight; the seamen were standing in a cordon, extending from one of the fresh-water butts in the waist, to the scuttle-butt near the taffrail. In this manner, they passed the buckets to fill the scuttle-butt. Standing, for the most part, on the hallowed precincts of the quarter-deck, they were careful not to speak or rustle their feet. From hand to hand, the buckets went in the deepest silence, only broken by the occasional flap of a sail, and the steady hum of the unceasingly advancing keel.

13 |

It was in the midst of this repose, that Archy, one of the cordon, whose post was near the after-hatches, whispered to his neighbor, a Cholo, the words above.

14 |

“Hist! did you hear that noise, Cabaco?”

15 |

“Take the bucket, will ye, Archy? what noise d’ye mean?”

16 |

“There it is again—under the hatches—don’t you hear it—a cough—it sounded like a cough.”

17 |

“Cough be damned! Pass along that return bucket.”

18 |

“There again—there it is!—it sounds like two or three sleepers turning over, now!”

19 |

“Caramba! have done, shipmate, will ye? It’s the three soaked biscuits ye eat for supper turning over inside of ye—nothing else. Look to the bucket!”

20 |

“Say what ye will, shipmate; I’ve sharp ears.”

21 |

“Aye, you are the chap, ain’t ye, that heard the hum of the old Quakeress’s knitting-needles fifty miles at sea from Nantucket; you’re the chap.”

22 |

“Grin away; we’ll see what turns up. Hark ye, Cabaco, there is somebody down in the after-hold that has not yet been seen on deck; and I suspect our old Mogul knows something of it too. I heard Stubb tell Flask, one morning watch, that there was something of that sort in the wind.”

23 |

“Tish! the bucket!”

24 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/chapter_069.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

Chapter 69. The Funeral.

11 |

Haul in the chains! Let the carcase go astern!

12 |

The vast tackles have now done their duty. The peeled white body of the beheaded whale flashes like a marble sepulchre; though changed in hue, it has not perceptibly lost anything in bulk. It is still colossal. Slowly it floats more and more away, the water round it torn and splashed by the insatiate sharks, and the air above vexed with rapacious flights of screaming fowls, whose beaks are like so many insulting poniards in the whale. The vast white headless phantom floats further and further from the ship, and every rod that it so floats, what seem square roods of sharks and cubic roods of fowls, augment the murderous din. For hours and hours from the almost stationary ship that hideous sight is seen. Beneath the unclouded and mild azure sky, upon the fair face of the pleasant sea, wafted by the joyous breezes, that great mass of death floats on and on, till lost in infinite perspectives.

13 |

There’s a most doleful and most mocking funeral! The sea-vultures all in pious mourning, the air-sharks all punctiliously in black or speckled. In life but few of them would have helped the whale, I ween, if peradventure he had needed it; but upon the banquet of his funeral they most piously do pounce. Oh, horrible vultureism of earth! from which not the mightiest whale is free.

14 |

Nor is this the end. Desecrated as the body is, a vengeful ghost survives and hovers over it to scare. Espied by some timid man-of-war or blundering discovery-vessel from afar, when the distance obscuring the swarming fowls, nevertheless still shows the white mass floating in the sun, and the white spray heaving high against it; straightway the whale’s unharming corpse, with trembling fingers is set down in the log—SHOALS, ROCKS, AND BREAKERS HEREABOUTS: BEWARE! And for years afterwards, perhaps, ships shun the place; leaping over it as silly sheep leap over a vacuum, because their leader originally leaped there when a stick was held. There’s your law of precedents; there’s your utility of traditions; there’s the story of your obstinate survival of old beliefs never bottomed on the earth, and now not even hovering in the air! There’s orthodoxy!

15 |

Thus, while in life the great whale’s body may have been a real terror to his foes, in his death his ghost becomes a powerless panic to a world.

16 |

Are you a believer in ghosts, my friend? There are other ghosts than the Cock-Lane one, and far deeper men than Doctor Johnson who believe in them.

17 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/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 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/chapter_111.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

Chapter 111. The Pacific.

11 |

When gliding by the Bashee isles we emerged at last upon the great South Sea; were it not for other things, I could have greeted my dear Pacific with uncounted thanks, for now the long supplication of my youth was answered; that serene ocean rolled eastwards from me a thousand leagues of blue.

12 |

There is, one knows not what sweet mystery about this sea, whose gently awful stirrings seem to speak of some hidden soul beneath; like those fabled undulations of the Ephesian sod over the buried Evangelist St. John. And meet it is, that over these sea-pastures, wide-rolling watery prairies and Potters’ Fields of all four continents, the waves should rise and fall, and ebb and flow unceasingly; for here, millions of mixed shades and shadows, drowned dreams, somnambulisms, reveries; all that we call lives and souls, lie dreaming, dreaming, still; tossing like slumberers in their beds; the ever-rolling waves but made so by their restlessness.

13 |

To any meditative Magian rover, this serene Pacific, once beheld, must ever after be the sea of his adoption. It rolls the midmost waters of the world, the Indian ocean and Atlantic being but its arms. The same waves wash the moles of the new-built Californian towns, but yesterday planted by the recentest race of men, and lave the faded but still gorgeous skirts of Asiatic lands, older than Abraham; while all between float milky-ways of coral isles, and low-lying, endless, unknown Archipelagoes, and impenetrable Japans. Thus this mysterious, divine Pacific zones the world’s whole bulk about; makes all coasts one bay to it; seems the tide-beating heart of earth. Lifted by those eternal swells, you needs must own the seductive god, bowing your head to Pan.

14 |

But few thoughts of Pan stirred Ahab’s brain, as standing like an iron statue at his accustomed place beside the mizen rigging, with one nostril he unthinkingly snuffed the sugary musk from the Bashee isles (in whose sweet woods mild lovers must be walking), and with the other consciously inhaled the salt breath of the new found sea; that sea in which the hated White Whale must even then be swimming. Launched at length upon these almost final waters, and gliding towards the Japanese cruising-ground, the old man’s purpose intensified itself. His firm lips met like the lips of a vice; the Delta of his forehead’s veins swelled like overladen brooks; in his very sleep, his ringing cry ran through the vaulted hull, “Stern all! the White Whale spouts thick blood!”

15 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/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 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/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 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/chapter_131.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

Chapter 131. The Pequod Meets The Delight.

11 |

The intense Pequod sailed on; the rolling waves and days went by; the life-buoy-coffin still lightly swung; and another ship, most miserably misnamed the Delight, was descried. As she drew nigh, all eyes were fixed upon her broad beams, called shears, which, in some whaling-ships, cross the quarter-deck at the height of eight or nine feet; serving to carry the spare, unrigged, or disabled boats.

12 |

Upon the stranger’s shears were beheld the shattered, white ribs, and some few splintered planks, of what had once been a whale-boat; but you now saw through this wreck, as plainly as you see through the peeled, half-unhinged, and bleaching skeleton of a horse.

13 |

“Hast seen the White Whale?”

14 |

“Look!” replied the hollow-cheeked captain from his taffrail; and with his trumpet he pointed to the wreck.

15 |

“Hast killed him?”

16 |

“The harpoon is not yet forged that ever will do that,” answered the other, sadly glancing upon a rounded hammock on the deck, whose gathered sides some noiseless sailors were busy in sewing together.

17 |

“Not forged!” and snatching Perth’s levelled iron from the crotch, Ahab held it out, exclaiming—"Look ye, Nantucketer; here in this hand I hold his death! Tempered in blood, and tempered by lightning are these barbs; and I swear to temper them triply in that hot place behind the fin, where the White Whale most feels his accursed life!”

18 |

“Then God keep thee, old man—see’st thou that"—pointing to the hammock—"I bury but one of five stout men, who were alive only yesterday; but were dead ere night. Only THAT one I bury; the rest were buried before they died; you sail upon their tomb.” Then turning to his crew—"Are ye ready there? place the plank then on the rail, and lift the body; so, then—Oh! God"—advancing towards the hammock with uplifted hands—"may the resurrection and the life—”

19 |

“Brace forward! Up helm!” cried Ahab like lightning to his men.

20 |

But the suddenly started Pequod was not quick enough to escape the sound of the splash that the corpse soon made as it struck the sea; not so quick, indeed, but that some of the flying bubbles might have sprinkled her hull with their ghostly baptism.

21 |

As Ahab now glided from the dejected Delight, the strange life-buoy hanging at the Pequod’s stern came into conspicuous relief.

22 |

“Ha! yonder! look yonder, men!” cried a foreboding voice in her wake. “In vain, oh, ye strangers, ye fly our sad burial; ye but turn us your taffrail to show us your coffin!”

23 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/chapter_136.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

Epilogue

11 |
12 |

“AND I ONLY AM ESCAPED ALONE TO TELL THEE”

13 |

—Job.

14 |
15 |
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.

-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/copyright.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/cover.xhtml: -------------------------------------------------------------------------------- 1 | Moby-Dick 2 |
3 | Cover Image
4 | 5 | -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/fonts/STIXGeneral.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/moby-dick/OPS/fonts/STIXGeneral.otf -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/fonts/STIXGeneralBol.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/moby-dick/OPS/fonts/STIXGeneralBol.otf -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/fonts/STIXGeneralBolIta.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/moby-dick/OPS/fonts/STIXGeneralBolIta.otf -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/fonts/STIXGeneralItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/moby-dick/OPS/fonts/STIXGeneralItalic.otf -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/images/9780316000000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/moby-dick/OPS/images/9780316000000.jpg -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/images/Moby-Dick_FE_title_page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/moby-dick/OPS/images/Moby-Dick_FE_title_page.jpg -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/introduction_001.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 |
9 |
10 |

ETYMOLOGY.

11 |

(Supplied by a Late Consumptive Usher to a Grammar School)

12 |

The pale Usher—threadbare in coat, heart, body, and brain; I see him now. He was ever dusting his old lexicons and grammars, with a queer handkerchief, mockingly embellished with all the gay flags of all the known nations of the world. He loved to dust his old grammars; it somehow mildly reminded him of his mortality.

13 |
14 | 15 |

“While you take in hand to school others, and to teach them by what name a whale-fish is to be called in our tongue leaving out, through ignorance, the letter H, which almost alone maketh the signification of the word, you deliver that which is not true.”

16 |

—HACKLUYT

17 |
18 |
19 |

“WHALE.... Sw. and Dan. HVAL. This animal is named from roundness or rolling; for in Dan. HVALT is arched or vaulted.”

20 |

—WEBSTER’S DICTIONARY

21 |
22 |
23 |

“WHALE.... It is more immediately from the Dut. and Ger. WALLEN; A.S. WALW-IAN, to roll, to wallow.”

24 |

—RICHARDSON’S DICTIONARY

25 |
26 |
27 |

KETOS, GREEK.

28 |

CETUS, LATIN.

29 |

WHOEL, ANGLO-SAXON.

30 |

HVALT, DANISH.

31 |

WAL, DUTCH.

32 |

HWAL, SWEDISH.

33 |

WHALE, ICELANDIC.

34 |

WHALE, ENGLISH.

35 |

BALEINE, FRENCH.

36 |

BALLENA, SPANISH.

37 |

PEKEE-NUEE-NUEE, FEGEE.

38 |

PEKEE-NUEE-NUEE, ERROMANGOAN.

39 |
40 | 41 | 42 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/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 |
-------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/titlepage.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 | 9 |
10 | title page 11 |
12 | 13 | -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/OPS/toc-short.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Moby-Dick 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 |

Brief Contents

16 |
17 | 18 |
19 | 20 |
    21 |
  1. 22 | Title Page 23 |
  2. 24 |
  3. 25 | Original Transcriber’s Notes 26 |
  4. 27 |
  5. 28 | Etymology 29 |
  6. 30 |
  7. 31 | Extracts (Supplied by a Sub-Sub-Librarian) 32 |
  8. 33 | 34 | 35 |
  9. Begin Reading Moby-Dick
  10. 36 | 37 |
  11. Show detailed contents
  12. 38 | 39 | 40 | 41 |
  13. 42 | Copyright Page 43 |
  14. 44 |
45 | 46 |
47 | 48 |
49 | 50 | -------------------------------------------------------------------------------- /epub.js/reader/moby-dick/mimetype: -------------------------------------------------------------------------------- 1 | application/epub+zip -------------------------------------------------------------------------------- /epub.js/reader/robots.txt: -------------------------------------------------------------------------------- 1 | # robotstxt.org/ 2 | 3 | User-agent: * 4 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/META-INF/container.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/META-INF/container.xml~: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/reader/the-lifestone/cover.jpg -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/mimetype: -------------------------------------------------------------------------------- 1 | application/epub+zip -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/titlepage.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Cover 6 | 11 | 12 | 13 |
14 | cover 15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_000.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

 

20 |

 

21 |

FOUNDATION OF A KING’S LEGEND.

22 |

THE LIFESTONE CHRONICLES

23 |

 

24 |

By DAVID STEVENS

25 |

 

26 | 27 | 28 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_001.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

The 20 | Lifestone Chronicles 

21 |

By David 22 | Stevens

23 |

Smashwords 24 | Edition

25 |

Copyright 26 | 2014 by David Stevens

27 |

 

28 |

Smashwords Edition, License 29 | Notes
30 |
31 | This ebook is licensed for your personal enjoyment only. This ebook 32 | may not be re-sold or given away to other people. If you would like 33 | to share this book with another person, please purchase an 34 | additional copy for each recipient. If you’re reading this book and 35 | did not purchase it, or it was not purchased for your use only, 36 | then please return to Smashwords.com and purchase your own copy. 37 | Thank you for respecting the hard work of this author.

38 | 39 | 40 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_002.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

 

20 |

DEDICATION.

21 |

To all that believed. Thank you all.

22 |

David Stevens.

23 | 24 | 25 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_004.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

Prologue

20 |

This, the trilogy of the Lifestone Chronicles begins 21 | with:-

22 |

‘Foundation of a King’s Legend’

23 |

The story of the boy Arthur, who is destined to be 24 | the King of Kings; he unwittingly usurps a lawful and expectant boy 25 | King in waiting, which becomes a battle between good and evil, a 26 | battle between boyhood friends, with supremacy as the prize. In 27 | theory it is the battle to end all battles, whilst creating the 28 | foundation of the entity which becomes the Lifestone. The dark lord 29 | is created, the magic unleashed, the future of all hangs in the 30 | balance...

31 | 32 | 33 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_005.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

PART ONE

20 | 21 | 22 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_027.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

PART TWO

20 | 21 | 22 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_038.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

Epilogue

20 |

Centuries pass during which the world of the 21 | elves and dwarfs fade from sight, to be replaced by the rising of 22 | humanity. Legends existing in the world of the King, became stories 23 | told to children or written about as fantasy. The King's name still 24 | lives, though many doubt the truth of his existence. Whilst all of 25 | the changes occurred the King and his knights slept on safe and 26 | protected by the Lifestone.

27 |

Vindec lives through these changes, slowly 28 | growing old but still holding on and always waiting for the call of 29 | the Lifestone. Many times the King and his knights sallied fourth, 30 | defending the true and honest, vanquishing the evil and demonic, 31 | but these episodes failed to be understood by the rulers known as 32 | man. With each battle fought, with each breakout from the abyss, 33 | the King grew weaker, until finally he returned to the Olar and 34 | failed to make it into the cavern. His body turned to stone and he 35 | lay safely hidden in the accompaniment of the very few of his 36 | surviving knights.

37 |

The King has passed from life into shade, but 38 | his entity lived on within the bounds of the Olar! Still as always 39 | ready to defend the weak, and drive evil from his realm.

40 |

The Lifestone took account of the situation, 41 | it made arrangements for the future, it sought out humans to become 42 | the Users of the King's power, the vessels which could carry the 43 | entity of the true King out to battle against the dark forces, it 44 | maintained the prophesies that had seen its creation.

45 |

The End.

46 | 47 | 48 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_039.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

 

20 |

Dear readers I hope that you have enjoyed this tale 21 | of magic and mystery and if you have I would like to take this 22 | opportunity to tell you that there are others coming soon.

23 |

If you feel generous please tell your friends, write 24 | a review or tweet it out as suits you. If you would like to follow 25 | my work then you might like to consider following me on twitter at 26 | DS_books

27 | 28 | 29 | -------------------------------------------------------------------------------- /epub.js/reader/the-lifestone/tmp_14ca9a44d9bc4a06338bce21316deb2d_4koWz7.ch.fixed.fc.tidied.stylehacked.xfixed_split_040.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The Lifestone Chronicles. Foundation of a Kings Legend 16 | 18 | 19 |

 

20 |

THE LIFESTONE CHRONICLES

21 |

Book two coming soon.

22 |

A User Selected : A Life Taken.

23 |

Christine, drawn from her safe life into the magic 24 | and drama of a battle preparing to re-engage. A battle of good 25 | verses evil, of life and death and of a search for power and a 26 | seeking of control. Christine faces the Dark Lord Nailstead, 27 | assisted by the ancient magician Vindec who has drawn her to his 28 | hidden world, along with an elf a dwarf and a wolf, and unknown to 29 | her the shade of a long dead king amongst others.

30 |

Christine stood before the Lifestone, the sword of 31 | power hanging from her belt, the wolf her friend standing beside 32 | her ready to accept the gift that destiny declared to be 33 | hers...

34 |

 

35 |

Christine’s tale is another story, one told in the 36 | second book of

37 |

THE LIFESTONE CHRONICLES

38 |

Titled : A User Selected : A life Taken.

39 |

David Stevens.

40 |

 

41 | 42 | 43 | -------------------------------------------------------------------------------- /epub.js/reader_src/controllers/bookmarks_controller.js: -------------------------------------------------------------------------------- 1 | EPUBJS.reader.BookmarksController = function() { 2 | var reader = this; 3 | var book = this.book; 4 | 5 | var $bookmarks = $("#bookmarksView"), 6 | $list = $bookmarks.find("#bookmarks"); 7 | 8 | var docfrag = document.createDocumentFragment(); 9 | 10 | var show = function() { 11 | $bookmarks.show(); 12 | }; 13 | 14 | var hide = function() { 15 | $bookmarks.hide(); 16 | }; 17 | 18 | var counter = 0; 19 | 20 | var createBookmarkItem = function(cfi) { 21 | var listitem = document.createElement("li"), 22 | link = document.createElement("a"); 23 | 24 | listitem.id = "bookmark-"+counter; 25 | listitem.classList.add('list_item'); 26 | 27 | //-- TODO: Parse Cfi 28 | link.textContent = cfi; 29 | link.href = cfi; 30 | 31 | link.classList.add('bookmark_link'); 32 | 33 | link.addEventListener("click", function(event){ 34 | var cfi = this.getAttribute('href'); 35 | book.gotoCfi(cfi); 36 | event.preventDefault(); 37 | }, false); 38 | 39 | listitem.appendChild(link); 40 | 41 | counter++; 42 | 43 | return listitem; 44 | }; 45 | 46 | this.settings.bookmarks.forEach(function(cfi) { 47 | var bookmark = createBookmarkItem(cfi); 48 | docfrag.appendChild(bookmark); 49 | }); 50 | 51 | $list.append(docfrag); 52 | 53 | this.on("reader:bookmarked", function(cfi) { 54 | var item = createBookmarkItem(cfi); 55 | $list.append(item); 56 | }); 57 | 58 | this.on("reader:unbookmarked", function(index) { 59 | var $item = $("#bookmark-"+index); 60 | $item.remove(); 61 | }); 62 | 63 | return { 64 | "show" : show, 65 | "hide" : hide 66 | }; 67 | }; -------------------------------------------------------------------------------- /epub.js/reader_src/controllers/meta_controller.js: -------------------------------------------------------------------------------- 1 | EPUBJS.reader.MetaController = function(meta) { 2 | var title = meta.bookTitle, 3 | author = meta.creator; 4 | 5 | var $title = $("#book-title"), 6 | $author = $("#chapter-title"), 7 | $dash = $("#title-seperator"); 8 | 9 | document.title = title+" – "+author; 10 | 11 | $title.html(title); 12 | $author.html(author); 13 | $dash.show(); 14 | }; -------------------------------------------------------------------------------- /epub.js/reader_src/controllers/reader_controller.js: -------------------------------------------------------------------------------- 1 | EPUBJS.reader.ReaderController = function(book) { 2 | var $main = $("#main"), 3 | $divider = $("#divider"), 4 | $loader = $("#loader"), 5 | $next = $("#next"), 6 | $prev = $("#prev"); 7 | var reader = this; 8 | var book = this.book; 9 | var slideIn = function() { 10 | var currentPosition = book.getCurrentLocationCfi(); 11 | if (reader.settings.sidebarReflow){ 12 | $main.removeClass('single'); 13 | $main.one("transitionend", function(){ 14 | book.gotoCfi(currentPosition); 15 | }); 16 | } else { 17 | $main.removeClass("closed"); 18 | } 19 | }; 20 | 21 | var slideOut = function() { 22 | var currentPosition = book.getCurrentLocationCfi(); 23 | if (reader.settings.sidebarReflow){ 24 | $main.addClass('single'); 25 | $main.one("transitionend", function(){ 26 | book.gotoCfi(currentPosition); 27 | }); 28 | } else { 29 | $main.addClass("closed"); 30 | } 31 | }; 32 | 33 | var showLoader = function() { 34 | $loader.show(); 35 | hideDivider(); 36 | }; 37 | 38 | var hideLoader = function() { 39 | $loader.hide(); 40 | 41 | //-- If the book is using spreads, show the divider 42 | // if(book.settings.spreads) { 43 | // showDivider(); 44 | // } 45 | }; 46 | 47 | var showDivider = function() { 48 | $divider.addClass("show"); 49 | }; 50 | 51 | var hideDivider = function() { 52 | $divider.removeClass("show"); 53 | }; 54 | 55 | var keylock = false; 56 | 57 | var arrowKeys = function(e) { 58 | if(e.keyCode == 37) { 59 | book.prevPage(); 60 | $prev.addClass("active"); 61 | 62 | keylock = true; 63 | setTimeout(function(){ 64 | keylock = false; 65 | $prev.removeClass("active"); 66 | }, 100); 67 | 68 | e.preventDefault(); 69 | } 70 | if(e.keyCode == 39) { 71 | book.nextPage(); 72 | $next.addClass("active"); 73 | 74 | keylock = true; 75 | setTimeout(function(){ 76 | keylock = false; 77 | $next.removeClass("active"); 78 | }, 100); 79 | 80 | e.preventDefault(); 81 | } 82 | } 83 | 84 | document.addEventListener('keydown', arrowKeys, false); 85 | 86 | $next.on("click", function(e){ 87 | book.nextPage(); 88 | e.preventDefault(); 89 | }); 90 | 91 | $prev.on("click", function(e){ 92 | book.prevPage(); 93 | e.preventDefault(); 94 | }); 95 | 96 | book.on("renderer:spreads", function(bool){ 97 | if(bool) { 98 | showDivider(); 99 | } else { 100 | hideDivider(); 101 | } 102 | }); 103 | 104 | // book.on("book:atStart", function(){ 105 | // $prev.addClass("disabled"); 106 | // }); 107 | // 108 | // book.on("book:atEnd", function(){ 109 | // $next.addClass("disabled"); 110 | // }); 111 | 112 | return { 113 | "slideOut" : slideOut, 114 | "slideIn" : slideIn, 115 | "showLoader" : showLoader, 116 | "hideLoader" : hideLoader, 117 | "showDivider" : showDivider, 118 | "hideDivider" : hideDivider, 119 | "arrowKeys" : arrowKeys 120 | }; 121 | }; -------------------------------------------------------------------------------- /epub.js/reader_src/controllers/settings_controller.js: -------------------------------------------------------------------------------- 1 | EPUBJS.reader.SettingsController = function() { 2 | var book = this.book; 3 | var reader = this; 4 | var $settings = $("#settings-modal"), 5 | $overlay = $(".overlay"); 6 | 7 | var show = function() { 8 | $settings.addClass("md-show"); 9 | }; 10 | 11 | var hide = function() { 12 | $settings.removeClass("md-show"); 13 | }; 14 | 15 | var $sidebarReflowSetting = $('#sidebarReflow'); 16 | 17 | $sidebarReflowSetting.on('click', function() { 18 | reader.settings.sidebarReflow = !reader.settings.sidebarReflow; 19 | }); 20 | 21 | $settings.find(".closer").on("click", function() { 22 | hide(); 23 | }); 24 | 25 | $overlay.on("click", function() { 26 | hide(); 27 | }); 28 | 29 | return { 30 | "show" : show, 31 | "hide" : hide 32 | }; 33 | }; -------------------------------------------------------------------------------- /epub.js/reader_src/controllers/sidebar_controller.js: -------------------------------------------------------------------------------- 1 | EPUBJS.reader.SidebarController = function(book) { 2 | var reader = this; 3 | 4 | var $sidebar = $("#sidebar"), 5 | $panels = $("#panels"); 6 | 7 | var activePanel = "Toc"; 8 | 9 | var changePanelTo = function(viewName) { 10 | var controllerName = viewName + "Controller"; 11 | 12 | if(activePanel == viewName || typeof reader[controllerName] === 'undefined' ) return; 13 | reader[activePanel+ "Controller"].hide(); 14 | reader[controllerName].show(); 15 | activePanel = viewName; 16 | 17 | $panels.find('.active').removeClass("active"); 18 | $panels.find("#show-" + viewName ).addClass("active"); 19 | }; 20 | 21 | var getActivePanel = function() { 22 | return activePanel; 23 | }; 24 | 25 | var show = function() { 26 | reader.sidebarOpen = true; 27 | reader.ReaderController.slideOut(); 28 | $sidebar.addClass("open"); 29 | } 30 | 31 | var hide = function() { 32 | reader.sidebarOpen = false; 33 | reader.ReaderController.slideIn(); 34 | $sidebar.removeClass("open"); 35 | } 36 | 37 | $panels.find(".show_view").on("click", function(event) { 38 | var view = $(this).data("view"); 39 | 40 | changePanelTo(view); 41 | event.preventDefault(); 42 | }); 43 | 44 | return { 45 | 'show' : show, 46 | 'hide' : hide, 47 | 'getActivePanel' : getActivePanel, 48 | 'changePanelTo' : changePanelTo 49 | }; 50 | }; -------------------------------------------------------------------------------- /epub.js/reader_src/controllers/toc_controller.js: -------------------------------------------------------------------------------- 1 | EPUBJS.reader.TocController = function(toc) { 2 | var book = this.book; 3 | 4 | var $list = $("#tocView"), 5 | docfrag = document.createDocumentFragment(); 6 | 7 | var currentChapter = false; 8 | 9 | var generateTocItems = function(toc, level) { 10 | var container = document.createElement("ul"); 11 | 12 | if(!level) level = 1; 13 | 14 | toc.forEach(function(chapter) { 15 | var listitem = document.createElement("li"), 16 | link = document.createElement("a"); 17 | toggle = document.createElement("a"); 18 | 19 | var subitems; 20 | 21 | listitem.id = "toc-"+chapter.id; 22 | listitem.classList.add('list_item'); 23 | 24 | link.textContent = chapter.label; 25 | link.href = chapter.href; 26 | 27 | link.classList.add('toc_link'); 28 | 29 | listitem.appendChild(link); 30 | 31 | if(chapter.subitems.length > 0) { 32 | level++; 33 | subitems = generateTocItems(chapter.subitems, level); 34 | toggle.classList.add('toc_toggle'); 35 | 36 | listitem.insertBefore(toggle, link); 37 | listitem.appendChild(subitems); 38 | } 39 | 40 | 41 | container.appendChild(listitem); 42 | 43 | }); 44 | 45 | return container; 46 | }; 47 | 48 | var onShow = function() { 49 | $list.show(); 50 | }; 51 | 52 | var onHide = function() { 53 | $list.hide(); 54 | }; 55 | 56 | var chapterChange = function(e) { 57 | var id = e.id, 58 | $item = $list.find("#toc-"+id), 59 | $current = $list.find(".currentChapter"), 60 | $open = $list.find('.openChapter'); 61 | 62 | if($item.length){ 63 | 64 | if($item != $current && $item.has(currentChapter).length > 0) { 65 | $current.removeClass("currentChapter"); 66 | } 67 | 68 | $item.addClass("currentChapter"); 69 | 70 | // $open.removeClass("openChapter"); 71 | $item.parents('li').addClass("openChapter"); 72 | } 73 | }; 74 | 75 | book.on('renderer:chapterDisplayed', chapterChange); 76 | 77 | var tocitems = generateTocItems(toc); 78 | 79 | docfrag.appendChild(tocitems); 80 | 81 | $list.append(docfrag); 82 | $list.find(".toc_link").on("click", function(event){ 83 | var url = this.getAttribute('href'); 84 | 85 | event.preventDefault(); 86 | 87 | //-- Provide the Book with the url to show 88 | // The Url must be found in the books manifest 89 | book.goto(url); 90 | 91 | $list.find(".currentChapter") 92 | .addClass("openChapter") 93 | .removeClass("currentChapter"); 94 | 95 | $(this).parent('li').addClass("currentChapter"); 96 | 97 | }); 98 | 99 | $list.find(".toc_toggle").on("click", function(event){ 100 | var $el = $(this).parent('li'), 101 | open = $el.hasClass("openChapter"); 102 | 103 | event.preventDefault(); 104 | if(open){ 105 | $el.removeClass("openChapter"); 106 | } else { 107 | $el.addClass("openChapter"); 108 | } 109 | }); 110 | 111 | return { 112 | "show" : onShow, 113 | "hide" : onHide 114 | }; 115 | }; 116 | -------------------------------------------------------------------------------- /epub.js/reader_src/old/utils.js: -------------------------------------------------------------------------------- 1 | //-- http://stackoverflow.com/questions/2124684/jquery-how-click-anywhere-outside-of-the-div-the-div-fades-out 2 | 3 | jQuery.fn.extend({ 4 | // Calls the handler function if the user has clicked outside the object (and not on any of the exceptions) 5 | clickOutside: function(handler, exceptions) { 6 | var $this = this; 7 | 8 | jQuery(document).on("click.offer", function(event) { 9 | if (exceptions && jQuery.inArray(event.target, exceptions) > -1) { 10 | return; 11 | } else if (jQuery.contains($this[0], event.target)) { 12 | return; 13 | } else { 14 | jQuery(document).off("click.offer"); 15 | handler(event, $this); 16 | } 17 | }); 18 | 19 | return this; 20 | } 21 | }); 22 | -------------------------------------------------------------------------------- /epub.js/server.js: -------------------------------------------------------------------------------- 1 | var connect = require('connect'), 2 | colors = require('colors'), 3 | argv = require('optimist').argv, 4 | portfinder = require('portfinder'); 5 | 6 | var port = argv.p, 7 | logger = argv.l, 8 | log = console.log; 9 | 10 | if (!argv.p) { 11 | portfinder.basePort = 8080; 12 | portfinder.getPort(function (err, port) { 13 | if (err) throw err; 14 | listen(port); 15 | }); 16 | } else { 17 | listen(port); 18 | } 19 | 20 | 21 | 22 | function listen(port) { 23 | var server = connect(); 24 | server.use(connect.static(__dirname)) 25 | 26 | if(!logger) server.use(connect.logger(logger)) 27 | 28 | server.listen(port); 29 | 30 | log('Starting up Server, serving '.yellow 31 | + __dirname.green 32 | + ' on port: '.yellow 33 | + port.toString().cyan); 34 | log('Hit CTRL-C to stop the server'); 35 | 36 | } 37 | 38 | 39 | 40 | process.on('SIGINT', function () { 41 | log('http-server stopped.'.red); 42 | process.exit(); 43 | }); 44 | -------------------------------------------------------------------------------- /epub.js/src/base.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var EPUBJS = EPUBJS || {}; 4 | EPUBJS.VERSION = "0.2.1"; 5 | 6 | EPUBJS.plugins = EPUBJS.plugins || {}; 7 | 8 | EPUBJS.filePath = EPUBJS.filePath || "/epubjs/"; 9 | 10 | EPUBJS.Render = {}; 11 | 12 | (function(root) { 13 | 14 | var previousEpub = root.ePub || {}; 15 | 16 | var ePub = root.ePub = function() { 17 | var bookPath, options; 18 | 19 | //-- var book = ePub("path/to/book.epub", { restore: true }) 20 | if(typeof(arguments[0]) != 'undefined' && 21 | typeof arguments[0] === 'string') { 22 | 23 | bookPath = arguments[0]; 24 | 25 | if( arguments[1] && typeof arguments[1] === 'object' ) { 26 | options = arguments[1]; 27 | options.bookPath = bookPath; 28 | } else { 29 | options = { 'bookPath' : bookPath }; 30 | } 31 | 32 | } 33 | 34 | /* 35 | * var book = ePub({ bookPath: "path/to/book.epub", restore: true }); 36 | * 37 | * - OR - 38 | * 39 | * var book = ePub({ restore: true }); 40 | * book.open("path/to/book.epub"); 41 | */ 42 | 43 | if( arguments[0] && typeof arguments[0] === 'object' ) { 44 | options = arguments[0]; 45 | } 46 | 47 | 48 | return new EPUBJS.Book(options); 49 | }; 50 | 51 | _.extend(ePub, { 52 | noConflict : function() { 53 | root.ePub = previousEpub; 54 | return this; 55 | } 56 | }); 57 | 58 | //exports to multiple environments 59 | if (typeof define === 'function' && define.amd) 60 | //AMD 61 | define(function(){ return ePub; }); 62 | else if (typeof module != "undefined" && module.exports) 63 | //Node 64 | module.exports = ePub; 65 | 66 | })(window); 67 | -------------------------------------------------------------------------------- /epub.js/src/events.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Events = function(obj, el){ 2 | 3 | this.events = {}; 4 | 5 | if(!el){ 6 | this.el = document.createElement('div'); 7 | }else{ 8 | this.el = el; 9 | } 10 | 11 | obj.createEvent = this.createEvent; 12 | obj.tell = this.tell; 13 | obj.listen = this.listen; 14 | obj.deafen = this.deafen; 15 | obj.listenUntil = this.listenUntil; 16 | 17 | return this; 18 | }; 19 | 20 | EPUBJS.Events.prototype.createEvent = function(evt){ 21 | var e = new CustomEvent(evt); 22 | this.events[evt] = e; 23 | return e; 24 | }; 25 | 26 | EPUBJS.Events.prototype.tell = function(evt, msg){ 27 | var e; 28 | 29 | if(!this.events[evt]){ 30 | console.warn("No event:", evt, "defined yet, creating."); 31 | e = this.createEvent(evt); 32 | }else{ 33 | e = this.events[evt]; 34 | } 35 | 36 | if(msg) e.msg = msg; 37 | this.el.dispatchEvent(e); 38 | 39 | }; 40 | 41 | EPUBJS.Events.prototype.listen = function(evt, func, bindto){ 42 | if(!this.events[evt]){ 43 | console.warn("No event:", evt, "defined yet, creating."); 44 | this.createEvent(evt); 45 | return; 46 | } 47 | 48 | if(bindto){ 49 | this.el.addEventListener(evt, func.bind(bindto), false); 50 | }else{ 51 | this.el.addEventListener(evt, func, false); 52 | } 53 | 54 | }; 55 | 56 | EPUBJS.Events.prototype.deafen = function(evt, func){ 57 | this.el.removeEventListener(evt, func, false); 58 | }; 59 | 60 | EPUBJS.Events.prototype.listenUntil = function(OnEvt, OffEvt, func, bindto){ 61 | this.listen(OnEvt, func, bindto); 62 | 63 | function unlisten(){ 64 | this.deafen(OnEvt, func); 65 | this.deafen(OffEvt, unlisten); 66 | } 67 | 68 | this.listen(OffEvt, unlisten, this); 69 | }; -------------------------------------------------------------------------------- /epub.js/src/hooks.js: -------------------------------------------------------------------------------- 1 | EPUBJS.hooks = {}; 2 | EPUBJS.Hooks = (function(){ 3 | function hooks(){} 4 | 5 | //-- Get pre-registered hooks 6 | hooks.prototype.getHooks = function(){ 7 | var plugs; 8 | this.hooks = {}; 9 | Array.prototype.slice.call(arguments).forEach(function(arg){ 10 | this.hooks[arg] = []; 11 | }, this); 12 | 13 | for (var plugType in this.hooks) { 14 | plugs = _.values(EPUBJS.hooks[plugType]); 15 | 16 | plugs.forEach(function(hook){ 17 | this.registerHook(plugType, hook); 18 | }, this); 19 | } 20 | }; 21 | 22 | //-- Hooks allow for injecting async functions that must all complete before continuing 23 | // Functions must have a callback as their first argument. 24 | hooks.prototype.registerHook = function(type, toAdd, toFront){ 25 | 26 | if(typeof(this.hooks[type]) != "undefined"){ 27 | 28 | if(typeof(toAdd) === "function"){ 29 | if(toFront) { 30 | this.hooks[type].unshift(toAdd); 31 | }else{ 32 | this.hooks[type].push(toAdd); 33 | } 34 | }else if(Array.isArray(toAdd)){ 35 | toAdd.forEach(function(hook){ 36 | if(toFront) { 37 | this.hooks[type].unshift(hook); 38 | }else{ 39 | this.hooks[type].push(hook); 40 | } 41 | }, this); 42 | } 43 | }else{ 44 | //-- Allows for undefined hooks, but maybe this should error? 45 | this.hooks[type] = [func]; 46 | } 47 | }; 48 | 49 | hooks.prototype.triggerHooks = function(type, callback, passed){ 50 | var hooks, count; 51 | 52 | if(typeof(this.hooks[type]) == "undefined") return false; 53 | 54 | hooks = this.hooks[type]; 55 | 56 | count = hooks.length; 57 | if(count === 0 && callback) { 58 | callback(); 59 | } 60 | 61 | function countdown(){ 62 | count--; 63 | if(count <= 0 && callback) callback(); 64 | } 65 | 66 | hooks.forEach(function(hook){ 67 | hook(countdown, passed); 68 | }); 69 | }; 70 | 71 | return { 72 | register: function(name) { 73 | if(EPUBJS.hooks[name] === undefined) { EPUBJS.hooks[name] = {}; } 74 | if(typeof EPUBJS.hooks[name] !== 'object') { throw "Already registered: "+name; } 75 | return EPUBJS.hooks[name]; 76 | }, 77 | mixin: function(object) { 78 | for (var prop in hooks.prototype) { 79 | object[prop] = hooks.prototype[prop]; 80 | } 81 | } 82 | }; 83 | })(); 84 | 85 | -------------------------------------------------------------------------------- /epub.js/src/pagination.js: -------------------------------------------------------------------------------- 1 | EPUBJS.Pagination = function(pageList) { 2 | this.pages = []; 3 | this.locations = []; 4 | this.epubcfi = new EPUBJS.EpubCFI(); 5 | if(pageList && pageList.length) { 6 | this.process(pageList); 7 | } 8 | }; 9 | 10 | EPUBJS.Pagination.prototype.process = function(pageList){ 11 | pageList.forEach(function(item){ 12 | this.pages.push(item.page); 13 | this.locations.push(item.cfi); 14 | }, this); 15 | 16 | this.pageList = pageList; 17 | this.firstPage = parseInt(this.pages[0]); 18 | this.lastPage = parseInt(this.pages[this.pages.length-1]); 19 | this.totalPages = this.lastPage - this.firstPage; 20 | }; 21 | 22 | EPUBJS.Pagination.prototype.pageFromCfi = function(cfi){ 23 | var pg = -1; 24 | 25 | // Check if the pageList has not been set yet 26 | if(this.locations.length === 0) { 27 | return -1; 28 | } 29 | 30 | // TODO: check if CFI is valid? 31 | 32 | // check if the cfi is in the location list 33 | // var index = this.locations.indexOf(cfi); 34 | var index = EPUBJS.core.indexOfSorted(cfi, this.locations, this.epubcfi.compare); 35 | if(index != -1 && index < (this.pages.length-1) ) { 36 | pg = this.pages[index]; 37 | } else { 38 | // Otherwise add it to the list of locations 39 | // Insert it in the correct position in the locations page 40 | //index = EPUBJS.core.insert(cfi, this.locations, this.epubcfi.compare); 41 | index = EPUBJS.core.locationOf(cfi, this.locations, this.epubcfi.compare); 42 | // Get the page at the location just before the new one, or return the first 43 | pg = index-1 >= 0 ? this.pages[index-1] : this.pages[0]; 44 | pg = this.pages[index]; 45 | if(pg !== undefined) { 46 | // Add the new page in so that the locations and page array match up 47 | //this.pages.splice(index, 0, pg); 48 | } else { 49 | pg = -1; 50 | } 51 | 52 | } 53 | return pg; 54 | }; 55 | 56 | EPUBJS.Pagination.prototype.cfiFromPage = function(pg){ 57 | var cfi = -1; 58 | // check that pg is an int 59 | if(typeof pg != "number"){ 60 | pg = parseInt(pg); 61 | } 62 | 63 | // check if the cfi is in the page list 64 | // Pages could be unsorted. 65 | var index = this.pages.indexOf(pg); 66 | if(index != -1) { 67 | cfi = this.locations[index]; 68 | } 69 | // TODO: handle pages not in the list 70 | return cfi; 71 | }; 72 | 73 | EPUBJS.Pagination.prototype.pageFromPercentage = function(percent){ 74 | var pg = Math.round(this.totalPages * percent); 75 | return pg; 76 | }; 77 | 78 | // Returns a value between 0 - 1 corresponding to the location of a page 79 | EPUBJS.Pagination.prototype.percentageFromPage = function(pg){ 80 | var percentage = (pg - this.firstPage) / this.totalPages; 81 | return Math.round(percentage * 1000) / 1000; 82 | }; 83 | 84 | // Returns a value between 0 - 1 corresponding to the location of a cfi 85 | EPUBJS.Pagination.prototype.percentageFromCfi = function(cfi){ 86 | var pg = this.pageFromCfi(cfi); 87 | var percentage = this.percentageFromPage(pg); 88 | return percentage; 89 | }; -------------------------------------------------------------------------------- /epub.js/src/shims.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/epub.js/src/shims.js -------------------------------------------------------------------------------- /epub.js/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EPUB.js QUnit Tests 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 38 | 44 | 45 | 46 |
47 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /epub.js/tests/unarchiver.js: -------------------------------------------------------------------------------- 1 | module('EPUBJS.Unarchiver'); 2 | 3 | test("zip.workerScriptsPath is set correctly", 1, function() { 4 | var Book = ePub("/reader/moby-dick.epub"); 5 | equal( zip.workerScriptsPath, EPUBJS.filePath, "zip workerScriptsPath is set from EPUBJS.filePath"); 6 | }); 7 | 8 | asyncTest("openZip method returns a zip file object", 3, function(){ 9 | 10 | var unarchiver = new EPUBJS.Unarchiver(), 11 | zipPromise = unarchiver.openZip('/reader/moby-dick.epub'); 12 | 13 | zipPromise.then(function(zipFile){ 14 | // root directory 15 | equal( zipFile.root.directory, true, "zipFile root is a directory"); 16 | equal( zipFile.root.children.length, 4, "moby-dick.epub root has children lenth of 4"); 17 | // entries 18 | equal( zipFile.entries.length, 167, "moby-dick.epub zipFile has 167 entries"); 19 | start(); 20 | }); 21 | }); 22 | 23 | asyncTest("getXml method returns valid xml", 1, function(){ 24 | 25 | var unarchiver = new EPUBJS.Unarchiver(), 26 | zipPromise = unarchiver.openZip("/reader/moby-dick.epub"); 27 | 28 | zipPromise.then(function(zipFile){ 29 | 30 | var xmlFilePromise = unarchiver.getXml('META-INF/container.xml'); 31 | xmlFilePromise.then(function(xmlFile){ 32 | var rootNode = xmlFile.querySelector("rootfile"); 33 | equal(rootNode.getAttribute('full-path'), "OPS/package.opf", "getXml returns a rootfile from moby-dick's container.xml that is valid xml"); 34 | start(); 35 | }); 36 | }); 37 | }); 38 | 39 | // TODO Tests for: 40 | // 41 | // Methods 42 | // EPUBJS.Unarchiver.getUrl 43 | // EPUBJS.Unarchiver.getText 44 | // Maybe EPUBJS.Unarchiver.revokeUrl ? 45 | // EPUBJS.Unarchiver.toStorage 46 | // EPUBJS.Unarchiver.afterSaved 47 | // 48 | // Other related tests? 49 | 50 | -------------------------------------------------------------------------------- /epub.js/tools/server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var connect = require('connect'), 4 | colors = require('colors'), 5 | argv = require('optimist').argv, 6 | portfinder = require('portfinder'); 7 | 8 | var port = argv.p, 9 | logger = argv.l, 10 | log = console.log; 11 | 12 | if (!argv.p) { 13 | portfinder.basePort = 8080; 14 | portfinder.getPort(function (err, port) { 15 | if (err) throw err; 16 | listen(port); 17 | }); 18 | } else { 19 | listen(port); 20 | } 21 | 22 | 23 | 24 | function listen(port) { 25 | var server = connect(); 26 | server.use(connect.static(__dirname + "../../")) 27 | 28 | if(!logger) server.use(connect.logger(logger)) 29 | 30 | server.listen(port); 31 | 32 | log('Starting up Server, serving '.yellow 33 | + __dirname.replace("tools", '').green 34 | + ' on port: '.yellow 35 | + port.toString().cyan); 36 | log('Hit CTRL-C to stop the server'); 37 | 38 | } 39 | 40 | 41 | 42 | process.on('SIGINT', function () { 43 | log('http-server stopped.'.red); 44 | process.exit(); 45 | }); 46 | -------------------------------------------------------------------------------- /po/POTFILES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/po/POTFILES -------------------------------------------------------------------------------- /src/Makefile-js.am: -------------------------------------------------------------------------------- 1 | jsdir = $(pkgdatadir)/js/ 2 | dist_js_DATA = \ 3 | application.js \ 4 | main.js \ 5 | mainWindow.js \ 6 | windowMode.js \ 7 | webView.js \ 8 | mainToolbar.js \ 9 | contents.js \ 10 | view.js \ 11 | embed.js \ 12 | library.js \ 13 | manager.js \ 14 | utils.js 15 | 16 | BUILT_SOURCES += \ 17 | path.js \ 18 | config.js 19 | 20 | path.js: Makefile path.js.in 21 | $(AM_V_GEN) $(do_subst) $(srcdir)/path.js.in > $@ 22 | config.js: Makefile config.js.in 23 | $(AM_V_GEN) $(do_subst) $(srcdir)/config.js.in > $@ 24 | 25 | nodist_js_DATA = \ 26 | path.js \ 27 | config.js \ 28 | ../epub.js/build/epub.js \ 29 | ../epub.js/examples/single.html 30 | 31 | 32 | CLEANFILES += \ 33 | $(BUILT_SOURCES) 34 | 35 | EXTRA_DIST += \ 36 | path.js.in \ 37 | config.js.in 38 | -------------------------------------------------------------------------------- /src/Makefile-lib.am: -------------------------------------------------------------------------------- 1 | gbprivate_cflags = \ 2 | -I$(top_srcdir)/src \ 3 | -I$(top_srcdir)/libgd \ 4 | -I$(top_srcdir)/lib 5 | 6 | gbprivate_source_h = \ 7 | lib/gb-webview.h \ 8 | lib/gb-nav-bar.h \ 9 | lib/gb-book-links.h \ 10 | $(NULL) 11 | 12 | gbprivate_source_c = \ 13 | lib/gb-webview.c \ 14 | lib/gb-resources.c \ 15 | lib/gb-nav-bar.c \ 16 | lib/gb-book-links.c \ 17 | $(NULL) 18 | 19 | # Defines the library to build. 20 | lib_LTLIBRARIES += libgbprivate-1.0.la 21 | 22 | libgbprivate_1_0_la_LIBADD = \ 23 | $(DEPEND_LIBS) \ 24 | $(top_builddir)/libgd/libgd.la 25 | libgbprivate_1_0_la_LDFLAGS = -avoid-version 26 | libgbprivate_1_0_la_CPPFLAGS = $(gbprivate_cflags) 27 | libgbprivate_1_0_la_SOURCES = \ 28 | $(gbprivate_source_c) \ 29 | $(gbprivate_source_h) \ 30 | $(NULL) 31 | 32 | INTROSPECTION_GIRS = GbPrivate_1_0_gir 33 | INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all 34 | INTROSPECTION_COMPILER_ARGS = 35 | 36 | if HAVE_INTROSPECTION 37 | introspection_sources = $(libgbprivate_1_0_la_SOURCES) 38 | 39 | INTROSPECTION_GIRS += GbPrivate-1.0.gir 40 | 41 | GbPrivate-1.0.gir: libgbprivate-1.0.la Makefile 42 | GbPrivate_1_0_gir_NAMESPACE = GbPrivate 43 | GbPrivate_1_0_gir_VERSION = 1.0 44 | GbPrivate_1_0_gir_LIBS = libgbprivate-1.0.la 45 | GbPrivate_1_0_gir_CFLAGS = $(AM_CPPFLAGS) $(gbprivate_cflags) 46 | GbPrivate_1_0_gir_SCANNERFLAGS = --warn-all --symbol-prefix=gb --identifier-prefix=Gb 47 | GbPrivate_1_0_gir_INCLUDES = \ 48 | GObject-2.0 \ 49 | Gtk-3.0 \ 50 | WebKit2-4.0 51 | GbPrivate_1_0_gir_FILES = $(introspection_sources) 52 | endif 53 | -------------------------------------------------------------------------------- /src/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CPPFLAGS = \ 2 | -I$(top_builddir)/config \ 3 | -I$(top_srcdir) \ 4 | -L$(top_srcdir) \ 5 | $(GTK_DEBUG_FLAGS) \ 6 | $(GTK_DEP_CFLAGS) 7 | 8 | AM_CFLAGS = $(DEPEND_CFLAGS) -Wall 9 | 10 | AM_LDFLAGS = $(DEPEND_LIBS) 11 | 12 | # preamble 13 | NULL = 14 | BUILT_SOURCES = 15 | CLEANFILES = 16 | EXTRA_DIST = 17 | DISTCLEANFILES = 18 | lib_LTLIBRARIES = 19 | bin_SCRIPTS = 20 | libexec_PROGRAMS = 21 | libexec_SCRIPTS = 22 | 23 | # convenience command for doing Makefile variable substitutions in non-Makefile 24 | # files (scripts, service files, etc.) 25 | do_subst = sed -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \ 26 | -e 's|@abs_top_builddir[@]|$(abs_top_builddir)|g' \ 27 | -e 's|@localedir[@]|$(localedir)|g' \ 28 | -e 's|@bindir[@]|$(bindir)|g' \ 29 | -e 's|@libdir[@]|$(libdir)|g' \ 30 | -e 's|@libexecdir[@]|$(libexecdir)|g' \ 31 | -e 's|@pkglibdir[@]|$(pkglibdir)|g' \ 32 | -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \ 33 | -e 's|@GJS_CONSOLE[@]|$(GJS_CONSOLE)|g' \ 34 | -e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \ 35 | -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \ 36 | -e 's|@GETTEXT_PACKAGE[@]|$(GETTEXT_PACKAGE)|g' 37 | 38 | -include $(INTROSPECTION_MAKEFILE) 39 | include Makefile-lib.am 40 | include Makefile-js.am 41 | 42 | resource_files = $(shell $(GLIB_COMPILE_RESOURCES) gnome-books.gresource.xml) 43 | gnome-books.gresource: gnome-books.gresource.xml $(resource_files) 44 | $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) $< 45 | EXTRA_DIST += gnome-books.gresource.xml $(resource_files) 46 | 47 | resourcedir = $(pkgdatadir) 48 | resource_DATA = gnome-books.gresource 49 | 50 | CLEANFILES += gnome-books.gresource 51 | 52 | girdir = $(datadir)/gir-1.0 53 | gir_DATA = $(INTROSPECTION_GIRS) 54 | 55 | typelibdir = $(libdir)/girepository-1.0 56 | typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) 57 | 58 | CLEANFILES += $(gir_DATA) $(typelib_DATA) 59 | 60 | service_in_files = org.gnome.Books.service.in 61 | servicedir = $(datadir)/dbus-1/services 62 | service_DATA = org.gnome.Books.service 63 | org.gnome.Books.service: org.gnome.Books.service.in 64 | $(AM_V_GEN) $(do_subst) $< > $@ 65 | 66 | CLEANFILES += $(service_DATA) 67 | EXTRA_DIST += $(service_in_files) 68 | 69 | bin_SCRIPTS += gnome-books 70 | gnome-books: gnome-books.in 71 | $(AM_V_GEN) $(do_subst) $< > $@ 72 | chmod +x $@ 73 | 74 | CLEANFILES += gnome-books 75 | EXTRA_DIST += gnome-books.in 76 | 77 | dist_bin_SCRIPTS = epub-metadata.py \ 78 | epub-thumbnailer.py 79 | 80 | -include $(top_srcdir)/git.mk 81 | -------------------------------------------------------------------------------- /src/config.js: -------------------------------------------------------------------------------- 1 | const PACKAGE_NAME = 'Books'; 2 | const PACKAGE_VERSION = '1.0.0'; 3 | const GETTEXT_PACKAGE = ''; -------------------------------------------------------------------------------- /src/config.js.in: -------------------------------------------------------------------------------- 1 | const PACKAGE_NAME = '@PACKAGE_NAME@'; 2 | const PACKAGE_VERSION = '@PACKAGE_VERSION@'; 3 | const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@'; -------------------------------------------------------------------------------- /src/epub-metadata.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import sys 4 | import zipfile 5 | from lxml import etree 6 | 7 | def get_epub_info(fname): 8 | ns = { 9 | 'n':'urn:oasis:names:tc:opendocument:xmlns:container', 10 | 'pkg':'http://www.idpf.org/2007/opf', 11 | 'dc':'http://purl.org/dc/elements/1.1/' 12 | } 13 | 14 | zip = zipfile.ZipFile(fname) 15 | 16 | # find the contents metafile 17 | txt = zip.read('META-INF/container.xml') 18 | tree = etree.fromstring(txt) 19 | cfname = tree.xpath('n:rootfiles/n:rootfile/@full-path',namespaces=ns)[0] 20 | 21 | # grab the metadata block from the contents metafile 22 | cf = zip.read(cfname) 23 | tree = etree.fromstring(cf) 24 | p = tree.xpath('/pkg:package/pkg:metadata',namespaces=ns)[0] 25 | 26 | res = {} 27 | for s in ['title','creator']: 28 | value = p.xpath('dc:%s/text()'%(s),namespaces=ns)[0] 29 | if value: 30 | res[s] = value 31 | else: 32 | res[s] = "" 33 | return res 34 | 35 | def getTitle(): 36 | print metadata['title'] 37 | 38 | def getAuthor(): 39 | print metadata['creator'] 40 | ''' 41 | def getLanguage(): 42 | print metadata['language'] 43 | 44 | def getPublisher(): 45 | print metadata['publisher'] 46 | 47 | def getRights(): 48 | print metadata['rights'] 49 | 50 | def getIdentifier(): 51 | print metadata['identifier'] 52 | ''' 53 | metadata = get_epub_info(sys.argv[1]) 54 | eval(sys.argv[2]) -------------------------------------------------------------------------------- /src/gnome-books.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=0.1 3 | Encoding=UTF-8 4 | Name=Books 5 | Comment=Read Books 6 | Exec=@prefix@/bin/gnome-books 7 | Icon=application-default-icon 8 | Terminal=false 9 | Type=Application 10 | StartupNotify=true 11 | Categories=GNOME;GTK;Utility; -------------------------------------------------------------------------------- /src/gnome-books.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | resources/Adwaita.css 5 | resources/app-menu.ui 6 | resources/read-menu.ui 7 | resources/thumbnail-frame.png 8 | 9 | -------------------------------------------------------------------------------- /src/gnome-books.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export GJS_PATH="@pkgdatadir@/js${GJS_PATH:+:$GJS_PATH}" 4 | export GI_TYPELIB_PATH="@pkglibdir@/girepository-1.0${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" 5 | export LD_LIBRARY_PATH="@pkglibdir@${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" 6 | 7 | if test x"$GJS_DEBUG_OUTPUT" = x ; then 8 | export GJS_DEBUG_OUTPUT=stderr 9 | fi 10 | 11 | if test x"$GJS_DEBUG_TOPICS" = x ; then 12 | export GJS_DEBUG_TOPICS="JS ERROR;JS LOG" 13 | fi 14 | 15 | DEBUG_COMMAND="" 16 | if test x"$BOOKS_RUN_DEBUG" != x; then 17 | DEBUG_COMMAND="gdb --args" 18 | fi 19 | 20 | exec $DEBUG_COMMAND @GJS_CONSOLE@ -I @pkgdatadir@/js -c "const Main = imports.main; Main.start();" "$@" -------------------------------------------------------------------------------- /src/lib/gb-book-links.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GNOME Books is free software; you can redistribute it and/or modify 3 | * it under the terms of the GNU General Public License as published by 4 | * the Free Software Foundation; either version 2 of the License, or 5 | * (at your option) any later version. 6 | * 7 | * GNOME Books is distributed in the hope that it will be useful, 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | * GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along 13 | * with GNOME Books; if not, write to the Free Software Foundation, Inc., 14 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 15 | * 16 | * Author: Marta Milakovic 17 | * 18 | */ 19 | 20 | #ifndef __GB_BOOK_LINKS_H__ 21 | #define __GB_BOOK_LINKS_H__ 22 | 23 | #include 24 | 25 | G_BEGIN_DECLS 26 | 27 | typedef struct _GbBookLinks GbBookLinks; 28 | typedef struct _GbBookLinksClass GbBookLinksClass; 29 | typedef struct _GbBookLinksPrivate GbBookLinksPrivate; 30 | 31 | #define GB_TYPE_BOOK_LINKS (gb_book_links_get_type()) 32 | #define GB_BOOK_LINKS(object) (G_TYPE_CHECK_INSTANCE_CAST((object), GB_TYPE_BOOK_LINKS, GbBookLinks)) 33 | #define GB_BOOK_LINKS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GB_TYPE_BOOK_LINKS, GbBookLinksClass)) 34 | #define GB_IS_BOOK_LINKS(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), GB_TYPE_BOOK_LINKS)) 35 | #define GB_IS_BOOK_LINKS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GB_TYPE_BOOK_LINKS)) 36 | #define GB_BOOK_LINKS_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), GB_TYPE_BOOK_LINKS, GbBookLinksClass)) 37 | 38 | struct _GbBookLinks { 39 | GtkBox base_instance; 40 | 41 | GbBookLinksPrivate *priv; 42 | }; 43 | 44 | struct _GbBookLinksClass { 45 | GtkBoxClass base_class; 46 | }; 47 | 48 | GType gb_book_links_get_type (void); 49 | GtkWidget* gb_book_links_new (void); 50 | void gb_book_links_fill_model (GbBookLinks *self, gchar* markup, gchar* label); 51 | void gb_book_links_set_model (GbBookLinks *self); 52 | 53 | G_END_DECLS 54 | 55 | #endif /* __GB_BOOK_LINKS_H__ */ 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/lib/gb-nav-bar.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GNOME Books is free software; you can redistribute it and/or modify 3 | * it under the terms of the GNU General Public License as published by 4 | * the Free Software Foundation; either version 2 of the License, or 5 | * (at your option) any later version. 6 | * 7 | * GNOME Books is distributed in the hope that it will be useful, 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | * GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along 13 | * with GNOME Books; if not, write to the Free Software Foundation, Inc., 14 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 15 | * 16 | * Author: Marta Milakovic 17 | * 18 | */ 19 | 20 | #ifndef __GB_NAV_BAR_H__ 21 | #define __GB_NAV_BAR_H__ 22 | 23 | #include 24 | #include 25 | #include 26 | 27 | G_BEGIN_DECLS 28 | 29 | typedef struct _GbNavBar GbNavBar; 30 | typedef struct _GbNavBarClass GbNavBarClass; 31 | typedef struct _GbNavBarPrivate GbNavBarPrivate; 32 | 33 | #define GB_TYPE_NAV_BAR (gb_nav_bar_get_type ()) 34 | #define GB_NAV_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GB_TYPE_NAV_BAR, GbNavBar)) 35 | #define GB_NAV_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GB_TYPE_NAV_BAR, GbNavBarClass)) 36 | #define GB_IS_NAV_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GB_TYPE_NAV_BAR)) 37 | #define GB_IS_NAV_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GB_TYPE_NAV_BAR)) 38 | #define GB_NAV_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GB_TYPE_NAV_BAR, GbNavBarClass)) 39 | 40 | struct _GbNavBar { 41 | GtkBox base_instance; 42 | 43 | GbNavBarPrivate *priv; 44 | }; 45 | 46 | struct _GbNavBarClass { 47 | GtkBoxClass parent_class; 48 | }; 49 | 50 | GType gb_nav_bar_get_type (void) G_GNUC_CONST; 51 | 52 | GtkWidget* gb_nav_bar_new (); 53 | GtkWidget* gb_nav_bar_get_button_area (GbNavBar *bar); 54 | gboolean gb_nav_bar_get_hover (GbNavBar *bar); 55 | void gb_nav_bar_set_total_pages (GbNavBar *bar, 56 | guint total_num); 57 | int gb_nav_bar_get_total_pages (GbNavBar *bar); 58 | int gb_nav_bar_get_current_page (GbNavBar *bar); 59 | void gb_nav_bar_set_current_page (GbNavBar *bar, 60 | guint curr_page_num); 61 | void gb_nav_bar_update_page (GbNavBar *self, 62 | int page); 63 | G_END_DECLS 64 | 65 | #endif /* __GB_NAV_BAR_H__ */ 66 | -------------------------------------------------------------------------------- /src/lib/gb-resources.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | epub.js/examples/single.html 5 | epub.js/examples/pagination.html 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/lib/gb-webview.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GNOME Books is free software; you can redistribute it and/or modify 3 | * it under the terms of the GNU General Public License as published by 4 | * the Free Software Foundation; either version 2 of the License, or 5 | * (at your option) any later version. 6 | * 7 | * GNOME Books is distributed in the hope that it will be useful, 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | * GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along 13 | * with GNOME Books; if not, write to the Free Software Foundation, Inc., 14 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 15 | * 16 | * Author: Marta Milakovic 17 | * 18 | */ 19 | 20 | #ifndef __GB_WEBVIEW_H__ 21 | #define __GB_WEBVIEW_H__ 22 | 23 | #include 24 | #include 25 | #include 26 | #include 27 | 28 | G_BEGIN_DECLS 29 | 30 | typedef struct _GbWebView GbWebView; 31 | typedef struct _GbWebViewClass GbWebViewClass; 32 | typedef struct _GbWebViewPrivate GbWebViewPrivate; 33 | 34 | #define GB_WEBVIEW_TYPE (gb_webview_get_type()) 35 | #define GB_WEBVIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GB_WEBVIEW_TYPE, GbWebView)) 36 | #define GB_WEBVIEW_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GB_WEBVIEW_TYPE, GbWebViewClass)) 37 | #define GB_IS_WEBVIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GB_WEBVIEW_TYPE)) 38 | #define GB_IS_WEBVIEW_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GB_WEBVIEW_TYPE)) 39 | #define GB_WEBVIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GB_WEBVIEW_TYPE, GbWebViewClass)) 40 | 41 | struct _GbWebView { 42 | GtkWidget base_instace; 43 | 44 | GbWebViewPrivate* priv; 45 | }; 46 | 47 | struct _GbWebViewClass { 48 | GtkWidgetClass parent_class; 49 | }; 50 | 51 | GType gb_webview_get_type (void) G_GNUC_CONST; 52 | 53 | WebKitWebView* gb_webview_new (void); 54 | WebKitWebView* gb_webview_get_view (GbWebView* self); 55 | void gb_webview_register_URI (GbWebView* self); 56 | void gb_webview_run_JS (GbWebView *self, gchar* load_command); 57 | void gb_webview_run_JS_return (GbWebView* self, 58 | gchar* load_command, 59 | GAsyncReadyCallback callback, 60 | gpointer user_data); 61 | char * 62 | gb_webview_output_JS_finish (GbWebView *self, 63 | GTask *res, 64 | GError *error); 65 | #endif /* __GB_WEBVIEW_H__ */ 66 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * GNOME Books is free software; you can redistribute it and/or modify 3 | * it under the terms of the GNU General Public License as published by 4 | * the Free Software Foundation; either version 2 of the License, or 5 | * (at your option) any later version. 6 | * 7 | * GNOME Books is distributed in the hope that it will be useful, 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | * GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License along 13 | * with GNOME Books; if not, write to the Free Software Foundation, Inc., 14 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 15 | * 16 | * Author: Marta Milakovic 17 | * 18 | */ 19 | 20 | const Application = imports.application; 21 | 22 | function start() { 23 | let application = new Application.Application(); 24 | return application.run(ARGV); 25 | } -------------------------------------------------------------------------------- /src/org.gnome.Books.service: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=org.gnome.Books 3 | Exec=/usr/local/bin/gnome-books --gapplication-service 4 | -------------------------------------------------------------------------------- /src/org.gnome.Books.service.in: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=org.gnome.Books 3 | Exec=@bindir@/gnome-books --gapplication-service 4 | -------------------------------------------------------------------------------- /src/path.js: -------------------------------------------------------------------------------- 1 | let LOCALE_DIR = "/usr/local/share/locale"; 2 | let STYLE_DIR = "/usr/local/share/books/style/"; 3 | let ICONS_DIR = "/usr/local/share/books/icons/"; 4 | let RESOURCE_DIR = "/usr/local/share/books"; -------------------------------------------------------------------------------- /src/path.js.in: -------------------------------------------------------------------------------- 1 | let LOCALE_DIR = "@localedir@"; 2 | let STYLE_DIR = "@pkgdatadir@/style/"; 3 | let ICONS_DIR = "@pkgdatadir@/icons/"; 4 | let RESOURCE_DIR = "@pkgdatadir@"; -------------------------------------------------------------------------------- /src/resources/Adwaita.css: -------------------------------------------------------------------------------- 1 | @define-color documents_emblem_bg #3465a4; 2 | @define-color documents_collection_bg #d3d7cf; 3 | @define-color theme_base_color #ffffff; 4 | @define-color theme_bg_color #ededed; 5 | @define-color theme_selected_bg_color #4a90d9; 6 | @define-color borders #a7aba7; 7 | @define-color entry_tag_bg #3465a4; 8 | @define-color entry_tag_fg @theme_base_color; 9 | 10 | GdMainIconView.content-view { 11 | -GdMainIconView-icon-size: 40; 12 | } 13 | 14 | /* Make spinner visible on both dark and bright backgrounds w/o making 15 | * it look ugly/weird. 16 | */ 17 | GdMainIconView.content-view.cell:active { 18 | color: gray; 19 | } 20 | 21 | .documents-load-more.button { 22 | border-image: none; 23 | border-color: @borders; 24 | border-width: 1px 0 0; 25 | border-radius: 0; 26 | } 27 | 28 | .documents-scrolledwin.frame { 29 | border-width: 1px 0 0; 30 | border-radius: 0; 31 | } 32 | 33 | .documents-icon-bg { 34 | background-color: @documents_emblem_bg; 35 | border-radius: 4px; 36 | 37 | color: @theme_base_color; 38 | } 39 | 40 | .documents-collection-icon { 41 | background-color: @documents_collection_bg; 42 | border-radius: 8px; 43 | } 44 | 45 | .documents-counter { 46 | background-image: url("dnd-counter.svg"); 47 | background-size: contain; 48 | background-color: transparent; 49 | color: @theme_base_color; 50 | font: bold; 51 | } 52 | 53 | .documents-favorite.button:active, 54 | .documents-favorite.button:active:hover { 55 | color: shade(@theme_selected_bg_color, 1.20); 56 | } 57 | 58 | .documents-entry-tag { 59 | background-color: @entry_tag_bg; 60 | color: @entry_tag_fg; 61 | 62 | border-radius: 4px; 63 | border-width: 0; 64 | 65 | margin: 2px; 66 | padding: 4px; 67 | } 68 | 69 | .documents-entry-tag:hover { 70 | background-color: shade(@entry_tag_bg, 1.10); 71 | color: @entry_tag_fg; 72 | } 73 | 74 | .documents-entry-tag.button, 75 | .documents-entry-tag.button:hover, 76 | .documents-entry-tag.button:active, 77 | .documents-entry-tag.button:active:hover { 78 | background-color: transparent; 79 | background-image: none; 80 | box-shadow: none; 81 | border-image: none; 82 | border-width: 0; 83 | } 84 | 85 | .documents-entry-tag.button:hover { 86 | color: shade(@entry_tag_bg, 2.10); 87 | } 88 | 89 | .content-view.document-page { 90 | border-style: solid; 91 | border-width: 3px 3px 6px 4px; 92 | border-image: url("thumbnail-frame.png") 3 3 6 4; 93 | } 94 | 95 | .osd .page-thumbnail { 96 | border-style: solid; 97 | border-width: 1px; 98 | border-color: @osd_lowlight; 99 | 100 | /* when there's no pixbuf yet */ 101 | background-color: @osd_bg; 102 | } 103 | -------------------------------------------------------------------------------- /src/resources/app-menu.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | app.fullscreen 6 | Fullscreen 7 | 8 |
9 |
10 | 11 | app.help 12 | Help 13 | 14 | 15 | app.about 16 | About 17 | 18 | 19 | app.quit 20 | Quit 21 | 22 |
23 |
24 |
25 | -------------------------------------------------------------------------------- /src/resources/read-menu.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | app.open-current 6 | Open 7 | 8 |
9 |
10 | 11 | app.properties 12 | Properties 13 | 14 |
15 |
16 |
17 | -------------------------------------------------------------------------------- /src/resources/thumbnail-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martahilmar/gnome-books/999c153dcfab1a276cd44b43551acdd2b73cbe03/src/resources/thumbnail-frame.png --------------------------------------------------------------------------------