@figma/code-connect 0.1.2 → 0.2.1

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.
Files changed (106) hide show
  1. package/README.md +123 -25
  2. package/dist/cli.js +7 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/connect.d.ts +15 -0
  5. package/dist/commands/connect.d.ts.map +1 -1
  6. package/dist/commands/connect.js +137 -76
  7. package/dist/commands/connect.js.map +1 -1
  8. package/dist/common/__test__/project.test.d.ts +2 -0
  9. package/dist/common/__test__/project.test.d.ts.map +1 -0
  10. package/dist/common/__test__/project.test.js +14 -0
  11. package/dist/common/__test__/project.test.js.map +1 -0
  12. package/dist/common/api.d.ts +56 -2
  13. package/dist/common/api.d.ts.map +1 -1
  14. package/dist/common/external.d.ts +6 -3
  15. package/dist/common/external.d.ts.map +1 -1
  16. package/dist/common/external.js +13 -1
  17. package/dist/common/external.js.map +1 -1
  18. package/dist/common/figma_connect.d.ts +10 -8
  19. package/dist/common/figma_connect.d.ts.map +1 -1
  20. package/dist/common/intrinsics.d.ts +38 -6
  21. package/dist/common/intrinsics.d.ts.map +1 -1
  22. package/dist/common/intrinsics.js +160 -26
  23. package/dist/common/intrinsics.js.map +1 -1
  24. package/dist/common/logging.d.ts +9 -0
  25. package/dist/common/logging.d.ts.map +1 -1
  26. package/dist/common/logging.js +21 -1
  27. package/dist/common/logging.js.map +1 -1
  28. package/dist/common/updates.d.ts +4 -0
  29. package/dist/common/updates.d.ts.map +1 -0
  30. package/dist/common/updates.js +87 -0
  31. package/dist/common/updates.js.map +1 -0
  32. package/dist/connect/create.d.ts +5 -1
  33. package/dist/connect/create.d.ts.map +1 -1
  34. package/dist/connect/create.js +55 -69
  35. package/dist/connect/create.js.map +1 -1
  36. package/dist/connect/delete_docs.d.ts.map +1 -1
  37. package/dist/connect/delete_docs.js +1 -4
  38. package/dist/connect/delete_docs.js.map +1 -1
  39. package/dist/connect/figma_rest_api.d.ts +5 -0
  40. package/dist/connect/figma_rest_api.d.ts.map +1 -1
  41. package/dist/connect/figma_rest_api.js +10 -1
  42. package/dist/connect/figma_rest_api.js.map +1 -1
  43. package/dist/connect/helpers.d.ts +1 -1
  44. package/dist/connect/helpers.d.ts.map +1 -1
  45. package/dist/connect/helpers.js +6 -5
  46. package/dist/connect/helpers.js.map +1 -1
  47. package/dist/connect/parser_executable_types.d.ts +297 -0
  48. package/dist/connect/parser_executable_types.d.ts.map +1 -0
  49. package/dist/connect/parser_executable_types.js +108 -0
  50. package/dist/connect/parser_executable_types.js.map +1 -0
  51. package/dist/connect/parser_executables.d.ts +8 -0
  52. package/dist/connect/parser_executables.d.ts.map +1 -0
  53. package/dist/connect/parser_executables.js +132 -0
  54. package/dist/connect/parser_executables.js.map +1 -0
  55. package/dist/connect/project.d.ts +137 -0
  56. package/dist/connect/project.d.ts.map +1 -0
  57. package/dist/connect/project.js +411 -0
  58. package/dist/connect/project.js.map +1 -0
  59. package/dist/connect/upload.d.ts.map +1 -1
  60. package/dist/connect/upload.js +1 -4
  61. package/dist/connect/upload.js.map +1 -1
  62. package/dist/connect/validation.d.ts +6 -1
  63. package/dist/connect/validation.d.ts.map +1 -1
  64. package/dist/connect/validation.js +23 -18
  65. package/dist/connect/validation.js.map +1 -1
  66. package/dist/connect/wizard/helpers.d.ts +7 -0
  67. package/dist/connect/wizard/helpers.d.ts.map +1 -0
  68. package/dist/connect/wizard/helpers.js +55 -0
  69. package/dist/connect/wizard/helpers.js.map +1 -0
  70. package/dist/connect/wizard/run_wizard.d.ts +3 -0
  71. package/dist/connect/wizard/run_wizard.d.ts.map +1 -0
  72. package/dist/connect/wizard/run_wizard.js +480 -0
  73. package/dist/connect/wizard/run_wizard.js.map +1 -0
  74. package/dist/parser_scripts/get_file_if_exists.d.ts +2 -0
  75. package/dist/parser_scripts/get_file_if_exists.d.ts.map +1 -0
  76. package/dist/parser_scripts/get_file_if_exists.js +10 -0
  77. package/dist/parser_scripts/get_file_if_exists.js.map +1 -0
  78. package/dist/parser_scripts/get_gradlew_path.d.ts +3 -0
  79. package/dist/parser_scripts/get_gradlew_path.d.ts.map +1 -0
  80. package/dist/parser_scripts/get_gradlew_path.js +24 -0
  81. package/dist/parser_scripts/get_gradlew_path.js.map +1 -0
  82. package/dist/parser_scripts/get_swift_parser_dir.d.ts +2 -0
  83. package/dist/parser_scripts/get_swift_parser_dir.d.ts.map +1 -0
  84. package/dist/parser_scripts/get_swift_parser_dir.js +93 -0
  85. package/dist/parser_scripts/get_swift_parser_dir.js.map +1 -0
  86. package/dist/react/create.d.ts +4 -0
  87. package/dist/react/create.d.ts.map +1 -0
  88. package/dist/react/create.js +132 -0
  89. package/dist/react/create.js.map +1 -0
  90. package/dist/react/parser.d.ts +6 -15
  91. package/dist/react/parser.d.ts.map +1 -1
  92. package/dist/react/parser.js +55 -62
  93. package/dist/react/parser.js.map +1 -1
  94. package/dist/react/parser_template_helpers.d.ts +21 -0
  95. package/dist/react/parser_template_helpers.d.ts.map +1 -1
  96. package/dist/react/parser_template_helpers.js +107 -43
  97. package/dist/react/parser_template_helpers.js.map +1 -1
  98. package/dist/storybook/convert.d.ts +2 -2
  99. package/dist/storybook/convert.d.ts.map +1 -1
  100. package/dist/storybook/convert.js +6 -4
  101. package/dist/storybook/convert.js.map +1 -1
  102. package/package.json +36 -11
  103. package/dist/common/project.d.ts +0 -94
  104. package/dist/common/project.d.ts.map +0 -1
  105. package/dist/common/project.js +0 -198
  106. package/dist/common/project.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=project.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.test.d.ts","sourceRoot":"","sources":["../../../src/common/__test__/project.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const project_1 = require("../../connect/project");
