refactor: remove web

This commit is contained in:
Tienson Qin
2020-10-27 23:19:40 +08:00
parent 3d1c809020
commit 2d1fa33204
118 changed files with 0 additions and 2 deletions

View File

@@ -0,0 +1,75 @@
// Copied from https://stackoverflow.com/a/20336116
function isDescendant(parent, child) {
// from http://stackoverflow.com/questions/2234979/how-to-check-in-javascript-if-one-element-is-a-child-of-another
var node = child;
while (node != null) {
if (node == parent) {
return true;
}
node = node.parentNode;
}
return false;
}
function getNodesBetween(rootNode, node1, node2) {
var resultNodes = [];
var isBetweenNodes = false;
for (var i = 0; i < rootNode.childNodes.length; i+= 1) {
if (isDescendant(rootNode.childNodes[i], node1) || isDescendant(rootNode.childNodes[i], node2)) {
if (resultNodes.length == 0) {
isBetweenNodes = true;
} else {
isBetweenNodes = false;
}
resultNodes.push(rootNode.childNodes[i]);
} else if (resultNodes.length == 0) {
} else if (isBetweenNodes) {
resultNodes.push(rootNode.childNodes[i]);
} else {
return resultNodes;
}
};
if (resultNodes.length == 0) {
return [rootNode];
} else if (isDescendant(resultNodes[resultNodes.length - 1], node1) || isDescendant(resultNodes[resultNodes.length - 1], node2)) {
return resultNodes;
} else {
// same child node for both should never happen
return [resultNodes[0]];
}
}
export var getSelectedNodes = function (selectionAncestor, startNode) {
// from https://developer.mozilla.org/en-US/docs/Web/API/Selection
var selection = null;
if(window.getSelection){
selection = window.getSelection();
} else if(document.selection){
selection = document.selection;
}
if(selection) {
if (selection.isCollapsed) {
return [];
};
var node2 = selection.focusNode;
return getNodesBetween(selectionAncestor, startNode, node2);
}
};
export var clearSelection = function () {
var selection = null;
if(window.getSelection){
selection = window.getSelection();
} else if(document.selection){
selection = document.selection;
}
if(selection){
if(selection.empty){
selection.empty();
}
if(selection.removeAllRanges){
selection.removeAllRanges();
}
}
}