oxy-uni-ui 1.2.0 → 2.0.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 (306) hide show
  1. package/attributes.json +1 -1
  2. package/components/common/abstracts/variable.scss +396 -321
  3. package/components/common/path.ts +9 -0
  4. package/components/common/util.ts +200 -5
  5. package/components/composables/index.ts +1 -0
  6. package/components/composables/useGlobalLoading.ts +42 -0
  7. package/components/composables/useGlobalMessage.ts +48 -0
  8. package/components/composables/useGlobalToast.ts +84 -0
  9. package/components/composables/usePopover.ts +24 -20
  10. package/components/composables/useVirtualScroll.ts +13 -11
  11. package/components/composables/useWindowResize.ts +35 -0
  12. package/components/oxy-action-sheet/index.scss +24 -11
  13. package/components/oxy-action-sheet/oxy-action-sheet.vue +27 -19
  14. package/components/oxy-action-sheet/types.ts +7 -0
  15. package/components/oxy-backtop/index.scss +3 -3
  16. package/components/oxy-backtop/oxy-backtop.vue +9 -6
  17. package/components/oxy-backtop/types.ts +7 -7
  18. package/components/oxy-badge/index.scss +4 -4
  19. package/components/oxy-badge/oxy-badge.vue +3 -3
  20. package/components/oxy-badge/types.ts +2 -2
  21. package/components/oxy-button/index.scss +5 -5
  22. package/components/oxy-button/oxy-button.vue +5 -1
  23. package/components/oxy-calendar/index.scss +11 -11
  24. package/components/oxy-calendar/oxy-calendar.vue +1 -0
  25. package/components/oxy-calendar/types.ts +5 -0
  26. package/components/oxy-calendar-view/month/index.scss +4 -4
  27. package/components/oxy-calendar-view/month/types.ts +36 -0
  28. package/components/oxy-calendar-view/monthPanel/index.scss +7 -7
  29. package/components/oxy-calendar-view/monthPanel/month-panel.vue +14 -8
  30. package/components/oxy-calendar-view/year/index.scss +4 -4
  31. package/components/oxy-calendar-view/yearPanel/index.scss +4 -4
  32. package/components/oxy-calendar-view/yearPanel/year-panel.vue +21 -5
  33. package/components/oxy-card/index.scss +2 -2
  34. package/components/oxy-cell/index.scss +8 -8
  35. package/components/oxy-cell/oxy-cell.vue +15 -2
  36. package/components/oxy-cell/types.ts +4 -0
  37. package/components/oxy-checkbox/index.scss +8 -8
  38. package/components/oxy-checkbox/oxy-checkbox.vue +2 -2
  39. package/components/oxy-checkbox-group/index.scss +2 -2
  40. package/components/oxy-circle/oxy-circle.vue +10 -7
  41. package/components/oxy-circle/types.ts +5 -5
  42. package/components/oxy-col/oxy-col.vue +2 -2
  43. package/components/oxy-col-picker/index.scss +4 -4
  44. package/components/oxy-col-picker/oxy-col-picker.vue +9 -5
  45. package/components/oxy-col-picker/types.ts +12 -3
  46. package/components/oxy-collapse/index.scss +2 -2
  47. package/components/oxy-collapse-item/oxy-collapse-item.vue +3 -3
  48. package/components/oxy-corner/index.scss +32 -32
  49. package/components/oxy-corner/oxy-corner.vue +15 -3
  50. package/components/oxy-corner/types.ts +15 -1
  51. package/components/oxy-count-to/oxy-count-to.vue +3 -3
  52. package/components/oxy-curtain/index.scss +15 -15
  53. package/components/oxy-curtain/oxy-curtain.vue +4 -2
  54. package/components/oxy-curtain/types.ts +6 -1
  55. package/components/oxy-date-strip/index.scss +10 -0
  56. package/components/oxy-date-strip/oxy-date-strip.vue +198 -0
  57. package/components/oxy-date-strip/types.ts +98 -0
  58. package/components/oxy-date-strip/utils.ts +67 -0
  59. package/components/oxy-date-strip-item/index.scss +94 -0
  60. package/components/oxy-date-strip-item/oxy-date-strip-item.vue +102 -0
  61. package/components/oxy-date-strip-item/types.ts +53 -0
  62. package/components/oxy-datetime-picker/index.scss +11 -11
  63. package/components/oxy-datetime-picker/oxy-datetime-picker.vue +4 -1
  64. package/components/oxy-datetime-picker/types.ts +10 -1
  65. package/components/oxy-drop-menu/index.scss +3 -3
  66. package/components/oxy-drop-menu/oxy-drop-menu.vue +3 -3
  67. package/components/oxy-drop-menu-item/index.scss +1 -1
  68. package/components/oxy-drop-menu-item/oxy-drop-menu-item.vue +4 -3
  69. package/components/oxy-drop-menu-item/types.ts +5 -0
  70. package/components/oxy-echarts/index.scss +17 -0
  71. package/components/oxy-echarts/index.ts +1 -0
  72. package/components/oxy-echarts/oxy-echarts.vue +32 -0
  73. package/components/oxy-echarts/types.ts +18 -0
  74. package/components/oxy-fab/index.scss +8 -8
  75. package/components/oxy-fab/oxy-fab.vue +22 -3
  76. package/components/oxy-file-list/index.scss +42 -15
  77. package/components/oxy-file-list/oxy-file-list.vue +208 -34
  78. package/components/oxy-file-list/types.ts +58 -2
  79. package/components/oxy-floating-panel/oxy-floating-panel.vue +13 -9
  80. package/components/oxy-floating-panel/{type.ts → types.ts} +8 -8
  81. package/components/oxy-footer/index.scss +19 -0
  82. package/components/oxy-footer/oxy-footer.vue +78 -0
  83. package/components/oxy-footer/types.ts +17 -0
  84. package/components/oxy-form-item/types.ts +22 -1
  85. package/components/oxy-gap/oxy-gap.vue +2 -2
  86. package/components/oxy-gap/types.ts +2 -2
  87. package/components/oxy-global-loading/oxy-global-loading.vue +53 -0
  88. package/components/oxy-global-message/oxy-global-message.vue +64 -0
  89. package/components/oxy-global-toast/oxy-global-toast.vue +53 -0
  90. package/components/oxy-grid/oxy-grid.vue +1 -1
  91. package/components/oxy-grid/types.ts +1 -1
  92. package/components/oxy-grid-item/index.scss +1 -1
  93. package/components/oxy-grid-item/oxy-grid-item.vue +7 -5
  94. package/components/oxy-grid-item/types.ts +1 -1
  95. package/components/oxy-guidance/index.scss +75 -0
  96. package/components/oxy-guidance/oxy-guidance.vue +201 -0
  97. package/components/oxy-guidance/types.ts +33 -0
  98. package/components/oxy-icon/oxy-icon.vue +2 -2
  99. package/components/oxy-icon/types.ts +1 -1
  100. package/components/oxy-img/oxy-img.vue +4 -4
  101. package/components/oxy-img/types.ts +3 -3
  102. package/components/oxy-img-cropper/index.scss +12 -12
  103. package/components/oxy-img-cropper/oxy-img-cropper.vue +97 -52
  104. package/components/oxy-img-cropper/types.ts +2 -2
  105. package/components/oxy-img-lazy/index.scss +17 -0
  106. package/components/oxy-img-lazy/oxy-img-lazy.vue +332 -0
  107. package/components/oxy-img-lazy/types.ts +69 -0
  108. package/components/oxy-index-anchor/index.scss +2 -2
  109. package/components/oxy-index-anchor/oxy-index-anchor.vue +2 -2
  110. package/components/oxy-index-anchor/{type.ts → types.ts} +3 -0
  111. package/components/oxy-index-bar/index.scss +3 -3
  112. package/components/oxy-index-bar/oxy-index-bar.vue +3 -3
  113. package/components/oxy-index-bar/{type.ts → types.ts} +2 -2
  114. package/components/oxy-input/index.scss +1 -1
  115. package/components/oxy-input-number/index.scss +5 -5
  116. package/components/oxy-input-number/oxy-input-number.vue +2 -2
  117. package/components/oxy-input-number/types.ts +3 -2
  118. package/components/oxy-keyboard/index.scss +5 -5
  119. package/components/oxy-keyboard/key/index.scss +3 -3
  120. package/components/oxy-keyboard/key/index.vue +2 -2
  121. package/components/oxy-keyboard/key/types.ts +15 -0
  122. package/components/oxy-keyboard/oxy-keyboard.vue +1 -0
  123. package/components/oxy-keyboard/types.ts +5 -0
  124. package/components/oxy-link/index.scss +57 -0
  125. package/components/oxy-link/oxy-link.vue +130 -0
  126. package/components/oxy-link/types.ts +81 -0
  127. package/components/oxy-list/index.scss +7 -1
  128. package/components/oxy-list/oxy-list.vue +4 -3
  129. package/components/oxy-list/types.ts +1 -1
  130. package/components/oxy-loading/oxy-loading.vue +8 -4
  131. package/components/oxy-loading/types.ts +1 -1
  132. package/components/oxy-loadmore/index.scss +3 -3
  133. package/components/oxy-long-press-menu/index.scss +93 -0
  134. package/components/oxy-long-press-menu/oxy-long-press-menu.vue +338 -0
  135. package/components/oxy-long-press-menu/types.ts +34 -0
  136. package/components/oxy-message-box/index.scss +12 -11
  137. package/components/oxy-message-box/oxy-message-box.vue +11 -3
  138. package/components/oxy-message-box/types.ts +14 -0
  139. package/components/oxy-navbar/index.scss +2 -2
  140. package/components/oxy-navbar/oxy-navbar.vue +58 -13
  141. package/components/oxy-navbar/types.ts +8 -1
  142. package/components/oxy-navbar-capsule/types.ts +3 -0
  143. package/components/oxy-notice-bar/index.scss +3 -3
  144. package/components/oxy-notice-bar/oxy-notice-bar.vue +9 -5
  145. package/components/oxy-notice-bar/types.ts +3 -3
  146. package/components/oxy-notify/index.ts +1 -0
  147. package/components/oxy-notify/oxy-notify.vue +3 -2
  148. package/components/oxy-notify/types.ts +7 -0
  149. package/components/oxy-pagination/index.scss +1 -1
  150. package/components/oxy-password-input/oxy-password-input.vue +2 -2
  151. package/components/oxy-password-input/types.ts +1 -1
  152. package/components/oxy-picker/index.scss +45 -2
  153. package/components/oxy-picker/oxy-picker.vue +103 -14
  154. package/components/oxy-picker/types.ts +33 -1
  155. package/components/oxy-picker-view/index.scss +3 -3
  156. package/components/oxy-picker-view/oxy-picker-view.vue +4 -4
  157. package/components/oxy-popover/index.scss +9 -9
  158. package/components/oxy-popup/index.scss +2 -2
  159. package/components/oxy-popup/oxy-popup.vue +35 -2
  160. package/components/oxy-popup/types.ts +8 -1
  161. package/components/oxy-progress/index.scss +3 -3
  162. package/components/oxy-qrcode/draw.ts +398 -0
  163. package/components/oxy-qrcode/index.scss +2 -0
  164. package/components/oxy-qrcode/oxy-qrcode.vue +124 -0
  165. package/components/oxy-qrcode/qrcode.ts +936 -0
  166. package/components/oxy-qrcode/types.ts +42 -0
  167. package/components/oxy-radio/index.scss +13 -13
  168. package/components/oxy-radio/oxy-radio.vue +1 -1
  169. package/components/oxy-radio-group/index.scss +2 -2
  170. package/components/oxy-rate/types.ts +4 -4
  171. package/components/oxy-resize/index.scss +2 -2
  172. package/components/oxy-resize/oxy-resize.vue +4 -4
  173. package/components/oxy-resize/types.ts +3 -0
  174. package/components/oxy-rich-text/icon/emjio.svg +1 -0
  175. package/components/oxy-rich-text/icon/quote.svg +1 -0
  176. package/components/oxy-rich-text/icon/text.svg +1 -0
  177. package/components/oxy-rich-text/icon/title.svg +1 -0
  178. package/components/oxy-rich-text/index.scss +160 -0
  179. package/components/oxy-rich-text/mp-html/card/card.vue +122 -0
  180. package/components/oxy-rich-text/mp-html/card/index.js +7 -0
  181. package/components/oxy-rich-text/mp-html/editable/config.js +15 -0
  182. package/components/oxy-rich-text/mp-html/editable/index.js +553 -0
  183. package/components/oxy-rich-text/mp-html/emoji/index.js +203 -0
  184. package/components/oxy-rich-text/mp-html/highlight/config.js +5 -0
  185. package/components/oxy-rich-text/mp-html/highlight/index.js +96 -0
  186. package/components/oxy-rich-text/mp-html/highlight/prism.css +1 -0
  187. package/components/oxy-rich-text/mp-html/highlight/prism.min.js +7 -0
  188. package/components/oxy-rich-text/mp-html/img-cache/index.js +138 -0
  189. package/components/oxy-rich-text/mp-html/latex/index.js +80 -0
  190. package/components/oxy-rich-text/mp-html/latex/katex.css +1 -0
  191. package/components/oxy-rich-text/mp-html/latex/katex.min.js +1 -0
  192. package/components/oxy-rich-text/mp-html/markdown/index.js +50 -0
  193. package/components/oxy-rich-text/mp-html/markdown/marked.min.js +71 -0
  194. package/components/oxy-rich-text/mp-html/mp-html.d.ts +184 -0
  195. package/components/oxy-rich-text/mp-html/mp-html.vue +684 -0
  196. package/components/oxy-rich-text/mp-html/node/node.vue +1172 -0
  197. package/components/oxy-rich-text/mp-html/parser.js +1428 -0
  198. package/components/oxy-rich-text/mp-html/search/index.js +132 -0
  199. package/components/oxy-rich-text/mp-html/style/index.js +129 -0
  200. package/components/oxy-rich-text/mp-html/style/parser.js +175 -0
  201. package/components/oxy-rich-text/mp-html/template/index.js +67 -0
  202. package/components/oxy-rich-text/mp-html/txv-video/index.js +46 -0
  203. package/components/oxy-rich-text/oxy-rich-text.vue +642 -0
  204. package/components/oxy-rich-text/types.ts +76 -0
  205. package/components/oxy-row/oxy-row.vue +3 -3
  206. package/components/oxy-row/types.ts +1 -1
  207. package/components/oxy-search/index.scss +3 -3
  208. package/components/oxy-segmented/index.scss +16 -16
  209. package/components/oxy-segmented/oxy-segmented.vue +23 -3
  210. package/components/oxy-select/index.scss +331 -0
  211. package/components/oxy-select/oxy-select.vue +456 -0
  212. package/components/oxy-select/types.ts +83 -0
  213. package/components/oxy-select-picker/index.scss +7 -7
  214. package/components/oxy-select-picker/oxy-select-picker.vue +4 -0
  215. package/components/oxy-select-picker/types.ts +7 -1
  216. package/components/oxy-sidebar-item/index.scss +1 -1
  217. package/components/oxy-signature/oxy-signature.vue +18 -10
  218. package/components/oxy-signature/types.ts +106 -13
  219. package/components/oxy-skeleton/oxy-skeleton.vue +6 -6
  220. package/components/oxy-skeleton/types.ts +1 -1
  221. package/components/oxy-slider/index.scss +3 -3
  222. package/components/oxy-sort-button/index.scss +8 -8
  223. package/components/oxy-status-tip/index.scss +4 -4
  224. package/components/oxy-status-tip/oxy-status-tip.vue +5 -5
  225. package/components/oxy-status-tip/types.ts +3 -3
  226. package/components/oxy-step/index.scss +14 -14
  227. package/components/oxy-sticky/oxy-sticky.vue +6 -6
  228. package/components/oxy-stream-render/index.scss +6 -0
  229. package/components/oxy-stream-render/oxy-stream-render.vue +204 -0
  230. package/components/oxy-stream-render/types.ts +8 -0
  231. package/components/oxy-swipe-action/oxy-swipe-action.vue +27 -2
  232. package/components/oxy-swiper/oxy-swiper.vue +6 -6
  233. package/components/oxy-swiper/types.ts +5 -5
  234. package/components/oxy-switch/index.scss +8 -8
  235. package/components/oxy-switch/oxy-switch.vue +2 -2
  236. package/components/oxy-switch/types.ts +1 -1
  237. package/components/oxy-tab/index.scss +11 -1
  238. package/components/oxy-tabbar/index.scss +1 -1
  239. package/components/oxy-tabbar/oxy-tabbar.vue +39 -10
  240. package/components/oxy-table/index.scss +5 -5
  241. package/components/oxy-table/oxy-table.vue +8 -6
  242. package/components/oxy-table/types.ts +2 -2
  243. package/components/oxy-table-col/oxy-table-col.vue +3 -3
  244. package/components/oxy-table-col/types.ts +2 -2
  245. package/components/oxy-tabs/index.scss +43 -15
  246. package/components/oxy-tabs/oxy-tabs.vue +53 -19
  247. package/components/oxy-tabs/types.ts +15 -3
  248. package/components/oxy-tag/index.scss +15 -15
  249. package/components/oxy-text/index.scss +5 -1
  250. package/components/oxy-text/oxy-text.vue +76 -7
  251. package/components/oxy-text/types.ts +12 -0
  252. package/components/oxy-textarea/index.scss +6 -6
  253. package/components/oxy-toast/oxy-toast.vue +24 -8
  254. package/components/oxy-tooltip/index.scss +9 -9
  255. package/components/oxy-tree/index.scss +61 -9
  256. package/components/oxy-tree/oxy-tree.vue +102 -17
  257. package/components/oxy-tree/types.ts +23 -10
  258. package/components/oxy-upload/index.scss +21 -21
  259. package/components/oxy-upload/types.ts +2 -2
  260. package/components/oxy-verification-code/index.scss +6 -0
  261. package/components/oxy-verification-code/oxy-verification-code.vue +187 -0
  262. package/components/oxy-verification-code/types.ts +82 -0
  263. package/components/oxy-video-preview/index.scss +4 -4
  264. package/components/oxy-virtual-scroll/index.scss +4 -4
  265. package/components/oxy-virtual-scroll/oxy-virtual-scroll.vue +11 -7
  266. package/components/oxy-virtual-scroll/types.ts +14 -14
  267. package/components/oxy-voice-player/index.scss +908 -0
  268. package/components/oxy-voice-player/oxy-voice-player.vue +821 -0
  269. package/components/oxy-voice-player/types.ts +567 -0
  270. package/components/oxy-waterfall/index.scss +18 -0
  271. package/components/oxy-waterfall/oxy-waterfall.vue +218 -0
  272. package/components/oxy-waterfall/types.ts +90 -0
  273. package/components/oxy-waterfall-item/index.scss +8 -0
  274. package/components/oxy-waterfall-item/oxy-waterfall-item.vue +89 -0
  275. package/components/oxy-waterfall-item/types.ts +16 -0
  276. package/components/oxy-watermark/oxy-watermark.vue +35 -13
  277. package/components/oxy-watermark/types.ts +14 -14
  278. package/global.d.ts +9 -0
  279. package/index.ts +3 -0
  280. package/locale/lang/ar-SA.ts +3 -0
  281. package/locale/lang/en-US.ts +29 -0
  282. package/locale/lang/zh-CN.ts +29 -0
  283. package/package.json +97 -1
  284. package/tags.json +1 -1
  285. package/uni-echarts/changelog.md +2 -0
  286. package/uni-echarts/components/index.js +1 -0
  287. package/uni-echarts/components/uni-echarts/events.js +95 -0
  288. package/uni-echarts/components/uni-echarts/types.d.ts +183 -0
  289. package/uni-echarts/components/uni-echarts/types.js +1 -0
  290. package/uni-echarts/components/uni-echarts/uni-echarts.vue +530 -0
  291. package/uni-echarts/components/uni-echarts/uni-echarts.vue.d.ts +19 -0
  292. package/uni-echarts/global.d.ts +7 -0
  293. package/uni-echarts/index.d.ts +440 -0
  294. package/uni-echarts/index.js +2 -0
  295. package/uni-echarts/package.json +105 -0
  296. package/uni-echarts/shared-core.d.ts +269 -0
  297. package/uni-echarts/shared-core.js +900 -0
  298. package/web-types.json +1 -1
  299. package/components/oxy-number-keyboard/index.scss +0 -78
  300. package/components/oxy-number-keyboard/key/index.scss +0 -81
  301. package/components/oxy-number-keyboard/key/index.vue +0 -78
  302. package/components/oxy-number-keyboard/key/types.ts +0 -11
  303. package/components/oxy-number-keyboard/oxy-number-keyboard.vue +0 -151
  304. package/components/oxy-number-keyboard/types.ts +0 -83
  305. package/components/oxy-tree/components/tree-node-content.vue +0 -72
  306. package/components/oxy-tree/index.ts +0 -51
