@wubafe/picasso-parse
Version:
Picasso解析库
46 lines (42 loc) • 1.31 kB
text/typescript
import { SKLayer } from '../types'
/**
* @description 去掉分组,同时去掉图层层级
* @param {SKLayer[]} layers
* @param {SKLayer[]} [afterLayer=[]]
* @returns {SKLayer[]}
*/
const filterGroupLayer = (
layers: SKLayer[],
afterLayer: SKLayer[] = [],
type: string,
groupBreadcrumb: { id: string; name: string }[] = []
): SKLayer[] => {
layers.forEach((layer: SKLayer) => {
// 组的面包屑西信息
const $groupBreadcrumb = [
...groupBreadcrumb,
{ id: layer.do_objectID, name: layer.name },
]
// 非组件 或 是未解绑组件 或 组件解绑之后的组件
if (
layer._class !== 'group' ||
// 组行为:{ Default: 0, Frame: 1, Graphic: 2 }
[1, 2].includes(layer.groupBehavior) ||
layer.symbolComponentObject ||
layer.haikuiComponentInfo
) {
afterLayer.push({
...layer,
layers: [],
groupBreadcrumb: [...$groupBreadcrumb],
})
}
if (Array.isArray(layer.layers)) {
filterGroupLayer(layer.layers, afterLayer, type, [
...$groupBreadcrumb,
])
}
})
return afterLayer
}
export default filterGroupLayer