react-native-ui-lib 7.46.3-snapshot.7360 → 7.46.3-snapshot.7367

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 (202) hide show
  1. package/babel.config.js +0 -12
  2. package/index.js +0 -1
  3. package/lib/android/build.gradle +5 -5
  4. package/lib/android/src/main/java/com/wix/reactnativeuilib/UiLibPackageList.java +2 -0
  5. package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/HighlighterViewManager.java +23 -31
  6. package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReactHacks.java +30 -0
  7. package/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReflectionUtils.java +34 -0
  8. package/lib/android/src/main/java/com/wix/reactnativeuilib/keyboardinput/utils/RuntimeUtils.java +1 -1
  9. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/DefaultKeyListener.java +33 -0
  10. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/KeyListenerProxy.java +53 -0
  11. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerModule.java +54 -0
  12. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerPackage.java +28 -0
  13. package/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/ViewUtils.java +36 -0
  14. package/lib/components/{HighlighterOverlayView/index.d.ts → HighlighterOverlayView.d.ts} +1 -1
  15. package/lib/components/HighlighterOverlayView.js +40 -0
  16. package/lib/components/{HighlighterOverlayView/index.web.d.ts → HighlighterOverlayView.web.d.ts} +1 -1
  17. package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/CustomKeyboardView.android.d.ts +2 -5
  18. package/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.js +28 -0
  19. package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/CustomKeyboardView.ios.d.ts +1 -1
  20. package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/CustomKeyboardView.ios.js +3 -3
  21. package/lib/components/Keyboard/{KeyboardAccessoryView/CustomKeyboardView → KeyboardInput}/CustomKeyboardViewBase.d.ts +0 -3
  22. package/lib/components/Keyboard/{KeyboardAccessoryView/CustomKeyboardView → KeyboardInput}/CustomKeyboardViewBase.js +1 -1
  23. package/lib/components/Keyboard/{KeyboardAccessoryView/index.d.ts → KeyboardInput/KeyboardAccessoryView.d.ts} +1 -11
  24. package/lib/components/Keyboard/{KeyboardAccessoryView/index.js → KeyboardInput/KeyboardAccessoryView.js} +5 -31
  25. package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/index.d.ts → KeyboardInput/KeyboardRegistry.d.ts} +1 -1
  26. package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/index.js → KeyboardInput/KeyboardRegistry.js} +1 -1
  27. package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry → KeyboardInput}/__tests__/KeyboardRegistry.spec.js +1 -1
  28. package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/keyboardAccessoryView.api.json +5 -5
  29. package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry → KeyboardInput}/keyboardRegistry.api.json +9 -9
  30. package/lib/components/Keyboard/KeyboardInput/utils/KeyboardUtils.d.ts +11 -0
  31. package/lib/components/Keyboard/KeyboardInput/utils/KeyboardUtils.js +17 -0
  32. package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager → KeyboardInput/utils}/__tests__/EventEmitterManager.spec.js +1 -1
  33. package/lib/components/Keyboard/{KeyboardAwareInsetsView/index.d.ts → KeyboardTracking/KeyboardAwareInsetsView.d.ts} +1 -1
  34. package/lib/components/Keyboard/{KeyboardAwareInsetsView/index.js → KeyboardTracking/KeyboardAwareInsetsView.js} +1 -1
  35. package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/KeyboardTrackingView.ios.d.ts +4 -1
  36. package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/KeyboardTrackingView.ios.js +8 -5
  37. package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/index.d.ts +2 -2
  38. package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/keyboardTrackingView.api.json +20 -11
  39. package/lib/components/Keyboard/index.d.ts +6 -6
  40. package/lib/components/Keyboard/index.js +6 -6
  41. package/lib/components/SafeArea/SafeAreaInsetsManager.d.ts +7 -21
  42. package/lib/components/SafeArea/SafeAreaInsetsManager.js +31 -95
  43. package/lib/components/SafeArea/SafeAreaSpacerView.d.ts +2 -2
  44. package/lib/components/SafeArea/SafeAreaSpacerView.js +9 -63
  45. package/lib/components/index.d.ts +1 -1
  46. package/lib/components/index.js +1 -1
  47. package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomInputControllerTemp.m +8 -52
  48. package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomKeyboardViewControllerTemp.h +7 -1
  49. package/lib/ios/reactnativeuilib/keyboardinput/rctcustomInputcontroller/RCTCustomKeyboardViewControllerTemp.m +1 -1
  50. package/lib/ios/reactnativeuilib/keyboardtrackingview/KeyboardTrackingViewTempManager.m +41 -109
  51. package/lib/package.json +3 -3
  52. package/lib/react-native.config.js +3 -1
  53. package/metro.config.js +2 -2
  54. package/package.json +29 -29
  55. package/panningViews.d.ts +2 -0
  56. package/panningViews.js +1 -0
  57. package/react-native.config.js +3 -1
  58. package/sharedTransition.d.ts +2 -0
  59. package/sharedTransition.js +1 -0
  60. package/src/commons/Constants.js +5 -2
  61. package/src/components/KeyboardAwareScrollView/KeyboardAwareBase.js +1 -5
  62. package/src/components/actionSheet/index.d.ts +12 -2
  63. package/src/components/actionSheet/index.js +42 -3
  64. package/src/components/animatedImage/index.js +6 -16
  65. package/src/components/badge/index.d.ts +47 -107
  66. package/src/components/button/button.api.json +1 -1
  67. package/src/components/button/index.d.ts +23 -53
  68. package/src/components/button/types.d.ts +1 -0
  69. package/src/components/colorPicker/ColorPickerDialog.d.ts +1 -1
  70. package/src/components/colorPicker/ColorPickerDialog.js +1 -1
  71. package/src/components/dateTimePicker/index.d.ts +5 -186
  72. package/src/components/dateTimePicker/index.js +4 -3
  73. package/src/components/dialog/DialogDismissibleView.d.ts +34 -0
  74. package/src/components/dialog/DialogDismissibleView.js +184 -0
  75. package/src/components/dialog/OverlayFadingBackground.d.ts +14 -0
  76. package/src/components/dialog/OverlayFadingBackground.js +45 -0
  77. package/src/components/dialog/dialog.api.json +37 -31
  78. package/src/components/dialog/index.d.ts +105 -13
  79. package/src/components/dialog/index.js +212 -204
  80. package/src/components/drawer/Swipeable.js +2 -1
  81. package/src/components/drawer/index.js +25 -31
  82. package/src/components/fadedScrollView/index.js +2 -7
  83. package/src/components/featureHighlight/index.d.ts +1 -1
  84. package/src/components/index.js +19 -0
  85. package/src/components/marquee/types.js +1 -4
  86. package/src/components/modal/index.d.ts +0 -5
  87. package/src/components/modal/index.js +10 -14
  88. package/src/components/modal/modal.api.json +0 -5
  89. package/src/components/panningViews/asPanViewConsumer.d.ts +3 -0
  90. package/src/components/panningViews/asPanViewConsumer.js +16 -0
  91. package/src/components/panningViews/panDismissibleView.d.ts +51 -0
  92. package/src/components/panningViews/panDismissibleView.js +350 -0
  93. package/src/components/panningViews/panGestureView.d.ts +23 -0
  94. package/src/components/panningViews/panGestureView.js +156 -0
  95. package/src/components/panningViews/panListenerView.d.ts +66 -0
  96. package/src/components/panningViews/panListenerView.js +155 -0
  97. package/src/components/panningViews/panResponderView.d.ts +19 -0
  98. package/src/components/panningViews/panResponderView.js +79 -0
  99. package/src/components/panningViews/panningContext.d.ts +3 -0
  100. package/src/components/panningViews/panningContext.js +4 -0
  101. package/src/components/panningViews/panningProvider.d.ts +73 -0
  102. package/src/components/panningViews/panningProvider.js +101 -0
  103. package/src/components/picker/Picker.driver.new.d.ts +2 -2
  104. package/src/components/picker/Picker.driver.new.js +3 -3
  105. package/src/components/picker/PickerItem.js +20 -6
  106. package/src/components/picker/PickerPresenter.d.ts +1 -0
  107. package/src/components/picker/PickerPresenter.js +23 -1
  108. package/src/components/picker/api/picker.api.json +1 -0
  109. package/src/components/picker/api/pickerItem.api.json +5 -0
  110. package/src/components/picker/helpers/useFieldType.d.ts +23 -53
  111. package/src/components/picker/helpers/usePickerLabel.d.ts +1 -1
  112. package/src/components/picker/helpers/usePickerLabel.js +3 -2
  113. package/src/components/picker/helpers/usePickerMigrationWarnings.d.ts +1 -1
  114. package/src/components/picker/helpers/usePickerMigrationWarnings.js +12 -0
  115. package/src/components/picker/helpers/usePickerSearch.d.ts +1 -1
  116. package/src/components/picker/helpers/usePickerSearch.js +8 -4
  117. package/src/components/picker/helpers/usePickerSelection.d.ts +1 -1
  118. package/src/components/picker/helpers/usePickerSelection.js +10 -2
  119. package/src/components/picker/index.js +22 -4
  120. package/src/components/picker/types.d.ts +24 -1
  121. package/src/components/segmentedControl/index.js +3 -3
  122. package/src/components/sharedTransition/ShareTransitionContext.js +3 -0
  123. package/src/components/sharedTransition/SharedArea.js +153 -0
  124. package/src/components/sharedTransition/SourceElement.js +44 -0
  125. package/src/components/sharedTransition/TargetElement.js +38 -0
  126. package/src/components/sharedTransition/index.js +9 -0
  127. package/src/components/slider/GradientSlider.d.ts +1 -1
  128. package/src/components/sortableGridList/SortableItem.js +4 -13
  129. package/src/components/sortableList/SortableListItem.js +4 -13
  130. package/src/components/stackAggregator/index.js +11 -16
  131. package/src/components/text/Text.driver.new.d.ts +2 -2
  132. package/src/components/text/Text.driver.new.js +2 -2
  133. package/src/components/textField/Input.js +1 -0
  134. package/src/components/textField/TextField.driver.new.d.ts +2 -2
  135. package/src/components/textField/TextField.driver.new.js +2 -2
  136. package/src/components/textField/presets/outline.d.ts +46 -106
  137. package/src/components/textField/presets/underline.d.ts +46 -106
  138. package/src/components/textField/types.js +0 -1
  139. package/src/components/textField/usePreset.d.ts +44 -72
  140. package/src/components/timeline/types.js +0 -3
  141. package/src/incubator/dialog/dialog.api.json +54 -0
  142. package/src/{components → incubator}/dialog/dialogHeader.api.json +2 -2
  143. package/src/incubator/dialog/index.d.ts +15 -0
  144. package/src/incubator/dialog/index.js +218 -0
  145. package/src/{components → incubator}/dialog/types.d.ts +19 -0
  146. package/src/{components → incubator}/dialog/types.js +3 -1
  147. package/src/{components → incubator}/dialog/useDialogContent.d.ts +1 -1
  148. package/src/incubator/expandableOverlay/ExpandableOverlay.driver.js +1 -1
  149. package/src/incubator/expandableOverlay/index.d.ts +3 -42
  150. package/src/incubator/expandableOverlay/index.js +4 -1
  151. package/src/{hooks/useHiddenLocation/index.d.ts → incubator/hooks/useHiddenLocation.d.ts} +1 -1
  152. package/src/{hooks/useHiddenLocation/index.web.d.ts → incubator/hooks/useHiddenLocation.web.d.ts} +1 -1
  153. package/src/incubator/index.d.ts +2 -0
  154. package/src/incubator/index.js +2 -0
  155. package/src/{components → incubator}/panView/index.d.ts +3 -3
  156. package/src/{components → incubator}/panView/index.js +4 -4
  157. package/src/{components → incubator}/panView/usePanGesture.d.ts +1 -1
  158. package/src/incubator/toast/index.js +1 -1
  159. package/src/index.d.ts +10 -3
  160. package/src/index.js +162 -42
  161. package/src/testkit/index.d.ts +1 -1
  162. package/src/testkit/index.js +1 -1
  163. package/src/testkit/new/Component.driver.d.ts +1 -4
  164. package/src/testkit/new/Component.driver.js +3 -3
  165. package/lib/components/HighlighterOverlayView/index.js +0 -49
  166. package/lib/components/Keyboard/KeyboardAccessoryView/CustomKeyboardView/CustomKeyboardView.android.js +0 -51
  167. package/lib/components/Keyboard/KeyboardAccessoryView/KeyboardUtils/index.d.ts +0 -26
  168. package/lib/components/Keyboard/KeyboardAccessoryView/KeyboardUtils/index.js +0 -91
  169. package/lib/components/SafeArea/__tests__/SafeAreaInsetsManager.spec.js +0 -274
  170. package/lib/components/SafeArea/index.d.ts +0 -10
  171. package/lib/components/SafeArea/index.js +0 -11
  172. package/panView.d.ts +0 -2
  173. package/panView.js +0 -1
  174. /package/lib/components/{HighlighterOverlayView/index.web.js → HighlighterOverlayView.web.js} +0 -0
  175. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/index.d.ts +0 -0
  176. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/index.js +0 -0
  177. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/index.web.d.ts +0 -0
  178. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/CustomKeyboardView/index.web.js +0 -0
  179. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/TextInputKeyboardManager.android.d.ts +0 -0
  180. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/TextInputKeyboardManager.android.js +0 -0
  181. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/TextInputKeyboardManager.ios.d.ts +0 -0
  182. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/TextInputKeyboardManager.ios.js +0 -0
  183. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/index.d.ts +0 -0
  184. /package/lib/components/Keyboard/{KeyboardAccessoryView → KeyboardInput}/TextInputKeyboardManager/index.js +0 -0
  185. /package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager/index.d.ts → KeyboardInput/utils/EventEmitterManager.d.ts} +0 -0
  186. /package/lib/components/Keyboard/{KeyboardAccessoryView/KeyboardRegistry/EventEmitterManager/index.js → KeyboardInput/utils/EventEmitterManager.js} +0 -0
  187. /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/KeyboardTrackingView.android.d.ts +0 -0
  188. /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/KeyboardTrackingView.android.js +0 -0
  189. /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/index.js +0 -0
  190. /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/index.web.d.ts +0 -0
  191. /package/lib/components/Keyboard/{KeyboardTrackingView → KeyboardTracking/KeyboardTrackingView}/index.web.js +0 -0
  192. /package/lib/components/Keyboard/{KeyboardAwareInsetsView → KeyboardTracking}/keyboardAwareInsetsView.api.json +0 -0
  193. /package/src/{components → incubator}/dialog/Dialog.driver.new.d.ts +0 -0
  194. /package/src/{components → incubator}/dialog/Dialog.driver.new.js +0 -0
  195. /package/src/{components → incubator}/dialog/DialogHeader.d.ts +0 -0
  196. /package/src/{components → incubator}/dialog/DialogHeader.js +0 -0
  197. /package/src/{components → incubator}/dialog/useDialogContent.js +0 -0
  198. /package/src/{hooks/useHiddenLocation/index.js → incubator/hooks/useHiddenLocation.js} +0 -0
  199. /package/src/{hooks/useHiddenLocation/index.web.js → incubator/hooks/useHiddenLocation.web.js} +0 -0
  200. /package/src/{components → incubator}/panView/panningUtil.d.ts +0 -0
  201. /package/src/{components → incubator}/panView/panningUtil.js +0 -0
  202. /package/src/{components → incubator}/panView/usePanGesture.js +0 -0
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { ViewStyle, StyleProp } from 'react-native';
2
+ import { ViewStyle } from 'react-native';
3
3
  export type SafeAreaSpacerViewProps = {
4
- style?: StyleProp<ViewStyle>;
4
+ style?: ViewStyle;
5
5
  };
