Skip to content

Commit 1e2d973

Browse files
authored
Revert "fix(editor) Fix deep equality checks for new expression types. (#4971)" (#4981)
This reverts commit c59e60a.
1 parent 19f1b17 commit 1e2d973

File tree

2 files changed

+71
-188
lines changed

2 files changed

+71
-188
lines changed

editor/src/components/editor/store/store-deep-equality-instances.spec.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import {
3939
JSXArraySpreadKeepDeepEqualityCall,
4040
JSXArrayValueKeepDeepEqualityCall,
4141
JSXAttributeFunctionCallKeepDeepEqualityCall,
42-
JSExpressionKeepDeepEqualityCall,
42+
JSXAttributeKeepDeepEqualityCall,
4343
JSXAttributeNestedArrayKeepDeepEqualityCall,
4444
JSXAttributeNestedObjectKeepDeepEqualityCall,
4545
JSExpressionOtherJavaScriptKeepDeepEqualityCall,
@@ -893,17 +893,17 @@ describe('JSXAttributeKeepDeepEqualityCall', () => {
893893
const newDifferentValue = jsExpressionValue('new', emptyComments, 'new')
894894

895895
it('same reference returns the same reference', () => {
896-
const result = JSExpressionKeepDeepEqualityCall(oldValue, oldValue)
896+
const result = JSXAttributeKeepDeepEqualityCall(oldValue, oldValue)
897897
expect(result.value).toBe(oldValue)
898898
expect(result.areEqual).toEqual(true)
899899
})
900900
it('same value returns the same reference', () => {
901-
const result = JSExpressionKeepDeepEqualityCall(oldValue, newSameValue)
901+
const result = JSXAttributeKeepDeepEqualityCall(oldValue, newSameValue)
902902
expect(result.value).toBe(oldValue)
903903
expect(result.areEqual).toEqual(true)
904904
})
905905
it('different but similar value handled appropriately', () => {
906-
const result = JSExpressionKeepDeepEqualityCall(oldValue, newDifferentValue)
906+
const result = JSXAttributeKeepDeepEqualityCall(oldValue, newDifferentValue)
907907
expect(result.value.type).toBe(oldValue.type)
908908
expect((result.value as JSExpressionValue<string>).value).toBe(
909909
(newDifferentValue as JSExpressionValue<string>).value,

editor/src/components/editor/store/store-deep-equality-instances.ts

+67-184
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,6 @@ import type {
132132
JSXMapExpression,
133133
JSExpressionMapOrOtherJavascript,
134134
JSExpressionOtherJavaScript,
135-
JSIdentifier,
136-
JSPropertyAccess,
137-
JSElementAccess,
138135
} from '../../../core/shared/element-template'
139136
import {
140137
elementInstanceMetadata,
@@ -191,16 +188,6 @@ import {
191188
isJSXMapExpression,
192189
arbitraryJSBlock,
193190
jsExpressionOtherJavaScript,
194-
isJSExpressionValue,
195-
isJSExpressionNestedArray,
196-
isJSExpressionNestedObject,
197-
isJSExpressionFunctionCall,
198-
jsIdentifier,
199-
jsPropertyAccess,
200-
jsElementAccess,
201-
isJSIdentifier,
202-
isJSPropertyAccess,
203-
isJSElementAccess,
204191
} from '../../../core/shared/element-template'
205192
import type {
206193
CanvasRectangle,
@@ -995,7 +982,7 @@ export const JSExpressionOtherJavaScriptOrJSXMapExpressionKeepDeepEqualityCall:
995982
export function JSXArrayValueKeepDeepEqualityCall(): KeepDeepEqualityCall<JSXArrayValue> {
996983
return combine2EqualityCalls(
997984
(value) => value.value,
998-
JSExpressionKeepDeepEqualityCall,
985+
JSXAttributeKeepDeepEqualityCall,
999986
(value) => value.comments,
1000987
ParsedCommentsKeepDeepEqualityCall,
1001988
jsxArrayValue,
@@ -1005,7 +992,7 @@ export function JSXArrayValueKeepDeepEqualityCall(): KeepDeepEqualityCall<JSXArr
1005992
export function JSXArraySpreadKeepDeepEqualityCall(): KeepDeepEqualityCall<JSXArraySpread> {
1006993
return combine2EqualityCalls(
1007994
(value) => value.value,
1008-
JSExpressionKeepDeepEqualityCall,
995+
JSXAttributeKeepDeepEqualityCall,
1009996
(value) => value.comments,
1010997
ParsedCommentsKeepDeepEqualityCall,
1011998
jsxArraySpread,
@@ -1039,7 +1026,7 @@ export function JSXAttributeNestedArrayKeepDeepEqualityCall(): KeepDeepEqualityC
10391026
export function JSXSpreadAssignmentKeepDeepEqualityCall(): KeepDeepEqualityCall<JSXSpreadAssignment> {
10401027
return combine2EqualityCalls(
10411028
(value) => value.value,
1042-
JSExpressionKeepDeepEqualityCall,
1029+
JSXAttributeKeepDeepEqualityCall,
10431030
(value) => value.comments,
10441031
ParsedCommentsKeepDeepEqualityCall,
10451032
jsxSpreadAssignment,
@@ -1051,7 +1038,7 @@ export function JSXPropertyAssignmentKeepDeepEqualityCall(): KeepDeepEqualityCal
10511038
(value) => value.key,
10521039
createCallWithTripleEquals(),
10531040
(value) => value.value,
1054-
JSExpressionKeepDeepEqualityCall,
1041+
JSXAttributeKeepDeepEqualityCall,
10551042
(value) => value.comments,
10561043
ParsedCommentsKeepDeepEqualityCall,
10571044
(value) => value.keyComments,
@@ -1089,76 +1076,50 @@ export function JSXAttributeFunctionCallKeepDeepEqualityCall(): KeepDeepEquality
10891076
(value) => value.functionName,
10901077
createCallWithTripleEquals(),
10911078
(value) => value.parameters,
1092-
arrayDeepEquality(JSExpressionKeepDeepEqualityCall),
1079+
arrayDeepEquality(JSXAttributeKeepDeepEqualityCall),
10931080
(value) => value.uid,
10941081
createCallWithTripleEquals<string>(),
10951082
jsExpressionFunctionCall,
10961083
)
10971084
}
10981085

1099-
export const JSExpressionKeepDeepEqualityCall: KeepDeepEqualityCall<JSExpression> = (
1086+
export const JSXAttributeKeepDeepEqualityCall: KeepDeepEqualityCall<JSExpression> = (
11001087
oldAttribute,
11011088
newAttribute,
11021089
) => {
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)
11511114
}
1152-
1153-
return keepDeepEqualityResult(newAttribute, false)
11541115
}
11551116

11561117
export function JSXAttributesEntryDeepEqualityCall(): KeepDeepEqualityCall<JSXAttributesEntry> {
11571118
return combine3EqualityCalls(
11581119
(entry) => entry.key,
11591120
createCallWithTripleEquals(),
11601121
(entry) => entry.value,
1161-
JSExpressionKeepDeepEqualityCall,
1122+
JSXAttributeKeepDeepEqualityCall,
11621123
(entry) => entry.comments,
11631124
ParsedCommentsKeepDeepEqualityCall,
11641125
jsxAttributesEntry,
@@ -1168,7 +1129,7 @@ export function JSXAttributesEntryDeepEqualityCall(): KeepDeepEqualityCall<JSXAt
11681129
export function JSXAttributesSpreadDeepEqualityCall(): KeepDeepEqualityCall<JSXAttributesSpread> {
11691130
return combine2EqualityCalls(
11701131
(entry) => entry.spreadValue,
1171-
JSExpressionKeepDeepEqualityCall,
1132+
JSXAttributeKeepDeepEqualityCall,
11721133
(entry) => entry.comments,
11731134
ParsedCommentsKeepDeepEqualityCall,
11741135
jsxAttributesSpread,
@@ -1244,119 +1205,41 @@ export function ArbitraryJSBlockKeepDeepEquality(): KeepDeepEqualityCall<Arbitra
12441205
)
12451206
}
12461207

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-
12871208
export function JSXElementChildKeepDeepEquality(): KeepDeepEqualityCall<JSXElementChild> {
12881209
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)
13571242
}
1358-
1359-
return keepDeepEqualityResult(newElement, false)
13601243
}
13611244
}
13621245

@@ -1472,7 +1355,7 @@ export const JSXConditionalExpressionKeepDeepEquality: KeepDeepEqualityCall<JSXC
14721355
(conditional) => conditional.uid,
14731356
StringKeepDeepEquality,
14741357
(conditional) => conditional.condition,
1475-
JSExpressionKeepDeepEqualityCall,
1358+
JSXAttributeKeepDeepEqualityCall,
14761359
(conditional) => conditional.originalConditionString,
14771360
StringKeepDeepEquality,
14781361
(conditional) => conditional.whenTrue,
@@ -2087,7 +1970,7 @@ export const EditorStateCanvasTransientPropertyKeepDeepEquality: KeepDeepEqualit
20871970
(property) => property.elementPath,
20881971
ElementPathKeepDeepEquality,
20891972
(property) => property.attributesToUpdate,
2090-
objectDeepEquality(JSExpressionKeepDeepEqualityCall),
1973+
objectDeepEquality(JSXAttributeKeepDeepEqualityCall),
20911974
editorStateCanvasTransientProperty,
20921975
)
20931976

@@ -4148,7 +4031,7 @@ export const ValueAtPathDeepEquality: KeepDeepEqualityCall<ValueAtPath> = combin
41484031
(c) => c.path,
41494032
PropertyPathKeepDeepEquality(),
41504033
(c) => c.value,
4151-
JSExpressionKeepDeepEqualityCall,
4034+
JSXAttributeKeepDeepEqualityCall,
41524035
valueAtPath,
41534036
)
41544037

0 commit comments

Comments
 (0)