4
+ describe('project functions', () => {
5
+ describe('getRemoteFileUrl', () => {
6
+ it('handles git repo urls', () => {
7
+ expect((0, project_1.getRemoteFileUrl)('/path/file.ts', 'git@github.com:myorg/myrepo.git')).toBe('https://github.com/myorg/myrepo/blob/master/path/file.ts');
8
+ });
9
+ it('handles https repo urls', () => {
10
+ expect((0, project_1.getRemoteFileUrl)('/path/file.ts', 'https://github.com/myorg/myrepo.git')).toBe('https://github.com/myorg/myrepo/blob/master/path/file.ts');
11
+ });
12
+ });
13
+ });
14
+ //# sourceMappingURL=project.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.test.js","sourceRoot":"","sources":["../../../src/common/__test__/project.test.ts"],"names":[],"mappings":";;AAAA,mDAAwD;AAExD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,CAAC,IAAA,0BAAgB,EAAC,eAAe,EAAE,iCAAiC,CAAC,CAAC,CAAC,IAAI,CAC/E,0DAA0D,CAC3D,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,IAAA,0BAAgB,EAAC,eAAe,EAAE,qCAAqC,CAAC,CAAC,CAAC,IAAI,CACnF,0DAA0D,CAC3D,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- type EnumValue = string | boolean | number | symbol | undefined | JSX.Element;
2
+ export type EnumValue = string | boolean | number | symbol | undefined | JSX.Element | Function | Object;
3
3
  export interface FigmaConnectAPI {
4
4
  /**
5
5
  * Defines a code snippet that displays in Figma when a component is selected. This function has two signatures:
@@ -111,9 +111,64 @@ export interface FigmaConnectAPI {
111
111
  * Would show the nested code example for the child instance named 'Icon'. This also supports
112
112
  * an array: `tabs: figma.children(['Tab 1', 'Tab 2'])` to map multiple nested examples.
113
113
  *
114
+ * You can pass a single wildcard '*' character to match partial names. For example:
115
+ * ```ts
116
+ * props: {
117
+ * icon: figma.children('Icon*')
118
+ * }
119
+ * ```
120
+ * Would show the nested code example for any child instance which name starts with "Icon"
121
+ *
114
122
  * @param figmaPropName The name of the property on the Figma component
115
123
  */
116
124
  children(layerNames: string | string[]): JSX.Element;
125
+ /**
126
+ * Maps nested properties from a Figma instance layer. The first argument
127
+ * should be the layer name of the nested instance. The mapping object passed
128
+ * in is in the same format as the `props` object in the `connect` function.
129
+ * For example:
130
+ * ```ts
131
+ * props: {
132
+ * nested: figma.nestedProps('Nested', {
133
+ * label: figma.string('Text'),
134
+ * icon: figma.instance('Icon'),
135
+ * }),
136
+ * }
137
+ * Which would then allow you to access the nested properties in the `example` function like so:
138
+ * ```ts
139
+ * (props) => <Button label={props.nested.label} icon={props.nested.icon} />
140
+ * ```
141
+ */
142
+ nestedProps<T>(layer: string, props: PropMapping<T>): T;
143
+ /**
144
+ * Creates a className string by joining an array of strings. The argument supports both
145
+ * string literals and nested functions like `figma.enum` and `figma.boolean` that return
146
+ * a string. For example:
147
+ * ```ts
148
+ * props: {
149
+ * className: figma.className([
150
+ * 'btn-base',
151
+ * figma.enum('Size', { Large: 'btn-large' }),
152
+ * figma.boolean('Disabled', { true: 'btn-disabled', false: '' }),
153
+ * ]),
154
+ * }
155
+ *
156
+ * @param className
157
+ */
158
+ className(className: (string | undefined)[]): string;
159
+ /**
160
+ * Maps a Figma text layer to a string value representing the text content of that layer.
161
+ * This function takes the layer name within the original component as its parameter.
162
+ * For example:
163
+ * ```ts
164
+ * props: {
165
+ * text: figma.textContent('Text Layer')
166
+ * }
167
+ * ```
168
+ *
169
+ * @param layer The name of the text layer in the Figma component
170
+ */
171
+ textContent(layer: string): string;
117
172
  }
