28 lines
732 B
React
28 lines
732 B
React
/**
|
|
* Get parent block data.
|
|
*
|
|
* @param {Object} rootBlock root block data
|
|
* @param {Object} currentBlock current block data
|
|
* @return {Object}
|
|
*/
|
|
export default function getParentBlock(rootBlock, currentBlock) {
|
|
if (rootBlock && rootBlock.clientId === currentBlock.clientId) {
|
|
return rootBlock;
|
|
}
|
|
|
|
let result = false;
|
|
|
|
// Check all inner blocks to find parent block.
|
|
if (rootBlock && rootBlock.innerBlocks && rootBlock.innerBlocks.length) {
|
|
rootBlock.innerBlocks.forEach((innerBlockData) => {
|
|
const innerParent = getParentBlock(innerBlockData, currentBlock);
|
|
|
|
if (!result && innerParent) {
|
|
result = innerParent.clientId === currentBlock.clientId ? rootBlock : innerParent;
|
|
}
|
|
});
|
|
}
|
|
|
|
return result;
|
|
}
|