insertAdjacentNode method
foo
Implementation
void insertAdjacentNode(int targetId, String position, int newTargetId) {
if (kProfileMode) {
PerformanceTiming.instance()
.mark(PERF_INSERT_ADJACENT_NODE_START, uniqueId: targetId);
}
assert(_existsTarget(targetId),
'targetId: $targetId position: $position newTargetId: $newTargetId');
assert(_existsTarget(newTargetId),
'newTargetId: $newTargetId position: $position');
Node target = _getEventTargetById<Node>(targetId)!;
Node newNode = _getEventTargetById<Node>(newTargetId)!;
Node? targetParentNode = target.parentNode;
switch (position) {
case 'beforebegin':
targetParentNode!.insertBefore(newNode, target);
break;
case 'afterbegin':
target.insertBefore(newNode, target.firstChild);
break;
case 'beforeend':
target.appendChild(newNode);
break;
case 'afterend':
if (targetParentNode!.lastChild == target) {
targetParentNode.appendChild(newNode);
} else {
targetParentNode.insertBefore(
newNode,
targetParentNode
.childNodes[targetParentNode.childNodes.indexOf(target) + 1],
);
}
break;
}
_debugDOMTreeChanged();
if (kProfileMode) {
PerformanceTiming.instance()
.mark(PERF_INSERT_ADJACENT_NODE_END, uniqueId: targetId);
}
}