6
6
  declare const SafeAreaSpacerView: {
7
7
  ({ style }: SafeAreaSpacerViewProps): React.JSX.Element;
@@ -1,68 +1,14 @@
1
- import React, { useState, useCallback, useEffect, useMemo } from 'react';
2
- import { View, Dimensions } from 'react-native';
3
- import SafeAreaInsetsManager from "./SafeAreaInsetsManager";
1
+ import React from 'react';
2
+ import { View, requireNativeComponent, Platform } from 'react-native';
3
+ const NativeSafeAreaSpacerView = requireNativeComponent('SafeAreaSpacerView');
4
+ const isIOS = Platform.OS === 'ios';
4
5
  const SafeAreaSpacerView = ({
5
6
  style
6
7
  }) => {
7
- const [safeAreaInsets, setSafeAreaInsets] = useState({
8
- top: 0,
9
- left: 0,
10
- bottom: 0,
11
- right: 0
12
- });
13
- const [componentHeight, setComponentHeight] = useState(0);
14
- const [spacerHeight, setSpacerHeight] = useState(0);
15
- useEffect(() => {
16
- const getSafeAreaInsets = async () => {
17
- try {
18
- const insets = await SafeAreaInsetsManager.getSafeAreaInsets();
19
- if (insets) {
20
- setSafeAreaInsets(insets);
21
- }
22
- } catch (error) {
23
- console.warn('SafeAreaSpacerView: Failed to get initial safe area insets:', error);
24
- }
25
- };
26
- getSafeAreaInsets();
27
-
28
- // Add delegate to listen for safe area changes from native component
29
- const delegate = {
30
- onSafeAreaInsetsDidChangeEvent: insets => {
31
- if (insets) {
32
- setSafeAreaInsets(insets);
33
- }
34
- }
35
- };
36
- SafeAreaInsetsManager.addSafeAreaChangedDelegate(delegate);
37
- return () => {
38
- SafeAreaInsetsManager.removeSafeAreaChangedDelegate(delegate);
39
- };
40
- }, []);
41
-
42
- // Position detection with useCallback
43
- const handleLayout = useCallback(event => {
44
- const {
45
- y
46
- } = event.nativeEvent.layout;
47
- setComponentHeight(y);
48
- }, []);
49
- useEffect(() => {
50
- const screenHeight = Dimensions.get('window').height;
51
- let height = 0;
52
- // Check if positioned within safe area bounds
53
- if (componentHeight < safeAreaInsets.top) {
54
- height = safeAreaInsets.top;
55
- } else if (componentHeight > screenHeight - safeAreaInsets.bottom) {
56
- height = safeAreaInsets.bottom;
57
- }
58
- if (height !== spacerHeight) {
59
- setSpacerHeight(height);
60
- }
61
- }, [componentHeight, safeAreaInsets, spacerHeight]);
62
- const spacerStyle = useMemo(() => [{
63
- height: spacerHeight
64
- }, style], [spacerHeight, style]);
65
- return <View style={spacerStyle} onLayout={handleLayout} />;
8
+ return (
9
+ // @ts-ignore
10
+ isIOS ? <NativeSafeAreaSpacerView style={style} /> : <View style={style} />
11
+ );
66
12
  };
67
- SafeAreaSpacerView.displayName = 'SafeAreaSpacerView';
13
+ SafeAreaSpacerView.displayName = 'IGNORE';
68
14
  export default SafeAreaSpacerView;
@@ -1,6 +1,6 @@
1
1
  import DynamicFonts, { FontExtension } from './DynamicFonts';
2
2
  import HighlighterOverlayView from './HighlighterOverlayView';
3
- import SafeAreaSpacerView from './SafeArea';
3
+ import SafeAreaSpacerView from './SafeArea/SafeAreaSpacerView';
4
4
  import SafeAreaInsetsManager from './SafeArea/SafeAreaInsetsManager';
5
5
  import Keyboard, { KeyboardTrackingViewProps, KeyboardAccessoryViewProps } from './Keyboard';
6
6
  export { DynamicFonts, FontExtension, HighlighterOverlayView, SafeAreaSpacerView, SafeAreaInsetsManager, Keyboard, KeyboardTrackingViewProps, KeyboardAccessoryViewProps };
@@ -1,6 +1,6 @@
1
1
  import DynamicFonts, { FontExtension } from "./DynamicFonts";
2
2
  import HighlighterOverlayView from "./HighlighterOverlayView";
3
- import SafeAreaSpacerView from "./SafeArea";
3
+ import SafeAreaSpacerView from "./SafeArea/SafeAreaSpacerView";
4
4
  import SafeAreaInsetsManager from "./SafeArea/SafeAreaInsetsManager";
5
5
  import Keyboard, { KeyboardTrackingViewProps, KeyboardAccessoryViewProps } from "./Keyboard";
6
6
  export { DynamicFonts, FontExtension, HighlighterOverlayView, SafeAreaSpacerView, SafeAreaInsetsManager, Keyboard, KeyboardTrackingViewProps, KeyboardAccessoryViewProps };
@@ -13,8 +13,6 @@
13
13
 
14
14
  #import "LNAnimatorTemp.h"
15
15
 
16
- #import "RNNAppDelegate.h"
17
-
18
16
  #define kHlperViewTag 0x1f1f1f
19
17
 
20
18
  NSString *const RCTCustomInputControllerKeyboardResigendEventTemp = @"kbdResigned";
@@ -51,6 +49,7 @@ NSString *const RCTCustomInputControllerKeyboardResigendEventTemp = @"kbdResigne
51
49
  {
52
50
  [self.delegate _WXInputHelperViewResignFirstResponder:self];
53
51
  }
52
+
54
53
  }
