@tarojs/taro-h5 3.3.16 → 3.3.20

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 (306) hide show
  1. package/dist/api/ad/index.js +3 -0
  2. package/dist/api/ai/facial.js +4 -0
  3. package/dist/api/ai/index.js +2 -0
  4. package/dist/api/ai/visual.js +2 -0
  5. package/dist/api/alipay/index.js +2 -0
  6. package/dist/api/base/crypto.js +2 -0
  7. package/dist/api/base/debug.js +4 -0
  8. package/dist/api/base/index.js +16 -0
  9. package/dist/api/base/performance.js +3 -0
  10. package/dist/api/base/system/index.js +2 -0
  11. package/dist/api/base/system/info.js +56 -0
  12. package/dist/api/base/system/network.js +52 -0
  13. package/dist/api/base/update.js +3 -0
  14. package/dist/api/base/weapp/app-event.js +17 -0
  15. package/dist/api/base/weapp/life-cycle.js +3 -0
  16. package/dist/api/canvas/CanvasContext.js +182 -0
  17. package/dist/api/canvas/canvasGetImageData.js +21 -0
  18. package/dist/api/canvas/canvasPutImageData.js +17 -0
  19. package/dist/api/canvas/canvasToTempFilePath.js +18 -0
  20. package/dist/api/canvas/createCanvasContext.js +13 -0
  21. package/dist/api/canvas/index.js +7 -0
  22. package/dist/api/cloud/index.js +14 -0
  23. package/dist/api/data-analysis/index.js +5 -0
  24. package/dist/api/device/accelerometer.js +71 -0
  25. package/dist/api/device/accessibility.js +2 -0
  26. package/dist/api/device/battery.js +3 -0
  27. package/dist/api/device/bluetooth-ble.js +17 -0
  28. package/dist/api/device/bluetooth-peripheral.js +4 -0
  29. package/dist/api/device/bluetooth.js +14 -0
  30. package/dist/api/device/calendar.js +3 -0
  31. package/dist/api/device/clipboard.js +48 -0
  32. package/dist/api/device/compass.js +52 -0
  33. package/dist/api/device/contact.js +3 -0
  34. package/dist/api/device/crypto.js +2 -0
  35. package/dist/api/device/gyroscope.js +5 -0
  36. package/dist/api/device/iBeacon.js +8 -0
  37. package/dist/api/device/index.js +22 -0
  38. package/dist/api/device/keyboard.js +5 -0
  39. package/dist/api/device/memory.js +3 -0
  40. package/dist/api/device/motion.js +69 -0
  41. package/dist/api/device/nfc.js +8 -0
  42. package/dist/api/device/phone.js +23 -0
  43. package/dist/api/device/scan.js +5 -0
  44. package/dist/api/device/screen.js +7 -0
  45. package/dist/api/device/vibrate.js +29 -0
  46. package/dist/api/device/wifi.js +11 -0
  47. package/dist/api/ext/index.js +3 -0
  48. package/dist/api/files/index.js +9 -0
  49. package/dist/api/framework/index.js +6 -0
  50. package/dist/api/index.js +24 -0
  51. package/dist/api/location/chooseLocation.js +88 -0
  52. package/dist/api/location/index.js +12 -0
  53. package/dist/api/location/style.css +79 -0
  54. package/dist/api/media/audio/index.js +81 -0
  55. package/dist/api/media/background-audio.js +10 -0
  56. package/dist/api/media/camera.js +2 -0
  57. package/dist/api/media/editor.js +17 -0
  58. package/dist/api/media/image/chooseImage.js +70 -0
  59. package/dist/api/media/image/getImageInfo.js +27 -0
  60. package/dist/api/media/image/index.js +8 -0
  61. package/dist/api/media/image/previewImage.js +57 -0
  62. package/dist/api/media/index.js +13 -0
  63. package/dist/api/media/live.js +3 -0
  64. package/dist/api/media/map.js +2 -0
  65. package/dist/api/media/media-recorder.js +2 -0
  66. package/dist/api/media/recorder.js +4 -0
  67. package/dist/api/media/video/index.js +65 -0
  68. package/dist/api/media/video-decoder.js +2 -0
  69. package/dist/api/media/video-processing.js +2 -0
  70. package/dist/api/media/voip.js +15 -0
  71. package/dist/api/navigate/index.js +5 -0
  72. package/dist/api/network/download.js +101 -0
  73. package/dist/api/network/index.js +7 -0
  74. package/dist/api/network/mdns.js +11 -0
  75. package/dist/api/network/request/index.js +123 -0
  76. package/dist/api/network/tcp.js +2 -0
  77. package/dist/api/network/udp.js +2 -0
  78. package/dist/api/network/upload.js +129 -0
  79. package/dist/api/network/utils.js +30 -0
  80. package/dist/api/network/websocket/index.js +65 -0
  81. package/dist/api/network/websocket/socketTask.js +61 -0
  82. package/dist/api/open-api/account.js +2 -0
  83. package/dist/api/open-api/address.js +2 -0
  84. package/dist/api/open-api/authorize.js +3 -0
  85. package/dist/api/open-api/card.js +3 -0
  86. package/dist/api/open-api/channels-live.js +7 -0
  87. package/dist/api/open-api/customer-service.js +2 -0
  88. package/dist/api/open-api/facial.js +5 -0
  89. package/dist/api/open-api/favorites.js +3 -0
  90. package/dist/api/open-api/group.js +2 -0
  91. package/dist/api/open-api/index.js +18 -0
  92. package/dist/api/open-api/invoice.js +3 -0
  93. package/dist/api/open-api/license-plate.js +2 -0
  94. package/dist/api/open-api/login.js +4 -0
  95. package/dist/api/open-api/red-package.js +2 -0
  96. package/dist/api/open-api/settings.js +3 -0
  97. package/dist/api/open-api/soter.js +4 -0
  98. package/dist/api/open-api/subscribe-message.js +2 -0
  99. package/dist/api/open-api/user-info.js +3 -0
  100. package/dist/api/open-api/werun.js +3 -0
  101. package/dist/api/payment/index.js +3 -0
  102. package/dist/api/route/index.js +1 -0
  103. package/dist/api/share/index.js +11 -0
  104. package/dist/api/storage/background-fetch.js +5 -0
  105. package/dist/api/storage/index.js +152 -0
  106. package/dist/api/swan/index.js +22 -0
  107. package/dist/api/taro.js +59 -0
  108. package/dist/api/ui/animation/index.js +250 -0
  109. package/dist/api/ui/background.js +3 -0
  110. package/dist/api/ui/custom-component.js +2 -0
  111. package/dist/api/ui/fonts.js +2 -0
  112. package/dist/api/ui/index.js +12 -0
  113. package/dist/api/ui/interaction/actionSheet.js +172 -0
  114. package/dist/api/ui/interaction/index.js +263 -0
  115. package/dist/api/ui/interaction/modal.js +185 -0
  116. package/dist/api/ui/interaction/toast.js +179 -0
  117. package/dist/api/ui/menu.js +2 -0
  118. package/dist/api/ui/navigation-bar/index.js +37 -0
  119. package/dist/api/ui/pull-down-refresh.js +20 -0
  120. package/dist/api/ui/scroll/index.js +80 -0
  121. package/dist/api/ui/sticky.js +2 -0
  122. package/dist/api/ui/tab-bar.js +250 -0
  123. package/dist/api/ui/window.js +22 -0
  124. package/dist/api/utils/handler.js +64 -0
  125. package/dist/api/utils/index.js +141 -0
  126. package/dist/api/worker/index.js +2 -0
  127. package/dist/api/wxml/index.js +6 -0
  128. package/dist/api/wxml/nodesRef.js +42 -0
  129. package/dist/api/wxml/selectorQuery.js +188 -0
  130. package/dist/index.cjs.js +7477 -10829
  131. package/dist/index.js +4 -0
  132. package/dist/taroApis.js +1 -1
  133. package/dist/types/type.js +2 -0
  134. package/package.json +12 -15
  135. package/src/api/ad/index.ts +5 -0
  136. package/src/api/ai/facial.ts +6 -0
  137. package/src/api/ai/index.ts +2 -0
  138. package/src/api/ai/visual.ts +4 -0
  139. package/src/api/alipay/index.ts +4 -0
  140. package/src/api/base/crypto.ts +4 -0
  141. package/src/api/base/debug.ts +5 -0
  142. package/src/api/base/index.ts +23 -0
  143. package/src/api/base/performance.ts +5 -0
  144. package/src/api/base/system/index.ts +2 -0
  145. package/src/api/base/system/info.ts +64 -0
  146. package/src/api/base/system/network.ts +70 -0
  147. package/src/api/base/update.ts +5 -0
  148. package/src/api/base/weapp/app-event.ts +19 -0
  149. package/src/api/base/weapp/life-cycle.ts +5 -0
  150. package/src/api/canvas/CanvasContext.ts +233 -0
  151. package/src/api/canvas/canvasGetImageData.ts +27 -0
  152. package/src/api/canvas/canvasPutImageData.ts +24 -0
  153. package/src/api/canvas/canvasToTempFilePath.ts +24 -0
  154. package/src/api/canvas/createCanvasContext.ts +18 -0
  155. package/src/api/canvas/index.ts +10 -0
  156. package/src/api/cloud/index.ts +27 -0
  157. package/src/api/data-analysis/index.ts +6 -0
  158. package/src/api/device/accelerometer.ts +87 -0
  159. package/src/api/device/accessibility.ts +4 -0
  160. package/src/api/device/battery.ts +5 -0
  161. package/src/api/device/bluetooth-ble.ts +19 -0
  162. package/src/api/device/bluetooth-peripheral.ts +6 -0
  163. package/src/api/device/bluetooth.ts +16 -0
  164. package/src/api/device/calendar.ts +5 -0
  165. package/src/api/device/clipboard.ts +67 -0
  166. package/src/api/device/compass.ts +67 -0
  167. package/src/api/device/contact.ts +5 -0
  168. package/src/api/device/crypto.ts +4 -0
  169. package/src/api/device/gyroscope.ts +7 -0
  170. package/src/api/device/iBeacon.ts +10 -0
  171. package/src/api/device/index.ts +22 -0
  172. package/src/api/device/keyboard.ts +7 -0
  173. package/src/api/device/memory.ts +5 -0
  174. package/src/api/device/motion.ts +85 -0
  175. package/src/api/device/nfc.ts +10 -0
  176. package/src/api/device/phone.ts +30 -0
  177. package/src/api/device/scan.ts +7 -0
  178. package/src/api/device/screen.ts +9 -0
  179. package/src/api/device/vibrate.ts +36 -0
  180. package/src/api/device/wifi.ts +13 -0
  181. package/src/api/ext/index.ts +5 -0
  182. package/src/api/files/index.ts +11 -0
  183. package/src/api/framework/index.ts +10 -0
  184. package/src/api/index.ts +25 -0
  185. package/src/api/location/chooseLocation.ts +106 -0
  186. package/src/api/location/index.ts +19 -0
  187. package/src/api/location/style.css +8 -8
  188. package/src/api/media/audio/index.ts +105 -0
  189. package/src/api/media/background-audio.ts +12 -0
  190. package/src/api/media/camera.ts +4 -0
  191. package/src/api/media/editor.ts +29 -0
  192. package/src/api/media/image/chooseImage.ts +78 -0
  193. package/src/api/media/image/getImageInfo.ts +35 -0
  194. package/src/api/media/image/index.ts +13 -0
  195. package/src/api/media/image/previewImage.ts +80 -0
  196. package/src/api/media/index.ts +13 -0
  197. package/src/api/media/live.ts +5 -0
  198. package/src/api/media/map.ts +4 -0
  199. package/src/api/media/media-recorder.ts +4 -0
  200. package/src/api/media/recorder.ts +6 -0
  201. package/src/api/media/video/index.ts +82 -0
  202. package/src/api/media/video-decoder.ts +4 -0
  203. package/src/api/media/video-processing.ts +4 -0
  204. package/src/api/media/voip.ts +17 -0
  205. package/src/api/navigate/index.ts +7 -0
  206. package/src/api/{fileTransfer/downloadFile.js → network/download.ts} +16 -27
  207. package/src/api/network/index.ts +7 -0
  208. package/src/api/network/mdns.ts +13 -0
  209. package/src/api/{request/index.js → network/request/index.ts} +9 -6
  210. package/src/api/network/tcp.ts +4 -0
  211. package/src/api/network/udp.ts +4 -0
  212. package/src/api/{fileTransfer/uploadFile.js → network/upload.ts} +28 -32
  213. package/src/api/{fileTransfer/utils.js → network/utils.ts} +0 -0
  214. package/src/api/network/websocket/index.ts +88 -0
  215. package/src/api/{webSocket/socketTask.js → network/websocket/socketTask.ts} +17 -7
  216. package/src/api/open-api/account.ts +4 -0
  217. package/src/api/open-api/address.ts +4 -0
  218. package/src/api/open-api/authorize.ts +5 -0
  219. package/src/api/open-api/card.ts +5 -0
  220. package/src/api/open-api/channels-live.ts +9 -0
  221. package/src/api/open-api/customer-service.ts +4 -0
  222. package/src/api/open-api/facial.ts +7 -0
  223. package/src/api/open-api/favorites.ts +5 -0
  224. package/src/api/open-api/group.ts +4 -0
  225. package/src/api/open-api/index.ts +18 -0
  226. package/src/api/open-api/invoice.ts +5 -0
  227. package/src/api/open-api/license-plate.ts +4 -0
  228. package/src/api/open-api/login.ts +6 -0
  229. package/src/api/open-api/red-package.ts +4 -0
  230. package/src/api/open-api/settings.ts +5 -0
  231. package/src/api/open-api/soter.ts +6 -0
  232. package/src/api/open-api/subscribe-message.ts +4 -0
  233. package/src/api/open-api/user-info.ts +5 -0
  234. package/src/api/open-api/werun.ts +5 -0
  235. package/src/api/payment/index.ts +5 -0
  236. package/src/api/route/index.ts +10 -0
  237. package/src/api/share/index.ts +13 -0
  238. package/src/api/storage/background-fetch.ts +7 -0
  239. package/src/api/storage/index.ts +181 -0
  240. package/src/api/swan/index.ts +31 -0
  241. package/src/{taro/index.js → api/taro.ts} +133 -149
  242. package/src/api/{createAnimation/index.js → ui/animation/index.ts} +52 -41
  243. package/src/api/ui/background.ts +5 -0
  244. package/src/api/ui/custom-component.ts +4 -0
  245. package/src/api/ui/fonts.ts +4 -0
  246. package/src/api/ui/index.ts +12 -0
  247. package/src/api/ui/interaction/actionSheet.ts +212 -0
  248. package/src/api/{interactive/index.js → ui/interaction/index.ts} +93 -77
  249. package/src/api/ui/interaction/modal.ts +237 -0
  250. package/src/api/{interactive/toast.js → ui/interaction/toast.ts} +35 -33
  251. package/src/api/ui/menu.ts +4 -0
  252. package/src/api/ui/navigation-bar/index.ts +52 -0
  253. package/src/api/ui/pull-down-refresh.ts +27 -0
  254. package/src/api/ui/scroll/index.ts +85 -0
  255. package/src/api/ui/sticky.ts +4 -0
  256. package/src/api/ui/tab-bar.ts +326 -0
  257. package/src/api/ui/window.ts +37 -0
  258. package/src/api/utils/handler.ts +105 -0
  259. package/src/api/utils/{index.js → index.ts} +36 -115
  260. package/src/api/worker/index.ts +4 -0
  261. package/src/api/wxml/index.ts +9 -0
  262. package/src/api/wxml/nodesRef.ts +56 -0
  263. package/src/api/wxml/selectorQuery.ts +219 -0
  264. package/src/index.ts +6 -0
  265. package/src/types/api.d.ts +4 -0
  266. package/src/types/define.d.ts +2 -0
  267. package/{types → src/types}/index.d.ts +0 -0
  268. package/{types → src/types}/type.ts +1 -1
  269. package/src/api/accelerometer/index.js +0 -105
  270. package/src/api/audio/index.js +0 -137
  271. package/src/api/canvas/canvasGetImageData.js +0 -44
  272. package/src/api/canvas/canvasPutImageData.js +0 -45
  273. package/src/api/canvas/canvasToTempFilePath.js +0 -49
  274. package/src/api/canvas/createCanvasContext.js +0 -340
  275. package/src/api/canvas/index.js +0 -4
  276. package/src/api/clipboard/index.js +0 -113
  277. package/src/api/compass/index.js +0 -99
  278. package/src/api/createSelectorQuery/index.js +0 -193
  279. package/src/api/deviceMotion/index.js +0 -105
  280. package/src/api/fileTransfer/index.js +0 -2
  281. package/src/api/image/chooseImage.js +0 -87
  282. package/src/api/image/getImageInfo.js +0 -74
  283. package/src/api/image/index.js +0 -7
  284. package/src/api/image/previewImage.js +0 -94
  285. package/src/api/index.js +0 -29
  286. package/src/api/interactive/actionSheet.js +0 -214
  287. package/src/api/interactive/modal.js +0 -256
  288. package/src/api/location/chooseLocation.js +0 -143
  289. package/src/api/location/index.js +0 -5
  290. package/src/api/navigationBar/index.js +0 -57
  291. package/src/api/open/index.js +0 -5
  292. package/src/api/others/index.js +0 -43
  293. package/src/api/pullDownRefresh/index.js +0 -51
  294. package/src/api/scroll/index.js +0 -99
  295. package/src/api/storage/index.js +0 -211
  296. package/src/api/system/index.js +0 -9
  297. package/src/api/system/info.js +0 -36
  298. package/src/api/system/network.js +0 -68
  299. package/src/api/tabBar/index.js +0 -402
  300. package/src/api/unsupportedApi/index.js +0 -278
  301. package/src/api/vibrate/index.js +0 -49
  302. package/src/api/video/index.js +0 -87
  303. package/src/api/webSocket/index.js +0 -103
  304. package/src/api/window/index.js +0 -38
  305. package/src/index.cjs.js +0 -11
  306. package/src/index.js +0 -6
