react-native-ios-translate-sheet 1.0.0 → 1.1.0

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 (33) hide show
  1. package/ios/IOSTranslateSheet-Bridging-Header.h +4 -0
  2. package/ios/IOSTranslateSheet.swift +16 -16
  3. package/ios/IOSTranslateSheetProvider.swift +60 -57
  4. package/ios/IOSTranslateSheetView.h +2 -9
  5. package/ios/IOSTranslateSheetView.mm +31 -38
  6. package/ios/IOSTranslateSheetViewManager.mm +22 -4
  7. package/lib/commonjs/IOSTranslateSheetViewNativeComponent.js.map +1 -1
  8. package/lib/commonjs/TranslateContext.js +55 -0
  9. package/lib/commonjs/TranslateContext.js.map +1 -0
  10. package/lib/commonjs/index.js +4 -4
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/useTranslate.js +8 -25
  13. package/lib/commonjs/useTranslate.js.map +1 -1
  14. package/lib/module/IOSTranslateSheetViewNativeComponent.js.map +1 -1
  15. package/lib/module/TranslateContext.js +48 -0
  16. package/lib/module/TranslateContext.js.map +1 -0
  17. package/lib/module/index.js +1 -1
  18. package/lib/module/index.js.map +1 -1
  19. package/lib/module/useTranslate.js +6 -22
  20. package/lib/module/useTranslate.js.map +1 -1
  21. package/lib/typescript/IOSTranslateSheetViewNativeComponent.d.ts +5 -5
  22. package/lib/typescript/IOSTranslateSheetViewNativeComponent.d.ts.map +1 -1
  23. package/lib/typescript/TranslateContext.d.ts +10 -0
  24. package/lib/typescript/TranslateContext.d.ts.map +1 -0
  25. package/lib/typescript/index.d.ts +1 -1
  26. package/lib/typescript/index.d.ts.map +1 -1
  27. package/lib/typescript/useTranslate.d.ts +4 -2
  28. package/lib/typescript/useTranslate.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/src/IOSTranslateSheetViewNativeComponent.ts +7 -4
  31. package/src/TranslateContext.tsx +53 -0
  32. package/src/index.tsx +1 -1
  33. package/src/useTranslate.tsx +8 -25
@@ -0,0 +1,4 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTViewManager.h>
3
+ #import <React/RCTEventEmitter.h>
4
+ #import <React/RCTComponent.h>
@@ -2,25 +2,25 @@ import SwiftUI
2
2
  import Translation
3
3
 
4
4
  class Props: ObservableObject {
5
- @Published var text: String = ""
6
- @Published var isPresented: Bool = false
7
- @Published var onHide: () -> Void = {}
8
- @Published var opacity: Double = 0.0
5
+ @Published var text: String = ""
6
+ @Published var isPresented: Bool = false
7
+ @Published var onHide: () -> Void = {}
8
+ @Published var opacity: Double = 0.0
9
9
  }
10
10
 
11
11
  struct IOSTranslateSheet: View {
12
- @ObservedObject var props: Props
13
-
14
- var body: some View {
15
- if #available(iOS 17.4, *) {
16
- Color.clear
17
- .frame(maxWidth: .infinity, maxHeight: .infinity)
18
- .translationPresentation(isPresented: $props.isPresented, text: props.text)
19
- .onChange(of: props.isPresented) { oldValue, newValue in
20
- if oldValue == true && newValue == false {
21
- props.onHide()
12
+ @ObservedObject var props: Props
13
+
14
+ var body: some View {
15
+ if #available(iOS 17.4, *) {
16
+ Color.clear
17
+ .frame(maxWidth: .infinity, maxHeight: .infinity)
18
+ .translationPresentation(isPresented: $props.isPresented, text: props.text)
19
+ .onChange(of: props.isPresented) { oldValue, newValue in
20
+ if oldValue == true && newValue == false {
21
+ props.onHide()
22
+ }
22
23
  }
23
- }
24
+ }
24
25
  }
25
- }
26
26
  }
@@ -2,71 +2,74 @@ import UIKit
2
2
  import React
3
3
  import SwiftUI
4
4
 
