33 lines
1000 B
JavaScript
33 lines
1000 B
JavaScript
|
/**
|
||
|
* Sets the virtual parent of an element.
|
||
|
* Pass `undefined` as the `parent` to clear the virtual parent.
|
||
|
*
|
||
|
* @public
|
||
|
*/
|
||
|
export function setVirtualParent(child, parent) {
|
||
|
var virtualChild = child;
|
||
|
var virtualParent = parent;
|
||
|
if (!virtualChild._virtual) {
|
||
|
virtualChild._virtual = {
|
||
|
children: [],
|
||
|
};
|
||
|
}
|
||
|
var oldParent = virtualChild._virtual.parent;
|
||
|
if (oldParent && oldParent !== parent) {
|
||
|
// Remove the child from its old parent.
|
||
|
var index = oldParent._virtual.children.indexOf(virtualChild);
|
||
|
if (index > -1) {
|
||
|
oldParent._virtual.children.splice(index, 1);
|
||
|
}
|
||
|
}
|
||
|
virtualChild._virtual.parent = virtualParent || undefined;
|
||
|
if (virtualParent) {
|
||
|
if (!virtualParent._virtual) {
|
||
|
virtualParent._virtual = {
|
||
|
children: [],
|
||
|
};
|
||
|
}
|
||
|
virtualParent._virtual.children.push(virtualChild);
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=setVirtualParent.js.map
|