You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.3 KiB

4 months ago
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDescendantShapes = getDescendantShapes;
exports.getAncestorShapes = getAncestorShapes;
/**
* <zh/> 获取图形的所有子元素
*
* <en/> Get all the child elements of the shape
* @param shape - <zh/> 图形元素 | <en/> shape
* @returns <zh/> 子元素数组 | <en/> child elements array
*/
function getDescendantShapes(shape) {
const succeeds = [];
// 遍历所有子元素,并将子元素的子元素加入到数组中
const traverse = (shape) => {
if (shape === null || shape === void 0 ? void 0 : shape.children.length) {
shape.children.forEach((child) => {
succeeds.push(child);
traverse(child);
});
}
};
traverse(shape);
return succeeds;
}
/**
* <zh/> 获取图形的所有祖先元素
*
* <en/> Get all the ancestor elements of the shape
* @param shape - <zh/> 图形元素 | <en/> shape
* @returns <zh/> 祖先元素数组 | <en/> ancestor elements array
*/
function getAncestorShapes(shape) {
const ancestors = [];
let currentNode = shape.parentNode;
while (currentNode) {
ancestors.push(currentNode);
currentNode = currentNode.parentNode;
}
return ancestors;
}
//# sourceMappingURL=shape.js.map