55
54
 
56
55
  return rv;
@@ -119,36 +118,17 @@ RCT_EXPORT_MODULE(CustomInputControllerTemp)
119
118
  return [params[@"useSafeArea"] isEqual:@(1)];
120
119
  }
121
120
 
122
- - (UITextField*)getTextFieldFromTextInputComponentView:(id)inputField {
123
- UITextField *textField = nil;
124
-
125
- if ([inputField isKindOfClass:NSClassFromString(@"RCTTextInputComponentView")])
126
- {
127
- Ivar textFieldIvar = class_getInstanceVariable([inputField class], "_backedTextInputView");
128
- if (textFieldIvar != NULL)
129
- {
130
- textField = [inputField valueForKey:@"_backedTextInputView"];
131
- }
132
- }
133
-
134
- return textField;
135
- }
136
-
137
121
  RCT_EXPORT_METHOD(presentCustomInputComponent:(nonnull NSNumber*)inputFieldTag params:(nonnull NSDictionary*)params)
138
122
  {
139
123
  RCTBridge* bridge = [self.bridge valueForKey:@"parentBridge"];
140
124
  if(bridge == nil)
141
125
  {
142
- bridge = self.bridge;
126
+ return;
143
127
  }
144
128
 
145
129
  UIView* inputField = [self.bridge.uiManager viewForReactTag:inputFieldTag];
146
130
  NSDictionary *initialProps = params[@"initialProps"];
147
-
148
- RNNAppDelegate* appDelegate = (RNNAppDelegate*)[UIApplication sharedApplication].delegate;
149
- UIView *rv = [appDelegate.rootViewFactory viewWithModuleName:params[@"component"]
150
- initialProperties:initialProps];
151
-
131
+ RCTRootView* rv = [[RCTRootView alloc] initWithBridge:bridge moduleName:params[@"component"] initialProperties:initialProps];
152
132
  if(initialProps != nil && initialProps[@"backgroundColor"] != nil)
153
133
  {
154
134
  UIColor *backgroundColor = [RCTConvert UIColor:initialProps[@"backgroundColor"]];
@@ -168,17 +148,7 @@ RCT_EXPORT_METHOD(presentCustomInputComponent:(nonnull NSNumber*)inputFieldTag p
168
148
  helperView.tag = kHlperViewTag;
169
149
  helperView.delegate = self;
170
150
 
171
-
172
-
173
- if ([inputField isKindOfClass:NSClassFromString(@"RCTTextInputComponentView")])
174
- {
175
- UITextField *textField = [self getTextFieldFromTextInputComponentView:inputField];
176
- if (textField != nil)
177
- {
178
- helperView.inputAccessoryView = textField.inputAccessoryView;
179
- }
180
- }
181
- else if ([inputField isKindOfClass:NSClassFromString(@"RCTTextView")])
151
+ if ([inputField isKindOfClass:NSClassFromString(@"RCTTextView")])
182
152
  {
183
153
  UITextView *textView = nil;
184
154
  Ivar backedTextInputIvar = class_getInstanceVariable([inputField class], "_backedTextInput");
@@ -243,17 +213,7 @@ RCT_EXPORT_METHOD(resetInput:(nonnull NSNumber*)inputFieldTag)
243
213
  _WXInputHelperViewTemp* helperView = [inputField.superview viewWithTag:kHlperViewTag];
244
214
  if(helperView != nil && [helperView isFirstResponder])
245
215
  {//restore the first responder only if it was already the first responder to prevent the keyboard from opening again if not necessary
246
- if ([inputField isKindOfClass:NSClassFromString(@"RCTTextInputComponentView")])
247
- {
248
- UITextField *textField = [self getTextFieldFromTextInputComponentView:inputField];
249
- if (textField != nil)
250
- {
251
- [textField reactFocus];
252
- }
253
-
254
- } else {
255
- [inputField reactFocus];
256
- }
216
+ [inputField reactFocus];
257
217
  }
258
218
  }
259
219
  }
@@ -291,7 +251,7 @@ RCT_EXPORT_METHOD(dismissKeyboard)
291
251
  }
292
252
  }
