@tarojs/taro-rn 4.0.1 → 4.0.3-alpha.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 (199) hide show
  1. package/LICENSE +8 -8
  2. package/apiList.js +31 -31
  3. package/dist/api/index.js +1 -1
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/lib/Mask.js +2 -2
  6. package/dist/lib/Mask.js.map +1 -1
  7. package/dist/lib/Popup.js +20 -13
  8. package/dist/lib/Popup.js.map +1 -1
  9. package/dist/lib/StyleSheet.js +1 -1
  10. package/dist/lib/StyleSheet.js.map +1 -1
  11. package/dist/lib/accelerometer.js +1 -1
  12. package/dist/lib/accelerometer.js.map +1 -1
  13. package/dist/lib/chooseImage/index.js +3 -151
  14. package/dist/lib/chooseImage/index.js.map +1 -1
  15. package/dist/lib/chooseMedia/index.js +19 -0
  16. package/dist/lib/chooseMedia/index.js.map +1 -0
  17. package/dist/lib/chooseVideo/index.js +1 -55
  18. package/dist/lib/chooseVideo/index.js.map +1 -1
  19. package/dist/lib/clearStorage/index.js +2 -2
  20. package/dist/lib/clearStorage/index.js.map +1 -1
  21. package/dist/lib/compressImage/index.js +1 -1
  22. package/dist/lib/compressImage/index.js.map +1 -1
  23. package/dist/lib/connectSocket/index.js.map +1 -1
  24. package/dist/lib/connectSocket/socketTask.js +1 -1
  25. package/dist/lib/connectSocket/socketTask.js.map +1 -1
  26. package/dist/lib/createCameraContext/index.js +3 -3
  27. package/dist/lib/createCameraContext/index.js.map +1 -1
  28. package/dist/lib/createInnerAudioContext/index.js +2 -2
  29. package/dist/lib/createInnerAudioContext/index.js.map +1 -1
  30. package/dist/lib/createVideoContext/index.js +7 -7
  31. package/dist/lib/createVideoContext/index.js.map +1 -1
  32. package/dist/lib/deviceMotion.js +2 -2
  33. package/dist/lib/deviceMotion.js.map +1 -1
  34. package/dist/lib/file.js +4 -4
  35. package/dist/lib/file.js.map +1 -1
  36. package/dist/lib/getAppBaseInfo/index.js +2 -2
  37. package/dist/lib/getAppBaseInfo/index.js.map +1 -1
  38. package/dist/lib/getClipboardData/index.js.map +1 -1
  39. package/dist/lib/getImageInfo/index.js +2 -2
  40. package/dist/lib/getImageInfo/index.js.map +1 -1
  41. package/dist/lib/getLocation/index.js +8 -4
  42. package/dist/lib/getLocation/index.js.map +1 -1
  43. package/dist/lib/getRecorderManager/index.js +11 -6
  44. package/dist/lib/getRecorderManager/index.js.map +1 -1
  45. package/dist/lib/getStorage/index.js.map +1 -1
  46. package/dist/lib/getStorageInfo/index.js +2 -2
  47. package/dist/lib/getStorageInfo/index.js.map +1 -1
  48. package/dist/lib/getSystemInfo/index.js +1 -1
  49. package/dist/lib/getSystemInfo/index.js.map +1 -1
  50. package/dist/lib/getSystemInfoSync/index.js +2 -2
  51. package/dist/lib/getSystemInfoSync/index.js.map +1 -1
  52. package/dist/lib/gyroscope.js +1 -1
  53. package/dist/lib/gyroscope.js.map +1 -1
  54. package/dist/lib/index.js +1 -0
  55. package/dist/lib/index.js.map +1 -1
  56. package/dist/lib/keyboard.js +3 -3
  57. package/dist/lib/keyboard.js.map +1 -1
  58. package/dist/lib/location.js.map +1 -1
  59. package/dist/lib/makePhoneCall/index.js +1 -1
  60. package/dist/lib/makePhoneCall/index.js.map +1 -1
  61. package/dist/lib/media.js +61 -30
  62. package/dist/lib/media.js.map +1 -1
  63. package/dist/lib/network.js +1 -1
  64. package/dist/lib/network.js.map +1 -1
  65. package/dist/lib/offWindowResize/index.js.map +1 -1
  66. package/dist/lib/onWindowResize/index.js +1 -1
  67. package/dist/lib/onWindowResize/index.js.map +1 -1
  68. package/dist/lib/openUrl/index.js +1 -1
  69. package/dist/lib/openUrl/index.js.map +1 -1
  70. package/dist/lib/permission.js +6 -5
  71. package/dist/lib/permission.js.map +1 -1
  72. package/dist/lib/previewImage/index.js +3 -3
  73. package/dist/lib/previewImage/index.js.map +1 -1
  74. package/dist/lib/request/index.js +1 -1
  75. package/dist/lib/request/index.js.map +1 -1
  76. package/dist/lib/scanCode/index.js +23 -23
  77. package/dist/lib/scanCode/index.js.map +1 -1
  78. package/dist/lib/screen.js +2 -2
  79. package/dist/lib/screen.js.map +1 -1
  80. package/dist/lib/setClipboardData/index.js +2 -2
  81. package/dist/lib/setClipboardData/index.js.map +1 -1
  82. package/dist/lib/setKeepScreenOn/index.js +1 -1
  83. package/dist/lib/setKeepScreenOn/index.js.map +1 -1
  84. package/dist/lib/setStorage/index.js.map +1 -1
  85. package/dist/lib/showActionSheet/ActionSheet.js +11 -23
  86. package/dist/lib/showActionSheet/ActionSheet.js.map +1 -1
  87. package/dist/lib/showActionSheet/index.js +10 -24
  88. package/dist/lib/showActionSheet/index.js.map +1 -1
  89. package/dist/lib/showModal/Dialog.js +22 -36
  90. package/dist/lib/showModal/Dialog.js.map +1 -1
  91. package/dist/lib/showModal/index.js.map +1 -1
  92. package/dist/lib/showModal/toast.js +6 -6
  93. package/dist/lib/showModal/toast.js.map +1 -1
  94. package/dist/lib/unsupportedApi.js +2 -4
  95. package/dist/lib/unsupportedApi.js.map +1 -1
  96. package/dist/lib/variable.js +1 -1
  97. package/dist/lib/variable.js.map +1 -1
  98. package/dist/lib/vibrate.js +1 -1
  99. package/dist/lib/vibrate.js.map +1 -1
  100. package/dist/lib/window.js.map +1 -1
  101. package/dist/utils/callbackManager.js.map +1 -1
  102. package/dist/utils/index.js.map +1 -1
  103. package/libList.js +1 -0
  104. package/package.json +70 -69
  105. package/src/api/index.ts +31 -31
  106. package/src/lib/ENV_TYPE/index.ts +1 -1
  107. package/src/lib/Mask.tsx +2 -2
  108. package/src/lib/Popup.tsx +26 -19
  109. package/src/lib/StyleSheet.ts +1 -1
  110. package/src/lib/accelerometer.ts +2 -1
  111. package/src/lib/arrayBufferToBase64/index.ts +1 -1
  112. package/src/lib/base64ToArrayBuffer/index.ts +1 -1
  113. package/src/lib/chooseImage/index.ts +3 -155
  114. package/src/lib/chooseMedia/index.ts +15 -0
  115. package/src/lib/chooseVideo/index.ts +1 -56
  116. package/src/lib/clearStorage/index.ts +1 -0
  117. package/src/lib/clearStorageSync/index.ts +1 -1
  118. package/src/lib/compressImage/index.ts +1 -0
  119. package/src/lib/connectSocket/socketTask.ts +7 -9
  120. package/src/lib/createCameraContext/index.ts +6 -4
  121. package/src/lib/createInnerAudioContext/index.ts +1 -0
  122. package/src/lib/createSelectorQuery/index.ts +1 -1
  123. package/src/lib/deviceMotion.ts +4 -3
  124. package/src/lib/file.ts +9 -8
  125. package/src/lib/getClipboardData/index.ts +1 -0
  126. package/src/lib/getEnv/index.ts +1 -1
  127. package/src/lib/getFileSystemManager/index.ts +1 -1
  128. package/src/lib/getLocation/index.ts +7 -2
  129. package/src/lib/getRecorderManager/index.ts +7 -2
  130. package/src/lib/getStorage/index.ts +1 -0
  131. package/src/lib/getStorageInfo/index.ts +1 -0
  132. package/src/lib/getStorageInfoSync/index.ts +1 -1
  133. package/src/lib/getStorageSync/index.ts +1 -1
  134. package/src/lib/getSystemInfo/index.ts +2 -2
  135. package/src/lib/getSystemInfoSync/index.ts +3 -3
  136. package/src/lib/gyroscope.ts +47 -46
  137. package/src/lib/index.ts +1 -0
  138. package/src/lib/keyboard.ts +5 -4
  139. package/src/lib/location.ts +6 -5
  140. package/src/lib/makePhoneCall/index.ts +2 -1
  141. package/src/lib/media.ts +83 -31
  142. package/src/lib/network.ts +5 -5
  143. package/src/lib/offLocationChange/index.ts +1 -1
  144. package/src/lib/offUserCaptureScreen/index.ts +1 -1
  145. package/src/lib/onLocationChange/index.ts +1 -1
  146. package/src/lib/onUserCaptureScreen/index.ts +1 -1
  147. package/src/lib/onWindowResize/index.ts +2 -2
  148. package/src/lib/openUrl/index.d.ts +23 -22
  149. package/src/lib/openUrl/index.ts +2 -1
  150. package/src/lib/permission.ts +33 -25
  151. package/src/lib/previewImage/index.tsx +4 -3
  152. package/src/lib/removeStorageSync/index.ts +1 -1
  153. package/src/lib/request/index.ts +2 -2
  154. package/src/lib/scanCode/index.tsx +18 -16
  155. package/src/lib/screen.ts +1 -0
  156. package/src/lib/setClipboardData/index.ts +3 -2
  157. package/src/lib/setKeepScreenOn/index.ts +2 -1
  158. package/src/lib/setStorage/index.ts +1 -0
  159. package/src/lib/setStorageSync/index.ts +1 -1
  160. package/src/lib/showActionSheet/ActionSheet.tsx +34 -43
  161. package/src/lib/showActionSheet/index.tsx +11 -36
  162. package/src/lib/showModal/Dialog.tsx +34 -39
  163. package/src/lib/showModal/index.tsx +1 -0
  164. package/src/lib/showModal/toast.tsx +14 -13
  165. package/src/lib/startGyroscope/index.ts +1 -1
  166. package/src/lib/startLocationUpdate/index.ts +1 -1
  167. package/src/lib/unsupportedApi.ts +3 -5
  168. package/src/lib/vibrate.ts +11 -10
  169. package/src/lib/window.ts +3 -2
  170. package/src/utils/callbackManager.ts +5 -5
  171. package/src/utils/index.ts +4 -4
  172. package/{src/types → types}/vue/index.d.ts +2 -3
  173. package/dist/setup.js +0 -75
  174. package/dist/setup.js.map +0 -1
  175. package/src/__tests__/__mock__/mockAsyncStorage.js +0 -47
  176. package/src/__tests__/__mock__/mockClipboard.js +0 -15
  177. package/src/__tests__/__mock__/mockNavigator.js +0 -20
  178. package/src/__tests__/__mock__/mockNetwork.js +0 -59
  179. package/src/__tests__/__mock__/mockRNCCameraRoll.js +0 -16
  180. package/src/__tests__/__mock__/mockRNCGeolocation.js +0 -13
  181. package/src/__tests__/__mock__/mockVibrate.js +0 -6
  182. package/src/__tests__/__snapshots__/scanCode.test.tsx.snap +0 -125
  183. package/src/__tests__/clipboard.test.ts +0 -88
  184. package/src/__tests__/deviceMotion.test.ts +0 -37
  185. package/src/__tests__/geolocation.test.ts +0 -60
  186. package/src/__tests__/interactive.test.tsx +0 -101
  187. package/src/__tests__/keyboard.test.ts +0 -46
  188. package/src/__tests__/media.test.ts +0 -104
  189. package/src/__tests__/network.test.ts +0 -57
  190. package/src/__tests__/others.test.ts +0 -25
  191. package/src/__tests__/phone.test.ts +0 -31
  192. package/src/__tests__/request.test.ts +0 -146
  193. package/src/__tests__/scanCode.test.tsx +0 -14
  194. package/src/__tests__/storage.test.ts +0 -202
  195. package/src/__tests__/system.test.ts +0 -69
  196. package/src/__tests__/vibrate.test.ts +0 -27
  197. package/src/__tests__/websocket.test.ts +0 -169
  198. package/src/setup.ts +0 -84
  199. /package/{src/types → types}/definition.d.ts +0 -0
