X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/efe36f4f1b5df351eeb4d40a54c3900cf9a7079b..46359b91eb01a6d5c43cedf477751e1ca6fea3e4:/src/editor/modules/documentCanvas/canvas/utils.js diff --git a/src/editor/modules/documentCanvas/canvas/utils.js b/src/editor/modules/documentCanvas/canvas/utils.js index 0eb19d0..9f5ee46 100644 --- a/src/editor/modules/documentCanvas/canvas/utils.js +++ b/src/editor/modules/documentCanvas/canvas/utils.js @@ -10,6 +10,7 @@ var nearestInDocumentOrder = function(selector, direction, element) { parent = parents.length ? $(parents[parents.length-1]) : element; var adj = parent.find(selector).filter(function() { + /*jshint bitwise: false*/ return this.compareDocumentPosition(element) & (direction === 'above' ? Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_PRECEDING); }); @@ -17,10 +18,37 @@ var nearestInDocumentOrder = function(selector, direction, element) { return adj[direction === 'above' ? adj.length-1 : 0]; } return null; -} +}; + +var findCanvasElement = function(node) { + if(node.nodeType === Node.ELEMENT_NODE) { + return node.getData('canvasElement'); + } + if(node.nodeType === Node.TEXT_NODE) { + return findCanvasElementInParent(node, node.parent()); + } +}; + +/** + * We take child and its parent as arguments separatly to + * handle situation where child was removed from WLXMLDocument + * and it lost reference to its parent (but we may still have it on canvas). +*/ +var findCanvasElementInParent = function(wlxmlChildNode, wlxmlParentNode) { + var parentElement = findCanvasElement(wlxmlParentNode), + toret; + parentElement.children().forEach(function(child) { + if(child.data('wlxmlNode').sameNode(wlxmlChildNode)) { + toret = child; + } + }); + return toret; +}; return { nearestInDocumentOrder: nearestInDocumentOrder, + findCanvasElement: findCanvasElement, + findCanvasElementInParent: findCanvasElementInParent, unicode: { ZWS: '\u200B' }