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,102 +0,0 @@
1
- import {StyleSheet, Text, View} from 'react-native';
2
- import React, {useState, useEffect} from 'react';
3
- import ThemeConfig from '../theme';
4
-
5
- interface CircleProgressProps {
6
- onComplete?: () => void;
7
- timer?: number; // in seconds
8
- }
9
-
10
- const CircularProgress = (props: CircleProgressProps) => {
11
- const {onComplete = () => {}, timer = 60} = props;
12
- const [seconds, setSeconds] = useState(timer);
13
- const [strokeDashoffset, setStrokeDashoffset] = useState(0);
14
- const circleRef = React.useRef(null);
15
- const inputRef = React.useRef(null);
16
- let timeInterval;
17
- React.useEffect(() => {
18
- timeInterval = setInterval(() => {
19
- setSeconds((seconds) => seconds - 1);
20
- }, 1000);
21
- return () => {
22
- clearInterval(timeInterval); //when user exits, clear this interval.
23
- };
24
- }, []);
25
-
26
- useEffect(() => {
27
- const maxPercentage = (100 * seconds) / timer;
28
- const strokeDashoffset =
29
- circleCircumference - (circleCircumference * maxPercentage) / 100;
30
- console.log('seonds', seconds);
31
- setStrokeDashoffset(strokeDashoffset);
32
- if (seconds <= 0) {
33
- clearInterval(timeInterval);
34
- onComplete();
35
- }
36
- }, [seconds]);
37
-
38
- //configs
39
- const radius = 30,
40
- strokeWidth = 5,
41
- color = $config.FONT_COLOR;
42
- const halfCircle = radius + strokeWidth;
43
- const circleCircumference = 2 * Math.PI * radius;
44
-
45
- return (
46
- <View
47
- style={{
48
- flexDirection: 'row',
49
- justifyContent: 'center',
50
- flexWrap: 'wrap',
51
- alignItems: 'center',
52
- }}>
53
- <svg
54
- height={radius * 2}
55
- width={radius * 2}
56
- viewBox={`0 0 ${halfCircle * 2} ${halfCircle * 2}`}>
57
- <g transform={`rotate(-90,${halfCircle},${halfCircle}) `}>
58
- <circle
59
- cx="50%"
60
- cy="50%"
61
- r={radius}
62
- fill="transparent"
63
- stroke={color}
64
- strokeWidth={strokeWidth}
65
- strokeOpacity={0.2}
66
- />
67
- <circle
68
- ref={circleRef}
69
- cx="50%"
70
- cy="50%"
71
- r={radius}
72
- fill="transparent"
73
- stroke={color}
74
- strokeWidth={strokeWidth}
75
- strokeDasharray={circleCircumference}
76
- strokeDashoffset={strokeDashoffset} // 0 or cicleCircumferen
77
- strokeLinecap="round"
78
- />
79
- </g>
80
- </svg>
81
- <Text
82
- style={[
83
- {
84
- fontFamily: ThemeConfig.FontFamily.sansPro,
85
- fontWeight: '700',
86
- fontSize: 16,
87
- textAlign: 'center',
88
- color: $config.FONT_COLOR,
89
- alignSelf: 'center',
90
- justifyContent: 'center',
91
- position: 'absolute',
92
- },
93
- ]}>
94
- {seconds}
95
- </Text>
96
- </View>
97
- );
98
- };
99
-
100
- export default CircularProgress;
101
-
102
- const styles = StyleSheet.create({});
@@ -1,88 +0,0 @@
1
- /*
2
- Steps to add/remove icons:
3
- 1. Open Icomoon : https://icomoon.io/app/#/select
4
- 2. Upload the current selection.js from ./src/assets/selection.json
5
- 3. Add / Remove SVG'd from the set
6
- 4. Generate a new Font File
7
- 5. Download Zip folder , replace iconmoon.ttf file in ./src/assets/font/iconmoon.ttf with downloded
8
- 6. Replace selection.json and font-styles.css content
9
- 7. Run npx react-native link react-native-vector-icons to copy in the android/app/src/main/assets/fonts directory and in Info.plist (for Android and iOS respectively).
10
- */
11
-
12
- import {createIconSetFromIcoMoon} from 'react-native-vector-icons';
13
- import icoMoonConfig from '../assets/selection.json';
14
- export default createIconSetFromIcoMoon(icoMoonConfig);
15
-
16
- export interface IconsInterface {
17
- 'video-plus': string;
18
- 'video-on': string;
19
- 'video-off': string;
20
- 'mic-on': string;
21
- 'mic-off': string;
22
- 'no-cam': string;
23
- 'no-mic': string;
24
- clipboard: string;
25
- tick: string;
26
- 'tick-fill': string;
27
- 'arrow-down': string;
28
- 'arrow-up': string;
29
- 'screen-share': string;
30
- 'stop-screen-share': string;
31
- recording: string;
32
- 'stop-recording': string;
33
- 'end-call': string;
34
- 'raise-hand': string;
35
- 'lower-hand': string;
36
- close: string;
37
- 'back-btn': string;
38
- participants: string;
39
- chat: string;
40
- settings: string;
41
- 'more-menu': string;
42
- share: string;
43
- 'switch-camera': string;
44
- remove: string;
45
- info: string;
46
- send: string;
47
- 'downside-triangle': string;
48
- profile: string;
49
- 'link-share': string;
50
- 'list-view': string;
51
- expand: string;
52
- collapse: string;
53
- 'active-speaker': string;
54
- 'connection-unsupported': string;
55
- 'connection-bad': string;
56
- 'connection-good': string;
57
- 'connection-loading': string;
58
- 'connection-very-bad': string;
59
- 'connection-unpublished': string;
60
- 'remove-meeting': string;
61
- 'pencil-outlined': string;
62
- 'pencil-filled': string;
63
- alert: string;
64
- speaker: string;
65
- person: string;
66
- pinned: string;
67
- grid: string;
68
- people: string;
69
- 'chat-nav': string;
70
- 'chat-filled': string;
71
- 'chat-outlined': string;
72
- 'demote-filled': string;
73
- 'demote-outlined': string;
74
- 'promote-filled': string;
75
- 'promote-outlined': string;
76
- 'pin-filled': string;
77
- 'pin-outlined': string;
78
- 'unpin-filled': string;
79
- 'unpin-outlined': string;
80
- 'mic-on-filled': string;
81
- 'mic-on-outlined': string;
82
- 'mic-off-filled': string;
83
- 'mic-off-outlined': string;
84
- 'video-on-filled': string;
85
- 'video-on-outlined': string;
86
- 'video-off-filled': string;
87
- 'video-off-outlined': string;
88
- }
@@ -1,287 +0,0 @@
1
- //@ts-nocheck
2
- import React, {Component} from 'react';
3
- import {
4
- View,
5
- Text,
6
- StyleSheet,
7
- Animated,
8
- PanResponder,
9
- TouchableOpacity,
10
- ViewPropTypes,
11
- } from 'react-native';
12
- import PropTypes from 'prop-types';
13
-
14
- export default class Switch extends Component {
15
- static propTypes = {
16
- onValueChange: PropTypes.func,
17
- disabled: PropTypes.bool,
18
- activeText: PropTypes.string,
19
- inActiveText: PropTypes.string,
20
- backgroundActive: PropTypes.string,
21
- backgroundInactive: PropTypes.string,
22
- value: PropTypes.bool,
23
- circleActiveColor: PropTypes.string,
24
- circleInActiveColor: PropTypes.string,
25
- circleBorderActiveColor: PropTypes.string,
26
- circleBorderInactiveColor: PropTypes.string,
27
- activeTextStyle: PropTypes.object,
28
- inactiveTextStyle: PropTypes.object,
29
- containerStyle: PropTypes.object,
30
- barHeight: PropTypes.number,
31
- circleBorderWidth: PropTypes.number,
32
- innerCircleStyle: PropTypes.object,
33
- renderInsideCircle: PropTypes.func,
34
- changeValueImmediately: PropTypes.bool,
35
- outerCircleStyle: PropTypes.object,
36
- renderActiveText: PropTypes.bool,
37
- renderInActiveText: PropTypes.bool,
38
- switchWidth: PropTypes.number,
39
- switchHeight: PropTypes.number,
40
- switchLeftPx: PropTypes.number,
41
- switchRightPx: PropTypes.number,
42
- switchWidthMultiplier: PropTypes.number,
43
- switchBorderRadius: PropTypes.number,
44
- };
45
-
46
- static defaultProps = {
47
- value: false,
48
- onValueChange: () => null,
49
- renderInsideCircle: () => null,
50
- disabled: false,
51
- activeText: 'On',
52
- inActiveText: 'Off',
53
- backgroundActive: 'green',
54
- backgroundInactive: 'gray',
55
- circleActiveColor: 'white',
56
- circleInActiveColor: 'white',
57
- circleBorderActiveColor: 'rgb(100, 100, 100)',
58
- circleBorderInactiveColor: 'rgb(80, 80, 80)',
59
- switchWidth: 30,
60
- switchHeight: 30,
61
- switchBorderRadius: 100,
62
- barHeight: null,
63
- circleBorderWidth: 1,
64
- changeValueImmediately: true,
65
- innerCircleStyle: {alignItems: 'center', justifyContent: 'center'},
66
- outerCircleStyle: {},
67
- renderActiveText: true,
68
- renderInActiveText: true,
69
- switchLeftPx: 4,
70
- switchRightPx: 4,
71
- switchWidthMultiplier: 2,
72
- testID: null,
73
- };
74
-
75
- constructor(props, context) {
76
- super(props, context);
77
-
78
- this.state = {
79
- value: props.value,
80
- transformSwitch: new Animated.Value(
81
- props.value
82
- ? props.switchWidth / props.switchLeftPx
83
- : -props.switchWidth / props.switchRightPx,
84
- ),
85
- backgroundColor: new Animated.Value(props.value ? 75 : -75),
86
- circleColor: new Animated.Value(props.value ? 75 : -75),
87
- circleBorderColor: new Animated.Value(props.value ? 75 : -75),
88
- };
89
- }
90
-
91
- componentDidUpdate(prevProps) {
92
- const {value, disabled} = this.props;
93
- if (prevProps.value === value) {
94
- return;
95
- }
96
- if (prevProps.disabled && disabled === prevProps.disabled) {
97
- return;
98
- }
99
-
100
- this.animateSwitch(value, () => this.setState({value}));
101
- }
102
-
103
- handleSwitch = () => {
104
- const {value} = this.state;
105
- const {
106
- onValueChange,
107
- disabled,
108
- changeValueImmediately,
109
- value: propValue,
110
- } = this.props;
111
- if (disabled) {
112
- return;
113
- }
114
- if (this.props.value === this.state.value) {
115
- onValueChange(!this.state.value);
116
- return;
117
- }
118
-
119
- if (changeValueImmediately) {
120
- this.animateSwitch(!propValue);
121
- onValueChange(!propValue);
122
- } else {
123
- this.animateSwitch(!value, () =>
124
- this.setState({value: !value}, () => onValueChange(this.state.value)),
125
- );
126
- }
127
- };
128
-
129
- animateSwitch = (value, cb = () => {}) => {
130
- Animated.parallel([
131
- Animated.spring(this.state.transformSwitch, {
132
- toValue: value
133
- ? this.props.switchWidth / this.props.switchLeftPx
134
- : -this.props.switchWidth / this.props.switchRightPx,
135
- useNativeDriver: false,
136
- }),
137
- Animated.timing(this.state.backgroundColor, {
138
- toValue: value ? 75 : -75,
139
- duration: 200,
140
- useNativeDriver: false,
141
- }),
142
- Animated.timing(this.state.circleColor, {
143
- toValue: value ? 75 : -75,
144
- duration: 200,
145
- useNativeDriver: false,
146
- }),
147
- Animated.timing(this.state.circleBorderColor, {
148
- toValue: value ? 75 : -75,
149
- duration: 200,
150
- useNativeDriver: false,
151
- }),
152
- ]).start(cb);
153
- };
154
-
155
- render() {
156
- const {transformSwitch, backgroundColor, circleColor, circleBorderColor} =
157
- this.state;
158
-
159
- const {
160
- backgroundActive,
161
- backgroundInactive,
162
- circleActiveColor,
163
- circleInActiveColor,
164
- activeText,
165
- inActiveText,
166
- switchWidth,
167
- switchHeight,
168
- containerStyle,
169
- activeTextStyle,
170
- inactiveTextStyle,
171
- barHeight,
172
- circleBorderInactiveColor,
173
- circleBorderActiveColor,
174
- circleBorderWidth,
175
- innerCircleStyle,
176
- outerCircleStyle,
177
- renderActiveText,
178
- renderInActiveText,
179
- renderInsideCircle,
180
- switchWidthMultiplier,
181
- switchBorderRadius,
182
- value,
183
- ...restProps
184
- } = this.props;
185
-
186
- const interpolatedColorAnimation = backgroundColor.interpolate({
187
- inputRange: [-75, 75],
188
- outputRange: [backgroundInactive, backgroundActive],
189
- });
190
-
191
- const interpolatedCircleColor = circleColor.interpolate({
192
- inputRange: [-75, 75],
193
- outputRange: [circleInActiveColor, circleActiveColor],
194
- });
195
-
196
- const interpolatedCircleBorderColor = circleBorderColor.interpolate({
197
- inputRange: [-75, 75],
198
- outputRange: [circleBorderInactiveColor, circleBorderActiveColor],
199
- });
200
-
201
- return (
202
- <TouchableOpacity onPress={this.handleSwitch} {...restProps}>
203
- <Animated.View
204
- style={[
205
- styles.container,
206
- containerStyle,
207
- {
208
- backgroundColor: interpolatedColorAnimation,
209
- width: switchWidth * switchWidthMultiplier,
210
- height: barHeight || switchHeight,
211
- borderRadius: switchBorderRadius,
212
- },
213
- ]}>
214
- <Animated.View
215
- style={[
216
- styles.animatedContainer,
217
- {
218
- left: transformSwitch,
219
- width: switchWidth * switchWidthMultiplier,
220
- },
221
- outerCircleStyle,
222
- ]}>
223
- {value && renderActiveText && (
224
- <Text style={[styles.text, styles.paddingRight, activeTextStyle]}>
225
- {activeText}
226
- </Text>
227
- )}
228
-
229
- <Animated.View
230
- style={[
231
- styles.circle,
232
- {
233
- borderWidth: circleBorderWidth,
234
- borderColor: interpolatedCircleBorderColor,
235
- backgroundColor: interpolatedCircleColor,
236
- width: switchWidth,
237
- height: switchHeight,
238
- borderRadius: switchBorderRadius / 2,
239
- },
240
- innerCircleStyle,
241
- ]}>
242
- {renderInsideCircle()}
243
- </Animated.View>
244
- {!value && renderInActiveText && (
245
- <Text
246
- style={[styles.text, styles.paddingLeft, inactiveTextStyle]}>
247
- {inActiveText}
248
- </Text>
249
- )}
250
- </Animated.View>
251
- </Animated.View>
252
- </TouchableOpacity>
253
- );
254
- }
255
- }
256
-
257
- const styles = StyleSheet.create({
258
- container: {
259
- width: 71,
260
- height: 30,
261
- borderRadius: 30,
262
- backgroundColor: 'black',
263
- },
264
- animatedContainer: {
265
- flex: 1,
266
- width: 78,
267
- flexDirection: 'row',
268
- justifyContent: 'center',
269
- alignItems: 'center',
270
- },
271
- circle: {
272
- width: 30,
273
- height: 30,
274
- borderRadius: 15,
275
- backgroundColor: 'white',
276
- },
277
- text: {
278
- color: 'white',
279
- backgroundColor: 'transparent',
280
- },
281
- paddingRight: {
282
- paddingRight: 5,
283
- },
284
- paddingLeft: {
285
- paddingLeft: 5,
286
- },
287
- });