@react-native/codegen 0.72.1 → 0.72.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/CodegenSchema.d.ts +348 -0
- package/lib/CodegenSchema.js.flow +31 -3
- package/lib/SchemaValidator.d.ts +11 -0
- package/lib/cli/combine/combine-js-to-schema.js +8 -8
- package/lib/cli/combine/combine-js-to-schema.js.flow +8 -7
- package/lib/cli/parser/parser.js +8 -15
- package/lib/cli/parser/parser.js.flow +8 -14
- package/lib/generators/Utils.js +16 -0
- package/lib/generators/Utils.js.flow +20 -0
- package/lib/generators/__test_fixtures__/fixtures.js +2 -1
- package/lib/generators/__test_fixtures__/fixtures.js.flow +2 -1
- package/lib/generators/components/ComponentsGeneratorUtils.js +10 -1
- package/lib/generators/components/ComponentsGeneratorUtils.js.flow +12 -2
- package/lib/generators/components/CppHelpers.js +8 -15
- package/lib/generators/components/CppHelpers.js.flow +8 -19
- package/lib/generators/components/GenerateEventEmitterCpp.js +7 -3
- package/lib/generators/components/GenerateEventEmitterCpp.js.flow +7 -3
- package/lib/generators/components/GenerateEventEmitterH.js +2 -2
- package/lib/generators/components/GenerateEventEmitterH.js.flow +1 -2
- package/lib/generators/components/GeneratePropsH.js +3 -4
- package/lib/generators/components/GeneratePropsH.js.flow +2 -4
- package/lib/generators/components/GeneratePropsJavaDelegate.js +2 -0
- package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +2 -0
- package/lib/generators/components/GeneratePropsJavaInterface.js +3 -0
- package/lib/generators/components/GeneratePropsJavaInterface.js.flow +3 -0
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js +8 -0
- package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +12 -0
- package/lib/generators/components/GenerateTests.js +3 -2
- package/lib/generators/components/GenerateTests.js.flow +3 -1
- package/lib/generators/components/GenerateViewConfigJs.js +5 -2
- package/lib/generators/components/GenerateViewConfigJs.js.flow +5 -2
- package/lib/generators/components/JavaHelpers.js +9 -0
- package/lib/generators/components/JavaHelpers.js.flow +12 -1
- package/lib/generators/components/__test_fixtures__/fixtures.js +41 -0
- package/lib/generators/components/__test_fixtures__/fixtures.js.flow +42 -0
- package/lib/generators/modules/GenerateModuleCpp.js +9 -4
- package/lib/generators/modules/GenerateModuleCpp.js.flow +11 -3
- package/lib/generators/modules/GenerateModuleH.js +185 -33
- package/lib/generators/modules/GenerateModuleH.js.flow +203 -25
- package/lib/generators/modules/GenerateModuleJavaSpec.js +2 -2
- package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +5 -5
- package/lib/generators/modules/GenerateModuleJniCpp.js +2 -2
- package/lib/generators/modules/GenerateModuleJniCpp.js.flow +5 -5
- package/lib/generators/modules/GenerateModuleObjCpp/index.js +2 -2
- package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +2 -2
- package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +2 -2
- package/lib/generators/modules/Utils.js +4 -0
- package/lib/generators/modules/Utils.js.flow +6 -0
- package/lib/generators/modules/__test_fixtures__/fixtures.js +152 -10
- package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +152 -10
- package/lib/parsers/error-utils.js +1 -19
- package/lib/parsers/error-utils.js.flow +1 -19
- package/lib/parsers/errors.d.ts +10 -0
- package/lib/parsers/errors.js +9 -29
- package/lib/parsers/errors.js.flow +2 -20
- package/lib/parsers/flow/Visitor.js +37 -0
- package/lib/parsers/flow/Visitor.js.flow +41 -0
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +20 -2
- package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +20 -2
- package/lib/parsers/flow/components/commands.js +3 -0
- package/lib/parsers/flow/components/commands.js.flow +2 -1
- package/lib/parsers/flow/components/componentsUtils.js +10 -0
- package/lib/parsers/flow/components/componentsUtils.js.flow +11 -1
- package/lib/parsers/flow/components/events.js.flow +1 -1
- package/lib/parsers/flow/components/extends.js.flow +1 -1
- package/lib/parsers/flow/components/index.js.flow +1 -1
- package/lib/parsers/flow/components/options.js.flow +1 -1
- package/lib/parsers/flow/components/props.js.flow +1 -1
- package/lib/parsers/flow/modules/__test_fixtures__/failures.js +54 -0
- package/lib/parsers/flow/modules/__test_fixtures__/failures.js.flow +56 -0
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +64 -1
- package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +66 -1
- package/lib/parsers/flow/modules/index.js +99 -25
- package/lib/parsers/flow/modules/index.js.flow +106 -22
- package/lib/parsers/flow/parser.d.ts +10 -0
- package/lib/parsers/flow/parser.js +122 -32
- package/lib/parsers/flow/parser.js.flow +144 -24
- package/lib/parsers/flow/utils.js +33 -19
- package/lib/parsers/flow/utils.js.flow +37 -22
- package/lib/parsers/parser.d.ts +17 -0
- package/lib/parsers/parser.js.flow +102 -17
- package/lib/parsers/parserMock.js +87 -30
- package/lib/parsers/parserMock.js.flow +118 -24
- package/lib/parsers/parsers-commons.js +121 -119
- package/lib/parsers/parsers-commons.js.flow +130 -131
- package/lib/parsers/parsers-primitives.js +75 -12
- package/lib/parsers/parsers-primitives.js.flow +92 -13
- package/lib/parsers/schema/index.d.ts +10 -0
- package/lib/parsers/typescript/Visitor.js +42 -0
- package/lib/parsers/typescript/Visitor.js.flow +47 -0
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +22 -0
- package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +22 -0
- package/lib/parsers/typescript/components/commands.js +3 -0
- package/lib/parsers/typescript/components/commands.js.flow +2 -1
- package/lib/parsers/typescript/components/componentsUtils.js +5 -0
- package/lib/parsers/typescript/components/componentsUtils.js.flow +6 -1
- package/lib/parsers/typescript/components/events.js.flow +1 -1
- package/lib/parsers/typescript/components/extends.js.flow +1 -1
- package/lib/parsers/typescript/components/index.js.flow +1 -1
- package/lib/parsers/typescript/components/options.js.flow +1 -1
- package/lib/parsers/typescript/components/props.js.flow +1 -1
- package/lib/parsers/typescript/modules/__test_fixtures__/failures.js +52 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/failures.js.flow +54 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +142 -0
- package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +146 -0
- package/lib/parsers/typescript/modules/index.js +266 -87
- package/lib/parsers/typescript/modules/index.js.flow +230 -48
- package/lib/parsers/typescript/parser.d.ts +10 -0
- package/lib/parsers/typescript/parser.js +131 -25
- package/lib/parsers/typescript/parser.js.flow +137 -26
- package/lib/parsers/typescript/utils.js +40 -20
- package/lib/parsers/typescript/utils.js.flow +44 -24
- package/lib/parsers/utils.js +0 -125
- package/lib/parsers/utils.js.flow +3 -70
- package/package.json +4 -1
- package/lib/parsers/flow/index.js +0 -80
- package/lib/parsers/flow/index.js.flow +0 -85
- package/lib/parsers/typescript/index.js +0 -85
- package/lib/parsers/typescript/index.js.flow +0 -94
|
@@ -25,11 +25,12 @@ import type {
|
|
|
25
25
|
const {
|
|
26
26
|
getCppTypeForAnnotation,
|
|
27
27
|
getEnumMaskName,
|
|
28
|
-
getEnumName,
|
|
29
28
|
generateStructName,
|
|
30
29
|
getImports,
|
|
31
30
|
} = require('./CppHelpers.js');
|
|
32
31
|
|
|
32
|
+
const {getEnumName} = require('../Utils');
|
|
33
|
+
|
|
33
34
|
function getNativeTypeFromAnnotation(
|
|
34
35
|
componentName: string,
|
|
35
36
|
prop:
|
|
@@ -78,6 +79,8 @@ function getNativeTypeFromAnnotation(
|
|
|
78
79
|
return 'Point';
|
|
79
80
|
case 'EdgeInsetsPrimitive':
|
|
80
81
|
return 'EdgeInsets';
|
|
82
|
+
case 'DimensionPrimitive':
|
|
83
|
+
return 'YGValue';
|
|
81
84
|
default:
|
|
82
85
|
(typeAnnotation.name: empty);
|
|
83
86
|
throw new Error('Received unknown ReservedPropTypeAnnotation');
|
|
@@ -221,7 +224,8 @@ function getLocalImports(
|
|
|
221
224
|
| 'EdgeInsetsPrimitive'
|
|
222
225
|
| 'ImageSourcePrimitive'
|
|
223
226
|
| 'PointPrimitive'
|
|
224
|
-
| 'ImageRequestPrimitive'
|
|
227
|
+
| 'ImageRequestPrimitive'
|
|
228
|
+
| 'DimensionPrimitive',
|
|
225
229
|
) {
|
|
226
230
|
switch (name) {
|
|
227
231
|
case 'ColorPrimitive':
|
|
@@ -239,6 +243,9 @@ function getLocalImports(
|
|
|
239
243
|
case 'EdgeInsetsPrimitive':
|
|
240
244
|
imports.add('#include <react/renderer/graphics/RectangleEdges.h>');
|
|
241
245
|
return;
|
|
246
|
+
case 'DimensionPrimitive':
|
|
247
|
+
imports.add('#include <yoga/Yoga.h>');
|
|
248
|
+
return;
|
|
242
249
|
default:
|
|
243
250
|
(name: empty);
|
|
244
251
|
throw new Error(`Invalid ReservedPropTypeAnnotation name, got ${name}`);
|
|
@@ -270,8 +277,11 @@ function getLocalImports(
|
|
|
270
277
|
typeAnnotation.type === 'ArrayTypeAnnotation' &&
|
|
271
278
|
typeAnnotation.elementType.type === 'ObjectTypeAnnotation'
|
|
272
279
|
) {
|
|
280
|
+
imports.add('#include <react/renderer/core/propsConversions.h>');
|
|
273
281
|
const objectProps = typeAnnotation.elementType.properties;
|
|
282
|
+
// $FlowFixMe[incompatible-call] the type is guaranteed to be ObjectTypeAnnotation<PropTypeAnnotation>
|
|
274
283
|
const objectImports = getImports(objectProps);
|
|
284
|
+
// $FlowFixMe[incompatible-call] the type is guaranteed to be ObjectTypeAnnotation<PropTypeAnnotation>
|
|
275
285
|
const localImports = getLocalImports(objectProps);
|
|
276
286
|
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
277
287
|
objectImports.forEach(imports.add, imports);
|
|
@@ -10,15 +10,9 @@
|
|
|
10
10
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
return inString[0].toUpperCase() + inString.slice(1);
|
|
18
|
-
}
|
|
19
|
-
function toSafeCppString(input) {
|
|
20
|
-
return input.split('-').map(upperCaseFirst).join('');
|
|
21
|
-
}
|
|
13
|
+
const _require = require('../Utils'),
|
|
14
|
+
getEnumName = _require.getEnumName,
|
|
15
|
+
toSafeCppString = _require.toSafeCppString;
|
|
22
16
|
function toIntEnumValueName(propName, value) {
|
|
23
17
|
return `${toSafeCppString(propName)}${value}`;
|
|
24
18
|
}
|
|
@@ -54,6 +48,9 @@ function getImports(properties) {
|
|
|
54
48
|
case 'ImageSourcePrimitive':
|
|
55
49
|
imports.add('#include <react/renderer/components/image/conversions.h>');
|
|
56
50
|
return;
|
|
51
|
+
case 'DimensionPrimitive':
|
|
52
|
+
imports.add('#include <react/renderer/components/view/conversions.h>');
|
|
53
|
+
return;
|
|
57
54
|
default:
|
|
58
55
|
name;
|
|
59
56
|
throw new Error(`Invalid name, got ${name}`);
|
|
@@ -86,10 +83,6 @@ function generateStructName(componentName, parts = []) {
|
|
|
86
83
|
const additional = parts.map(toSafeCppString).join('');
|
|
87
84
|
return `${componentName}${additional}Struct`;
|
|
88
85
|
}
|
|
89
|
-
function getEnumName(componentName, propName) {
|
|
90
|
-
const uppercasedPropName = toSafeCppString(propName);
|
|
91
|
-
return `${componentName}${uppercasedPropName}`;
|
|
92
|
-
}
|
|
93
86
|
function getEnumMaskName(enumName) {
|
|
94
87
|
return `${enumName}Mask`;
|
|
95
88
|
}
|
|
@@ -133,6 +126,8 @@ function convertDefaultTypeToString(componentName, prop) {
|
|
|
133
126
|
return '';
|
|
134
127
|
case 'EdgeInsetsPrimitive':
|
|
135
128
|
return '';
|
|
129
|
+
case 'DimensionPrimitive':
|
|
130
|
+
return '';
|
|
136
131
|
default:
|
|
137
132
|
typeAnnotation.name;
|
|
138
133
|
throw new Error(
|
|
@@ -178,10 +173,8 @@ function convertDefaultTypeToString(componentName, prop) {
|
|
|
178
173
|
module.exports = {
|
|
179
174
|
convertDefaultTypeToString,
|
|
180
175
|
getCppTypeForAnnotation,
|
|
181
|
-
getEnumName,
|
|
182
176
|
getEnumMaskName,
|
|
183
177
|
getImports,
|
|
184
|
-
toSafeCppString,
|
|
185
178
|
toIntEnumValueName,
|
|
186
179
|
generateStructName,
|
|
187
180
|
generateEventStructName,
|
|
@@ -11,17 +11,7 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
import type {NamedShape, PropTypeAnnotation} from '../../CodegenSchema';
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
if (inString.length === 0) {
|
|
16
|
-
return inString;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return inString[0].toUpperCase() + inString.slice(1);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function toSafeCppString(input: string): string {
|
|
23
|
-
return input.split('-').map(upperCaseFirst).join('');
|
|
24
|
-
}
|
|
14
|
+
const {getEnumName, toSafeCppString} = require('../Utils');
|
|
25
15
|
|
|
26
16
|
function toIntEnumValueName(propName: string, value: number): string {
|
|
27
17
|
return `${toSafeCppString(propName)}${value}`;
|
|
@@ -63,7 +53,8 @@ function getImports(
|
|
|
63
53
|
| 'EdgeInsetsPrimitive'
|
|
64
54
|
| 'ImageRequestPrimitive'
|
|
65
55
|
| 'ImageSourcePrimitive'
|
|
66
|
-
| 'PointPrimitive'
|
|
56
|
+
| 'PointPrimitive'
|
|
57
|
+
| 'DimensionPrimitive',
|
|
67
58
|
) {
|
|
68
59
|
switch (name) {
|
|
69
60
|
case 'ColorPrimitive':
|
|
@@ -77,6 +68,9 @@ function getImports(
|
|
|
77
68
|
case 'ImageSourcePrimitive':
|
|
78
69
|
imports.add('#include <react/renderer/components/image/conversions.h>');
|
|
79
70
|
return;
|
|
71
|
+
case 'DimensionPrimitive':
|
|
72
|
+
imports.add('#include <react/renderer/components/view/conversions.h>');
|
|
73
|
+
return;
|
|
80
74
|
default:
|
|
81
75
|
(name: empty);
|
|
82
76
|
throw new Error(`Invalid name, got ${name}`);
|
|
@@ -120,11 +114,6 @@ function generateStructName(
|
|
|
120
114
|
return `${componentName}${additional}Struct`;
|
|
121
115
|
}
|
|
122
116
|
|
|
123
|
-
function getEnumName(componentName: string, propName: string): string {
|
|
124
|
-
const uppercasedPropName = toSafeCppString(propName);
|
|
125
|
-
return `${componentName}${uppercasedPropName}`;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
117
|
function getEnumMaskName(enumName: string): string {
|
|
129
118
|
return `${enumName}Mask`;
|
|
130
119
|
}
|
|
@@ -172,6 +161,8 @@ function convertDefaultTypeToString(
|
|
|
172
161
|
return '';
|
|
173
162
|
case 'EdgeInsetsPrimitive':
|
|
174
163
|
return '';
|
|
164
|
+
case 'DimensionPrimitive':
|
|
165
|
+
return '';
|
|
175
166
|
default:
|
|
176
167
|
(typeAnnotation.name: empty);
|
|
177
168
|
throw new Error(
|
|
@@ -218,10 +209,8 @@ function convertDefaultTypeToString(
|
|
|
218
209
|
module.exports = {
|
|
219
210
|
convertDefaultTypeToString,
|
|
220
211
|
getCppTypeForAnnotation,
|
|
221
|
-
getEnumName,
|
|
222
212
|
getEnumMaskName,
|
|
223
213
|
getImports,
|
|
224
|
-
toSafeCppString,
|
|
225
214
|
toIntEnumValueName,
|
|
226
215
|
generateStructName,
|
|
227
216
|
generateEventStructName,
|
|
@@ -38,14 +38,18 @@ const ComponentTemplate = ({
|
|
|
38
38
|
structName,
|
|
39
39
|
dispatchEventName,
|
|
40
40
|
implementation,
|
|
41
|
-
}) =>
|
|
42
|
-
|
|
41
|
+
}) => {
|
|
42
|
+
const capture = implementation.includes('event')
|
|
43
|
+
? 'event=std::move(event)'
|
|
44
|
+
: '';
|
|
45
|
+
return `
|
|
43
46
|
void ${className}EventEmitter::${eventName}(${structName} event) const {
|
|
44
|
-
dispatchEvent("${dispatchEventName}", [
|
|
47
|
+
dispatchEvent("${dispatchEventName}", [${capture}](jsi::Runtime &runtime) {
|
|
45
48
|
${implementation}
|
|
46
49
|
});
|
|
47
50
|
}
|
|
48
51
|
`.trim();
|
|
52
|
+
};
|
|
49
53
|
const BasicComponentTemplate = ({className, eventName, dispatchEventName}) =>
|
|
50
54
|
`
|
|
51
55
|
void ${className}EventEmitter::${eventName}() const {
|
|
@@ -67,14 +67,18 @@ const ComponentTemplate = ({
|
|
|
67
67
|
structName: string,
|
|
68
68
|
dispatchEventName: string,
|
|
69
69
|
implementation: string,
|
|
70
|
-
}) =>
|
|
71
|
-
|
|
70
|
+
}) => {
|
|
71
|
+
const capture = implementation.includes('event')
|
|
72
|
+
? 'event=std::move(event)'
|
|
73
|
+
: '';
|
|
74
|
+
return `
|
|
72
75
|
void ${className}EventEmitter::${eventName}(${structName} event) const {
|
|
73
|
-
dispatchEvent("${dispatchEventName}", [
|
|
76
|
+
dispatchEvent("${dispatchEventName}", [${capture}](jsi::Runtime &runtime) {
|
|
74
77
|
${implementation}
|
|
75
78
|
});
|
|
76
79
|
}
|
|
77
80
|
`.trim();
|
|
81
|
+
};
|
|
78
82
|
|
|
79
83
|
const BasicComponentTemplate = ({
|
|
80
84
|
className,
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
const nullthrows = require('nullthrows');
|
|
14
14
|
const _require = require('./CppHelpers'),
|
|
15
15
|
getCppTypeForAnnotation = _require.getCppTypeForAnnotation,
|
|
16
|
-
toSafeCppString = _require.toSafeCppString,
|
|
17
16
|
generateEventStructName = _require.generateEventStructName;
|
|
18
17
|
const _require2 = require('../Utils'),
|
|
19
|
-
indent = _require2.indent
|
|
18
|
+
indent = _require2.indent,
|
|
19
|
+
toSafeCppString = _require2.toSafeCppString;
|
|
20
20
|
const FileTemplate = ({componentEmitters}) => `
|
|
21
21
|
/**
|
|
22
22
|
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
@@ -14,10 +14,9 @@ const nullthrows = require('nullthrows');
|
|
|
14
14
|
|
|
15
15
|
const {
|
|
16
16
|
getCppTypeForAnnotation,
|
|
17
|
-
toSafeCppString,
|
|
18
17
|
generateEventStructName,
|
|
19
18
|
} = require('./CppHelpers');
|
|
20
|
-
const {indent} = require('../Utils');
|
|
19
|
+
const {indent, toSafeCppString} = require('../Utils');
|
|
21
20
|
|
|
22
21
|
import type {
|
|
23
22
|
ComponentShape,
|
|
@@ -16,10 +16,11 @@ const _require = require('./ComponentsGeneratorUtils.js'),
|
|
|
16
16
|
const _require2 = require('./CppHelpers.js'),
|
|
17
17
|
convertDefaultTypeToString = _require2.convertDefaultTypeToString,
|
|
18
18
|
getEnumMaskName = _require2.getEnumMaskName,
|
|
19
|
-
getEnumName = _require2.getEnumName,
|
|
20
|
-
toSafeCppString = _require2.toSafeCppString,
|
|
21
19
|
generateStructName = _require2.generateStructName,
|
|
22
20
|
toIntEnumValueName = _require2.toIntEnumValueName;
|
|
21
|
+
const _require3 = require('../Utils'),
|
|
22
|
+
getEnumName = _require3.getEnumName,
|
|
23
|
+
toSafeCppString = _require3.toSafeCppString;
|
|
23
24
|
const FileTemplate = ({imports, componentClasses}) => `
|
|
24
25
|
/**
|
|
25
26
|
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
@@ -512,8 +513,6 @@ function generateStruct(structs, componentName, nameParts, properties) {
|
|
|
512
513
|
return;
|
|
513
514
|
case 'Int32EnumTypeAnnotation':
|
|
514
515
|
return;
|
|
515
|
-
case 'DoubleTypeAnnotation':
|
|
516
|
-
return;
|
|
517
516
|
case 'ObjectTypeAnnotation':
|
|
518
517
|
const props = property.typeAnnotation.properties;
|
|
519
518
|
if (props == null) {
|
|
@@ -19,12 +19,12 @@ const {
|
|
|
19
19
|
const {
|
|
20
20
|
convertDefaultTypeToString,
|
|
21
21
|
getEnumMaskName,
|
|
22
|
-
getEnumName,
|
|
23
|
-
toSafeCppString,
|
|
24
22
|
generateStructName,
|
|
25
23
|
toIntEnumValueName,
|
|
26
24
|
} = require('./CppHelpers.js');
|
|
27
25
|
|
|
26
|
+
const {getEnumName, toSafeCppString} = require('../Utils');
|
|
27
|
+
|
|
28
28
|
import type {
|
|
29
29
|
ExtendsPropsShape,
|
|
30
30
|
NamedShape,
|
|
@@ -667,8 +667,6 @@ function generateStruct(
|
|
|
667
667
|
return;
|
|
668
668
|
case 'Int32EnumTypeAnnotation':
|
|
669
669
|
return;
|
|
670
|
-
case 'DoubleTypeAnnotation':
|
|
671
|
-
return;
|
|
672
670
|
case 'ObjectTypeAnnotation':
|
|
673
671
|
const props = property.typeAnnotation.properties;
|
|
674
672
|
if (props == null) {
|
|
@@ -104,6 +104,8 @@ function getJavaValueForProp(prop, componentName) {
|
|
|
104
104
|
return '(ReadableMap) value';
|
|
105
105
|
case 'EdgeInsetsPrimitive':
|
|
106
106
|
return '(ReadableMap) value';
|
|
107
|
+
case 'DimensionPrimitive':
|
|
108
|
+
return 'DimensionPropConverter.getDimension(value)';
|
|
107
109
|
default:
|
|
108
110
|
typeAnnotation.name;
|
|
109
111
|
throw new Error('Received unknown ReservedPropTypeAnnotation');
|
|
@@ -128,6 +128,8 @@ function getJavaValueForProp(
|
|
|
128
128
|
return '(ReadableMap) value';
|
|
129
129
|
case 'EdgeInsetsPrimitive':
|
|
130
130
|
return '(ReadableMap) value';
|
|
131
|
+
case 'DimensionPrimitive':
|
|
132
|
+
return 'DimensionPropConverter.getDimension(value)';
|
|
131
133
|
default:
|
|
132
134
|
(typeAnnotation.name: empty);
|
|
133
135
|
throw new Error('Received unknown ReservedPropTypeAnnotation');
|
|
@@ -84,6 +84,9 @@ function getJavaValueForProp(prop, imports) {
|
|
|
84
84
|
case 'EdgeInsetsPrimitive':
|
|
85
85
|
addNullable(imports);
|
|
86
86
|
return '@Nullable ReadableMap value';
|
|
87
|
+
case 'DimensionPrimitive':
|
|
88
|
+
addNullable(imports);
|
|
89
|
+
return '@Nullable YogaValue value';
|
|
87
90
|
default:
|
|
88
91
|
typeAnnotation.name;
|
|
89
92
|
throw new Error('Received unknown ReservedPropTypeAnnotation');
|
|
@@ -106,6 +106,9 @@ function getJavaValueForProp(
|
|
|
106
106
|
case 'EdgeInsetsPrimitive':
|
|
107
107
|
addNullable(imports);
|
|
108
108
|
return '@Nullable ReadableMap value';
|
|
109
|
+
case 'DimensionPrimitive':
|
|
110
|
+
addNullable(imports);
|
|
111
|
+
return '@Nullable YogaValue value';
|
|
109
112
|
default:
|
|
110
113
|
(typeAnnotation.name: empty);
|
|
111
114
|
throw new Error('Received unknown ReservedPropTypeAnnotation');
|
|
@@ -17,6 +17,7 @@ function toJavaType(typeAnnotation, addImport) {
|
|
|
17
17
|
const importReadableMap = () =>
|
|
18
18
|
addImport('com.facebook.react.bridge.ReadableMap');
|
|
19
19
|
const importArrayList = () => addImport('java.util.ArrayList');
|
|
20
|
+
const importYogaValue = () => addImport('com.facebook.yoga.YogaValue');
|
|
20
21
|
switch (typeAnnotation.type) {
|
|
21
22
|
/**
|
|
22
23
|
* Primitives
|
|
@@ -92,6 +93,10 @@ function toJavaType(typeAnnotation, addImport) {
|
|
|
92
93
|
importNullable();
|
|
93
94
|
importReadableMap();
|
|
94
95
|
return '@Nullable ReadableMap';
|
|
96
|
+
case 'DimensionPrimitive':
|
|
97
|
+
importNullable();
|
|
98
|
+
importYogaValue();
|
|
99
|
+
return '@Nullable YogaValue';
|
|
95
100
|
default:
|
|
96
101
|
typeAnnotation.name;
|
|
97
102
|
throw new Error(
|
|
@@ -175,6 +180,9 @@ function toJavaType(typeAnnotation, addImport) {
|
|
|
175
180
|
case 'EdgeInsetsPrimitive':
|
|
176
181
|
importReadableMap();
|
|
177
182
|
return 'ReadableMap';
|
|
183
|
+
case 'DimensionPrimitive':
|
|
184
|
+
importYogaValue();
|
|
185
|
+
return 'YogaValue';
|
|
178
186
|
default:
|
|
179
187
|
elementType.name;
|
|
180
188
|
throw new Error(
|
|
@@ -23,6 +23,7 @@ function toJavaType(
|
|
|
23
23
|
const importReadableMap = () =>
|
|
24
24
|
addImport('com.facebook.react.bridge.ReadableMap');
|
|
25
25
|
const importArrayList = () => addImport('java.util.ArrayList');
|
|
26
|
+
const importYogaValue = () => addImport('com.facebook.yoga.YogaValue');
|
|
26
27
|
switch (typeAnnotation.type) {
|
|
27
28
|
/**
|
|
28
29
|
* Primitives
|
|
@@ -98,6 +99,12 @@ function toJavaType(
|
|
|
98
99
|
importNullable();
|
|
99
100
|
importReadableMap();
|
|
100
101
|
return '@Nullable ReadableMap';
|
|
102
|
+
|
|
103
|
+
case 'DimensionPrimitive':
|
|
104
|
+
importNullable();
|
|
105
|
+
importYogaValue();
|
|
106
|
+
return '@Nullable YogaValue';
|
|
107
|
+
|
|
101
108
|
default:
|
|
102
109
|
(typeAnnotation.name: empty);
|
|
103
110
|
throw new Error(
|
|
@@ -182,6 +189,11 @@ function toJavaType(
|
|
|
182
189
|
case 'EdgeInsetsPrimitive':
|
|
183
190
|
importReadableMap();
|
|
184
191
|
return 'ReadableMap';
|
|
192
|
+
|
|
193
|
+
case 'DimensionPrimitive':
|
|
194
|
+
importYogaValue();
|
|
195
|
+
return 'YogaValue';
|
|
196
|
+
|
|
185
197
|
default:
|
|
186
198
|
(elementType.name: empty);
|
|
187
199
|
throw new Error(
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
const _require = require('./CppHelpers'),
|
|
14
|
-
getImports = _require.getImports
|
|
15
|
-
|
|
14
|
+
getImports = _require.getImports;
|
|
15
|
+
const _require2 = require('../Utils'),
|
|
16
|
+
toSafeCppString = _require2.toSafeCppString;
|
|
16
17
|
const FileTemplate = ({libraryName, imports, componentTests}) =>
|
|
17
18
|
`
|
|
18
19
|
/**
|
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
import type {ComponentShape, PropTypeAnnotation} from '../../CodegenSchema';
|
|
13
13
|
import type {SchemaType} from '../../CodegenSchema';
|
|
14
14
|
|
|
15
|
-
const {getImports
|
|
15
|
+
const {getImports} = require('./CppHelpers');
|
|
16
|
+
|
|
17
|
+
const {toSafeCppString} = require('../Utils');
|
|
16
18
|
|
|
17
19
|
type FilesOutput = Map<string, string>;
|
|
18
20
|
type PropValueType = string | number | boolean;
|
|
@@ -51,7 +51,7 @@ function getReactDiffProcessValue(typeAnnotation) {
|
|
|
51
51
|
switch (typeAnnotation.name) {
|
|
52
52
|
case 'ColorPrimitive':
|
|
53
53
|
return j.template
|
|
54
|
-
.expression`{ process: require('react-native/Libraries/StyleSheet/processColor') }`;
|
|
54
|
+
.expression`{ process: require('react-native/Libraries/StyleSheet/processColor').default }`;
|
|
55
55
|
case 'ImageSourcePrimitive':
|
|
56
56
|
return j.template
|
|
57
57
|
.expression`{ process: require('react-native/Libraries/Image/resolveAssetSource') }`;
|
|
@@ -63,6 +63,8 @@ function getReactDiffProcessValue(typeAnnotation) {
|
|
|
63
63
|
case 'EdgeInsetsPrimitive':
|
|
64
64
|
return j.template
|
|
65
65
|
.expression`{ diff: require('react-native/Libraries/Utilities/differ/insetsDiffer') }`;
|
|
66
|
+
case 'DimensionPrimitive':
|
|
67
|
+
return j.literal(true);
|
|
66
68
|
default:
|
|
67
69
|
typeAnnotation.name;
|
|
68
70
|
throw new Error(
|
|
@@ -76,8 +78,9 @@ function getReactDiffProcessValue(typeAnnotation) {
|
|
|
76
78
|
return j.template
|
|
77
79
|
.expression`{ process: require('react-native/Libraries/StyleSheet/processColorArray') }`;
|
|
78
80
|
case 'ImageSourcePrimitive':
|
|
79
|
-
return j.literal(true);
|
|
80
81
|
case 'PointPrimitive':
|
|
82
|
+
case 'EdgeInsetsPrimitive':
|
|
83
|
+
case 'DimensionPrimitive':
|
|
81
84
|
return j.literal(true);
|
|
82
85
|
default:
|
|
83
86
|
throw new Error(
|
|
@@ -65,7 +65,7 @@ function getReactDiffProcessValue(typeAnnotation: PropTypeAnnotation) {
|
|
|
65
65
|
switch (typeAnnotation.name) {
|
|
66
66
|
case 'ColorPrimitive':
|
|
67
67
|
return j.template
|
|
68
|
-
.expression`{ process: require('react-native/Libraries/StyleSheet/processColor') }`;
|
|
68
|
+
.expression`{ process: require('react-native/Libraries/StyleSheet/processColor').default }`;
|
|
69
69
|
case 'ImageSourcePrimitive':
|
|
70
70
|
return j.template
|
|
71
71
|
.expression`{ process: require('react-native/Libraries/Image/resolveAssetSource') }`;
|
|
@@ -77,6 +77,8 @@ function getReactDiffProcessValue(typeAnnotation: PropTypeAnnotation) {
|
|
|
77
77
|
case 'EdgeInsetsPrimitive':
|
|
78
78
|
return j.template
|
|
79
79
|
.expression`{ diff: require('react-native/Libraries/Utilities/differ/insetsDiffer') }`;
|
|
80
|
+
case 'DimensionPrimitive':
|
|
81
|
+
return j.literal(true);
|
|
80
82
|
default:
|
|
81
83
|
(typeAnnotation.name: empty);
|
|
82
84
|
throw new Error(
|
|
@@ -90,8 +92,9 @@ function getReactDiffProcessValue(typeAnnotation: PropTypeAnnotation) {
|
|
|
90
92
|
return j.template
|
|
91
93
|
.expression`{ process: require('react-native/Libraries/StyleSheet/processColorArray') }`;
|
|
92
94
|
case 'ImageSourcePrimitive':
|
|
93
|
-
return j.literal(true);
|
|
94
95
|
case 'PointPrimitive':
|
|
96
|
+
case 'EdgeInsetsPrimitive':
|
|
97
|
+
case 'DimensionPrimitive':
|
|
95
98
|
return j.literal(true);
|
|
96
99
|
default:
|
|
97
100
|
throw new Error(
|
|
@@ -60,6 +60,15 @@ function getImports(component, type) {
|
|
|
60
60
|
case 'EdgeInsetsPrimitive':
|
|
61
61
|
imports.add('import com.facebook.react.bridge.ReadableMap;');
|
|
62
62
|
return;
|
|
63
|
+
case 'DimensionPrimitive':
|
|
64
|
+
if (type === 'delegate') {
|
|
65
|
+
imports.add(
|
|
66
|
+
'import com.facebook.react.bridge.DimensionPropConverter;',
|
|
67
|
+
);
|
|
68
|
+
} else {
|
|
69
|
+
imports.add('import com.facebook.yoga.YogaValue;');
|
|
70
|
+
}
|
|
71
|
+
return;
|
|
63
72
|
default:
|
|
64
73
|
name;
|
|
65
74
|
throw new Error(`Invalid ReservedPropTypeAnnotation name, got ${name}`);
|
|
@@ -66,10 +66,12 @@ function getImports(
|
|
|
66
66
|
| 'EdgeInsetsPrimitive'
|
|
67
67
|
| 'ImageSourcePrimitive'
|
|
68
68
|
| 'PointPrimitive'
|
|
69
|
+
| 'DimensionPrimitive'
|
|
69
70
|
| $TEMPORARY$string<'ColorPrimitive'>
|
|
70
71
|
| $TEMPORARY$string<'EdgeInsetsPrimitive'>
|
|
71
72
|
| $TEMPORARY$string<'ImageSourcePrimitive'>
|
|
72
|
-
| $TEMPORARY$string<'PointPrimitive'
|
|
73
|
+
| $TEMPORARY$string<'PointPrimitive'>
|
|
74
|
+
| $TEMPORARY$string<'DimensionPrimitive'>,
|
|
73
75
|
) {
|
|
74
76
|
switch (name) {
|
|
75
77
|
case 'ColorPrimitive':
|
|
@@ -86,6 +88,15 @@ function getImports(
|
|
|
86
88
|
case 'EdgeInsetsPrimitive':
|
|
87
89
|
imports.add('import com.facebook.react.bridge.ReadableMap;');
|
|
88
90
|
return;
|
|
91
|
+
case 'DimensionPrimitive':
|
|
92
|
+
if (type === 'delegate') {
|
|
93
|
+
imports.add(
|
|
94
|
+
'import com.facebook.react.bridge.DimensionPropConverter;',
|
|
95
|
+
);
|
|
96
|
+
} else {
|
|
97
|
+
imports.add('import com.facebook.yoga.YogaValue;');
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
89
100
|
default:
|
|
90
101
|
(name: empty);
|
|
91
102
|
throw new Error(`Invalid ReservedPropTypeAnnotation name, got ${name}`);
|
|
@@ -512,6 +512,35 @@ const INSETS_PROP = {
|
|
|
512
512
|
},
|
|
513
513
|
},
|
|
514
514
|
};
|
|
515
|
+
const DIMENSION_PROP = {
|
|
516
|
+
modules: {
|
|
517
|
+
CustomView: {
|
|
518
|
+
type: 'Component',
|
|
519
|
+
components: {
|
|
520
|
+
DimensionPropNativeComponent: {
|
|
521
|
+
extendsProps: [
|
|
522
|
+
{
|
|
523
|
+
type: 'ReactNativeBuiltInType',
|
|
524
|
+
knownTypeName: 'ReactNativeCoreViewProps',
|
|
525
|
+
},
|
|
526
|
+
],
|
|
527
|
+
events: [],
|
|
528
|
+
props: [
|
|
529
|
+
{
|
|
530
|
+
name: 'marginBack',
|
|
531
|
+
optional: true,
|
|
532
|
+
typeAnnotation: {
|
|
533
|
+
type: 'ReservedPropTypeAnnotation',
|
|
534
|
+
name: 'DimensionPrimitive',
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
],
|
|
538
|
+
commands: [],
|
|
539
|
+
},
|
|
540
|
+
},
|
|
541
|
+
},
|
|
542
|
+
},
|
|
543
|
+
};
|
|
515
544
|
const ARRAY_PROPS = {
|
|
516
545
|
modules: {
|
|
517
546
|
Slider: {
|
|
@@ -599,6 +628,17 @@ const ARRAY_PROPS = {
|
|
|
599
628
|
},
|
|
600
629
|
},
|
|
601
630
|
},
|
|
631
|
+
{
|
|
632
|
+
name: 'dimensions',
|
|
633
|
+
optional: true,
|
|
634
|
+
typeAnnotation: {
|
|
635
|
+
type: 'ArrayTypeAnnotation',
|
|
636
|
+
elementType: {
|
|
637
|
+
type: 'ReservedPropTypeAnnotation',
|
|
638
|
+
name: 'DimensionPrimitive',
|
|
639
|
+
},
|
|
640
|
+
},
|
|
641
|
+
},
|
|
602
642
|
{
|
|
603
643
|
name: 'sizes',
|
|
604
644
|
optional: true,
|
|
@@ -1622,6 +1662,7 @@ module.exports = {
|
|
|
1622
1662
|
IMAGE_PROP,
|
|
1623
1663
|
POINT_PROP,
|
|
1624
1664
|
INSETS_PROP,
|
|
1665
|
+
DIMENSION_PROP,
|
|
1625
1666
|
ARRAY_PROPS,
|
|
1626
1667
|
ARRAY_PROPS_WITH_NESTED_OBJECT,
|
|
1627
1668
|
OBJECT_PROPS,
|
|
@@ -526,6 +526,36 @@ const INSETS_PROP: SchemaType = {
|
|
|
526
526
|
},
|
|
527
527
|
};
|
|
528
528
|
|
|
529
|
+
const DIMENSION_PROP: SchemaType = {
|
|
530
|
+
modules: {
|
|
531
|
+
CustomView: {
|
|
532
|
+
type: 'Component',
|
|
533
|
+
components: {
|
|
534
|
+
DimensionPropNativeComponent: {
|
|
535
|
+
extendsProps: [
|
|
536
|
+
{
|
|
537
|
+
type: 'ReactNativeBuiltInType',
|
|
538
|
+
knownTypeName: 'ReactNativeCoreViewProps',
|
|
539
|
+
},
|
|
540
|
+
],
|
|
541
|
+
events: [],
|
|
542
|
+
props: [
|
|
543
|
+
{
|
|
544
|
+
name: 'marginBack',
|
|
545
|
+
optional: true,
|
|
546
|
+
typeAnnotation: {
|
|
547
|
+
type: 'ReservedPropTypeAnnotation',
|
|
548
|
+
name: 'DimensionPrimitive',
|
|
549
|
+
},
|
|
550
|
+
},
|
|
551
|
+
],
|
|
552
|
+
commands: [],
|
|
553
|
+
},
|
|
554
|
+
},
|
|
555
|
+
},
|
|
556
|
+
},
|
|
557
|
+
};
|
|
558
|
+
|
|
529
559
|
const ARRAY_PROPS: SchemaType = {
|
|
530
560
|
modules: {
|
|
531
561
|
Slider: {
|
|
@@ -613,6 +643,17 @@ const ARRAY_PROPS: SchemaType = {
|
|
|
613
643
|
},
|
|
614
644
|
},
|
|
615
645
|
},
|
|
646
|
+
{
|
|
647
|
+
name: 'dimensions',
|
|
648
|
+
optional: true,
|
|
649
|
+
typeAnnotation: {
|
|
650
|
+
type: 'ArrayTypeAnnotation',
|
|
651
|
+
elementType: {
|
|
652
|
+
type: 'ReservedPropTypeAnnotation',
|
|
653
|
+
name: 'DimensionPrimitive',
|
|
654
|
+
},
|
|
655
|
+
},
|
|
656
|
+
},
|
|
616
657
|
{
|
|
617
658
|
name: 'sizes',
|
|
618
659
|
optional: true,
|
|
@@ -1653,6 +1694,7 @@ module.exports = {
|
|
|
1653
1694
|
IMAGE_PROP,
|
|
1654
1695
|
POINT_PROP,
|
|
1655
1696
|
INSETS_PROP,
|
|
1697
|
+
DIMENSION_PROP,
|
|
1656
1698
|
ARRAY_PROPS,
|
|
1657
1699
|
ARRAY_PROPS_WITH_NESTED_OBJECT,
|
|
1658
1700
|
OBJECT_PROPS,
|