@@ -1,24 +1,25 @@
1
1
  declare namespace Taro {
2
- namespace OpenUrl {
3
- interface Option {
4
- /** 跳转链接 */
5
- url: string
6
- /** 接口调用结束的回调函数(调用成功、失败都会执行) */
7
- complete?: (res: TaroGeneral.CallbackResult) => void
8
- /** 接口调用失败的回调函数 */
9
- fail?: (res: TaroGeneral.CallbackResult) => void
10
- /** 接口调用成功的回调函数 */
11
- success?: (res: TaroGeneral.CallbackResult) => void
12
- }
13
- }
14
- /**
15
- * 由于 Expo 不支持原生的 SDK,所以无法通过集成原生的 SDK 的方式使用微信/支付宝支付。
16
- * 所以 RN 端提供了 `Taro.openUrl({url:''})`的 API 打开手机浏览器,然后走 [手机网站支付](https://docs.open.alipay.com/203/105288/) 的流程。
17
- * @param {Object} opts
18
- * @param {string} [opts.url] 跳转链接
19
- * @param {function} [opts.success] 接口调用成功的回调函数
20
- * @param {function} [opts.fail] 接口调用失败的回调函数
21
- * @param {function} [opts.complete] 接口调用结束的回调函数(调用成功、失败都会执行)
22
- */
23
- function openUrl<T>(opts: Taro.OpenUrl.Option): Promise<T>
2
+ namespace OpenUrl {
3
+ interface Option {
4
+ /** 跳转链接 */
5
+ url: string
6
+ /** 接口调用结束的回调函数(调用成功、失败都会执行) */
7
+ complete?: (res: TaroGeneral.CallbackResult) => void
8
+ /** 接口调用失败的回调函数 */
9
+ fail?: (res: TaroGeneral.CallbackResult) => void
10
+ /** 接口调用成功的回调函数 */
11
+ success?: (res: TaroGeneral.CallbackResult) => void
12
+ }
13
+ }
14
+
15
+ /**
16
+ * 由于 Expo 不支持原生的 SDK,所以无法通过集成原生的 SDK 的方式使用微信/支付宝支付。
17
+ * 所以 RN 端提供了 `Taro.openUrl({url:''})`的 API 打开手机浏览器,然后走 [手机网站支付](https://docs.open.alipay.com/203/105288/) 的流程。
18
+ * @param {Object} opts
19
+ * @param {string} [opts.url] 跳转链接
20
+ * @param {function} [opts.success] 接口调用成功的回调函数
21
+ * @param {function} [opts.fail] 接口调用失败的回调函数
22
+ * @param {function} [opts.complete] 接口调用结束的回调函数(调用成功、失败都会执行)
23
+ */
24
+ function openUrl<T>(opts: Taro.OpenUrl.Option): Promise<T>
24
25
  }
