@swmansion/react-native-bottom-sheet 0.7.0-next.6 → 0.7.0-next.7

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.
@@ -13,11 +13,12 @@ Pod::Spec.new do |s|
13
13
  s.platforms = { :ios => min_ios_version_supported }
14
14
  s.source = { :git => "https://github.com/software-mansion-labs/react-native-bottom-sheet.git", :tag => "#{s.version}" }
15
15
 
16
- s.source_files = "ios/**/*.{h,m,mm,cpp,swift}"
16
+ s.source_files = ["ios/**/*.{h,m,mm,cpp,swift}", "common/**/*.{h,cpp}"]
17
17
  s.private_header_files = "ios/**/*.h"
18
18
  s.swift_version = "5.0"
19
19
  s.pod_target_xcconfig = {
20
- "DEFINES_MODULE" => "YES"
20
+ "DEFINES_MODULE" => "YES",
21
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/common/cpp\""
21
22
  }
22
23
 
23
24
  install_modules_dependencies(s)
@@ -11,7 +11,9 @@ import android.widget.FrameLayout
11
11
  import androidx.dynamicanimation.animation.DynamicAnimation
12
12
  import androidx.dynamicanimation.animation.SpringAnimation
13
13
  import androidx.dynamicanimation.animation.SpringForce
14
+ import com.facebook.react.bridge.Arguments
14
15
  import com.facebook.react.uimanager.PointerEvents
16
+ import com.facebook.react.uimanager.StateWrapper
15
17
  import com.facebook.react.views.view.ReactViewGroup
16
18
  import kotlin.math.abs
17
19
 
@@ -27,6 +29,7 @@ class BottomSheetView(context: Context) : ReactViewGroup(context) {
27
29
  // MARK: - Listener
28
30
 
29
31
  var listener: BottomSheetViewListener? = null
32
+ var stateWrapper: StateWrapper? = null
30
33
 
31
34
  // MARK: - State
32
35
 
@@ -130,6 +133,7 @@ class BottomSheetView(context: Context) : ReactViewGroup(context) {
130
133
 
131
134
  if (activeAnimation != null || isPanning) return
132
135
  sheetContainer.translationY = translationY(targetIndex)
136
+ updateShadowState(sheetContainer.translationY)
133
137
  }
134
138
 
135
139
  private fun layoutSheetChildren() {
@@ -208,6 +212,19 @@ class BottomSheetView(context: Context) : ReactViewGroup(context) {
208
212
  val maxHeight = detentSpecs.lastOrNull()?.height ?: height.toFloat()
209
213
  val ty = sheetContainer.translationY
210
214
  listener?.onPositionChange(((maxHeight - ty) / density).toDouble())
215
+ updateShadowState(ty)
216
+ }
217
+
218
+ private var lastShadowOffsetY = Float.NaN
219
+
220
+ private fun updateShadowState(translationY: Float) {
221
+ val offsetY = (translationY / density).toDouble()
222
+ if (offsetY.toFloat() == lastShadowOffsetY) return
223
+ lastShadowOffsetY = offsetY.toFloat()
224
+ val sw = stateWrapper ?: return
225
+ val map = Arguments.createMap()
226
+ map.putDouble("contentOffsetY", offsetY)
227
+ sw.updateState(map)
211
228
  }
212
229
 
213
230
  // MARK: - Choreographer (position tracking during animation)
@@ -428,5 +445,7 @@ class BottomSheetView(context: Context) : ReactViewGroup(context) {
428
445
  activePointerId = MotionEvent.INVALID_POINTER_ID
429
446
  sheetContainer.translationY = 0f
430
447
  sheetContainer.removeAllViews()
448
+ stateWrapper = null
449
+ lastShadowOffsetY = Float.NaN
431
450
  }
432
451
  }
@@ -3,6 +3,8 @@ package com.swmansion.reactnativebottomsheet
3
3
  import android.view.View
4
4
  import com.facebook.react.bridge.ReadableArray
5
5
  import com.facebook.react.module.annotations.ReactModule
6
+ import com.facebook.react.uimanager.ReactStylesDiffMap
7
+ import com.facebook.react.uimanager.StateWrapper
6
8
  import com.facebook.react.uimanager.ThemedReactContext
7
9
  import com.facebook.react.uimanager.ViewGroupManager
8
10
  import com.facebook.react.uimanager.ViewManagerDelegate
@@ -63,6 +65,15 @@ class BottomSheetViewManager :
63
65
  parent.removeSheetChildAt(index)
64
66
  }
65
67
 
