From 590a3f7c62de5beae1f1f90523f72f30721d0c5f Mon Sep 17 00:00:00 2001 From: Jordi Sala Morales Date: Mon, 15 Apr 2024 11:58:51 +0000 Subject: [PATCH] Implement partial transformers --- plugin-src/transformers/partials/index.ts | 1 + .../partials/transformDimensionAndPosition.ts | 14 ++++++++++++++ plugin-src/transformers/transformEllipseNode.ts | 8 +++----- plugin-src/transformers/transformFrameNode.ts | 8 +++----- plugin-src/transformers/transformGroupNode.ts | 13 +++++++------ plugin-src/transformers/transformImageNode.ts | 8 +++----- plugin-src/transformers/transformRectangleNode.ts | 8 +++----- 7 files changed, 34 insertions(+), 26 deletions(-) create mode 100644 plugin-src/transformers/partials/index.ts create mode 100644 plugin-src/transformers/partials/transformDimensionAndPosition.ts diff --git a/plugin-src/transformers/partials/index.ts b/plugin-src/transformers/partials/index.ts new file mode 100644 index 0000000..c38a8eb --- /dev/null +++ b/plugin-src/transformers/partials/index.ts @@ -0,0 +1 @@ +export * from './transformDimensionAndPosition'; diff --git a/plugin-src/transformers/partials/transformDimensionAndPosition.ts b/plugin-src/transformers/partials/transformDimensionAndPosition.ts new file mode 100644 index 0000000..68e17fb --- /dev/null +++ b/plugin-src/transformers/partials/transformDimensionAndPosition.ts @@ -0,0 +1,14 @@ +import { ShapeGeomAttributes } from '@ui/lib/types/shape/shapeGeomAttributes'; + +export const transformDimensionAndPosition = ( + node: DimensionAndPositionMixin, + baseX: number, + baseY: number +): ShapeGeomAttributes => { + return { + x: node.x + baseX, + y: node.y + baseY, + width: node.width, + height: node.height + }; +}; diff --git a/plugin-src/transformers/transformEllipseNode.ts b/plugin-src/transformers/transformEllipseNode.ts index 5134ae7..7d6f5eb 100644 --- a/plugin-src/transformers/transformEllipseNode.ts +++ b/plugin-src/transformers/transformEllipseNode.ts @@ -1,3 +1,4 @@ +import { transformDimensionAndPosition } from '@plugin/transformers/partials'; import { translateFills } from '@plugin/translators'; import { CircleShape } from '@ui/lib/types/circle/circleShape'; @@ -10,10 +11,7 @@ export const transformEllipseNode = ( return { type: 'circle', name: node.name, - x: node.x + baseX, - y: node.y + baseY, - width: node.width, - height: node.height, - fills: translateFills(node.fills, node.width, node.height) + fills: translateFills(node.fills, node.width, node.height), + ...transformDimensionAndPosition(node, baseX, baseY) }; }; diff --git a/plugin-src/transformers/transformFrameNode.ts b/plugin-src/transformers/transformFrameNode.ts index 7aa8574..ec3d340 100644 --- a/plugin-src/transformers/transformFrameNode.ts +++ b/plugin-src/transformers/transformFrameNode.ts @@ -1,3 +1,4 @@ +import { transformDimensionAndPosition } from '@plugin/transformers/partials'; import { translateFills } from '@plugin/translators'; import { FrameShape } from '@ui/lib/types/frame/frameShape'; @@ -12,13 +13,10 @@ export const transformFrameNode = async ( return { type: 'frame', name: node.name, - x: node.x + baseX, - y: node.y + baseY, - width: node.width, - height: node.height, fills: translateFills(node.fills, node.width, node.height), children: await Promise.all( node.children.map(child => transformSceneNode(child, baseX + node.x, baseY + node.y)) - ) + ), + ...transformDimensionAndPosition(node, baseX, baseY) }; }; diff --git a/plugin-src/transformers/transformGroupNode.ts b/plugin-src/transformers/transformGroupNode.ts index ea5540e..998c827 100644 --- a/plugin-src/transformers/transformGroupNode.ts +++ b/plugin-src/transformers/transformGroupNode.ts @@ -1,6 +1,8 @@ +import { transformDimensionAndPosition } from '@plugin/transformers/partials'; + import { GroupShape } from '@ui/lib/types/group/groupShape'; -import { transformSceneNode } from './transformSceneNode'; +import { transformSceneNode } from '.'; export const transformGroupNode = async ( node: GroupNode, @@ -10,10 +12,9 @@ export const transformGroupNode = async ( return { type: 'group', name: node.name, - x: node.x + baseX, - y: node.y + baseY, - width: node.width, - height: node.height, - children: await Promise.all(node.children.map(child => transformSceneNode(child, baseX, baseY))) + children: await Promise.all( + node.children.map(child => transformSceneNode(child, baseX, baseY)) + ), + ...transformDimensionAndPosition(node, baseX, baseY) }; }; diff --git a/plugin-src/transformers/transformImageNode.ts b/plugin-src/transformers/transformImageNode.ts index 622d337..01c16c3 100644 --- a/plugin-src/transformers/transformImageNode.ts +++ b/plugin-src/transformers/transformImageNode.ts @@ -1,3 +1,4 @@ +import { transformDimensionAndPosition } from '@plugin/transformers/partials'; import { detectMimeType } from '@plugin/utils'; import { ImageShape } from '@ui/lib/types/image/imageShape'; @@ -17,14 +18,11 @@ export const transformImageNode = async ( return { type: 'image', name: node.name, - x: node.x + baseX, - y: node.y + baseY, - width: node.width, - height: node.height, metadata: { width: node.width, height: node.height }, - dataUri: dataUri + dataUri: dataUri, + ...transformDimensionAndPosition(node, baseX, baseY) }; }; diff --git a/plugin-src/transformers/transformRectangleNode.ts b/plugin-src/transformers/transformRectangleNode.ts index 9d63fb0..53b58fc 100644 --- a/plugin-src/transformers/transformRectangleNode.ts +++ b/plugin-src/transformers/transformRectangleNode.ts @@ -1,3 +1,4 @@ +import { transformDimensionAndPosition } from '@plugin/transformers/partials'; import { translateFills } from '@plugin/translators'; import { RectShape } from '@ui/lib/types/rect/rectShape'; @@ -10,10 +11,7 @@ export const transformRectangleNode = ( return { type: 'rect', name: node.name, - x: node.x + baseX, - y: node.y + baseY, - width: node.width, - height: node.height, - fills: translateFills(node.fills, node.width, node.height) + fills: translateFills(node.fills, node.width, node.height), + ...transformDimensionAndPosition(node, baseX, baseY) }; };