X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/436728b375888873e6e96079a73f12d8adbd7b96..cef69fff5322bdc7766d7063809694f6ee0e9e47:/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 62845e3..4e262a0 100644 --- a/src/editor/modules/documentCanvas/canvas/utils.js +++ b/src/editor/modules/documentCanvas/canvas/utils.js @@ -20,14 +20,45 @@ var nearestInDocumentOrder = function(selector, direction, element) { return null; }; +var getElementForElementRootNode = function(node, withParent) { + if(node.nodeType === Node.TEXT_NODE) { + return _getElementForRootTextNode(node, withParent); + } + return node.getData('canvasElement'); +}; -var getElementForNode = function(node) { +var _getElementForRootTextNode = function(textNode, withParent) { + var parentElement = getElementForNode(withParent || textNode.parent()), + toret; + parentElement.children().some(function(child) { + if(child.wlxmlNode.sameNode(textNode)) { + toret = child; + return true; + } + }); + return toret; +}; - var ptr = node.nodeType === Node.TEXT_NODE ? node.parent() : node; - while(!ptr.getData('canvasElement')) { - ptr = ptr.parent(); +var getElementForNode = function(node, withParent) { + if(node.nodeType === Node.TEXT_NODE) { + return _getElementForTextNode(node, withParent); } - return ptr.getData('canvasElement'); + while(!node.getData('canvasElement')) { + node = node.parent(); + } + return node.getData('canvasElement'); +}; + +var _getElementForTextNode = function(textNode, withParent) { + var parentElement = getElementForNode(withParent || textNode.parent()), + toret; + parentElement.children().some(function(child) { + if(child.wlxmlNode.sameNode(textNode)) { + toret = child; + return true; + } + }); + return toret || parentElement; }; var getElementForDetachedNode = function(node, originalParent) { @@ -41,17 +72,7 @@ var getElementForDetachedNode = function(node, originalParent) { return ptr.getData('canvasElement'); }; -var getElementForTextNode = function(textNode) { - var parentElement = getElementForNode(textNode.parent()), - toret; - parentElement.children().some(function(child) { - if(child.wlxmlNode.sameNode(textNode)) { - toret = child; - return true; - } - }); - return toret; -}; + return { nearestInDocumentOrder: nearestInDocumentOrder, @@ -60,7 +81,7 @@ return { }, getElementForNode: getElementForNode, getElementForDetachedNode: getElementForDetachedNode, - getElementForTextNode: getElementForTextNode + getElementForElementRootNode: getElementForElementRootNode }; });