68
+ override fun updateState(
69
+ view: BottomSheetView,
70
+ props: ReactStylesDiffMap,
71
+ stateWrapper: StateWrapper?,
72
+ ): Any? {
73
+ view.stateWrapper = stateWrapper
74
+ return null
75
+ }
76
+
66
77
  override fun needsCustomLayoutForChildren(): Boolean = true
67
78
 
68
79
  override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> {
@@ -0,0 +1,78 @@
1
+ cmake_minimum_required(VERSION 3.13)
2
+ set(CMAKE_VERBOSE_MAKEFILE ON)
3
+
4
+ set(LIB_LITERAL ReactNativeBottomSheetSpec)
5
+ set(LIB_TARGET_NAME react_codegen_${LIB_LITERAL})
6
+
7
+ set(LIB_ANDROID_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
8
+ set(LIB_COMMON_DIR ${LIB_ANDROID_DIR}/../common/cpp)
9
+ set(LIB_ANDROID_GENERATED_JNI_DIR ${LIB_ANDROID_DIR}/build/generated/source/codegen/jni)
10
+ set(LIB_ANDROID_GENERATED_COMPONENTS_DIR ${LIB_ANDROID_GENERATED_JNI_DIR}/react/renderer/components/${LIB_LITERAL})
11
+
12
+ file(GLOB LIB_CUSTOM_SRCS CONFIGURE_DEPENDS ${LIB_COMMON_DIR}/react/renderer/components/${LIB_LITERAL}/*.cpp)
13
+ file(GLOB LIB_CODEGEN_SRCS CONFIGURE_DEPENDS ${LIB_ANDROID_GENERATED_JNI_DIR}/*.cpp ${LIB_ANDROID_GENERATED_COMPONENTS_DIR}/*.cpp)
14
+
15
+ add_library(
16
+ ${LIB_TARGET_NAME}
17
+ SHARED
18
+ ${LIB_CUSTOM_SRCS}
19
+ ${LIB_CODEGEN_SRCS}
20
+ )
21
+
22
+ # Custom headers must come before generated headers so that our ShadowNodes.h
23
+ # and ComponentDescriptors.h take precedence over the codegen type aliases.
24
+ target_include_directories(
25
+ ${LIB_TARGET_NAME}
26
+ PUBLIC
27
+ ${LIB_COMMON_DIR}
28
+ ${LIB_ANDROID_GENERATED_JNI_DIR}
29
+ ${LIB_ANDROID_GENERATED_COMPONENTS_DIR}
30
+ )
31
+
32
+ if (REACTNATIVE_MERGED_SO)
33
+ target_link_libraries(
34
+ ${LIB_TARGET_NAME}
35
+ fbjni
36
+ jsi
37
+ reactnative
38
+ )
39
+ else()
40
+ target_link_libraries(
41
+ ${LIB_TARGET_NAME}
42
+ fbjni
43
+ folly_runtime
44
+ glog
45
+ jsi
46
+ react_codegen_rncore
47
+ react_debug
48
+ react_nativemodule_core
49
+ react_render_core
50
+ react_render_debug
51
+ react_render_graphics
52
+ react_render_mapbuffer
53
+ react_render_componentregistry
54
+ react_utils
55
+ rrc_view
56
+ turbomodulejsijni
57
+ yoga
58
+ )
59
+ endif()
60
+
61
+ target_include_directories(
62
+ ${CMAKE_PROJECT_NAME}
63
+ PUBLIC
64
+ ${CMAKE_CURRENT_SOURCE_DIR}
65
+ )
66
+
67
+ if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 80)
68
+ target_compile_reactnative_options(${LIB_TARGET_NAME} PUBLIC)
69
+ else()
70
+ target_compile_options(
71
+ ${LIB_TARGET_NAME}
72
+ PRIVATE
73
+ -fexceptions
74
+ -frtti
75
+ -std=c++20
76
+ -Wall
77
+ )
78
+ endif()
@@ -0,0 +1,28 @@
1
+ #include "ShadowNodes.h"
2
+
3
+ #include <yoga/Yoga.h>
4
+
5
+ namespace facebook::react {
6
+
7
+ void BottomSheetViewShadowNode::adjustLayoutWithState() {
8
+ #ifdef ANDROID
9
+ ensureUnsealed();
10
+
11
+ auto state =
12
+ std::static_pointer_cast<const BottomSheetViewShadowNode::ConcreteState>(
13
+ getState());
14
+ auto stateData = state->getData();
15
+
16
+ auto adjustedStyle = getConcreteProps().yogaStyle;
17
+ auto newPaddingTop =
18
+ yoga::Style::Length::points(stateData.contentOffsetY);
19
+
20
+ if (adjustedStyle.padding(yoga::Edge::Top) != newPaddingTop) {
21
+ adjustedStyle.setPadding(yoga::Edge::Top, newPaddingTop);
22
+ yogaNode_.setStyle(adjustedStyle);
23
+ yogaNode_.setDirty(true);
24
+ }
25
+ #endif
26
+ }
27
+
28
+ } // namespace facebook::react
@@ -0,0 +1,36 @@
1
+ #pragma once
2
+
3
+ #ifdef ANDROID
4
+ #include <folly/dynamic.h>
5
+ #include <react/renderer/mapbuffer/MapBuffer.h>
6
+ #include <react/renderer/mapbuffer/MapBufferBuilder.h>
7
+ #endif
8
+
9
+ namespace facebook::react {
10
+
11
+ class BottomSheetViewState final {
12
+ public:
13
+ BottomSheetViewState() = default;
14
+
15
+ #ifdef ANDROID
16
+ BottomSheetViewState(
17
+ const BottomSheetViewState& previousState,
18
+ folly::dynamic data)
19
+ : contentOffsetY(
20
+ static_cast<float>(data["contentOffsetY"].getDouble())) {}
21
+ #endif
22
+
23
+ float contentOffsetY{0};
24
+
25
+ #ifdef ANDROID
26
+ folly::dynamic getDynamic() const {
27
+ return folly::dynamic::object("contentOffsetY", contentOffsetY);
28
+ }
29
+
30
+ MapBuffer getMapBuffer() const {
31
+ return MapBufferBuilder::EMPTY();
32
+ }
33
+ #endif
34
+ };
35
+
36
+ } // namespace facebook::react
@@ -0,0 +1,19 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/components/ReactNativeBottomSheetSpec/ShadowNodes.h>
4
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
5
+
6
+ namespace facebook::react {
7
+
8
+ class BottomSheetViewComponentDescriptor final
9
+ : public ConcreteComponentDescriptor<BottomSheetViewShadowNode> {
10
+ using ConcreteComponentDescriptor::ConcreteComponentDescriptor;
11
+
12
+ void adopt(ShadowNode& shadowNode) const override {
13
+ auto& node = static_cast<BottomSheetViewShadowNode&>(shadowNode);
14
+ node.adjustLayoutWithState();
15
+ ConcreteComponentDescriptor::adopt(shadowNode);
16
+ }
17
+ };
18
+
19
+ } // namespace facebook::react
@@ -0,0 +1,25 @@
1
+ #pragma once
2
+
3
+ #include <jsi/jsi.h>
4
+ #include <react/renderer/components/ReactNativeBottomSheetSpec/BottomSheetViewState.h>
5
+ #include <react/renderer/components/ReactNativeBottomSheetSpec/EventEmitters.h>
6
+ #include <react/renderer/components/ReactNativeBottomSheetSpec/Props.h>
7
+ #include <react/renderer/components/view/ConcreteViewShadowNode.h>
8
+
9
+ namespace facebook::react {
10
+
11
+ JSI_EXPORT extern const char BottomSheetViewComponentName[];
12
+
13
+ class JSI_EXPORT BottomSheetViewShadowNode final
14
+ : public ConcreteViewShadowNode<
15
+ BottomSheetViewComponentName,
16
+ BottomSheetViewProps,
17
+ BottomSheetViewEventEmitter,
18
+ BottomSheetViewState> {
19
+ using ConcreteViewShadowNode::ConcreteViewShadowNode;
20
+
21
+ public:
22
+ void adjustLayoutWithState();
23
+ };
24
+
25
+ } // namespace facebook::react
@@ -98,14 +98,6 @@ export const BottomSheet = ({
98
98
  progress: scrimProgress,
99
99
  color: scrimColor
100
100
  }) : null;
101
-
102
- // On Android Fabric, getBoundingClientRect() is computed from the Yoga
103
- // shadow tree, which doesn't know about the native sheetContainer's layout
104
- // offset and translationY. This causes Pressability's bounds check to fail
105
- // (instant pressOut). Setting `top` on the wrapper updates the shadow tree
106
- // to match the actual visual position without affecting native layout
107
- // (needsCustomLayoutForChildren is true on the native side).
108
- const contentOffsetY = maxHeight - (resolvedDetents[clampedIndex]?.height ?? maxHeight);
109
101
  const sheet = /*#__PURE__*/_jsxs(Animated.View, {
110
102
  style: StyleSheet.absoluteFill,
111
103
  pointerEvents: modal ? isCollapsed ? 'none' : 'auto' : 'box-none',
@@ -133,8 +125,7 @@ export const BottomSheet = ({
133
125
  children: /*#__PURE__*/_jsxs(View, {
134
126
  collapsable: false,
135
127
  style: {
136
- flex: 1,
137
- top: contentOffsetY
128
+ flex: 1
138
129
  },
139
130
  pointerEvents: "box-none",
140
131
  children: [children, /*#__PURE__*/_jsx(View, {
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useState","Animated","Pressable","StyleSheet","View","useWindowDimensions","useSafeAreaInsets","BottomSheetNativeComponent","Portal","resolveDetent","jsx","_jsx","jsxs","_jsxs","programmatic","DefaultScrim","progress","color","style","absoluteFill","flex","backgroundColor","opacity","BottomSheet","children","detents","index","animateIn","onIndexChange","onPositionChange","modal","scrimColor","height","screenHeight","insets","maxHeight","top","contentHeight","setContentHeight","currentPositionRef","scrimProgress","Value","current","resolvedDetents","map","detent","value","Math","max","min","isDetentProgrammatic","handleSentinelLayout","event","nativeEvent","layout","y","clampedIndex","length","isCollapsed","sheetPointerEvents","scrimPressEnabledRef","previousIsCollapsedRef","firstNonzeroDetent","find","setValue","undefined","frame","requestAnimationFrame","cancelAnimationFrame","handleIndexChange","handlePositionChange","position","closedIndex","findIndex","handleScrimPress","scrimElement","contentOffsetY","sheet","pointerEvents","onPress","left","right","bottom","collapsable","onLayout"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useState","Animated","Pressable","StyleSheet","View","useWindowDimensions","useSafeAreaInsets","BottomSheetNativeComponent","Portal","resolveDetent","jsx","_jsx","jsxs","_jsxs","programmatic","DefaultScrim","progress","color","style","absoluteFill","flex","backgroundColor","opacity","BottomSheet","children","detents","index","animateIn","onIndexChange","onPositionChange","modal","scrimColor","height","screenHeight","insets","maxHeight","top","contentHeight","setContentHeight","currentPositionRef","scrimProgress","Value","current","resolvedDetents","map","detent","value","Math","max","min","isDetentProgrammatic","handleSentinelLayout","event","nativeEvent","layout","y","clampedIndex","length","isCollapsed","sheetPointerEvents","scrimPressEnabledRef","previousIsCollapsedRef","firstNonzeroDetent","find","setValue","undefined","frame","requestAnimationFrame","cancelAnimationFrame","handleIndexChange","handlePositionChange","position","closedIndex","findIndex","handleScrimPress","scrimElement","sheet","pointerEvents","onPress","left","right","bottom","collapsable","onLayout"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAqB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAY5E,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmBlD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,GAAI,qGAUzB,gBAAgB,4CA0JlB,CAAC"}
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAqB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAY5E,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmBlD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,GAAI,qGAUzB,gBAAgB,4CAiJlB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/react-native-bottom-sheet",
3
- "version": "0.7.0-next.6",
3
+ "version": "0.7.0-next.7",
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",
@@ -17,6 +17,7 @@
17
17
  "lib",
18
18
  "android",
19
19
  "ios",
20
+ "common",
20
21
  "cpp",
21
22
  "*.podspec",
22
23
  "react-native.config.js",
@@ -1 +1,11 @@
1
- module.exports = {};
1
+ module.exports = {
2
+ dependency: {
3
+ platforms: {
4
+ android: {
5
+ libraryName: 'ReactNativeBottomSheetSpec',
6
+ componentDescriptors: ['BottomSheetViewComponentDescriptor'],
7
+ cmakeListsPath: 'src/main/jni/CMakeLists.txt',
8
+ },
9
+ },
10
+ },
11
+ };
@@ -152,15 +152,6 @@ export const BottomSheet = ({
152
152
  <DefaultScrim progress={scrimProgress} color={scrimColor} />
153
153
  ) : null;
154
154
 
155
- // On Android Fabric, getBoundingClientRect() is computed from the Yoga
156
- // shadow tree, which doesn't know about the native sheetContainer's layout
157
- // offset and translationY. This causes Pressability's bounds check to fail
158
- // (instant pressOut). Setting `top` on the wrapper updates the shadow tree
159
- // to match the actual visual position without affecting native layout
160
- // (needsCustomLayoutForChildren is true on the native side).
161
- const contentOffsetY =
162
- maxHeight - (resolvedDetents[clampedIndex]?.height ?? maxHeight);
163
-
164
155
  const sheet = (
165
156
  <Animated.View
166
157
  style={StyleSheet.absoluteFill}
@@ -192,7 +183,7 @@ export const BottomSheet = ({
192
183
  >
193
184
  <View
194
185
  collapsable={false}
195
- style={{ flex: 1, top: contentOffsetY }}
186
+ style={{ flex: 1 }}
196
187
  pointerEvents="box-none"
197
188
  >
198
189
  {children}