@@ -630,32 +630,37 @@ ReactDartComponentFactoryProxy _registerComponent(
630
630
ComponentFactory componentFactory, [
631
631
Iterable <String > skipMethods = const ['getDerivedStateFromError' , 'componentDidCatch' ],
632
632
]) {
633
- var componentInstance = componentFactory ();
634
-
635
- if (componentInstance is Component2 ) {
636
- return _registerComponent2 (componentFactory, skipMethods: skipMethods);
637
- }
633
+ try {
634
+ var componentInstance = componentFactory ();
638
635
639
- var componentStatics = new ComponentStatics (componentFactory);
636
+ if (componentInstance is Component2 ) {
637
+ return _registerComponent2 (componentFactory, skipMethods: skipMethods);
638
+ }
640
639
641
- var jsConfig = new JsComponentConfig (
642
- childContextKeys: componentInstance.childContextKeys,
643
- contextKeys: componentInstance.contextKeys,
644
- );
640
+ var componentStatics = new ComponentStatics (componentFactory);
645
641
646
- /// Create the JS [`ReactClass` component class] (https://facebook.github.io/react/docs/top-level-api.html#react.createclass)
647
- /// with custom JS lifecycle methods.
648
- var reactComponentClass = createReactDartComponentClass (_dartInteropStatics, componentStatics, jsConfig)
649
- // ignore: invalid_use_of_protected_member
650
- ..dartComponentVersion = ReactDartComponentVersion .component
651
- ..displayName = componentFactory ().displayName;
652
-
653
- // Cache default props and store them on the ReactClass so they can be used
654
- // by ReactDartComponentFactoryProxy and externally.
655
- final Map defaultProps = new Map .unmodifiable (componentInstance.getDefaultProps ());
656
- reactComponentClass.dartDefaultProps = defaultProps;
642
+ var jsConfig = new JsComponentConfig (
643
+ childContextKeys: componentInstance.childContextKeys,
644
+ contextKeys: componentInstance.contextKeys,
645
+ );
657
646
658
- return new ReactDartComponentFactoryProxy (reactComponentClass);
647
+ /// Create the JS [`ReactClass` component class] (https://facebook.github.io/react/docs/top-level-api.html#react.createclass)
648
+ /// with custom JS lifecycle methods.
649
+ var reactComponentClass = createReactDartComponentClass (_dartInteropStatics, componentStatics, jsConfig)
650
+ // ignore: invalid_use_of_protected_member
651
+ ..dartComponentVersion = ReactDartComponentVersion .component
652
+ ..displayName = componentFactory ().displayName;
653
+
654
+ // Cache default props and store them on the ReactClass so they can be used
655
+ // by ReactDartComponentFactoryProxy and externally.
656
+ final Map defaultProps = new Map .unmodifiable (componentInstance.getDefaultProps ());
657
+ reactComponentClass.dartDefaultProps = defaultProps;
658
+
659
+ return new ReactDartComponentFactoryProxy (reactComponentClass);
660
+ } catch (e, stack) {
661
+ print ('Error when registering Component: $e \n $stack ' );
662
+ rethrow ;
663
+ }
659
664
}
660
665
661
666
/// Creates ReactJS [ReactElement] instances for `JSContext` components.
@@ -776,39 +781,58 @@ ReactDartComponentFactoryProxy2 _registerComponent2(
776
781
Iterable <String > skipMethods = const ['getDerivedStateFromError' , 'componentDidCatch' ],
777
782
Component2BridgeFactory bridgeFactory,
778
783
}) {
779
- bridgeFactory ?? = Component2BridgeImpl .bridgeFactory;
780
-
781
- final componentInstance = componentFactory ();
782
- final componentStatics = new ComponentStatics2 (
783
- componentFactory: componentFactory,
784
- instanceForStaticMethods: componentInstance,
785
- bridgeFactory: bridgeFactory,
786
- );
787
- final filteredSkipMethods = _filterSkipMethods (skipMethods);
788
-
789
- // Cache default props and store them on the ReactClass so they can be used
790
- // by ReactDartComponentFactoryProxy and externally.
791
- final JsBackedMap defaultProps = new JsBackedMap .from (componentInstance.defaultProps);
792
-
793
- final JsMap jsPropTypes =
794
- bridgeFactory (componentInstance).jsifyPropTypes (componentInstance, componentInstance.propTypes);
795
-
796
- var jsConfig2 = new JsComponentConfig2 (
797
- defaultProps: defaultProps.jsObject,
798
- contextType: componentInstance.contextType? .jsThis,
799
- skipMethods: filteredSkipMethods,
800
- propTypes: jsPropTypes,
801
- );
802
-
803
- /// Create the JS [`ReactClass` component class] (https://facebook.github.io/react/docs/top-level-api.html#react.createclass)
804
- /// with custom JS lifecycle methods.
805
- var reactComponentClass =
806
- createReactDartComponentClass2 (_ReactDartInteropStatics2 .staticsForJs, componentStatics, jsConfig2)
807
- ..displayName = componentInstance.displayName;
808
- // ignore: invalid_use_of_protected_member
809
- reactComponentClass.dartComponentVersion = ReactDartComponentVersion .component2;
810
-
811
- return new ReactDartComponentFactoryProxy2 (reactComponentClass);
784
+ bool errorPrinted = false ;
785
+ try {
786
+ bridgeFactory ?? = Component2BridgeImpl .bridgeFactory;
787
+
788
+ final componentInstance = componentFactory ();
789
+ final componentStatics = new ComponentStatics2 (
790
+ componentFactory: componentFactory,
791
+ instanceForStaticMethods: componentInstance,
792
+ bridgeFactory: bridgeFactory,
793
+ );
794
+ final filteredSkipMethods = _filterSkipMethods (skipMethods);
795
+
796
+ // Cache default props and store them on the ReactClass so they can be used
797
+ // by ReactDartComponentFactoryProxy and externally.
798
+ JsBackedMap defaultProps;
799
+ try {
800
+ defaultProps = JsBackedMap .from (componentInstance.defaultProps);
801
+ } catch (e, stack) {
802
+ print ('Error when registering Component2 when getting defaultProps: $e \n $stack ' );
803
+ errorPrinted = true ;
804
+ rethrow ;
805
+ }
806
+
807
+ JsMap jsPropTypes;
808
+ try {
809
+ jsPropTypes = bridgeFactory (componentInstance).jsifyPropTypes (componentInstance, componentInstance.propTypes);
810
+ } catch (e, stack) {
811
+ print ('Error when registering Component2 when getting propTypes: $e \n $stack ' );
812
+ errorPrinted = true ;
813
+ rethrow ;
814
+ }
815
+
816
+ var jsConfig2 = new JsComponentConfig2 (
817
+ defaultProps: defaultProps.jsObject,
818
+ contextType: componentInstance.contextType? .jsThis,
819
+ skipMethods: filteredSkipMethods,
820
+ propTypes: jsPropTypes,
821
+ );
822
+
823
+ /// Create the JS [`ReactClass` component class] (https://facebook.github.io/react/docs/top-level-api.html#react.createclass)
824
+ /// with custom JS lifecycle methods.
825
+ var reactComponentClass =
826
+ createReactDartComponentClass2 (_ReactDartInteropStatics2 .staticsForJs, componentStatics, jsConfig2)
827
+ ..displayName = componentInstance.displayName;
828
+ // ignore: invalid_use_of_protected_member
829
+ reactComponentClass.dartComponentVersion = ReactDartComponentVersion .component2;
830
+
831
+ return new ReactDartComponentFactoryProxy2 (reactComponentClass);
832
+ } catch (e, stack) {
833
+ if (! errorPrinted) print ('Error when registering Component2: $e \n $stack ' );
834
+ rethrow ;
835
+ }
812
836
}
813
837
814
838
/// Creates ReactJS [ReactElement] instances for DOM components.
@@ -939,8 +963,10 @@ _convertEventHandlers(Map args) {
939
963
940
964
/// Wrapper for [SyntheticEvent] .
941
965
SyntheticEvent syntheticEventFactory (events.SyntheticEvent e) {
942
- return new SyntheticEvent (e.bubbles, e.cancelable, e.currentTarget, e.defaultPrevented, () => e.preventDefault (),
943
- () => e.stopPropagation (), e.eventPhase, e.isTrusted, e.nativeEvent, e.target, e.timeStamp, e.type);
966
+ return SyntheticEvent (e.bubbles, e.cancelable, e.currentTarget, e.defaultPrevented, () => e.preventDefault (),
967
+ () => e.stopPropagation (), e.eventPhase, e.isTrusted, e.nativeEvent, e.target, e.timeStamp, e.type)
968
+ // ignore: invalid_use_of_protected_member
969
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
944
970
}
945
971
946
972
/// Wrapper for [SyntheticClipboardEvent] .
@@ -958,7 +984,9 @@ SyntheticClipboardEvent syntheticClipboardEventFactory(events.SyntheticClipboard
958
984
e.target,
959
985
e.timeStamp,
960
986
e.type,
961
- e.clipboardData);
987
+ e.clipboardData)
988
+ // ignore: invalid_use_of_protected_member
989
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
962
990
}
963
991
964
992
/// Wrapper for [SyntheticKeyboardEvent] .
@@ -986,7 +1014,9 @@ SyntheticKeyboardEvent syntheticKeyboardEventFactory(events.SyntheticKeyboardEve
986
1014
e.keyCode,
987
1015
e.metaKey,
988
1016
e.repeat,
989
- e.shiftKey);
1017
+ e.shiftKey)
1018
+ // ignore: invalid_use_of_protected_member
1019
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
990
1020
}
991
1021
992
1022
/// Wrapper for [SyntheticCompositionEvent] .
@@ -1004,7 +1034,9 @@ SyntheticCompositionEvent syntheticCompositionEventFactory(events.SyntheticCompo
1004
1034
e.target,
1005
1035
e.timeStamp,
1006
1036
e.type,
1007
- e.data);
1037
+ e.data)
1038
+ // ignore: invalid_use_of_protected_member
1039
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1008
1040
}
1009
1041
1010
1042
/// Wrapper for [SyntheticFocusEvent] .
@@ -1022,13 +1054,17 @@ SyntheticFocusEvent syntheticFocusEventFactory(events.SyntheticFocusEvent e) {
1022
1054
e.target,
1023
1055
e.timeStamp,
1024
1056
e.type,
1025
- e.relatedTarget);
1057
+ e.relatedTarget)
1058
+ // ignore: invalid_use_of_protected_member
1059
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1026
1060
}
1027
1061
1028
1062
/// Wrapper for [SyntheticFormEvent] .
1029
1063
SyntheticFormEvent syntheticFormEventFactory (events.SyntheticFormEvent e) {
1030
1064
return new SyntheticFormEvent (e.bubbles, e.cancelable, e.currentTarget, e.defaultPrevented, () => e.preventDefault (),
1031
- () => e.stopPropagation (), e.eventPhase, e.isTrusted, e.nativeEvent, e.target, e.timeStamp, e.type);
1065
+ () => e.stopPropagation (), e.eventPhase, e.isTrusted, e.nativeEvent, e.target, e.timeStamp, e.type)
1066
+ // ignore: invalid_use_of_protected_member
1067
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1032
1068
}
1033
1069
1034
1070
/// Wrapper for [SyntheticDataTransfer] .
@@ -1127,7 +1163,9 @@ SyntheticPointerEvent syntheticPointerEventFactory(events.SyntheticPointerEvent
1127
1163
e.twist,
1128
1164
e.pointerType,
1129
1165
e.isPrimary,
1130
- );
1166
+ )
1167
+ // ignore: invalid_use_of_protected_member
1168
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1131
1169
}
1132
1170
1133
1171
/// Wrapper for [SyntheticMouseEvent] .
@@ -1160,7 +1198,9 @@ SyntheticMouseEvent syntheticMouseEventFactory(events.SyntheticMouseEvent e) {
1160
1198
e.screenX,
1161
1199
e.screenY,
1162
1200
e.shiftKey,
1163
- );
1201
+ )
1202
+ // ignore: invalid_use_of_protected_member
1203
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1164
1204
}
1165
1205
1166
1206
/// Wrapper for [SyntheticTouchEvent] .
@@ -1185,7 +1225,9 @@ SyntheticTouchEvent syntheticTouchEventFactory(events.SyntheticTouchEvent e) {
1185
1225
e.shiftKey,
1186
1226
e.targetTouches,
1187
1227
e.touches,
1188
- );
1228
+ )
1229
+ // ignore: invalid_use_of_protected_member
1230
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1189
1231
}
1190
1232
1191
1233
/// Wrapper for [SyntheticTransitionEvent] .
@@ -1206,7 +1248,9 @@ SyntheticTransitionEvent syntheticTransitionEventFactory(events.SyntheticTransit
1206
1248
e.propertyName,
1207
1249
e.elapsedTime,
1208
1250
e.pseudoElement,
1209
- );
1251
+ )
1252
+ // ignore: invalid_use_of_protected_member
1253
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1210
1254
}
1211
1255
1212
1256
/// Wrapper for [SyntheticAnimationEvent] .
@@ -1227,7 +1271,9 @@ SyntheticAnimationEvent syntheticAnimationEventFactory(events.SyntheticAnimation
1227
1271
e.animationName,
1228
1272
e.elapsedTime,
1229
1273
e.pseudoElement,
1230
- );
1274
+ )
1275
+ // ignore: invalid_use_of_protected_member
1276
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1231
1277
}
1232
1278
1233
1279
/// Wrapper for [SyntheticUIEvent] .
@@ -1247,7 +1293,9 @@ SyntheticUIEvent syntheticUIEventFactory(events.SyntheticUIEvent e) {
1247
1293
e.type,
1248
1294
e.detail,
1249
1295
e.view,
1250
- );
1296
+ )
1297
+ // ignore: invalid_use_of_protected_member
1298
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1251
1299
}
1252
1300
1253
1301
/// Wrapper for [SyntheticWheelEvent] .
@@ -1269,7 +1317,9 @@ SyntheticWheelEvent syntheticWheelEventFactory(events.SyntheticWheelEvent e) {
1269
1317
e.deltaMode,
1270
1318
e.deltaY,
1271
1319
e.deltaZ,
1272
- );
1320
+ )
1321
+ // ignore: invalid_use_of_protected_member
1322
+ ..$$jsPersistDoNotSetThisOrYouWillBeFired = () => e.persist ();
1273
1323
}
1274
1324
1275
1325
dynamic _findDomNode (component) {
0 commit comments