epubjs
Version:
Render ePub documents in the browser, across many devices
47 lines (38 loc) • 1.25 kB
JavaScript
EPUBJS.reader.plugins.HypothesisController = function (Book) {
var reader = this;
var $main = $("#main");
var updateAnnotations = function () {
var annotator = Book.renderer.render.window.annotator;
if (annotator && annotator.constructor.$) {
var annotations = getVisibleAnnotations(annotator.constructor.$);
annotator.showAnnotations(annotations)
}
};
var getVisibleAnnotations = function ($) {
var width = Book.renderer.render.iframe.clientWidth;
return $('.annotator-hl').map(function() {
var $this = $(this),
left = this.getBoundingClientRect().left;
if (left >= 0 && left <= width) {
return $this.data('annotation');
}
}).get();
};
$("#annotations").on("click", function () {
var annotator = Book.renderer.render.window.annotator;
var currentPosition = Book.getCurrentLocationCfi();
if ($main.hasClass("single")) {
$main.removeClass("single");
annotator.setVisibleHighlights(false);
} else {
$main.addClass("single");
annotator.setVisibleHighlights(true);
}
$main.one("transitionend", function(){
Book.gotoCfi(currentPosition);
});
});
Book.on("renderer:locationChanged", updateAnnotations);
// Book.on("renderer:chapterDisplayed", updateAnnotations);
return {}
};