5
- @objc public class IOSTranslateSheetProvider: UIView {
6
- private var props = Props()
7
- private var hostingController: UIHostingController<IOSTranslateSheet>?
8
-
9
- @objc public var text: String = "" {
10
- didSet {
11
- props.text = text
5
+ extension UIView {
6
+ func pinEdges(to view: UIView) {
7
+ translatesAutoresizingMaskIntoConstraints = false
8
+ NSLayoutConstraint.activate([
9
+ leadingAnchor.constraint(equalTo: view.leadingAnchor),
10
+ trailingAnchor.constraint(equalTo: view.trailingAnchor),
11
+ topAnchor.constraint(equalTo: view.topAnchor),
12
+ bottomAnchor.constraint(equalTo: view.bottomAnchor)
13
+ ])
12
14
  }
13
- }
15
+ }
14
16
 
15
- @objc public var isPresented: Bool = false {
16
- didSet {
17
- props.isPresented = isPresented
18
- hostingController?.view.isHidden = !isPresented
19
- }
20
- }
17
+ public typealias RCTBubblingEventBlock = @convention(block) (_ body: [AnyHashable: Any]?) -> Void
21
18
 
22
- @objc public var opacity: Double = 0.0 {
23
- didSet {
24
- props.opacity = opacity
19
+ @objc public class IOSTranslateSheetProvider: UIView {
20
+ private var props = Props()
21
+ private var hostingController: UIHostingController<IOSTranslateSheet>?
22
+
23
+ @objc public var text: String = "" {
24
+ didSet {
25
+ props.text = text
26
+ }
25
27
  }
26
- }
27
-
28
- @objc public var onHideCallback: (() -> Void)?
29
-
30
- public override func layoutSubviews() {
31
- super.layoutSubviews()
32
- setupView()
28
+
29
+ @objc public var isPresented: Bool = false {
30
+ didSet {
31
+ props.isPresented = isPresented
32
+ hostingController?.view.isHidden = !isPresented
33
+ }
33
34
  }
34
-
35
- private func setupView() {
36
- if self.hostingController != nil {
37
- return
35
+
36
+ @objc public var opacity: Double = 0.0 {
37
+ didSet {
38
+ props.opacity = opacity
39
+ }
38
40
  }
39
-
40
- props.onHide = { [weak self] in
41
- self?.onHideCallback?()
42
- self?.hostingController?.view.isHidden = true
41
+
42
+ @objc public var onHide: RCTBubblingEventBlock? {
43
+ didSet {
44
+ props.onHide = { [weak self] in
45
+ self?.onHide?([:])
46
+ }
47
+ }
43
48
  }
44
49
 
45
- self.hostingController = UIHostingController(
46
- rootView: IOSTranslateSheet(
47
- props: props
48
- )
49
- )
50
+ public override func layoutSubviews() {
51
+ super.layoutSubviews()
52
+ setupView()
53
+ }
50
54
 
51
- if let hostingController = self.hostingController {
52
- hostingController.view.isHidden = !isPresented
53
- hostingController.view.backgroundColor = UIColor(white: 0.0, alpha: opacity)
54
-
55
- addSubview(hostingController.view)
56
- hostingController.view.translatesAutoresizingMaskIntoConstraints = false
57
- hostingController.view.pinEdges(to: self)
58
- reactAddController(toClosestParent: hostingController)
55
+ private func setupView() {
56
+ if self.hostingController != nil {
57
+ return
58
+ }
59
+
60
+ self.hostingController = UIHostingController(
61
+ rootView: IOSTranslateSheet(
62
+ props: props
63
+ )
64
+ )
65
+
66
+ if let hostingController = self.hostingController {
67
+ hostingController.view.isHidden = !isPresented
68
+ hostingController.view.backgroundColor = UIColor(white: 0.0, alpha: opacity)
69
+
70
+ addSubview(hostingController.view)
71
+ hostingController.view.pinEdges(to: self)
72
+ reactAddController(toClosestParent: hostingController)
73
+ }
59
74
  }
60
- }
61
- }
62
-
63
- extension UIView {
64
- func pinEdges(to other: UIView) {
65
- NSLayoutConstraint.activate([
66
- leadingAnchor.constraint(equalTo: other.leadingAnchor),
67
- trailingAnchor.constraint(equalTo: other.trailingAnchor),
68
- topAnchor.constraint(equalTo: other.topAnchor),
69
- bottomAnchor.constraint(equalTo: other.bottomAnchor)
70
- ])
71
- }
72
75
  }
@@ -1,18 +1,11 @@
1
- #ifdef __cplusplus
2
-
1
+ #ifdef RCT_NEW_ARCH_ENABLED
3
2
  #import <React/RCTViewComponentView.h>
4
3
  #import <UIKit/UIKit.h>
5
4
 
6
- #ifndef IOSTranslateSheetViewNativeComponent_h
7
- #define IOSTranslateSheetViewNativeComponent_h
8
-
9
5
  NS_ASSUME_NONNULL_BEGIN
10
6
 
11
7
  @interface IOSTranslateSheetView : RCTViewComponentView
12
8
  @end
13
9
 
14
10
  NS_ASSUME_NONNULL_END
15
-
16
- #endif /* IOSTranslateSheetViewNativeComponent_h */
17
-
18
- #endif /* __cplusplus */
11
+ #endif
@@ -1,11 +1,7 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
1
2
  #import "IOSTranslateSheetView.h"
2
-
3
- #import "generated/RNIOSTranslateSheetViewSpec/ComponentDescriptors.h"
4
- #import "generated/RNIOSTranslateSheetViewSpec/EventEmitters.h"
5
- #import "generated/RNIOSTranslateSheetViewSpec/Props.h"
6
- #import "generated/RNIOSTranslateSheetViewSpec/RCTComponentViewHelpers.h"
7
-
8
- #import "RCTFabricComponentsPlugins.h"
3
+ #import <React/RCTConvert.h>
4
+ #import <React/RCTFabricComponentsPlugins.h>
9
5
 
10
6
  #if __has_include("IOSTranslateSheet/IOSTranslateSheet-Swift.h")
11
7
  #import "IOSTranslateSheet/IOSTranslateSheet-Swift.h"
@@ -13,14 +9,18 @@
13
9
  #import "IOSTranslateSheet-Swift.h"
14
10
  #endif
15
11
 
12
+ #import "generated/RNIOSTranslateSheetViewSpec/ComponentDescriptors.h"
13
+ #import "generated/RNIOSTranslateSheetViewSpec/EventEmitters.h"
14
+ #import "generated/RNIOSTranslateSheetViewSpec/Props.h"
15
+ #import "generated/RNIOSTranslateSheetViewSpec/RCTComponentViewHelpers.h"
16
+
16
17
  using namespace facebook::react;
17
18
 
18
19
  @interface IOSTranslateSheetView () <RCTIOSTranslateSheetViewViewProtocol>
19
-
20
20
  @end
21
21
 
22
22
  @implementation IOSTranslateSheetView {
23
- IOSTranslateSheetProvider * _view;
23
+ IOSTranslateSheetProvider *_view;
24
24
  }
25
25
 
26
26
  + (ComponentDescriptorProvider)componentDescriptorProvider
@@ -30,54 +30,47 @@ using namespace facebook::react;
30
30
 
31
31
  - (instancetype)initWithFrame:(CGRect)frame
32
32
  {
33
- if (self = [super initWithFrame:frame]) {
34
- static const auto defaultProps = std::make_shared<const IOSTranslateSheetViewProps>();
35
- _props = defaultProps;
36
-
37
- _view = [[IOSTranslateSheetProvider alloc] init];
38
-
39
- __weak __typeof(self) weakSelf = self;
40
- _view.onHideCallback = ^{
41
- __strong __typeof(weakSelf) strongSelf = weakSelf;
42
- if (strongSelf) {
43
- // Emit the onHide event
44
- if (strongSelf->_eventEmitter) {
33
+ if (self = [super initWithFrame:frame]) {
34
+ static const auto defaultProps = std::make_shared<const IOSTranslateSheetViewProps>();
35
+ _props = defaultProps;
36
+ _view = [[IOSTranslateSheetProvider alloc] init];
37
+
38
+ __weak __typeof__(self) weakSelf = self;
39
+ _view.onHide = ^(NSDictionary *_) {
40
+ __typeof__(self) strongSelf = weakSelf;
41
+ if (strongSelf && strongSelf->_eventEmitter) {
45
42
  std::dynamic_pointer_cast<const IOSTranslateSheetViewEventEmitter>(strongSelf->_eventEmitter)
46
43
  ->onHide({});
47
44
  }
48
- }
49
- };
50
-
51
- self.contentView = _view;
52
- }
53
-
54
- return self;
45
+ };
46
+
47
+ self.contentView = _view;
48
+ }
49
+ return self;
55
50
  }
56
51
 
57
52
  - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps
58
53
  {
59
- const auto &oldViewProps = *std::static_pointer_cast<IOSTranslateSheetViewProps const>(_props);
60
- const auto &newViewProps = *std::static_pointer_cast<IOSTranslateSheetViewProps const>(props);
54
+ const auto &oldViewProps = *std::static_pointer_cast<const IOSTranslateSheetViewProps>(_props);
55
+ const auto &newViewProps = *std::static_pointer_cast<const IOSTranslateSheetViewProps>(props);
61
56
 
62
57
  if (oldViewProps.text != newViewProps.text) {
63
- NSString *text = [[NSString alloc] initWithUTF8String: newViewProps.text.c_str()];
64
- [_view setText:text];
58
+ _view.text = [[NSString alloc] initWithUTF8String:newViewProps.text.c_str()];
65
59
  }
66
-
67
60
  if (oldViewProps.isPresented != newViewProps.isPresented) {
68
- [_view setIsPresented:newViewProps.isPresented];
61
+ _view.isPresented = newViewProps.isPresented;
69
62
  }
70
-
71
63
  if (oldViewProps.opacity != newViewProps.opacity) {
72
- [_view setOpacity:newViewProps.opacity];
64
+ _view.opacity = newViewProps.opacity;
73
65
  }
74
66
 
75
67
  [super updateProps:props oldProps:oldProps];
76
68
  }
77
69
 
70
+ @end
71
+
78
72
  Class<RCTComponentViewProtocol> IOSTranslateSheetViewCls(void)
79
73
  {
80
74
  return IOSTranslateSheetView.class;
81
75
  }
82
-
83
- @end
76
+ #endif
@@ -1,7 +1,14 @@
1
1
  #import <React/RCTViewManager.h>
2
2
  #import <React/RCTUIManager.h>
3
+ #import <React/RCTComponent.h>
3
4
  #import "RCTBridge.h"
4
5
 
6
+ #ifdef RCT_NEW_ARCH_ENABLED
7
+ #import <React/RCTConvert.h>
8
+ #import <ReactCommon/RCTTurboModule.h>
9
+ #import "RCTFabricComponentsPlugins.h"
10
+ #endif
11
+
5
12
  #if __has_include("IOSTranslateSheet/IOSTranslateSheet-Swift.h")
6
13
  #import "IOSTranslateSheet/IOSTranslateSheet-Swift.h"
7
14
  #else
@@ -15,11 +22,22 @@
15
22
 
16
23
  RCT_EXPORT_MODULE(IOSTranslateSheetView)
17
24
 
18
- - (IOSTranslateSheetProvider *)view
25
+ - (UIView *)view
19
26
  {
20
- return [[IOSTranslateSheetProvider alloc] init];
27
+ IOSTranslateSheetProvider *view = [[IOSTranslateSheetProvider alloc] init];
28
+ return view;
21
29
  }
22
30
 
23
- RCT_EXPORT_VIEW_PROPERTY(color, NSString)
31
+ RCT_EXPORT_VIEW_PROPERTY(text, NSString)
32
+ RCT_EXPORT_VIEW_PROPERTY(isPresented, BOOL)
33
+ RCT_EXPORT_VIEW_PROPERTY(opacity, double)
34
+ RCT_EXPORT_VIEW_PROPERTY(onHide, RCTDirectEventBlock)
24
35
 
25
- @end
36
+ #ifdef RCT_NEW_ARCH_ENABLED
37
+ + (BOOL)requiresMainQueueSetup
38
+ {
39
+ return YES;
40
+ }
41
+ #endif
42
+
43
+ @end
@@ -1 +1 @@
1
- {"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sourceRoot":"../../src","sources":["IOSTranslateSheetViewNativeComponent.ts"],"mappings":";;;;;;AAKA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAS9E,IAAAG,+BAAsB,EAAc,uBAAuB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sourceRoot":"../../src","sources":["IOSTranslateSheetViewNativeComponent.ts"],"mappings":";;;;;;AAMA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAS9E,IAAAG,+BAAsB,EACnC,uBACF,CAAC","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useIOSTranslateSheet = exports.TranslateProvider = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _IOSTranslateSheetViewNativeComponent = _interopRequireDefault(require("./IOSTranslateSheetViewNativeComponent"));
10
+ var _useTranslate = require("./useTranslate");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const TranslateContext = /*#__PURE__*/(0, _react.createContext)(null);
14
+ const TranslateProvider = ({
15
+ children
16
+ }) => {
17
+ const {
18
+ presentIOSTranslateSheet,
19
+ isIOSTranslateSheetPresented,
20
+ text,
21
+ opacity,
22
+ hideTranslateSheet
23
+ } = (0, _useTranslate.useInternalTranslateSheet)();
24
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(TranslateContext.Provider, {
25
+ value: {
26
+ presentIOSTranslateSheet
27
+ },
28
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IOSTranslateSheetViewNativeComponent.default, {
29
+ text: text,
30
+ isPresented: isIOSTranslateSheetPresented,
31
+ onHide: hideTranslateSheet,
32
+ opacity: opacity,
33
+ style: styles.translateView
34
+ }), children]
35
+ });
36
+ };
37
+ exports.TranslateProvider = TranslateProvider;
38
+ const useIOSTranslateSheet = () => {
39
+ const context = (0, _react.useContext)(TranslateContext);
40
+ if (!context) {
41
+ throw new Error("useTranslateSheet must be used within a TranslateProvider");
42
+ }
43
+ return context;
44
+ };
45
+ exports.useIOSTranslateSheet = useIOSTranslateSheet;
46
+ const styles = _reactNative.StyleSheet.create({
47
+ translateView: {
48
+ position: "absolute",
49
+ top: 0,
50
+ left: 0,
51
+ right: 0,
52
+ bottom: 0
53
+ }
54
+ });
55
+ //# sourceMappingURL=TranslateContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_IOSTranslateSheetViewNativeComponent","_interopRequireDefault","_useTranslate","_jsxRuntime","e","__esModule","default","TranslateContext","createContext","TranslateProvider","children","presentIOSTranslateSheet","isIOSTranslateSheetPresented","text","opacity","hideTranslateSheet","useInternalTranslateSheet","jsxs","Provider","value","jsx","isPresented","onHide","style","styles","translateView","exports","useIOSTranslateSheet","context","useContext","Error","StyleSheet","create","position","top","left","right","bottom"],"sourceRoot":"../../src","sources":["TranslateContext.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,qCAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AAA2D,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAM3D,MAAMG,gBAAgB,gBAAG,IAAAC,oBAAa,EAA8B,IAAI,CAAC;AAElE,MAAMC,iBAAiB,GAAGA,CAAC;EAAEC;AAAkC,CAAC,KAAK;EAC1E,MAAM;IACJC,wBAAwB;IACxBC,4BAA4B;IAC5BC,IAAI;IACJC,OAAO;IACPC;EACF,CAAC,GAAG,IAAAC,uCAAyB,EAAC,CAAC;EAE/B,oBACE,IAAAb,WAAA,CAAAc,IAAA,EAACV,gBAAgB,CAACW,QAAQ;IAACC,KAAK,EAAE;MAAER;IAAyB,CAAE;IAAAD,QAAA,gBAC7D,IAAAP,WAAA,CAAAiB,GAAA,EAACpB,qCAAA,CAAAM,OAAiB;MAChBO,IAAI,EAAEA,IAAK;MACXQ,WAAW,EAAET,4BAA6B;MAC1CU,MAAM,EAAEP,kBAAmB;MAC3BD,OAAO,EAAEA,OAAQ;MACjBS,KAAK,EAAEC,MAAM,CAACC;IAAc,CAC7B,CAAC,EACDf,QAAQ;EAAA,CACgB,CAAC;AAEhC,CAAC;AAACgB,OAAA,CAAAjB,iBAAA,GAAAA,iBAAA;AAEK,MAAMkB,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,OAAO,GAAG,IAAAC,iBAAU,EAACtB,gBAAgB,CAAC;EAC5C,IAAI,CAACqB,OAAO,EAAE;IACZ,MAAM,IAAIE,KAAK,CACb,2DACF,CAAC;EACH;EACA,OAAOF,OAAO;AAChB,CAAC;AAACF,OAAA,CAAAC,oBAAA,GAAAA,oBAAA;AAEF,MAAMH,MAAM,GAAGO,uBAAU,CAACC,MAAM,CAAC;EAC/BP,aAAa,EAAE;IACbQ,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
@@ -24,15 +24,15 @@ Object.keys(_IOSTranslateSheetViewNativeComponent).forEach(function (key) {
24
24
  }
25
25
  });
26
26
  });
27
- var _useTranslate = require("./useTranslate");
28
- Object.keys(_useTranslate).forEach(function (key) {
27
+ var _TranslateContext = require("./TranslateContext");
28
+ Object.keys(_TranslateContext).forEach(function (key) {
29
29
  if (key === "default" || key === "__esModule") return;
30
30
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
- if (key in exports && exports[key] === _useTranslate[key]) return;
31
+ if (key in exports && exports[key] === _TranslateContext[key]) return;
32
32
  Object.defineProperty(exports, key, {
33
33
  enumerable: true,
34
34
  get: function () {
35
- return _useTranslate[key];
35
+ return _TranslateContext[key];
36
36
  }
37
37
  });
38
38
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_IOSTranslateSheetViewNativeComponent","_interopRequireWildcard","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useTranslate","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,qCAAA,GAAAC,uBAAA,CAAAC,OAAA;AACAC,MAAA,CAAAC,IAAA,CAAAJ,qCAAA,EAAAK,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAN,qCAAA,CAAAM,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAd,qCAAA,CAAAM,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAA+B,SAAAU,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAhB,wBAAAgB,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAN,GAAA,CAAAG,CAAA,OAAAO,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAvB,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAAwB,wBAAA,WAAAC,CAAA,IAAAX,CAAA,oBAAAW,CAAA,OAAApB,cAAA,CAAAC,IAAA,CAAAQ,CAAA,EAAAW,CAAA,SAAAC,CAAA,GAAAH,CAAA,GAAAvB,MAAA,CAAAwB,wBAAA,CAAAV,CAAA,EAAAW,CAAA,UAAAC,CAAA,KAAAA,CAAA,CAAAf,GAAA,IAAAe,CAAA,CAAAC,GAAA,IAAA3B,MAAA,CAAAS,cAAA,CAAAY,CAAA,EAAAI,CAAA,EAAAC,CAAA,IAAAL,CAAA,CAAAI,CAAA,IAAAX,CAAA,CAAAW,CAAA,YAAAJ,CAAA,CAAAF,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAU,GAAA,CAAAb,CAAA,EAAAO,CAAA,GAAAA,CAAA","ignoreList":[]}
1
+ {"version":3,"names":["_IOSTranslateSheetViewNativeComponent","_interopRequireWildcard","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_TranslateContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,qCAAA,GAAAC,uBAAA,CAAAC,OAAA;AACAC,MAAA,CAAAC,IAAA,CAAAJ,qCAAA,EAAAK,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAN,qCAAA,CAAAM,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAd,qCAAA,CAAAM,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,iBAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,iBAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,iBAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,iBAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAAmC,SAAAU,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAhB,wBAAAgB,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAN,GAAA,CAAAG,CAAA,OAAAO,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAvB,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAAwB,wBAAA,WAAAC,CAAA,IAAAX,CAAA,oBAAAW,CAAA,OAAApB,cAAA,CAAAC,IAAA,CAAAQ,CAAA,EAAAW,CAAA,SAAAC,CAAA,GAAAH,CAAA,GAAAvB,MAAA,CAAAwB,wBAAA,CAAAV,CAAA,EAAAW,CAAA,UAAAC,CAAA,KAAAA,CAAA,CAAAf,GAAA,IAAAe,CAAA,CAAAC,GAAA,IAAA3B,MAAA,CAAAS,cAAA,CAAAY,CAAA,EAAAI,CAAA,EAAAC,CAAA,IAAAL,CAAA,CAAAI,CAAA,IAAAX,CAAA,CAAAW,CAAA,YAAAJ,CAAA,CAAAF,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAU,GAAA,CAAAb,CAAA,EAAAO,CAAA,GAAAA,CAAA","ignoreList":[]}
@@ -3,13 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useIOSTranslateSheet = void 0;
6
+ exports.useInternalTranslateSheet = void 0;
7
7
  var _react = require("react");
8
- var _reactNative = require("react-native");
9
- var _IOSTranslateSheetViewNativeComponent = _interopRequireDefault(require("./IOSTranslateSheetViewNativeComponent"));
10
- var _jsxRuntime = require("react/jsx-runtime");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- const useIOSTranslateSheet = () => {
8
+ const useInternalTranslateSheet = () => {
13
9
  const [isIOSTranslateSheetPresented, setIsIOSTranslateSheetPresented] = (0, _react.useState)(false);
14
10
  const [text, setText] = (0, _react.useState)("");
15
11
  const [opacity, setOpacity] = (0, _react.useState)(0);
@@ -18,29 +14,16 @@ const useIOSTranslateSheet = () => {
18
14
  setText(_text);
19
15
  setOpacity(_opacity ?? 0);
20
16
  };
21
- const IOSTranslateSheetView = () => {
22
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_IOSTranslateSheetViewNativeComponent.default, {
23
- text: text,
24
- isPresented: isIOSTranslateSheetPresented,
25
- onHide: () => setIsIOSTranslateSheetPresented(false),
26
- style: styles.translateView,
27
- opacity: opacity
28
- });
17
+ const hideTranslateSheet = () => {
18
+ setIsIOSTranslateSheetPresented(false);
29
19
  };
30
20
  return {
31
21
  isIOSTranslateSheetPresented,
32
22
  presentIOSTranslateSheet,
33
- IOSTranslateSheetView
23
+ hideTranslateSheet,
24
+ text,
25
+ opacity
34
26
  };
35
27
  };
36
- exports.useIOSTranslateSheet = useIOSTranslateSheet;
37
- const styles = _reactNative.StyleSheet.create({
38
- translateView: {
39
- position: "absolute",
40
- top: 0,
41
- left: 0,
42
- right: 0,
43
- bottom: 0
44
- }
45
- });
28
+ exports.useInternalTranslateSheet = useInternalTranslateSheet;
46
29
  //# sourceMappingURL=useTranslate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_IOSTranslateSheetViewNativeComponent","_interopRequireDefault","_jsxRuntime","e","__esModule","default","useIOSTranslateSheet","isIOSTranslateSheetPresented","setIsIOSTranslateSheetPresented","useState","text","setText","opacity","setOpacity","presentIOSTranslateSheet","_text","_opacity","IOSTranslateSheetView","jsx","isPresented","onHide","style","styles","translateView","exports","StyleSheet","create","position","top","left","right","bottom"],"sourceRoot":"../../src","sources":["useTranslate.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,qCAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAuE,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhE,MAAMG,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAM,CAACC,4BAA4B,EAAEC,+BAA+B,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACvF,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAF,eAAQ,EAAC,EAAE,CAAC;EACpC,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAJ,eAAQ,EAAC,CAAC,CAAC;EAEzC,MAAMK,wBAAwB,GAAGA,CAACC,KAAa,EAAEC,QAAiB,KAAK;IACrER,+BAA+B,CAAC,IAAI,CAAC;IACrCG,OAAO,CAACI,KAAK,CAAC;IACdF,UAAU,CAACG,QAAQ,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;IAClC,oBACE,IAAAf,WAAA,CAAAgB,GAAA,EAAClB,qCAAA,CAAAK,OAAiB;MAChBK,IAAI,EAAEA,IAAK;MACXS,WAAW,EAAEZ,4BAA6B;MAC1Ca,MAAM,EAAEA,CAAA,KAAMZ,+BAA+B,CAAC,KAAK,CAAE;MACrDa,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BX,OAAO,EAAEA;IAAQ,CAClB,CAAC;EAEN,CAAC;EAED,OAAO;IACLL,4BAA4B;IAC5BO,wBAAwB;IACxBG;EACF,CAAC;AACH,CAAC;AAACO,OAAA,CAAAlB,oBAAA,GAAAA,oBAAA;AAEF,MAAMgB,MAAM,GAAGG,uBAAU,CAACC,MAAM,CAAC;EAC/BH,aAAa,EAAE;IACbI,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","useInternalTranslateSheet","isIOSTranslateSheetPresented","setIsIOSTranslateSheetPresented","useState","text","setText","opacity","setOpacity","presentIOSTranslateSheet","_text","_opacity","hideTranslateSheet","exports"],"sourceRoot":"../../src","sources":["useTranslate.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,yBAAyB,GAAGA,CAAA,KAAM;EAC7C,MAAM,CAACC,4BAA4B,EAAEC,+BAA+B,CAAC,GACnE,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACjB,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAF,eAAQ,EAAC,EAAE,CAAC;EACpC,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAJ,eAAQ,EAAC,CAAC,CAAC;EAEzC,MAAMK,wBAAwB,GAAGA,CAACC,KAAa,EAAEC,QAAiB,KAAK;IACrER,+BAA+B,CAAC,IAAI,CAAC;IACrCG,OAAO,CAACI,KAAK,CAAC;IACdF,UAAU,CAACG,QAAQ,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;IAC/BT,+BAA+B,CAAC,KAAK,CAAC;EACxC,CAAC;EAED,OAAO;IACLD,4BAA4B;IAC5BO,wBAAwB;IACxBG,kBAAkB;IAClBP,IAAI;IACJE;EACF,CAAC;AACH,CAAC;AAACM,OAAA,CAAAZ,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../src","sources":["IOSTranslateSheetViewNativeComponent.ts"],"mappings":";;AAKA,OAAOA,sBAAsB,MAAM,yDAAyD;AAS5F,eAAeA,sBAAsB,CAAc,uBAAuB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../src","sources":["IOSTranslateSheetViewNativeComponent.ts"],"mappings":";;AAMA,OAAOA,sBAAsB,MAAM,yDAAyD;AAS5F,eAAeA,sBAAsB,CACnC,uBACF,CAAC","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from "react";
4
+ import { StyleSheet } from "react-native";
5
+ import IOSTranslateSheet from "./IOSTranslateSheetViewNativeComponent";
6
+ import { useInternalTranslateSheet } from "./useTranslate";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const TranslateContext = /*#__PURE__*/createContext(null);
9
+ export const TranslateProvider = ({
10
+ children
11
+ }) => {
12
+ const {
13
+ presentIOSTranslateSheet,
14
+ isIOSTranslateSheetPresented,
15
+ text,
16
+ opacity,
17
+ hideTranslateSheet
18
+ } = useInternalTranslateSheet();
19
+ return /*#__PURE__*/_jsxs(TranslateContext.Provider, {
20
+ value: {
21
+ presentIOSTranslateSheet
22
+ },
23
+ children: [/*#__PURE__*/_jsx(IOSTranslateSheet, {
24
+ text: text,
25
+ isPresented: isIOSTranslateSheetPresented,
26
+ onHide: hideTranslateSheet,
27
+ opacity: opacity,
28
+ style: styles.translateView
29
+ }), children]
30
+ });
31
+ };
32
+ export const useIOSTranslateSheet = () => {
33
+ const context = useContext(TranslateContext);
34
+ if (!context) {
35
+ throw new Error("useTranslateSheet must be used within a TranslateProvider");
36
+ }
37
+ return context;
38
+ };
39
+ const styles = StyleSheet.create({
40
+ translateView: {
41
+ position: "absolute",
42
+ top: 0,
43
+ left: 0,
44
+ right: 0,
45
+ bottom: 0
46
+ }
47
+ });
48
+ //# sourceMappingURL=TranslateContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","StyleSheet","IOSTranslateSheet","useInternalTranslateSheet","jsx","_jsx","jsxs","_jsxs","TranslateContext","TranslateProvider","children","presentIOSTranslateSheet","isIOSTranslateSheetPresented","text","opacity","hideTranslateSheet","Provider","value","isPresented","onHide","style","styles","translateView","useIOSTranslateSheet","context","Error","create","position","top","left","right","bottom"],"sourceRoot":"../../src","sources":["TranslateContext.tsx"],"mappings":";;AAAA,SAAyBA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AACjE,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,iBAAiB,MAAM,wCAAwC;AACtE,SAASC,yBAAyB,QAAQ,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAM3D,MAAMC,gBAAgB,gBAAGT,aAAa,CAA8B,IAAI,CAAC;AAEzE,OAAO,MAAMU,iBAAiB,GAAGA,CAAC;EAAEC;AAAkC,CAAC,KAAK;EAC1E,MAAM;IACJC,wBAAwB;IACxBC,4BAA4B;IAC5BC,IAAI;IACJC,OAAO;IACPC;EACF,CAAC,GAAGZ,yBAAyB,CAAC,CAAC;EAE/B,oBACEI,KAAA,CAACC,gBAAgB,CAACQ,QAAQ;IAACC,KAAK,EAAE;MAAEN;IAAyB,CAAE;IAAAD,QAAA,gBAC7DL,IAAA,CAACH,iBAAiB;MAChBW,IAAI,EAAEA,IAAK;MACXK,WAAW,EAAEN,4BAA6B;MAC1CO,MAAM,EAAEJ,kBAAmB;MAC3BD,OAAO,EAAEA,OAAQ;MACjBM,KAAK,EAAEC,MAAM,CAACC;IAAc,CAC7B,CAAC,EACDZ,QAAQ;EAAA,CACgB,CAAC;AAEhC,CAAC;AAED,OAAO,MAAMa,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,OAAO,GAAGxB,UAAU,CAACQ,gBAAgB,CAAC;EAC5C,IAAI,CAACgB,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,2DACF,CAAC;EACH;EACA,OAAOD,OAAO;AAChB,CAAC;AAED,MAAMH,MAAM,GAAGpB,UAAU,CAACyB,MAAM,CAAC;EAC/BJ,aAAa,EAAE;IACbK,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
@@ -2,5 +2,5 @@
2
2
 
3
3
  export { default as IOSTranslateSheet } from "./IOSTranslateSheetViewNativeComponent";
4
4
  export * from "./IOSTranslateSheetViewNativeComponent";
5
- export * from "./useTranslate";
5
+ export * from "./TranslateContext";
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default","IOSTranslateSheet"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,iBAAiB,QAAQ,wCAAwC;AACrF,cAAc,wCAAwC;AACtD,cAAc,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["default","IOSTranslateSheet"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,iBAAiB,QAAQ,wCAAwC;AACrF,cAAc,wCAAwC;AACtD,cAAc,oBAAoB","ignoreList":[]}
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { useState } from "react";
4
- import { StyleSheet } from "react-native";
5
- import IOSTranslateSheet from "./IOSTranslateSheetViewNativeComponent";
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- export const useIOSTranslateSheet = () => {
4
+ export const useInternalTranslateSheet = () => {
8
5
  const [isIOSTranslateSheetPresented, setIsIOSTranslateSheetPresented] = useState(false);
9
6
  const [text, setText] = useState("");
10
7
  const [opacity, setOpacity] = useState(0);
@@ -13,28 +10,15 @@ export const useIOSTranslateSheet = () => {
13
10
  setText(_text);
14
11
  setOpacity(_opacity ?? 0);
15
12
  };
16
- const IOSTranslateSheetView = () => {
17
- return /*#__PURE__*/_jsx(IOSTranslateSheet, {
18
- text: text,
19
- isPresented: isIOSTranslateSheetPresented,
20
- onHide: () => setIsIOSTranslateSheetPresented(false),
21
- style: styles.translateView,
22
- opacity: opacity
23
- });
13
+ const hideTranslateSheet = () => {
14
+ setIsIOSTranslateSheetPresented(false);
24
15
  };
25
16
  return {
26
17
  isIOSTranslateSheetPresented,
27
18
  presentIOSTranslateSheet,
28
- IOSTranslateSheetView
19
+ hideTranslateSheet,
20
+ text,
21
+ opacity
29
22
  };
30
23
  };
31
- const styles = StyleSheet.create({
32
- translateView: {
33
- position: "absolute",
34
- top: 0,
35
- left: 0,
36
- right: 0,
37
- bottom: 0
38
- }
39
- });
40
24
  //# sourceMappingURL=useTranslate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useState","StyleSheet","IOSTranslateSheet","jsx","_jsx","useIOSTranslateSheet","isIOSTranslateSheetPresented","setIsIOSTranslateSheetPresented","text","setText","opacity","setOpacity","presentIOSTranslateSheet","_text","_opacity","IOSTranslateSheetView","isPresented","onHide","style","styles","translateView","create","position","top","left","right","bottom"],"sourceRoot":"../../src","sources":["useTranslate.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,iBAAiB,MAAM,wCAAwC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEvE,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAM,CAACC,4BAA4B,EAAEC,+BAA+B,CAAC,GAAGP,QAAQ,CAAC,KAAK,CAAC;EACvF,MAAM,CAACQ,IAAI,EAAEC,OAAO,CAAC,GAAGT,QAAQ,CAAC,EAAE,CAAC;EACpC,MAAM,CAACU,OAAO,EAAEC,UAAU,CAAC,GAAGX,QAAQ,CAAC,CAAC,CAAC;EAEzC,MAAMY,wBAAwB,GAAGA,CAACC,KAAa,EAAEC,QAAiB,KAAK;IACrEP,+BAA+B,CAAC,IAAI,CAAC;IACrCE,OAAO,CAACI,KAAK,CAAC;IACdF,UAAU,CAACG,QAAQ,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;IAClC,oBACEX,IAAA,CAACF,iBAAiB;MAChBM,IAAI,EAAEA,IAAK;MACXQ,WAAW,EAAEV,4BAA6B;MAC1CW,MAAM,EAAEA,CAAA,KAAMV,+BAA+B,CAAC,KAAK,CAAE;MACrDW,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BV,OAAO,EAAEA;IAAQ,CAClB,CAAC;EAEN,CAAC;EAED,OAAO;IACLJ,4BAA4B;IAC5BM,wBAAwB;IACxBG;EACF,CAAC;AACH,CAAC;AAED,MAAMI,MAAM,GAAGlB,UAAU,CAACoB,MAAM,CAAC;EAC/BD,aAAa,EAAE;IACbE,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useState","useInternalTranslateSheet","isIOSTranslateSheetPresented","setIsIOSTranslateSheetPresented","text","setText","opacity","setOpacity","presentIOSTranslateSheet","_text","_opacity","hideTranslateSheet"],"sourceRoot":"../../src","sources":["useTranslate.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,OAAO,MAAMC,yBAAyB,GAAGA,CAAA,KAAM;EAC7C,MAAM,CAACC,4BAA4B,EAAEC,+BAA+B,CAAC,GACnEH,QAAQ,CAAC,KAAK,CAAC;EACjB,MAAM,CAACI,IAAI,EAAEC,OAAO,CAAC,GAAGL,QAAQ,CAAC,EAAE,CAAC;EACpC,MAAM,CAACM,OAAO,EAAEC,UAAU,CAAC,GAAGP,QAAQ,CAAC,CAAC,CAAC;EAEzC,MAAMQ,wBAAwB,GAAGA,CAACC,KAAa,EAAEC,QAAiB,KAAK;IACrEP,+BAA+B,CAAC,IAAI,CAAC;IACrCE,OAAO,CAACI,KAAK,CAAC;IACdF,UAAU,CAACG,QAAQ,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;IAC/BR,+BAA+B,CAAC,KAAK,CAAC;EACxC,CAAC;EAED,OAAO;IACLD,4BAA4B;IAC5BM,wBAAwB;IACxBG,kBAAkB;IAClBP,IAAI;IACJE;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1,11 +1,11 @@
1
1
  import type { ViewProps } from "react-native";
2
- import type { DirectEventHandler, Float } from "react-native/Libraries/Types/CodegenTypes";
3
- interface NativeProps extends ViewProps {
2
+ import type { DirectEventHandler, Float, WithDefault } from "react-native/Libraries/Types/CodegenTypes";
3
+ export interface IOSTranslateSheetProps extends ViewProps {
4
4
  text: string;
5
5
  isPresented: boolean;
6
- onHide: DirectEventHandler<null>;
7
- opacity?: Float;
6
+ onHide?: DirectEventHandler<null>;
7
+ opacity?: WithDefault<Float, 0.0>;
8
8
  }
9
- declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
9
+ declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<IOSTranslateSheetProps>;
10
10
  export default _default;
11
11
  //# sourceMappingURL=IOSTranslateSheetViewNativeComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IOSTranslateSheetViewNativeComponent.d.ts","sourceRoot":"","sources":["../../src/IOSTranslateSheetViewNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACN,MAAM,2CAA2C,CAAC;AAGnD,UAAU,WAAY,SAAQ,SAAS;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;;AAED,wBAA4E"}
1
+ {"version":3,"file":"IOSTranslateSheetViewNativeComponent.d.ts","sourceRoot":"","sources":["../../src/IOSTranslateSheetViewNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,WAAW,EACZ,MAAM,2CAA2C,CAAC;AAGnD,MAAM,WAAW,sBAAuB,SAAQ,SAAS;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACnC;;AAED,wBAEE"}
@@ -0,0 +1,10 @@
1
+ import { type ReactNode } from "react";
2
+ type TranslateContextType = {
3
+ presentIOSTranslateSheet: (text: string, opacity?: number) => void;
4
+ };
5
+ export declare const TranslateProvider: ({ children }: {
6
+ children: ReactNode;
7
+ }) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const useIOSTranslateSheet: () => TranslateContextType;
9
+ export {};
10
+ //# sourceMappingURL=TranslateContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TranslateContext.d.ts","sourceRoot":"","sources":["../../src/TranslateContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA6B,MAAM,OAAO,CAAC;AAKlE,KAAK,oBAAoB,GAAG;IAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpE,CAAC;AAIF,eAAO,MAAM,iBAAiB,iBAAkB;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CAqBtE,CAAC;AAEF,eAAO,MAAM,oBAAoB,4BAQhC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export { default as IOSTranslateSheet } from "./IOSTranslateSheetViewNativeComponent";
2
2
  export * from "./IOSTranslateSheetViewNativeComponent";
3
- export * from "./useTranslate";
3
+ export * from "./TranslateContext";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACtF,cAAc,wCAAwC,CAAC;AACvD,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACtF,cAAc,wCAAwC,CAAC;AACvD,cAAc,oBAAoB,CAAC"}
@@ -1,6 +1,8 @@
1
- export declare const useIOSTranslateSheet: () => {
1
+ export declare const useInternalTranslateSheet: () => {
2
2
  isIOSTranslateSheetPresented: boolean;
3
3
  presentIOSTranslateSheet: (_text: string, _opacity?: number) => void;
4
- IOSTranslateSheetView: () => import("react/jsx-runtime").JSX.Element;
4
+ hideTranslateSheet: () => void;
5
+ text: string;
6
+ opacity: number;
5
7
  };
6
8
  //# sourceMappingURL=useTranslate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTranslate.d.ts","sourceRoot":"","sources":["../../src/useTranslate.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB;;sCAKU,MAAM,aAAa,MAAM;;CAuBnE,CAAC"}
1
+ {"version":3,"file":"useTranslate.d.ts","sourceRoot":"","sources":["../../src/useTranslate.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB;;sCAMK,MAAM,aAAa,MAAM;;;;CAiBnE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ios-translate-sheet",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "SwiftUI Translate Sheet on React Native",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "lib/commonjs/index.js",
@@ -2,14 +2,17 @@ import type { ViewProps } from "react-native";
2
2
  import type {
3
3
  DirectEventHandler,
4
4
  Float,
5
+ WithDefault,
5
6
  } from "react-native/Libraries/Types/CodegenTypes";
6
7
  import codegenNativeComponent from "react-native/Libraries/Utilities/codegenNativeComponent";
7
8
 
8
- interface NativeProps extends ViewProps {
9
+ export interface IOSTranslateSheetProps extends ViewProps {
9
10
  text: string;
10
11
  isPresented: boolean;
11
- onHide: DirectEventHandler<null>;
12
- opacity?: Float;
12
+ onHide?: DirectEventHandler<null>;
13
+ opacity?: WithDefault<Float, 0.0>;
13
14
  }
14
15
 
15
- export default codegenNativeComponent<NativeProps>("IOSTranslateSheetView");
16
+ export default codegenNativeComponent<IOSTranslateSheetProps>(
17
+ "IOSTranslateSheetView",
18
+ );
@@ -0,0 +1,53 @@
1
+ import { type ReactNode, createContext, useContext } from "react";
2
+ import { StyleSheet } from "react-native";
3
+ import IOSTranslateSheet from "./IOSTranslateSheetViewNativeComponent";
4
+ import { useInternalTranslateSheet } from "./useTranslate";
5
+
6
+ type TranslateContextType = {
7
+ presentIOSTranslateSheet: (text: string, opacity?: number) => void;
8
+ };
9
+
10
+ const TranslateContext = createContext<TranslateContextType | null>(null);
11
+
12
+ export const TranslateProvider = ({ children }: { children: ReactNode }) => {
13
+ const {
14
+ presentIOSTranslateSheet,
15
+ isIOSTranslateSheetPresented,
16
+ text,
17
+ opacity,
18
+ hideTranslateSheet,
19
+ } = useInternalTranslateSheet();
20
+
21
+ return (
22
+ <TranslateContext.Provider value={{ presentIOSTranslateSheet }}>
23
+ <IOSTranslateSheet
24
+ text={text}
25
+ isPresented={isIOSTranslateSheetPresented}
26
+ onHide={hideTranslateSheet}
27
+ opacity={opacity}
28
+ style={styles.translateView}
29
+ />
30
+ {children}
31
+ </TranslateContext.Provider>
32
+ );
33
+ };
34
+
35
+ export const useIOSTranslateSheet = () => {
36
+ const context = useContext(TranslateContext);
37
+ if (!context) {
38
+ throw new Error(
39
+ "useTranslateSheet must be used within a TranslateProvider",
40
+ );
41
+ }
42
+ return context;
43
+ };
44
+
45
+ const styles = StyleSheet.create({
46
+ translateView: {
47
+ position: "absolute",
48
+ top: 0,
49
+ left: 0,
50
+ right: 0,
51
+ bottom: 0,
52
+ },
53
+ });
package/src/index.tsx CHANGED
@@ -1,3 +1,3 @@
1
1
  export { default as IOSTranslateSheet } from "./IOSTranslateSheetViewNativeComponent";
2
2
  export * from "./IOSTranslateSheetViewNativeComponent";
3
- export * from "./useTranslate";
3
+ export * from "./TranslateContext";
@@ -1,9 +1,8 @@
1
1
  import { useState } from "react";
2
- import { StyleSheet } from "react-native";
3
- import IOSTranslateSheet from "./IOSTranslateSheetViewNativeComponent";
4
2
 
5
- export const useIOSTranslateSheet = () => {
6
- const [isIOSTranslateSheetPresented, setIsIOSTranslateSheetPresented] = useState(false);
3
+ export const useInternalTranslateSheet = () => {
4
+ const [isIOSTranslateSheetPresented, setIsIOSTranslateSheetPresented] =
5
+ useState(false);
7
6
  const [text, setText] = useState("");
8
7
  const [opacity, setOpacity] = useState(0);
9
8
 
@@ -13,31 +12,15 @@ export const useIOSTranslateSheet = () => {
13
12
  setOpacity(_opacity ?? 0);
14
13
  };
15
14
 
16
- const IOSTranslateSheetView = () => {
17
- return (
18
- <IOSTranslateSheet
19
- text={text}
20
- isPresented={isIOSTranslateSheetPresented}
21
- onHide={() => setIsIOSTranslateSheetPresented(false)}
22
- style={styles.translateView}
23
- opacity={opacity}
24
- />
25
- );
15
+ const hideTranslateSheet = () => {
16
+ setIsIOSTranslateSheetPresented(false);
26
17
  };
27
18
 
28
19
  return {
29
20
  isIOSTranslateSheetPresented,
30
21
  presentIOSTranslateSheet,
31
- IOSTranslateSheetView,
22
+ hideTranslateSheet,
23
+ text,
24
+ opacity,
32
25
  };
33
26
  };
34
-
35
- const styles = StyleSheet.create({
36
- translateView: {
37
- position: "absolute",
38
- top: 0,
39
- left: 0,
40
- right: 0,
41
- bottom: 0,
42
- },
43
- });