@saber2pr/react
Version:
react in Typescript.
64 lines (63 loc) • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/*
* @Author: saber2pr
* @Date: 2019-12-06 17:11:57
* @Last Modified by: saber2pr
* @Last Modified time: 2019-12-07 16:09:22
*/
var ReactTypes_1 = require("../shared/ReactTypes");
var ReactIs_1 = require("../react-is/ReactIs");
var testStackSize_1 = require("../shared/testStackSize");
function getHostSiblingFiber(fiber) {
var node = fiber;
siblings: while (true) {
testStackSize_1.TestStackSize("getHostSiblingFiber");
while (!node.sibling) {
if (!node.return || ReactIs_1.isHostParentFiber(node.return)) {
return null;
}
node = node.return;
}
node.sibling.return = node.return;
node = node.sibling;
while (!ReactIs_1.isHostChildFiber(node)) {
if (node.effectType === ReactTypes_1.EffectType.Place) {
continue siblings;
}
if (!node.child) {
continue siblings;
}
else {
node.child.return = node;
node = node.child;
}
}
if (!(node.effectType === ReactTypes_1.EffectType.Place)) {
return node;
}
}
}
exports.getHostSiblingFiber = getHostSiblingFiber;
function getHostParentFiber(fiber) {
var parent = fiber.return;
while (parent) {
testStackSize_1.TestStackSize("getHostParentFiber");
if (ReactIs_1.isHostParentFiber(parent)) {
return parent;
}
parent = parent.return;
}
}
exports.getHostParentFiber = getHostParentFiber;
function getHostChildFiber(fiber) {
var child = fiber.child;
while (child) {
testStackSize_1.TestStackSize("getHostChildFiber");
if (ReactIs_1.isHostChildFiber(child)) {
return child;
}
child = child.child;
}
}
exports.getHostChildFiber = getHostChildFiber;