@seed-design/figma 0.0.21 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/codegen/index.cjs +8019 -0
- package/lib/codegen/index.d.ts +1827 -0
- package/lib/codegen/index.js +7989 -0
- package/lib/codegen/targets/react/index.cjs +12205 -0
- package/lib/codegen/targets/react/index.d.ts +270 -0
- package/lib/codegen/targets/react/index.js +12187 -0
- package/lib/index.cjs +79 -2741
- package/lib/index.d.ts +17 -1937
- package/lib/index.js +61 -2715
- package/package.json +11 -1
- package/src/codegen/{targets/react/component/properties.type.ts → component-properties.ts} +43 -43
- package/src/codegen/core/codegen.ts +23 -8
- package/src/codegen/core/{component.ts → component-handler.ts} +3 -3
- package/src/codegen/core/component-type-helper.ts +35 -0
- package/src/codegen/core/context.ts +20 -0
- package/src/codegen/core/index.ts +16 -14
- package/src/codegen/core/{props.ts → props-converter.ts} +10 -13
- package/src/codegen/core/{value.ts → value-resolver.ts} +90 -52
- package/src/codegen/default-services.ts +44 -0
- package/src/codegen/index.ts +1 -44
- package/src/codegen/targets/figma/frame.ts +8 -8
- package/src/codegen/targets/figma/index.ts +1 -1
- package/src/codegen/targets/figma/pipeline.ts +71 -0
- package/src/codegen/targets/figma/props.ts +59 -70
- package/src/codegen/targets/figma/shape.ts +18 -18
- package/src/codegen/targets/figma/text.ts +6 -6
- package/src/codegen/targets/figma/value-resolver.ts +22 -0
- package/src/codegen/targets/react/component/deps.interface.ts +5 -4
- package/src/codegen/targets/react/component/{transformers → handlers}/action-button.ts +8 -14
- package/src/codegen/targets/react/component/{transformers → handlers}/action-chip.ts +10 -20
- package/src/codegen/targets/react/component/{transformers → handlers}/action-sheet.ts +13 -10
- package/src/codegen/targets/react/component/{transformers → handlers}/app-bar.ts +28 -36
- package/src/codegen/targets/react/component/handlers/avatar-stack.ts +29 -0
- package/src/codegen/targets/react/component/{transformers → handlers}/avatar.ts +12 -9
- package/src/codegen/targets/react/component/handlers/badge.ts +18 -0
- package/src/codegen/targets/react/component/{transformers → handlers}/callout.ts +6 -8
- package/src/codegen/targets/react/component/{transformers → handlers}/checkbox.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/chip-tabs.ts +10 -10
- package/src/codegen/targets/react/component/{transformers → handlers}/control-chip.ts +10 -20
- package/src/codegen/targets/react/component/{transformers → handlers}/error-state.ts +9 -9
- package/src/codegen/targets/react/component/{transformers → handlers}/extended-action-sheet.ts +16 -18
- package/src/codegen/targets/react/component/{transformers → handlers}/extended-fab.ts +6 -6
- package/src/codegen/targets/react/component/handlers/fab.ts +18 -0
- package/src/codegen/targets/react/component/{transformers → handlers}/help-bubble.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/identity-placeholder.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/inline-banner.ts +7 -10
- package/src/codegen/targets/react/component/{transformers → handlers}/manner-temp-badge.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/multiline-text-field.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/progress-circle.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/reaction-button.ts +6 -6
- package/src/codegen/targets/react/component/{transformers → handlers}/segmented-control.ts +10 -10
- package/src/codegen/targets/react/component/{transformers → handlers}/select-box.ts +10 -10
- package/src/codegen/targets/react/component/handlers/skeleton.ts +25 -0
- package/src/codegen/targets/react/component/{transformers → handlers}/snackbar.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/switch.ts +5 -5
- package/src/codegen/targets/react/component/{transformers → handlers}/tabs.ts +15 -15
- package/src/codegen/targets/react/component/{transformers → handlers}/text-button.ts +7 -13
- package/src/codegen/targets/react/component/{transformers → handlers}/text-field.ts +9 -9
- package/src/codegen/targets/react/component/{transformers → handlers}/toggle-button.ts +7 -11
- package/src/codegen/targets/react/component/index.ts +79 -75
- package/src/codegen/targets/react/frame.ts +8 -8
- package/src/codegen/targets/react/icon.ts +50 -0
- package/src/codegen/targets/react/index.ts +1 -1
- package/src/codegen/targets/react/instance.ts +19 -50
- package/src/codegen/targets/react/pipeline.ts +108 -0
- package/src/codegen/targets/react/props.ts +95 -73
- package/src/codegen/targets/react/shape.ts +5 -5
- package/src/codegen/targets/react/text.ts +6 -6
- package/src/codegen/targets/react/value-resolver.ts +35 -0
- package/src/entities/icon.repository.ts +2 -2
- package/src/entities/icon.service.ts +9 -20
- package/src/entities/style.service.ts +5 -17
- package/src/entities/variable.service.ts +36 -68
- package/src/utils/figma-variable.ts +39 -3
- package/src/codegen/core/component.types.ts +0 -29
- package/src/codegen/targets/figma/context.ts +0 -139
- package/src/codegen/targets/react/component/transformers/avatar-stack.ts +0 -29
- package/src/codegen/targets/react/component/transformers/badge.ts +0 -21
- package/src/codegen/targets/react/component/transformers/fab.ts +0 -18
- package/src/codegen/targets/react/component/transformers/skeleton.ts +0 -51
- package/src/codegen/targets/react/context.ts +0 -176
- /package/src/codegen/core/{element.ts → element-transformer.ts} +0 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import * as FigmaRestSpec from '@figma/rest-api-spec';
|
|
2
|
+
|
|
3
|
+
type NormalizedIsLayerTrait = Pick<FigmaRestSpec.IsLayerTrait, "type" | "id" | "name" | "boundVariables">;
|
|
4
|
+
type NormalizedCornerTrait = Pick<FigmaRestSpec.CornerTrait, "cornerRadius" | "rectangleCornerRadii">;
|
|
5
|
+
type NormalizedHasChildrenTrait = {
|
|
6
|
+
children: NormalizedSceneNode[];
|
|
7
|
+
};
|
|
8
|
+
type NormalizedHasLayoutTrait = Pick<FigmaRestSpec.HasLayoutTrait, "layoutAlign" | "layoutGrow" | "absoluteBoundingBox" | "relativeTransform" | "layoutPositioning" | "layoutSizingHorizontal" | "layoutSizingVertical" | "minHeight" | "minWidth" | "maxHeight" | "maxWidth">;
|
|
9
|
+
type NormalizedHasGeometryTrait = Pick<FigmaRestSpec.HasGeometryTrait, "fills" | "strokes" | "strokeWeight" | "styles">;
|
|
10
|
+
type NormalizedHasFramePropertiesTrait = Pick<FigmaRestSpec.HasFramePropertiesTrait, "layoutMode" | "layoutWrap" | "paddingLeft" | "paddingRight" | "paddingTop" | "paddingBottom" | "primaryAxisAlignItems" | "primaryAxisSizingMode" | "counterAxisAlignItems" | "counterAxisSizingMode" | "itemSpacing" | "counterAxisSpacing">;
|
|
11
|
+
interface NormalizedTextSegment {
|
|
12
|
+
characters: string;
|
|
13
|
+
start: number;
|
|
14
|
+
end: number;
|
|
15
|
+
style: {
|
|
16
|
+
fontFamily?: string;
|
|
17
|
+
fontWeight?: number;
|
|
18
|
+
fontSize?: number;
|
|
19
|
+
italic?: boolean;
|
|
20
|
+
textDecoration?: string;
|
|
21
|
+
letterSpacing?: number;
|
|
22
|
+
lineHeight?: number | {
|
|
23
|
+
unit: string;
|
|
24
|
+
value: number;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
type NormalizedTypePropertiesTrait = Pick<FigmaRestSpec.TypePropertiesTrait, "style" | "characters"> & {
|
|
29
|
+
segments: NormalizedTextSegment[];
|
|
30
|
+
textStyleKey?: string;
|
|
31
|
+
};
|
|
32
|
+
type NormalizedDefaultShapeTrait = NormalizedIsLayerTrait & NormalizedHasLayoutTrait & NormalizedHasGeometryTrait;
|
|
33
|
+
type NormalizedFrameTrait = NormalizedIsLayerTrait & NormalizedHasLayoutTrait & NormalizedHasGeometryTrait & NormalizedHasChildrenTrait & NormalizedCornerTrait & NormalizedHasFramePropertiesTrait;
|
|
34
|
+
interface NormalizedFrameNode extends NormalizedFrameTrait {
|
|
35
|
+
type: FigmaRestSpec.FrameNode["type"];
|
|
36
|
+
}
|
|
37
|
+
interface NormalizedRectangleNode extends NormalizedDefaultShapeTrait, NormalizedCornerTrait {
|
|
38
|
+
type: FigmaRestSpec.RectangleNode["type"];
|
|
39
|
+
}
|
|
40
|
+
interface NormalizedTextNode extends NormalizedDefaultShapeTrait, NormalizedTypePropertiesTrait {
|
|
41
|
+
type: FigmaRestSpec.TextNode["type"];
|
|
42
|
+
}
|
|
43
|
+
interface NormalizedComponentNode extends NormalizedFrameTrait {
|
|
44
|
+
type: FigmaRestSpec.ComponentNode["type"];
|
|
45
|
+
}
|
|
46
|
+
interface NormalizedInstanceNode extends NormalizedFrameTrait {
|
|
47
|
+
type: FigmaRestSpec.InstanceNode["type"];
|
|
48
|
+
componentProperties: {
|
|
49
|
+
[key: string]: FigmaRestSpec.ComponentProperty & {
|
|
50
|
+
componentKey?: string;
|
|
51
|
+
componentSetKey?: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
componentKey: string;
|
|
55
|
+
componentSetKey?: string;
|
|
56
|
+
children: NormalizedSceneNode[];
|
|
57
|
+
}
|
|
58
|
+
interface NormalizedVectorNode extends NormalizedDefaultShapeTrait, NormalizedCornerTrait {
|
|
59
|
+
type: FigmaRestSpec.VectorNode["type"];
|
|
60
|
+
}
|
|
61
|
+
interface NormalizedBooleanOperationNode extends NormalizedIsLayerTrait, NormalizedHasChildrenTrait, NormalizedHasLayoutTrait, NormalizedHasGeometryTrait {
|
|
62
|
+
type: FigmaRestSpec.BooleanOperationNode["type"];
|
|
63
|
+
}
|
|
64
|
+
interface NormalizedUnhandledNode {
|
|
65
|
+
type: "UNHANDLED";
|
|
66
|
+
id: string;
|
|
67
|
+
original: FigmaRestSpec.Node | SceneNode;
|
|
68
|
+
}
|
|
69
|
+
type NormalizedSceneNode = NormalizedFrameNode | NormalizedRectangleNode | NormalizedTextNode | NormalizedComponentNode | NormalizedInstanceNode | NormalizedVectorNode | NormalizedBooleanOperationNode | NormalizedUnhandledNode;
|
|
70
|
+
|
|
71
|
+
interface CodegenOptions {
|
|
72
|
+
shouldInferAutoLayout: boolean;
|
|
73
|
+
shouldInferVariableName: boolean;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface ElementNode {
|
|
77
|
+
__IS_JSX_ELEMENT_NODE: true;
|
|
78
|
+
tag: string;
|
|
79
|
+
props: Record<string, string | number | boolean | ElementNode | object | undefined>;
|
|
80
|
+
children: (ElementNode | string)[];
|
|
81
|
+
comment?: string;
|
|
82
|
+
source?: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
type ElementTransformer<T extends NormalizedSceneNode> = (node: T, traverse: (node: NormalizedSceneNode) => ElementNode | undefined) => ElementNode | undefined;
|
|
86
|
+
|
|
87
|
+
interface ComponentHandler<T extends NormalizedInstanceNode["componentProperties"] = NormalizedInstanceNode["componentProperties"]> {
|
|
88
|
+
key: string;
|
|
89
|
+
transform: (node: NormalizedInstanceNode & {
|
|
90
|
+
componentProperties: T;
|
|
91
|
+
}) => ElementNode;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
type PropsConverter<T extends Record<string, any> = Record<string, any>, R extends Record<string, any> = Record<string, any>> = (node: T) => R;
|
|
95
|
+
|
|
96
|
+
interface ValueResolver<TColor, TDimension, TFontDimension, TFontWeight> {
|
|
97
|
+
getFormattedValue: {
|
|
98
|
+
frameFill: (node: NormalizedHasGeometryTrait & NormalizedIsLayerTrait) => string | TColor | undefined;
|
|
99
|
+
shapeFill: (node: NormalizedHasGeometryTrait & NormalizedIsLayerTrait) => string | TColor | undefined;
|
|
100
|
+
textFill: (node: NormalizedHasGeometryTrait & NormalizedIsLayerTrait) => string | TColor | undefined;
|
|
101
|
+
stroke: (node: NormalizedHasGeometryTrait & NormalizedIsLayerTrait) => string | TColor | undefined;
|
|
102
|
+
width: (node: NormalizedHasLayoutTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
103
|
+
height: (node: NormalizedHasLayoutTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
104
|
+
minWidth: (node: NormalizedHasLayoutTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
105
|
+
minHeight: (node: NormalizedHasLayoutTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
106
|
+
maxWidth: (node: NormalizedHasLayoutTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
107
|
+
maxHeight: (node: NormalizedHasLayoutTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
108
|
+
paddingLeft: (node: NormalizedHasFramePropertiesTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
109
|
+
paddingRight: (node: NormalizedHasFramePropertiesTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
110
|
+
paddingTop: (node: NormalizedHasFramePropertiesTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
111
|
+
paddingBottom: (node: NormalizedHasFramePropertiesTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
112
|
+
itemSpacing: (node: NormalizedHasFramePropertiesTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
113
|
+
topLeftRadius: (node: NormalizedCornerTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
114
|
+
topRightRadius: (node: NormalizedCornerTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
115
|
+
bottomLeftRadius: (node: NormalizedCornerTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
116
|
+
bottomRightRadius: (node: NormalizedCornerTrait & NormalizedIsLayerTrait) => string | TDimension | undefined;
|
|
117
|
+
fontSize: (node: NormalizedTypePropertiesTrait & NormalizedIsLayerTrait) => string | TFontDimension | undefined;
|
|
118
|
+
fontWeight: (node: NormalizedTypePropertiesTrait & NormalizedIsLayerTrait) => string | TFontWeight | undefined;
|
|
119
|
+
lineHeight: (node: NormalizedTypePropertiesTrait & NormalizedIsLayerTrait) => string | TFontDimension | undefined;
|
|
120
|
+
};
|
|
121
|
+
getTextStyleValue: (node: NormalizedTypePropertiesTrait & NormalizedIsLayerTrait) => string | undefined;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
type ReactValueResolver = ValueResolver<string, string, string, number>;
|
|
125
|
+
|
|
126
|
+
interface PropsConverters {
|
|
127
|
+
containerLayout: PropsConverter<ContainerLayoutTrait, ContainerLayoutProps>;
|
|
128
|
+
selfLayout: PropsConverter<SelfLayoutTrait, SelfLayoutProps>;
|
|
129
|
+
iconSelfLayout: PropsConverter<SelfLayoutTrait, IconSelfLayoutProps>;
|
|
130
|
+
radius: PropsConverter<RadiusTrait, RadiusProps>;
|
|
131
|
+
frameFill: PropsConverter<FillTrait, FrameFillProps>;
|
|
132
|
+
shapeFill: PropsConverter<FillTrait, ShapeFillProps>;
|
|
133
|
+
textFill: PropsConverter<FillTrait, TextFillProps>;
|
|
134
|
+
vectorChildrenFill: PropsConverter<ContainerLayoutTrait, VectorChildrenFillProps>;
|
|
135
|
+
stroke: PropsConverter<StrokeTrait, StrokeProps>;
|
|
136
|
+
typeStyle: PropsConverter<TypeStyleTrait, TypeStyleProps>;
|
|
137
|
+
}
|
|
138
|
+
type ContainerLayoutTrait = NormalizedHasFramePropertiesTrait & NormalizedHasChildrenTrait & NormalizedHasLayoutTrait & NormalizedIsLayerTrait;
|
|
139
|
+
type SelfLayoutTrait = NormalizedIsLayerTrait & NormalizedHasLayoutTrait;
|
|
140
|
+
type RadiusTrait = NormalizedCornerTrait & NormalizedIsLayerTrait;
|
|
141
|
+
type FillTrait = NormalizedIsLayerTrait & NormalizedHasGeometryTrait;
|
|
142
|
+
type StrokeTrait = NormalizedIsLayerTrait & NormalizedHasGeometryTrait;
|
|
143
|
+
type TypeStyleTrait = NormalizedTypePropertiesTrait & NormalizedIsLayerTrait;
|
|
144
|
+
interface ContainerLayoutProps {
|
|
145
|
+
direction?: "row" | "column";
|
|
146
|
+
justify?: "flex-start" | "center" | "flex-end" | "space-between";
|
|
147
|
+
align?: "stretch" | "flex-start" | "center" | "flex-end" | "baseline";
|
|
148
|
+
wrap?: "wrap" | "nowrap" | true;
|
|
149
|
+
gap?: string | 0;
|
|
150
|
+
pb?: string | 0;
|
|
151
|
+
pl?: string | 0;
|
|
152
|
+
pr?: string | 0;
|
|
153
|
+
pt?: string | 0;
|
|
154
|
+
px?: string | 0;
|
|
155
|
+
py?: string | 0;
|
|
156
|
+
p?: string | 0;
|
|
157
|
+
}
|
|
158
|
+
declare function createContainerLayoutPropsConverter(valueResolver: ReactValueResolver): PropsConverter<ContainerLayoutTrait, ContainerLayoutProps>;
|
|
159
|
+
interface SelfLayoutProps {
|
|
160
|
+
grow?: 0 | 1 | true;
|
|
161
|
+
alignSelf?: "stretch";
|
|
162
|
+
width?: string | number;
|
|
163
|
+
height?: string | number;
|
|
164
|
+
minWidth?: string | number;
|
|
165
|
+
minHeight?: string | number;
|
|
166
|
+
maxWidth?: string | number;
|
|
167
|
+
maxHeight?: string | number;
|
|
168
|
+
}
|
|
169
|
+
declare function createSelfLayoutPropsConverter(valueResolver: ReactValueResolver): PropsConverter<SelfLayoutTrait, SelfLayoutProps>;
|
|
170
|
+
interface IconSelfLayoutProps {
|
|
171
|
+
size?: string | number;
|
|
172
|
+
}
|
|
173
|
+
declare function createIconSelfLayoutPropsConverter(valueResolver: ReactValueResolver): PropsConverter<SelfLayoutTrait, IconSelfLayoutProps>;
|
|
174
|
+
interface RadiusProps {
|
|
175
|
+
borderRadius?: string | 0;
|
|
176
|
+
borderTopLeftRadius?: string | 0;
|
|
177
|
+
borderTopRightRadius?: string | 0;
|
|
178
|
+
borderBottomLeftRadius?: string | 0;
|
|
179
|
+
borderBottomRightRadius?: string | 0;
|
|
180
|
+
}
|
|
181
|
+
declare function createRadiusPropsConverter(valueResolver: ReactValueResolver): PropsConverter<RadiusTrait, RadiusProps>;
|
|
182
|
+
interface TypeStyleProps {
|
|
183
|
+
textStyle?: string;
|
|
184
|
+
fontSize?: string;
|
|
185
|
+
fontWeight?: string | number;
|
|
186
|
+
lineHeight?: string;
|
|
187
|
+
maxLines?: number;
|
|
188
|
+
}
|
|
189
|
+
declare function createTypeStylePropsConverter({ valueResolver, }: {
|
|
190
|
+
valueResolver: ReactValueResolver;
|
|
191
|
+
}): PropsConverter<TypeStyleTrait, TypeStyleProps>;
|
|
192
|
+
interface FrameFillProps {
|
|
193
|
+
bg?: string;
|
|
194
|
+
}
|
|
195
|
+
declare function createFrameFillPropsConverter(valueResolver: ReactValueResolver): PropsConverter<FillTrait, FrameFillProps>;
|
|
196
|
+
interface ShapeFillProps {
|
|
197
|
+
color?: string;
|
|
198
|
+
}
|
|
199
|
+
declare function createShapeFillPropsConverter(valueResolver: ReactValueResolver): PropsConverter<FillTrait, ShapeFillProps>;
|
|
200
|
+
interface TextFillProps {
|
|
201
|
+
color?: string;
|
|
202
|
+
}
|
|
203
|
+
declare function createTextFillPropsConverter(valueResolver: ReactValueResolver): PropsConverter<FillTrait, TextFillProps>;
|
|
204
|
+
interface VectorChildrenFillProps {
|
|
205
|
+
color?: string;
|
|
206
|
+
}
|
|
207
|
+
declare function createVectorChildrenFillPropsConverter(valueResolver: ReactValueResolver): PropsConverter<ContainerLayoutTrait, VectorChildrenFillProps>;
|
|
208
|
+
interface StrokeProps {
|
|
209
|
+
borderWidth?: number;
|
|
210
|
+
borderColor?: string;
|
|
211
|
+
}
|
|
212
|
+
declare function createStrokePropsConverter(valueResolver: ReactValueResolver): PropsConverter<StrokeTrait, StrokeProps>;
|
|
213
|
+
|
|
214
|
+
interface RectangleTransformerDeps {
|
|
215
|
+
propsConverters: PropsConverters;
|
|
216
|
+
}
|
|
217
|
+
declare function createRectangleTransformer({ propsConverters, }: RectangleTransformerDeps): ElementTransformer<NormalizedRectangleNode>;
|
|
218
|
+
declare function createVectorTransformer(): ElementTransformer<NormalizedVectorNode>;
|
|
219
|
+
declare function createBooleanOperationTransformer(): ElementTransformer<NormalizedBooleanOperationNode>;
|
|
220
|
+
|
|
221
|
+
interface FrameTransformerDeps {
|
|
222
|
+
propsConverters: PropsConverters;
|
|
223
|
+
}
|
|
224
|
+
declare function createFrameTransformer({ propsConverters, }: FrameTransformerDeps): ElementTransformer<NormalizedFrameNode | NormalizedInstanceNode | NormalizedComponentNode>;
|
|
225
|
+
|
|
226
|
+
interface IconHandler {
|
|
227
|
+
isIconInstance: (node: {
|
|
228
|
+
componentKey: string;
|
|
229
|
+
}) => boolean;
|
|
230
|
+
transform: (node: {
|
|
231
|
+
componentKey: string;
|
|
232
|
+
}) => ElementNode;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
interface InstanceTransformerDeps {
|
|
236
|
+
iconHandler?: IconHandler;
|
|
237
|
+
propsConverters: PropsConverters;
|
|
238
|
+
componentHandlers: Record<string, ComponentHandler>;
|
|
239
|
+
frameTransformer: ElementTransformer<NormalizedInstanceNode>;
|
|
240
|
+
}
|
|
241
|
+
declare function createInstanceTransformer({ iconHandler, propsConverters, componentHandlers, frameTransformer, }: InstanceTransformerDeps): ElementTransformer<NormalizedInstanceNode>;
|
|
242
|
+
|
|
243
|
+
interface TextTransformerDeps {
|
|
244
|
+
propsConverters: PropsConverters;
|
|
245
|
+
}
|
|
246
|
+
declare function createTextTransformer({ propsConverters, }: TextTransformerDeps): ElementTransformer<NormalizedTextNode>;
|
|
247
|
+
|
|
248
|
+
interface ComponentHandlerDeps {
|
|
249
|
+
iconHandler: IconHandler;
|
|
250
|
+
valueResolver: ReactValueResolver;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
type UnboundComponentHandler<T extends NormalizedInstanceNode["componentProperties"]> = (deps: ComponentHandlerDeps) => ComponentHandler<T>;
|
|
254
|
+
declare function bindComponentHandler<T extends NormalizedInstanceNode["componentProperties"]>(unbound: UnboundComponentHandler<T>, deps: ComponentHandlerDeps): ComponentHandler<T>;
|
|
255
|
+
declare const unboundSeedComponentHandlers: Array<UnboundComponentHandler<any>>;
|
|
256
|
+
|
|
257
|
+
interface CreatePipelineConfig {
|
|
258
|
+
extend?: {
|
|
259
|
+
componentHandlers?: Array<UnboundComponentHandler<any>>;
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
declare function createPipeline(options?: CreatePipelineConfig): {
|
|
263
|
+
generateJsxTree: (node: NormalizedSceneNode, options: CodegenOptions) => any;
|
|
264
|
+
generateCode: (node: NormalizedSceneNode, options: CodegenOptions & {
|
|
265
|
+
shouldPrintSource: boolean;
|
|
266
|
+
}) => string | undefined;
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
export { bindComponentHandler, createBooleanOperationTransformer, createContainerLayoutPropsConverter, createFrameFillPropsConverter, createFrameTransformer, createIconSelfLayoutPropsConverter, createInstanceTransformer, createPipeline, createRadiusPropsConverter, createRectangleTransformer, createSelfLayoutPropsConverter, createShapeFillPropsConverter, createStrokePropsConverter, createTextFillPropsConverter, createTextTransformer, createTypeStylePropsConverter, createVectorChildrenFillPropsConverter, createVectorTransformer, unboundSeedComponentHandlers };
|
|
270
|
+
export type { ComponentHandlerDeps, ContainerLayoutProps, ContainerLayoutTrait, CreatePipelineConfig, FillTrait, FrameFillProps, FrameTransformerDeps, IconSelfLayoutProps, InstanceTransformerDeps, PropsConverters, RadiusProps, RadiusTrait, RectangleTransformerDeps, SelfLayoutProps, SelfLayoutTrait, ShapeFillProps, StrokeProps, StrokeTrait, TextFillProps, TextTransformerDeps, TypeStyleProps, TypeStyleTrait, UnboundComponentHandler, VectorChildrenFillProps };
|