Skip to content

Instantly share code, notes, and snippets.

@fchasen
fchasen / cfitext.js
Created July 1, 2015 13:12
Find CFI text
var epubcfi = new EPUBJS.EpubCFI();
var text;
// Find the range
var range = epubcfi.generateRangeFromCfi("epubcfi(/6/14[xchapter_001]!4/2/14/2[c001p0006]/1:305)", Book.renderer.doc);
text = range.toString();
// Or find the containing element and then get the offset
var parent = epubcfi.findParent("epubcfi(/6/14[xchapter_001]!4/2/14/2[c001p0006]/1:305)", Book.renderer.doc);
text = parent.textContent
@fchasen
fchasen / hashchange.js
Created September 1, 2015 03:26
Hash Change
// From: https://github.com/futurepress/epub.js/blob/master/reader_src/controllers/controls_controller.js
var hashChanged = function(){
var hash = window.location.hash.slice(1);
book.goto(hash);
};
book.on('renderer:locationChanged', function(cfi){
var cfiFragment = "#" + cfi;
@fchasen
fchasen / current_text.js
Last active May 20, 2017 22:46
Get the current shown text
Book.on("renderer:visibleRangeChanged", function(cfirange) {
var text = '';
var cfi = new EPUBJS.EpubCFI();
var startRange = cfi.generateRangeFromCfi(cfirange.start, Book.renderer.render.document);
var endRange = cfi.generateRangeFromCfi(cfirange.end, Book.renderer.render.document);
// Create a new range to handle full cfi range (this should be fixed in v0.3)
var fullRange = document.createRange();
if (startRange) {
fullRange.setStart(startRange.startContainer, startRange.startOffset);
book.on('renderer:locationChanged', function(locationCfi){
var epubcfi = new EPUBJS.EpubCFI();
var doc = book.renderer.doc;
var mark = document.createElement("a");
// Give the marker an unique id
mark.id = "look-for-me-1234";
// Add the marker
epubcfi.addMarker(locationCfi, doc, marker);
@fchasen
fchasen / flow.js
Last active January 9, 2018 04:29
Flow brainstorming
let flow = new Flow("#someid");
let page = flow.pages(":first");
page.toRange();
let words = flow.pages().sentences(":last").words(-3);
words.wrap("<span class='no-break'>");
words.breakBefore();
words.breakAfter();