@swmansion/react-native-bottom-sheet 0.9.2-next.1 → 0.9.3-next.1

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.
@@ -1,14 +1,18 @@
1
1
  package com.swmansion.reactnativebottomsheet
2
2
 
3
3
  import android.view.View
4
+ import com.facebook.react.bridge.Arguments
4
5
  import com.facebook.react.bridge.ReadableArray
6
+ import com.facebook.react.bridge.WritableMap
5
7
  import com.facebook.react.module.annotations.ReactModule
6
8
  import com.facebook.react.uimanager.ReactStylesDiffMap
7
9
  import com.facebook.react.uimanager.StateWrapper
8
10
  import com.facebook.react.uimanager.ThemedReactContext
11
+ import com.facebook.react.uimanager.UIManagerHelper
9
12
  import com.facebook.react.uimanager.ViewGroupManager
10
13
  import com.facebook.react.uimanager.ViewManagerDelegate
11
14
  import com.facebook.react.uimanager.annotations.ReactProp
15
+ import com.facebook.react.uimanager.events.Event
12
16
  import com.facebook.react.viewmanagers.BottomSheetViewManagerDelegate
13
17
  import com.facebook.react.viewmanagers.BottomSheetViewManagerInterface
14
18
 
@@ -31,37 +35,30 @@ class BottomSheetViewManager :
31
35
  view.listener =
32
36
  object : BottomSheetViewListener {
33
37
  override fun onIndexChange(index: Int) {
34
- val event =
35
- com.facebook.react.bridge.Arguments.createMap().apply { putInt("index", index) }
36
- val reactContext = view.context as? ThemedReactContext ?: return
37
- reactContext
38
- .getJSModule(com.facebook.react.uimanager.events.RCTEventEmitter::class.java)
39
- .receiveEvent(view.id, "topIndexChange", event)
38
+ val event = Arguments.createMap().apply { putInt("index", index) }
39
+ dispatchEvent(view, "topIndexChange", event)
40
40
  }
41
41
 
42
42
  override fun onSettle(index: Int) {
43
- val event =
44
- com.facebook.react.bridge.Arguments.createMap().apply { putInt("index", index) }
45
- val reactContext = view.context as? ThemedReactContext ?: return
46
- reactContext
47
- .getJSModule(com.facebook.react.uimanager.events.RCTEventEmitter::class.java)
48
- .receiveEvent(view.id, "topSettle", event)
43
+ val event = Arguments.createMap().apply { putInt("index", index) }
44
+ dispatchEvent(view, "topSettle", event)
49
45
  }
50
46
 
51
47
  override fun onPositionChange(position: Double) {
52
- val event =
53
- com.facebook.react.bridge.Arguments.createMap().apply {
54
- putDouble("position", position)
55
- }
56
- val reactContext = view.context as? ThemedReactContext ?: return
57
- reactContext
58
- .getJSModule(com.facebook.react.uimanager.events.RCTEventEmitter::class.java)
59
- .receiveEvent(view.id, "topPositionChange", event)
48
+ val event = Arguments.createMap().apply { putDouble("position", position) }
49
+ dispatchEvent(view, "topPositionChange", event)
60
50
  }
61
51
  }
62
52
  return view
63
53
  }
64
54
 
55
+ private fun dispatchEvent(view: BottomSheetView, eventName: String, eventData: WritableMap) {
56
+ val reactContext = UIManagerHelper.getReactContext(view)
57
+ val surfaceId = UIManagerHelper.getSurfaceId(view)
58
+ UIManagerHelper.getEventDispatcherForReactTag(reactContext, view.id)
59
+ ?.dispatchEvent(BottomSheetEvent(surfaceId, view.id, eventName, eventData))
60
+ }
61
+
65
62
  override fun addView(parent: BottomSheetView, child: View, index: Int) {
66
63
  parent.addSheetChild(child, index)
67
64
  }
@@ -146,3 +143,16 @@ class BottomSheetViewManager :
146
143
  view.destroy()
147
144
  }
148
145
  }
146
+
147
+ private class BottomSheetEvent(
148
+ surfaceId: Int,
149
+ viewTag: Int,
150
+ private val jsEventName: String,
151
+ private val eventData: WritableMap,
152
+ ) : Event<BottomSheetEvent>(surfaceId, viewTag) {
153
+ override fun getEventName(): String = jsEventName
154
+
155
+ override fun canCoalesce(): Boolean = false
156
+
157
+ override fun getEventData(): WritableMap = eventData
158
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/react-native-bottom-sheet",
3
- "version": "0.9.2-next.1",
3
+ "version": "0.9.3-next.1",
4
4
  "description": "Provides bottom-sheet components for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",