X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/2687ec6cbbe8101a4faa232c79f5c1321dcebe6d..fb1b343bcfc05dbdd9f5d4d2d6ad9f243bb21300:/src/editor/modules/documentCanvas/documentCanvas.js diff --git a/src/editor/modules/documentCanvas/documentCanvas.js b/src/editor/modules/documentCanvas/documentCanvas.js index 9a88b75..98c09d2 100644 --- a/src/editor/modules/documentCanvas/documentCanvas.js +++ b/src/editor/modules/documentCanvas/documentCanvas.js @@ -14,7 +14,13 @@ var logger = logging.getLogger('documentCanvas'); return function(sandbox) { - var canvas = canvas3.fromXMLDocument(null); + var canvasElements = []; + + sandbox.getPlugins().forEach(function(plugin) { + canvasElements = canvasElements.concat(plugin.canvasElements || []); + }); + + var canvas = canvas3.fromXMLDocument(null, canvasElements); var canvasWrapper = $(template); var shownAlready = false; var scrollbarPosition = 0, @@ -76,9 +82,18 @@ return function(sandbox) { canvas.setCurrentElement(node); }, onAfterActionExecuted: function(action, ret) { - if(ret && ret instanceof canvas.wlxmlDocument.CaretFragment && ret.isValid()) { + if(ret && ret.isValid()) { logger.debug('The action returned a valid fragment'); - canvas.setCurrentElement(ret.node, {caretTo: ret.offset}); + if(ret instanceof canvas.wlxmlDocument.RangeFragment) { + canvas.setCurrentElement(ret.endNode, {caretTo: ret.endOffset}); + } else if(ret instanceof canvas.wlxmlDocument.NodeFragment) { + var params = { + caretTo: ret instanceof canvas.wlxmlDocument.CaretFragment ? ret.offset : 'start' + }; + canvas.setCurrentElement(ret.node, params); + } else { + logger.debug('Fragment not supported'); + } return; } logger.debug('No valid fragment returned from the action');