sketch-json-parse
Version:
sketch-json解析
41 lines (40 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* 蒙版归类,将子元素归类到蒙版下
*
* 作用范围:Mask上层的兄弟元素及其子元素
* 通过设置parentId,将子元素归类到蒙版下
* @param layers
* @param param1
*/
const _mask = (layers, effectRuleNames) => {
let maskFlag = false;
let parent = null;
// 标记阶段
for (let i = 0; i < layers.length; i++) {
// 中断mark, 从本层开始
if (layers[i].shouldBreakMaskChain) {
maskFlag = false;
}
// 出现蒙版后,所有元素归类到蒙版下
if (maskFlag && parent) {
layers[i].parentId = parent.do_objectID;
}
// 是否是滚动容器蒙版图层,滚动时才归类,不然就让后续直接删除
// if (layers[i].hasClippingMask && tagsEveryIncludes(layers[i].name, effectRuleNames.scroll)) {
// 是蒙版就直接归类
if (layers[i].hasClippingMask) {
maskFlag = true;
parent = layers[i];
}
// 递归子元素
if (Array.isArray(layers[i].layers)) {
layers[i].layers = _mask(layers[i].layers, effectRuleNames);
}
}
return layers;
};
exports.default = (layers, effectRuleNames) => {
return _mask(layers, effectRuleNames);
};