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,236 +0,0 @@
1
- import {
2
- Modal,
3
- StyleSheet,
4
- Text,
5
- ModalProps,
6
- TouchableWithoutFeedback,
7
- View,
8
- Image,
9
- TouchableOpacity,
10
- ViewStyle,
11
- } from 'react-native';
12
- import React, {SetStateAction, useState} from 'react';
13
-
14
- import ImageIcon from '../atoms/ImageIcon';
15
- import {IconsInterface} from '../atoms/CustomIcon';
16
- import ThemeConfig from '../theme';
17
- import {isWebInternal} from '../utils/common';
18
- import hexadecimalTransparency from '../utils/hexadecimalTransparency';
19
-
20
- export interface ActionMenuItem {
21
- isBase64Icon?: boolean;
22
- icon: keyof IconsInterface;
23
- onHoverIcon?: keyof IconsInterface;
24
- iconColor: string;
25
- textColor: string;
26
- title: string;
27
- callback: () => void;
28
- onHoverCallback?: (isHovered: boolean) => void;
29
- onHoverContent?: JSX.Element;
30
- disabled?: boolean;
31
- }
32
- export interface ActionMenuProps {
33
- from: string;
34
- actionMenuVisible: boolean;
35
- setActionMenuVisible: React.Dispatch<SetStateAction<boolean>>;
36
- modalPosition?: {
37
- top?: number;
38
- right?: number;
39
- left?: number;
40
- bottom?: number;
41
- };
42
- items: ActionMenuItem[];
43
- hoverMode?: boolean;
44
- onHover?: (hover: boolean) => void;
45
- containerStyle?: ViewStyle;
46
- }
47
-
48
- const ActionMenu = (props: ActionMenuProps) => {
49
- const {
50
- actionMenuVisible,
51
- setActionMenuVisible,
52
- modalPosition,
53
- items,
54
- hoverMode = false,
55
- } = props;
56
-
57
- const renderItems = () => {
58
- return items?.map(
59
- (
60
- {
61
- icon,
62
- onHoverIcon,
63
- isBase64Icon = false,
64
- title,
65
- callback,
66
- iconColor,
67
- textColor,
68
- disabled = false,
69
- onHoverCallback = undefined,
70
- onHoverContent = undefined,
71
- },
72
- index,
73
- ) => (
74
- <PlatformWrapper key={props.from + '_' + title + index}>
75
- {(isHovered: boolean) => (
76
- <>
77
- {/* {onHoverCallback && onHoverCallback(isHovered)} */}
78
- {isHovered ? onHoverContent ? onHoverContent : <></> : <></>}
79
- <TouchableOpacity
80
- disabled={disabled}
81
- style={[
82
- styles.row,
83
- isHovered && !disabled
84
- ? //first item should have border-radius on top left and top right
85
- index === 0
86
- ? styles.rowHoveredFirstChild
87
- : //last item should have border-radius on bottom left and top right
88
- items?.length - 1 === index
89
- ? styles.rowHoveredLastChild
90
- : //middle items don't need any border-radius
91
- styles.rowHoveredMiddleItems
92
- : {},
93
- disabled ? {opacity: 0.4} : {},
94
- items?.length - 1 === index
95
- ? {borderBottomColor: 'transparent'}
96
- : {},
97
- ]}
98
- onPress={callback}
99
- key={icon + index}>
100
- <View style={styles.iconContainer}>
101
- <ImageIcon
102
- base64={isBase64Icon}
103
- iconType="plain"
104
- iconSize={20}
105
- name={
106
- isHovered && onHoverIcon && !disabled ? onHoverIcon : icon
107
- }
108
- tintColor={iconColor}
109
- />
110
- </View>
111
- <Text
112
- style={[styles.text, textColor ? {color: textColor} : {}]}>
113
- {title}
114
- </Text>
115
- </TouchableOpacity>
116
- </>
117
- )}
118
- </PlatformWrapper>
119
- ),
120
- );
121
- };
122
-
123
- return (
124
- <View>
125
- {hoverMode ? (
126
- actionMenuVisible && (
127
- <View
128
- style={[styles.modalView, props?.containerStyle, modalPosition]}>
129
- <div
130
- onMouseEnter={() => props?.onHover && props.onHover(true)}
131
- onMouseLeave={() => props?.onHover && props.onHover(false)}>
132
- {renderItems()}
133
- </div>
134
- </View>
135
- )
136
- ) : (
137
- <Modal
138
- testID="action-menu"
139
- animationType="none"
140
- transparent={true}
141
- visible={actionMenuVisible}>
142
- <TouchableWithoutFeedback
143
- onPress={() => {
144
- setActionMenuVisible(false);
145
- }}>
146
- <View style={styles.backDrop} />
147
- </TouchableWithoutFeedback>
148
- <View
149
- style={[styles.modalView, props?.containerStyle, modalPosition]}>
150
- {renderItems()}
151
- </View>
152
- </Modal>
153
- )}
154
- </View>
155
- );
156
- };
157
-
158
- const PlatformWrapper = ({children}) => {
159
- const [isHovered, setIsHovered] = useState(false);
160
- return isWebInternal() ? (
161
- <div
162
- onMouseEnter={() => {
163
- setIsHovered(true);
164
- }}
165
- onMouseLeave={() => {
166
- setIsHovered(false);
167
- }}>
168
- {children(isHovered)}
169
- </div>
170
- ) : (
171
- <>{children(false)}</>
172
- );
173
- };
174
-
175
- export default ActionMenu;
176
-
177
- const styles = StyleSheet.create({
178
- modalView: {
179
- //don't added overflow: hidden, bottombar minimized version layout popup will be shown in the overflow
180
- position: 'absolute',
181
- width: 230,
182
- backgroundColor: $config.CARD_LAYER_4_COLOR,
183
- borderRadius: 4,
184
- shadowColor: '#000',
185
- shadowOffset: {
186
- width: 0,
187
- height: 4,
188
- },
189
- shadowOpacity: 0.1,
190
- shadowRadius: 8,
191
- zIndex: 1,
192
- elevation: 1,
193
- },
194
- rowHoveredMiddleItems: {
195
- backgroundColor:
196
- $config.CARD_LAYER_5_COLOR + hexadecimalTransparency['15%'],
197
- },
198
- rowHoveredFirstChild: {
199
- backgroundColor:
200
- $config.CARD_LAYER_5_COLOR + hexadecimalTransparency['15%'],
201
- borderTopLeftRadius: 4,
202
- borderTopRightRadius: 4,
203
- },
204
- rowHoveredLastChild: {
205
- backgroundColor:
206
- $config.CARD_LAYER_5_COLOR + hexadecimalTransparency['15%'],
207
- borderBottomLeftRadius: 4,
208
- borderBottomRightRadius: 4,
209
- },
210
- row: {
211
- borderBottomWidth: 1,
212
- borderBottomColor: $config.CARD_LAYER_3_COLOR,
213
- flexDirection: 'row',
214
- },
215
- iconContainer: {
216
- justifyContent: 'center',
217
- alignItems: 'center',
218
- marginRight: 8,
219
- marginVertical: 12,
220
- marginLeft: 12,
221
- },
222
- text: {
223
- paddingVertical: 14,
224
- color: $config.SECONDARY_ACTION_COLOR,
225
- fontSize: ThemeConfig.FontSize.normal,
226
- fontWeight: '400',
227
- fontFamily: ThemeConfig.FontFamily.sansPro,
228
- },
229
- backDrop: {
230
- position: 'absolute',
231
- top: 0,
232
- bottom: 0,
233
- left: 0,
234
- right: 0,
235
- },
236
- });
@@ -1,71 +0,0 @@
1
- import {StyleSheet, Text, View} from 'react-native';
2
- import React from 'react';
3
- import Animated, {
4
- interpolate,
5
- withDelay,
6
- withTiming,
7
- withRepeat,
8
- useAnimatedStyle,
9
- useSharedValue,
10
- } from 'react-native-reanimated';
11
-
12
- interface AnimatedActiveSpeakerProps {
13
- isSpeaking: boolean;
14
- }
15
-
16
- const Line = ({delay, styleProp, isSpeaking}) => {
17
- const bar = useSharedValue(0);
18
- const style = useAnimatedStyle(() => {
19
- return {
20
- height: interpolate(bar.value, [0, 1], [6, 12]),
21
- // transform: [
22
- // {
23
- // scale: interpolate(bar.value, [0, 1], [0.7, 1.2]),
24
-
25
- // },
26
- // ],
27
- };
28
- });
29
- React.useEffect(() => {
30
- bar.value = withDelay(
31
- delay,
32
- withRepeat(withTiming(1, {duration: 1200}), -1),
33
- );
34
- }, []);
35
- return (
36
- <Animated.View style={[styles.line, styleProp, isSpeaking && style]} />
37
- );
38
- };
39
-
40
- const AnimatedActiveSpeaker = ({isSpeaking}: AnimatedActiveSpeakerProps) => {
41
- return (
42
- <View style={styles.container}>
43
- <Line
44
- delay={0}
45
- styleProp={{height: 6, marginRight: 2.5}}
46
- isSpeaking={isSpeaking}
47
- />
48
- <Line
49
- delay={400}
50
- styleProp={{height: 12, marginRight: 2.5}}
51
- isSpeaking={isSpeaking}
52
- />
53
- <Line delay={800} styleProp={{height: 6}} isSpeaking={isSpeaking} />
54
- </View>
55
- );
56
- };
57
-
58
- export default AnimatedActiveSpeaker;
59
-
60
- const styles = StyleSheet.create({
61
- container: {
62
- flex: 1,
63
- flexDirection: 'row',
64
- alignItems: 'center',
65
- },
66
- line: {
67
- width: 2.5,
68
- backgroundColor: $config.PRIMARY_ACTION_BRAND_COLOR,
69
- borderRadius: 25,
70
- },
71
- });
@@ -1,84 +0,0 @@
1
- import {StyleSheet, Text, View} from 'react-native';
2
- import React from 'react';
3
-
4
- interface AnimatedActiveSpeakerProps {
5
- isSpeaking: boolean;
6
- }
7
- const AnimatedActiveSpeaker = ({isSpeaking}: AnimatedActiveSpeakerProps) => {
8
- const css = `
9
- .container-sk {
10
- flex: 1;
11
- display:flex;
12
- flex-direction: row;
13
- align-items: center
14
- }
15
- .line {
16
- width: 2.5px;
17
- background-color: ${$config.PRIMARY_ACTION_BRAND_COLOR};
18
- border-radius: 25px;
19
- height:6px;
20
- animation: wave 1s ease-in-out infinite normal;
21
- animation-play-state: ${isSpeaking ? 'running' : 'paused'}
22
-
23
- }
24
- @keyframes wave{
25
-
26
- 0%{
27
-
28
- height:6px
29
- }
30
-
31
- 50%{
32
-
33
- height:12px
34
- }
35
-
36
- 100%{
37
-
38
- height:6px
39
- }
40
-
41
- }
42
- .line:nth-child(2){
43
- animation-delay: .2s;
44
- }
45
-
46
- .line:nth-child(3){
47
- animation-delay: .5s;
48
- }
49
- #line1 {
50
- margin-right:2.5px
51
- }
52
- #line2 {
53
- margin-right:2.5px;
54
- height:12px
55
- }
56
-
57
- `;
58
- return (
59
- <>
60
- <style type="text/css">{css}</style>
61
- <div className="container-sk">
62
- <div className="line" id="line1" />
63
- <div className="line" id="line2" />
64
- <div className="line" id="line3" />
65
- </div>
66
- </>
67
- );
68
- };
69
-
70
- export default AnimatedActiveSpeaker;
71
-
72
- const styles = StyleSheet.create({
73
- container: {
74
- flex: 1,
75
- flexDirection: 'row',
76
- justifyContent: 'space-between',
77
- alignItems: 'center',
78
- },
79
- line: {
80
- width: 2.5,
81
- backgroundColor: $config.PRIMARY_ACTION_BRAND_COLOR,
82
- borderRadius: 25,
83
- },
84
- });
@@ -1,68 +0,0 @@
1
- import {StyleSheet, Text, View} from 'react-native';
2
- import React from 'react';
3
- import Animated, {
4
- interpolate,
5
- withDelay,
6
- withTiming,
7
- withRepeat,
8
- useAnimatedStyle,
9
- useSharedValue,
10
- } from 'react-native-reanimated';
11
-
12
- const Ring = ({delay}) => {
13
- const ring = useSharedValue(0);
14
- const style = useAnimatedStyle(() => {
15
- return {
16
- opacity: 0.8 - ring.value,
17
- transform: [
18
- {
19
- scale: interpolate(ring.value, [0, 1], [0, 4]),
20
- },
21
- ],
22
- };
23
- });
24
- React.useEffect(() => {
25
- ring.value = withDelay(
26
- delay,
27
- withRepeat(withTiming(1, {duration: 4000}), -1),
28
- );
29
- }, []);
30
-
31
- return <Animated.View style={[styles.ring, style]} />;
32
- };
33
-
34
- const AnimatedRings = ({isActiveSpeaker, children, isMobileView}) => {
35
- return (
36
- <View
37
- style={{
38
- flex: 1,
39
- justifyContent: 'center',
40
- alignItems: 'center',
41
- }}>
42
- {isActiveSpeaker ? (
43
- <>
44
- <Ring delay={0} />
45
- <Ring delay={1000} />
46
- <Ring delay={2000} />
47
- <Ring delay={3000} />
48
- </>
49
- ) : (
50
- <></>
51
- )}
52
- {children}
53
- </View>
54
- );
55
- };
56
-
57
- export default AnimatedRings;
58
-
59
- const styles = StyleSheet.create({
60
- ring: {
61
- width: 50,
62
- height: 50,
63
- borderRadius: 25,
64
- borderWidth: 3,
65
- borderColor: $config.PRIMARY_ACTION_BRAND_COLOR,
66
- position: 'absolute',
67
- },
68
- });
@@ -1,70 +0,0 @@
1
- import {StyleSheet, Text, View} from 'react-native';
2
- import hexadecimalTransparency from '../utils/hexadecimalTransparency';
3
- import React from 'react';
4
-
5
- const Ring = ({isMobileView}) => {
6
- const css = `.ring {
7
- width: ${isMobileView ? '60px' : '100px'};
8
- height: ${isMobileView ? '60px' : '100px'};
9
- border-radius: 50%;
10
- position: absolute;
11
- background-color: transparent;
12
- border: 3px ${$config.PRIMARY_ACTION_BRAND_COLOR} solid;
13
- -webkit-animation-name: ani;
14
- -webkit-animation-iteration-count: infinite;
15
- -webkit-animation-timing-function: linear;
16
- -webkit-animation-duration: 3s;
17
- -webkit-animation-direction: normal;
18
-
19
- }
20
-
21
- @-webkit-keyframes ani {
22
- 0% {-webkit-transform: scale(0.5); opacity: 0}
23
- 1% {-webkit-transform: scale(0.5); opacity: 1}
24
- 95% {-webkit-transform: scale(1.5); opacity: .5;}
25
- 100% {-webkit-transform: scale(1.5); opacity: 0;}
26
- }
27
- #r2 { -webkit-animation-delay: -1s;}
28
- #r3 { -webkit-animation-delay: -2s;}
29
- `;
30
- return (
31
- <div>
32
- <style type="text/css">{css}</style>
33
- <div id="r1" className="ring"></div>
34
- <div id="r2" className="ring"></div>
35
- <div id="r3" className="ring"></div>
36
- </div>
37
- );
38
- };
39
-
40
- const AnimatedRings = ({isActiveSpeaker, children, isMobileView}) => {
41
- return (
42
- <View
43
- style={{
44
- flex: 1,
45
- alignSelf: 'center',
46
- justifyContent: 'center',
47
- }}>
48
- {isActiveSpeaker ? (
49
- <View style={{position: 'relative', left: -2, top: -2}}>
50
- <Ring isMobileView={isMobileView} />
51
- </View>
52
- ) : (
53
- <></>
54
- )}
55
- {children}
56
- </View>
57
- );
58
- };
59
-
60
- export default AnimatedRings;
61
-
62
- const styles = StyleSheet.create({
63
- container: {
64
- width: 140,
65
- height: 140,
66
- borderRadius: 80,
67
- alignSelf: 'center',
68
- justifyContent: 'center',
69
- },
70
- });
@@ -1,61 +0,0 @@
1
- import {StyleSheet, View, ViewStyle} from 'react-native';
2
- import React from 'react';
3
- import {isMobileUA, useResponsive} from '../utils/common';
4
- import ThemeConfig from '../theme';
5
-
6
- interface CardProps {
7
- style?: ViewStyle;
8
- children?: React.ReactNode;
9
- }
10
-
11
- const Card = (props: CardProps) => {
12
- const {style, children, ...rest} = props;
13
- const styles = useStyles();
14
- return (
15
- <View
16
- style={[
17
- styles.root,
18
- isMobileUA() ? styles.mobile : styles.desktop,
19
- style,
20
- ]}
21
- {...rest}>
22
- {children}
23
- </View>
24
- );
25
- };
26
-
27
- export default Card;
28
-
29
- const useStyles = () => {
30
- const getResponsiveValue = useResponsive();
31
- return StyleSheet.create({
32
- root: {
33
- flex: 1,
34
- backgroundColor: $config.CARD_LAYER_1_COLOR,
35
- elevation: 5,
36
- maxWidth: 676,
37
- width: '100%',
38
- overflow: 'hidden',
39
- },
40
- mobile: {
41
- paddingHorizontal: 16,
42
- paddingTop: 20,
43
- paddingBottom: 40,
44
- justifyContent: 'space-between',
45
- },
46
- desktop: {
47
- justifyContent: 'center',
48
- alignSelf: 'center',
49
- borderWidth: 1,
50
- paddingHorizontal: getResponsiveValue(60),
51
- paddingVertical: getResponsiveValue(60),
52
- borderRadius: ThemeConfig.BorderRadius.extraLarge,
53
- borderColor: $config.CARD_LAYER_3_COLOR,
54
- shadowColor: $config.HARD_CODED_BLACK_COLOR,
55
- shadowOffset: {width: 0, height: 4},
56
- shadowOpacity: 0.1,
57
- shadowRadius: 20,
58
- margin: getResponsiveValue(40),
59
- },
60
- });
61
- };
@@ -1,121 +0,0 @@
1
- import React from 'react';
2
- import {TextInput, StyleSheet, Animated, Easing, View} from 'react-native';
3
- import Svg, {Circle, G} from 'react-native-svg';
4
- import ThemeConfig from '../theme';
5
-
6
- const AnimatedCircle = Animated.createAnimatedComponent(Circle);
7
- const AnimatedInput = Animated.createAnimatedComponent(TextInput);
8
-
9
- interface CircleProgressProps {
10
- onComplete?: () => void;
11
- timer?: number; // in seconds
12
- }
13
-
14
- export default function CircularProgress(props: CircleProgressProps) {
15
- const {onComplete = () => {}, timer = 60} = props;
16
- const percentage = 100, // progress completion percentage
17
- radius = 30,
18
- strokeWidth = 5,
19
- color = $config.FONT_COLOR,
20
- delay = 0,
21
- max = 100;
22
- const duration = timer * 1000;
23
-
24
- const animatedvalue = React.useRef(new Animated.Value(100)).current;
25
- const circleRef = React.useRef(null);
26
- const inputRef = React.useRef(null);
27
- const halfCircle = radius + strokeWidth;
28
- const circleCircumference = 2 * Math.PI * radius;
29
-
30
- const animation = (toValue) => {
31
- return Animated.timing(animatedvalue, {
32
- toValue: toValue,
33
- duration,
34
- delay,
35
- useNativeDriver: true,
36
- easing: Easing.linear,
37
- }).start(() => {
38
- onComplete();
39
- });
40
- };
41
-
42
- //to animate
43
- React.useEffect(() => {
44
- animation(0);
45
- animatedvalue.addListener((v) => {
46
- if (circleRef?.current) {
47
- const maxPercentage = (100 * v.value) / max;
48
- const strokeDashoffset =
49
- circleCircumference - (circleCircumference * maxPercentage) / 100;
50
- circleRef.current.setNativeProps({
51
- strokeDashoffset,
52
- });
53
- }
54
-
55
- // for text
56
- if (inputRef?.current) {
57
- const value = Math.round((v.value / 100) * timer);
58
- inputRef.current.setNativeProps({
59
- text: `${value}`,
60
- });
61
- }
62
- });
63
- return () => {
64
- animatedvalue.removeAllListeners();
65
- };
66
- }, [max, percentage]);
67
-
68
- return (
69
- <View
70
- style={{
71
- flexDirection: 'row',
72
- justifyContent: 'space-evenly',
73
- flexWrap: 'wrap',
74
- alignItems: 'center',
75
- }}>
76
- <Svg
77
- height={radius * 2}
78
- width={radius * 2}
79
- viewBox={`0 0 ${halfCircle * 2} ${halfCircle * 2}`}>
80
- <G rotation="-90" origin={`${halfCircle}, ${halfCircle} `}>
81
- <AnimatedCircle
82
- cx="50%"
83
- cy="50%"
84
- r={radius}
85
- fill="transparent"
86
- stroke={color}
87
- strokeWidth={strokeWidth}
88
- strokeOpacity={0.2}
89
- />
90
- <AnimatedCircle
91
- ref={circleRef}
92
- cx="50%"
93
- cy="50%"
94
- r={radius}
95
- fill="transparent"
96
- stroke={color}
97
- strokeWidth={strokeWidth}
98
- strokeDasharray={circleCircumference}
99
- strokeDashoffset={circleCircumference} // 0 or cicleCircumferen
100
- strokeLinecap="round"
101
- />
102
- </G>
103
- </Svg>
104
- <AnimatedInput
105
- ref={inputRef}
106
- underlineColorAndroid="transparent"
107
- editable={false}
108
- style={[
109
- StyleSheet.absoluteFillObject,
110
- {
111
- fontFamily: ThemeConfig.FontFamily.sansPro,
112
- fontWeight: '700',
113
- fontSize: 16,
114
- textAlign: 'center',
115
- color: $config.FONT_COLOR,
116
- },
117
- ]}
118
- />
119
- </View>
120
- );
121
- }