118
173
  export type ValueOf<T> = T[keyof T];
119
174
  export type PropMapping<T> = {
@@ -166,5 +221,4 @@ export interface FigmaConnectMeta<T = {}, ExtraExampleT = never> {
166
221
  */
167
222
  links?: FigmaConnectLink[];
168
223
  }
169
- export {};
170
224
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/common/api.ts"],"names":[],"mappings":";AAAA,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,OAAO,CAAA;AAE7E,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAEvF;;;;;;;;;OASG;IACH,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAEvE;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAA;IAEvC;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,KAAK,SAAS,SAAS,EAAE,MAAM,SAAS,SAAS,EACvD,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,KAAK,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAA;IAEpD;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,CAAC,SAAS,SAAS,EACtB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IAE7B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAA;IAErC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAA;IAE5C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAA;CACrD;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAEnC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;CACzB,CAAA;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAID,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,EAAE,EAAE,aAAa,GAAG,KAAK;IAC7D;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAA;IAEnD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,CAAC,CAAA;IAET;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,aAAa,CAAA;IAEvE;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC3B"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/common/api.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
- import { FigmaConnectMeta, PropMapping, ValueOf } from './api';
1
+ import { FigmaConnectMeta, PropMapping, ValueOf, EnumValue } from './api';
2
2
  import * as React from 'react';
3
3
  declare function connectType<P = {}>(_figmaNodeUrl: string, _meta?: FigmaConnectMeta<P>): void;
4
4
  declare function connectType<P = {}>(_component: any, _figmaNodeUrl: string, _meta?: FigmaConnectMeta<P>): void;
5
5
  declare function booleanType(_figmaPropName: string): boolean;
6
- declare function enumType<V extends string | boolean | number | symbol | undefined | JSX.Element>(_figmaPropName: string, _valueMapping: PropMapping<Record<string, V>>): ValueOf<Record<string, V>>;
6
+ declare function enumType<V extends EnumValue>(_figmaPropName: string, _valueMapping: PropMapping<Record<string, V>>): ValueOf<Record<string, V>>;
7
7
  declare function stringType(_figmaPropName: string): string;
8
8
  declare function instanceType(_figmaPropName: string): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
9
9
  declare function childrenType(_layers: string | string[]): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLElement>, HTMLElement>;
10
- export { connectType as connect, booleanType as boolean, enumType as enum, stringType as string, instanceType as instance, childrenType as children, };
10
+ declare function nestedPropsType<T>(_layer: string, props: PropMapping<T>): PropMapping<T>;
11
+ declare function classNameType(_className: (string | undefined)[]): string;
12
+ declare function textContentType(_layer: string): string;
13
+ export { connectType as connect, booleanType as boolean, enumType as enum, stringType as string, instanceType as instance, childrenType as children, nestedPropsType as nestedProps, classNameType as className, textContentType as textContent, };
11
14
  //# sourceMappingURL=external.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/common/external.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,iBAAS,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AACtF,iBAAS,WAAW,CAAC,CAAC,GAAG,EAAE,EACzB,UAAU,EAAE,GAAG,EACf,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC1B,IAAI,CAAA;AAGP,iBAAS,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAA;AAWrD,iBAAS,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,OAAO,EACtF,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAE5B;AAED,iBAAS,UAAU,CAAC,cAAc,EAAE,MAAM,UAEzC;AAED,iBAAS,YAAY,CAAC,cAAc,EAAE,MAAM,kFAE3C;AAED,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,kFAE/C;AAED,OAAO,EACL,WAAW,IAAI,OAAO,EACtB,WAAW,IAAI,OAAO,EACtB,QAAQ,IAAI,IAAI,EAChB,UAAU,IAAI,MAAM,EACpB,YAAY,IAAI,QAAQ,EACxB,YAAY,IAAI,QAAQ,GACzB,CAAA"}
1
+ {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/common/external.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,iBAAS,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AACtF,iBAAS,WAAW,CAAC,CAAC,GAAG,EAAE,EACzB,UAAU,EAAE,GAAG,EACf,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC1B,IAAI,CAAA;AAGP,iBAAS,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAA;AAWrD,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,EACnC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAE5B;AAED,iBAAS,UAAU,CAAC,cAAc,EAAE,MAAM,UAEzC;AAED,iBAAS,YAAY,CAAC,cAAc,EAAE,MAAM,kFAE3C;AAED,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,kFAE/C;AAED,iBAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,kBAEhE;AAED,iBAAS,aAAa,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,UAExD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,UAEtC;AAED,OAAO,EACL,WAAW,IAAI,OAAO,EACtB,WAAW,IAAI,OAAO,EACtB,QAAQ,IAAI,IAAI,EAChB,UAAU,IAAI,MAAM,EACpB,YAAY,IAAI,QAAQ,EACxB,YAAY,IAAI,QAAQ,EACxB,eAAe,IAAI,WAAW,EAC9B,aAAa,IAAI,SAAS,EAC1B,eAAe,IAAI,WAAW,GAC/B,CAAA"}
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.children = exports.instance = exports.string = exports.enum = exports.boolean = exports.connect = void 0;
26
+ exports.textContent = exports.className = exports.nestedProps = exports.children = exports.instance = exports.string = exports.enum = exports.boolean = exports.connect = void 0;
27
27
  const React = __importStar(require("react"));
28
28
  function connectType(_component, _figmaNodeUrl, _meta) { }
29
29
  exports.connect = connectType;
@@ -50,4 +50,16 @@ function childrenType(_layers) {
50
50
  return React.createElement('div');
51
51
  }
52
52
  exports.children = childrenType;
53
+ function nestedPropsType(_layer, props) {
54
+ return props;
55
+ }
56
+ exports.nestedProps = nestedPropsType;
57
+ function classNameType(_className) {
58
+ return '';
59
+ }
60
+ exports.className = classNameType;
61
+ function textContentType(_layer) {
62
+ return '';
63
+ }
64
+ exports.textContent = textContentType;
53
65
  //# sourceMappingURL=external.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/common/external.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAA8B;AAQ9B,SAAS,WAAW,CAAC,UAAmB,EAAE,aAAsB,EAAE,KAAe,IAAS,CAAC;AAiC1E,8BAAO;AA9BxB,SAAS,WAAW,CAClB,cAAsB,EACtB,aAA2C;IAE3C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAI,cAAc,EAAE,aAAa,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAuBgB,8BAAO;AArBxB,SAAS,QAAQ,CACf,cAAsB,EACtB,aAA6C;IAE7C,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAA+B,CAAA;AACtE,CAAC;AAiBa,wBAAI;AAflB,SAAS,UAAU,CAAC,cAAsB;IACxC,OAAO,EAAE,CAAA;AACX,CAAC;AAce,4BAAM;AAZtB,SAAS,YAAY,CAAC,cAAsB;IAC1C,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC;AAWiB,gCAAQ;AAT1B,SAAS,YAAY,CAAC,OAA0B;IAC9C,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC;AAQiB,gCAAQ"}
1
+ {"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/common/external.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAA8B;AAQ9B,SAAS,WAAW,CAAC,UAAmB,EAAE,aAAsB,EAAE,KAAe,IAAS,CAAC;AA6C1E,8BAAO;AA1CxB,SAAS,WAAW,CAClB,cAAsB,EACtB,aAA2C;IAE3C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAI,cAAc,EAAE,aAAa,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAmCgB,8BAAO;AAjCxB,SAAS,QAAQ,CACf,cAAsB,EACtB,aAA6C;IAE7C,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAA+B,CAAA;AACtE,CAAC;AA6Ba,wBAAI;AA3BlB,SAAS,UAAU,CAAC,cAAsB;IACxC,OAAO,EAAE,CAAA;AACX,CAAC;AA0Be,4BAAM;AAxBtB,SAAS,YAAY,CAAC,cAAsB;IAC1C,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC;AAuBiB,gCAAQ;AArB1B,SAAS,YAAY,CAAC,OAA0B;IAC9C,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC;AAoBiB,gCAAQ;AAlB1B,SAAS,eAAe,CAAI,MAAc,EAAE,KAAqB;IAC/D,OAAO,KAAK,CAAA;AACd,CAAC;AAiBoB,sCAAW;AAfhC,SAAS,aAAa,CAAC,UAAkC;IACvD,OAAO,EAAE,CAAA;AACX,CAAC;AAckB,kCAAS;AAZ5B,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO,EAAE,CAAA;AACX,CAAC;AAWoB,sCAAW"}
@@ -1,24 +1,26 @@
1
1
  import { FigmaConnectLink } from './api';
2
2
  import { Intrinsic } from './intrinsics';
3
- export interface CodeConnectJSON {
3
+ export type BaseCodeConnectObject = {
4
4
  figmaNode: string;
5
5
  component?: string;
6
6
  variant?: Record<string, any>;
7
- source: string;
8
- sourceLocation: {
9
- line: number;
10
- };
11
7
  template: string;
12
8
  templateData: {
13
- props: Record<string, Intrinsic> | undefined;
9
+ props?: Record<string, Intrinsic>;
14
10
  imports?: string[];
15
11
  nestable?: boolean;
16
12
  };
17
- language: 'typescript';
13
+ language: string;
18
14
  label: string;
19
15
  links?: FigmaConnectLink[];
16
+ source?: string;
17
+ sourceLocation?: {
18
+ line: number;
19
+ };
20
+ };
21
+ export type CodeConnectJSON = BaseCodeConnectObject & {
20
22
  metadata: {
21
23
  cliVersion: string;
22
24
  };
23
- }
25
+ };
24
26
  //# sourceMappingURL=figma_connect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"figma_connect.d.ts","sourceRoot":"","sources":["../../src/common/figma_connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;QAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC1B,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF"}
1
+ {"version":3,"file":"figma_connect.d.ts","sourceRoot":"","sources":["../../src/common/figma_connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,qBAAqB,GAAG;IACpD,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA"}
@@ -1,6 +1,6 @@
1
- /// <reference types="react" />
2
1
  import * as ts from 'typescript';
3
2
  import { ParserContext } from '../react/parser';
3
+ import { FCCValue } from '../react/parser_template_helpers';
4
4
  export declare const API_PREFIX = "figma";
5
5
  export declare const FIGMA_CONNECT_CALL = "figma.connect";
6
6
  export declare enum IntrinsicKind {
@@ -8,13 +8,16 @@ export declare enum IntrinsicKind {
8
8
  String = "string",
9
9
  Boolean = "boolean",
10
10
  Instance = "instance",
11
- Children = "children"
11
+ Children = "children",
12
+ NestedProps = "nested-props",
13
+ ClassName = "className",
14
+ TextContent = "text-content"
12
15
  }
13
16
  export interface IntrinsicBase {
14
17
  kind: IntrinsicKind;
15
18
  args: {};
16
19
  }
17
- export type ValueMappingKind = string | boolean | number | undefined | JSX.Element | Intrinsic;
20
+ export type ValueMappingKind = FCCValue | Intrinsic;
18
21
  export interface FigmaBoolean extends IntrinsicBase {
19
22
  kind: IntrinsicKind.Boolean;
20
23
  args: {
@@ -47,7 +50,26 @@ export interface FigmaChildren extends IntrinsicBase {
47
50
  layers: string[];
48
51
  };
49
52
  }
50
- export type Intrinsic = FigmaBoolean | FigmaEnum | FigmaString | FigmaInstance | FigmaChildren;
53
+ export interface FigmaNestedProps extends IntrinsicBase {
54
+ kind: IntrinsicKind.NestedProps;
55
+ args: {
56
+ layer: string;
57
+ props: Record<string, Intrinsic>;
58
+ };
59
+ }
60
+ export interface FigmaClassName extends IntrinsicBase {
61
+ kind: IntrinsicKind.ClassName;
62
+ args: {
63
+ className: (string | Intrinsic)[];
64
+ };
65
+ }
66
+ export interface FigmaTextContent extends IntrinsicBase {
67
+ kind: IntrinsicKind.TextContent;
68
+ args: {
69
+ layer: string;
70
+ };
71
+ }
72
+ export type Intrinsic = FigmaBoolean | FigmaEnum | FigmaString | FigmaInstance | FigmaChildren | FigmaNestedProps | FigmaClassName | FigmaTextContent;
51
73
  /**
52
74
  * Parses a call expression to an intrinsic
53
75
  *
@@ -56,6 +78,16 @@ export type Intrinsic = FigmaBoolean | FigmaEnum | FigmaString | FigmaInstance |
56
78
  * @returns
57
79
  */
58
80
  export declare function parseIntrinsic(exp: ts.CallExpression, parserContext: ParserContext): Intrinsic;
59
- export declare function valueMappingToString(valueMapping: Record<string, ValueMappingKind>): string;
60
- export declare function intrinsicToString({ kind, args }: Intrinsic): string;
81
+ export declare function valueMappingToString(valueMapping: Record<string, ValueMappingKind>, childLayer?: string): string;
82
+ export declare function intrinsicToString({ kind, args }: Intrinsic, childLayer?: string): string;
83
+ /**
84
+ * Parses the `props` field in a `figma.connect()` call, returning a mapping of
85
+ * prop names to their respective intrinsic types
86
+ *
87
+ * @param objectLiteral An object literal expression
88
+ * @param parserContext Parser context
89
+ * @returns
90
+ */
91
+ export declare function parsePropsObject(objectLiteral: ts.ObjectLiteralExpression, parserContext: ParserContext): PropMappings;
92
+ export type PropMappings = Record<string, Intrinsic>;
61
93
  //# sourceMappingURL=intrinsics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../src/common/intrinsics.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,EAAiB,aAAa,EAAe,MAAM,iBAAiB,CAAA;AAM3E,eAAO,MAAM,UAAU,UAAU,CAAA;AACjC,eAAO,MAAM,kBAAkB,kBAA0B,CAAA;AAEzD,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,EAAE,CAAA;CACT;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,OAAO,GAAG,SAAS,CAAA;AAE9F,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,IAAI,EAAE,aAAa,CAAC,OAAO,CAAA;IAC3B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,gBAAgB,CAAC,CAAA;KAC1D,CAAA;CACF;AAED,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,IAAI,EAAE,aAAa,CAAC,IAAI,CAAA;IACxB,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;KAC/C,CAAA;CACF;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,IAAI,EAAE,aAAa,CAAC,MAAM,CAAA;IAC1B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAA;IAC5B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAA;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,EAAE,CAAA;KACjB,CAAA;CACF;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,CAAA;AA+K9F;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,CAW9F;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,CAuB3F;AAED,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,MAAM,CA+BnE"}
1
+ {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../src/common/intrinsics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,EAAiB,aAAa,EAAe,MAAM,iBAAiB,CAAA;AAS3E,OAAO,EACL,QAAQ,EAMT,MAAM,kCAAkC,CAAA;AAEzC,eAAO,MAAM,UAAU,UAAU,CAAA;AACjC,eAAO,MAAM,kBAAkB,kBAA0B,CAAA;AAEzD,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,WAAW,iBAAiB;IAC5B,SAAS,cAAc;IACvB,WAAW,iBAAiB;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,EAAE,CAAA;CACT;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEnD,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,IAAI,EAAE,aAAa,CAAC,OAAO,CAAA;IAC3B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,gBAAgB,CAAC,CAAA;KAC1D,CAAA;CACF;AAED,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,IAAI,EAAE,aAAa,CAAC,IAAI,CAAA;IACxB,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;KAC/C,CAAA;CACF;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,IAAI,EAAE,aAAa,CAAC,MAAM,CAAA;IAC1B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAA;IAC5B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAA;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,EAAE,CAAA;KACjB,CAAA;CACF;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,IAAI,EAAE,aAAa,CAAC,WAAW,CAAA;IAC/B,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KACjC,CAAA;CACF;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,IAAI,EAAE,aAAa,CAAC,SAAS,CAAA;IAC7B,IAAI,EAAE;QACJ,SAAS,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;KAClC,CAAA;CACF;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,IAAI,EAAE,aAAa,CAAC,WAAW,CAAA;IAC/B,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,SAAS,GACT,WAAW,GACX,aAAa,GACb,aAAa,GACb,gBAAgB,GAChB,cAAc,GACd,gBAAgB,CAAA;AA2PpB;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,CAW9F;AAUD,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC9C,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CA2CR;AAED,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CA4CxF;AAgCD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,EAAE,CAAC,uBAAuB,EACzC,aAAa,EAAE,aAAa,GAC3B,YAAY,CAQd;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA"}
@@ -23,12 +23,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.intrinsicToString = exports.valueMappingToString = exports.parseIntrinsic = exports.IntrinsicKind = exports.FIGMA_CONNECT_CALL = exports.API_PREFIX = void 0;
26
+ exports.parsePropsObject = exports.intrinsicToString = exports.valueMappingToString = exports.parseIntrinsic = exports.IntrinsicKind = exports.FIGMA_CONNECT_CALL = exports.API_PREFIX = void 0;
27
27
  const ts = __importStar(require("typescript"));
28
28
  const parser_1 = require("../react/parser");
29
29
  const compiler_1 = require("../typescript/compiler");
30
30
  const compiler_2 = require("../typescript/compiler");
31
31
  const compiler_3 = require("../typescript/compiler");
32
+ const parser_template_helpers_1 = require("../react/parser_template_helpers");
32
33
  exports.API_PREFIX = 'figma';
33
34
  exports.FIGMA_CONNECT_CALL = `${exports.API_PREFIX}.connect`;
34
35
  var IntrinsicKind;
@@ -38,6 +39,9 @@ var IntrinsicKind;
38
39
  IntrinsicKind["Boolean"] = "boolean";
39
40
  IntrinsicKind["Instance"] = "instance";
40
41
  IntrinsicKind["Children"] = "children";
42
+ IntrinsicKind["NestedProps"] = "nested-props";
43
+ IntrinsicKind["ClassName"] = "className";
44
+ IntrinsicKind["TextContent"] = "text-content";
41
45
  })(IntrinsicKind || (exports.IntrinsicKind = IntrinsicKind = {}));
42
46
  const Intrinsics = {};
43
47
  /**
@@ -68,11 +72,7 @@ makeIntrinsic('boolean', (name) => {
68
72
  let valueMapping;
69
73
  if (valueMappingArg) {
70
74
  (0, compiler_3.assertIsObjectLiteralExpression)(valueMappingArg, ctx.sourceFile, `${name} second argument should be an object literal, that sets values for 'true' and 'false'`);
71
- valueMapping = (0, compiler_2.convertObjectLiteralToJs)(valueMappingArg, ctx.sourceFile, ctx.checker, (valueNode) => {
72
- if (ts.isCallExpression(valueNode)) {
73
- return parseIntrinsic(valueNode, ctx);
74
- }
75
- });
75
+ valueMapping = parsePropsObject(valueMappingArg, ctx);
76
76
  }
77
77
  return {
78
78
  kind: IntrinsicKind.Boolean,
@@ -87,7 +87,7 @@ makeIntrinsic('boolean', (name) => {
87
87
  makeIntrinsic('enum', (name) => {
88
88
  return {
89
89
  parse: (exp, ctx) => {
90
- const { sourceFile, checker } = ctx;
90
+ const { sourceFile } = ctx;
91
91
  const figmaPropNameIdentifier = exp.arguments?.[0];
92
92
  (0, compiler_1.assertIsStringLiteral)(figmaPropNameIdentifier, sourceFile, `${name} takes at least one argument, which is the Figma property name`);
93
93
  const valueMapping = exp.arguments?.[1];
@@ -96,11 +96,7 @@ makeIntrinsic('enum', (name) => {
96
96
  kind: IntrinsicKind.Enum,
97
97
  args: {
98
98
  figmaPropName: (0, compiler_1.stripQuotes)(figmaPropNameIdentifier),
99
- valueMapping: (0, compiler_2.convertObjectLiteralToJs)(valueMapping, sourceFile, checker, (valueNode) => {
100
- if (ts.isCallExpression(valueNode)) {
101
- return parseIntrinsic(valueNode, ctx);
102
- }
103
- }),
99
+ valueMapping: parsePropsObject(valueMapping, ctx),
104
100
  },
105
101
  };
106
102
  },
@@ -148,6 +144,13 @@ makeIntrinsic('children', (name) => {
148
144
  else if (ts.isArrayLiteralExpression(layerName) && layerName.elements.length > 0) {
149
145
  layerName.elements.forEach((el) => {
150
146
  (0, compiler_1.assertIsStringLiteral)(el, sourceFile);
147
+ const name = (0, compiler_1.stripQuotes)(el);
148
+ if (name.includes('*')) {
149
+ throw new parser_1.ParserError(`Wildcards can not be used with an array of strings. Use a single string literal instead.`, {
150
+ node: layerName,
151
+ sourceFile,
152
+ });
153
+ }
151
154
  layers.push((0, compiler_1.stripQuotes)(el));
152
155
  });
153
156
  }
@@ -166,6 +169,63 @@ makeIntrinsic('children', (name) => {
166
169
  },
167
170
  };
168
171
  });
172
+ makeIntrinsic('nestedProps', (name) => {
173
+ return {
174
+ parse: (exp, ctx) => {
175
+ const { sourceFile } = ctx;
176
+ const layerName = exp.arguments?.[0];
177
+ const mapping = exp.arguments?.[1];
178
+ (0, compiler_1.assertIsStringLiteral)(layerName, sourceFile, `Invalid argument to ${name}, \`layerName\` should be a string literal`);
179
+ (0, compiler_3.assertIsObjectLiteralExpression)(mapping, sourceFile, `Invalid argument to ${name}, \`props\` should be an object literal`);
180
+ return {
181
+ kind: IntrinsicKind.NestedProps,
182
+ args: {
183
+ layer: (0, compiler_1.stripQuotes)(layerName),
184
+ props: parsePropsObject(mapping, ctx),
185
+ },
186
+ };
187
+ },
188
+ };
189
+ });
190
+ makeIntrinsic('className', (name) => {
191
+ return {
192
+ parse: (exp, ctx) => {
193
+ const { sourceFile } = ctx;
194
+ const classNameArg = exp.arguments?.[0];
195
+ const className = [];
196
+ (0, compiler_1.assertIsArrayLiteralExpression)(classNameArg, sourceFile, `${name} takes an array of strings`);
197
+ classNameArg.elements.forEach((el) => {
198
+ if (ts.isStringLiteral(el)) {
199
+ className.push((0, compiler_1.stripQuotes)(el));
200
+ }
201
+ else if (ts.isCallExpression(el)) {
202
+ className.push(parseIntrinsic(el, ctx));
203
+ }
204
+ });
205
+ return {
206
+ kind: IntrinsicKind.ClassName,
207
+ args: {
208
+ className,
209
+ },
210
+ };
211
+ },
212
+ };
213
+ });
214
+ makeIntrinsic('textContent', (name) => {
215
+ return {
216
+ parse: (exp, ctx) => {
217
+ const { sourceFile } = ctx;
218
+ const layerNameArg = exp.arguments?.[0];
219
+ (0, compiler_1.assertIsStringLiteral)(layerNameArg, sourceFile, `${name} takes a single argument which is the Figma layer name`);
220
+ return {
221
+ kind: IntrinsicKind.TextContent,
222
+ args: {
223
+ layer: (0, compiler_1.stripQuotes)(layerNameArg),
224
+ },
225
+ };
226
+ },
227
+ };
228
+ });
169
229
  /**
170
230
  * Parses a call expression to an intrinsic
171
231
  *
@@ -185,30 +245,53 @@ function parseIntrinsic(exp, parserContext) {
185
245
  });
186
246
  }
187
247
  exports.parseIntrinsic = parseIntrinsic;
188
- function valueMappingToString(valueMapping) {
248
+ /**
249
+ * Replace newlines in enum values with \\n so that we don't output
250
+ * broken JS with newlines inside the string
251
+ */
252
+ function replaceNewlines(str) {
253
+ return str.toString().replaceAll('\n', '\\n').replaceAll("'", "\\'");
254
+ }
255
+ function valueMappingToString(valueMapping, childLayer) {
189
256
  // For enums (and booleans with a valueMapping provided), convert the
190
257
  // value mapping to an object.
191
258
  return ('{\n' +
192
259
  Object.entries(valueMapping)
193
260
  .map(([key, value]) => {
194
- if (typeof value === 'object' && 'kind' in value) {
195
- // Mappings can be nested, e.g. an enum value can be figma.instance(...)
196
- return `"${key}": ${intrinsicToString(value)}`;
197
- }
198
- else if (typeof value === 'boolean' ||
261
+ if (typeof value === 'boolean' ||
199
262
  typeof value === 'number' ||
200
263
  typeof value === 'undefined') {
201
264
  return `"${key}": ${value}`;
202
265
  }
203
- else {
204
- return `"${key}": '${value}'`;
266
+ if (typeof value === 'string') {
267
+ return `"${key}": '${replaceNewlines(value)}'`;
268
+ }
269
+ if ('kind' in value) {
270
+ // Mappings can be nested, e.g. an enum value can be figma.instance(...)
271
+ return `"${key}": ${intrinsicToString(value, childLayer)}`;
272
+ }
273
+ const v = replaceNewlines(value.value);
274
+ switch (value.type) {
275
+ case 'function':
276
+ return `"${key}": _fcc_function('${v}')`;
277
+ case 'identifier':
278
+ return `"${key}": _fcc_identifier('${v}')`;
279
+ case 'object':
280
+ return `"${key}": _fcc_object('${v}')`;
281
+ case 'template-string':
282
+ return `"${key}": _fcc_templateString('${v}')`;
283
+ case 'jsx-element':
284
+ return `"${key}": _fcc_jsxElement('${v}')`;
285
+ default:
286
+ throw new parser_1.InternalError(`Unknown helper type: ${value}`);
205
287
  }
206
288
  })
207
289
  .join(',\n') +
208
290
  '}');
209
291
  }
210
292
  exports.valueMappingToString = valueMappingToString;
211
- function intrinsicToString({ kind, args }) {
293
+ function intrinsicToString({ kind, args }, childLayer) {
294
+ const selector = childLayer ?? `figma.currentLayer`;
212
295
  switch (kind) {
213
296
  case IntrinsicKind.String:
214
297
  case IntrinsicKind.Instance: {
@@ -216,28 +299,79 @@ function intrinsicToString({ kind, args }) {
216
299
  // `const propName = figma.properties.string('propName')`, or
217
300
  // `const propName = figma.properties.boolean('propName')`, or
218
301
  // `const propName = figma.properties.instance('propName')`
219
- return `figma.properties.${kind}('${args.figmaPropName}')`;
302
+ return `${selector}.__properties__.${kind}('${args.figmaPropName}')`;
220
303
  }
221
304
  case IntrinsicKind.Boolean: {
222
305
  if (args.valueMapping) {
223
306
  const mappingString = valueMappingToString(args.valueMapping);
224
307
  // Outputs: `const propName = figma.properties.boolean('propName', { ... mapping object from above ... })`
225
- return `figma.properties.boolean('${args.figmaPropName}', ${mappingString})`;
308
+ return `${selector}.__properties__.boolean('${args.figmaPropName}', ${mappingString})`;
226
309
  }
227
- return `figma.properties.boolean('${args.figmaPropName}')`;
310
+ return `${selector}.__properties__.boolean('${args.figmaPropName}')`;
228
311
  }
229
312
  case IntrinsicKind.Enum: {
230
313
  const mappingString = valueMappingToString(args.valueMapping);
231
314
  // Outputs: `const propName = figma.properties.enum('propName', { ... mapping object from above ... })`
232
- return `figma.properties.enum('${args.figmaPropName}', ${mappingString})`;
315
+ return `${selector}.__properties__.enum('${args.figmaPropName}', ${mappingString})`;
233
316
  }
234
317
  case IntrinsicKind.Children: {
235
318
  // Outputs: `const propName = figma.properties.children(["Layer 1", "Layer 2"])`
236
- return `figma.properties.children([${args.layers.map((layerName) => `"${layerName}"`).join(',')}])`;
319
+ return `${selector}.__properties__.children([${args.layers.map((layerName) => `"${layerName}"`).join(',')}])`;
320
+ }
321
+ case IntrinsicKind.ClassName: {
322
+ // Outputs: `const propName = ['btn-base', figma.currentLayer.__properties__.enum('Size, { Large: 'btn-large' })].join(" ")`
323
+ return `[${args.className.map((className) => (typeof className === 'string' ? `"${className}"` : `${intrinsicToString(className, childLayer)}`)).join(', ')}].filter(v => !!v).join(' ')`;
324
+ }
325
+ case IntrinsicKind.TextContent: {
326
+ return `${selector}.__findChildWithCriteria__({ name: '${args.layer}', type: "TEXT" }).textContent`;
327
+ }
328
+ case IntrinsicKind.NestedProps: {
329
+ throw new parser_1.ParserError(`Deeply nested props should be expressed on the root level by passing the name of the inner layer`);
237
330
  }
238
331
  default:
239
332
  throw new parser_1.InternalError(`Unknown intrinsic: ${kind}`);
240
333
  }
241
334
  }
242
335
  exports.intrinsicToString = intrinsicToString;
336
+ function expressionToFccEnumValue(valueNode, sourceFile) {
337
+ if (ts.isParenthesizedExpression(valueNode)) {
338
+ return expressionToFccEnumValue(valueNode.expression, sourceFile);
339
+ }
340
+ if (ts.isJsxElement(valueNode) || ts.isJsxSelfClosingElement(valueNode)) {
341
+ return (0, parser_template_helpers_1._fcc_jsxElement)(valueNode.getText());
342
+ }
343
+ if (ts.isArrowFunction(valueNode) || ts.isFunctionExpression(valueNode)) {
344
+ return (0, parser_template_helpers_1._fcc_function)(valueNode.getText());
345
+ }
346
+ if (ts.isObjectLiteralExpression(valueNode)) {
347
+ return (0, parser_template_helpers_1._fcc_object)(valueNode.getText());
348
+ }
349
+ if (ts.isTemplateLiteral(valueNode)) {
350
+ const str = valueNode.getText().replaceAll('`', '');
351
+ return (0, parser_template_helpers_1._fcc_templateString)(str);
352
+ }
353
+ if (ts.isPropertyAccessExpression(valueNode)) {
354
+ return (0, parser_template_helpers_1._fcc_identifier)(valueNode.getText());
355
+ }
356
+ // Fall back to the default conversion in `convertObjectLiteralToJs`
357
+ return undefined;
358
+ }
359
+ /**
360
+ * Parses the `props` field in a `figma.connect()` call, returning a mapping of
361
+ * prop names to their respective intrinsic types
362
+ *
363
+ * @param objectLiteral An object literal expression
364
+ * @param parserContext Parser context
365
+ * @returns
366
+ */
367
+ function parsePropsObject(objectLiteral, parserContext) {
368
+ const { sourceFile, checker } = parserContext;
369
+ return (0, compiler_2.convertObjectLiteralToJs)(objectLiteral, sourceFile, checker, (valueNode) => {
370
+ if (ts.isCallExpression(valueNode)) {
371
+ return parseIntrinsic(valueNode, parserContext);
372
+ }
373
+ return expressionToFccEnumValue(valueNode, sourceFile);
374
+ });
375
+ }
376
+ exports.parsePropsObject = parsePropsObject;
243
377
  //# sourceMappingURL=intrinsics.js.map