@seed-design/figma 0.0.22 → 0.0.23

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.
@@ -1,6 +1,5 @@
1
1
  var tsPattern = require('ts-pattern');
2
2
  require('change-case');
3
- var async_hooks = require('async_hooks');
4
3
  var index_cjs = require('./targets/react/index.cjs');
5
4
 
6
5
  function _interopNamespace(e) {
@@ -117,15 +116,6 @@ function stringifyElement(element, options = {}) {
117
116
  return recursive(element, 0);
118
117
  }
119
118
 
120
- const codegenOptionsContext = new async_hooks.AsyncLocalStorage();
121
- function useCodegenOptions() {
122
- const options = codegenOptionsContext.getStore();
123
- if (!options) {
124
- throw new Error("Trying to get codegen options outside of codegen context. Did you forget to call `codegenOptionsContext.run`?");
125
- }
126
- return options;
127
- }
128
-
129
119
  // --- Helper Functions ---
130
120
  function getCollectiveBoundingBox(nodes) {
131
121
  if (nodes.length === 0) {
@@ -433,12 +423,11 @@ function applyInferredLayout(parentNode, result) {
433
423
  };
434
424
  }
435
425
 
436
- function createCodeGenerator({ frameTransformer, textTransformer, rectangleTransformer, instanceTransformer, vectorTransformer, booleanOperationTransformer }) {
426
+ function createCodeGenerator({ frameTransformer, textTransformer, rectangleTransformer, instanceTransformer, vectorTransformer, booleanOperationTransformer, shouldInferAutoLayout }) {
437
427
  function traverse(node) {
438
428
  if ("visible" in node && !node.visible) {
439
429
  return;
440
430
  }
441
- const { shouldInferAutoLayout } = useCodegenOptions();
442
431
  const result = tsPattern.match(node).with({
443
432
  type: "FRAME"
444
433
  }, (node)=>shouldInferAutoLayout ? frameTransformer(applyInferredLayout(node, inferLayout(node)), traverse) : frameTransformer(node, traverse)).with({
@@ -462,11 +451,11 @@ function createCodeGenerator({ frameTransformer, textTransformer, rectangleTrans
462
451
  }
463
452
  return;
464
453
  }
465
- function generateJsxTree(node, options) {
466
- return codegenOptionsContext.run(options, ()=>traverse(node));
454
+ function generateJsxTree(node) {
455
+ return traverse(node);
467
456
  }
468
457
  function generateCode(node, options) {
469
- const jsxTree = generateJsxTree(node, options);
458
+ const jsxTree = generateJsxTree(node);
470
459
  return jsxTree ? stringifyElement(jsxTree, {
471
460
  printSource: options.shouldPrintSource
472
461
  }) : undefined;
@@ -538,7 +527,7 @@ function getFirstStrokeVariable(node) {
538
527
  return node.boundVariables?.strokes?.[0];
539
528
  }
540
529
 
541
- function createValueResolver({ variableService, variableNameFormatter, styleService, styleNameFormatter, rawValueFormatters }) {
530
+ function createValueResolver({ variableService, variableNameFormatter, styleService, styleNameFormatter, rawValueFormatters, shouldInferVariableName }) {
542
531
  function getVariableName(key) {
543
532
  const slug = variableService.getSlug(key);
544
533
  if (!slug) {
@@ -549,7 +538,6 @@ function createValueResolver({ variableService, variableNameFormatter, styleServ
549
538
  });
550
539
  }
551
540
  function inferVariableName(value, scope) {
552
- const { shouldInferVariableName } = useCodegenOptions();
553
541
  if (!shouldInferVariableName) {
554
542
  return undefined;
555
543
  }
@@ -651,189 +639,6 @@ function createValueResolver({ variableService, variableNameFormatter, styleServ
651
639
  };
652
640
  }
653
641
 
654
- function createFrameTransformer({ propsConverters }) {
655
- return defineElementTransformer((node, traverse)=>{
656
- const children = node.children;
657
- const props = {
658
- ...propsConverters.radius(node),
659
- ...propsConverters.containerLayout(node),
660
- ...propsConverters.selfLayout(node),
661
- ...propsConverters.frameFill(node),
662
- ...propsConverters.stroke(node)
663
- };
664
- return createElement("Frame", props, children.map((child)=>traverse(child)));
665
- });
666
- }
667
-
668
- function createInstanceTransformer({ frameTransformer }) {
669
- const transform = defineElementTransformer((node, traverse)=>{
670
- return frameTransformer(node, traverse);
671
- });
672
- return transform;
673
- }
674
-
675
- function createContainerLayoutPropsConverter(valueResolver) {
676
- return createPropsConverter({
677
- handlers: {
678
- layoutMode: ({ layoutMode })=>layoutMode ?? "NONE",
679
- primaryAxisAlignItems: ({ primaryAxisAlignItems })=>primaryAxisAlignItems,
680
- counterAxisAlignItems: ({ counterAxisAlignItems })=>counterAxisAlignItems,
681
- layoutWrap: ({ layoutWrap })=>layoutWrap,
682
- itemSpacing: (node)=>valueResolver.getFormattedValue.itemSpacing(node),
683
- paddingTop: (node)=>valueResolver.getFormattedValue.paddingTop(node),
684
- paddingBottom: (node)=>valueResolver.getFormattedValue.paddingBottom(node),
685
- paddingLeft: (node)=>valueResolver.getFormattedValue.paddingLeft(node),
686
- paddingRight: (node)=>valueResolver.getFormattedValue.paddingRight(node)
687
- },
688
- shorthands: {
689
- horizontalPadding: [
690
- "paddingLeft",
691
- "paddingRight"
692
- ],
693
- verticalPadding: [
694
- "paddingTop",
695
- "paddingBottom"
696
- ]
697
- },
698
- defaults: {}
699
- });
700
- }
701
- function createSelfLayoutPropsConverter(valueResolver) {
702
- return createPropsConverter({
703
- handlers: {
704
- layoutGrow: ({ layoutGrow })=>layoutGrow,
705
- layoutAlign: ({ layoutAlign })=>layoutAlign,
706
- layoutSizingVertical: ({ layoutSizingVertical })=>layoutSizingVertical,
707
- layoutSizingHorizontal: ({ layoutSizingHorizontal })=>layoutSizingHorizontal,
708
- width: (node)=>valueResolver.getFormattedValue.width(node),
709
- height: (node)=>valueResolver.getFormattedValue.height(node),
710
- minWidth: (node)=>valueResolver.getFormattedValue.minWidth(node),
711
- minHeight: (node)=>valueResolver.getFormattedValue.minHeight(node),
712
- maxWidth: (node)=>valueResolver.getFormattedValue.maxWidth(node),
713
- maxHeight: (node)=>valueResolver.getFormattedValue.maxHeight(node)
714
- },
715
- defaults: {}
716
- });
717
- }
718
- function createRadiusPropsConverter(valueResolver) {
719
- return createPropsConverter({
720
- handlers: {
721
- topLeftRadius: (node)=>valueResolver.getFormattedValue.topLeftRadius(node),
722
- topRightRadius: (node)=>valueResolver.getFormattedValue.topRightRadius(node),
723
- bottomLeftRadius: (node)=>valueResolver.getFormattedValue.bottomLeftRadius(node),
724
- bottomRightRadius: (node)=>valueResolver.getFormattedValue.bottomRightRadius(node)
725
- },
726
- shorthands: {
727
- cornerRadius: [
728
- "topLeftRadius",
729
- "topRightRadius",
730
- "bottomLeftRadius",
731
- "bottomRightRadius"
732
- ]
733
- },
734
- defaults: {
735
- cornerRadius: 0,
736
- topLeftRadius: 0,
737
- topRightRadius: 0,
738
- bottomLeftRadius: 0,
739
- bottomRightRadius: 0
740
- }
741
- });
742
- }
743
- function createFrameFillPropsConverter(valueResolver) {
744
- return definePropsConverter((node)=>{
745
- const fill = valueResolver.getFormattedValue.frameFill(node);
746
- return {
747
- fill
748
- };
749
- });
750
- }
751
- function createShapeFillPropsConverter(valueResolver) {
752
- return definePropsConverter((node)=>{
753
- const fill = valueResolver.getFormattedValue.shapeFill(node);
754
- return {
755
- fill
756
- };
757
- });
758
- }
759
- function createTextFillPropsConverter(valueResolver) {
760
- return definePropsConverter((node)=>{
761
- const fill = valueResolver.getFormattedValue.textFill(node);
762
- return {
763
- fill
764
- };
765
- });
766
- }
767
- function createStrokePropsConverter(valueResolver) {
768
- return definePropsConverter((node)=>{
769
- const stroke = valueResolver.getFormattedValue.stroke(node);
770
- const strokeWeight = node.strokeWeight;
771
- return {
772
- stroke,
773
- strokeWeight
774
- };
775
- });
776
- }
777
- function createTypeStylePropsConverter(valueResolver) {
778
- return definePropsConverter((node)=>{
779
- const styleName = valueResolver.getTextStyleValue(node);
780
- const maxLines = node.style.textTruncation === "ENDING" ? node.style.maxLines ?? undefined : undefined;
781
- if (styleName) {
782
- return {
783
- textStyle: styleName,
784
- maxLines
785
- };
786
- }
787
- return {
788
- fontSize: valueResolver.getFormattedValue.fontSize(node),
789
- fontWeight: valueResolver.getFormattedValue.fontWeight(node),
790
- lineHeight: valueResolver.getFormattedValue.lineHeight(node),
791
- maxLines
792
- };
793
- });
794
- }
795
-
796
- function createRectangleTransformer({ propsConverters }) {
797
- return defineElementTransformer((node)=>{
798
- return createElement("Rectangle", {
799
- ...propsConverters.selfLayout(node)
800
- });
801
- });
802
- }
803
- function createVectorTransformer({ propsConverters }) {
804
- return defineElementTransformer((node)=>{
805
- return createElement("Vector", {
806
- ...propsConverters.selfLayout(node),
807
- ...propsConverters.radius(node),
808
- ...propsConverters.stroke(node),
809
- ...propsConverters.shapeFill(node)
810
- }, [], "Vector Node Placeholder");
811
- });
812
- }
813
- function createBooleanOperationTransformer({ propsConverters }) {
814
- return defineElementTransformer((node, traverse)=>{
815
- return createElement("BooleanOperation", {
816
- ...propsConverters.selfLayout(node),
817
- ...propsConverters.radius(node),
818
- ...propsConverters.stroke(node),
819
- ...propsConverters.shapeFill(node)
820
- }, node.children.map(traverse));
821
- });
822
- }
823
-
824
- function createTextTransformer({ propsConverters }) {
825
- return defineElementTransformer((node)=>{
826
- const hasMultipleFills = node.fills.length > 1;
827
- const fillProps = propsConverters.textFill(node);
828
- const typeStyleProps = propsConverters.typeStyle(node);
829
- const props = compactObject({
830
- ...typeStyleProps,
831
- ...fillProps
832
- });
833
- return createElement("Text", props, node.characters, hasMultipleFills ? "Multiple fills in Text node encountered, only the first fill is used." : "");
834
- });
835
- }
836
-
837
642
  const FIGMA_TEXT_STYLES = [
838
643
  {
839
644
  styleType: "TEXT",
@@ -7918,6 +7723,189 @@ const variableService = createVariableService({
7918
7723
  }
7919
7724
  });
7920
7725
 
7726
+ function createFrameTransformer({ propsConverters }) {
7727
+ return defineElementTransformer((node, traverse)=>{
7728
+ const children = node.children;
7729
+ const props = {
7730
+ ...propsConverters.radius(node),
7731
+ ...propsConverters.containerLayout(node),
7732
+ ...propsConverters.selfLayout(node),
7733
+ ...propsConverters.frameFill(node),
7734
+ ...propsConverters.stroke(node)
7735
+ };
7736
+ return createElement("Frame", props, children.map((child)=>traverse(child)));
7737
+ });
7738
+ }
7739
+
7740
+ function createInstanceTransformer({ frameTransformer }) {
7741
+ const transform = defineElementTransformer((node, traverse)=>{
7742
+ return frameTransformer(node, traverse);
7743
+ });
7744
+ return transform;
7745
+ }
7746
+
7747
+ function createContainerLayoutPropsConverter(valueResolver) {
7748
+ return createPropsConverter({
7749
+ handlers: {
7750
+ layoutMode: ({ layoutMode })=>layoutMode ?? "NONE",
7751
+ primaryAxisAlignItems: ({ primaryAxisAlignItems })=>primaryAxisAlignItems,
7752
+ counterAxisAlignItems: ({ counterAxisAlignItems })=>counterAxisAlignItems,
7753
+ layoutWrap: ({ layoutWrap })=>layoutWrap,
7754
+ itemSpacing: (node)=>valueResolver.getFormattedValue.itemSpacing(node),
7755
+ paddingTop: (node)=>valueResolver.getFormattedValue.paddingTop(node),
7756
+ paddingBottom: (node)=>valueResolver.getFormattedValue.paddingBottom(node),
7757
+ paddingLeft: (node)=>valueResolver.getFormattedValue.paddingLeft(node),
7758
+ paddingRight: (node)=>valueResolver.getFormattedValue.paddingRight(node)
7759
+ },
7760
+ shorthands: {
7761
+ horizontalPadding: [
7762
+ "paddingLeft",
7763
+ "paddingRight"
7764
+ ],
7765
+ verticalPadding: [
7766
+ "paddingTop",
7767
+ "paddingBottom"
7768
+ ]
7769
+ },
7770
+ defaults: {}
7771
+ });
7772
+ }
7773
+ function createSelfLayoutPropsConverter(valueResolver) {
7774
+ return createPropsConverter({
7775
+ handlers: {
7776
+ layoutGrow: ({ layoutGrow })=>layoutGrow,
7777
+ layoutAlign: ({ layoutAlign })=>layoutAlign,
7778
+ layoutSizingVertical: ({ layoutSizingVertical })=>layoutSizingVertical,
7779
+ layoutSizingHorizontal: ({ layoutSizingHorizontal })=>layoutSizingHorizontal,
7780
+ width: (node)=>valueResolver.getFormattedValue.width(node),
7781
+ height: (node)=>valueResolver.getFormattedValue.height(node),
7782
+ minWidth: (node)=>valueResolver.getFormattedValue.minWidth(node),
7783
+ minHeight: (node)=>valueResolver.getFormattedValue.minHeight(node),
7784
+ maxWidth: (node)=>valueResolver.getFormattedValue.maxWidth(node),
7785
+ maxHeight: (node)=>valueResolver.getFormattedValue.maxHeight(node)
7786
+ },
7787
+ defaults: {}
7788
+ });
7789
+ }
7790
+ function createRadiusPropsConverter(valueResolver) {
7791
+ return createPropsConverter({
7792
+ handlers: {
7793
+ topLeftRadius: (node)=>valueResolver.getFormattedValue.topLeftRadius(node),
7794
+ topRightRadius: (node)=>valueResolver.getFormattedValue.topRightRadius(node),
7795
+ bottomLeftRadius: (node)=>valueResolver.getFormattedValue.bottomLeftRadius(node),
7796
+ bottomRightRadius: (node)=>valueResolver.getFormattedValue.bottomRightRadius(node)
7797
+ },
7798
+ shorthands: {
7799
+ cornerRadius: [
7800
+ "topLeftRadius",
7801
+ "topRightRadius",
7802
+ "bottomLeftRadius",
7803
+ "bottomRightRadius"
7804
+ ]
7805
+ },
7806
+ defaults: {
7807
+ cornerRadius: 0,
7808
+ topLeftRadius: 0,
7809
+ topRightRadius: 0,
7810
+ bottomLeftRadius: 0,
7811
+ bottomRightRadius: 0
7812
+ }
7813
+ });
7814
+ }
7815
+ function createFrameFillPropsConverter(valueResolver) {
7816
+ return definePropsConverter((node)=>{
7817
+ const fill = valueResolver.getFormattedValue.frameFill(node);
7818
+ return {
7819
+ fill
7820
+ };
7821
+ });
7822
+ }
7823
+ function createShapeFillPropsConverter(valueResolver) {
7824
+ return definePropsConverter((node)=>{
7825
+ const fill = valueResolver.getFormattedValue.shapeFill(node);
7826
+ return {
7827
+ fill
7828
+ };
7829
+ });
7830
+ }
7831
+ function createTextFillPropsConverter(valueResolver) {
7832
+ return definePropsConverter((node)=>{
7833
+ const fill = valueResolver.getFormattedValue.textFill(node);
7834
+ return {
7835
+ fill
7836
+ };
7837
+ });
7838
+ }
7839
+ function createStrokePropsConverter(valueResolver) {
7840
+ return definePropsConverter((node)=>{
7841
+ const stroke = valueResolver.getFormattedValue.stroke(node);
7842
+ const strokeWeight = node.strokeWeight;
7843
+ return {
7844
+ stroke,
7845
+ strokeWeight
7846
+ };
7847
+ });
7848
+ }
7849
+ function createTypeStylePropsConverter(valueResolver) {
7850
+ return definePropsConverter((node)=>{
7851
+ const styleName = valueResolver.getTextStyleValue(node);
7852
+ const maxLines = node.style.textTruncation === "ENDING" ? node.style.maxLines ?? undefined : undefined;
7853
+ if (styleName) {
7854
+ return {
7855
+ textStyle: styleName,
7856
+ maxLines
7857
+ };
7858
+ }
7859
+ return {
7860
+ fontSize: valueResolver.getFormattedValue.fontSize(node),
7861
+ fontWeight: valueResolver.getFormattedValue.fontWeight(node),
7862
+ lineHeight: valueResolver.getFormattedValue.lineHeight(node),
7863
+ maxLines
7864
+ };
7865
+ });
7866
+ }
7867
+
7868
+ function createRectangleTransformer({ propsConverters }) {
7869
+ return defineElementTransformer((node)=>{
7870
+ return createElement("Rectangle", {
7871
+ ...propsConverters.selfLayout(node)
7872
+ });
7873
+ });
7874
+ }
7875
+ function createVectorTransformer({ propsConverters }) {
7876
+ return defineElementTransformer((node)=>{
7877
+ return createElement("Vector", {
7878
+ ...propsConverters.selfLayout(node),
7879
+ ...propsConverters.radius(node),
7880
+ ...propsConverters.stroke(node),
7881
+ ...propsConverters.shapeFill(node)
7882
+ }, [], "Vector Node Placeholder");
7883
+ });
7884
+ }
7885
+ function createBooleanOperationTransformer({ propsConverters }) {
7886
+ return defineElementTransformer((node, traverse)=>{
7887
+ return createElement("BooleanOperation", {
7888
+ ...propsConverters.selfLayout(node),
7889
+ ...propsConverters.radius(node),
7890
+ ...propsConverters.stroke(node),
7891
+ ...propsConverters.shapeFill(node)
7892
+ }, node.children.map(traverse));
7893
+ });
7894
+ }
7895
+
7896
+ function createTextTransformer({ propsConverters }) {
7897
+ return defineElementTransformer((node)=>{
7898
+ const hasMultipleFills = node.fills.length > 1;
7899
+ const fillProps = propsConverters.textFill(node);
7900
+ const typeStyleProps = propsConverters.typeStyle(node);
7901
+ const props = compactObject({
7902
+ ...typeStyleProps,
7903
+ ...fillProps
7904
+ });
7905
+ return createElement("Text", props, node.characters, hasMultipleFills ? "Multiple fills in Text node encountered, only the first fill is used." : "");
7906
+ });
7907
+ }
7908
+
7921
7909
  function toCssRgba(color) {
7922
7910
  if (color.a === 1) {
7923
7911
  return `rgb(${Math.round(color.r * 255)}, ${Math.round(color.g * 255)}, ${Math.round(color.b * 255)})`;
@@ -7925,20 +7913,25 @@ function toCssRgba(color) {
7925
7913
  return `rgba(${Math.round(color.r * 255)}, ${Math.round(color.g * 255)}, ${Math.round(color.b * 255)}, ${color.a})`;
7926
7914
  }
7927
7915
 
7928
- const valueResolver = createValueResolver({
7929
- variableService,
7930
- variableNameFormatter: ({ slug })=>slug.filter((s)=>s !== "dimension").map((s)=>s.replaceAll(",", "_")).join("/"),
7931
- styleService,
7932
- styleNameFormatter: ({ slug })=>slug[slug.length - 1],
7933
- rawValueFormatters: {
7934
- color: (value)=>toCssRgba(value),
7935
- dimension: (value)=>value,
7936
- fontDimension: (value)=>value,
7937
- fontWeight: (value)=>value
7938
- }
7939
- });
7916
+ const defaultVariableNameFormatter = ({ slug })=>slug.filter((s)=>s !== "dimension").map((s)=>s.replaceAll(",", "_")).join("/");
7917
+ const defaultStyleNameFormatter = ({ slug })=>slug[slug.length - 1];
7918
+ const defaultRawValueFormatters = {
7919
+ color: (value)=>toCssRgba(value),
7920
+ dimension: (value)=>value,
7921
+ fontDimension: (value)=>value,
7922
+ fontWeight: (value)=>value
7923
+ };
7940
7924
 
7941
- function createPipeline() {
7925
+ function createPipeline(options = {}) {
7926
+ const { shouldInferAutoLayout = true, shouldInferVariableName = true } = options;
7927
+ const valueResolver = createValueResolver({
7928
+ variableService,
7929
+ variableNameFormatter: defaultVariableNameFormatter,
7930
+ styleService,
7931
+ styleNameFormatter: defaultStyleNameFormatter,
7932
+ rawValueFormatters: defaultRawValueFormatters,
7933
+ shouldInferVariableName
7934
+ });
7942
7935
  const containerLayoutPropsConverter = createContainerLayoutPropsConverter(valueResolver);
7943
7936
  const selfLayoutPropsConverter = createSelfLayoutPropsConverter(valueResolver);
7944
7937
  const frameFillPropsConverter = createFrameFillPropsConverter(valueResolver);
@@ -7981,7 +7974,8 @@ function createPipeline() {
7981
7974
  rectangleTransformer,
7982
7975
  instanceTransformer,
7983
7976
  vectorTransformer,
7984
- booleanOperationTransformer
7977
+ booleanOperationTransformer,
7978
+ shouldInferAutoLayout
7985
7979
  });
7986
7980
  return codegenTransformer;
7987
7981
  }
@@ -8016,4 +8010,3 @@ exports.defineElementTransformer = defineElementTransformer;
8016
8010
  exports.definePropsConverter = definePropsConverter;
8017
8011
  exports.figma = index;
8018
8012
  exports.inferLayout = inferLayout;
8019
- exports.useCodegenOptions = useCodegenOptions;
@@ -72,12 +72,6 @@ interface NormalizedUnhandledNode {
72
72
  }
73
73
  type NormalizedSceneNode = NormalizedFrameNode | NormalizedRectangleNode | NormalizedTextNode | NormalizedComponentNode | NormalizedInstanceNode | NormalizedVectorNode | NormalizedBooleanOperationNode | NormalizedUnhandledNode;
74
74
 
75
- interface CodegenOptions {
76
- shouldInferAutoLayout: boolean;
77
- shouldInferVariableName: boolean;
78
- }
79
- declare function useCodegenOptions(): CodegenOptions;
80
-
81
75
  interface ElementNode {
82
76
  __IS_JSX_ELEMENT_NODE: true;
83
77
  tag: string;
@@ -108,10 +102,11 @@ interface CodeGeneratorDeps {
108
102
  instanceTransformer: ElementTransformer<NormalizedInstanceNode>;
109
103
  vectorTransformer: ElementTransformer<NormalizedVectorNode>;
110
104
  booleanOperationTransformer: ElementTransformer<NormalizedBooleanOperationNode>;
105
+ shouldInferAutoLayout: boolean;
111
106
  }
112
- declare function createCodeGenerator({ frameTransformer, textTransformer, rectangleTransformer, instanceTransformer, vectorTransformer, booleanOperationTransformer, }: CodeGeneratorDeps): {
113
- generateJsxTree: (node: NormalizedSceneNode, options: CodegenOptions) => any;
114
- generateCode: (node: NormalizedSceneNode, options: CodegenOptions & {
107
+ declare function createCodeGenerator({ frameTransformer, textTransformer, rectangleTransformer, instanceTransformer, vectorTransformer, booleanOperationTransformer, shouldInferAutoLayout, }: CodeGeneratorDeps): {
108
+ generateJsxTree: (node: NormalizedSceneNode) => ElementNode | undefined;
109
+ generateCode: (node: NormalizedSceneNode, options: {
115
110
  shouldPrintSource: boolean;
116
111
  }) => string | undefined;
117
112
  };
@@ -218,8 +213,9 @@ interface ValueResolverDeps<TColor, TDimension, TFontDimension, TFontWeight> {
218
213
  fontDimension: (value: number) => string | TFontDimension;
219
214
  fontWeight: (value: number) => string | TFontWeight;
220
215
  };
216
+ shouldInferVariableName: boolean;
221
217
  }
222
- declare function createValueResolver<TColor, TDimension, TFontDimension, TFontWeight>({ variableService, variableNameFormatter, styleService, styleNameFormatter, rawValueFormatters, }: ValueResolverDeps<TColor, TDimension, TFontDimension, TFontWeight>): ValueResolver<TColor, TDimension, TFontDimension, TFontWeight>;
218
+ declare function createValueResolver<TColor, TDimension, TFontDimension, TFontWeight>({ variableService, variableNameFormatter, styleService, styleNameFormatter, rawValueFormatters, shouldInferVariableName, }: ValueResolverDeps<TColor, TDimension, TFontDimension, TFontWeight>): ValueResolver<TColor, TDimension, TFontDimension, TFontWeight>;
223
219
 
224
220
  interface LayoutProperties {
225
221
  layoutMode?: "NONE" | "HORIZONTAL" | "VERTICAL";
@@ -1676,9 +1672,13 @@ type AppBarRightProperties = InferComponentDefinition<{
1676
1672
  };
1677
1673
  }>;
1678
1674
 
1679
- declare function createPipeline(): {
1680
- generateJsxTree: (node: ________.NormalizedSceneNode, options: CodegenOptions) => any;
1681
- generateCode: (node: ________.NormalizedSceneNode, options: CodegenOptions & {
1675
+ interface CreatePipelineConfig {
1676
+ shouldInferAutoLayout?: boolean;
1677
+ shouldInferVariableName?: boolean;
1678
+ }
1679
+ declare function createPipeline(options?: CreatePipelineConfig): {
1680
+ generateJsxTree: (node: ________.NormalizedSceneNode) => ElementNode | undefined;
1681
+ generateCode: (node: ________.NormalizedSceneNode, options: {
1682
1682
  shouldPrintSource: boolean;
1683
1683
  }) => string | undefined;
1684
1684
  };
@@ -1787,6 +1787,7 @@ declare function createTextTransformer({ propsConverters, }: TextTransformerDeps
1787
1787
  type index_BooleanOperationTransformerDeps = BooleanOperationTransformerDeps;
1788
1788
  type index_ContainerLayoutProps = ContainerLayoutProps;
1789
1789
  type index_ContainerLayoutTrait = ContainerLayoutTrait;
1790
+ type index_CreatePipelineConfig = CreatePipelineConfig;
1790
1791
  type index_FillProps = FillProps;
1791
1792
  type index_FillTrait = FillTrait;
1792
1793
  type index_FrameTransformerDeps = FrameTransformerDeps;
@@ -1820,8 +1821,8 @@ declare const index_createTypeStylePropsConverter: typeof createTypeStylePropsCo
1820
1821
  declare const index_createVectorTransformer: typeof createVectorTransformer;
1821
1822
  declare namespace index {
1822
1823
  export { index_createBooleanOperationTransformer as createBooleanOperationTransformer, index_createContainerLayoutPropsConverter as createContainerLayoutPropsConverter, index_createFrameFillPropsConverter as createFrameFillPropsConverter, index_createFrameTransformer as createFrameTransformer, index_createInstanceTransformer as createInstanceTransformer, index_createPipeline as createPipeline, index_createRadiusPropsConverter as createRadiusPropsConverter, index_createRectangleTransformer as createRectangleTransformer, index_createSelfLayoutPropsConverter as createSelfLayoutPropsConverter, index_createShapeFillPropsConverter as createShapeFillPropsConverter, index_createStrokePropsConverter as createStrokePropsConverter, index_createTextFillPropsConverter as createTextFillPropsConverter, index_createTextTransformer as createTextTransformer, index_createTypeStylePropsConverter as createTypeStylePropsConverter, index_createVectorTransformer as createVectorTransformer };
1823
- export type { index_BooleanOperationTransformerDeps as BooleanOperationTransformerDeps, index_ContainerLayoutProps as ContainerLayoutProps, index_ContainerLayoutTrait as ContainerLayoutTrait, index_FillProps as FillProps, index_FillTrait as FillTrait, index_FrameTransformerDeps as FrameTransformerDeps, index_InstanceTransformerDeps as InstanceTransformerDeps, index_PropsConverters as PropsConverters, index_RadiusProps as RadiusProps, index_RadiusTrait as RadiusTrait, index_RectangleTransformerDeps as RectangleTransformerDeps, index_SelfLayoutProps as SelfLayoutProps, index_SelfLayoutTrait as SelfLayoutTrait, index_StrokeProps as StrokeProps, index_StrokeTrait as StrokeTrait, index_TextTransformerDeps as TextTransformerDeps, index_TypeStyleProps as TypeStyleProps, index_TypeStyleTrait as TypeStyleTrait, index_VectorTransformerDeps as VectorTransformerDeps };
1824
+ export type { index_BooleanOperationTransformerDeps as BooleanOperationTransformerDeps, index_ContainerLayoutProps as ContainerLayoutProps, index_ContainerLayoutTrait as ContainerLayoutTrait, index_CreatePipelineConfig as CreatePipelineConfig, index_FillProps as FillProps, index_FillTrait as FillTrait, index_FrameTransformerDeps as FrameTransformerDeps, index_InstanceTransformerDeps as InstanceTransformerDeps, index_PropsConverters as PropsConverters, index_RadiusProps as RadiusProps, index_RadiusTrait as RadiusTrait, index_RectangleTransformerDeps as RectangleTransformerDeps, index_SelfLayoutProps as SelfLayoutProps, index_SelfLayoutTrait as SelfLayoutTrait, index_StrokeProps as StrokeProps, index_StrokeTrait as StrokeTrait, index_TextTransformerDeps as TextTransformerDeps, index_TypeStyleProps as TypeStyleProps, index_TypeStyleTrait as TypeStyleTrait, index_VectorTransformerDeps as VectorTransformerDeps };
1824
1825
  }
1825
1826
 
1826
- export { cloneElement, createCodeGenerator, createElement, createPropsConverter, createValueResolver, defineComponentHandler, defineElementTransformer, definePropsConverter, index as figma, inferLayout, useCodegenOptions };
1827
- export type { ActionButtonProperties, ActionChipProperties, ActionSheetItemProperties, ActionSheetProperties, AppBarLeftProperties, AppBarMainProperties, AppBarProperties, AppBarRightProperties, AvatarProperties, AvatarStackProperties, BadgeProperties, CalloutProperties, CheckboxProperties, ChipTabsItemProperties, ChipTabsProperties, CodeGeneratorDeps, CodegenOptions, ComponentHandler, ComponentPropertyDefinition, ControlChipProperties, ElementNode, ElementTransformer, ErrorStateProperties, ExtendedActionSheetGroupProperties, ExtendedActionSheetItemProperties, ExtendedActionSheetProperties, ExtendedFabProperties, FabProperties, HelpBubbleProperties, IdentityPlaceholderProperties, InferComponentDefinition, InferComponentPropertyType, InlineBannerProperties, MannerTempBadgeProperties, MultilineTextFieldProperties, ProgressCircleProperties, PropsConverter, ReactionButtonProperties, SegmentedControlItemProperties, SegmentedControlProperties, SelectBoxGroupProperties, SelectBoxProperties, SkeletonProperties, SnackbarProperties, SwitchProperties, TabsFillItemProperties, TabsHugItemProperties, TabsProperties, TextButtonProperties, TextFieldProperties, ToggleButtonProperties, ValueResolver };
1827
+ export { cloneElement, createCodeGenerator, createElement, createPropsConverter, createValueResolver, defineComponentHandler, defineElementTransformer, definePropsConverter, index as figma, inferLayout };
1828
+ export type { ActionButtonProperties, ActionChipProperties, ActionSheetItemProperties, ActionSheetProperties, AppBarLeftProperties, AppBarMainProperties, AppBarProperties, AppBarRightProperties, AvatarProperties, AvatarStackProperties, BadgeProperties, CalloutProperties, CheckboxProperties, ChipTabsItemProperties, ChipTabsProperties, CodeGeneratorDeps, ComponentHandler, ComponentPropertyDefinition, ControlChipProperties, ElementNode, ElementTransformer, ErrorStateProperties, ExtendedActionSheetGroupProperties, ExtendedActionSheetItemProperties, ExtendedActionSheetProperties, ExtendedFabProperties, FabProperties, HelpBubbleProperties, IdentityPlaceholderProperties, InferComponentDefinition, InferComponentPropertyType, InlineBannerProperties, MannerTempBadgeProperties, MultilineTextFieldProperties, ProgressCircleProperties, PropsConverter, ReactionButtonProperties, SegmentedControlItemProperties, SegmentedControlProperties, SelectBoxGroupProperties, SelectBoxProperties, SkeletonProperties, SnackbarProperties, SwitchProperties, TabsFillItemProperties, TabsHugItemProperties, TabsProperties, TextButtonProperties, TextFieldProperties, ToggleButtonProperties, ValueResolver };