agora-appbuilder-core 3.0.10 → 3.0.12

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.
Files changed (249) hide show
  1. package/Readme.md +0 -6
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +4979 -7086
  4. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +0 -4
  5. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +0 -18
  6. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +0 -2
  7. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +26 -30
  8. package/template/agora-rn-uikit/src/Controls/Icons.ts +83 -30
  9. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  10. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +0 -1
  11. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +0 -1
  12. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +0 -1
  13. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +0 -1
  14. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +0 -1
  15. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +0 -2
  16. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +0 -1
  17. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +0 -1
  18. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +0 -1
  19. package/template/agora-rn-uikit/src/Reducer/index.ts +0 -3
  20. package/template/agora-rn-uikit/src/Rtc/Create.tsx +1 -89
  21. package/template/agora-rn-uikit/src/RtcConfigure.tsx +2 -39
  22. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +5 -15
  23. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +9 -15
  24. package/template/agora-rn-uikit/src/index.ts +1 -3
  25. package/template/android/app/build.gradle +0 -1
  26. package/template/android/app/src/main/AndroidManifest.xml +15 -22
  27. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +0 -50
  28. package/template/android/build.gradle +3 -3
  29. package/template/babel.config.js +0 -1
  30. package/template/bridge/rtc/webNg/RtcEngine.ts +17 -110
  31. package/template/customization-api/sub-components.ts +1 -1
  32. package/template/customization-api/typeDefinition.ts +1 -2
  33. package/template/electron/index.html +27 -27
  34. package/template/electron/renderer/index.js +0 -1
  35. package/template/global.d.ts +4 -26
  36. package/template/index.js +0 -4
  37. package/template/index.rsdk.tsx +0 -1
  38. package/template/index.web.js +1 -7
  39. package/template/index.wsdk.tsx +1 -1
  40. package/template/ios/HelloWorld/Info.plist +1 -14
  41. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -17
  42. package/template/metro.config.js +1 -1
  43. package/template/package.json +7 -21
  44. package/template/react-native-toast-message/index.d.ts +43 -43
  45. package/template/react-native-toast-message/src/colors/index.js +2 -3
  46. package/template/react-native-toast-message/src/components/base/index.js +59 -46
  47. package/template/react-native-toast-message/src/components/base/styles.js +32 -16
  48. package/template/react-native-toast-message/src/components/error.js +2 -3
  49. package/template/react-native-toast-message/src/components/info.js +2 -3
  50. package/template/react-native-toast-message/src/components/success.js +2 -3
  51. package/template/react-native-toast-message/src/index.js +31 -122
  52. package/template/react-native-toast-message/src/index.sdk.tsx +35 -125
  53. package/template/react-native-toast-message/src/styles.js +4 -3
  54. package/template/react-native-toast-message/src/styles.sdk.ts +4 -3
  55. package/template/src/App.tsx +0 -6
  56. package/template/src/AppWrapper.tsx +28 -63
  57. package/template/src/assets/icons.ts +102 -0
  58. package/template/src/atoms/HorizontalRule.tsx +1 -3
  59. package/template/src/atoms/PrimaryButton.tsx +26 -51
  60. package/template/src/atoms/SecondaryButton.tsx +5 -8
  61. package/template/src/atoms/TextInput.tsx +14 -12
  62. package/template/src/components/Chat.tsx +214 -86
  63. package/template/src/components/ChatContext.ts +1 -8
  64. package/template/src/components/ColorConfigure.tsx +1 -1
  65. package/template/src/components/ColorContext.ts +1 -1
  66. package/template/src/components/{Controls1.native.tsx → Controls.native.tsx} +4 -6
  67. package/template/src/components/Controls.tsx +42 -342
  68. package/template/src/components/DeviceConfigure.tsx +101 -461
  69. package/template/src/components/DeviceContext.tsx +4 -8
  70. package/template/src/components/EventsConfigure.tsx +7 -144
  71. package/template/src/components/GraphQLProvider.tsx +1 -1
  72. package/template/src/components/GridVideo.tsx +44 -59
  73. package/template/src/components/HostControlView.tsx +35 -114
  74. package/template/src/components/Navbar.tsx +398 -216
  75. package/template/src/components/NetworkQualityContext.tsx +20 -20
  76. package/template/src/components/ParticipantsView.tsx +154 -177
  77. package/template/src/components/PinnedVideo.tsx +120 -207
  78. package/template/src/components/Precall.native.tsx +119 -358
  79. package/template/src/components/Precall.tsx +135 -269
  80. package/template/src/components/RTMConfigure.tsx +4 -27
  81. package/template/src/components/Router.electron.ts +0 -1
  82. package/template/src/components/Router.native.ts +0 -1
  83. package/template/src/components/Router.sdk.ts +0 -1
  84. package/template/src/components/Router.ts +0 -1
  85. package/template/src/components/Settings.tsx +95 -26
  86. package/template/src/components/SettingsView.tsx +56 -251
  87. package/template/src/components/Share.tsx +273 -302
  88. package/template/src/components/StorageContext.tsx +3 -30
  89. package/template/src/components/chat-messages/useChatMessages.tsx +23 -69
  90. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -7
  91. package/template/src/components/common/Error.tsx +6 -20
  92. package/template/src/components/common/Logo.tsx +15 -16
  93. package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -10
  94. package/template/src/components/contexts/VideoMeetingDataContext.tsx +7 -37
  95. package/template/src/components/livestream/LiveStreamContext.tsx +36 -270
  96. package/template/src/components/livestream/Types.ts +14 -39
  97. package/template/src/components/livestream/index.ts +0 -1
  98. package/template/src/components/livestream/views/LiveStreamControls.tsx +4 -12
  99. package/template/src/components/participants/AllAudienceParticipants.tsx +30 -101
  100. package/template/src/components/participants/AllHostParticipants.tsx +34 -103
  101. package/template/src/components/participants/MeParticipant.tsx +38 -0
  102. package/template/src/components/participants/ParticipantName.tsx +7 -13
  103. package/template/src/components/participants/ParticipantSectionTitle.tsx +10 -35
  104. package/template/src/components/participants/RemoteParticipants.tsx +71 -0
  105. package/template/src/components/participants/ScreenshareParticipants.tsx +12 -144
  106. package/template/src/components/precall/{LocalMute1.native.tsx → LocalMute.native.tsx} +5 -21
  107. package/template/src/components/precall/LocalMute.tsx +14 -84
  108. package/template/src/components/precall/VideoPreview.native.tsx +3 -48
  109. package/template/src/components/precall/VideoPreview.tsx +7 -163
  110. package/template/src/components/precall/joinCallBtn.tsx +2 -15
  111. package/template/src/components/precall/meetingTitle.tsx +12 -15
  112. package/template/src/components/precall/selectDevice.tsx +21 -1
  113. package/template/src/components/precall/textInput.tsx +4 -32
  114. package/template/src/components/precall/usePreCall.tsx +0 -16
  115. package/template/src/components/styles.ts +21 -42
  116. package/template/src/components/useShareLink.tsx +14 -12
  117. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  118. package/template/src/pages/Authenticate.tsx +15 -5
  119. package/template/src/pages/Create.tsx +165 -293
  120. package/template/src/pages/Join.tsx +67 -93
  121. package/template/src/pages/VideoCall.tsx +64 -89
  122. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  123. package/template/src/pages/video-call/NameWithMicIcon.tsx +44 -120
  124. package/template/src/pages/video-call/RenderComponent.tsx +2 -3
  125. package/template/src/pages/video-call/VideoCallScreen.tsx +9 -45
  126. package/template/src/pages/video-call/VideoComponent.tsx +3 -18
  127. package/template/src/pages/video-call/VideoRenderer.tsx +60 -218
  128. package/template/src/rtm-events/constants.ts +0 -2
  129. package/template/src/subComponents/ChatBubble.tsx +83 -123
  130. package/template/src/subComponents/ChatContainer.tsx +84 -257
  131. package/template/src/subComponents/ChatInput.tsx +46 -61
  132. package/template/src/subComponents/Checkbox.native.tsx +5 -16
  133. package/template/src/subComponents/Checkbox.tsx +2 -2
  134. package/template/src/subComponents/CopyJoinInfo.tsx +58 -36
  135. package/template/src/subComponents/FallbackLogo.tsx +40 -122
  136. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  137. package/template/src/subComponents/{LayoutIconDropdown1.native.tsx → LayoutIconDropdown.native.tsx} +18 -4
  138. package/template/src/subComponents/LayoutIconDropdown.tsx +134 -131
  139. package/template/src/subComponents/LocalAudioMute.tsx +27 -119
  140. package/template/src/subComponents/LocalEndCall.tsx +33 -71
  141. package/template/src/subComponents/LocalSwitchCamera.tsx +30 -17
  142. package/template/src/subComponents/LocalVideoMute.tsx +27 -117
  143. package/template/src/subComponents/Logo.tsx +4 -3
  144. package/template/src/subComponents/LogoutButton.tsx +1 -1
  145. package/template/src/subComponents/NetworkQualityPill.tsx +63 -60
  146. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  147. package/template/src/subComponents/Recording.tsx +29 -28
  148. package/template/src/subComponents/RemoteAudioMute.tsx +29 -83
  149. package/template/src/subComponents/RemoteEndCall.tsx +5 -8
  150. package/template/src/subComponents/RemoteVideoMute.tsx +21 -74
  151. package/template/src/subComponents/ScreenShareNotice.tsx +8 -83
  152. package/template/src/subComponents/SelectDevice.tsx +61 -404
  153. package/template/src/subComponents/SelectOAuth.tsx +8 -9
  154. package/template/src/subComponents/ToastConfig.tsx +10 -150
  155. package/template/src/subComponents/chat/ChatParticipants.tsx +78 -187
  156. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -95
  157. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -29
  158. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  159. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +11 -24
  160. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +10 -17
  161. package/template/src/subComponents/recording/useRecording.tsx +27 -79
  162. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +70 -52
  163. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +2 -11
  164. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +4 -26
  165. package/template/src/utils/common.tsx +1 -155
  166. package/template/src/utils/index.tsx +0 -19
  167. package/template/src/utils/isMobileOrTablet.ts +2 -7
  168. package/template/src/utils/useButtonTemplate.tsx +0 -1
  169. package/template/src/utils/useMuteToggleLocal.ts +3 -54
  170. package/template/web/index.html +0 -5
  171. package/template/webpack.commons.js +8 -13
  172. package/template/webpack.web.config.js +0 -1
  173. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  174. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +0 -24
  175. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +0 -11
  176. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  177. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  178. package/template/android/app/src/main/res/values/colors.xml +0 -7
  179. package/template/react-native-toast-message/src/components/checkbox.js +0 -178
  180. package/template/react-native.config.js +0 -7
  181. package/template/src/assets/font-styles.css +0 -329
  182. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  183. package/template/src/assets/fonts/icomoon.ttf +0 -0
  184. package/template/src/assets/permission.png +0 -0
  185. package/template/src/assets/selection.json +0 -1
  186. package/template/src/atoms/ActionMenu.tsx +0 -236
  187. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +0 -71
  188. package/template/src/atoms/AnimatedActiveSpeaker.tsx +0 -84
  189. package/template/src/atoms/AnimatedRings.native.tsx +0 -68
  190. package/template/src/atoms/AnimatedRings.tsx +0 -70
  191. package/template/src/atoms/Card.tsx +0 -61
  192. package/template/src/atoms/CircularProgress.native.tsx +0 -121
  193. package/template/src/atoms/CircularProgress.tsx +0 -102
  194. package/template/src/atoms/CustomIcon.tsx +0 -88
  195. package/template/src/atoms/CustomSwitch.tsx +0 -287
  196. package/template/src/atoms/Dropdown.tsx +0 -306
  197. package/template/src/atoms/IconButton.tsx +0 -162
  198. package/template/src/atoms/ImageIcon.tsx +0 -98
  199. package/template/src/atoms/InfoBubble.tsx +0 -291
  200. package/template/src/atoms/Input.tsx +0 -87
  201. package/template/src/atoms/InviteInfo.tsx +0 -166
  202. package/template/src/atoms/LinkButton.tsx +0 -28
  203. package/template/src/atoms/OutlineButton.tsx +0 -61
  204. package/template/src/atoms/ParticipantsCount.tsx +0 -73
  205. package/template/src/atoms/Popup.tsx +0 -147
  206. package/template/src/atoms/RecordingInfo.tsx +0 -49
  207. package/template/src/atoms/Spacer.tsx +0 -22
  208. package/template/src/atoms/TertiaryButton.tsx +0 -78
  209. package/template/src/atoms/Toggle.tsx +0 -47
  210. package/template/src/atoms/Tooltip.native.tsx +0 -65
  211. package/template/src/atoms/Tooltip.tsx +0 -94
  212. package/template/src/atoms/UserAvatar.tsx +0 -60
  213. package/template/src/components/CommonStyles.ts +0 -44
  214. package/template/src/components/ToastComponent.tsx +0 -8
  215. package/template/src/components/participants/Participant.tsx +0 -302
  216. package/template/src/components/participants/UserActionMenuOptions.tsx +0 -398
  217. package/template/src/components/popups/InvitePopup.tsx +0 -115
  218. package/template/src/components/popups/StopRecordingPopup.tsx +0 -114
  219. package/template/src/components/precall/PermissionHelper.native.tsx +0 -5
  220. package/template/src/components/precall/PermissionHelper.tsx +0 -126
  221. package/template/src/components/precall/PreCallSettings.tsx +0 -52
  222. package/template/src/components/useToast.tsx +0 -41
  223. package/template/src/components/useVideoCall.tsx +0 -65
  224. package/template/src/pages/Endcall.tsx +0 -148
  225. package/template/src/pages/video-call/ActionSheet.native.tsx +0 -215
  226. package/template/src/pages/video-call/ActionSheet.tsx +0 -226
  227. package/template/src/pages/video-call/ActionSheetContent.tsx +0 -479
  228. package/template/src/pages/video-call/ActionSheetHandle.tsx +0 -38
  229. package/template/src/pages/video-call/ActionSheetStyles.css +0 -138
  230. package/template/src/pages/video-call/SidePanelHeader.tsx +0 -190
  231. package/template/src/pages/video-call/VideoCallMobileView.tsx +0 -139
  232. package/template/src/pages/video-call/VideoCallScreen.native.tsx +0 -37
  233. package/template/src/subComponents/ChatInput.ios.tsx +0 -237
  234. package/template/src/subComponents/EndcallPopup.tsx +0 -107
  235. package/template/src/subComponents/LayoutIconButton.tsx +0 -201
  236. package/template/src/subComponents/RemoteMutePopup.tsx +0 -193
  237. package/template/src/subComponents/RemoveMeetingPopup.tsx +0 -109
  238. package/template/src/subComponents/RemoveScreensharePopup.tsx +0 -109
  239. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +0 -207
  240. package/template/src/subComponents/SidePanelHeader.tsx +0 -112
  241. package/template/src/theme/index.ts +0 -46
  242. package/template/src/utils/PlatformWrapper.tsx +0 -21
  243. package/template/src/utils/hexadecimalTransparency.ts +0 -108
  244. package/template/src/utils/pendingStateUpdateHelper.ts +0 -19
  245. package/template/src/utils/useFocus.tsx +0 -46
  246. package/template/src/utils/useIsActiveSpeaker.ts +0 -27
  247. package/template/src/utils/useIsHandRaised.ts +0 -13
  248. package/template/src/utils/useRemoteEndScreenshare.ts +0 -26
  249. package/template/src/utils/useRemoteRequest.ts +0 -84
