@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.
- package/README.md +123 -25
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/connect.d.ts +15 -0
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +137 -76
- package/dist/commands/connect.js.map +1 -1
- package/dist/common/__test__/project.test.d.ts +2 -0
- package/dist/common/__test__/project.test.d.ts.map +1 -0
- package/dist/common/__test__/project.test.js +14 -0
- package/dist/common/__test__/project.test.js.map +1 -0
- package/dist/common/api.d.ts +56 -2
- package/dist/common/api.d.ts.map +1 -1
- package/dist/common/external.d.ts +6 -3
- package/dist/common/external.d.ts.map +1 -1
- package/dist/common/external.js +13 -1
- package/dist/common/external.js.map +1 -1
- package/dist/common/figma_connect.d.ts +10 -8
- package/dist/common/figma_connect.d.ts.map +1 -1
- package/dist/common/intrinsics.d.ts +38 -6
- package/dist/common/intrinsics.d.ts.map +1 -1
- package/dist/common/intrinsics.js +160 -26
- package/dist/common/intrinsics.js.map +1 -1
- package/dist/common/logging.d.ts +9 -0
- package/dist/common/logging.d.ts.map +1 -1
- package/dist/common/logging.js +21 -1
- package/dist/common/logging.js.map +1 -1
- package/dist/common/updates.d.ts +4 -0
- package/dist/common/updates.d.ts.map +1 -0
- package/dist/common/updates.js +87 -0
- package/dist/common/updates.js.map +1 -0
- package/dist/connect/create.d.ts +5 -1
- package/dist/connect/create.d.ts.map +1 -1
- package/dist/connect/create.js +55 -69
- package/dist/connect/create.js.map +1 -1
- package/dist/connect/delete_docs.d.ts.map +1 -1
- package/dist/connect/delete_docs.js +1 -4
- package/dist/connect/delete_docs.js.map +1 -1
- package/dist/connect/figma_rest_api.d.ts +5 -0
- package/dist/connect/figma_rest_api.d.ts.map +1 -1
- package/dist/connect/figma_rest_api.js +10 -1
- package/dist/connect/figma_rest_api.js.map +1 -1
- package/dist/connect/helpers.d.ts +1 -1
- package/dist/connect/helpers.d.ts.map +1 -1
- package/dist/connect/helpers.js +6 -5
- package/dist/connect/helpers.js.map +1 -1
- package/dist/connect/parser_executable_types.d.ts +297 -0
- package/dist/connect/parser_executable_types.d.ts.map +1 -0
- package/dist/connect/parser_executable_types.js +108 -0
- package/dist/connect/parser_executable_types.js.map +1 -0
- package/dist/connect/parser_executables.d.ts +8 -0
- package/dist/connect/parser_executables.d.ts.map +1 -0
- package/dist/connect/parser_executables.js +132 -0
- package/dist/connect/parser_executables.js.map +1 -0
- package/dist/connect/project.d.ts +137 -0
- package/dist/connect/project.d.ts.map +1 -0
- package/dist/connect/project.js +411 -0
- package/dist/connect/project.js.map +1 -0
- package/dist/connect/upload.d.ts.map +1 -1
- package/dist/connect/upload.js +1 -4
- package/dist/connect/upload.js.map +1 -1
- package/dist/connect/validation.d.ts +6 -1
- package/dist/connect/validation.d.ts.map +1 -1
- package/dist/connect/validation.js +23 -18
- package/dist/connect/validation.js.map +1 -1
- package/dist/connect/wizard/helpers.d.ts +7 -0
- package/dist/connect/wizard/helpers.d.ts.map +1 -0
- package/dist/connect/wizard/helpers.js +55 -0
- package/dist/connect/wizard/helpers.js.map +1 -0
- package/dist/connect/wizard/run_wizard.d.ts +3 -0
- package/dist/connect/wizard/run_wizard.d.ts.map +1 -0
- package/dist/connect/wizard/run_wizard.js +480 -0
- package/dist/connect/wizard/run_wizard.js.map +1 -0
- package/dist/parser_scripts/get_file_if_exists.d.ts +2 -0
- package/dist/parser_scripts/get_file_if_exists.d.ts.map +1 -0
- package/dist/parser_scripts/get_file_if_exists.js +10 -0
- package/dist/parser_scripts/get_file_if_exists.js.map +1 -0
- package/dist/parser_scripts/get_gradlew_path.d.ts +3 -0
- package/dist/parser_scripts/get_gradlew_path.d.ts.map +1 -0
- package/dist/parser_scripts/get_gradlew_path.js +24 -0
- package/dist/parser_scripts/get_gradlew_path.js.map +1 -0
- package/dist/parser_scripts/get_swift_parser_dir.d.ts +2 -0
- package/dist/parser_scripts/get_swift_parser_dir.d.ts.map +1 -0
- package/dist/parser_scripts/get_swift_parser_dir.js +93 -0
- package/dist/parser_scripts/get_swift_parser_dir.js.map +1 -0
- package/dist/react/create.d.ts +4 -0
- package/dist/react/create.d.ts.map +1 -0
- package/dist/react/create.js +132 -0
- package/dist/react/create.js.map +1 -0
- package/dist/react/parser.d.ts +6 -15
- package/dist/react/parser.d.ts.map +1 -1
- package/dist/react/parser.js +55 -62
- package/dist/react/parser.js.map +1 -1
- package/dist/react/parser_template_helpers.d.ts +21 -0
- package/dist/react/parser_template_helpers.d.ts.map +1 -1
- package/dist/react/parser_template_helpers.js +107 -43
- package/dist/react/parser_template_helpers.js.map +1 -1
- package/dist/storybook/convert.d.ts +2 -2
- package/dist/storybook/convert.d.ts.map +1 -1
- package/dist/storybook/convert.js +6 -4
- package/dist/storybook/convert.js.map +1 -1
- package/package.json +36 -11
- package/dist/common/project.d.ts +0 -94
- package/dist/common/project.d.ts.map +0 -1
- package/dist/common/project.js +0 -198
- package/dist/common/project.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":";;;;;;AACA,4CAAuF;AACvF,4CAAmB;AACnB,8CAA0C;AAC1C,sDAAoD;AACpD,8CAA4D;AAC5D
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/common/api.d.ts
CHANGED
|
@@ -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
|
package/dist/common/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/common/api.ts"],"names":[],"mappings":";AAAA,
|
|
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
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/dist/common/external.js
CHANGED
|
@@ -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;
|
|
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
|
|
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
|
|
9
|
+
props?: Record<string, Intrinsic>;
|
|
14
10
|
imports?: string[];
|
|
15
11
|
nestable?: boolean;
|
|
16
12
|
};
|
|
17
|
-
language:
|
|
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,
|
|
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 =
|
|
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
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../../src/common/intrinsics.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 = (
|
|
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
|
|
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: (
|
|
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
|
-
|
|
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 === '
|
|
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
|
-
|
|
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
|
|
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
|
|
308
|
+
return `${selector}.__properties__.boolean('${args.figmaPropName}', ${mappingString})`;
|
|
226
309
|
}
|
|
227
|
-
return
|
|
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
|
|
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
|
|
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
|