react-native-ios-translate-sheet 1.1.1 → 1.1.3

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.
package/README.md CHANGED
@@ -16,11 +16,15 @@
16
16
  </a>
17
17
  </p>
18
18
 
19
+ > **Note**: If you need to perform multiple translations and retrieve the translated text to display within your app, consider using [react-native-ios-translate-tasks](https://github.com/huextrat/react-native-ios-translate-tasks) instead. This library is focused on providing the native iOS translation sheet UI experience.
20
+
19
21
  ## Features
20
22
 
21
23
  - 🔄 Seamless integration with iOS native translation capabilities
22
24
  - 🌐 Access to all languages supported by iOS translation
23
25
  - 📱 Native iOS UI and interactions
26
+ - 🏗️ Supports old & new arch
27
+ - ⚙️ Powered by SwiftUI's [translationPresentation](https://developer.apple.com/documentation/swiftui/view/translationpresentation(ispresented:text:attachmentanchor:arrowedge:replacementaction:)) API under the hood
24
28
 
25
29
  ## Platform Compatibility
26
30
 
@@ -71,6 +75,8 @@ function MyComponent() {
71
75
 
72
76
  const handleTranslate = () => {
73
77
  presentIOSTranslateSheet('Text to translate');
78
+ // Optional: You can pass an opacity value (0-1) as a second parameter
79
+ // presentIOSTranslateSheet('Text to translate', 0.5);
74
80
  };
75
81
 
76
82
  return (
@@ -82,8 +88,22 @@ function MyComponent() {
82
88
  }
83
89
  ```
84
90
 
91
+ ### Checking Platform Support
92
+
93
+ The `useIOSTranslateSheet` hook provides an `isSupported` boolean that you can use to check if the translation functionality is available on the current device:
94
+
95
+ ```tsx
96
+ const { isSupported } = useIOSTranslateSheet();
97
+ ```
98
+
85
99
  Note: The translation sheet will only appear on iOS devices running version 17.4 or later. On other platforms or iOS versions below 17.4, the `presentIOSTranslateSheet` function will do nothing.
86
100
 
101
+ ## Example
102
+
103
+ <center>
104
+ <img src="./resources/demo.gif" width="200">
105
+ </center>
106
+
87
107
  ## Contributing
88
108
 
89
109
  We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for more details.
@@ -36,6 +36,7 @@ public typealias RCTBubblingEventBlock = @convention(block) (_ body: [AnyHashabl
36
36
  @objc public var opacity: Double = 0.0 {
37
37
  didSet {
38
38
  props.opacity = opacity
39
+ updateBackgroundColor()
39
40
  }
40
41
  }
41
42
 
@@ -46,6 +47,11 @@ public typealias RCTBubblingEventBlock = @convention(block) (_ body: [AnyHashabl
46
47
  }
47
48
  }
48
49
  }
50
+
51
+ private func updateBackgroundColor() {
52
+ let currentOpacity = isPresented ? opacity : 0.0
53
+ hostingController?.view.backgroundColor = UIColor(white: 0.0, alpha: currentOpacity)
54
+ }
49
55
 
50
56
  public override func layoutSubviews() {
51
57
  super.layoutSubviews()
@@ -64,9 +70,7 @@ public typealias RCTBubblingEventBlock = @convention(block) (_ body: [AnyHashabl
64
70
  )
65
71
 
66
72
  if let hostingController = self.hostingController {
67
- hostingController.view.isHidden = !isPresented
68
- hostingController.view.backgroundColor = UIColor(white: 0.0, alpha: opacity)
69
-
73
+ hostingController.view.isHidden = !isPresented
70
74
  addSubview(hostingController.view)
71
75
  hostingController.view.pinEdges(to: self)
72
76
  reactAddController(toClosestParent: hostingController)
@@ -18,19 +18,21 @@ const IOSTranslateSheetProvider = ({
18
18
  presentIOSTranslateSheet,
19
19
  isIOSTranslateSheetPresented,
20
20
  text,
21
+ hideTranslateSheet,
21
22
  opacity,
22
- hideTranslateSheet
23
+ isSupported
23
24
  } = (0, _useInternalTranslate.useInternalTranslateSheet)();
24
25
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(TranslateContext.Provider, {
25
26
  value: {
26
- presentIOSTranslateSheet
27
+ presentIOSTranslateSheet,
28
+ isSupported
27
29
  },
28
30
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_IOSTranslateSheetViewNativeComponent.default, {
29
31
  text: text,
30
32
  isPresented: isIOSTranslateSheetPresented,
31
33
  onHide: hideTranslateSheet,
32
- opacity: opacity,
33
- style: styles.translateView
34
+ style: styles.translateView,
35
+ opacity: opacity
34
36
  }), children]
35
37
  });
36
38
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_IOSTranslateSheetViewNativeComponent","_interopRequireDefault","_useInternalTranslate","_jsxRuntime","e","__esModule","default","TranslateContext","createContext","IOSTranslateSheetProvider","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,qBAAA,GAAAJ,OAAA;AAAyE,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMzE,MAAMG,gBAAgB,gBAAG,IAAAC,oBAAa,EAA8B,IAAI,CAAC;AAElE,MAAMC,yBAAyB,GAAGA,CAAC;EACxCC;AACuB,CAAC,KAAK;EAC7B,MAAM;IACJC,wBAAwB;IACxBC,4BAA4B;IAC5BC,IAAI;IACJC,OAAO;IACPC;EACF,CAAC,GAAG,IAAAC,+CAAyB,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,yBAAA,GAAAA,yBAAA;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,sEACF,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":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_IOSTranslateSheetViewNativeComponent","_interopRequireDefault","_useInternalTranslate","_jsxRuntime","e","__esModule","default","TranslateContext","createContext","IOSTranslateSheetProvider","children","presentIOSTranslateSheet","isIOSTranslateSheetPresented","text","hideTranslateSheet","opacity","isSupported","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,qBAAA,GAAAJ,OAAA;AAAyE,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAOzE,MAAMG,gBAAgB,gBAAG,IAAAC,oBAAa,EAA8B,IAAI,CAAC;AAElE,MAAMC,yBAAyB,GAAGA,CAAC;EACxCC;AACuB,CAAC,KAAK;EAC7B,MAAM;IACJC,wBAAwB;IACxBC,4BAA4B;IAC5BC,IAAI;IACJC,kBAAkB;IAClBC,OAAO;IACPC;EACF,CAAC,GAAG,IAAAC,+CAAyB,EAAC,CAAC;EAE/B,oBACE,IAAAd,WAAA,CAAAe,IAAA,EAACX,gBAAgB,CAACY,QAAQ;IACxBC,KAAK,EAAE;MACLT,wBAAwB;MACxBK;IACF,CAAE;IAAAN,QAAA,gBAEF,IAAAP,WAAA,CAAAkB,GAAA,EAACrB,qCAAA,CAAAM,OAAiB;MAChBO,IAAI,EAAEA,IAAK;MACXS,WAAW,EAAEV,4BAA6B;MAC1CW,MAAM,EAAET,kBAAmB;MAC3BU,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BX,OAAO,EAAEA;IAAQ,CAClB,CAAC,EACDL,QAAQ;EAAA,CACgB,CAAC;AAEhC,CAAC;AAACiB,OAAA,CAAAlB,yBAAA,GAAAA,yBAAA;AAEK,MAAMmB,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,OAAO,GAAG,IAAAC,iBAAU,EAACvB,gBAAgB,CAAC;EAC5C,IAAI,CAACsB,OAAO,EAAE;IACZ,MAAM,IAAIE,KAAK,CACb,sEACF,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":[]}
@@ -5,10 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useInternalTranslateSheet = void 0;
7
7
  var _react = require("react");
8
+ var _reactNative = require("react-native");
8
9
  const useInternalTranslateSheet = () => {
9
10
  const [isIOSTranslateSheetPresented, setIsIOSTranslateSheetPresented] = (0, _react.useState)(false);
10
11
  const [text, setText] = (0, _react.useState)("");
11
12
  const [opacity, setOpacity] = (0, _react.useState)(0);
13
+ const isSupported = _reactNative.Platform.OS === "ios" && Number.parseFloat(String(_reactNative.Platform.Version)) >= 17.4;
12
14
  const presentIOSTranslateSheet = (_text, _opacity) => {
13
15
  setIsIOSTranslateSheetPresented(true);
14
16
  setText(_text);
@@ -22,7 +24,8 @@ const useInternalTranslateSheet = () => {
22
24
  presentIOSTranslateSheet,
23
25
  hideTranslateSheet,
24
26
  text,
25
- opacity
27
+ opacity,
28
+ isSupported
26
29
  };
27
30
  };
28
31
  exports.useInternalTranslateSheet = useInternalTranslateSheet;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","useInternalTranslateSheet","isIOSTranslateSheetPresented","setIsIOSTranslateSheetPresented","useState","text","setText","opacity","setOpacity","presentIOSTranslateSheet","_text","_opacity","hideTranslateSheet","exports"],"sourceRoot":"../../../src","sources":["hooks/useInternalTranslate.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
+ {"version":3,"names":["_react","require","_reactNative","useInternalTranslateSheet","isIOSTranslateSheetPresented","setIsIOSTranslateSheetPresented","useState","text","setText","opacity","setOpacity","isSupported","Platform","OS","Number","parseFloat","String","Version","presentIOSTranslateSheet","_text","_opacity","hideTranslateSheet","exports"],"sourceRoot":"../../../src","sources":["hooks/useInternalTranslate.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEO,MAAME,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,WAAW,GACfC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IACrBC,MAAM,CAACC,UAAU,CAACC,MAAM,CAACJ,qBAAQ,CAACK,OAAO,CAAC,CAAC,IAAI,IAAI;EAErD,MAAMC,wBAAwB,GAAGA,CAACC,KAAa,EAAEC,QAAiB,KAAK;IACrEf,+BAA+B,CAAC,IAAI,CAAC;IACrCG,OAAO,CAACW,KAAK,CAAC;IACdT,UAAU,CAACU,QAAQ,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;IAC/BhB,+BAA+B,CAAC,KAAK,CAAC;EACxC,CAAC;EAED,OAAO;IACLD,4BAA4B;IAC5Bc,wBAAwB;IACxBG,kBAAkB;IAClBd,IAAI;IACJE,OAAO;IACPE;EACF,CAAC;AACH,CAAC;AAACW,OAAA,CAAAnB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -13,19 +13,21 @@ export const IOSTranslateSheetProvider = ({
13
13
  presentIOSTranslateSheet,
14
14
  isIOSTranslateSheetPresented,
15
15
  text,
16
+ hideTranslateSheet,
16
17
  opacity,
17
- hideTranslateSheet
18
+ isSupported
18
19
  } = useInternalTranslateSheet();
19
20
  return /*#__PURE__*/_jsxs(TranslateContext.Provider, {
20
21
  value: {
21
- presentIOSTranslateSheet
22
+ presentIOSTranslateSheet,
23
+ isSupported
22
24
  },
23
25
  children: [/*#__PURE__*/_jsx(IOSTranslateSheet, {
24
26
  text: text,
25
27
  isPresented: isIOSTranslateSheetPresented,
26
28
  onHide: hideTranslateSheet,
27
- opacity: opacity,
28
- style: styles.translateView
29
+ style: styles.translateView,
30
+ opacity: opacity
29
31
  }), children]
30
32
  });
31
33
  };
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useContext","StyleSheet","IOSTranslateSheet","useInternalTranslateSheet","jsx","_jsx","jsxs","_jsxs","TranslateContext","IOSTranslateSheetProvider","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,8BAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMzE,MAAMC,gBAAgB,gBAAGT,aAAa,CAA8B,IAAI,CAAC;AAEzE,OAAO,MAAMU,yBAAyB,GAAGA,CAAC;EACxCC;AACuB,CAAC,KAAK;EAC7B,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,sEACF,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":[]}
1
+ {"version":3,"names":["createContext","useContext","StyleSheet","IOSTranslateSheet","useInternalTranslateSheet","jsx","_jsx","jsxs","_jsxs","TranslateContext","IOSTranslateSheetProvider","children","presentIOSTranslateSheet","isIOSTranslateSheetPresented","text","hideTranslateSheet","opacity","isSupported","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,8BAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOzE,MAAMC,gBAAgB,gBAAGT,aAAa,CAA8B,IAAI,CAAC;AAEzE,OAAO,MAAMU,yBAAyB,GAAGA,CAAC;EACxCC;AACuB,CAAC,KAAK;EAC7B,MAAM;IACJC,wBAAwB;IACxBC,4BAA4B;IAC5BC,IAAI;IACJC,kBAAkB;IAClBC,OAAO;IACPC;EACF,CAAC,GAAGb,yBAAyB,CAAC,CAAC;EAE/B,oBACEI,KAAA,CAACC,gBAAgB,CAACS,QAAQ;IACxBC,KAAK,EAAE;MACLP,wBAAwB;MACxBK;IACF,CAAE;IAAAN,QAAA,gBAEFL,IAAA,CAACH,iBAAiB;MAChBW,IAAI,EAAEA,IAAK;MACXM,WAAW,EAAEP,4BAA6B;MAC1CQ,MAAM,EAAEN,kBAAmB;MAC3BO,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BR,OAAO,EAAEA;IAAQ,CAClB,CAAC,EACDL,QAAQ;EAAA,CACgB,CAAC;AAEhC,CAAC;AAED,OAAO,MAAMc,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,OAAO,GAAGzB,UAAU,CAACQ,gBAAgB,CAAC;EAC5C,IAAI,CAACiB,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,sEACF,CAAC;EACH;EACA,OAAOD,OAAO;AAChB,CAAC;AAED,MAAMH,MAAM,GAAGrB,UAAU,CAAC0B,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":[]}
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  import { useState } from "react";
4
+ import { Platform } from "react-native";
4
5
  export const useInternalTranslateSheet = () => {
5
6
  const [isIOSTranslateSheetPresented, setIsIOSTranslateSheetPresented] = useState(false);
6
7
  const [text, setText] = useState("");
7
8
  const [opacity, setOpacity] = useState(0);
9
+ const isSupported = Platform.OS === "ios" && Number.parseFloat(String(Platform.Version)) >= 17.4;
8
10
  const presentIOSTranslateSheet = (_text, _opacity) => {
9
11
  setIsIOSTranslateSheetPresented(true);
10
12
  setText(_text);
@@ -18,7 +20,8 @@ export const useInternalTranslateSheet = () => {
18
20
  presentIOSTranslateSheet,
19
21
  hideTranslateSheet,
20
22
  text,
21
- opacity
23
+ opacity,
24
+ isSupported
22
25
  };
23
26
  };
24
27
  //# sourceMappingURL=useInternalTranslate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useInternalTranslateSheet","isIOSTranslateSheetPresented","setIsIOSTranslateSheetPresented","text","setText","opacity","setOpacity","presentIOSTranslateSheet","_text","_opacity","hideTranslateSheet"],"sourceRoot":"../../../src","sources":["hooks/useInternalTranslate.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
+ {"version":3,"names":["useState","Platform","useInternalTranslateSheet","isIOSTranslateSheetPresented","setIsIOSTranslateSheetPresented","text","setText","opacity","setOpacity","isSupported","OS","Number","parseFloat","String","Version","presentIOSTranslateSheet","_text","_opacity","hideTranslateSheet"],"sourceRoot":"../../../src","sources":["hooks/useInternalTranslate.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,QAAQ,QAAQ,cAAc;AAEvC,OAAO,MAAMC,yBAAyB,GAAGA,CAAA,KAAM;EAC7C,MAAM,CAACC,4BAA4B,EAAEC,+BAA+B,CAAC,GACnEJ,QAAQ,CAAC,KAAK,CAAC;EACjB,MAAM,CAACK,IAAI,EAAEC,OAAO,CAAC,GAAGN,QAAQ,CAAC,EAAE,CAAC;EACpC,MAAM,CAACO,OAAO,EAAEC,UAAU,CAAC,GAAGR,QAAQ,CAAC,CAAC,CAAC;EAEzC,MAAMS,WAAW,GACfR,QAAQ,CAACS,EAAE,KAAK,KAAK,IACrBC,MAAM,CAACC,UAAU,CAACC,MAAM,CAACZ,QAAQ,CAACa,OAAO,CAAC,CAAC,IAAI,IAAI;EAErD,MAAMC,wBAAwB,GAAGA,CAACC,KAAa,EAAEC,QAAiB,KAAK;IACrEb,+BAA+B,CAAC,IAAI,CAAC;IACrCE,OAAO,CAACU,KAAK,CAAC;IACdR,UAAU,CAACS,QAAQ,IAAI,CAAC,CAAC;EAC3B,CAAC;EAED,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;IAC/Bd,+BAA+B,CAAC,KAAK,CAAC;EACxC,CAAC;EAED,OAAO;IACLD,4BAA4B;IAC5BY,wBAAwB;IACxBG,kBAAkB;IAClBb,IAAI;IACJE,OAAO;IACPE;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1,9 +1,9 @@
1
1
  import type { ViewProps } from "react-native";
2
2
  import type { DirectEventHandler, Float, WithDefault } from "react-native/Libraries/Types/CodegenTypes";
3
- export interface IOSTranslateSheetProps extends ViewProps {
3
+ interface IOSTranslateSheetProps extends ViewProps {
4
4
  text: string;
5
5
  isPresented: boolean;
6
- onHide?: DirectEventHandler<null>;
6
+ onHide: DirectEventHandler<null>;
7
7
  opacity?: WithDefault<Float, 0.0>;
8
8
  }
9
9
  declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<IOSTranslateSheetProps>;
@@ -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,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"}
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,UAAU,sBAAuB,SAAQ,SAAS;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACnC;;AAED,wBAEE"}
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from "react";
2
2
  type TranslateContextType = {
3
+ isSupported: boolean;
3
4
  presentIOSTranslateSheet: (text: string, opacity?: number) => void;
4
5
  };
5
6
  export declare const IOSTranslateSheetProvider: ({ children, }: {
@@ -1 +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,yBAAyB,kBAEnC;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CAqBzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,4BAQhC,CAAC"}
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,WAAW,EAAE,OAAO,CAAC;IACrB,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpE,CAAC;AAIF,eAAO,MAAM,yBAAyB,kBAEnC;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CA2BzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,4BAQhC,CAAC"}
@@ -4,5 +4,6 @@ export declare const useInternalTranslateSheet: () => {
4
4
  hideTranslateSheet: () => void;
5
5
  text: string;
6
6
  opacity: number;
7
+ isSupported: boolean;
7
8
  };
8
9
  //# sourceMappingURL=useInternalTranslate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInternalTranslate.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInternalTranslate.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB;;sCAMK,MAAM,aAAa,MAAM;;;;CAiBnE,CAAC"}
1
+ {"version":3,"file":"useInternalTranslate.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInternalTranslate.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB;;sCAUK,MAAM,aAAa,MAAM;;;;;CAkBnE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ios-translate-sheet",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "SwiftUI Translate Sheet on React Native",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "lib/commonjs/index.js",
@@ -59,25 +59,25 @@
59
59
  },
60
60
  "devDependencies": {
61
61
  "@biomejs/biome": "^1.9.4",
62
- "@commitlint/config-conventional": "^17.0.2",
62
+ "@commitlint/config-conventional": "^19.7.1",
63
63
  "@react-native-community/cli": "15.1.3",
64
64
  "@semantic-release/changelog": "^6.0.3",
65
65
  "@semantic-release/git": "^10.0.1",
66
66
  "@types/jest": "^29.5.5",
67
- "@types/react": "^18.2.44",
68
- "commitlint": "^17.0.2",
69
- "del-cli": "^5.1.0",
67
+ "@types/react": "^19.0.10",
68
+ "commitlint": "^19.7.1",
69
+ "del-cli": "^6.0.0",
70
70
  "husky": "^9.1.7",
71
71
  "jest": "^29.7.0",
72
72
  "react": "19.0.0",
73
73
  "react-native": "0.78.0",
74
74
  "react-native-builder-bob": "^0.37.0",
75
75
  "semantic-release": "^24.2.3",
76
- "turbo": "^1.10.7",
76
+ "turbo": "^2.4.4",
77
77
  "typescript": "^5.2.2"
78
78
  },
79
79
  "resolutions": {
80
- "@types/react": "^18.2.44"
80
+ "@types/react": "^19.0.10"
81
81
  },
82
82
  "peerDependencies": {
83
83
  "react": "*",
@@ -86,7 +86,7 @@
86
86
  "workspaces": [
87
87
  "example"
88
88
  ],
89
- "packageManager": "yarn@3.6.1",
89
+ "packageManager": "yarn@4.6.0",
90
90
  "jest": {
91
91
  "preset": "react-native",
92
92
  "modulePathIgnorePatterns": [
@@ -6,10 +6,10 @@ import type {
6
6
  } from "react-native/Libraries/Types/CodegenTypes";
7
7
  import codegenNativeComponent from "react-native/Libraries/Utilities/codegenNativeComponent";
8
8
 
9
- export interface IOSTranslateSheetProps extends ViewProps {
9
+ interface IOSTranslateSheetProps extends ViewProps {
10
10
  text: string;
11
11
  isPresented: boolean;
12
- onHide?: DirectEventHandler<null>;
12
+ onHide: DirectEventHandler<null>;
13
13
  opacity?: WithDefault<Float, 0.0>;
14
14
  }
15
15
 
@@ -4,6 +4,7 @@ import IOSTranslateSheet from "./IOSTranslateSheetViewNativeComponent";
4
4
  import { useInternalTranslateSheet } from "./hooks/useInternalTranslate";
5
5
 
6
6
  type TranslateContextType = {
7
+ isSupported: boolean;
7
8
  presentIOSTranslateSheet: (text: string, opacity?: number) => void;
8
9
  };
9
10
 
@@ -16,18 +17,24 @@ export const IOSTranslateSheetProvider = ({
16
17
  presentIOSTranslateSheet,
17
18
  isIOSTranslateSheetPresented,
18
19
  text,
19
- opacity,
20
20
  hideTranslateSheet,
21
+ opacity,
22
+ isSupported,
21
23
  } = useInternalTranslateSheet();
22
24
 
23
25
  return (
24
- <TranslateContext.Provider value={{ presentIOSTranslateSheet }}>
26
+ <TranslateContext.Provider
27
+ value={{
28
+ presentIOSTranslateSheet,
29
+ isSupported,
30
+ }}
31
+ >
25
32
  <IOSTranslateSheet
26
33
  text={text}
27
34
  isPresented={isIOSTranslateSheetPresented}
28
35
  onHide={hideTranslateSheet}
29
- opacity={opacity}
30
36
  style={styles.translateView}
37
+ opacity={opacity}
31
38
  />
32
39
  {children}
33
40
  </TranslateContext.Provider>
@@ -1,4 +1,5 @@
1
1
  import { useState } from "react";
2
+ import { Platform } from "react-native";
2
3
 
3
4
  export const useInternalTranslateSheet = () => {
4
5
  const [isIOSTranslateSheetPresented, setIsIOSTranslateSheetPresented] =
@@ -6,6 +7,10 @@ export const useInternalTranslateSheet = () => {
6
7
  const [text, setText] = useState("");
7
8
  const [opacity, setOpacity] = useState(0);
8
9
 
10
+ const isSupported =
11
+ Platform.OS === "ios" &&
12
+ Number.parseFloat(String(Platform.Version)) >= 17.4;
13
+
9
14
  const presentIOSTranslateSheet = (_text: string, _opacity?: number) => {
10
15
  setIsIOSTranslateSheetPresented(true);
11
16
  setText(_text);
@@ -22,5 +27,6 @@ export const useInternalTranslateSheet = () => {
22
27
  hideTranslateSheet,
23
28
  text,
24
29
  opacity,
30
+ isSupported,
25
31
  };
26
32
  };