Commit 4e1b8ce3 authored by csillag's avatar csillag

DTM changes

 * Updated dom-text-mapper to 3fb30bee (master branch)
 * Updated Annotator to 631c1345 (typed-packaging branch)

These are all internal DTM / Annotator changes.
The communcation about DOM changes has migrated from method calls
to events.

See also https://github.com/hypothesis/dom-text-mapper/issues/14
parent 3924bae4
...@@ -48,21 +48,20 @@ class window.PDFTextMapper extends window.PageTextMapperCore ...@@ -48,21 +48,20 @@ class window.PDFTextMapper extends window.PageTextMapperCore
@_unmapPage @pageInfo[index] @_unmapPage @pageInfo[index]
# Do something about cross-page selections # Do something about cross-page selections
window.DomTextMapper.instances.push viewer = document.getElementById "viewer"
id: "cross-page catcher" viewer.addEventListener "domChange", (event) =>
rootNode: document.getElementById "viewer" node = event.srcElement
performUpdateOnNode: (node, data) => data = event.data
if "viewer" is node.getAttribute? "id" if "viewer" is node.getAttribute? "id"
# This event escaped the pages. console.log "Detected cross-page change event."
# Must be a cross-page selection. # This event escaped the pages.
if data.start? and data.end? # Must be a cross-page selection.
startPage = @getPageForNode data.start if data.start? and data.end?
endPage = @getPageForNode data.end startPage = @getPageForNode data.start
for index in [ startPage.index .. endPage.index ] endPage = @getPageForNode data.end
#console.log "Should rescan page #" + index for index in [ startPage.index .. endPage.index ]
@_updateMap @pageInfo[index] #console.log "Should rescan page #" + index
documentChanged: -> @_updateMap @pageInfo[index]
timestamp: ->
$(PDFView.container).on 'scroll', => @_onScroll() $(PDFView.container).on 'scroll', => @_onScroll()
......
...@@ -67,7 +67,10 @@ class TextHighlight extends Annotator.Highlight ...@@ -67,7 +67,10 @@ class TextHighlight extends Annotator.Highlight
for node in normedRange.textNodes() when not white.test node.nodeValue for node in normedRange.textNodes() when not white.test node.nodeValue
r = @$(node).wrapAll(hl).parent().show()[0] r = @$(node).wrapAll(hl).parent().show()[0]
window.DomTextMapper?.changed node, "created hilite" event = document.createEvent "UIEvents"
event.initUIEvent "domChange", true, false, window, 0
event.reason = "created hilite"
node.dispatchEvent event
r r
# Public: highlight a list of ranges # Public: highlight a list of ranges
...@@ -121,8 +124,11 @@ class TextHighlight extends Annotator.Highlight ...@@ -121,8 +124,11 @@ class TextHighlight extends Annotator.Highlight
# We should restore original state # We should restore original state
child = hl.childNodes[0] child = hl.childNodes[0]
@$(hl).replaceWith hl.childNodes @$(hl).replaceWith hl.childNodes
window.DomTextMapper?.changed child.parentNode,
"removed hilite (annotation deleted)" event = document.createEvent "UIEvents"
event.initUIEvent "domChange", true, false, window, 0
event.reason = "removed hilite (annotation deleted)"
child.parentNode.dispatchEvent event
# Get the HTML elements making up the highlight # Get the HTML elements making up the highlight
_getDOMElements: -> @_highlights _getDOMElements: -> @_highlights
......
...@@ -211,9 +211,12 @@ class Range.BrowserRange ...@@ -211,9 +211,12 @@ class Range.BrowserRange
while nr.commonAncestor.nodeType isnt Node.ELEMENT_NODE while nr.commonAncestor.nodeType isnt Node.ELEMENT_NODE
nr.commonAncestor = nr.commonAncestor.parentNode nr.commonAncestor = nr.commonAncestor.parentNode
if window.DomTextMapper? and changed if changed
# console.log "Ranged normalization changed the DOM, updating d-t-m" event = document.createEvent "UIEvents"
window.DomTextMapper.changed nr.commonAncestor, "range normalization", nr event.initUIEvent "domChange", true, false, window, 0
event.reason = "range normalization"
event.data = nr
nr.commonAncestor.dispatchEvent event
new Range.NormalizedRange(nr) new Range.NormalizedRange(nr)
......
// Generated by CoffeeScript 1.6.3 // Generated by CoffeeScript 1.6.3
/* /*
** Annotator 1.2.6-dev-3d4ae84 ** Annotator 1.2.6-dev-6bedfd2
** https://github.com/okfn/annotator/ ** https://github.com/okfn/annotator/
** **
** Copyright 2012 Aron Carroll, Rufus Pollock, and Nick Stenning. ** Copyright 2012 Aron Carroll, Rufus Pollock, and Nick Stenning.
** Dual licensed under the MIT and GPLv3 licenses. ** Dual licensed under the MIT and GPLv3 licenses.
** https://github.com/okfn/annotator/blob/master/LICENSE ** https://github.com/okfn/annotator/blob/master/LICENSE
** **
** Built at: 2013-11-28 15:22:14Z ** Built at: 2013-11-28 17:54:20Z
*/ */
...@@ -492,7 +492,7 @@ ...@@ -492,7 +492,7 @@
} }
BrowserRange.prototype.normalize = function(root) { BrowserRange.prototype.normalize = function(root) {
var changed, n, node, nr, r; var changed, event, n, node, nr, r;
if (this.tainted) { if (this.tainted) {
console.error(_t("You may only call normalize() once on a BrowserRange!")); console.error(_t("You may only call normalize() once on a BrowserRange!"));
return false; return false;
...@@ -557,8 +557,12 @@ ...@@ -557,8 +557,12 @@
while (nr.commonAncestor.nodeType !== Node.ELEMENT_NODE) { while (nr.commonAncestor.nodeType !== Node.ELEMENT_NODE) {
nr.commonAncestor = nr.commonAncestor.parentNode; nr.commonAncestor = nr.commonAncestor.parentNode;
} }
if ((window.DomTextMapper != null) && changed) { if (changed) {
window.DomTextMapper.changed(nr.commonAncestor, "range normalization", nr); event = document.createEvent("UIEvents");
event.initUIEvent("domChange", true, false, window, 0);
event.reason = "range normalization";
event.data = nr;
nr.commonAncestor.dispatchEvent(event);
} }
return new Range.NormalizedRange(nr); return new Range.NormalizedRange(nr);
}; };
......
This diff is collapsed.
// Generated by CoffeeScript 1.6.3 // Generated by CoffeeScript 1.6.3
/* /*
** Annotator 1.2.6-dev-2000a65 ** Annotator 1.2.6-dev-6bedfd2
** https://github.com/okfn/annotator/ ** https://github.com/okfn/annotator/
** **
** Copyright 2012 Aron Carroll, Rufus Pollock, and Nick Stenning. ** Copyright 2012 Aron Carroll, Rufus Pollock, and Nick Stenning.
** Dual licensed under the MIT and GPLv3 licenses. ** Dual licensed under the MIT and GPLv3 licenses.
** https://github.com/okfn/annotator/blob/master/LICENSE ** https://github.com/okfn/annotator/blob/master/LICENSE
** **
** Built at: 2013-11-26 10:43:03Z ** Built at: 2013-11-28 18:04:55Z
*/ */
...@@ -61,7 +61,8 @@ ...@@ -61,7 +61,8 @@
} }
PDFTextMapper.prototype.setEvents = function() { PDFTextMapper.prototype.setEvents = function() {
var _this = this; var viewer,
_this = this;
addEventListener("pagerender", function(evt) { addEventListener("pagerender", function(evt) {
var index; var index;
if (_this.pageInfo == null) { if (_this.pageInfo == null) {
...@@ -78,25 +79,23 @@ ...@@ -78,25 +79,23 @@
return _this._unmapPage(_this.pageInfo[index]); return _this._unmapPage(_this.pageInfo[index]);
} }
}); });
window.DomTextMapper.instances.push({ viewer = document.getElementById("viewer");
id: "cross-page catcher", viewer.addEventListener("domChange", function(event) {
rootNode: document.getElementById("viewer"), var data, endPage, index, node, startPage, _i, _ref, _ref1, _results;
performUpdateOnNode: function(node, data) { node = event.srcElement;
var endPage, index, startPage, _i, _ref, _ref1, _results; data = event.data;
if ("viewer" === (typeof node.getAttribute === "function" ? node.getAttribute("id") : void 0)) { if ("viewer" === (typeof node.getAttribute === "function" ? node.getAttribute("id") : void 0)) {
if ((data.start != null) && (data.end != null)) { console.log("Detected cross-page change event.");
startPage = _this.getPageForNode(data.start); if ((data.start != null) && (data.end != null)) {
endPage = _this.getPageForNode(data.end); startPage = _this.getPageForNode(data.start);
_results = []; endPage = _this.getPageForNode(data.end);
for (index = _i = _ref = startPage.index, _ref1 = endPage.index; _ref <= _ref1 ? _i <= _ref1 : _i >= _ref1; index = _ref <= _ref1 ? ++_i : --_i) { _results = [];
_results.push(_this._updateMap(_this.pageInfo[index])); for (index = _i = _ref = startPage.index, _ref1 = endPage.index; _ref <= _ref1 ? _i <= _ref1 : _i >= _ref1; index = _ref <= _ref1 ? ++_i : --_i) {
} _results.push(_this._updateMap(_this.pageInfo[index]));
return _results;
} }
return _results;
} }
}, }
documentChanged: function() {},
timestamp: function() {}
}); });
return $(PDFView.container).on('scroll', function() { return $(PDFView.container).on('scroll', function() {
return _this._onScroll(); return _this._onScroll();
......
{"version":3,"file":"annotator.pdf.js","sources":["_preamble.coffee","_annotator_mapsrc/src/plugin/pdf.coffee"],"names":[],"mappings":"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"} {"version":3,"file":"annotator.pdf.js","sources":["_preamble.coffee","_annotator_mapsrc/src/plugin/pdf.coffee"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
// Generated by CoffeeScript 1.6.3 // Generated by CoffeeScript 1.6.3
/* /*
** Annotator 1.2.6-dev-9183f7e ** Annotator 1.2.6-dev-6bedfd2
** https://github.com/okfn/annotator/ ** https://github.com/okfn/annotator/
** **
** Copyright 2012 Aron Carroll, Rufus Pollock, and Nick Stenning. ** Copyright 2012 Aron Carroll, Rufus Pollock, and Nick Stenning.
** Dual licensed under the MIT and GPLv3 licenses. ** Dual licensed under the MIT and GPLv3 licenses.
** https://github.com/okfn/annotator/blob/master/LICENSE ** https://github.com/okfn/annotator/blob/master/LICENSE
** **
** Built at: 2013-11-28 15:40:48Z ** Built at: 2013-11-28 17:56:16Z
*/ */
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
}; };
TextHighlight.prototype._highlightRange = function(normedRange, cssClass) { TextHighlight.prototype._highlightRange = function(normedRange, cssClass) {
var hl, node, r, white, _i, _len, _ref, _ref1, _results; var event, hl, node, r, white, _i, _len, _ref, _results;
if (cssClass == null) { if (cssClass == null) {
cssClass = 'annotator-hl'; cssClass = 'annotator-hl';
} }
...@@ -85,9 +85,10 @@ ...@@ -85,9 +85,10 @@
continue; continue;
} }
r = this.$(node).wrapAll(hl).parent().show()[0]; r = this.$(node).wrapAll(hl).parent().show()[0];
if ((_ref1 = window.DomTextMapper) != null) { event = document.createEvent("UIEvents");
_ref1.changed(node, "created hilite"); event.initUIEvent("domChange", true, false, window, 0);
} event.reason = "created hilite";
node.dispatchEvent(event);
_results.push(r); _results.push(r);
} }
return _results; return _results;
...@@ -137,7 +138,7 @@ ...@@ -137,7 +138,7 @@
}; };
TextHighlight.prototype.removeFromDocument = function() { TextHighlight.prototype.removeFromDocument = function() {
var child, hl, _i, _len, _ref, _ref1, _results; var child, event, hl, _i, _len, _ref, _results;
_ref = this._highlights; _ref = this._highlights;
_results = []; _results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
...@@ -145,7 +146,10 @@ ...@@ -145,7 +146,10 @@
if ((hl.parentNode != null) && this.annotator.domMapper.isPageMapped(this.pageIndex)) { if ((hl.parentNode != null) && this.annotator.domMapper.isPageMapped(this.pageIndex)) {
child = hl.childNodes[0]; child = hl.childNodes[0];
this.$(hl).replaceWith(hl.childNodes); this.$(hl).replaceWith(hl.childNodes);
_results.push((_ref1 = window.DomTextMapper) != null ? _ref1.changed(child.parentNode, "removed hilite (annotation deleted)") : void 0); event = document.createEvent("UIEvents");
event.initUIEvent("domChange", true, false, window, 0);
event.reason = "removed hilite (annotation deleted)";
_results.push(child.parentNode.dispatchEvent(event));
} else { } else {
_results.push(void 0); _results.push(void 0);
} }
......
{"version":3,"file":"annotator.texthighlights.js","sources":["_preamble.coffee","_annotator_mapsrc/src/plugin/texthighlights.coffee"],"names":[],"mappings":"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"} {"version":3,"file":"annotator.texthighlights.js","sources":["_preamble.coffee","_annotator_mapsrc/src/plugin/texthighlights.coffee"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
...@@ -7,38 +7,41 @@ class window.DomTextMapper ...@@ -7,38 +7,41 @@ class window.DomTextMapper
SELECT_CHILDREN_INSTEAD = ["thead", "tbody", "ol", "a", "caption", "p", "span", "div", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "li", "form"] SELECT_CHILDREN_INSTEAD = ["thead", "tbody", "ol", "a", "caption", "p", "span", "div", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "li", "form"]
CONTEXT_LEN = 32 CONTEXT_LEN = 32
@instances: [] @instances: 0
@changed: (node, reason = "no reason", data = {}) ->
if @instances.length is 0 then return
# console.log "==== Node"
# console.log node
# console.log "has changed: " + reason
# console.log data
for instance in @instances when instance.rootNode.contains(node)
# console.log "Telling instance '" + instance.id + "'."
instance.documentChanged()
instance.performUpdateOnNode node, false, data
instance.lastScanned = instance.timestamp()
null
constructor: (@id)-> constructor: (@id)->
@setRealRoot() @setRealRoot()
instances = window.DomTextMapper.instances DomTextMapper.instances += 1
instances.push this @id ?= "d-t-m #" + DomTextMapper.instances
@id ?= "d-t-m #" + instances.length
log: (msg) -> log: (msg...) ->
console.log @id + ": " + msg console.log @id, ": ", msg...
# ===== Public methods ======= # ===== Public methods =======
# Change handler
_onChange: (event) =>
# @log "received change event", event
# console.log "source", event.srcElement
# console.log "reason", event.reason ? "no reason"
# console.log "data", event.data
@documentChanged()
@performUpdateOnNode event.srcElement, false, event.data
@lastScanned = @timestamp()
# Change the root node, and subscribe to the events
_changeRootNode: (node) ->
@rootNode?.removeEventListener "domChange", @_onChange
@rootNode = node
@rootNode.addEventListener "domChange", @_onChange
node
# Consider only the sub-tree beginning with the given node. # Consider only the sub-tree beginning with the given node.
# #
# This will be the root node to use for all operations. # This will be the root node to use for all operations.
setRootNode: (rootNode) -> setRootNode: (rootNode) ->
@rootWin = window @rootWin = window
@pathStartNode = @rootNode = rootNode @pathStartNode = @_changeRootNode rootNode
# Consider only the sub-tree beginning with the node whose ID was given. # Consider only the sub-tree beginning with the node whose ID was given.
# #
...@@ -55,7 +58,7 @@ class window.DomTextMapper ...@@ -55,7 +58,7 @@ class window.DomTextMapper
@rootWin = iframe.contentWindow @rootWin = iframe.contentWindow
unless @rootWin? unless @rootWin?
throw new Error "Can't access contents of the specified iframe!" throw new Error "Can't access contents of the specified iframe!"
@rootNode = @rootWin.document @_changeRootNode @rootWin.document
@pathStartNode = @getBody() @pathStartNode = @getBody()
# Return the default path # Return the default path
...@@ -66,8 +69,8 @@ class window.DomTextMapper ...@@ -66,8 +69,8 @@ class window.DomTextMapper
# (This is the default; you only need to call this, if you have configured # (This is the default; you only need to call this, if you have configured
# a different root earlier, and now you want to restore the default setting.) # a different root earlier, and now you want to restore the default setting.)
setRealRoot: -> setRealRoot: ->
@rootWin = window @rootWin = window
@rootNode = document @_changeRootNode document
@pathStartNode = @getBody() @pathStartNode = @getBody()
# Notify the library that the document has changed. # Notify the library that the document has changed.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment