@@ -132,9 +132,6 @@ import type {
132
132
JSXMapExpression ,
133
133
JSExpressionMapOrOtherJavascript ,
134
134
JSExpressionOtherJavaScript ,
135
- JSIdentifier ,
136
- JSPropertyAccess ,
137
- JSElementAccess ,
138
135
} from '../../../core/shared/element-template'
139
136
import {
140
137
elementInstanceMetadata ,
@@ -191,16 +188,6 @@ import {
191
188
isJSXMapExpression ,
192
189
arbitraryJSBlock ,
193
190
jsExpressionOtherJavaScript ,
194
- isJSExpressionValue ,
195
- isJSExpressionNestedArray ,
196
- isJSExpressionNestedObject ,
197
- isJSExpressionFunctionCall ,
198
- jsIdentifier ,
199
- jsPropertyAccess ,
200
- jsElementAccess ,
201
- isJSIdentifier ,
202
- isJSPropertyAccess ,
203
- isJSElementAccess ,
204
191
} from '../../../core/shared/element-template'
205
192
import type {
206
193
CanvasRectangle ,
@@ -995,7 +982,7 @@ export const JSExpressionOtherJavaScriptOrJSXMapExpressionKeepDeepEqualityCall:
995
982
export function JSXArrayValueKeepDeepEqualityCall ( ) : KeepDeepEqualityCall < JSXArrayValue > {
996
983
return combine2EqualityCalls (
997
984
( value ) => value . value ,
998
- JSExpressionKeepDeepEqualityCall ,
985
+ JSXAttributeKeepDeepEqualityCall ,
999
986
( value ) => value . comments ,
1000
987
ParsedCommentsKeepDeepEqualityCall ,
1001
988
jsxArrayValue ,
@@ -1005,7 +992,7 @@ export function JSXArrayValueKeepDeepEqualityCall(): KeepDeepEqualityCall<JSXArr
1005
992
export function JSXArraySpreadKeepDeepEqualityCall ( ) : KeepDeepEqualityCall < JSXArraySpread > {
1006
993
return combine2EqualityCalls (
1007
994
( value ) => value . value ,
1008
- JSExpressionKeepDeepEqualityCall ,
995
+ JSXAttributeKeepDeepEqualityCall ,
1009
996
( value ) => value . comments ,
1010
997
ParsedCommentsKeepDeepEqualityCall ,
1011
998
jsxArraySpread ,
@@ -1039,7 +1026,7 @@ export function JSXAttributeNestedArrayKeepDeepEqualityCall(): KeepDeepEqualityC
1039
1026
export function JSXSpreadAssignmentKeepDeepEqualityCall ( ) : KeepDeepEqualityCall < JSXSpreadAssignment > {
1040
1027
return combine2EqualityCalls (
1041
1028
( value ) => value . value ,
1042
- JSExpressionKeepDeepEqualityCall ,
1029
+ JSXAttributeKeepDeepEqualityCall ,
1043
1030
( value ) => value . comments ,
1044
1031
ParsedCommentsKeepDeepEqualityCall ,
1045
1032
jsxSpreadAssignment ,
@@ -1051,7 +1038,7 @@ export function JSXPropertyAssignmentKeepDeepEqualityCall(): KeepDeepEqualityCal
1051
1038
( value ) => value . key ,
1052
1039
createCallWithTripleEquals ( ) ,
1053
1040
( value ) => value . value ,
1054
- JSExpressionKeepDeepEqualityCall ,
1041
+ JSXAttributeKeepDeepEqualityCall ,
1055
1042
( value ) => value . comments ,
1056
1043
ParsedCommentsKeepDeepEqualityCall ,
1057
1044
( value ) => value . keyComments ,
@@ -1089,76 +1076,50 @@ export function JSXAttributeFunctionCallKeepDeepEqualityCall(): KeepDeepEquality
1089
1076
( value ) => value . functionName ,
1090
1077
createCallWithTripleEquals ( ) ,
1091
1078
( value ) => value . parameters ,
1092
- arrayDeepEquality ( JSExpressionKeepDeepEqualityCall ) ,
1079
+ arrayDeepEquality ( JSXAttributeKeepDeepEqualityCall ) ,
1093
1080
( value ) => value . uid ,
1094
1081
createCallWithTripleEquals < string > ( ) ,
1095
1082
jsExpressionFunctionCall ,
1096
1083
)
1097
1084
}
1098
1085
1099
- export const JSExpressionKeepDeepEqualityCall : KeepDeepEqualityCall < JSExpression > = (
1086
+ export const JSXAttributeKeepDeepEqualityCall : KeepDeepEqualityCall < JSExpression > = (
1100
1087
oldAttribute ,
1101
1088
newAttribute ,
1102
1089
) => {
1103
- switch ( oldAttribute . type ) {
1104
- case 'JSX_MAP_EXPRESSION' :
1105
- if ( isJSXMapExpression ( newAttribute ) ) {
1106
- return JSXMapExpressionKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1107
- }
1108
- break
1109
- case 'ATTRIBUTE_VALUE' :
1110
- if ( isJSExpressionValue ( newAttribute ) ) {
1111
- return JSXAttributeValueKeepDeepEqualityCall ( oldAttribute , newAttribute )
1112
- }
1113
- break
1114
- case 'JS_IDENTIFIER' :
1115
- if ( isJSIdentifier ( newAttribute ) ) {
1116
- return JSIdentifierKeepDeepEquality ( ) ( oldAttribute , newAttribute )
1117
- }
1118
- break
1119
- case 'JS_ELEMENT_ACCESS' :
1120
- if ( isJSElementAccess ( newAttribute ) ) {
1121
- return JSElementAccessKeepDeepEquality ( ) ( oldAttribute , newAttribute )
1122
- }
1123
- break
1124
- case 'JS_PROPERTY_ACCESS' :
1125
- if ( isJSPropertyAccess ( newAttribute ) ) {
1126
- return JSPropertyAccessKeepDeepEquality ( ) ( oldAttribute , newAttribute )
1127
- }
1128
- break
1129
- case 'ATTRIBUTE_NESTED_ARRAY' :
1130
- if ( isJSExpressionNestedArray ( newAttribute ) ) {
1131
- return JSXAttributeNestedArrayKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1132
- }
1133
- break
1134
- case 'ATTRIBUTE_NESTED_OBJECT' :
1135
- if ( isJSExpressionNestedObject ( newAttribute ) ) {
1136
- return JSXAttributeNestedObjectKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1137
- }
1138
- break
1139
- case 'ATTRIBUTE_FUNCTION_CALL' :
1140
- if ( isJSExpressionFunctionCall ( newAttribute ) ) {
1141
- return JSXAttributeFunctionCallKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1142
- }
1143
- break
1144
- case 'ATTRIBUTE_OTHER_JAVASCRIPT' :
1145
- if ( isJSExpressionOtherJavaScript ( newAttribute ) ) {
1146
- return JSExpressionOtherJavaScriptKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1147
- }
1148
- break
1149
- default :
1150
- assertNever ( oldAttribute )
1090
+ if ( isJSXAttributeValue ( oldAttribute ) && isJSXAttributeValue ( newAttribute ) ) {
1091
+ return JSXAttributeValueKeepDeepEqualityCall ( oldAttribute , newAttribute )
1092
+ } else if (
1093
+ modifiableAttributeIsAttributeOtherJavaScript ( oldAttribute ) &&
1094
+ modifiableAttributeIsAttributeOtherJavaScript ( newAttribute )
1095
+ ) {
1096
+ return JSExpressionOtherJavaScriptKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1097
+ } else if (
1098
+ modifiableAttributeIsAttributeNestedArray ( oldAttribute ) &&
1099
+ modifiableAttributeIsAttributeNestedArray ( newAttribute )
1100
+ ) {
1101
+ return JSXAttributeNestedArrayKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1102
+ } else if (
1103
+ modifiableAttributeIsAttributeNestedObject ( oldAttribute ) &&
1104
+ modifiableAttributeIsAttributeNestedObject ( newAttribute )
1105
+ ) {
1106
+ return JSXAttributeNestedObjectKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1107
+ } else if (
1108
+ modifiableAttributeIsAttributeFunctionCall ( oldAttribute ) &&
1109
+ modifiableAttributeIsAttributeFunctionCall ( newAttribute )
1110
+ ) {
1111
+ return JSXAttributeFunctionCallKeepDeepEqualityCall ( ) ( oldAttribute , newAttribute )
1112
+ } else {
1113
+ return keepDeepEqualityResult ( newAttribute , false )
1151
1114
}
1152
-
1153
- return keepDeepEqualityResult ( newAttribute , false )
1154
1115
}
1155
1116
1156
1117
export function JSXAttributesEntryDeepEqualityCall ( ) : KeepDeepEqualityCall < JSXAttributesEntry > {
1157
1118
return combine3EqualityCalls (
1158
1119
( entry ) => entry . key ,
1159
1120
createCallWithTripleEquals ( ) ,
1160
1121
( entry ) => entry . value ,
1161
- JSExpressionKeepDeepEqualityCall ,
1122
+ JSXAttributeKeepDeepEqualityCall ,
1162
1123
( entry ) => entry . comments ,
1163
1124
ParsedCommentsKeepDeepEqualityCall ,
1164
1125
jsxAttributesEntry ,
@@ -1168,7 +1129,7 @@ export function JSXAttributesEntryDeepEqualityCall(): KeepDeepEqualityCall<JSXAt
1168
1129
export function JSXAttributesSpreadDeepEqualityCall ( ) : KeepDeepEqualityCall < JSXAttributesSpread > {
1169
1130
return combine2EqualityCalls (
1170
1131
( entry ) => entry . spreadValue ,
1171
- JSExpressionKeepDeepEqualityCall ,
1132
+ JSXAttributeKeepDeepEqualityCall ,
1172
1133
( entry ) => entry . comments ,
1173
1134
ParsedCommentsKeepDeepEqualityCall ,
1174
1135
jsxAttributesSpread ,
@@ -1244,119 +1205,41 @@ export function ArbitraryJSBlockKeepDeepEquality(): KeepDeepEqualityCall<Arbitra
1244
1205
)
1245
1206
}
1246
1207
1247
- export function JSIdentifierKeepDeepEquality ( ) : KeepDeepEqualityCall < JSIdentifier > {
1248
- return combine3EqualityCalls (
1249
- ( identifier ) => identifier . name ,
1250
- createCallWithTripleEquals < string > ( ) ,
1251
- ( identifier ) => identifier . uid ,
1252
- createCallWithTripleEquals < string > ( ) ,
1253
- ( identifier ) => identifier . comments ,
1254
- ParsedCommentsKeepDeepEqualityCall ,
1255
- jsIdentifier ,
1256
- )
1257
- }
1258
-
1259
- export function JSPropertyAccessKeepDeepEquality ( ) : KeepDeepEqualityCall < JSPropertyAccess > {
1260
- return combine4EqualityCalls (
1261
- ( access ) => access . onValue ,
1262
- JSExpressionKeepDeepEqualityCall ,
1263
- ( access ) => access . property ,
1264
- createCallWithTripleEquals < string > ( ) ,
1265
- ( access ) => access . uid ,
1266
- createCallWithTripleEquals < string > ( ) ,
1267
- ( access ) => access . comments ,
1268
- ParsedCommentsKeepDeepEqualityCall ,
1269
- jsPropertyAccess ,
1270
- )
1271
- }
1272
-
1273
- export function JSElementAccessKeepDeepEquality ( ) : KeepDeepEqualityCall < JSElementAccess > {
1274
- return combine4EqualityCalls (
1275
- ( access ) => access . onValue ,
1276
- JSExpressionKeepDeepEqualityCall ,
1277
- ( access ) => access . element ,
1278
- JSExpressionKeepDeepEqualityCall ,
1279
- ( access ) => access . uid ,
1280
- createCallWithTripleEquals < string > ( ) ,
1281
- ( access ) => access . comments ,
1282
- ParsedCommentsKeepDeepEqualityCall ,
1283
- jsElementAccess ,
1284
- )
1285
- }
1286
-
1287
1208
export function JSXElementChildKeepDeepEquality ( ) : KeepDeepEqualityCall < JSXElementChild > {
1288
1209
return ( oldElement , newElement ) => {
1289
- switch ( oldElement . type ) {
1290
- case 'JSX_ELEMENT' :
1291
- if ( isJSXElement ( newElement ) ) {
1292
- return JSXElementKeepDeepEquality ( oldElement , newElement )
1293
- }
1294
- break
1295
- case 'JSX_FRAGMENT' :
1296
- if ( isJSXFragment ( newElement ) ) {
1297
- return JSXFragmentKeepDeepEquality ( oldElement , newElement )
1298
- }
1299
- break
1300
- case 'JSX_TEXT_BLOCK' :
1301
- if ( isJSXTextBlock ( newElement ) ) {
1302
- return JSXTextBlockKeepDeepEquality ( oldElement , newElement )
1303
- }
1304
- break
1305
- case 'JSX_CONDITIONAL_EXPRESSION' :
1306
- if ( isJSXConditionalExpression ( newElement ) ) {
1307
- return JSXConditionalExpressionKeepDeepEquality ( oldElement , newElement )
1308
- }
1309
- break
1310
- case 'JSX_MAP_EXPRESSION' :
1311
- if ( isJSXMapExpression ( newElement ) ) {
1312
- return JSXMapExpressionKeepDeepEqualityCall ( ) ( oldElement , newElement )
1313
- }
1314
- break
1315
- case 'ATTRIBUTE_VALUE' :
1316
- if ( isJSExpressionValue ( newElement ) ) {
1317
- return JSXAttributeValueKeepDeepEqualityCall ( oldElement , newElement )
1318
- }
1319
- break
1320
- case 'JS_IDENTIFIER' :
1321
- if ( isJSIdentifier ( newElement ) ) {
1322
- return JSIdentifierKeepDeepEquality ( ) ( oldElement , newElement )
1323
- }
1324
- break
1325
- case 'JS_ELEMENT_ACCESS' :
1326
- if ( isJSElementAccess ( newElement ) ) {
1327
- return JSElementAccessKeepDeepEquality ( ) ( oldElement , newElement )
1328
- }
1329
- break
1330
- case 'JS_PROPERTY_ACCESS' :
1331
- if ( isJSPropertyAccess ( newElement ) ) {
1332
- return JSPropertyAccessKeepDeepEquality ( ) ( oldElement , newElement )
1333
- }
1334
- break
1335
- case 'ATTRIBUTE_NESTED_ARRAY' :
1336
- if ( isJSExpressionNestedArray ( newElement ) ) {
1337
- return JSXAttributeNestedArrayKeepDeepEqualityCall ( ) ( oldElement , newElement )
1338
- }
1339
- break
1340
- case 'ATTRIBUTE_NESTED_OBJECT' :
1341
- if ( isJSExpressionNestedObject ( newElement ) ) {
1342
- return JSXAttributeNestedObjectKeepDeepEqualityCall ( ) ( oldElement , newElement )
1343
- }
1344
- break
1345
- case 'ATTRIBUTE_FUNCTION_CALL' :
1346
- if ( isJSExpressionFunctionCall ( newElement ) ) {
1347
- return JSXAttributeFunctionCallKeepDeepEqualityCall ( ) ( oldElement , newElement )
1348
- }
1349
- break
1350
- case 'ATTRIBUTE_OTHER_JAVASCRIPT' :
1351
- if ( isJSExpressionOtherJavaScript ( newElement ) ) {
1352
- return JSExpressionOtherJavaScriptKeepDeepEqualityCall ( ) ( oldElement , newElement )
1353
- }
1354
- break
1355
- default :
1356
- assertNever ( oldElement )
1210
+ if ( isJSXElement ( oldElement ) && isJSXElement ( newElement ) ) {
1211
+ return JSXElementKeepDeepEquality ( oldElement , newElement )
1212
+ } else if ( isJSXTextBlock ( oldElement ) && isJSXTextBlock ( newElement ) ) {
1213
+ return JSXTextBlockKeepDeepEquality ( oldElement , newElement )
1214
+ } else if ( isJSXFragment ( oldElement ) && isJSXFragment ( newElement ) ) {
1215
+ return JSXFragmentKeepDeepEquality ( oldElement , newElement )
1216
+ } else if ( isJSXConditionalExpression ( oldElement ) && isJSXConditionalExpression ( newElement ) ) {
1217
+ return JSXConditionalExpressionKeepDeepEquality ( oldElement , newElement )
1218
+ } else if ( oldElement . type === 'ATTRIBUTE_VALUE' && newElement . type === 'ATTRIBUTE_VALUE' ) {
1219
+ return JSXAttributeValueKeepDeepEqualityCall ( oldElement , newElement )
1220
+ } else if (
1221
+ oldElement . type === 'ATTRIBUTE_OTHER_JAVASCRIPT' &&
1222
+ newElement . type === 'ATTRIBUTE_OTHER_JAVASCRIPT'
1223
+ ) {
1224
+ return JSExpressionOtherJavaScriptKeepDeepEqualityCall ( ) ( oldElement , newElement )
1225
+ } else if (
1226
+ oldElement . type === 'ATTRIBUTE_NESTED_ARRAY' &&
1227
+ newElement . type === 'ATTRIBUTE_NESTED_ARRAY'
1228
+ ) {
1229
+ return JSXAttributeNestedArrayKeepDeepEqualityCall ( ) ( oldElement , newElement )
1230
+ } else if (
1231
+ oldElement . type === 'ATTRIBUTE_NESTED_OBJECT' &&
1232
+ newElement . type === 'ATTRIBUTE_NESTED_OBJECT'
1233
+ ) {
1234
+ return JSXAttributeNestedObjectKeepDeepEqualityCall ( ) ( oldElement , newElement )
1235
+ } else if (
1236
+ oldElement . type === 'ATTRIBUTE_FUNCTION_CALL' &&
1237
+ newElement . type === 'ATTRIBUTE_FUNCTION_CALL'
1238
+ ) {
1239
+ return JSXAttributeFunctionCallKeepDeepEqualityCall ( ) ( oldElement , newElement )
1240
+ } else {
1241
+ return keepDeepEqualityResult ( newElement , false )
1357
1242
}
1358
-
1359
- return keepDeepEqualityResult ( newElement , false )
1360
1243
}
1361
1244
}
1362
1245
@@ -1472,7 +1355,7 @@ export const JSXConditionalExpressionKeepDeepEquality: KeepDeepEqualityCall<JSXC
1472
1355
( conditional ) => conditional . uid ,
1473
1356
StringKeepDeepEquality ,
1474
1357
( conditional ) => conditional . condition ,
1475
- JSExpressionKeepDeepEqualityCall ,
1358
+ JSXAttributeKeepDeepEqualityCall ,
1476
1359
( conditional ) => conditional . originalConditionString ,
1477
1360
StringKeepDeepEquality ,
1478
1361
( conditional ) => conditional . whenTrue ,
@@ -2087,7 +1970,7 @@ export const EditorStateCanvasTransientPropertyKeepDeepEquality: KeepDeepEqualit
2087
1970
( property ) => property . elementPath ,
2088
1971
ElementPathKeepDeepEquality ,
2089
1972
( property ) => property . attributesToUpdate ,
2090
- objectDeepEquality ( JSExpressionKeepDeepEqualityCall ) ,
1973
+ objectDeepEquality ( JSXAttributeKeepDeepEqualityCall ) ,
2091
1974
editorStateCanvasTransientProperty ,
2092
1975
)
2093
1976
@@ -4148,7 +4031,7 @@ export const ValueAtPathDeepEquality: KeepDeepEqualityCall<ValueAtPath> = combin
4148
4031
( c ) => c . path ,
4149
4032
PropertyPathKeepDeepEquality ( ) ,
4150
4033
( c ) => c . value ,
4151
- JSExpressionKeepDeepEqualityCall ,
4034
+ JSXAttributeKeepDeepEqualityCall ,
4152
4035
valueAtPath ,
4153
4036
)
4154
4037
0 commit comments