109 lines
2.5 KiB
JavaScript
109 lines
2.5 KiB
JavaScript
|
EPUBJS.reader.plugins.HypothesisController = function(Book) {
|
||
|
var reader = this;
|
||
|
var book = reader.book;
|
||
|
var element = document.getElementById("hypothesis");
|
||
|
var body = window.document.body;
|
||
|
var annotator;
|
||
|
var $main = $("#main");
|
||
|
|
||
|
var updateAnnotations = function() {
|
||
|
var annotatations = [],
|
||
|
guestAnnotator = reader.book.renderer.render.window.annotator,
|
||
|
_$,
|
||
|
$annotations, width;
|
||
|
|
||
|
if(!guestAnnotator) {
|
||
|
if(annotator) annotator.updateViewer([]);
|
||
|
return;
|
||
|
};
|
||
|
|
||
|
_$ = guestAnnotator.constructor.$;
|
||
|
|
||
|
$annotations = _$(".annotator-hl");
|
||
|
width = reader.book.renderer.render.iframe.clientWidth;
|
||
|
|
||
|
//-- Find visible annotations
|
||
|
$annotations.each(function(){
|
||
|
var $this = _$(this),
|
||
|
left = this.getBoundingClientRect().left;
|
||
|
|
||
|
if(left >= 0 && left <= width) {
|
||
|
annotatations.push($this.data('annotation'));
|
||
|
}
|
||
|
});
|
||
|
|
||
|
//-- Update viewer
|
||
|
annotator.updateViewer(annotatations);
|
||
|
};
|
||
|
|
||
|
var attach = function(){
|
||
|
annotator = window.annotator;
|
||
|
annotator.frame.appendTo(element);
|
||
|
|
||
|
annotator.subscribe('annotationEditorShown', function () {
|
||
|
showAnnotations(true);
|
||
|
});
|
||
|
annotator.subscribe('annotationViewerShown', function () {
|
||
|
showAnnotations(true);
|
||
|
});
|
||
|
|
||
|
annotator.subscribe("annotationsLoaded", function(e){
|
||
|
var _$ = reader.book.renderer.render.window.annotator.constructor.$;
|
||
|
|
||
|
|
||
|
reader.annotator = annotator;
|
||
|
updateAnnotations();
|
||
|
|
||
|
_$(reader.book.renderer.contents).on("click", ".annotator-hl", function(event){
|
||
|
var $this = _$(this);
|
||
|
|
||
|
reader.annotator.updateViewer([$this.data('annotation')]);
|
||
|
|
||
|
// $scope.$apply(function(){
|
||
|
// $scope.single = true;
|
||
|
// $scope.noUpdate = true;
|
||
|
// });
|
||
|
|
||
|
});
|
||
|
});
|
||
|
|
||
|
$(".h-icon-comment").on("click", function () {
|
||
|
if ($main.hasClass("single")) {
|
||
|
showAnnotations(false);
|
||
|
} else {
|
||
|
showAnnotations(true);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
reader.book.on("renderer:locationChanged", function(){
|
||
|
updateAnnotations();
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
var showAnnotations = function(single) {
|
||
|
var currentPosition = reader.currentLocationCfi;
|
||
|
reader.settings.sidebarReflow = false;
|
||
|
|
||
|
if(single) {
|
||
|
$main.addClass("single");
|
||
|
window.annotator.setVisibleHighlights(true);
|
||
|
} else {
|
||
|
$main.removeClass("single");
|
||
|
window.annotator.setVisibleHighlights(false);
|
||
|
}
|
||
|
|
||
|
$main.one("transitionend", function(){
|
||
|
book.gotoCfi(currentPosition);
|
||
|
});
|
||
|
|
||
|
};
|
||
|
|
||
|
book.ready.all.then(function() {
|
||
|
reader.HypothesisController.attach();
|
||
|
});
|
||
|
|
||
|
return {
|
||
|
'attach': attach
|
||
|
};
|
||
|
};
|