@lodev09/react-native-true-sheet 2.0.6 → 4.0.0-beta.0
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.
- package/README.md +36 -8
- package/RNTrueSheet.podspec +20 -0
- package/android/build.gradle +26 -14
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContainerView.kt +108 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContainerViewManager.kt +21 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentView.kt +46 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentViewManager.kt +21 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetFooterView.kt +47 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetFooterViewManager.kt +21 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetModule.kt +165 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetPackage.kt +36 -4
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +257 -303
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +855 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewManager.kt +104 -82
- package/android/src/main/java/com/lodev09/truesheet/events/DetentChangeEvent.kt +26 -0
- package/android/src/main/java/com/lodev09/truesheet/events/DidDismissEvent.kt +20 -0
- package/android/src/main/java/com/lodev09/truesheet/events/DidPresentEvent.kt +26 -0
- package/android/src/main/java/com/lodev09/truesheet/events/DragBeginEvent.kt +26 -0
- package/android/src/main/java/com/lodev09/truesheet/events/DragChangeEvent.kt +26 -0
- package/android/src/main/java/com/lodev09/truesheet/events/DragEndEvent.kt +26 -0
- package/android/src/main/java/com/lodev09/truesheet/events/MountEvent.kt +20 -0
- package/android/src/main/java/com/lodev09/truesheet/events/PositionChangeEvent.kt +32 -0
- package/android/src/main/java/com/lodev09/truesheet/events/SizeChangeEvent.kt +27 -0
- package/android/src/main/java/com/lodev09/truesheet/events/WillDismissEvent.kt +20 -0
- package/android/src/main/java/com/lodev09/truesheet/events/WillPresentEvent.kt +26 -0
- package/android/src/main/java/com/lodev09/truesheet/{core/Utils.kt → utils/ScreenUtils.kt} +47 -17
- package/android/src/main/res/values/styles.xml +8 -0
- package/ios/TrueSheetComponentDescriptor.h +24 -0
- package/ios/TrueSheetContainerView.h +47 -0
- package/ios/TrueSheetContainerView.mm +117 -0
- package/ios/TrueSheetContentView.h +37 -0
- package/ios/TrueSheetContentView.mm +114 -0
- package/ios/TrueSheetFooterView.h +27 -0
- package/ios/TrueSheetFooterView.mm +101 -0
- package/ios/TrueSheetModule.h +44 -0
- package/ios/TrueSheetModule.mm +133 -0
- package/ios/TrueSheetView.h +53 -0
- package/ios/TrueSheetView.mm +433 -0
- package/ios/TrueSheetViewController.h +53 -0
- package/ios/TrueSheetViewController.mm +649 -0
- package/ios/events/OnDetentChangeEvent.h +28 -0
- package/ios/events/OnDetentChangeEvent.mm +30 -0
- package/ios/events/OnDidDismissEvent.h +26 -0
- package/ios/events/OnDidDismissEvent.mm +25 -0
- package/ios/events/OnDidPresentEvent.h +28 -0
- package/ios/events/OnDidPresentEvent.mm +30 -0
- package/ios/events/OnDragBeginEvent.h +28 -0
- package/ios/events/OnDragBeginEvent.mm +30 -0
- package/ios/events/OnDragChangeEvent.h +28 -0
- package/ios/events/OnDragChangeEvent.mm +30 -0
- package/ios/events/OnDragEndEvent.h +28 -0
- package/ios/events/OnDragEndEvent.mm +30 -0
- package/ios/events/OnMountEvent.h +26 -0
- package/ios/events/OnMountEvent.mm +25 -0
- package/ios/events/OnPositionChangeEvent.h +29 -0
- package/ios/events/OnPositionChangeEvent.mm +32 -0
- package/ios/events/OnSizeChangeEvent.h +28 -0
- package/ios/events/OnSizeChangeEvent.mm +30 -0
- package/ios/events/OnWillDismissEvent.h +26 -0
- package/ios/events/OnWillDismissEvent.mm +25 -0
- package/ios/events/OnWillPresentEvent.h +28 -0
- package/ios/events/OnWillPresentEvent.mm +30 -0
- package/ios/utils/GestureUtil.h +25 -0
- package/ios/utils/GestureUtil.mm +26 -0
- package/ios/utils/LayoutUtil.h +44 -0
- package/ios/utils/LayoutUtil.mm +50 -0
- package/ios/utils/WindowUtil.h +27 -0
- package/ios/utils/WindowUtil.mm +42 -0
- package/lib/module/TrueSheet.js +231 -135
- package/lib/module/TrueSheet.js.map +1 -1
- package/lib/module/TrueSheetGrabber.js +16 -14
- package/lib/module/TrueSheetGrabber.js.map +1 -1
- package/lib/module/fabric/TrueSheetContainerViewNativeComponent.ts +8 -0
- package/lib/module/fabric/TrueSheetContentViewNativeComponent.ts +8 -0
- package/lib/module/fabric/TrueSheetFooterViewNativeComponent.ts +8 -0
- package/lib/module/fabric/TrueSheetViewNativeComponent.ts +63 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/reanimated/ReanimatedTrueSheet.js +87 -0
- package/lib/module/reanimated/ReanimatedTrueSheet.js.map +1 -0
- package/lib/module/reanimated/ReanimatedTrueSheetProvider.js +72 -0
- package/lib/module/reanimated/ReanimatedTrueSheetProvider.js.map +1 -0
- package/lib/module/reanimated/index.js +6 -0
- package/lib/module/reanimated/index.js.map +1 -0
- package/lib/module/reanimated/useReanimatedPositionChangeHandler.js +19 -0
- package/lib/module/reanimated/useReanimatedPositionChangeHandler.js.map +1 -0
- package/lib/module/specs/NativeTrueSheetModule.js +12 -0
- package/lib/module/specs/NativeTrueSheetModule.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/TrueSheet.d.ts +79 -0
- package/lib/typescript/src/TrueSheet.d.ts.map +1 -0
- package/lib/typescript/src/TrueSheet.types.d.ts +260 -0
- package/lib/typescript/src/TrueSheet.types.d.ts.map +1 -0
- package/lib/typescript/{commonjs/src → src}/TrueSheetGrabber.d.ts +1 -1
- package/lib/typescript/src/TrueSheetGrabber.d.ts.map +1 -0
- package/lib/typescript/src/fabric/TrueSheetContainerViewNativeComponent.d.ts +6 -0
- package/lib/typescript/src/fabric/TrueSheetContainerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/fabric/TrueSheetContentViewNativeComponent.d.ts +6 -0
- package/lib/typescript/src/fabric/TrueSheetContentViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/fabric/TrueSheetFooterViewNativeComponent.d.ts +6 -0
- package/lib/typescript/src/fabric/TrueSheetFooterViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/fabric/TrueSheetViewNativeComponent.d.ts +44 -0
- package/lib/typescript/src/fabric/TrueSheetViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/{commonjs/src → src}/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/reanimated/ReanimatedTrueSheet.d.ts +43 -0
- package/lib/typescript/src/reanimated/ReanimatedTrueSheet.d.ts.map +1 -0
- package/lib/typescript/src/reanimated/ReanimatedTrueSheetProvider.d.ts +57 -0
- package/lib/typescript/src/reanimated/ReanimatedTrueSheetProvider.d.ts.map +1 -0
- package/lib/typescript/src/reanimated/index.d.ts +4 -0
- package/lib/typescript/src/reanimated/index.d.ts.map +1 -0
- package/lib/typescript/src/reanimated/useReanimatedPositionChangeHandler.d.ts +6 -0
- package/lib/typescript/src/reanimated/useReanimatedPositionChangeHandler.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeTrueSheetModule.d.ts +34 -0
- package/lib/typescript/src/specs/NativeTrueSheetModule.d.ts.map +1 -0
- package/package.json +104 -75
- package/react-native.config.js +17 -0
- package/src/TrueSheet.tsx +285 -188
- package/src/TrueSheet.types.ts +119 -106
- package/src/TrueSheetGrabber.tsx +29 -28
- package/src/__mocks__/index.js +60 -12
- package/src/fabric/TrueSheetContainerViewNativeComponent.ts +8 -0
- package/src/fabric/TrueSheetContentViewNativeComponent.ts +8 -0
- package/src/fabric/TrueSheetFooterViewNativeComponent.ts +8 -0
- package/src/fabric/TrueSheetViewNativeComponent.ts +63 -0
- package/src/index.ts +4 -3
- package/src/reanimated/ReanimatedTrueSheet.tsx +95 -0
- package/src/reanimated/ReanimatedTrueSheetProvider.tsx +92 -0
- package/src/reanimated/index.ts +3 -0
- package/src/reanimated/useReanimatedPositionChangeHandler.ts +26 -0
- package/src/specs/NativeTrueSheetModule.ts +38 -0
- package/TrueSheet.podspec +0 -49
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetDialog.kt +0 -413
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetEvent.kt +0 -22
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewModule.kt +0 -63
- package/android/src/main/java/com/lodev09/truesheet/core/KeyboardManager.kt +0 -58
- package/android/src/main/java/com/lodev09/truesheet/core/RootSheetView.kt +0 -102
- package/ios/Extensions/UIBlurEffect+withTint.swift +0 -62
- package/ios/Extensions/UIView+pinTo.swift +0 -74
- package/ios/Extensions/UIViewController+detentForSize.swift +0 -134
- package/ios/TrueSheet-Bridging-Header.h +0 -14
- package/ios/TrueSheetEvent.swift +0 -48
- package/ios/TrueSheetView.swift +0 -467
- package/ios/TrueSheetViewController.swift +0 -275
- package/ios/TrueSheetViewManager.m +0 -53
- package/ios/TrueSheetViewManager.swift +0 -48
- package/ios/Utils/Logger.swift +0 -39
- package/ios/Utils/Promise.swift +0 -25
- package/lib/commonjs/TrueSheet.js +0 -258
- package/lib/commonjs/TrueSheet.js.map +0 -1
- package/lib/commonjs/TrueSheet.types.js +0 -6
- package/lib/commonjs/TrueSheet.types.js.map +0 -1
- package/lib/commonjs/TrueSheetFooter.js +0 -19
- package/lib/commonjs/TrueSheetFooter.js.map +0 -1
- package/lib/commonjs/TrueSheetGrabber.js +0 -54
- package/lib/commonjs/TrueSheetGrabber.js.map +0 -1
- package/lib/commonjs/TrueSheetModule.js +0 -19
- package/lib/commonjs/TrueSheetModule.js.map +0 -1
- package/lib/commonjs/__mocks__/index.js +0 -52
- package/lib/commonjs/__mocks__/index.js.map +0 -1
- package/lib/commonjs/index.js +0 -39
- package/lib/commonjs/index.js.map +0 -1
- package/lib/module/TrueSheetFooter.js +0 -14
- package/lib/module/TrueSheetFooter.js.map +0 -1
- package/lib/module/TrueSheetModule.js +0 -15
- package/lib/module/TrueSheetModule.js.map +0 -1
- package/lib/module/__mocks__/index.js +0 -21
- package/lib/module/__mocks__/index.js.map +0 -1
- package/lib/typescript/commonjs/package.json +0 -1
- package/lib/typescript/commonjs/src/TrueSheet.d.ts +0 -70
- package/lib/typescript/commonjs/src/TrueSheet.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/TrueSheet.types.d.ts +0 -241
- package/lib/typescript/commonjs/src/TrueSheet.types.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/TrueSheetFooter.d.ts +0 -7
- package/lib/typescript/commonjs/src/TrueSheetFooter.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/TrueSheetGrabber.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/TrueSheetModule.d.ts +0 -2
- package/lib/typescript/commonjs/src/TrueSheetModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +0 -1
- package/lib/typescript/module/src/TrueSheet.d.ts +0 -70
- package/lib/typescript/module/src/TrueSheet.d.ts.map +0 -1
- package/lib/typescript/module/src/TrueSheet.types.d.ts +0 -241
- package/lib/typescript/module/src/TrueSheet.types.d.ts.map +0 -1
- package/lib/typescript/module/src/TrueSheetFooter.d.ts +0 -7
- package/lib/typescript/module/src/TrueSheetFooter.d.ts.map +0 -1
- package/lib/typescript/module/src/TrueSheetGrabber.d.ts +0 -39
- package/lib/typescript/module/src/TrueSheetGrabber.d.ts.map +0 -1
- package/lib/typescript/module/src/TrueSheetModule.d.ts +0 -2
- package/lib/typescript/module/src/TrueSheetModule.d.ts.map +0 -1
- package/lib/typescript/module/src/index.d.ts +0 -4
- package/lib/typescript/module/src/index.d.ts.map +0 -1
- package/src/TrueSheetFooter.tsx +0 -17
- package/src/TrueSheetModule.ts +0 -19
- /package/lib/{typescript/module → module}/package.json +0 -0
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Created by Jovanni Lo (@lodev09)
|
|
3
|
-
// Copyright (c) 2024-present. All rights reserved.
|
|
4
|
-
//
|
|
5
|
-
// This source code is licensed under the MIT license found in the
|
|
6
|
-
// LICENSE file in the root directory of this source tree.
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
// MARK: - SizeInfo
|
|
10
|
-
|
|
11
|
-
struct SizeInfo {
|
|
12
|
-
var index: Int
|
|
13
|
-
var value: CGFloat
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// MARK: - TrueSheetViewControllerDelegate
|
|
17
|
-
|
|
18
|
-
protocol TrueSheetViewControllerDelegate: AnyObject {
|
|
19
|
-
func viewControllerDidChangeWidth(_ width: CGFloat)
|
|
20
|
-
func viewControllerDidDismiss()
|
|
21
|
-
func viewControllerDidChangeSize(_ sizeInfo: SizeInfo?)
|
|
22
|
-
func viewControllerWillAppear()
|
|
23
|
-
func viewControllerKeyboardWillShow(_ keyboardHeight: CGFloat)
|
|
24
|
-
func viewControllerKeyboardWillHide()
|
|
25
|
-
func viewControllerDidDrag(_ state: UIPanGestureRecognizer.State, _ height: CGFloat)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// MARK: - TrueSheetViewController
|
|
29
|
-
|
|
30
|
-
class TrueSheetViewController: UIViewController, UISheetPresentationControllerDelegate {
|
|
31
|
-
// MARK: - Properties
|
|
32
|
-
|
|
33
|
-
weak var delegate: TrueSheetViewControllerDelegate?
|
|
34
|
-
|
|
35
|
-
/// The bottomInset of the sheet.
|
|
36
|
-
/// We will be excluding these on height calculation for conistency with scrollable content.
|
|
37
|
-
private var bottomInset: CGFloat
|
|
38
|
-
private var backgroundView: UIVisualEffectView
|
|
39
|
-
|
|
40
|
-
var lastViewWidth: CGFloat = 0
|
|
41
|
-
var detentValues: [String: SizeInfo] = [:]
|
|
42
|
-
|
|
43
|
-
var sizes: [Any] = ["medium", "large"]
|
|
44
|
-
|
|
45
|
-
var maxHeight: CGFloat?
|
|
46
|
-
var contentHeight: CGFloat = 0
|
|
47
|
-
var footerHeight: CGFloat = 0
|
|
48
|
-
|
|
49
|
-
var backgroundColor: UIColor?
|
|
50
|
-
var blurEffect: UIBlurEffect?
|
|
51
|
-
|
|
52
|
-
var cornerRadius: CGFloat?
|
|
53
|
-
var grabber = true
|
|
54
|
-
var dimmed = true
|
|
55
|
-
var dimmedIndex: Int? = 0
|
|
56
|
-
|
|
57
|
-
var currentSizeInfo: SizeInfo? {
|
|
58
|
-
guard #available(iOS 15.0, *), let sheet = sheetPresentationController,
|
|
59
|
-
let rawValue = sheet.selectedDetentIdentifier?.rawValue else {
|
|
60
|
-
return nil
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return detentValues[rawValue]
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// MARK: - Setup
|
|
67
|
-
|
|
68
|
-
init() {
|
|
69
|
-
backgroundView = UIVisualEffectView()
|
|
70
|
-
|
|
71
|
-
let window = UIApplication.shared.windows.first(where: { $0.isKeyWindow })
|
|
72
|
-
bottomInset = window?.safeAreaInsets.bottom ?? 0
|
|
73
|
-
|
|
74
|
-
super.init(nibName: nil, bundle: nil)
|
|
75
|
-
|
|
76
|
-
backgroundView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
|
|
77
|
-
backgroundView.frame = view.bounds
|
|
78
|
-
|
|
79
|
-
view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
|
|
80
|
-
view.insertSubview(backgroundView, at: 0)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
deinit {
|
|
84
|
-
NotificationCenter.default.removeObserver(self)
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
@available(*, unavailable)
|
|
88
|
-
required init?(coder _: NSCoder) {
|
|
89
|
-
fatalError("init(coder:) has not been implemented")
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
@available(iOS 15.0, *)
|
|
93
|
-
func sheetPresentationControllerDidChangeSelectedDetentIdentifier(_ sheet: UISheetPresentationController) {
|
|
94
|
-
if let rawValue = sheet.selectedDetentIdentifier?.rawValue,
|
|
95
|
-
let sizeInfo = detentValues[rawValue] {
|
|
96
|
-
delegate?.viewControllerDidChangeSize(sizeInfo)
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
override func viewDidLoad() {
|
|
101
|
-
super.viewDidLoad()
|
|
102
|
-
|
|
103
|
-
NotificationCenter.default.addObserver(
|
|
104
|
-
self, selector: #selector(keyboardWillShow(_:)),
|
|
105
|
-
name: UIResponder.keyboardWillShowNotification,
|
|
106
|
-
object: nil
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
NotificationCenter.default.addObserver(
|
|
110
|
-
self, selector: #selector(keyboardWillHide(_:)),
|
|
111
|
-
name: UIResponder.keyboardWillHideNotification,
|
|
112
|
-
object: nil
|
|
113
|
-
)
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
@objc
|
|
117
|
-
func handlePanGesture(_ gesture: UIPanGestureRecognizer) {
|
|
118
|
-
guard let view = gesture.view else { return }
|
|
119
|
-
|
|
120
|
-
// Calculate visible height
|
|
121
|
-
let screenHeight = UIScreen.main.bounds.height
|
|
122
|
-
let sheetY = view.frame.origin.y
|
|
123
|
-
let height = screenHeight - bottomInset - sheetY
|
|
124
|
-
|
|
125
|
-
delegate?.viewControllerDidDrag(gesture.state, height)
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
@objc
|
|
129
|
-
private func keyboardWillShow(_ notification: Notification) {
|
|
130
|
-
guard let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else {
|
|
131
|
-
return
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
delegate?.viewControllerKeyboardWillShow(keyboardSize.height)
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
@objc
|
|
138
|
-
private func keyboardWillHide(_: Notification) {
|
|
139
|
-
delegate?.viewControllerKeyboardWillHide()
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
override func viewWillAppear(_ animated: Bool) {
|
|
143
|
-
super.viewWillAppear(animated)
|
|
144
|
-
delegate?.viewControllerWillAppear()
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
override func viewDidDisappear(_ animated: Bool) {
|
|
148
|
-
super.viewDidDisappear(animated)
|
|
149
|
-
delegate?.viewControllerDidDismiss()
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/// This is called multiple times while sheet is being dragged.
|
|
153
|
-
/// let's try to minimize size update by comparing last known width
|
|
154
|
-
override func viewDidLayoutSubviews() {
|
|
155
|
-
super.viewDidLayoutSubviews()
|
|
156
|
-
|
|
157
|
-
if lastViewWidth != view.frame.width {
|
|
158
|
-
delegate?.viewControllerDidChangeWidth(view.bounds.width)
|
|
159
|
-
lastViewWidth = view.frame.width
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/// Setup background. Supports color or blur effect.
|
|
164
|
-
/// Can only use one or the other.
|
|
165
|
-
func setupBackground() {
|
|
166
|
-
if let blurEffect {
|
|
167
|
-
backgroundView.effect = blurEffect
|
|
168
|
-
backgroundView.backgroundColor = nil
|
|
169
|
-
} else {
|
|
170
|
-
backgroundView.backgroundColor = backgroundColor
|
|
171
|
-
backgroundView.effect = nil
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/// Setup dimmed sheet.
|
|
176
|
-
/// `dimmedIndex` will further customize the dimming behavior.
|
|
177
|
-
@available(iOS 15.0, *)
|
|
178
|
-
func setupDimmedBackground() {
|
|
179
|
-
guard let sheet = sheetPresentationController else {
|
|
180
|
-
return
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
if dimmed, dimmedIndex == 0 {
|
|
184
|
-
sheet.largestUndimmedDetentIdentifier = nil
|
|
185
|
-
} else {
|
|
186
|
-
sheet.largestUndimmedDetentIdentifier = .large
|
|
187
|
-
|
|
188
|
-
if #available(iOS 16.0, *) {
|
|
189
|
-
if dimmed, let dimmedIndex, sheet.detents.indices.contains(dimmedIndex - 1) {
|
|
190
|
-
sheet.largestUndimmedDetentIdentifier = sheet.detents[dimmedIndex - 1].identifier
|
|
191
|
-
} else if let lastIdentifier = sheet.detents.last?.identifier {
|
|
192
|
-
sheet.largestUndimmedDetentIdentifier = lastIdentifier
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/// Setup sheet detents by sizes.
|
|
199
|
-
@available(iOS 15.0, *)
|
|
200
|
-
func setupSizes() {
|
|
201
|
-
guard let sheet = sheetPresentationController else {
|
|
202
|
-
return
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Configure detents
|
|
206
|
-
detentValues = [:]
|
|
207
|
-
var detents: [UISheetPresentationController.Detent] = []
|
|
208
|
-
|
|
209
|
-
for (index, size) in sizes.enumerated() {
|
|
210
|
-
// Exclude bottom safe area for consistency with a Scrollable content
|
|
211
|
-
let adjustedContentHeight = contentHeight - bottomInset
|
|
212
|
-
let detent = detentFor(size, with: adjustedContentHeight + footerHeight, with: maxHeight) { id, value in
|
|
213
|
-
self.detentValues[id] = SizeInfo(index: index, value: value)
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
detents.append(detent)
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
sheet.detents = detents
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/// Get the detent identifier for a given index
|
|
223
|
-
@available(iOS 15.0, *)
|
|
224
|
-
func detentIdentifierForIndex(_ index: Int) -> UISheetPresentationController.Detent.Identifier {
|
|
225
|
-
guard let sheet = sheetPresentationController else {
|
|
226
|
-
return .medium
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
var identifier = UISheetPresentationController.Detent.Identifier.medium
|
|
230
|
-
if sheet.detents.indices.contains(index) {
|
|
231
|
-
let detent = sheet.detents[index]
|
|
232
|
-
if #available(iOS 16.0, *) {
|
|
233
|
-
identifier = detent.identifier
|
|
234
|
-
} else if detent == .large() {
|
|
235
|
-
identifier = .large
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
return identifier
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/// Observe while the sheet is being dragged.
|
|
243
|
-
@available(iOS 15.0, *)
|
|
244
|
-
func observeDrag() {
|
|
245
|
-
guard let sheet = sheetPresentationController,
|
|
246
|
-
let presentedView = sheet.presentedView else {
|
|
247
|
-
return
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
for recognizer in presentedView.gestureRecognizers ?? [] {
|
|
251
|
-
if let panGesture = recognizer as? UIPanGestureRecognizer {
|
|
252
|
-
panGesture.addTarget(self, action: #selector(handlePanGesture(_:)))
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/// Prepares the view controller for sheet presentation
|
|
258
|
-
func prepareForPresentation(at index: Int = 0, _ completion: (() -> Void)?) {
|
|
259
|
-
guard #available(iOS 15.0, *), let sheet = sheetPresentationController else {
|
|
260
|
-
completion?()
|
|
261
|
-
return
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
setupSizes()
|
|
265
|
-
setupDimmedBackground()
|
|
266
|
-
|
|
267
|
-
sheet.delegate = self
|
|
268
|
-
sheet.prefersEdgeAttachedInCompactHeight = true
|
|
269
|
-
sheet.prefersGrabberVisible = grabber
|
|
270
|
-
sheet.preferredCornerRadius = cornerRadius
|
|
271
|
-
sheet.selectedDetentIdentifier = detentIdentifierForIndex(index)
|
|
272
|
-
|
|
273
|
-
completion?()
|
|
274
|
-
}
|
|
275
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Created by Jovanni Lo (@lodev09)
|
|
3
|
-
// Copyright (c) 2024-present. All rights reserved.
|
|
4
|
-
//
|
|
5
|
-
// This source code is licensed under the MIT license found in the
|
|
6
|
-
// LICENSE file in the root directory of this source tree.
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
#import <React/RCTViewManager.h>
|
|
10
|
-
|
|
11
|
-
@interface RCT_EXTERN_REMAP_MODULE (TrueSheetView, TrueSheetViewManager, RCTViewManager)
|
|
12
|
-
|
|
13
|
-
// Module Functions
|
|
14
|
-
|
|
15
|
-
/// Presents the sheet controller
|
|
16
|
-
RCT_EXTERN_METHOD(present:(nonnull NSNumber*)tag
|
|
17
|
-
index:(int)index
|
|
18
|
-
resolve:(RCTPromiseResolveBlock)resolve
|
|
19
|
-
reject:(RCTPromiseRejectBlock)reject)
|
|
20
|
-
|
|
21
|
-
RCT_EXTERN_METHOD(dismiss:(nonnull NSNumber*)tag
|
|
22
|
-
resolve:(RCTPromiseResolveBlock)resolve
|
|
23
|
-
reject:(RCTPromiseRejectBlock)reject)
|
|
24
|
-
|
|
25
|
-
// Events
|
|
26
|
-
RCT_EXPORT_VIEW_PROPERTY(onMount, RCTDirectEventBlock)
|
|
27
|
-
RCT_EXPORT_VIEW_PROPERTY(onPresent, RCTDirectEventBlock)
|
|
28
|
-
RCT_EXPORT_VIEW_PROPERTY(onDismiss, RCTDirectEventBlock)
|
|
29
|
-
RCT_EXPORT_VIEW_PROPERTY(onSizeChange, RCTDirectEventBlock)
|
|
30
|
-
RCT_EXPORT_VIEW_PROPERTY(onDragBegin, RCTDirectEventBlock)
|
|
31
|
-
RCT_EXPORT_VIEW_PROPERTY(onDragChange, RCTDirectEventBlock)
|
|
32
|
-
RCT_EXPORT_VIEW_PROPERTY(onDragEnd, RCTDirectEventBlock)
|
|
33
|
-
RCT_EXPORT_VIEW_PROPERTY(onContainerSizeChange, RCTDirectEventBlock)
|
|
34
|
-
|
|
35
|
-
// Properties
|
|
36
|
-
RCT_EXPORT_VIEW_PROPERTY(scrollableHandle, NSNumber)
|
|
37
|
-
RCT_EXPORT_VIEW_PROPERTY(maxHeight, NSNumber)
|
|
38
|
-
RCT_EXPORT_VIEW_PROPERTY(sizes, NSArray)
|
|
39
|
-
RCT_EXPORT_VIEW_PROPERTY(blurTint, NSString)
|
|
40
|
-
RCT_EXPORT_VIEW_PROPERTY(background, NSNumber)
|
|
41
|
-
RCT_EXPORT_VIEW_PROPERTY(cornerRadius, NSNumber)
|
|
42
|
-
RCT_EXPORT_VIEW_PROPERTY(grabber, BOOL)
|
|
43
|
-
RCT_EXPORT_VIEW_PROPERTY(dismissible, BOOL)
|
|
44
|
-
RCT_EXPORT_VIEW_PROPERTY(dimmed, BOOL)
|
|
45
|
-
RCT_EXPORT_VIEW_PROPERTY(dimmedIndex, NSNumber)
|
|
46
|
-
RCT_EXPORT_VIEW_PROPERTY(initialIndex, NSNumber)
|
|
47
|
-
RCT_EXPORT_VIEW_PROPERTY(initialIndexAnimated, BOOL)
|
|
48
|
-
|
|
49
|
-
// Internal properties
|
|
50
|
-
RCT_EXPORT_VIEW_PROPERTY(contentHeight, NSNumber)
|
|
51
|
-
RCT_EXPORT_VIEW_PROPERTY(footerHeight, NSNumber)
|
|
52
|
-
|
|
53
|
-
@end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Created by Jovanni Lo (@lodev09)
|
|
3
|
-
// Copyright (c) 2024-present. All rights reserved.
|
|
4
|
-
//
|
|
5
|
-
// This source code is licensed under the MIT license found in the
|
|
6
|
-
// LICENSE file in the root directory of this source tree.
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
@objc(TrueSheetViewManager)
|
|
10
|
-
class TrueSheetViewManager: RCTViewManager {
|
|
11
|
-
// MARK: - properties
|
|
12
|
-
|
|
13
|
-
override var methodQueue: DispatchQueue! {
|
|
14
|
-
return DispatchQueue.main
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
override static func requiresMainQueueSetup() -> Bool {
|
|
18
|
-
return true
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
override func view() -> UIView? {
|
|
22
|
-
return TrueSheetView(with: bridge)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// MARK: - Private
|
|
26
|
-
|
|
27
|
-
private func getTrueSheetView(_ tag: NSNumber) -> TrueSheetView? {
|
|
28
|
-
guard let uiManager = bridge?.uiManager else { return nil }
|
|
29
|
-
guard let viewForTag = uiManager.view(forReactTag: tag) else { return nil }
|
|
30
|
-
// swiftlint:disable force_cast
|
|
31
|
-
return viewForTag as! TrueSheetView
|
|
32
|
-
// swiftlint:enable force_cast
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// MARK: - React Functions
|
|
36
|
-
|
|
37
|
-
@objc
|
|
38
|
-
func present(_ tag: NSNumber, index: Int, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
39
|
-
let trueSheetView = getTrueSheetView(tag)
|
|
40
|
-
trueSheetView?.present(at: index, promise: Promise(resolver: resolve, rejecter: reject))
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
@objc
|
|
44
|
-
func dismiss(_ tag: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
45
|
-
let trueSheetView = getTrueSheetView(tag)
|
|
46
|
-
trueSheetView?.dismiss(promise: Promise(resolver: resolve, rejecter: reject))
|
|
47
|
-
}
|
|
48
|
-
}
|
package/ios/Utils/Logger.swift
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Created by Jovanni Lo (@lodev09)
|
|
3
|
-
// Copyright (c) 2024-present. All rights reserved.
|
|
4
|
-
//
|
|
5
|
-
// This source code is licensed under the MIT license found in the
|
|
6
|
-
// LICENSE file in the root directory of this source tree.
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
import Foundation
|
|
10
|
-
|
|
11
|
-
// MARK: - Logger
|
|
12
|
-
|
|
13
|
-
enum Logger {
|
|
14
|
-
/**
|
|
15
|
-
Log a message to the console in the format of `TrueSheet.[caller-function-name]: [message]`
|
|
16
|
-
|
|
17
|
-
@discussion
|
|
18
|
-
If the global ConsoleLogFunction is set, this function also logs to the JavaScript console (console.log, console.trace, console.warn or console.error)
|
|
19
|
-
This function also always logs to [RCTDefaultLogFunction].
|
|
20
|
-
In non-DEBUG builds, this function is no-op.
|
|
21
|
-
*/
|
|
22
|
-
static func log(level: RCTLogLevel, _ message: String) {
|
|
23
|
-
#if DEBUG
|
|
24
|
-
RCTDefaultLogFunction(level, RCTLogSource.javaScript, nil, nil, "TrueSheet: \(message)")
|
|
25
|
-
#endif
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
static func info(_ message: String) {
|
|
29
|
-
log(level: .info, message)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
static func warning(_ message: String) {
|
|
33
|
-
log(level: .warning, message)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
static func error(_ message: String) {
|
|
37
|
-
log(level: .error, message)
|
|
38
|
-
}
|
|
39
|
-
}
|
package/ios/Utils/Promise.swift
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Created by Jovanni Lo (@lodev09)
|
|
3
|
-
// Copyright (c) 2024-present. All rights reserved.
|
|
4
|
-
//
|
|
5
|
-
// This source code is licensed under the MIT license found in the
|
|
6
|
-
// LICENSE file in the root directory of this source tree.
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
class Promise {
|
|
10
|
-
private let resolver: RCTPromiseResolveBlock
|
|
11
|
-
private let rejecter: RCTPromiseRejectBlock
|
|
12
|
-
|
|
13
|
-
init(resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
14
|
-
self.resolver = resolver
|
|
15
|
-
self.rejecter = rejecter
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
func reject(message: String) {
|
|
19
|
-
rejecter("Error", message, nil)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
func resolve(_ value: Any?) {
|
|
23
|
-
resolver(value)
|
|
24
|
-
}
|
|
25
|
-
}
|
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.TrueSheet = void 0;
|
|
7
|
-
var _react = require("react");
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
var _TrueSheetModule = require("./TrueSheetModule.js");
|
|
10
|
-
var _TrueSheetGrabber = require("./TrueSheetGrabber.js");
|
|
11
|
-
var _TrueSheetFooter = require("./TrueSheetFooter.js");
|
|
12
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
-
const NATIVE_COMPONENT_NAME = 'TrueSheetView';
|
|
14
|
-
const LINKING_ERROR = `The package '@lodev09/react-native-true-sheet' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
15
|
-
ios: "- You have run 'pod install'\n",
|
|
16
|
-
default: ''
|
|
17
|
-
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
18
|
-
const TrueSheetNativeView = (0, _reactNative.requireNativeComponent)(NATIVE_COMPONENT_NAME);
|
|
19
|
-
if (!TrueSheetNativeView) {
|
|
20
|
-
throw new Error(LINKING_ERROR);
|
|
21
|
-
}
|
|
22
|
-
class TrueSheet extends _react.PureComponent {
|
|
23
|
-
displayName = 'TrueSheet';
|
|
24
|
-
/**
|
|
25
|
-
* Map of sheet names against their handle.
|
|
26
|
-
*/
|
|
27
|
-
static handles = {};
|
|
28
|
-
constructor(props) {
|
|
29
|
-
super(props);
|
|
30
|
-
this.ref = /*#__PURE__*/(0, _react.createRef)();
|
|
31
|
-
this.onMount = this.onMount.bind(this);
|
|
32
|
-
this.onDismiss = this.onDismiss.bind(this);
|
|
33
|
-
this.onPresent = this.onPresent.bind(this);
|
|
34
|
-
this.onSizeChange = this.onSizeChange.bind(this);
|
|
35
|
-
this.onDragBegin = this.onDragBegin.bind(this);
|
|
36
|
-
this.onDragChange = this.onDragChange.bind(this);
|
|
37
|
-
this.onDragEnd = this.onDragEnd.bind(this);
|
|
38
|
-
this.onContentLayout = this.onContentLayout.bind(this);
|
|
39
|
-
this.onFooterLayout = this.onFooterLayout.bind(this);
|
|
40
|
-
this.onContainerSizeChange = this.onContainerSizeChange.bind(this);
|
|
41
|
-
this.state = {
|
|
42
|
-
containerWidth: undefined,
|
|
43
|
-
containerHeight: undefined,
|
|
44
|
-
contentHeight: undefined,
|
|
45
|
-
footerHeight: undefined,
|
|
46
|
-
scrollableHandle: null
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
static getHandle(name) {
|
|
50
|
-
const handle = TrueSheet.handles[name];
|
|
51
|
-
if (!handle) {
|
|
52
|
-
console.warn(`Could not get native view tag from "${name}". Check your name prop.`);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
return handle;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Present the sheet by given `name`.
|
|
60
|
-
* See `name` prop.
|
|
61
|
-
*/
|
|
62
|
-
static async present(name, index = 0) {
|
|
63
|
-
const handle = TrueSheet.getHandle(name);
|
|
64
|
-
if (!handle) return;
|
|
65
|
-
await _TrueSheetModule.TrueSheetModule.present(handle, index);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Dismiss the sheet by given `name`.
|
|
70
|
-
* See `name` prop.
|
|
71
|
-
*/
|
|
72
|
-
static async dismiss(name) {
|
|
73
|
-
const handle = TrueSheet.getHandle(name);
|
|
74
|
-
if (!handle) return;
|
|
75
|
-
await _TrueSheetModule.TrueSheetModule.dismiss(handle);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Resize the sheet by given `name`.
|
|
80
|
-
* See `name` prop.
|
|
81
|
-
*/
|
|
82
|
-
static async resize(name, index) {
|
|
83
|
-
await TrueSheet.present(name, index);
|
|
84
|
-
}
|
|
85
|
-
get handle() {
|
|
86
|
-
const nodeHandle = (0, _reactNative.findNodeHandle)(this.ref.current);
|
|
87
|
-
if (nodeHandle == null || nodeHandle === -1) {
|
|
88
|
-
throw new Error('Could not get native view tag');
|
|
89
|
-
}
|
|
90
|
-
return nodeHandle;
|
|
91
|
-
}
|
|
92
|
-
updateState() {
|
|
93
|
-
const scrollableHandle = this.props.scrollRef?.current ? (0, _reactNative.findNodeHandle)(this.props.scrollRef.current) : null;
|
|
94
|
-
if (this.props.name) {
|
|
95
|
-
TrueSheet.handles[this.props.name] = this.handle;
|
|
96
|
-
}
|
|
97
|
-
this.setState({
|
|
98
|
-
scrollableHandle
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
onSizeChange(event) {
|
|
102
|
-
this.props.onSizeChange?.(event);
|
|
103
|
-
}
|
|
104
|
-
onContainerSizeChange(event) {
|
|
105
|
-
this.setState({
|
|
106
|
-
containerWidth: event.nativeEvent.width,
|
|
107
|
-
containerHeight: event.nativeEvent.height
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
onPresent(event) {
|
|
111
|
-
this.props.onPresent?.(event);
|
|
112
|
-
}
|
|
113
|
-
onFooterLayout(event) {
|
|
114
|
-
this.setState({
|
|
115
|
-
footerHeight: event.nativeEvent.layout.height
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
onContentLayout(event) {
|
|
119
|
-
this.setState({
|
|
120
|
-
contentHeight: event.nativeEvent.layout.height
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
onDismiss() {
|
|
124
|
-
this.props.onDismiss?.();
|
|
125
|
-
}
|
|
126
|
-
onMount() {
|
|
127
|
-
this.props.onMount?.();
|
|
128
|
-
}
|
|
129
|
-
onDragBegin(event) {
|
|
130
|
-
this.props.onDragBegin?.(event);
|
|
131
|
-
}
|
|
132
|
-
onDragChange(event) {
|
|
133
|
-
this.props.onDragChange?.(event);
|
|
134
|
-
}
|
|
135
|
-
onDragEnd(event) {
|
|
136
|
-
this.props.onDragEnd?.(event);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Present the sheet. Optionally accepts a size `index`.
|
|
141
|
-
* See `sizes` prop
|
|
142
|
-
*/
|
|
143
|
-
async present(index = 0) {
|
|
144
|
-
await _TrueSheetModule.TrueSheetModule.present(this.handle, index);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Resizes the Sheet programmatically by `index`.
|
|
149
|
-
* This is an alias of the `present(index)` method.
|
|
150
|
-
*/
|
|
151
|
-
async resize(index) {
|
|
152
|
-
await this.present(index);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Dismisses the Sheet
|
|
157
|
-
*/
|
|
158
|
-
async dismiss() {
|
|
159
|
-
await _TrueSheetModule.TrueSheetModule.dismiss(this.handle);
|
|
160
|
-
}
|
|
161
|
-
componentDidMount() {
|
|
162
|
-
if (this.props.sizes && this.props.sizes.length > 3) {
|
|
163
|
-
console.warn('TrueSheet only supports a maximum of 3 sizes; collapsed, half-expanded and expanded. Check your `sizes` prop.');
|
|
164
|
-
}
|
|
165
|
-
this.updateState();
|
|
166
|
-
}
|
|
167
|
-
componentDidUpdate() {
|
|
168
|
-
this.updateState();
|
|
169
|
-
}
|
|
170
|
-
render() {
|
|
171
|
-
const {
|
|
172
|
-
sizes = ['medium', 'large'],
|
|
173
|
-
backgroundColor = 'white',
|
|
174
|
-
dismissible = true,
|
|
175
|
-
grabber = true,
|
|
176
|
-
dimmed = true,
|
|
177
|
-
initialIndexAnimated = true,
|
|
178
|
-
edgeToEdge = false,
|
|
179
|
-
keyboardMode = 'resize',
|
|
180
|
-
initialIndex,
|
|
181
|
-
dimmedIndex,
|
|
182
|
-
grabberProps,
|
|
183
|
-
blurTint,
|
|
184
|
-
cornerRadius,
|
|
185
|
-
maxHeight,
|
|
186
|
-
FooterComponent,
|
|
187
|
-
style,
|
|
188
|
-
contentContainerStyle,
|
|
189
|
-
children,
|
|
190
|
-
...rest
|
|
191
|
-
} = this.props;
|
|
192
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(TrueSheetNativeView, {
|
|
193
|
-
ref: this.ref,
|
|
194
|
-
style: $nativeSheet,
|
|
195
|
-
scrollableHandle: this.state.scrollableHandle,
|
|
196
|
-
sizes: sizes,
|
|
197
|
-
blurTint: blurTint,
|
|
198
|
-
background: (0, _reactNative.processColor)(backgroundColor),
|
|
199
|
-
cornerRadius: cornerRadius,
|
|
200
|
-
contentHeight: this.state.contentHeight,
|
|
201
|
-
footerHeight: this.state.footerHeight,
|
|
202
|
-
grabber: grabber,
|
|
203
|
-
dimmed: dimmed,
|
|
204
|
-
dimmedIndex: dimmedIndex,
|
|
205
|
-
edgeToEdge: edgeToEdge,
|
|
206
|
-
initialIndex: initialIndex,
|
|
207
|
-
initialIndexAnimated: initialIndexAnimated,
|
|
208
|
-
keyboardMode: keyboardMode,
|
|
209
|
-
dismissible: dismissible,
|
|
210
|
-
maxHeight: maxHeight,
|
|
211
|
-
onMount: this.onMount,
|
|
212
|
-
onPresent: this.onPresent,
|
|
213
|
-
onDismiss: this.onDismiss,
|
|
214
|
-
onSizeChange: this.onSizeChange,
|
|
215
|
-
onDragBegin: this.onDragBegin,
|
|
216
|
-
onDragChange: this.onDragChange,
|
|
217
|
-
onDragEnd: this.onDragEnd,
|
|
218
|
-
onContainerSizeChange: this.onContainerSizeChange,
|
|
219
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
220
|
-
collapsable: false,
|
|
221
|
-
style: [{
|
|
222
|
-
overflow: _reactNative.Platform.select({
|
|
223
|
-
ios: undefined,
|
|
224
|
-
android: 'hidden'
|
|
225
|
-
}),
|
|
226
|
-
// Update the width on JS side.
|
|
227
|
-
// New Arch interop does not support updating it in native :/
|
|
228
|
-
width: this.state.containerWidth,
|
|
229
|
-
height: this.state.containerHeight
|
|
230
|
-
}, style],
|
|
231
|
-
...rest,
|
|
232
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
233
|
-
collapsable: false,
|
|
234
|
-
onLayout: this.onContentLayout,
|
|
235
|
-
style: contentContainerStyle,
|
|
236
|
-
children: children
|
|
237
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
238
|
-
collapsable: false,
|
|
239
|
-
onLayout: this.onFooterLayout,
|
|
240
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TrueSheetFooter.TrueSheetFooter, {
|
|
241
|
-
Component: FooterComponent
|
|
242
|
-
})
|
|
243
|
-
}), _reactNative.Platform.OS === 'android' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_TrueSheetGrabber.TrueSheetGrabber, {
|
|
244
|
-
visible: grabber,
|
|
245
|
-
...grabberProps
|
|
246
|
-
})]
|
|
247
|
-
})
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
exports.TrueSheet = TrueSheet;
|
|
252
|
-
const $nativeSheet = {
|
|
253
|
-
position: 'absolute',
|
|
254
|
-
width: '100%',
|
|
255
|
-
left: -9999,
|
|
256
|
-
zIndex: -9999
|
|
257
|
-
};
|
|
258
|
-
//# sourceMappingURL=TrueSheet.js.map
|