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 +20 -0
- package/ios/IOSTranslateSheetProvider.swift +7 -3
- package/lib/commonjs/TranslateContext.js +6 -4
- package/lib/commonjs/TranslateContext.js.map +1 -1
- package/lib/commonjs/hooks/useInternalTranslate.js +4 -1
- package/lib/commonjs/hooks/useInternalTranslate.js.map +1 -1
- package/lib/module/TranslateContext.js +6 -4
- package/lib/module/TranslateContext.js.map +1 -1
- package/lib/module/hooks/useInternalTranslate.js +4 -1
- package/lib/module/hooks/useInternalTranslate.js.map +1 -1
- package/lib/typescript/IOSTranslateSheetViewNativeComponent.d.ts +2 -2
- package/lib/typescript/IOSTranslateSheetViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/TranslateContext.d.ts +1 -0
- package/lib/typescript/TranslateContext.d.ts.map +1 -1
- package/lib/typescript/hooks/useInternalTranslate.d.ts +1 -0
- package/lib/typescript/hooks/useInternalTranslate.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/IOSTranslateSheetViewNativeComponent.ts +2 -2
- package/src/TranslateContext.tsx +10 -3
- package/src/hooks/useInternalTranslate.tsx +6 -0
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
|
-
|
|
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
|
-
|
|
33
|
-
|
|
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","
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
28
|
-
|
|
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","
|
|
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;
|
|
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
|
-
|
|
3
|
+
interface IOSTranslateSheetProps extends ViewProps {
|
|
4
4
|
text: string;
|
|
5
5
|
isPresented: boolean;
|
|
6
|
-
onHide
|
|
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,
|
|
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 +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,
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInternalTranslate.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInternalTranslate.tsx"],"names":[],"mappings":"
|
|
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.
|
|
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": "^
|
|
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": "^
|
|
68
|
-
"commitlint": "^
|
|
69
|
-
"del-cli": "^
|
|
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": "^
|
|
76
|
+
"turbo": "^2.4.4",
|
|
77
77
|
"typescript": "^5.2.2"
|
|
78
78
|
},
|
|
79
79
|
"resolutions": {
|
|
80
|
-
"@types/react": "^
|
|
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@
|
|
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
|
-
|
|
9
|
+
interface IOSTranslateSheetProps extends ViewProps {
|
|
10
10
|
text: string;
|
|
11
11
|
isPresented: boolean;
|
|
12
|
-
onHide
|
|
12
|
+
onHide: DirectEventHandler<null>;
|
|
13
13
|
opacity?: WithDefault<Float, 0.0>;
|
|
14
14
|
}
|
|
15
15
|
|
package/src/TranslateContext.tsx
CHANGED
|
@@ -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
|
|
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
|
};
|