@@ -0,0 +1,567 @@
1
+ import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
2
+ import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp, makeNumericProp } from '../common/props'
3
+
4
+ /**
5
+ * 内部音频上下文接口
6
+ */
7
+ export interface InnerAudioContext {
8
+ /**
9
+ * 音频地址
10
+ */
11
+ src: string
12
+ /**
13
+ * 是否循环播放
14
+ */
15
+ loop: boolean
16
+ /**
17
+ * 音量
18
+ */
19
+ volume: number
20
+ /**
21
+ * 总时长
22
+ */
23
+ duration: number
24
+ /**
25
+ * 自动
26
+ */
27
+ autoPlay: boolean
28
+ /**
29
+ * 当前播放时间
30
+ */
31
+ currentTime: number
32
+ /**
33
+ * 缓冲时间
34
+ */
35
+ buffered: number
36
+ /**
37
+ * 开始播放时间
38
+ */
39
+ startTime: number
40
+ /**
41
+ * 播放
42
+ */
43
+ play: () => void
44
+ /**
45
+ * 暂停
46
+ */
47
+ pause: () => void
48
+ /**
49
+ * 停止
50
+ */
51
+ stop: () => void
52
+ /**
53
+ * 跳转
54
+ */
55
+ seek: (position: number) => void
56
+ /**
57
+ * 销毁
58
+ */
59
+ destroy: () => void
60
+ /**
61
+ * 监听可以播放事件
62
+ */
63
+ onCanplay: (callback: () => void) => void
64
+ /**
65
+ * 监听播放事件
66
+ */
67
+ onPlay: (callback: () => void) => void
68
+ /**
69
+ * 监听暂停事件
70
+ */
71
+ onPause: (callback: () => void) => void
72
+ /**
73
+ * 监听停止事件
74
+ */
75
+ onStop: (callback: () => void) => void
76
+ /**
77
+ * 监听播放结束事件
78
+ */
79
+ onEnded: (callback: () => void) => void
80
+ /**
81
+ * 监听错误事件
82
+ */
83
+ onError: (callback: (error: { errMsg: string; errCode: number }) => void) => void
84
+ /**
85
+ * 监听时间更新事件
86
+ */
87
+ onTimeUpdate: (callback: () => void) => void
88
+ /**
89
+ * 取消监听可以播放事件
90
+ */
91
+ offCanplay: (callback?: () => void) => void
92
+ /**
93
+ * 取消监听播放事件
94
+ */
95
+ offPlay: (callback?: () => void) => void
96
+ /**
97
+ * 取消监听暂停事件
98
+ */
99
+ offPause: (callback?: () => void) => void
100
+ /**
101
+ * 取消监听停止事件
102
+ */
103
+ offStop: (callback?: () => void) => void
104
+ /**
105
+ * 取消监听播放结束事件
106
+ */
107
+ offEnded: (callback?: () => void) => void
108
+ /**
109
+ * 取消监听错误事件
110
+ */
111
+ offError: (callback?: (error: { errMsg: string; errCode: number }) => void) => void
112
+ /**
113
+ * 取消监听时间更新事件
114
+ */
115
+ offTimeUpdate: (callback?: () => void) => void
116
+ }
117
+
118
+ /**
119
+ * 播放器模式
120
+ */
121
+ export type VoicePlayerMode = 'list' | 'single' | 'random'
122
+
123
+ /**
124
+ * 播放器主题
125
+ */
126
+ export type VoicePlayerTheme = 'light' | 'dark'
127
+
128
+ /**
129
+ * 播放器视图模式
130
+ */
131
+ export type VoicePlayerViewMode = 'normal' | 'mini' | 'simple' | 'hideView'
132
+
133
+ /**
134
+ * 播放器额外控制按钮
135
+ */
136
+ export type VoicePlayerExtraControl = 'playMode' | 'favorite' | 'mini' | 'volume'
137
+
138
+ /**
139
+ * 歌曲信息
140
+ */
141
+ export interface VoicePlayerSongInfo {
142
+ /**
143
+ * 音频地址
144
+ */
145
+ src: string
146
+ /**
147
+ * 标题
148
+ */
149
+ title?: string
150
+ /**
151
+ * 歌手
152
+ */
153
+ artist?: string
154
+ /**
155
+ * 专辑
156
+ */
157
+ album?: string
158
+ /**
159
+ * 封面
160
+ */
161
+ cover?: string
162
+ /**
163
+ * 歌词
164
+ */
165
+ lyrics?: VoicePlayerLyricLine[]
166
+ /**
167
+ * 总时长
168
+ */
169
+ duration?: number
170
+ [key: string]: any
171
+ }
172
+
173
+ /**
174
+ * 歌词行
175
+ */
176
+ export interface VoicePlayerLyricLine {
177
+ /**
178
+ * 时间
179
+ */
180
+ time: number
181
+ /**
182
+ * 文本
183
+ */
184
+ text: string
185
+ /**
186
+ * 翻译
187
+ */
188
+ translation?: string
189
+ }
190
+
191
+ /**
192
+ * 时间更新事件
193
+ */
194
+ export interface VoicePlayerTimeUpdateEvent {
195
+ /**
196
+ * 当前播放时间
197
+ */
198
+ currentTime: number
199
+ /**
200
+ * 总时长
201
+ */
202
+ duration: number
203
+ /**
204
+ * 缓冲时间
205
+ */
206
+ buffered?: number
207
+ }
208
+
209
+ /**
210
+ * 歌曲切换事件
211
+ */
212
+ export interface VoicePlayerSongChangeEvent {
213
+ /**
214
+ * 索引
215
+ */
216
+ index: number
217
+ /**
218
+ * 歌曲信息
219
+ */
220
+ song: VoicePlayerSongInfo
221
+ }
222
+
223
+ /**
224
+ * 音量变化事件
225
+ */
226
+ export interface VoicePlayerVolumeChangeEvent {
227
+ /**
228
+ * 音量
229
+ */
230
+ volume: number
231
+ }
232
+
233
+ /**
234
+ * 跳转事件
235
+ */
236
+ export interface VoicePlayerSeekEvent {
237
+ /**
238
+ * 时间
239
+ */
240
+ time: number
241
+ }
242
+
243
+ /**
244
+ * 错误事件
245
+ */
246
+ export interface VoicePlayerErrorEvent {
247
+ /**
248
+ * 错误信息
249
+ */
250
+ message: string
251
+ /**
252
+ * 错误对象
253
+ */
254
+ error: any
255
+ }
256
+
257
+ /**
258
+ * 滑块变化事件
259
+ */
260
+ export interface SliderChangeEvent {
261
+ detail: {
262
+ /**
263
+ * 值
264
+ */
265
+ value: number
266
+ }
267
+ }
268
+
269
+ /**
270
+ * 触摸点
271
+ */
272
+ export interface TouchPoint {
273
+ /**
274
+ * 触点相对于视口的 X 坐标
275
+ */
276
+ clientX?: number
277
+ /**
278
+ * 触点相对于视口的 Y 坐标
279
+ */
280
+ clientY?: number
281
+ /**
282
+ * 触点相对于文档的 X 坐标
283
+ */
284
+ pageX?: number
285
+ /**
286
+ * 触点相对于文档的 Y 坐标
287
+ */
288
+ pageY?: number
289
+ /**
290
+ * 触点相对于屏幕的 X 坐标
291
+ */
292
+ x?: number
293
+ /**
294
+ * 触点相对于屏幕的 Y 坐标
295
+ */
296
+ y?: number
297
+ }
298
+
299
+ /**
300
+ * 触摸事件
301
+ */
302
+ export interface TouchEvent {
303
+ /**
304
+ * 当前触点列表
305
+ */
306
+ touches?: TouchPoint[]
307
+ /**
308
+ * 变化后的触点列表
309
+ */
310
+ changedTouches?: TouchPoint[]
311
+ }
312
+
313
+ export const voicePlayerProps = {
314
+ ...baseProps,
315
+
316
+ /**
317
+ * 音频地址
318
+ */
319
+ src: makeStringProp(''),
320
+
321
+ /**
322
+ * 标题
323
+ */
324
+ title: makeStringProp(''),
325
+
326
+ /**
327
+ * 歌手
328
+ */
329
+ artist: makeStringProp(''),
330
+
331
+ /**
332
+ * 专辑
333
+ */
334
+ album: makeStringProp(''),
335
+
336
+ /**
337
+ * 封面
338
+ */
339
+ cover: makeStringProp(''),
340
+
341
+ /**
342
+ * 是否循环播放
343
+ */
344
+ loop: makeBooleanProp(false),
345
+
346
+ /**
347
+ * 音量
348
+ */
349
+ volume: makeNumericProp(1),
350
+
351
+ /**
352
+ * 播放列表
353
+ */
354
+ playlist: {
355
+ type: Array as PropType<VoicePlayerSongInfo[]>,
356
+ default: () => []
357
+ },
358
+
359
+ /**
360
+ * 播放模式
361
+ */
362
+ playMode: makeStringProp<VoicePlayerMode>('list'),
363
+
364
+ /**
365
+ * 主题
366
+ */
367
+ theme: makeStringProp<VoicePlayerTheme>('light'),
368
+
369
+ /**
370
+ * 是否显示封面
371
+ */
372
+ showCover: makeBooleanProp(true),
373
+
374
+ /**
375
+ * 是否显示信息
376
+ */
377
+ showInfo: makeBooleanProp(true),
378
+
379
+ /**
380
+ * 是否显示进度条
381
+ */
382
+ showProgress: makeBooleanProp(true),
383
+
384
+ /**
385
+ * 是否显示上一首/下一首按钮
386
+ */
387
+ showPrevNext: makeBooleanProp(true),
388
+
389
+ /**
390
+ * 额外控制按钮
391
+ */
392
+ extraControls: {
393
+ type: Array as PropType<VoicePlayerExtraControl[]>,
394
+ default: () => []
395
+ },
396
+
397
+ /**
398
+ * 是否显示歌词
399
+ */
400
+ showLyrics: makeBooleanProp(false),
401
+
402
+ /**
403
+ * 歌词
404
+ */
405
+ lyrics: {
406
+ type: Array as PropType<VoicePlayerLyricLine[]>,
407
+ default: () => []
408
+ },
409
+
410
+ /**
411
+ * 是否显示翻译
412
+ */
413
+ showTranslation: makeBooleanProp(false),
414
+
415
+ /**
416
+ * 视图模式
417
+ */
418
+ viewMode: makeStringProp<VoicePlayerViewMode>('normal'),
419
+
420
+ /**
421
+ * 是否启用旋转
422
+ */
423
+ enableRotation: makeBooleanProp(true),
424
+
425
+ /**
426
+ * 是否可以跳转
427
+ */
428
+ canSeek: makeBooleanProp(true),
429
+
430
+ /**
431
+ * 默认封面
432
+ */
433
+ defaultCover: makeStringProp('')
434
+ }
435
+
436
+ /**
437
+ * 语音播放器事件
438
+ */
439
+ export type VoicePlayerEmits = {
440
+ /**
441
+ * 播放事件
442
+ */
443
+ play: []
444
+ /**
445
+ * 暂停事件
446
+ */
447
+ pause: []
448
+ /**
449
+ * 停止事件
450
+ */
451
+ stop: []
452
+ /**
453
+ * 播放结束事件
454
+ */
455
+ ended: []
456
+ /**
457
+ * 可以播放事件
458
+ */
459
+ canplay: [event: { duration: number }]
460
+ /**
461
+ * 时间更新事件
462
+ */
463
+ timeupdate: [event: VoicePlayerTimeUpdateEvent]
464
+ /**
465
+ * 上一首事件
466
+ */
467
+ prev: [event: VoicePlayerSongChangeEvent | null]
468
+ /**
469
+ * 下一首事件
470
+ */
471
+ next: [event: VoicePlayerSongChangeEvent | null]
472
+ /**
473
+ * 歌曲切换事件
474
+ */
475
+ 'song-change': [event: VoicePlayerSongChangeEvent | null]
476
+ /**
477
+ * 播放模式变化事件
478
+ */
479
+ 'play-mode-change': [mode: VoicePlayerMode]
480
+ /**
481
+ * 视图模式变化事件
482
+ */
483
+ 'mode-change': [mode: VoicePlayerViewMode]
484
+ /**
485
+ * 音量变化事件
486
+ */
487
+ 'volume-change': [vol: number]
488
+ /**
489
+ * 收藏变化事件
490
+ */
491
+ 'favorite-change': [isFavorited: boolean, song?: VoicePlayerSongInfo]
492
+ /**
493
+ * 跳转事件
494
+ */
495
+ seek: [event: VoicePlayerSeekEvent]
496
+ /**
497
+ * 封面错误事件
498
+ */
499
+ 'cover-error': []
500
+ /**
501
+ * 错误事件
502
+ */
503
+ error: [event: VoicePlayerErrorEvent]
504
+ }
505
+
506
+ /**
507
+ * 语音播放器暴露方法
508
+ */
509
+ export type VoicePlayerExpose = {
510
+ /**
511
+ * 播放
512
+ */
513
+ play: () => void
514
+ /**
515
+ * 暂停
516
+ */
517
+ pause: () => void
518
+ /**
519
+ * 停止
520
+ */
521
+ stop: () => void
522
+ /**
523
+ * 跳转到指定时间
524
+ */
525
+ seek: (time: number) => void
526
+ /**
527
+ * 设置音量
528
+ */
529
+ setVolume: (volume: number) => void
530
+ /**
531
+ * 上一首
532
+ */
533
+ prev: () => void
534
+ /**
535
+ * 下一首
536
+ */
537
+ next: () => void
538
+ /**
539
+ * 切换到指定歌曲
540
+ */
541
+ switchToSong: (index: number) => void
542
+ /**
543
+ * 获取播放状态
544
+ */
545
+ getPlayState: () => {
546
+ /**
547
+ * 是否正在播放
548
+ */
549
+ isPlaying: boolean
550
+ /**
551
+ * 当前播放时间
552
+ */
553
+ currentTime: number
554
+ /**
555
+ * 总时长
556
+ */
557
+ duration: number
558
+ /**
559
+ * 当前歌曲
560
+ */
561
+ currentSong: VoicePlayerSongInfo | null
562
+ }
563
+ }
564
+
565
+ export type VoicePlayerProps = ExtractPropTypes<typeof voicePlayerProps>
566
+
567
+ export type VoicePlayerInstance = ComponentPublicInstance<VoicePlayerProps, VoicePlayerExpose>
@@ -0,0 +1,18 @@
1
+ @import '../common/abstracts/variable';
2
+ @import '../common/abstracts/mixin';
3
+
4
+ @include b(waterfall) {
5
+ overflow: hidden;
6
+ @include e(wrapper) {
7
+ height: 100%;
8
+ overflow: hidden;
9
+ }
10
+ @include e(container) {
11
+ display: flex;
12
+ flex-direction: row;
13
+ overflow: hidden;
14
+ }
15
+ @include e(column) {
16
+ flex: 1;
17
+ }
18
+ }