mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
react app
This commit is contained in:
73
react-app/node_modules/react/lib/getNodeForCharacterOffset.js
generated
vendored
Normal file
73
react-app/node_modules/react/lib/getNodeForCharacterOffset.js
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* Copyright 2013-2015, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule getNodeForCharacterOffset
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Given any node return the first leaf node without children.
|
||||
*
|
||||
* @param {DOMElement|DOMTextNode} node
|
||||
* @return {DOMElement|DOMTextNode}
|
||||
*/
|
||||
function getLeafNode(node) {
|
||||
while (node && node.firstChild) {
|
||||
node = node.firstChild;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the next sibling within a container. This will walk up the
|
||||
* DOM if a node's siblings have been exhausted.
|
||||
*
|
||||
* @param {DOMElement|DOMTextNode} node
|
||||
* @return {?DOMElement|DOMTextNode}
|
||||
*/
|
||||
function getSiblingNode(node) {
|
||||
while (node) {
|
||||
if (node.nextSibling) {
|
||||
return node.nextSibling;
|
||||
}
|
||||
node = node.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get object describing the nodes which contain characters at offset.
|
||||
*
|
||||
* @param {DOMElement|DOMTextNode} root
|
||||
* @param {number} offset
|
||||
* @return {?object}
|
||||
*/
|
||||
function getNodeForCharacterOffset(root, offset) {
|
||||
var node = getLeafNode(root);
|
||||
var nodeStart = 0;
|
||||
var nodeEnd = 0;
|
||||
|
||||
while (node) {
|
||||
if (node.nodeType === 3) {
|
||||
nodeEnd = nodeStart + node.textContent.length;
|
||||
|
||||
if (nodeStart <= offset && nodeEnd >= offset) {
|
||||
return {
|
||||
node: node,
|
||||
offset: offset - nodeStart
|
||||
};
|
||||
}
|
||||
|
||||
nodeStart = nodeEnd;
|
||||
}
|
||||
|
||||
node = getLeafNode(getSiblingNode(node));
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = getNodeForCharacterOffset;
|
Reference in New Issue
Block a user