sketch-json-parse
Version:
sketch-json解析
38 lines (37 loc) • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @description 去掉分组,同时记录图层层级
* @param {SKLayer[]} layers
* @param {SKLayer[]} [afterLayer=[]]
* @param {{ id: string; name: string }[]} [groupBreadcrumb=[]]
* @param isFilterLayer 控制是否过滤图层
* @returns {SKLayer[]}
*/
const filterGroupLayer = (layers, afterLayer = [], groupBreadcrumb = [], currIndex = { num: 0 }, isFilterLayer, effectRuleNames) => {
currIndex.num = currIndex.num + 1;
layers = layers.map((item) => {
item.zIndex = currIndex.num;
return item;
});
layers.forEach((layer) => {
// 组的面包屑西信息
const $groupBreadcrumb = [
...groupBreadcrumb,
{ id: layer.do_objectID, name: layer.name },
];
// 非group或者有标签的group,group上不应该有样式,存在rotation旋转属性的
if (layer._class !== "group" || !isFilterLayer(layer)) {
// $groupBreadcrumb.push({ id: layer.do_objectID, name: layer.name });
afterLayer.push(Object.assign(Object.assign({}, layer), { layers: effectRuleNames.dialog.filter((t) => layer.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())).length > 0
? filterGroupLayer(layer.layers, [], [...$groupBreadcrumb], currIndex, isFilterLayer, effectRuleNames)
: [], groupBreadcrumb: [...$groupBreadcrumb] }));
}
if (Array.isArray(layer.layers) &&
effectRuleNames.dialog.filter((t) => layer.name.toLocaleLowerCase().includes(t.toLocaleLowerCase())).length === 0) {
filterGroupLayer(layer.layers, afterLayer, [...$groupBreadcrumb], currIndex, isFilterLayer, effectRuleNames);
}
});
return afterLayer;
};
exports.default = filterGroupLayer;