@@ -52,7 +52,8 @@ void HostPlatformViewEventEmitter::onKeyUp(const KeyEvent& keyEvent) const {
52
52
53
53
#pragma mark - Mouse Events
54
54
55
- static jsi::Value mouseEventPayload (jsi::Runtime& runtime, const MouseEvent& event) {
55
+ // Returns an Object instead of value as we read and modify it in dragEventPayload.
56
+ static jsi::Object mouseEventPayload (jsi::Runtime& runtime, const MouseEvent& event) {
56
57
auto payload = jsi::Object (runtime);
57
58
payload.setProperty (runtime, " clientX" , event.clientX );
58
59
payload.setProperty (runtime, " clientY" , event.clientY );
@@ -79,12 +80,14 @@ void HostPlatformViewEventEmitter::onMouseLeave(const MouseEvent& mouseEvent) co
79
80
80
81
#pragma mark - Drag and Drop Events
81
82
82
- static jsi::Value dragEventPayload (jsi::Runtime& runtime, DragEvent const & event) {
83
- auto filesArray = jsi::Array (runtime, event.dataTransferItems .size ());
84
- auto itemsArray = jsi::Array (runtime, event.dataTransferItems .size ());
85
- auto typesArray = jsi::Array (runtime, event.dataTransferItems .size ());
83
+ static jsi::Value dataTransferPayload (
84
+ jsi::Runtime& runtime,
85
+ const std::vector<DataTransferItem>& dataTransferItems) {
86
+ auto filesArray = jsi::Array (runtime, dataTransferItems.size ());
87
+ auto itemsArray = jsi::Array (runtime, dataTransferItems.size ());
88
+ auto typesArray = jsi::Array (runtime, dataTransferItems.size ());
86
89
int i = 0 ;
87
- for (auto const & transferItem : event. dataTransferItems ) {
90
+ for (const auto & transferItem : dataTransferItems) {
88
91
auto fileObject = jsi::Object (runtime);
89
92
fileObject.setProperty (runtime, " name" , transferItem.name );
90
93
fileObject.setProperty (runtime, " type" , transferItem.type );
@@ -99,25 +102,33 @@ static jsi::Value dragEventPayload(jsi::Runtime& runtime, DragEvent const& event
99
102
fileObject.setProperty (runtime, " height" , *transferItem.height );
100
103
}
101
104
filesArray.setValueAtIndex (runtime, i, fileObject);
102
-
105
+
103
106
auto itemObject = jsi::Object (runtime);
104
107
itemObject.setProperty (runtime, " kind" , transferItem.kind );
105
108
itemObject.setProperty (runtime, " type" , transferItem.type );
106
109
itemsArray.setValueAtIndex (runtime, i, itemObject);
107
-
110
+
108
111
typesArray.setValueAtIndex (runtime, i, transferItem.type );
109
112
i++;
110
113
}
111
-
114
+
112
115
auto dataTransferObject = jsi::Object (runtime);
113
116
dataTransferObject.setProperty (runtime, " files" , filesArray);
114
117
dataTransferObject.setProperty (runtime, " items" , itemsArray);
115
118
dataTransferObject.setProperty (runtime, " types" , typesArray);
116
119
120
+ return dataTransferObject;
121
+ }
122
+
123
+ static jsi::Value dragEventPayload (
124
+ jsi::Runtime& runtime,
125
+ const DragEvent& event) {
117
126
auto payload = mouseEventPayload (runtime, event);
127
+ auto dataTransferObject =
128
+ dataTransferPayload (runtime, event.dataTransferItems );
118
129
payload.setProperty (runtime, " dataTransfer" , dataTransferObject);
119
130
return payload;
120
- };
131
+ }
121
132
122
133
void HostPlatformViewEventEmitter::onDragEnter (DragEvent const & dragEvent) const {
123
134
dispatchEvent (" dragEnter" , [dragEvent](jsi::Runtime &runtime) {
@@ -137,4 +148,4 @@ void HostPlatformViewEventEmitter::onDrop(DragEvent const& dragEvent) const {
137
148
});
138
149
}
139
150
140
- } // namespace facebook::react
151
+ } // namespace facebook::react
0 commit comments