2024-05-27 11:50:59 +02:00
|
|
|
import { translateChildren, translateMaskChildren } from '@plugin/translators';
|
2024-04-15 12:06:38 +00:00
|
|
|
|
2024-04-15 14:09:48 +02:00
|
|
|
import { Children } from '@ui/lib/types/utils/children';
|
2024-04-15 12:06:38 +00:00
|
|
|
|
2024-05-27 11:50:59 +02:00
|
|
|
const nodeActsAsMask = (node: SceneNode): boolean => {
|
|
|
|
return 'isMask' in node && node.isMask;
|
|
|
|
};
|
|
|
|
|
2024-04-15 12:06:38 +00:00
|
|
|
export const transformChildren = async (
|
|
|
|
node: ChildrenMixin,
|
|
|
|
baseX: number = 0,
|
2024-06-11 09:26:38 +02:00
|
|
|
baseY: number = 0,
|
|
|
|
reverseChildrenOrder: boolean = false
|
2024-04-15 12:06:38 +00:00
|
|
|
): Promise<Children> => {
|
2024-05-27 11:50:59 +02:00
|
|
|
const maskIndex = node.children.findIndex(nodeActsAsMask);
|
|
|
|
const containsMask = maskIndex !== -1;
|
2024-06-11 09:26:38 +02:00
|
|
|
const children = reverseChildrenOrder ? node.children.slice().reverse() : node.children;
|
2024-05-27 11:50:59 +02:00
|
|
|
|
2024-04-15 12:06:38 +00:00
|
|
|
return {
|
2024-05-27 11:50:59 +02:00
|
|
|
children: containsMask
|
2024-06-11 09:26:38 +02:00
|
|
|
? await translateMaskChildren(children, maskIndex, baseX, baseY)
|
|
|
|
: await translateChildren(children, baseX, baseY)
|
2024-04-15 12:06:38 +00:00
|
|
|
};
|
|
|
|
};
|