@@ -1,3 +1,5 @@
1
+ import Taro from '@tarojs/api'
2
+
1
3
  /**
2
4
  * H5 下的 styleSheet 操作
3
5
  * @author leeenx
@@ -7,14 +9,14 @@ class StyleSheet {
7
9
  this.$style = document.createElement('style')
8
10
  }
9
11
 
10
- $style = null
11
- sheet = null
12
+ $style: HTMLStyleElement
13
+ sheet?: CSSStyleSheet | null
12
14
  appendStyleSheet = () => {
13
- this.$style.setAttribute('type', 'text/css')
14
- this.$style.setAttribute('data-type', 'Taro')
15
+ this.$style?.setAttribute('type', 'text/css')
16
+ this.$style?.setAttribute('data-type', 'Taro')
15
17
  document.getElementsByTagName('head')[0].appendChild(this.$style)
16
- this.sheet = this.$style.sheet
17
- if (!('insertRule' in this.sheet)) {
18
+ this.sheet = this.$style?.sheet
19
+ if (this.sheet && !('insertRule' in this.sheet)) {
18
20
  console.warn('当前浏览器不支持 stylesheet.insertRule 接口')
19
21
  }
20
22
  }
@@ -25,7 +27,7 @@ class StyleSheet {
25
27
  // $style 未插入到 DOM
26
28
  this.appendStyleSheet()
27
29
  }
28
- this.sheet.insertRule(cssText, index)
30
+ this.sheet?.insertRule(cssText, index)
29
31
  }
30
32
  }
31
33
 
@@ -36,34 +38,39 @@ let TRANSITION_END = 'transitionend'
36
38
  let TRANSFORM = 'transform'
37
39
 
38
40
  const $detect = document.createElement('div')
39
- $detect.style.cssText = `
40
- -webkit-animation-name: webkit;
41
- -moz-animation-name: moz;
42
- -ms-animation-name: ms;
43
- animation-name: standard;
44
- `
41
+ $detect.style.cssText = '-webkit-animation-name:webkit;-moz-animation-name:moz;-ms-animation-name:ms;animation-name:standard;'
45
42
  if ($detect.style['animation-name'] === 'standard') {
46
43
  // 支持标准写法
47
44
  TRANSITION_END = 'transitionend'
48
45
  TRANSFORM = 'transform'
49
46
  } else if ($detect.style['-webkit-animation-name'] === 'webkit') {
50
47
  // webkit 前缀
51
- TRANSITION_END = 'webkitTransionEnd'
48
+ TRANSITION_END = 'webkitTransitionEnd'
52
49
  TRANSFORM = '-webkit-transform'
53
50
  } else if ($detect.style['-moz-animation-name'] === 'moz') {
54
- // webkit 前缀
55
- TRANSITION_END = 'mozTransionEnd'
51
+ // moz 前缀
52
+ TRANSITION_END = 'mozTransitionEnd'
56
53
  TRANSFORM = '-moz-transform'
57
54
  } else if ($detect.style['-ms-animation-name'] === 'ms') {
58
- // webkit 前缀
59
- TRANSITION_END = 'MSTransionEnd'
55
+ // ms 前缀
56
+ TRANSITION_END = 'msTransitionEnd'
60
57
  TRANSFORM = '-ms-transform'
61
58
  }
62
59
 
63
60
  let animId = 0
64
61
 
65
- // Animation
66
- class Animation {
62
+ interface IAnimationAttr {
63
+ duration: number
64
+ delay: number
65
+ timingFunction: string
66
+ transformOrigin: string
67
+ }
68
+
69
+ class Animation implements Taro.Animation {
70
+ unit: string
71
+ id: number
72
+ DEFAULT: IAnimationAttr
73
+
67
74
  constructor (
68
75
  {
69
76
  duration = 400,
@@ -71,7 +78,7 @@ class Animation {
71
78
  timingFunction = 'linear',
72
79
  transformOrigin = '50% 50% 0',
73
80
  unit = 'px'
74
- } = {}
81
+ }: Taro.createAnimation.Option = {}
75
82
  ) {
76
83
  // 默认值
77
84
  this.setDefault(duration, delay, timingFunction, transformOrigin)
@@ -81,8 +88,8 @@ class Animation {
81
88
  // 动画 id
82
89
  this.id = ++animId
83
90
  // 监听事件
84
- document.body.addEventListener(TRANSITION_END, e => {
85
- const { target } = e
91
+ document.body.addEventListener(TRANSITION_END, (e: TransitionEvent) => {
92
+ const target = e.target as HTMLElement
86
93
  if (target.getAttribute(animAttr) === null) {
87
94
  animAttr = 'data-animation'
88
95
  }
@@ -91,12 +98,13 @@ class Animation {
91
98
  if (animData === null) return
92
99
  const [animName, animPath] = animData.split('__')
93
100
  if (animName === `taro-h5-poly-fill/${this.id}/create-animation`) {
94
- const [animIndex, stepIndex = 0] = animPath.split('--')
101
+ const [animIndex, __stepIndex = 0] = animPath.split('--')
102
+ const stepIndex = Number(__stepIndex)
95
103
  // 动画总的关键帧
96
104
  const animStepsCount = this.animationMap[`${animName}__${animIndex}`]
97
105
  const animStepsMaxIndex = animStepsCount - 1
98
106
  if (stepIndex < animStepsMaxIndex) {
99
- // 播放下一个关键帧(因为 nevr 和 react 有差异所以 animation & data-animation 都需要写)
107
+ // 播放下一个关键帧(因为 nerv 和 react 有差异所以 animation & data-animation 都需要写)
100
108
  target.setAttribute(animAttr, `${animName}__${animIndex}--${stepIndex + 1}`)
101
109
  if (animAttr === 'animation') {
102
110
  // Nerv 环境,animation & data-animation 双重保险
@@ -108,7 +116,7 @@ class Animation {
108
116
  }
109
117
 
110
118
  transformUnit (...args) {
111
- const ret = []
119
+ const ret: string[] = []
112
120
  args.forEach(each => {
113
121
  ret.push(isNaN(each) ? each : `${each}${this.unit}`)
114
122
  })
@@ -121,32 +129,37 @@ class Animation {
121
129
  }
122
130
 
123
131
  // 属性组合
124
- rules = []
132
+ rules: string[] = []
125
133
  // transform 对象
126
134
  transform = [`${TRANSFORM}:`]
127
135
  // 组合动画
128
- steps = []
136
+ steps: string[] = []
129
137
  // 动画 map ----- 永久保留
130
138
  animationMap = {}
131
139
  // animationMap 的长度
132
140
  animationMapCount = 0
133
- matrix (a, b, c, d, e, f) {
134
- this.transform.push(`matrix(${a}, ${b}, ${c}, ${d}, ${e}, ${f})`)
141
+
142
+ matrix (a: number, b: number, c: number, d: number, tx: number, ty: number) {
143
+ this.transform.push(`matrix(${a}, ${b}, ${c}, ${d}, ${tx}, ${ty})`)
135
144
  return this
136
145
  }
137
146
 
138
- matrix3d (a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3, a4, b4, c4, d4) {
147
+ matrix3d (a1: number, b1: number, c1: number, d1: number, a2: number, b2: number, c2: number, d2: number, a3: number, b3: number, c3: number, d3: number, a4: number, b4: number, c4: number, d4: number) {
139
148
  this.transform.push(`matrix3d(${a1}, ${b1}, ${c1}, ${d1}, ${a2}, ${b2}, ${c2}, ${d2}, ${a3}, ${b3}, ${c3}, ${d3}, ${a4}, ${b4}, ${c4}, ${d4})`)
140
149
  return this
141
150
  }
142
151
 
143
- rotate (angle) {
152
+ rotate (angle: number) {
144
153
  this.transform.push(`rotate(${angle}deg)`)
145
154
  return this
146
155
  }
147
156
 
148
- rotate3d (x, y, z, angle) {
149
- this.transform.push(`rotate3d(${x}, ${y}, ${z}, ${angle}deg)`)
157
+ rotate3d (x: number, y?: number, z?: number, angle?: number) {
158
+ if (typeof y !== 'number') {
159
+ this.transform.push(`rotate3d(${x})`)
160
+ } else {
161
+ this.transform.push(`rotate3d(${x}, ${y || 0}, ${z || 0}, ${angle || 0}deg)`)
162
+ }
150
163
  return this
151
164
  }
152
165
 
@@ -284,7 +297,7 @@ class Animation {
284
297
  }
285
298
 
286
299
  // 关键帧载入
287
- step (arg = {}) {
300
+ step (arg: Partial<IAnimationAttr> = {}) {
288
301
  const { DEFAULT } = this
289
302
  const {
290
303
  duration = DEFAULT.duration,
@@ -306,7 +319,7 @@ class Animation {
306
319
  // 清空 rules 和 transform
307
320
  this.rules = []
308
321
  this.transform = [`${TRANSFORM}:`]
309
- return this
322
+ return this as Taro.Animation
310
323
  }
311
324
 
312
325
  // 创建底层数据
@@ -329,13 +342,11 @@ class Animation {
329
342
 
330
343
  // 动画数据产出
331
344
  export () {
332
- return this.createAnimationData()
345
+ return this.createAnimationData() as unknown as ReturnType<Taro.Animation['export']>
333
346
  }
334
347
  }
335
348
 
336
349
  // h5 的 createAnimation
337
- function createAnimation (...arg) {
338
- return new Animation(...arg)
350
+ export const createAnimation: typeof Taro.createAnimation = (option) => {
351
+ return new Animation(option)
339
352
  }
340
-
341
- export { createAnimation }
@@ -0,0 +1,5 @@
1
+ import { temporarilyNotSupport } from '../utils'
2
+
3
+ // 背景
4
+ export const setBackgroundTextStyle = temporarilyNotSupport('setBackgroundTextStyle')
5
+ export const setBackgroundColor = temporarilyNotSupport('setBackgroundColor')
@@ -0,0 +1,4 @@
1
+ import Taro from '@tarojs/api'
2
+
3
+ // 自定义组件
4
+ export const nextTick = Taro.nextTick
@@ -0,0 +1,4 @@
1
+ import { temporarilyNotSupport } from '../utils'
2
+
3
+ // 字体
4
+ export const loadFontFace = temporarilyNotSupport('loadFontFace')
@@ -0,0 +1,12 @@
1
+ export * from './animation'
2
+ export * from './background'
3
+ export * from './custom-component'
4
+ export * from './fonts'
5
+ export * from './menu'
6
+ export * from './navigation-bar'
7
+ export * from './pull-down-refresh'
8
+ export * from './scroll'
9
+ export * from './sticky'
10
+ export * from './tab-bar'
11
+ export * from './window'
12
+ export * from './interaction'
@@ -0,0 +1,212 @@
1
+ import { inlineStyle, setTransform } from '../../utils'
2
+
3
+ const noop = function () {}
4
+
5
+ export default class ActionSheet {
6
+ options = {
7
+ itemList: [],
8
+ itemColor: '#000000',
9
+ success: noop,
10
+ fail: noop,
11
+ complete: noop
12
+ }
13
+
14
+ style = {
15
+ maskStyle: {
16
+ position: 'fixed',
17
+ 'z-index': '1000',
18
+ top: '0',
19
+ right: '0',
20
+ left: '0',
21
+ bottom: '0',
22
+ background: 'rgba(0,0,0,0.6)'
23
+ },
24
+ actionSheetStyle: {
25
+ 'z-index': '4999',
26
+ position: 'fixed',
27
+ left: '0',
28
+ bottom: '0',
29
+ '-webkit-transform': 'translate(0, 100%)',
30
+ transform: 'translate(0, 100%)',
31
+ width: '100%',
32
+ 'line-height': '1.6',
33
+ background: '#EFEFF4',
34
+ '-webkit-transition': '-webkit-transform .3s',
35
+ transition: 'transform .3s'
36
+ },
37
+ menuStyle: {
38
+ 'background-color': '#FCFCFD'
39
+ },
40
+ cellStyle: {
41
+ position: 'relative',
42
+ padding: '10px 0',
43
+ 'text-align': 'center',
44
+ 'font-size': '18px'
45
+ },
46
+ cancelStyle: {
47
+ 'margin-top': '6px',
48
+ padding: '10px 0',
49
+ 'text-align': 'center',
50
+ 'font-size': '18px',
51
+ color: '#000000',
52
+ 'background-color': '#FCFCFD'
53
+ }
54
+ }
55
+
56
+ lastConfig = {}
57
+ el: HTMLDivElement
58
+ actionSheet: HTMLDivElement
59
+ menu: HTMLDivElement
60
+ cells: HTMLDivElement[]
61
+ cancel: HTMLDivElement
62
+ hideOpacityTimer: any
63
+ hideDisplayTimer: any
64
+
65
+ create (options = {}) {
66
+ return new Promise<string | number>((resolve) => {
67
+ // style
68
+ const { maskStyle, actionSheetStyle, menuStyle, cellStyle, cancelStyle } = this.style
69
+
70
+ // configuration
71
+ const config = {
72
+ ...this.options,
73
+ ...options
74
+ }
75
+
76
+ this.lastConfig = config
77
+
78
+ // wrapper
79
+ this.el = document.createElement('div')
80
+ this.el.className = 'taro__actionSheet'
81
+ this.el.style.opacity = '0'
82
+ this.el.style.transition = 'opacity 0.2s linear'
83
+
84
+ // mask
85
+ const mask = document.createElement('div')
86
+ mask.setAttribute('style', inlineStyle(maskStyle))
87
+
88
+ // actionSheet
89
+ this.actionSheet = document.createElement('div')
90
+ this.actionSheet.setAttribute('style', inlineStyle(actionSheetStyle))
91
+
92
+ // menu
93
+ this.menu = document.createElement('div')
94
+ this.menu.setAttribute('style', inlineStyle({
95
+ ...menuStyle,
96
+ color: config.itemColor
97
+ }))
98
+
99
+ // cells
100
+ this.cells = config.itemList.map((item, index) => {
101
+ const cell: HTMLDivElement = document.createElement('div')
102
+ cell.className = 'taro-actionsheet__cell'
103
+ cell.setAttribute('style', inlineStyle(cellStyle))
104
+ cell.textContent = item
105
+ cell.dataset.tapIndex = `${index}`
106
+ cell.onclick = e => {
107
+ this.hide()
108
+ const target = e.currentTarget as HTMLDivElement
109
+ const index = Number(target?.dataset.tapIndex) || 0
110
+ resolve(index)
111
+ }
112
+ return cell
113
+ })
114
+
115
+ // cancel
116
+ this.cancel = document.createElement('div')
117
+ this.cancel.setAttribute('style', inlineStyle(cancelStyle))
118
+ this.cancel.textContent = '取消'
119
+
120
+ // result
121
+ this.cells.forEach(item => this.menu.appendChild(item))
122
+ this.actionSheet.appendChild(this.menu)
123
+ this.actionSheet.appendChild(this.cancel)
124
+ this.el.appendChild(mask)
125
+ this.el.appendChild(this.actionSheet)
126
+
127
+ // callbacks
128
+ const cb = () => {
129
+ this.hide()
130
+ resolve('cancel')
131
+ }
132
+ mask.onclick = cb
133
+ this.cancel.onclick = cb
134
+
135
+ // show immediately
136
+ document.body.appendChild(this.el)
137
+ setTimeout(() => {
138
+ this.el.style.opacity = '1'
139
+ setTransform(this.actionSheet, 'translate(0, 0)')
140
+ }, 0)
141
+ })
142
+ }
143
+
144
+ show (options = {}) {
145
+ return new Promise<string | number>((resolve) => {
146
+ const config = {
147
+ ...this.options,
148
+ ...options
149
+ }
150
+
151
+ this.lastConfig = config
152
+
153
+ if (this.hideOpacityTimer) clearTimeout(this.hideOpacityTimer)
154
+ if (this.hideDisplayTimer) clearTimeout(this.hideDisplayTimer)
155
+
156
+ // itemColor
157
+ if (config.itemColor) this.menu.style.color = config.itemColor
158
+
159
+ // cells
160
+ const { cellStyle } = this.style
161
+
162
+ config.itemList.forEach((item, index) => {
163
+ let cell: HTMLDivElement
164
+ if (this.cells[index]) {
165
+ // assign new content
166
+ cell = this.cells[index]
167
+ } else {
168
+ // create new cell
169
+ cell = document.createElement('div')
170
+ cell.className = 'taro-actionsheet__cell'
171
+ cell.setAttribute('style', inlineStyle(cellStyle))
172
+ cell.dataset.tapIndex = `${index}`
173
+ this.cells.push(cell)
174
+ this.menu.appendChild(cell)
175
+ }
176
+ cell.textContent = item
177
+ cell.onclick = e => {
178
+ this.hide()
179
+ const target = e.currentTarget as HTMLDivElement
180
+ const index = Number(target?.dataset.tapIndex) || 0
181
+ resolve(index)
182
+ }
183
+ })
184
+ const cellsLen = this.cells.length
185
+ const itemListLen = config.itemList.length
186
+ if (cellsLen > itemListLen) {
187
+ for (let i = itemListLen; i < cellsLen; i++) {
188
+ this.menu.removeChild(this.cells[i])
189
+ }
190
+ this.cells.splice(itemListLen)
191
+ }
192
+
193
+ // show
194
+ this.el.style.display = 'block'
195
+ setTimeout(() => {
196
+ this.el.style.opacity = '1'
197
+ setTransform(this.actionSheet, 'translate(0, 0)')
198
+ }, 0)
199
+ })
200
+ }
201
+
202
+ hide () {
203
+ if (this.hideOpacityTimer) clearTimeout(this.hideOpacityTimer)
204
+ if (this.hideDisplayTimer) clearTimeout(this.hideDisplayTimer)
205
+
206
+ this.hideOpacityTimer = setTimeout(() => {
207
+ this.el.style.opacity = '0'
208
+ setTransform(this.actionSheet, 'translate(0, 100%)')
209
+ this.hideDisplayTimer = setTimeout(() => { this.el.style.display = 'none' }, 200)
210
+ }, 0)
211
+ }
212
+ }