react-native-acoustic-connect 19.0.9 → 19.0.28

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 (378) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/ConnectConfig.example.json +1 -1
  3. package/README.md +390 -1
  4. package/android/build.gradle +86 -3
  5. package/android/config.gradle +137 -13
  6. package/android/src/main/assets/ConnectAdvancedConfig.json +1 -1
  7. package/android/src/main/java/com/acousticconnectrn/HybridAcousticConnectRN.kt +407 -34
  8. package/app.plugin.js +2 -2
  9. package/ios/AcousticConnectRNConfig.json +2 -2
  10. package/ios/ConnectRNParsing.swift +229 -0
  11. package/ios/HybridAcousticConnectRN.swift +290 -30
  12. package/lib/commonjs/TLTRN.js +116 -3
  13. package/lib/commonjs/TLTRN.js.map +1 -1
  14. package/lib/commonjs/components/Connect.js +145 -27
  15. package/lib/commonjs/components/Connect.js.map +1 -1
  16. package/lib/commonjs/index.js +3 -0
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/module/TLTRN.js +116 -3
  19. package/lib/module/TLTRN.js.map +1 -1
  20. package/lib/module/components/Connect.js +146 -28
  21. package/lib/module/components/Connect.js.map +1 -1
  22. package/lib/module/index.js +5 -0
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/typescript/src/TLTRN.d.ts +85 -1
  25. package/lib/typescript/src/TLTRN.d.ts.map +1 -1
  26. package/lib/typescript/src/components/Connect.d.ts.map +1 -1
  27. package/lib/typescript/src/index.d.ts +1 -0
  28. package/lib/typescript/src/index.d.ts.map +1 -1
  29. package/lib/typescript/src/specs/react-native-acoustic-connect.nitro.d.ts +178 -10
  30. package/lib/typescript/src/specs/react-native-acoustic-connect.nitro.d.ts.map +1 -1
  31. package/nitrogen/generated/android/c++/JHybridAcousticConnectRNSpec.cpp +5 -9
  32. package/nitrogen/generated/android/c++/JHybridAcousticConnectRNSpec.hpp +1 -1
  33. package/nitrogen/generated/android/kotlin/com/margelo/nitro/acousticconnectrn/HybridAcousticConnectRNSpec.kt +2 -1
  34. package/nitrogen/generated/ios/AcousticConnectRN-Swift-Cxx-Umbrella.hpp +1 -0
  35. package/nitrogen/generated/ios/c++/HybridAcousticConnectRNSpecSwift.hpp +2 -1
  36. package/nitrogen/generated/ios/swift/HybridAcousticConnectRNSpec.swift +1 -1
  37. package/nitrogen/generated/ios/swift/HybridAcousticConnectRNSpec_cxx.swift +2 -25
  38. package/nitrogen/generated/shared/c++/HybridAcousticConnectRNSpec.hpp +2 -1
  39. package/package.json +4 -7
  40. package/plugin/build/withConnectAndroidConfig.d.ts +2 -2
  41. package/plugin/build/withConnectAndroidConfig.js +2 -2
  42. package/plugin/build/withConnectIosSigning.d.ts +1 -1
  43. package/plugin/build/withConnectIosSigning.js +1 -1
  44. package/plugin/src/withConnectAndroidConfig.ts +2 -2
  45. package/plugin/src/withConnectIosSigning.ts +1 -1
  46. package/scripts/gradleParser.js +1 -1
  47. package/src/TLTRN.ts +125 -4
  48. package/src/components/Connect.tsx +150 -27
  49. package/src/index.ts +5 -0
  50. package/src/specs/react-native-acoustic-connect.nitro.ts +180 -10
  51. package/Examples/SampleUI/.bundle/config +0 -2
  52. package/Examples/SampleUI/.detoxrc.js +0 -83
  53. package/Examples/SampleUI/.eslintrc.js +0 -4
  54. package/Examples/SampleUI/.prettierrc.js +0 -7
  55. package/Examples/SampleUI/.watchmanconfig +0 -1
  56. package/Examples/SampleUI/App.js +0 -1
  57. package/Examples/SampleUI/Gemfile +0 -10
  58. package/Examples/SampleUI/Gemfile.lock +0 -121
  59. package/Examples/SampleUI/README.md +0 -79
  60. package/Examples/SampleUI/__tests__/App.test.tsx +0 -17
  61. package/Examples/SampleUI/android/app/build.gradle +0 -129
  62. package/Examples/SampleUI/android/app/debug.keystore +0 -0
  63. package/Examples/SampleUI/android/app/proguard-rules.pro +0 -10
  64. package/Examples/SampleUI/android/app/src/debug/AndroidManifest.xml +0 -9
  65. package/Examples/SampleUI/android/app/src/main/AndroidManifest.xml +0 -31
  66. package/Examples/SampleUI/android/app/src/main/java/com/sampleui/MainActivity.kt +0 -30
  67. package/Examples/SampleUI/android/app/src/main/java/com/sampleui/MainApplication.kt +0 -53
  68. package/Examples/SampleUI/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -37
  69. package/Examples/SampleUI/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  70. package/Examples/SampleUI/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  71. package/Examples/SampleUI/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  72. package/Examples/SampleUI/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  73. package/Examples/SampleUI/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  74. package/Examples/SampleUI/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  75. package/Examples/SampleUI/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  76. package/Examples/SampleUI/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  77. package/Examples/SampleUI/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  78. package/Examples/SampleUI/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  79. package/Examples/SampleUI/android/app/src/main/res/values/strings.xml +0 -3
  80. package/Examples/SampleUI/android/app/src/main/res/values/styles.xml +0 -9
  81. package/Examples/SampleUI/android/build.gradle +0 -21
  82. package/Examples/SampleUI/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  83. package/Examples/SampleUI/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  84. package/Examples/SampleUI/android/gradle.properties +0 -39
  85. package/Examples/SampleUI/android/gradlew +0 -252
  86. package/Examples/SampleUI/android/gradlew.bat +0 -94
  87. package/Examples/SampleUI/android/settings.gradle +0 -21
  88. package/Examples/SampleUI/app.json +0 -51
  89. package/Examples/SampleUI/assets/fonts/Abel-Regular.ttf +0 -0
  90. package/Examples/SampleUI/assets/fonts/NotoSans-Regular.ttf +0 -0
  91. package/Examples/SampleUI/assets/images/android-icon.png +0 -0
  92. package/Examples/SampleUI/assets/images/artist-1.jpg +0 -0
  93. package/Examples/SampleUI/assets/images/artist-2.jpg +0 -0
  94. package/Examples/SampleUI/assets/images/avatar.png +0 -0
  95. package/Examples/SampleUI/assets/images/beach.jpg +0 -0
  96. package/Examples/SampleUI/assets/images/bridge.jpg +0 -0
  97. package/Examples/SampleUI/assets/images/chameleon.jpg +0 -0
  98. package/Examples/SampleUI/assets/images/city.jpg +0 -0
  99. package/Examples/SampleUI/assets/images/email-icon.png +0 -0
  100. package/Examples/SampleUI/assets/images/favorite.png +0 -0
  101. package/Examples/SampleUI/assets/images/forest.jpg +0 -0
  102. package/Examples/SampleUI/assets/images/paper-icon.png +0 -0
  103. package/Examples/SampleUI/assets/images/players-2.jpg +0 -0
  104. package/Examples/SampleUI/assets/images/players.jpg +0 -0
  105. package/Examples/SampleUI/assets/images/restaurant-1.jpg +0 -0
  106. package/Examples/SampleUI/assets/images/restaurant-2.jpg +0 -0
  107. package/Examples/SampleUI/assets/images/song-1.jpg +0 -0
  108. package/Examples/SampleUI/assets/images/song-2.jpg +0 -0
  109. package/Examples/SampleUI/assets/images/splash.png +0 -0
  110. package/Examples/SampleUI/assets/images/strawberries.jpg +0 -0
  111. package/Examples/SampleUI/assets/images/wrecked-ship.jpg +0 -0
  112. package/Examples/SampleUI/assets/styles/fonts.css +0 -47
  113. package/Examples/SampleUI/babel.config.js +0 -22
  114. package/Examples/SampleUI/index.js +0 -9
  115. package/Examples/SampleUI/ios/.xcode.env +0 -11
  116. package/Examples/SampleUI/ios/Podfile +0 -71
  117. package/Examples/SampleUI/ios/Podfile.lock +0 -2276
  118. package/Examples/SampleUI/ios/SampleUI/AppDelegate.h +0 -7
  119. package/Examples/SampleUI/ios/SampleUI/AppDelegate.mm +0 -31
  120. package/Examples/SampleUI/ios/SampleUI/Images.xcassets/AppIcon.appiconset/Contents.json +0 -53
  121. package/Examples/SampleUI/ios/SampleUI/Images.xcassets/Contents.json +0 -6
  122. package/Examples/SampleUI/ios/SampleUI/Info.plist +0 -52
  123. package/Examples/SampleUI/ios/SampleUI/LaunchScreen.storyboard +0 -47
  124. package/Examples/SampleUI/ios/SampleUI/PrivacyInfo.xcprivacy +0 -48
  125. package/Examples/SampleUI/ios/SampleUI/main.m +0 -10
  126. package/Examples/SampleUI/ios/SampleUI.xcodeproj/project.pbxproj +0 -785
  127. package/Examples/SampleUI/ios/SampleUI.xcodeproj/xcshareddata/xcschemes/SampleUI.xcscheme +0 -105
  128. package/Examples/SampleUI/ios/SampleUI.xcworkspace/contents.xcworkspacedata +0 -10
  129. package/Examples/SampleUI/ios/SampleUITests/Info.plist +0 -24
  130. package/Examples/SampleUI/ios/SampleUITests/SampleUITests.m +0 -66
  131. package/Examples/SampleUI/jest.config.js +0 -3
  132. package/Examples/SampleUI/metro.config.js +0 -54
  133. package/Examples/SampleUI/package.json +0 -65
  134. package/Examples/SampleUI/scripts/integration-test-android.sh +0 -292
  135. package/Examples/SampleUI/src/DrawerItems.tsx +0 -322
  136. package/Examples/SampleUI/src/ExampleList.tsx +0 -175
  137. package/Examples/SampleUI/src/Examples/ActivityIndicatorExample.tsx +0 -73
  138. package/Examples/SampleUI/src/Examples/AnimatedFABExample/AnimatedFABExample.tsx +0 -220
  139. package/Examples/SampleUI/src/Examples/AnimatedFABExample/CustomFAB.tsx +0 -70
  140. package/Examples/SampleUI/src/Examples/AnimatedFABExample/CustomFABControls.tsx +0 -146
  141. package/Examples/SampleUI/src/Examples/AnimatedFABExample/index.ts +0 -1
  142. package/Examples/SampleUI/src/Examples/AppbarExample.tsx +0 -263
  143. package/Examples/SampleUI/src/Examples/AvatarExample.tsx +0 -76
  144. package/Examples/SampleUI/src/Examples/BadgeExample.tsx +0 -97
  145. package/Examples/SampleUI/src/Examples/BannerExample.tsx +0 -152
  146. package/Examples/SampleUI/src/Examples/BottomNavigationBarExample.tsx +0 -94
  147. package/Examples/SampleUI/src/Examples/BottomNavigationExample.tsx +0 -205
  148. package/Examples/SampleUI/src/Examples/ButtonExample.tsx +0 -405
  149. package/Examples/SampleUI/src/Examples/CardExample.tsx +0 -245
  150. package/Examples/SampleUI/src/Examples/CheckboxExample.tsx +0 -87
  151. package/Examples/SampleUI/src/Examples/CheckboxItemExample.tsx +0 -72
  152. package/Examples/SampleUI/src/Examples/ChipExample.tsx +0 -432
  153. package/Examples/SampleUI/src/Examples/DataTableExample.tsx +0 -128
  154. package/Examples/SampleUI/src/Examples/DialogExample.tsx +0 -217
  155. package/Examples/SampleUI/src/Examples/Dialogs/DialogTextComponent.tsx +0 -31
  156. package/Examples/SampleUI/src/Examples/Dialogs/DialogTrackingTest.tsx +0 -307
  157. package/Examples/SampleUI/src/Examples/Dialogs/DialogWithCustomColors.tsx +0 -57
  158. package/Examples/SampleUI/src/Examples/Dialogs/DialogWithDismissableBackButton.tsx +0 -38
  159. package/Examples/SampleUI/src/Examples/Dialogs/DialogWithIcon.tsx +0 -42
  160. package/Examples/SampleUI/src/Examples/Dialogs/DialogWithLoadingIndicator.tsx +0 -48
  161. package/Examples/SampleUI/src/Examples/Dialogs/DialogWithLongText.tsx +0 -81
  162. package/Examples/SampleUI/src/Examples/Dialogs/DialogWithRadioBtns.tsx +0 -111
  163. package/Examples/SampleUI/src/Examples/Dialogs/UndismissableDialog.tsx +0 -30
  164. package/Examples/SampleUI/src/Examples/Dialogs/index.tsx +0 -44
  165. package/Examples/SampleUI/src/Examples/DividerExample.tsx +0 -30
  166. package/Examples/SampleUI/src/Examples/FABExample.tsx +0 -226
  167. package/Examples/SampleUI/src/Examples/IconButtonExample.tsx +0 -230
  168. package/Examples/SampleUI/src/Examples/IconExample.tsx +0 -50
  169. package/Examples/SampleUI/src/Examples/ListAccordionExample.tsx +0 -65
  170. package/Examples/SampleUI/src/Examples/ListAccordionGroupExample.tsx +0 -80
  171. package/Examples/SampleUI/src/Examples/ListItemExample.tsx +0 -310
  172. package/Examples/SampleUI/src/Examples/ListSectionExample.tsx +0 -159
  173. package/Examples/SampleUI/src/Examples/MaterialBottomTabNavigatorExample.tsx +0 -87
  174. package/Examples/SampleUI/src/Examples/MenuExample.tsx +0 -211
  175. package/Examples/SampleUI/src/Examples/ProgressBarExample.tsx +0 -142
  176. package/Examples/SampleUI/src/Examples/RadioButtonExample.tsx +0 -104
  177. package/Examples/SampleUI/src/Examples/RadioButtonGroupExample.tsx +0 -67
  178. package/Examples/SampleUI/src/Examples/RadioButtonItemExample.tsx +0 -77
  179. package/Examples/SampleUI/src/Examples/SearchbarExample.tsx +0 -249
  180. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonCustomColorCheck.tsx +0 -93
  181. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonDefault.tsx +0 -49
  182. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonDisabled.tsx +0 -47
  183. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselect.tsx +0 -50
  184. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselectIcons.tsx +0 -49
  185. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonMultiselectRealCase.tsx +0 -114
  186. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonOnlyIcons.tsx +0 -40
  187. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonOnlyIconsWithCheck.tsx +0 -43
  188. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonRealCase.tsx +0 -97
  189. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonWithDensity.tsx +0 -47
  190. package/Examples/SampleUI/src/Examples/SegmentedButtons/SegmentedButtonWithSelectedCheck.tsx +0 -52
  191. package/Examples/SampleUI/src/Examples/SegmentedButtons/index.ts +0 -9
  192. package/Examples/SampleUI/src/Examples/SegmentedButtonsExample.tsx +0 -57
  193. package/Examples/SampleUI/src/Examples/SnackbarExample.tsx +0 -141
  194. package/Examples/SampleUI/src/Examples/SurfaceExample.tsx +0 -130
  195. package/Examples/SampleUI/src/Examples/SwitchExample.tsx +0 -105
  196. package/Examples/SampleUI/src/Examples/TeamDetails.tsx +0 -291
  197. package/Examples/SampleUI/src/Examples/TeamsList.tsx +0 -57
  198. package/Examples/SampleUI/src/Examples/TextExample.tsx +0 -132
  199. package/Examples/SampleUI/src/Examples/TextInputExample.tsx +0 -914
  200. package/Examples/SampleUI/src/Examples/ThemeExample.tsx +0 -41
  201. package/Examples/SampleUI/src/Examples/ThemingWithReactNavigation.tsx +0 -75
  202. package/Examples/SampleUI/src/Examples/ToggleButtonExample.tsx +0 -128
  203. package/Examples/SampleUI/src/Examples/TooltipExample.tsx +0 -191
  204. package/Examples/SampleUI/src/Examples/TouchableRippleExample.tsx +0 -37
  205. package/Examples/SampleUI/src/RootNavigator.tsx +0 -95
  206. package/Examples/SampleUI/src/ScreenWrapper.tsx +0 -67
  207. package/Examples/SampleUI/src/components/ActivityIndicator.tsx +0 -254
  208. package/Examples/SampleUI/src/components/Appbar/Appbar.tsx +0 -364
  209. package/Examples/SampleUI/src/components/Appbar/AppbarAction.tsx +0 -132
  210. package/Examples/SampleUI/src/components/Appbar/AppbarBackAction.tsx +0 -77
  211. package/Examples/SampleUI/src/components/Appbar/AppbarBackIcon.tsx +0 -52
  212. package/Examples/SampleUI/src/components/Appbar/AppbarContent.tsx +0 -249
  213. package/Examples/SampleUI/src/components/Appbar/AppbarHeader.tsx +0 -174
  214. package/Examples/SampleUI/src/components/Appbar/index.ts +0 -22
  215. package/Examples/SampleUI/src/components/Appbar/utils.ts +0 -188
  216. package/Examples/SampleUI/src/components/Avatar/Avatar.tsx +0 -8
  217. package/Examples/SampleUI/src/components/Avatar/AvatarIcon.tsx +0 -87
  218. package/Examples/SampleUI/src/components/Avatar/AvatarImage.tsx +0 -128
  219. package/Examples/SampleUI/src/components/Avatar/AvatarText.tsx +0 -127
  220. package/Examples/SampleUI/src/components/Badge.tsx +0 -138
  221. package/Examples/SampleUI/src/components/Banner.tsx +0 -302
  222. package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigation.tsx +0 -643
  223. package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigationBar.tsx +0 -1039
  224. package/Examples/SampleUI/src/components/BottomNavigation/BottomNavigationRouteScreen.tsx +0 -31
  225. package/Examples/SampleUI/src/components/BottomNavigation/utils.ts +0 -70
  226. package/Examples/SampleUI/src/components/Button/Button.tsx +0 -503
  227. package/Examples/SampleUI/src/components/Button/utils.tsx +0 -272
  228. package/Examples/SampleUI/src/components/Card/Card.tsx +0 -373
  229. package/Examples/SampleUI/src/components/Card/CardActions.tsx +0 -74
  230. package/Examples/SampleUI/src/components/Card/CardContent.tsx +0 -99
  231. package/Examples/SampleUI/src/components/Card/CardCover.tsx +0 -96
  232. package/Examples/SampleUI/src/components/Card/CardTitle.tsx +0 -236
  233. package/Examples/SampleUI/src/components/Card/utils.tsx +0 -110
  234. package/Examples/SampleUI/src/components/Checkbox/Checkbox.tsx +0 -78
  235. package/Examples/SampleUI/src/components/Checkbox/CheckboxAndroid.tsx +0 -180
  236. package/Examples/SampleUI/src/components/Checkbox/CheckboxIOS.tsx +0 -104
  237. package/Examples/SampleUI/src/components/Checkbox/CheckboxItem.tsx +0 -236
  238. package/Examples/SampleUI/src/components/Checkbox/index.ts +0 -19
  239. package/Examples/SampleUI/src/components/Checkbox/utils.ts +0 -183
  240. package/Examples/SampleUI/src/components/Chip/Chip.tsx +0 -513
  241. package/Examples/SampleUI/src/components/Chip/helpers.tsx +0 -322
  242. package/Examples/SampleUI/src/components/CrossFadeIcon.tsx +0 -140
  243. package/Examples/SampleUI/src/components/DataTable/DataTable.tsx +0 -138
  244. package/Examples/SampleUI/src/components/DataTable/DataTableCell.tsx +0 -132
  245. package/Examples/SampleUI/src/components/DataTable/DataTableHeader.tsx +0 -82
  246. package/Examples/SampleUI/src/components/DataTable/DataTablePagination.tsx +0 -407
  247. package/Examples/SampleUI/src/components/DataTable/DataTableRow.tsx +0 -107
  248. package/Examples/SampleUI/src/components/DataTable/DataTableTitle.tsx +0 -208
  249. package/Examples/SampleUI/src/components/Dialog/Dialog.tsx +0 -191
  250. package/Examples/SampleUI/src/components/Dialog/DialogActions.tsx +0 -94
  251. package/Examples/SampleUI/src/components/Dialog/DialogContent.tsx +0 -54
  252. package/Examples/SampleUI/src/components/Dialog/DialogIcon.tsx +0 -100
  253. package/Examples/SampleUI/src/components/Dialog/DialogScrollArea.tsx +0 -88
  254. package/Examples/SampleUI/src/components/Dialog/DialogTitle.tsx +0 -94
  255. package/Examples/SampleUI/src/components/Divider.tsx +0 -102
  256. package/Examples/SampleUI/src/components/Drawer/Drawer.tsx +0 -8
  257. package/Examples/SampleUI/src/components/Drawer/DrawerCollapsedItem.tsx +0 -282
  258. package/Examples/SampleUI/src/components/Drawer/DrawerItem.tsx +0 -209
  259. package/Examples/SampleUI/src/components/Drawer/DrawerSection.tsx +0 -138
  260. package/Examples/SampleUI/src/components/FAB/AnimatedFAB.tsx +0 -619
  261. package/Examples/SampleUI/src/components/FAB/FAB.tsx +0 -371
  262. package/Examples/SampleUI/src/components/FAB/FABGroup.tsx +0 -532
  263. package/Examples/SampleUI/src/components/FAB/index.ts +0 -13
  264. package/Examples/SampleUI/src/components/FAB/utils.ts +0 -474
  265. package/Examples/SampleUI/src/components/HelperText/HelperText.tsx +0 -168
  266. package/Examples/SampleUI/src/components/HelperText/utils.ts +0 -30
  267. package/Examples/SampleUI/src/components/Icon.tsx +0 -170
  268. package/Examples/SampleUI/src/components/IconButton/IconButton.tsx +0 -234
  269. package/Examples/SampleUI/src/components/IconButton/utils.ts +0 -190
  270. package/Examples/SampleUI/src/components/List/List.tsx +0 -20
  271. package/Examples/SampleUI/src/components/List/ListAccordion.tsx +0 -391
  272. package/Examples/SampleUI/src/components/List/ListAccordionGroup.tsx +0 -88
  273. package/Examples/SampleUI/src/components/List/ListIcon.tsx +0 -79
  274. package/Examples/SampleUI/src/components/List/ListImage.tsx +0 -89
  275. package/Examples/SampleUI/src/components/List/ListItem.tsx +0 -313
  276. package/Examples/SampleUI/src/components/List/ListSection.tsx +0 -87
  277. package/Examples/SampleUI/src/components/List/ListSubheader.tsx +0 -79
  278. package/Examples/SampleUI/src/components/List/utils.ts +0 -113
  279. package/Examples/SampleUI/src/components/MaterialCommunityIcon.tsx +0 -121
  280. package/Examples/SampleUI/src/components/Menu/Menu.tsx +0 -711
  281. package/Examples/SampleUI/src/components/Menu/MenuItem.tsx +0 -257
  282. package/Examples/SampleUI/src/components/Menu/utils.ts +0 -110
  283. package/Examples/SampleUI/src/components/Modal.tsx +0 -245
  284. package/Examples/SampleUI/src/components/Portal/Portal.tsx +0 -69
  285. package/Examples/SampleUI/src/components/Portal/PortalConsumer.tsx +0 -44
  286. package/Examples/SampleUI/src/components/Portal/PortalHost.tsx +0 -143
  287. package/Examples/SampleUI/src/components/Portal/PortalManager.tsx +0 -54
  288. package/Examples/SampleUI/src/components/ProgressBar.tsx +0 -292
  289. package/Examples/SampleUI/src/components/RadioButton/RadioButton.tsx +0 -86
  290. package/Examples/SampleUI/src/components/RadioButton/RadioButtonAndroid.tsx +0 -202
  291. package/Examples/SampleUI/src/components/RadioButton/RadioButtonGroup.tsx +0 -67
  292. package/Examples/SampleUI/src/components/RadioButton/RadioButtonIOS.tsx +0 -130
  293. package/Examples/SampleUI/src/components/RadioButton/RadioButtonItem.tsx +0 -268
  294. package/Examples/SampleUI/src/components/RadioButton/index.ts +0 -22
  295. package/Examples/SampleUI/src/components/RadioButton/utils.ts +0 -37
  296. package/Examples/SampleUI/src/components/Searchbar.tsx +0 -459
  297. package/Examples/SampleUI/src/components/SegmentedButtons/SegmentedButtonItem.tsx +0 -271
  298. package/Examples/SampleUI/src/components/SegmentedButtons/SegmentedButtons.tsx +0 -197
  299. package/Examples/SampleUI/src/components/SegmentedButtons/utils.ts +0 -179
  300. package/Examples/SampleUI/src/components/Snackbar.tsx +0 -430
  301. package/Examples/SampleUI/src/components/Surface.tsx +0 -376
  302. package/Examples/SampleUI/src/components/Switch/Switch.tsx +0 -108
  303. package/Examples/SampleUI/src/components/Switch/utils.ts +0 -113
  304. package/Examples/SampleUI/src/components/TextInput/Addons/Outline.tsx +0 -64
  305. package/Examples/SampleUI/src/components/TextInput/Addons/Underline.tsx +0 -78
  306. package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputAdornment.tsx +0 -208
  307. package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputAffix.tsx +0 -212
  308. package/Examples/SampleUI/src/components/TextInput/Adornment/TextInputIcon.tsx +0 -195
  309. package/Examples/SampleUI/src/components/TextInput/Adornment/enums.tsx +0 -12
  310. package/Examples/SampleUI/src/components/TextInput/Adornment/types.tsx +0 -11
  311. package/Examples/SampleUI/src/components/TextInput/Adornment/utils.ts +0 -48
  312. package/Examples/SampleUI/src/components/TextInput/Label/InputLabel.tsx +0 -217
  313. package/Examples/SampleUI/src/components/TextInput/Label/LabelBackground.tsx +0 -100
  314. package/Examples/SampleUI/src/components/TextInput/TextInput.tsx +0 -572
  315. package/Examples/SampleUI/src/components/TextInput/TextInputFlat.tsx +0 -475
  316. package/Examples/SampleUI/src/components/TextInput/TextInputOutlined.tsx +0 -450
  317. package/Examples/SampleUI/src/components/TextInput/constants.tsx +0 -48
  318. package/Examples/SampleUI/src/components/TextInput/helpers.tsx +0 -612
  319. package/Examples/SampleUI/src/components/TextInput/types.tsx +0 -155
  320. package/Examples/SampleUI/src/components/ToggleButton/ToggleButton.tsx +0 -187
  321. package/Examples/SampleUI/src/components/ToggleButton/ToggleButtonGroup.tsx +0 -72
  322. package/Examples/SampleUI/src/components/ToggleButton/ToggleButtonRow.tsx +0 -107
  323. package/Examples/SampleUI/src/components/ToggleButton/index.ts +0 -16
  324. package/Examples/SampleUI/src/components/ToggleButton/utils.ts +0 -26
  325. package/Examples/SampleUI/src/components/Tooltip/Tooltip.tsx +0 -249
  326. package/Examples/SampleUI/src/components/Tooltip/utils.ts +0 -129
  327. package/Examples/SampleUI/src/components/TouchableRipple/Pressable.tsx +0 -41
  328. package/Examples/SampleUI/src/components/TouchableRipple/TouchableRipple.native.tsx +0 -145
  329. package/Examples/SampleUI/src/components/TouchableRipple/TouchableRipple.tsx +0 -317
  330. package/Examples/SampleUI/src/components/TouchableRipple/utils.ts +0 -66
  331. package/Examples/SampleUI/src/components/Typography/AnimatedText.tsx +0 -107
  332. package/Examples/SampleUI/src/components/Typography/Text.tsx +0 -184
  333. package/Examples/SampleUI/src/components/Typography/types.tsx +0 -5
  334. package/Examples/SampleUI/src/components/Typography/v2/Caption.tsx +0 -50
  335. package/Examples/SampleUI/src/components/Typography/v2/Headline.tsx +0 -52
  336. package/Examples/SampleUI/src/components/Typography/v2/Paragraph.tsx +0 -49
  337. package/Examples/SampleUI/src/components/Typography/v2/StyledText.tsx +0 -56
  338. package/Examples/SampleUI/src/components/Typography/v2/Subheading.tsx +0 -50
  339. package/Examples/SampleUI/src/components/Typography/v2/Text.tsx +0 -62
  340. package/Examples/SampleUI/src/components/Typography/v2/Title.tsx +0 -49
  341. package/Examples/SampleUI/src/components/Typography/v2/index.ts +0 -5
  342. package/Examples/SampleUI/src/core/PaperProvider.tsx +0 -122
  343. package/Examples/SampleUI/src/core/SafeAreaProviderCompat.tsx +0 -65
  344. package/Examples/SampleUI/src/core/settings.tsx +0 -23
  345. package/Examples/SampleUI/src/core/theming.tsx +0 -170
  346. package/Examples/SampleUI/src/index.native.tsx +0 -285
  347. package/Examples/SampleUI/src/index.tsx +0 -226
  348. package/Examples/SampleUI/src/react-navigation/index.tsx +0 -19
  349. package/Examples/SampleUI/src/react-navigation/navigators/createMaterialBottomTabNavigator.tsx +0 -72
  350. package/Examples/SampleUI/src/react-navigation/types.tsx +0 -126
  351. package/Examples/SampleUI/src/react-navigation/views/MaterialBottomTabView.tsx +0 -140
  352. package/Examples/SampleUI/src/styles/__tests__/fonts.test.js +0 -290
  353. package/Examples/SampleUI/src/styles/fonts.tsx +0 -143
  354. package/Examples/SampleUI/src/styles/overlay.tsx +0 -70
  355. package/Examples/SampleUI/src/styles/shadow.tsx +0 -109
  356. package/Examples/SampleUI/src/styles/themes/index.ts +0 -4
  357. package/Examples/SampleUI/src/styles/themes/v2/DarkTheme.tsx +0 -30
  358. package/Examples/SampleUI/src/styles/themes/v2/LightTheme.tsx +0 -30
  359. package/Examples/SampleUI/src/styles/themes/v2/colors.tsx +0 -277
  360. package/Examples/SampleUI/src/styles/themes/v3/DarkTheme.tsx +0 -66
  361. package/Examples/SampleUI/src/styles/themes/v3/LightTheme.tsx +0 -69
  362. package/Examples/SampleUI/src/styles/themes/v3/tokens.tsx +0 -230
  363. package/Examples/SampleUI/src/utils/BackHandler/BackHandler.native.tsx +0 -3
  364. package/Examples/SampleUI/src/utils/BackHandler/BackHandler.tsx +0 -11
  365. package/Examples/SampleUI/src/utils/addEventListener.tsx +0 -56
  366. package/Examples/SampleUI/src/utils/forwardRef.tsx +0 -23
  367. package/Examples/SampleUI/src/utils/getContrastingColor.tsx +0 -15
  368. package/Examples/SampleUI/src/utils/hasTouchHandler.tsx +0 -23
  369. package/Examples/SampleUI/src/utils/roundLayoutSize.ts +0 -2
  370. package/Examples/SampleUI/src/utils/splitStyles.ts +0 -60
  371. package/Examples/SampleUI/src/utils/useAnimatedValue.tsx +0 -9
  372. package/Examples/SampleUI/src/utils/useAnimatedValueArray.tsx +0 -13
  373. package/Examples/SampleUI/src/utils/useIsKeyboardShown.tsx +0 -55
  374. package/Examples/SampleUI/src/utils/useLayout.tsx +0 -29
  375. package/Examples/SampleUI/src/utils/useLazyRef.tsx +0 -11
  376. package/Examples/SampleUI/tsconfig.json +0 -3
  377. package/Examples/SampleUI/utils/index.ts +0 -1426
  378. package/cli/__tests__/doctor.test.mjs +0 -88
