UNPKG

sketch-json-parse

Version:

sketch-json解析

41 lines (40 loc) 1.36 kB
"use strict"; 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); };