293
253
 
294
- -(UIColor*)reactViewAvgColor:(UIView*)rootView
254
+ -(UIColor*)reactViewAvgColor:(RCTRootView*)rootView
295
255
  {
296
256
  if (rootView.frame.size.width == 0 || rootView.frame.size.height == 0)
297
257
  {
@@ -336,7 +296,7 @@ RCT_EXPORT_METHOD(expandFullScreenForInput:(nonnull NSNumber*)inputFieldTag)
336
296
  helperView.keepInSuperviewOnResign = YES;
337
297
 
338
298
  RCTCustomKeyboardViewControllerTemp *customKeyboardViewController = (RCTCustomKeyboardViewControllerTemp*)helperView.inputViewController;
339
- UIView *rv = customKeyboardViewController.rootView;
299
+ RCTRootView *rv = customKeyboardViewController.rootView;
340
300
  UIInputView *inputView = helperView.inputViewController.inputView;
341
301
 
342
302
  _fullScreenWindow = [[UIWindow alloc] initWithFrame:[inputView.window convertRect:inputView.bounds fromView:inputView]];
@@ -410,7 +370,7 @@ RCT_EXPORT_METHOD(resetSizeForInput:(nonnull NSNumber*)inputFieldTag)
410
370
  completionHandler:^(BOOL completed)
411
371
  {
412
372
  RCTCustomKeyboardViewControllerTemp *customKeyboardViewController = (RCTCustomKeyboardViewControllerTemp*)helperView.inputViewController;
413
- UIView *rv = _fullScreenWindow.rootViewController.view;
373
+ RCTRootView *rv = (RCTRootView*)_fullScreenWindow.rootViewController.view;
414
374
 
415
375
  [UIView performWithoutAnimation:^{
416
376
 
@@ -428,8 +388,6 @@ RCT_EXPORT_METHOD(resetSizeForInput:(nonnull NSNumber*)inputFieldTag)
428
388
  }
429
389
  }
430
390
 
431
-
432
-
433
391
  #pragma mark - _WXInputHelperViewDelegateTemp methods
434
392
 
435
393
  -(void)_WXInputHelperViewResignFirstResponder:(UIView*)wxInputHelperView
@@ -439,8 +397,6 @@ RCT_EXPORT_METHOD(resetSizeForInput:(nonnull NSNumber*)inputFieldTag)
439
397
  [self sendEventWithName:RCTCustomInputControllerKeyboardResigendEventTemp body:nil];
440
398
  }
441
399
  self.customInputComponentPresented = NO;
442
-
443
-
444
400
  }
445
401
 
446
402
  @end
@@ -7,12 +7,18 @@
7
7
 
8
8
  #import <UIKit/UIKit.h>
9
9
 
10
+ #if __has_include(<React/RCTRootView.h>)
11
+ #import <React/RCTRootView.h>
12
+ #else
13
+ #import "RCTRootView.h"
14
+ #endif
15
+
10
16
  @interface RCTCustomKeyboardViewControllerTemp : UIInputViewController
11
17
 
12
18
  - (void) setAllowsSelfSizing:(BOOL)allowsSelfSizing;
13
19
  - (instancetype)initWithUsingSafeArea:(BOOL)useSafeArea;
14
20
 
15
21
  @property (nonatomic, strong) NSLayoutConstraint *heightConstraint;
16
- @property (nonatomic, strong) UIView *rootView;
22
+ @property (nonatomic, strong) RCTRootView *rootView;
17
23
 
18
24
  @end
@@ -57,7 +57,7 @@
57
57
  }