@@ -1,5 +1,6 @@
1
1
  import { Linking } from 'react-native'
2
- import { successHandler, errorHandler } from '../../utils'
2
+
3
+ import { errorHandler, successHandler } from '../../utils'
3
4
 
4
5
  export async function openUrl <T>(opts: Taro.OpenUrl.Option): Promise<T> {
5
6
  const { url, success, fail, complete } = opts || {} as Taro.OpenUrl.Option
@@ -1,5 +1,4 @@
1
- import { Linking, AppState, NativeEventSubscription } from 'react-native';
2
- import { getCameraPermissionsAsync, getMicrophonePermissionsAsync, requestCameraPermissionsAsync, requestMicrophonePermissionsAsync } from 'expo-camera'
1
+ import { Camera } from 'expo-camera'
3
2
  import { getMediaLibraryPermissionsAsync, requestMediaLibraryPermissionsAsync } from 'expo-image-picker'
4
3
  import {
5
4
  getForegroundPermissionsAsync,
@@ -7,7 +6,16 @@ import {
7
6
  requestForegroundPermissionsAsync,
8
7
  // requestBackgroundPermissionsAsync
9
8
  } from 'expo-location'
10
- import { errorHandler, successHandler } from '../utils';
9
+ import { AppState, Linking, NativeEventSubscription } from 'react-native'
10
+
11
+ import { errorHandler, successHandler } from '../utils'
12
+
13
+ const {
14
+ getCameraPermissionsAsync,
15
+ getMicrophonePermissionsAsync,
16
+ requestCameraPermissionsAsync,
17
+ requestMicrophonePermissionsAsync
18
+ } = Camera
11
19
 
12
20
  const scopeMap = {
13
21
  'scope.userLocation': [getForegroundPermissionsAsync, requestForegroundPermissionsAsync],
@@ -27,7 +35,7 @@ let stateListener // 缓存监听函数
27
35
  let appStateSubscription: NativeEventSubscription | undefined
28
36
 
29
37
  const getAuthSetting = async () => {
30
- let auths = {}
38
+ const auths = {}
31
39
 
32
40
  await Promise.all(Object.keys(scopeMap).map(async key => {
33
41
  const { granted } = await scopeMap[key][0]()
@@ -47,7 +55,7 @@ const handleAppStateChange = async (_nextAppState, resolve, reject, opts) => {
47
55
  res.errMsg = 'openSetting:ok'
48
56
  success?.(res)
49
57
  complete?.(res)
50
-
58
+
51
59
  appStateSubscription?.remove()
52
60
  resolve(res)
53
61
  } catch (error) {
@@ -59,39 +67,39 @@ const handleAppStateChange = async (_nextAppState, resolve, reject, opts) => {
59
67
  }
60
68
  }
61
69
  // AppState.currentState = nextAppState;
62
- };
70
+ }
63
71
 
64
72
  export async function authorize(opts: Taro.authorize.Option): Promise<TaroGeneral.CallbackResult> {
65
73
  const { scope, success, fail, complete } = opts
66
74
  const res: any = {}
67
75
 
68
- try {
69
- const { granted } = await scopeMap[scope][1]()
70
- if (granted) {
71
- res.errMsg = 'authorize:ok'
72
- return successHandler(success, complete)(res)
73
- } else {
74
- res.errMsg = 'authorize:denied/undetermined'
75
- return errorHandler(fail, complete)(res)
76
- }
77
- } catch (error) {
78
- res.errMsg = 'authorize:fail'
76
+ try {
77
+ const { granted } = await scopeMap[scope][1]()
78
+ if (granted) {
79
+ res.errMsg = 'authorize:ok'
80
+ return successHandler(success, complete)(res)
81
+ } else {
82
+ res.errMsg = 'authorize:denied/undetermined'
79
83
  return errorHandler(fail, complete)(res)
80
84
  }
85
+ } catch (error) {
86
+ res.errMsg = 'authorize:fail'
87
+ return errorHandler(fail, complete)(res)
88
+ }
81
89
  }
82
90
 
83
91
  export async function getSetting(opts: Taro.getSetting.Option = {}): Promise<Taro.getSetting.SuccessCallbackResult> {
84
92
  const { success, fail, complete } = opts
85
93
  const res: any = {}
86
94
 
87
- try {
88
- res.authSetting = await getAuthSetting()
89
- res.errMsg = 'getSetting:ok'
90
- return successHandler(success, complete)(res)
91
- } catch (error) {
92
- res.errMsg = 'getSetting:fail'
93
- return errorHandler(fail, complete)(res)
94
- }
95
+ try {
96
+ res.authSetting = await getAuthSetting()
97
+ res.errMsg = 'getSetting:ok'
98
+ return successHandler(success, complete)(res)
99
+ } catch (error) {
100
+ res.errMsg = 'getSetting:fail'
101
+ return errorHandler(fail, complete)(res)
102
+ }
95
103
  }
96
104
 
97
105
  export function openSetting(opts: Taro.openSetting.Option = {}): Promise<Taro.openSetting.SuccessCallbackResult> {
@@ -1,9 +1,10 @@
1
1
  import React from 'react'
2
- import { View, ActivityIndicator, StyleSheet, Alert, Modal } from 'react-native'
3
- import RootSiblings from 'react-native-root-siblings'
2
+ import { ActivityIndicator, Alert, Modal, StyleSheet, View } from 'react-native'
4
3
  import ImageViewer from 'react-native-image-zoom-viewer'
5
- import { saveMedia } from '../media'
4
+ import RootSiblings from 'react-native-root-siblings'
5
+
6
6
  import { downloadFile } from '../file'
7
+ import { saveMedia } from '../media'
7
8
 
8
9
  const styles = StyleSheet.create({
9
10
  mask: {
@@ -1 +1 @@
1
- export { removeStorageSync } from '../unsupportedApi'
1
+ export { removeStorageSync } from '../unsupportedApi'
@@ -1,4 +1,4 @@
1
- import { errorHandler, successHandler } from "../../utils"
1
+ import { errorHandler, successHandler } from '../../utils'
2
2
 
3
3
  function serializeParams(params) {
4
4
  if (!params) {
@@ -53,7 +53,7 @@ function _request<T = any>(options: Taro.request.Option): Taro.RequestTask<T> {
53
53
  params.method = method
54
54
  let controller
55
55
  // eslint-disable-next-line no-undef
56
- if (typeof(AbortController) !== 'undefined' ) {
56
+ if (typeof (AbortController) !== 'undefined') {
57
57
  // eslint-disable-next-line no-undef
58
58
  controller = new AbortController()
59
59
  const signal = controller.signal
@@ -1,12 +1,13 @@
1
- import { initialWindowMetrics } from 'react-native-safe-area-context'
2
- import { Camera } from 'expo-camera'
3
1
  import { BarCodeScanner, requestPermissionsAsync } from 'expo-barcode-scanner'
4
- import { BackHandler, Image, TouchableOpacity, StyleSheet, View, Dimensions, Platform, StatusBar } from 'react-native'
5
- import iconClose from './icon_close.png'
6
- import iconPic from './icon_pic.png'
2
+ import { BarcodeType, CameraView } from 'expo-camera'
3
+ import React from 'react'
4
+ import { BackHandler, Dimensions, Image, Platform, StatusBar, StyleSheet, TouchableOpacity, View } from 'react-native'
7
5
  import RootSiblings from 'react-native-root-siblings'
6
+ import { initialWindowMetrics } from 'react-native-safe-area-context'
7
+
8
8
  import { chooseMedia, MEDIA_TYPE } from '../media'
9
- import React from 'react'
9
+ import iconClose from './icon_close.png'
10
+ import iconPic from './icon_pic.png'
10
11
 
11
12
  export let scannerView
12
13
 
@@ -47,13 +48,15 @@ function findKey (value:string, data, compare = (a, b) => a === b):string {
47
48
 
48
49
  const { width, height } = Dimensions.get('screen')
49
50
 
50
- function getBarCodeTypes(types:string[]):string[] {
51
- const result:string[] = []
51
+ function getBarCodeTypes(types:string[]): BarcodeType[] {
52
+ const result: BarcodeType[] = []
53
+
52
54
  for (const t of types) {
53
55
  result.push(...typeMap[t].map(type => {
54
56
  return BarCodeType[type]
55
57
  }))
56
58
  }
59
+
57
60
  return result.filter(r => !!r)
58
61
  }
59
62
 
@@ -143,25 +146,25 @@ function scanFromPhoto(callback, errorCallBack) {
143
146
  })
144
147
  }
145
148
  }
146
- }, MEDIA_TYPE.IMAGES).catch(errorCallBack)
149
+ }, MEDIA_TYPE.Images).catch(errorCallBack)
147
150
  }
148
151
 
149
152
  export async function scanCode(option: Taro.scanCode.Option = {}): Promise<Taro.scanCode.SuccessCallbackResult> {
150
153
  const { success, fail, complete, onlyFromCamera, scanType = ['barCode', 'qrCode'] } = option
151
- const { granted } = await requestPermissionsAsync();
154
+ const { granted } = await requestPermissionsAsync()
152
155
  if (!granted) {
153
156
  const res = { errMsg: 'Permissions denied!' }
154
157
  fail?.(res)
155
158
  complete?.(res)
156
159
  return Promise.reject(res)
157
160
  }
158
- const barCodeTypes = getBarCodeTypes(scanType)
161
+ const barcodeTypes = getBarCodeTypes(scanType)
159
162
  return new Promise((resolve, reject) => {
160
163
  scannerView = new RootSiblings(
161
164
  (<View style={[styles.container]}>
162
165
  <StatusBar backgroundColor="rgba(0, 0, 0, 0)" translucent hidden={Platform.OS === 'ios'} />
163
- <Camera
164
- onBarCodeScanned={({ type, data }: {type: string, data: string}) => {
166
+ <CameraView
167
+ onBarcodeScanned={({ type, data }: {type: string, data: string}) => {
165
168
  const res = {
166
169
  charSet: 'UTF-8', // todo
167
170
  path: '', // todo
@@ -175,11 +178,10 @@ export async function scanCode(option: Taro.scanCode.Option = {}): Promise<Taro.
175
178
  hide(scannerView)
176
179
  resolve(res)
177
180
  }}
178
- barCodeScannerSettings={{
179
- barCodeTypes,
181
+ barcodeScannerSettings={{
182
+ barcodeTypes,
180
183
  }}
181
184
  style={{ width, height }}
182
- ratio='16:9'
183
185
  />
184
186
  <TouchableOpacity accessibilityLabel="Close" style={styles.closeIcon} onPress={() => hide(scannerView)}>
185
187
  {safeViewWrapper(<Image source={iconClose} style={styles.closeImg}/>)}
package/src/lib/screen.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as Brightness from 'expo-brightness'
2
+
2
3
  import { errorHandler, shouldBeObject, successHandler } from '../utils'
3
4
 
4
5
  /**
@@ -1,6 +1,7 @@
1
1
  import Clipboard from '@react-native-clipboard/clipboard'
2
+
3
+ import { errorHandler, successHandler } from '../../utils'
2
4
  import { showToast } from '../showModal/toast'
3
- import { successHandler, errorHandler } from '../../utils'
4
5
 
5
6
  export function setClipboardData(opts: Taro.setClipboardData.Option): Promise<Taro.setClipboardData.Promised> {
6
7
  const { data, success, fail, complete } = opts
@@ -18,7 +19,7 @@ export function setClipboardData(opts: Taro.setClipboardData.Option): Promise<Ta
18
19
  data,
19
20
  }
20
21
  showToast({
21
- icon: "none",
22
+ icon: 'none',
22
23
  title: '内容已复制'
23
24
  })
24
25
  return successHandler(success, complete)(res)
@@ -1,5 +1,6 @@
1
1
  import { activateKeepAwake, deactivateKeepAwake } from 'expo-keep-awake'
2
- import { successHandler, errorHandler } from '../../utils'
2
+
3
+ import { errorHandler, successHandler } from '../../utils'
3
4
 
4
5
  /**
5
6
  * keepScreenOn
@@ -1,4 +1,5 @@
1
1
  import AsyncStorage from '@react-native-async-storage/async-storage'
2
+
2
3
  import { errorHandler, successHandler } from '../../utils'
3
4
 
4
5
  export async function setStorage(option: Taro.setStorage.Option): Promise<TaroGeneral.CallbackResult> {
@@ -1 +1 @@
1
- export { setStorageSync } from '../unsupportedApi'
1
+ export { setStorageSync } from '../unsupportedApi'
@@ -1,19 +1,20 @@
1
- import React from 'react'
1
+ import { ViewPropTypes } from 'deprecated-react-native-prop-types'
2
2
  import PropTypes from 'prop-types'
3
+ import React from 'react'
3
4
  import {
4
- View,
5
+ Platform,
6
+ StyleSheet,
5
7
  Text,
6
8
  TouchableHighlight,
7
- StyleSheet,
8
- Platform
9
+ View
9
10
  } from 'react-native'
10
- import { ViewPropTypes } from 'deprecated-react-native-prop-types'
11
- import { initialWindowMetrics } from 'react-native-safe-area-context';
11
+ import { initialWindowMetrics } from 'react-native-safe-area-context'
12
+
12
13
  import { Popup } from '../Popup'
13
14
  import V from '../variable'
14
15
 
15
16
  const styles = StyleSheet.create({
16
- iosActionsheet: {
17
+ actionsheet: {
17
18
  backgroundColor: V.weuiBgColorDefault
18
19
  },
19
20
  androidActionsheetWrapper: {
@@ -21,11 +22,6 @@ const styles = StyleSheet.create({
21
22
  alignItems: 'center',
22
23
  justifyContent: 'center'
23
24
  },
24
- androidActionsheet: {
25
- width: 274,
26
- backgroundColor: V.weuiBgColorDefault,
27
- borderRadius: V.weuiActionSheetAndroidBorderRadius
28
- },
29
25
  actionsheetMenu: {
30
26
  backgroundColor: '#fff'
31
27
  },
@@ -36,29 +32,23 @@ const styles = StyleSheet.create({
36
32
  actionsheetCell: {
37
33
  borderTopWidth: StyleSheet.hairlineWidth,
38
34
  borderColor: V.weuiCellBorderColor,
39
- borderStyle: 'solid'
40
- },
41
- iosActionsheetCell: {
35
+ borderStyle: 'solid',
42
36
  paddingTop: 10,
43
- paddingBottom: 10
44
- },
45
- androidActionsheetCell: {
46
- paddingTop: 13,
47
- paddingBottom: 13,
37
+ paddingBottom: 10,
48
38
  paddingLeft: 24,
49
39
  paddingRight: 24
50
40
  },
41
+
51
42
  firstActionsheetCell: {
52
43
  borderTopWidth: 0
53
44
  },
54
- iosActionsheetCellText: {
45
+ actionSheetCellText: {
55
46
  textAlign: 'center',
56
47
  fontSize: 18,
57
48
  marginTop: ((18 * V.baseLineHeight) - 18) / 2,
58
49
  marginBottom: ((18 * V.baseLineHeight) - 18) / 2
59
50
  },
60
51
  androidActionsheetCellText: {
61
- textAlign: 'center',
62
52
  fontSize: 16,
63
53
  marginTop: ((16 * 1.4) - 16) / 2,
64
54
  marginBottom: ((16 * 1.4) - 16) / 2
@@ -105,7 +95,6 @@ const Index: React.FC<any> = ({
105
95
  underlayColor={underlayColor}
106
96
  style={[
107
97
  styles.actionsheetCell,
108
- styles[`${_type}ActionsheetCell`],
109
98
  idx === 0 ? styles.firstActionsheetCell : {},
110
99
  btnStyle
111
100
  ]}
@@ -113,6 +102,8 @@ const Index: React.FC<any> = ({
113
102
  >
114
103
  <Text
115
104
  style={[
105
+
106
+ styles.actionSheetCellText,
116
107
  styles[`${_type}ActionsheetCellText`],
117
108
  styles[`${btnType}ActionsheetCellText`],
118
109
  textStyle
@@ -128,7 +119,6 @@ const Index: React.FC<any> = ({
128
119
  underlayColor={underlayColor}
129
120
  style={[
130
121
  styles.actionsheetCell,
131
- styles[`${_type}ActionsheetCell`],
132
122
  idx === 0 ? styles.firstActionsheetCell : {},
133
123
  btnStyle
134
124
  ]}
@@ -136,6 +126,7 @@ const Index: React.FC<any> = ({
136
126
  >
137
127
  <Text
138
128
  style={[
129
+ styles.actionSheetCellText,
139
130
  styles[`${_type}ActionsheetCellText`],
140
131
  styles[`${btnType}ActionsheetCellText`],
141
132
  textStyle
@@ -145,29 +136,29 @@ const Index: React.FC<any> = ({
145
136
  )
146
137
 
147
138
  return <Popup
148
- visible={visible}
149
- style={[styles.iosActionsheet, style]}
150
- maskStyle={maskStyle}
151
- onShow={onShow}
152
- onClose={onClose}
153
- >
154
- {menus.length
155
- ? <View style={[styles.actionsheetMenu]}>
156
- {_renderMenuItems()}
157
- </View>
158
- : false}
159
- {actions.length
160
- ? <View style={[styles.actionsheetAction]}>
161
- {_renderActions()}
162
- </View>
163
- : false}
164
- <View style={{paddingBottom: Math.max(initialWindowMetrics?.insets.bottom || 0, 16), backgroundColor: '#fff'}}></View>
165
- </Popup>
139
+ visible={visible}
140
+ style={[styles.actionsheet, style]}
141
+ maskStyle={maskStyle}
142
+ onShow={onShow}
143
+ onClose={onClose}
144
+ >
145
+ {menus.length
146
+ ? <View style={[styles.actionsheetMenu]}>
147
+ {_renderMenuItems()}
148
+ </View>
149
+ : false}
150
+ {actions.length
151
+ ? <View style={[styles.actionsheetAction]}>
152
+ {_renderActions()}
153
+ </View>
154
+ : false}
155
+ <View style={{ paddingBottom: Math.max(initialWindowMetrics?.insets.bottom || 0, 16), backgroundColor: '#fff' }}></View>
156
+ </Popup>
166
157
  }
167
158
 
168
159
  Index.propTypes = {
169
160
  autoDectect: PropTypes.bool,
170
- type: PropTypes.oneOf(['ios', 'android']),
161
+ type: PropTypes.oneOf(['ios', 'android', 'harmony']),
171
162
  menus: PropTypes.any,
172
163
  actions: PropTypes.any,
173
164
  visible: PropTypes.bool,
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
2
  import RootSiblings from 'react-native-root-siblings'
3
+
3
4
  import ActionSheet from './ActionSheet'
4
5
 
5
6
  function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showActionSheet.SuccessCallbackResult> {
@@ -20,9 +21,13 @@ function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showAc
20
21
  sibling && sibling.destroy()
21
22
  sibling = undefined
22
23
  const res = { tapIndex, errMsg: 'showActionSheet:ok' }
23
- success?.(res)
24
- complete?.(res)
25
- resolve(res)
24
+ // fix: iOS 无法打开相册
25
+ // https://github.com/expo/expo/issues/25705
26
+ setTimeout(() => {
27
+ success?.(res)
28
+ complete?.(res)
29
+ resolve(res)
30
+ }, 1)
26
31
  }
27
32
 
28
33
  function onFail () {
@@ -38,7 +43,7 @@ function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showAc
38
43
  <ActionSheet
39
44
  autoDectect={autoDectect}
40
45
  type={type}
41
- visible={false}
46
+ visible={true}
42
47
  onClose={onFail}
43
48
  menus={
44
49
  itemList.map((item, index) => {
@@ -46,7 +51,7 @@ function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showAc
46
51
  type: 'default',
47
52
  label: item,
48
53
  textStyle: { color: itemColor },
49
- onPress: onSuccess.bind(this, index)
54
+ onPress: () => onSuccess(index)
50
55
  }
51
56
  }) as any
52
57
  }
@@ -55,41 +60,11 @@ function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showAc
55
60
  type: 'default',
56
61
  label: '取消',
57
62
  textStyle: { color: itemColor },
58
- onPress: onFail.bind(this)
63
+ onPress: onFail
59
64
  }
60
65
  ] as any}
61
66
  />
62
67
  )
63
-
64
- // hack 的做法。不推荐
65
- setTimeout(() => {
66
- sibling.update(
67
- <ActionSheet
68
- autoDectect={autoDectect}
69
- type={type}
70
- visible
71
- onClose={onFail}
72
- menus={
73
- itemList.map((item, index) => {
74
- return {
75
- type: 'default',
76
- label: item,
77
- textStyle: { color: itemColor },
78
- onPress: onSuccess.bind(this, index)
79
- }
80
- }) as any
81
- }
82
- actions={[
83
- {
84
- type: 'default',
85
- label: '取消',
86
- textStyle: { color: itemColor },
87
- onPress: onFail.bind(this)
88
- }
89
- ] as any}
90
- />
91
- )
92
- }, 100)
93
68
  })
94
69
  }
95
70