@@ -1,215 +0,0 @@
1
- import {
2
- StyleSheet,
3
- Text,
4
- TouchableOpacity,
5
- View,
6
- Modal,
7
- TouchableWithoutFeedback,
8
- } from 'react-native';
9
- import React, {useCallback, useRef, useState} from 'react';
10
- import BottomSheet, {
11
- BottomSheetModal,
12
- BottomSheetModalProvider,
13
- BottomSheetView,
14
- } from '@gorhom/bottom-sheet';
15
- import KeyboardManager from 'react-native-keyboard-manager';
16
-
17
- import Chat from '../../components/Chat';
18
- import ParticipantView from '../../components/ParticipantsView';
19
- import SettingsView from '../../components/SettingsView';
20
- import ActionSheetContent from './ActionSheetContent';
21
- import {SidePanelType} from '../../subComponents/SidePanelEnum';
22
- import {useSidePanel} from '../../utils/useSidePanel';
23
- import {isIOS} from '../../utils/common';
24
- import ActionSheetHandle from './ActionSheetHandle';
25
- import Spacer from '../../atoms/Spacer';
26
-
27
- //topbar btn template is used to show icons without label text (as in desktop : bottomBar)
28
-
29
- const ActionSheet = () => {
30
- const [isExpanded, setIsExpanded] = React.useState(false);
31
- const {sidePanel, setSidePanel} = useSidePanel();
32
- const bottomSheetRef = useRef<BottomSheetModal>(null);
33
- const chatSheetRef = useRef<BottomSheetModal>(null);
34
- const participantsSheetRef = useRef<BottomSheetModal>(null);
35
- const settingsSheetRef = useRef<BottomSheetModal>(null);
36
-
37
- // callbacks
38
- const handleSheetChanges = useCallback((index: number) => {
39
- bottomSheetRef.current?.snapToIndex(index);
40
- index === 0 ? setIsExpanded(false) : setIsExpanded(true);
41
- }, []);
42
-
43
- React.useEffect(() => {
44
- bottomSheetRef?.current.present();
45
- }, []);
46
-
47
- // updating on sidepanel changes
48
- React.useEffect(() => {
49
- switch (sidePanel) {
50
- case SidePanelType.Participants: {
51
- participantsSheetRef?.current.present();
52
- break;
53
- }
54
- case SidePanelType.Chat: {
55
- chatSheetRef?.current.present();
56
- break;
57
- }
58
- case SidePanelType.Settings: {
59
- settingsSheetRef?.current.present();
60
- break;
61
- }
62
- case SidePanelType.None: {
63
- chatSheetRef?.current.close();
64
- participantsSheetRef?.current.close();
65
- settingsSheetRef?.current.close();
66
- handleSheetChanges(0);
67
- }
68
- default:
69
- bottomSheetRef?.current.present();
70
- }
71
- }, [sidePanel]);
72
-
73
- React.useEffect(() => {
74
- if (isIOS()) {
75
- KeyboardManager.setEnable(false);
76
- return () => KeyboardManager.setEnable(true);
77
- }
78
- }, []);
79
-
80
- function onDismiss() {
81
- setSidePanel(SidePanelType.None);
82
- }
83
-
84
- return (
85
- <BottomSheetModalProvider>
86
- {isExpanded && (
87
- <TouchableWithoutFeedback onPress={() => handleSheetChanges(0)}>
88
- <View style={[styles.backDrop]} />
89
- </TouchableWithoutFeedback>
90
- )}
91
- {/* Controls Action Sheet*/}
92
- <BottomSheetModal
93
- snapPoints={[100, 350]}
94
- ref={bottomSheetRef}
95
- onChange={handleSheetChanges}
96
- enablePanDownToClose={false}
97
- style={styles.container}
98
- backgroundStyle={styles.backgroundStyle}
99
- stackBehavior="push"
100
- handleComponent={() => (
101
- <>
102
- <ActionSheetHandle sidePanel={SidePanelType.None} />
103
- <Spacer size={12} />
104
- </>
105
- )}
106
- handleIndicatorStyle={styles.handleIndicatorStyle}>
107
- <BottomSheetView>
108
- <ActionSheetContent
109
- handleSheetChanges={handleSheetChanges}
110
- isExpanded={isExpanded}
111
- />
112
- </BottomSheetView>
113
- </BottomSheetModal>
114
-
115
- {/* Chat Action Sheet */}
116
- <BottomSheetModal
117
- snapPoints={['100%']}
118
- name="ChatSheet"
119
- onDismiss={onDismiss}
120
- ref={chatSheetRef}
121
- style={styles.container}
122
- backgroundStyle={styles.backgroundStyle}
123
- handleIndicatorStyle={styles.handleIndicatorStyle}
124
- enableContentPanningGesture={false}
125
- handleComponent={() => (
126
- <ActionSheetHandle sidePanel={SidePanelType.Chat} />
127
- )}
128
- keyboardBehavior="extend"
129
- stackBehavior="push">
130
- <BottomSheetView>
131
- <Chat showHeader={false} />
132
- </BottomSheetView>
133
- </BottomSheetModal>
134
-
135
- {/* Participants Action Sheet */}
136
- <BottomSheetModal
137
- snapPoints={['100%']}
138
- ref={participantsSheetRef}
139
- onDismiss={onDismiss}
140
- name="ParticipantsSheet"
141
- style={styles.container}
142
- backgroundStyle={styles.backgroundStyle}
143
- handleIndicatorStyle={styles.handleIndicatorStyle}
144
- enableContentPanningGesture={false}
145
- handleComponent={() => (
146
- <ActionSheetHandle sidePanel={SidePanelType.Participants} />
147
- )}
148
- stackBehavior="push">
149
- <BottomSheetView>
150
- <ParticipantView showHeader={false} />
151
- </BottomSheetView>
152
- </BottomSheetModal>
153
-
154
- {/* Settings Action Sheet */}
155
- <BottomSheetModal
156
- snapPoints={['100%']}
157
- ref={settingsSheetRef}
158
- name="SettingsSheet"
159
- onDismiss={onDismiss}
160
- style={styles.container}
161
- backgroundStyle={styles.backgroundStyle}
162
- handleIndicatorStyle={styles.handleIndicatorStyle}
163
- enableContentPanningGesture={false}
164
- handleComponent={() => (
165
- <ActionSheetHandle sidePanel={SidePanelType.Settings} />
166
- )}
167
- stackBehavior="push">
168
- <BottomSheetView>
169
- <SettingsView showHeader={false} />
170
- </BottomSheetView>
171
- </BottomSheetModal>
172
- </BottomSheetModalProvider>
173
- );
174
- };
175
-
176
- export default ActionSheet;
177
-
178
- const styles = StyleSheet.create({
179
- content: {
180
- paddingHorizontal: 20,
181
- },
182
- row: {
183
- flexDirection: 'row',
184
- justifyContent: 'space-between',
185
- paddingVertical: 24,
186
- paddingHorizontal: 16,
187
- borderColor: '#EDF0F1',
188
- flexWrap: 'wrap',
189
- },
190
-
191
- container: {
192
- shadowColor: '#000000',
193
- shadowOffset: {width: 0, height: -4},
194
- shadowOpacity: 0.1,
195
- shadowRadius: 4,
196
- },
197
- backgroundStyle: {
198
- backgroundColor: $config.CARD_LAYER_1_COLOR,
199
- },
200
-
201
- handleIndicatorStyle: {
202
- // backgroundColor: $config.SEMANTIC_NEUTRAL,
203
- // width: 40,
204
- // height: 4,
205
- },
206
- backDrop: {
207
- position: 'absolute',
208
- top: 0,
209
- bottom: 0,
210
- left: 0,
211
- right: 0,
212
- backgroundColor: $config.CARD_LAYER_1_COLOR,
213
- opacity: 0.5,
214
- },
215
- });
@@ -1,226 +0,0 @@
1
- import {StyleSheet, Text, View, TouchableWithoutFeedback} from 'react-native';
2
- import React, {useRef, useCallback, useLayoutEffect, useEffect} from 'react';
3
- import {BottomSheet, BottomSheetRef} from 'react-spring-bottom-sheet';
4
- import './ActionSheetStyles.css';
5
- import ActionSheetContent from './ActionSheetContent';
6
- import {SpringEvent} from 'react-spring-bottom-sheet/dist/types';
7
- import Chat from '../../components/Chat';
8
- import ParticipantView from '../../components/ParticipantsView';
9
- import SettingsView from '../../components/SettingsView';
10
-
11
- import {SidePanelType} from '../../subComponents/SidePanelEnum';
12
- import {useSidePanel} from '../../utils/useSidePanel';
13
- import ToastComponent from '../../components/ToastComponent';
14
- import {isMobileUA} from '../../utils/common';
15
- import {useToast} from '../../components/useToast';
16
- import ActionSheetHandle from './ActionSheetHandle';
17
- import Spacer from '../../atoms/Spacer';
18
-
19
- const ActionSheet = () => {
20
- const {setActionSheetVisible} = useToast();
21
- const [isExpanded, setIsExpanded] = React.useState(false);
22
- const [isChatOpen, setIsChatOpen] = React.useState(false);
23
- const [isSettingsOpen, setIsSettingsOpen] = React.useState(false);
24
- const [isParticipantsOpen, setIsParticipantsOpen] = React.useState(false);
25
- const bottomSheetRef = useRef<BottomSheetRef>(null);
26
- const chatSheetRef = useRef<BottomSheetRef>(null);
27
- const participantsSheetRef = useRef<BottomSheetRef>(null);
28
- const settingsSheetRef = useRef<BottomSheetRef>(null);
29
- const ToastComponentRender =
30
- isMobileUA() && (isChatOpen || isSettingsOpen || isParticipantsOpen) ? (
31
- <ToastComponent />
32
- ) : (
33
- <></>
34
- );
35
- const {sidePanel, setSidePanel} = useSidePanel();
36
- const [showOverlay, setShowOverlay] = React.useState(false);
37
- const handleSheetChanges = useCallback((index: number) => {
38
- bottomSheetRef.current?.snapTo(({snapPoints}) => snapPoints[index]);
39
- index === 0 ? setIsExpanded(false) : setIsExpanded(true);
40
- }, []);
41
-
42
- const root = document.documentElement;
43
-
44
- useEffect(() => {
45
- root.style.setProperty('--sheet-background', $config.CARD_LAYER_1_COLOR);
46
- root.style.setProperty('--handle-background', $config.SEMANTIC_NEUTRAL);
47
- }, []);
48
-
49
- useEffect(() => {
50
- if (isChatOpen || isSettingsOpen || isParticipantsOpen) {
51
- setActionSheetVisible(true);
52
- } else {
53
- setActionSheetVisible(false);
54
- }
55
- }, [isChatOpen, isSettingsOpen, isParticipantsOpen]);
56
-
57
- // updating on sidepanel changes
58
- useEffect(() => {
59
- switch (sidePanel) {
60
- case SidePanelType.Participants: {
61
- setIsParticipantsOpen(true);
62
- break;
63
- }
64
- case SidePanelType.Chat: {
65
- setIsChatOpen(true);
66
- break;
67
- }
68
- case SidePanelType.Settings: {
69
- setIsSettingsOpen(true);
70
- break;
71
- }
72
- case SidePanelType.None: {
73
- setIsChatOpen(false);
74
- setIsParticipantsOpen(false);
75
- setIsSettingsOpen(false);
76
- handleSheetChanges(0);
77
- }
78
- default:
79
- }
80
- }, [sidePanel]);
81
-
82
- function onDismiss() {
83
- setSidePanel(SidePanelType.None);
84
- }
85
-
86
- const handleSpringStart = (event: SpringEvent) => {
87
- if (event.type == 'SNAP') {
88
- setShowOverlay(true); // as soon drag start show overlay
89
- }
90
- };
91
- const handleSpringEnd = (event: SpringEvent) => {
92
- if (event.type == 'SNAP') {
93
- const isMinmized = bottomSheetRef.current.height === 100;
94
- isMinmized && setShowOverlay(false);
95
- if (event.source === 'dragging') {
96
- if (isMinmized) {
97
- setIsExpanded(false);
98
- } else {
99
- setIsExpanded(true);
100
- }
101
- }
102
- }
103
- };
104
-
105
- const updateActionSheet = (
106
- screenName: 'chat' | 'participants' | 'settings',
107
- ) => {
108
- switch (screenName) {
109
- case 'chat':
110
- setIsChatOpen(true);
111
- break;
112
- case 'participants':
113
- setIsParticipantsOpen(true);
114
- break;
115
- case 'settings':
116
- console.warn('settings selected');
117
- setIsSettingsOpen(true);
118
- break;
119
- default:
120
- }
121
- };
122
- return (
123
- <>
124
- {showOverlay && (
125
- <TouchableWithoutFeedback
126
- onPress={() => {
127
- handleSheetChanges(0);
128
- }}>
129
- <View style={[styles.backDrop]} />
130
- </TouchableWithoutFeedback>
131
- )}
132
- <View>
133
- {/* Controls Action Sheet */}
134
-
135
- <BottomSheet
136
- scrollLocking={false}
137
- ref={bottomSheetRef}
138
- open={true}
139
- onSpringStart={handleSpringStart}
140
- onSpringEnd={handleSpringEnd}
141
- // skipInitialTransition={true}
142
- expandOnContentDrag={true}
143
- snapPoints={({maxHeight}) => [100, 350]}
144
- defaultSnap={({lastSnap, snapPoints}) =>
145
- lastSnap ?? Math.min(...snapPoints)
146
- }
147
- header={
148
- <>
149
- <ActionSheetHandle sidePanel={SidePanelType.None} />
150
- <Spacer size={12} />
151
- </>
152
- }
153
- blocking={false}>
154
- <ActionSheetContent
155
- handleSheetChanges={handleSheetChanges}
156
- isExpanded={isExpanded}
157
- />
158
- </BottomSheet>
159
- {/* Chat Action Sheet */}
160
- <BottomSheet
161
- sibling={ToastComponentRender}
162
- ref={chatSheetRef}
163
- onDismiss={onDismiss}
164
- scrollLocking={false}
165
- open={isChatOpen}
166
- blocking={false}
167
- expandOnContentDrag={false}
168
- snapPoints={({maxHeight}) => [1 * maxHeight]}
169
- header={<ActionSheetHandle sidePanel={SidePanelType.Chat} />}
170
- defaultSnap={({lastSnap, snapPoints}) => snapPoints[0]}>
171
- <Chat showHeader={false} />
172
- </BottomSheet>
173
- {/* Participants Action Sheet */}
174
- <BottomSheet
175
- sibling={ToastComponentRender}
176
- ref={participantsSheetRef}
177
- onDismiss={onDismiss}
178
- open={isParticipantsOpen}
179
- expandOnContentDrag={false}
180
- snapPoints={({maxHeight}) => [1 * maxHeight]}
181
- defaultSnap={({lastSnap, snapPoints}) => snapPoints[0]}
182
- scrollLocking={false}
183
- header={<ActionSheetHandle sidePanel={SidePanelType.Participants} />}
184
- blocking={false}>
185
- <ParticipantView showHeader={false} />
186
- </BottomSheet>
187
- {/* Settings Action Sheet */}
188
- <BottomSheet
189
- sibling={ToastComponentRender}
190
- ref={settingsSheetRef}
191
- onDismiss={onDismiss}
192
- open={isSettingsOpen}
193
- expandOnContentDrag={false}
194
- snapPoints={({maxHeight}) => [1 * maxHeight]}
195
- defaultSnap={({lastSnap, snapPoints}) => snapPoints[0]}
196
- header={<ActionSheetHandle sidePanel={SidePanelType.Settings} />}
197
- blocking={false}>
198
- <SettingsView showHeader={false} />
199
- </BottomSheet>
200
- </View>
201
- </>
202
- );
203
- };
204
-
205
- export default ActionSheet;
206
-
207
- const styles = StyleSheet.create({
208
- container: {
209
- borderWidth: 1,
210
- borderColor: 'red',
211
- },
212
- content: {
213
- borderWidth: 1,
214
- borderColor: 'yellow',
215
- flex: 1,
216
- },
217
- backDrop: {
218
- position: 'absolute',
219
- top: 0,
220
- bottom: 0,
221
- left: 0,
222
- right: 0,
223
- backgroundColor: $config.CARD_LAYER_1_COLOR,
224
- opacity: 0.5,
225
- },
226
- });