@@ -1,572 +0,0 @@
1
- import * as React from 'react';
2
- import {
3
- Animated,
4
- LayoutChangeEvent,
5
- StyleProp,
6
- TextInput as NativeTextInput,
7
- TextStyle,
8
- ViewStyle,
9
- NativeSyntheticEvent,
10
- TextLayoutEventData,
11
- } from 'react-native';
12
-
13
- import TextInputAffix, {
14
- Props as TextInputAffixProps,
15
- } from './Adornment/TextInputAffix';
16
- import TextInputIcon, {
17
- Props as TextInputIconProps,
18
- } from './Adornment/TextInputIcon';
19
- import TextInputFlat from './TextInputFlat';
20
- import TextInputOutlined from './TextInputOutlined';
21
- import type { RenderProps, TextInputLabelProp } from './types';
22
- import { useInternalTheme } from '../../core/theming';
23
- import type { ThemeProp } from '../../types';
24
- import { forwardRef } from '../../utils/forwardRef';
25
- import { roundLayoutSize } from '../../utils/roundLayoutSize';
26
-
27
- const BLUR_ANIMATION_DURATION = 180;
28
- const FOCUS_ANIMATION_DURATION = 150;
29
-
30
- export type Props = React.ComponentPropsWithRef<typeof NativeTextInput> & {
31
- /**
32
- * Mode of the TextInput.
33
- * - `flat` - flat input with an underline.
34
- * - `outlined` - input with an outline.
35
- *
36
- * In `outlined` mode, the background color of the label is derived from `colors?.background` in theme or the `backgroundColor` style.
37
- * This component render TextInputOutlined or TextInputFlat based on that props
38
- */
39
- mode?: 'flat' | 'outlined';
40
- left?: React.ReactNode;
41
- right?: React.ReactNode;
42
- /**
43
- * If true, user won't be able to interact with the component.
44
- */
45
- disabled?: boolean;
46
- /**
47
- * The text or component to use for the floating label.
48
- */
49
- label?: TextInputLabelProp;
50
- /**
51
- * Placeholder for the input.
52
- */
53
- placeholder?: string;
54
- /**
55
- * Whether to style the TextInput with error style.
56
- */
57
- error?: boolean;
58
- /**
59
- * Callback that is called when the text input's text changes. Changed text is passed as an argument to the callback handler.
60
- */
61
- onChangeText?: Function;
62
- /**
63
- * Selection color of the input. On iOS, it sets both the selection color and cursor color.
64
- * On Android, it sets only the selection color.
65
- */
66
- selectionColor?: string;
67
- /**
68
- * @platform Android only
69
- * Cursor (or "caret") color of the input on Android.
70
- * This property has no effect on iOS.
71
- */
72
- cursorColor?: string;
73
- /**
74
- * Inactive underline color of the input.
75
- */
76
- underlineColor?: string;
77
- /**
78
- * Active underline color of the input.
79
- */
80
- activeUnderlineColor?: string;
81
- /**
82
- * Inactive outline color of the input.
83
- */
84
- outlineColor?: string;
85
- /**
86
- * Active outline color of the input.
87
- */
88
- activeOutlineColor?: string;
89
- /**
90
- * Color of the text in the input.
91
- */
92
- textColor?: string;
93
- /**
94
- * Sets min height with densed layout. For `TextInput` in `flat` mode
95
- * height is `64dp` or in dense layout - `52dp` with label or `40dp` without label.
96
- * For `TextInput` in `outlined` mode
97
- * height is `56dp` or in dense layout - `40dp` regardless of label.
98
- * When you apply `height` prop in style the `dense` prop affects only `paddingVertical` inside `TextInput`
99
- */
100
- dense?: boolean;
101
- /**
102
- * Whether the input can have multiple lines.
103
- */
104
- multiline?: boolean;
105
- /**
106
- * @platform Android only
107
- * The number of lines to show in the input (Android only).
108
- */
109
- numberOfLines?: number;
110
- /**
111
- * Callback that is called when the text input is focused.
112
- */
113
- onFocus?: (args: any) => void;
114
- /**
115
- * Callback that is called when the text input is blurred.
116
- */
117
- onBlur?: (args: any) => void;
118
- /**
119
- *
120
- * Callback to render a custom input component such as `react-native-text-input-mask`
121
- * instead of the default `TextInput` component from `react-native`.
122
- *
123
- * Example:
124
- * ```js
125
- * <TextInput
126
- * label="Phone number"
127
- * render={props =>
128
- * <TextInputMask
129
- * {...props}
130
- * mask="+[00] [000] [000] [000]"
131
- * />
132
- * }
133
- * />
134
- * ```
135
- */
136
- render?: (props: RenderProps) => React.ReactNode;
137
- /**
138
- * Value of the text input.
139
- */
140
- value?: string;
141
- /**
142
- * Pass `fontSize` prop to modify the font size inside `TextInput`.
143
- * Pass `height` prop to set `TextInput` height. When `height` is passed,
144
- * `dense` prop will affect only input's `paddingVertical`.
145
- * Pass `paddingHorizontal` to modify horizontal padding.
146
- * This can be used to get MD Guidelines v1 TextInput look.
147
- */
148
- style?: StyleProp<TextStyle>;
149
- /**
150
- * @optional
151
- */
152
- theme?: ThemeProp;
153
- /**
154
- * testID to be used on tests.
155
- */
156
- testID?: string;
157
- /**
158
- * Pass custom style directly to the input itself.
159
- * Overrides input style
160
- * Example: `paddingLeft`, `backgroundColor`
161
- */
162
- contentStyle?: StyleProp<TextStyle>;
163
- /**
164
- * Pass style to override the default style of outlined wrapper.
165
- * Overrides style when mode is set to `outlined`
166
- * Example: `borderRadius`, `borderColor`
167
- */
168
- outlineStyle?: StyleProp<ViewStyle>;
169
- /**
170
- * Pass style to override the default style of underlined wrapper.
171
- * Overrides style when mode is set to `flat`
172
- * Example: `borderRadius`, `borderColor`
173
- */
174
- underlineStyle?: StyleProp<ViewStyle>;
175
- };
176
-
177
- interface CompoundedComponent
178
- extends React.ForwardRefExoticComponent<
179
- Props & React.RefAttributes<TextInputHandles>
180
- > {
181
- Icon: React.FunctionComponent<TextInputIconProps>;
182
- Affix: React.FunctionComponent<Partial<TextInputAffixProps>>;
183
- }
184
-
185
- type TextInputHandles = Pick<
186
- NativeTextInput,
187
- 'focus' | 'clear' | 'blur' | 'isFocused' | 'setNativeProps' | 'setSelection'
188
- >;
189
-
190
- const DefaultRenderer = (props: RenderProps) => <NativeTextInput {...props} />;
191
-
192
- /**
193
- * A component to allow users to input text.
194
- *
195
- * ## Usage
196
- * ```js
197
- * import * as React from 'react';
198
- * import { TextInput } from 'react-native-paper';
199
- *
200
- * const MyComponent = () => {
201
- * const [text, setText] = React.useState("");
202
- *
203
- * return (
204
- * <TextInput
205
- * label="Email"
206
- * value={text}
207
- * onChangeText={text => setText(text)}
208
- * />
209
- * );
210
- * };
211
- *
212
- * export default MyComponent;
213
- * ```
214
- *
215
- * @extends TextInput props https://reactnative.dev/docs/textinput#props
216
- */
217
- const TextInput = forwardRef<TextInputHandles, Props>(
218
- (
219
- {
220
- mode = 'flat',
221
- dense = false,
222
- disabled = false,
223
- error: errorProp = false,
224
- multiline = false,
225
- editable = true,
226
- contentStyle,
227
- render = DefaultRenderer,
228
- theme: themeOverrides,
229
- ...rest
230
- }: Props,
231
- ref
232
- ) => {
233
- const theme = useInternalTheme(themeOverrides);
234
- const isControlled = rest.value !== undefined;
235
- const validInputValue = isControlled ? rest.value : rest.defaultValue;
236
-
237
- const { current: labeled } = React.useRef<Animated.Value>(
238
- new Animated.Value(validInputValue ? 0 : 1)
239
- );
240
- const { current: error } = React.useRef<Animated.Value>(
241
- new Animated.Value(errorProp ? 1 : 0)
242
- );
243
- const [focused, setFocused] = React.useState<boolean>(false);
244
- const [displayPlaceholder, setDisplayPlaceholder] =
245
- React.useState<boolean>(false);
246
- const [uncontrolledValue, setUncontrolledValue] = React.useState<
247
- string | undefined
248
- >(validInputValue);
249
- // Use value from props instead of local state when input is controlled
250
- const value = isControlled ? rest.value : uncontrolledValue;
251
-
252
- const [labelTextLayout, setLabelTextLayout] = React.useState({
253
- width: 33,
254
- });
255
-
256
- const [inputContainerLayout, setInputContainerLayout] = React.useState({
257
- width: 65,
258
- });
259
-
260
- const [labelLayout, setLabelLayout] = React.useState<{
261
- measured: boolean;
262
- width: number;
263
- height: number;
264
- }>({
265
- measured: false,
266
- width: 0,
267
- height: 0,
268
- });
269
- const [leftLayout, setLeftLayout] = React.useState<{
270
- height: number | null;
271
- width: number | null;
272
- }>({
273
- width: null,
274
- height: null,
275
- });
276
- const [rightLayout, setRightLayout] = React.useState<{
277
- height: number | null;
278
- width: number | null;
279
- }>({
280
- width: null,
281
- height: null,
282
- });
283
-
284
- const timer = React.useRef<NodeJS.Timeout | undefined>();
285
-
286
- const root = React.useRef<NativeTextInput | undefined | null>();
287
-
288
- const { scale } = theme.animation;
289
-
290
- React.useImperativeHandle(ref, () => ({
291
- focus: () => root.current?.focus(),
292
- clear: () => root.current?.clear(),
293
- setNativeProps: (args: Object) => root.current?.setNativeProps(args),
294
- isFocused: () => root.current?.isFocused() || false,
295
- blur: () => root.current?.blur(),
296
- forceFocus: () => root.current?.focus(),
297
- setSelection: (start: number, end: number) =>
298
- root.current?.setSelection(start, end),
299
- }));
300
-
301
- React.useEffect(() => {
302
- // When the input has an error, we wiggle the label and apply error styles
303
- if (errorProp) {
304
- // show error
305
- Animated.timing(error, {
306
- toValue: 1,
307
- duration: FOCUS_ANIMATION_DURATION * scale,
308
- // To prevent this - https://github.com/callstack/react-native-paper/issues/941
309
- useNativeDriver: true,
310
- }).start();
311
- } else {
312
- // hide error
313
- {
314
- Animated.timing(error, {
315
- toValue: 0,
316
- duration: BLUR_ANIMATION_DURATION * scale,
317
- // To prevent this - https://github.com/callstack/react-native-paper/issues/941
318
- useNativeDriver: true,
319
- }).start();
320
- }
321
- }
322
- }, [errorProp, scale, error]);
323
-
324
- React.useEffect(() => {
325
- // Show placeholder text only if the input is focused, or there's no label
326
- // We don't show placeholder if there's a label because the label acts as placeholder
327
- // When focused, the label moves up, so we can show a placeholder
328
- if (focused || !rest.label) {
329
- // If the user wants to use the contextMenu, when changing the placeholder, the contextMenu is closed
330
- // This is a workaround to mitigate this behavior in scenarios where the placeholder is not specified.
331
- if (rest.placeholder) {
332
- // Display placeholder in a delay to offset the label animation
333
- // If we show it immediately, they'll overlap and look ugly
334
- timer.current = setTimeout(
335
- () => setDisplayPlaceholder(true),
336
- 50
337
- ) as unknown as NodeJS.Timeout;
338
- }
339
- } else {
340
- // hidePlaceholder
341
- setDisplayPlaceholder(false);
342
- }
343
-
344
- return () => {
345
- if (timer.current) {
346
- clearTimeout(timer.current);
347
- }
348
- };
349
- }, [focused, rest.label, rest.placeholder]);
350
-
351
- React.useEffect(() => {
352
- labeled.stopAnimation();
353
- // The label should be minimized if the text input is focused, or has text
354
- // In minimized mode, the label moves up and becomes small
355
- // workaround for animated regression for react native > 0.61
356
- // https://github.com/callstack/react-native-paper/pull/1440
357
- if (value || focused) {
358
- // minimize label
359
- Animated.timing(labeled, {
360
- toValue: 0,
361
- duration: BLUR_ANIMATION_DURATION * scale,
362
- // To prevent this - https://github.com/callstack/react-native-paper/issues/941
363
- useNativeDriver: true,
364
- }).start();
365
- } else {
366
- // restore label
367
- Animated.timing(labeled, {
368
- toValue: 1,
369
- duration: FOCUS_ANIMATION_DURATION * scale,
370
- // To prevent this - https://github.com/callstack/react-native-paper/issues/941
371
- useNativeDriver: true,
372
- }).start();
373
- }
374
- }, [focused, value, labeled, scale]);
375
-
376
- const onLeftAffixLayoutChange = React.useCallback(
377
- (event: LayoutChangeEvent) => {
378
- const height = roundLayoutSize(event.nativeEvent.layout.height);
379
- const width = roundLayoutSize(event.nativeEvent.layout.width);
380
-
381
- if (width !== leftLayout.width || height !== leftLayout.height) {
382
- setLeftLayout({
383
- width,
384
- height,
385
- });
386
- }
387
- },
388
- [leftLayout.height, leftLayout.width]
389
- );
390
-
391
- const onRightAffixLayoutChange = React.useCallback(
392
- (event: LayoutChangeEvent) => {
393
- const width = roundLayoutSize(event.nativeEvent.layout.width);
394
- const height = roundLayoutSize(event.nativeEvent.layout.height);
395
-
396
- if (width !== rightLayout.width || height !== rightLayout.height) {
397
- setRightLayout({
398
- width,
399
- height,
400
- });
401
- }
402
- },
403
- [rightLayout.height, rightLayout.width]
404
- );
405
-
406
- const handleFocus = (args: any) => {
407
- if (disabled || !editable) {
408
- return;
409
- }
410
-
411
- setFocused(true);
412
-
413
- rest.onFocus?.(args);
414
- };
415
-
416
- const handleBlur = (args: Object) => {
417
- if (!editable) {
418
- return;
419
- }
420
-
421
- setFocused(false);
422
- rest.onBlur?.(args);
423
- };
424
-
425
- const handleChangeText = (value: string) => {
426
- if (!editable || disabled) {
427
- return;
428
- }
429
-
430
- if (!isControlled) {
431
- // Keep track of value in local state when input is not controlled
432
- setUncontrolledValue(value);
433
- }
434
- rest.onChangeText?.(value);
435
- };
436
-
437
- const handleLayoutAnimatedText = React.useCallback(
438
- (e: LayoutChangeEvent) => {
439
- const width = roundLayoutSize(e.nativeEvent.layout.width);
440
- const height = roundLayoutSize(e.nativeEvent.layout.height);
441
-
442
- if (width !== labelLayout.width || height !== labelLayout.height) {
443
- setLabelLayout({
444
- width,
445
- height,
446
- measured: true,
447
- });
448
- }
449
- },
450
- [labelLayout.height, labelLayout.width]
451
- );
452
-
453
- const handleLabelTextLayout = React.useCallback(
454
- ({ nativeEvent }: NativeSyntheticEvent<TextLayoutEventData>) => {
455
- setLabelTextLayout({
456
- width: nativeEvent.lines.reduce(
457
- (acc, line) => acc + Math.ceil(line.width),
458
- 0
459
- ),
460
- });
461
- },
462
- []
463
- );
464
-
465
- const handleInputContainerLayout = React.useCallback(
466
- ({ nativeEvent: { layout } }: LayoutChangeEvent) => {
467
- setInputContainerLayout({
468
- width: layout.width,
469
- });
470
- },
471
- []
472
- );
473
-
474
- const forceFocus = React.useCallback(() => root.current?.focus(), []);
475
-
476
- const { maxFontSizeMultiplier = 1.5 } = rest;
477
-
478
- const scaledLabel = !!(value || focused);
479
-
480
- if (mode === 'outlined') {
481
- return (
482
- <TextInputOutlined
483
- dense={dense}
484
- disabled={disabled}
485
- error={errorProp}
486
- multiline={multiline}
487
- editable={editable}
488
- render={render}
489
- {...rest}
490
- theme={theme}
491
- value={value}
492
- parentState={{
493
- labeled,
494
- error,
495
- focused,
496
- displayPlaceholder,
497
- value,
498
- labelTextLayout,
499
- labelLayout,
500
- leftLayout,
501
- rightLayout,
502
- inputContainerLayout,
503
- }}
504
- innerRef={(ref) => {
505
- root.current = ref;
506
- }}
507
- onFocus={handleFocus}
508
- forceFocus={forceFocus}
509
- onBlur={handleBlur}
510
- onChangeText={handleChangeText}
511
- onLayoutAnimatedText={handleLayoutAnimatedText}
512
- onInputLayout={handleInputContainerLayout}
513
- onLabelTextLayout={handleLabelTextLayout}
514
- onLeftAffixLayoutChange={onLeftAffixLayoutChange}
515
- onRightAffixLayoutChange={onRightAffixLayoutChange}
516
- maxFontSizeMultiplier={maxFontSizeMultiplier}
517
- contentStyle={contentStyle}
518
- scaledLabel={scaledLabel}
519
- />
520
- );
521
- }
522
-
523
- return (
524
- <TextInputFlat
525
- dense={dense}
526
- disabled={disabled}
527
- error={errorProp}
528
- multiline={multiline}
529
- editable={editable}
530
- render={render}
531
- {...rest}
532
- theme={theme}
533
- value={value}
534
- parentState={{
535
- labeled,
536
- error,
537
- focused,
538
- displayPlaceholder,
539
- value,
540
- labelTextLayout,
541
- labelLayout,
542
- leftLayout,
543
- rightLayout,
544
- inputContainerLayout,
545
- }}
546
- innerRef={(ref) => {
547
- root.current = ref;
548
- }}
549
- onFocus={handleFocus}
550
- forceFocus={forceFocus}
551
- onBlur={handleBlur}
552
- onInputLayout={handleInputContainerLayout}
553
- onChangeText={handleChangeText}
554
- onLayoutAnimatedText={handleLayoutAnimatedText}
555
- onLabelTextLayout={handleLabelTextLayout}
556
- onLeftAffixLayoutChange={onLeftAffixLayoutChange}
557
- onRightAffixLayoutChange={onRightAffixLayoutChange}
558
- maxFontSizeMultiplier={maxFontSizeMultiplier}
559
- contentStyle={contentStyle}
560
- scaledLabel={scaledLabel}
561
- />
562
- );
563
- }
564
- ) as CompoundedComponent;
565
- // @component ./Adornment/TextInputIcon.tsx
566
- TextInput.Icon = TextInputIcon;
567
-
568
- // @component ./Adornment/TextInputAffix.tsx
569
- // @ts-ignore Types of property 'theme' are incompatible.
570
- TextInput.Affix = TextInputAffix;
571
-
572
- export default TextInput;