58
58
  }
59
59
 
60
- -(void)setRootView:(UIView*)rootView
60
+ -(void)setRootView:(RCTRootView*)rootView
61
61
  {
62
62
  if(_rootView != nil)
63
63
  {
@@ -11,12 +11,11 @@
11
11
  #import "UIResponder+FirstResponderTemp.h"
12
12
 
13
13
  #import <WebKit/WebKit.h>
14
-
14
+ #import <React/RCTScrollView.h>
15
15
  #import <React/RCTBridge.h>
16
16
  #import <React/RCTUIManager.h>
17
17
  #import <React/UIView+React.h>
18
18
  #import <React/RCTUIManagerUtils.h>
19
- #import <React/RCTSurfaceHostingView.h>
20
19
 
21
20
  #import <objc/runtime.h>
22
21
 
@@ -71,7 +70,7 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
71
70
 
72
71
  if (self)
73
72
  {
74
- [self addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew context:NULL];
73
+ [self addObserver:self forKeyPath:@"bounds" options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew context:NULL];
75
74
  _inputViewsMap = [NSMapTable weakToWeakObjectsMapTable];
76
75
  _deferedInitializeAccessoryViewsCount = 0;
77
76
 
@@ -94,21 +93,20 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
94
93
  return self;
95
94
  }
96
95
 
97
- -(UIView*)getRootView
96
+ -(RCTRootView*)getRootView
98
97
  {
99
98
  UIView *view = self;
100
99
  while (view.superview != nil)
101
100
  {
102
101
  view = view.superview;
103
- if ([view isKindOfClass:[RCTSurfaceHostingView class]]) {
102
+ if ([view isKindOfClass:[RCTRootView class]])
104
103
  break;
105
- }
106
104
  }
107
105
 
108
- if ([view isKindOfClass:[RCTSurfaceHostingView class]]) {
109
- return view;
106
+ if ([view isKindOfClass:[RCTRootView class]])
107
+ {
108
+ return (RCTRootView*)view;
110
109
  }
111
-
112
110
  return nil;
113
111
  }
114
112
 
@@ -171,20 +169,10 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
171
169
  [self updateBottomViewFrame];
172
170
  }
173
171
 
174
- - (UIScrollView*)extractUIScrollView:(UIView*)view
175
- {
176
- for (UIView* subview in view.subviews) {
177
- if ([subview isKindOfClass:[UIScrollView class]]) {
178
- return (UIScrollView*)subview;
179
- }
180
- }
181
-
182
- return nil;
183
- }
184
-
185
172
  - (void)initializeAccessoryViewsAndHandleInsets
186
173
  {
187
174
  NSArray<UIView*>* allSubviews = [self getBreadthFirstSubviewsForView:[self getRootView]];
175
+ NSMutableArray<RCTScrollView*>* rctScrollViewsArray = [NSMutableArray array];
188
176
 
189
177
  for (UIView* subview in allSubviews)
190
178
  {
@@ -192,30 +180,27 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
192
180
  {
193
181
  if(_scrollViewToManage == nil)
194
182
  {
195
- if ([NSStringFromClass([subview class]) isEqualToString:@"RCTScrollViewComponentView"]) {
196
- UIScrollView *scrollView = [self extractUIScrollView:subview];
197
-
198
- if ([scrollView isKindOfClass:[UIScrollView class]])
199
- {
200
- if(_requiresSameParentToManageScrollView && subview.superview == self.superview)
201
- {
202
- _scrollViewToManage = scrollView;
203
- }
204
- else if(!_requiresSameParentToManageScrollView)
205
- {
206
- _scrollViewToManage = scrollView;
207
- }
208
-
209
- if(_scrollViewToManage != nil)
210
- {
211
- _scrollIsInverted = CGAffineTransformEqualToTransform(subview.superview.transform, CGAffineTransformMakeScale(1, -1));
212
- }
213
- }
183
+ if(_requiresSameParentToManageScrollView && [subview isKindOfClass:[RCTScrollView class]] && subview.superview == self.superview)
184
+ {
185
+ _scrollViewToManage = ((RCTScrollView*)subview).scrollView;
186
+ }
187
+ else if(!_requiresSameParentToManageScrollView && [subview isKindOfClass:[UIScrollView class]])
188
+ {
189
+ _scrollViewToManage = (UIScrollView*)subview;
190
+ }
191
+
192
+ if(_scrollViewToManage != nil)
193
+ {
194
+ _scrollIsInverted = CGAffineTransformEqualToTransform(_scrollViewToManage.superview.transform, CGAffineTransformMakeScale(1, -1));
214
195
  }
215
196
  }
197
+
198
+ if([subview isKindOfClass:[RCTScrollView class]])
199
+ {
200
+ [rctScrollViewsArray addObject:(RCTScrollView*)subview];
201
+ }
216
202
  }
217
203
 
218
-
219
204
  if ([subview isKindOfClass:NSClassFromString(@"RCTTextField")])
220
205
  {
221
206
  UITextField *textField = nil;
@@ -238,30 +223,17 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
238
223
  {
239
224
  [self setupTextView:[subview valueForKey:@"_backedTextInputView"]];
240
225
  }
241
- else if ([subview isKindOfClass:NSClassFromString(@"RCTTextView")] ||
242
- [subview isKindOfClass:NSClassFromString(@"RCTTextInputComponentView")])
226
+ else if ([subview isKindOfClass:NSClassFromString(@"RCTTextView")])
243
227
  {
244
-
245
228
  UITextView *textView = nil;
246
-
247
- if ([subview isKindOfClass:NSClassFromString(@"RCTTextInputComponentView")]) {
248
- Ivar textFieldIvar = class_getInstanceVariable([subview class], "_backedTextInputView");
249
- if (textFieldIvar != NULL)
250
- {
251
- textView = [subview valueForKey:@"_backedTextInputView"];
252
- }
253
-
254
- } else {
255
-
256
- Ivar backedTextInputIvar = class_getInstanceVariable([subview class], "_backedTextInput");
257
- if (backedTextInputIvar != NULL)
258
- {
259
- textView = [subview valueForKey:@"_backedTextInput"];
260
- }
261
- else if([subview isKindOfClass:[UITextView class]])
262
- {
263
- textView = (UITextView*)subview;
264
- }
229
+ Ivar backedTextInputIvar = class_getInstanceVariable([subview class], "_backedTextInput");
230
+ if (backedTextInputIvar != NULL)
231
+ {
232
+ textView = [subview valueForKey:@"_backedTextInput"];
233
+ }
234
+ else if([subview isKindOfClass:[UITextView class]])
235
+ {
236
+ textView = (UITextView*)subview;
265
237
  }
266
238
  [self setupTextView:textView];
267
239
  }
@@ -275,11 +247,13 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
275
247
  }
276
248
  }
277
249
 
278
- if(_scrollViewToManage != nil)
250
+ for (RCTScrollView *scrollView in rctScrollViewsArray)
279
251
  {
280
- if(_scrollViewToManage.delegate == nil)
252
+ if(scrollView.scrollView == _scrollViewToManage)
281
253
  {
282
- _scrollViewToManage.delegate = self;
254
+ [scrollView removeScrollListener:self];
255
+ [scrollView addScrollListener:self];
256
+ break;
283
257
  }
284
258
  }
285
259
 
@@ -296,8 +270,6 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
296
270
  _originalHeight = _ObservingInputAccessoryViewTemp.height;
297
271
 
298
272
  [self addBottomViewIfNecessary];
299
-
300
- [self ensureLegacyViewManagerTouchDelegation];
301
273
  }
302
274
 
303
275
  - (void)setupTextView:(UITextView*)textView
@@ -366,12 +338,12 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
366
338
 
367
339
  -(void)dealloc
368
340
  {
369
- [self removeObserver:self forKeyPath:@"frame"];
341
+ [self removeObserver:self forKeyPath:@"bounds"];
370
342
  }
371
343
 
372
344
  - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
373
345
  {
374
- _ObservingInputAccessoryViewTemp.height = self.frame.size.height;
346
+ _ObservingInputAccessoryViewTemp.height = self.bounds.size.height;
375
347
  }
376
348
 
377
349
  - (void)ObservingInputAccessoryViewTempKeyboardWillDisappear:(ObservingInputAccessoryViewTemp *)ObservingInputAccessoryViewTemp
@@ -579,48 +551,9 @@ typedef NS_ENUM(NSUInteger, KeyboardTrackingScrollBehavior) {
579
551
  [self updateBottomViewFrame];
580
552
 
581
553
  self.transform = CGAffineTransformMakeTranslation(0, accessoryTranslation);
582
-
583
554
  [self _updateScrollViewInsets];
584
555
  }
585
556
 
586
- - (void)ensureLegacyViewManagerTouchDelegation {
587
- UIView *superview = self.superview;
588
- if (superview) {
589
- if ([NSStringFromClass([superview class]) isEqualToString:@"RCTLegacyViewManagerInteropComponentView"]) {
590
- [self changeLegacyViewManagerHitTestDelegation:superview];
591
- }
592
- }
593
- }
594
-
595
- - (void)changeLegacyViewManagerHitTestDelegation:(UIView *)wrapperView {
596
- static dispatch_once_t onceToken;
597
- static IMP originalHitTestIMP = NULL;
598
-
599
- dispatch_once(&onceToken, ^{
600
- Class wrapperClass = [wrapperView class];
601
-
602
- Method originalMethod = class_getInstanceMethod(wrapperClass, @selector(hitTest:withEvent:));
603
- if (originalMethod) {
604
- originalHitTestIMP = method_getImplementation(originalMethod);
605
-
606
- IMP customHitTest = imp_implementationWithBlock(^UIView*(id self, CGPoint point, UIEvent *event) {
607
- UIView *subview = [self subviews].firstObject;
608
- if (subview &&
609
- [subview isKindOfClass:[KeyboardTrackingViewTemp class]]) {
610
- CGPoint convertedPoint = [self convertPoint:point toView:subview];
611
- UIView *result = [subview hitTest:convertedPoint withEvent:event];
612
- return result;
613
- }
614
-
615
- UIView* (*originalFunc)(id, SEL, CGPoint, UIEvent*) = (void*)originalHitTestIMP;
616
- return originalFunc(self, @selector(hitTest:withEvent:), point, event);
617
- });
618
-
619
- method_setImplementation(originalMethod, customHitTest);
620
- }
621
- });
622
- }
623
-
624
557
  - (void)performScrollToFocusedInput
625
558
  {
626
559
  if (_scrollViewToManage != nil && self.scrollToFocusedInput)
@@ -802,4 +735,3 @@ RCT_EXPORT_METHOD(scrollToStart:(nonnull NSNumber *)reactTag)
802
735
  }
803
736
 
804
737
  @end
805
-
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uilib-native",
3
- "version": "5.0.0-snapshot.7360",
3
+ "version": "4.5.2",
4
4
  "homepage": "https://github.com/wix/react-native-ui-lib",
5
5
  "description": "uilib native components (separated from js components)",
6
6
  "main": "components/index",
@@ -17,7 +17,7 @@
17
17
  "shell-utils": "^1.0.10"
18
18
  },
19
19
  "peerDependencies": {
20
- "react": ">=18.3.1",
21
- "react-native": ">=0.77.3"
20
+ "react": ">=17.0.1",
21
+ "react-native": ">=0.64.1"
22
22
  }
23
23
  }
@@ -10,9 +10,11 @@ module.exports = {
10
10
  sourceDir: './android/',
11
11
  packageImportPath: `import com.wix.reactnativeuilib.dynamicfont.DynamicFontPackage;
12
12
  import com.wix.reactnativeuilib.highlighterview.HighlighterViewPackage;
13
- import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage;`,
13
+ import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage;
14
+ import com.wix.reactnativeuilib.textinput.TextInputDelKeyHandlerPackage;`,
14
15
  packageInstance: `new DynamicFontPackage(),
15
16
  new HighlighterViewPackage(),
17
+ new TextInputDelKeyHandlerPackage(),
16
18
  new KeyboardInputPackage(getApplication())`
17
19
  }
18
20
  }
package/metro.config.js CHANGED
@@ -5,9 +5,9 @@ const {assetExts, sourceExts} = defaultConfig.resolver;
5
5
 
6
6
  /**
7
7
  * Metro configuration
8
- * https://reactnative.dev/docs/metro
8
+ * https://facebook.github.io/metro/docs/configuration
9
9
  *
10
- * @type {import('@react-native/metro-config').MetroConfig}
10
+ * @type {import('metro-config').MetroConfig}
11
11
  */
12
12
 
13
13
  const config = {