xgplayer 2.32.2 → 2.32.5

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 (267) hide show
  1. package/browser/controls/airplay.js +1 -1
  2. package/browser/controls/cssFullscreen.js +1 -1
  3. package/browser/controls/danmu.js +1 -1
  4. package/browser/controls/definition.js +1 -1
  5. package/browser/controls/download.js +1 -1
  6. package/browser/controls/enter.js +1 -1
  7. package/browser/controls/error.js +1 -1
  8. package/browser/controls/errorRetry.js +1 -1
  9. package/browser/controls/flex.js +1 -1
  10. package/browser/controls/fullscreen.js +1 -1
  11. package/browser/controls/loading.js +1 -1
  12. package/browser/controls/memoryPlay.js +1 -1
  13. package/browser/controls/miniplayer.js +7 -9
  14. package/browser/controls/mobile.js +1 -1
  15. package/browser/controls/nativeTextTrack.js +1 -1
  16. package/browser/controls/pip.js +1 -1
  17. package/browser/controls/play.js +1 -1
  18. package/browser/controls/playNext.js +1 -1
  19. package/browser/controls/playbackRate.js +1 -1
  20. package/browser/controls/poster.js +1 -1
  21. package/browser/controls/progress.js +1 -1
  22. package/browser/controls/reload.js +1 -1
  23. package/browser/controls/replay.js +1 -1
  24. package/browser/controls/rotate.js +1 -1
  25. package/browser/controls/screenShot.js +1 -1
  26. package/browser/controls/start.js +1 -1
  27. package/browser/controls/textTrack.js +1 -1
  28. package/browser/controls/time.js +1 -1
  29. package/browser/controls/volume.js +1 -1
  30. package/browser/core_player.js +1 -1
  31. package/browser/core_player.js.map +1 -1
  32. package/browser/index.js +7 -9
  33. package/browser/index.js.map +1 -1
  34. package/browser/simple_player.js +1 -1
  35. package/browser/simple_player.js.map +1 -1
  36. package/dist/controls/airplay.js +1 -1
  37. package/dist/controls/cssFullscreen.js +1 -1
  38. package/dist/controls/danmu.js +1 -1
  39. package/dist/controls/definition.js +1 -1
  40. package/dist/controls/download.js +1 -1
  41. package/dist/controls/enter.js +1 -1
  42. package/dist/controls/error.js +1 -1
  43. package/dist/controls/errorRetry.js +1 -1
  44. package/dist/controls/flex.js +1 -1
  45. package/dist/controls/fullscreen.js +1 -1
  46. package/dist/controls/loading.js +1 -1
  47. package/dist/controls/memoryPlay.js +1 -1
  48. package/dist/controls/miniplayer.js +7 -9
  49. package/dist/controls/mobile.js +1 -1
  50. package/dist/controls/nativeTextTrack.js +1 -1
  51. package/dist/controls/pip.js +1 -1
  52. package/dist/controls/play.js +1 -1
  53. package/dist/controls/playNext.js +1 -1
  54. package/dist/controls/playbackRate.js +1 -1
  55. package/dist/controls/poster.js +1 -1
  56. package/dist/controls/progress.js +1 -1
  57. package/dist/controls/reload.js +1 -1
  58. package/dist/controls/replay.js +1 -1
  59. package/dist/controls/rotate.js +1 -1
  60. package/dist/controls/screenShot.js +1 -1
  61. package/dist/controls/start.js +1 -1
  62. package/dist/controls/textTrack.js +1 -1
  63. package/dist/controls/time.js +1 -1
  64. package/dist/controls/volume.js +1 -1
  65. package/dist/core_player.js +2904 -2970
  66. package/dist/core_player.js.map +1 -1
  67. package/dist/index.js +3161 -1856
  68. package/dist/index.js.map +1 -1
  69. package/dist/simple_player.js +190 -165
  70. package/dist/simple_player.js.map +1 -1
  71. package/es/controls/airplay.js +1 -1
  72. package/es/controls/cssFullscreen.js +1 -1
  73. package/es/controls/danmu.js +1 -1
  74. package/es/controls/definition.js +1 -1
  75. package/es/controls/download.js +1 -1
  76. package/es/controls/enter.js +1 -1
  77. package/es/controls/error.js +1 -1
  78. package/es/controls/errorRetry.js +1 -1
  79. package/es/controls/flex.js +1 -1
  80. package/es/controls/fullscreen.js +1 -1
  81. package/es/controls/i18n.js +1 -1
  82. package/es/controls/keyboard.js +1 -1
  83. package/es/controls/loading.js +1 -1
  84. package/es/controls/localPreview.js +1 -1
  85. package/es/controls/memoryPlay.js +1 -1
  86. package/es/controls/miniplayer.js +7 -9
  87. package/es/controls/mobile.js +1 -1
  88. package/es/controls/nativeTextTrack.js +1 -1
  89. package/es/controls/pc.js +1 -1
  90. package/es/controls/pip.js +1 -1
  91. package/es/controls/play.js +1 -1
  92. package/es/controls/playNext.js +1 -1
  93. package/es/controls/playbackRate.js +1 -1
  94. package/es/controls/poster.js +1 -1
  95. package/es/controls/progress.js +1 -1
  96. package/es/controls/reload.js +1 -1
  97. package/es/controls/replay.js +1 -1
  98. package/es/controls/rotate.js +1 -1
  99. package/es/controls/screenShot.js +1 -1
  100. package/es/controls/start.js +1 -1
  101. package/es/controls/textTrack.js +1 -1
  102. package/es/controls/time.js +1 -1
  103. package/es/controls/volume.js +1 -1
  104. package/es/core_player.js +1 -1
  105. package/es/core_player.js.map +1 -1
  106. package/es/index.js +7 -9
  107. package/es/index.js.map +1 -1
  108. package/es/simple_player.js +1 -1
  109. package/es/simple_player.js.map +1 -1
  110. package/package.json +12 -2
  111. package/types/index.d.ts +0 -11
  112. package/postcss.config.js +0 -7
  113. package/src/bind/airplay.js +0 -10
  114. package/src/bind/cssFullscreen.js +0 -10
  115. package/src/bind/danmu.js +0 -10
  116. package/src/bind/definition.js +0 -10
  117. package/src/bind/download.js +0 -10
  118. package/src/bind/enter.js +0 -8
  119. package/src/bind/error.js +0 -8
  120. package/src/bind/errorRetry.js +0 -8
  121. package/src/bind/flex.js +0 -8
  122. package/src/bind/fullscreen.js +0 -10
  123. package/src/bind/i18n.js +0 -8
  124. package/src/bind/keyboard.js +0 -8
  125. package/src/bind/loading.js +0 -8
  126. package/src/bind/localPreview.js +0 -10
  127. package/src/bind/memoryPlay.js +0 -10
  128. package/src/bind/miniplayer.js +0 -10
  129. package/src/bind/mobile.js +0 -8
  130. package/src/bind/nativeTextTrack.js +0 -8
  131. package/src/bind/pc.js +0 -8
  132. package/src/bind/pip.js +0 -10
  133. package/src/bind/play.js +0 -10
  134. package/src/bind/playNext.js +0 -10
  135. package/src/bind/playbackRate.js +0 -8
  136. package/src/bind/poster.js +0 -8
  137. package/src/bind/progress.js +0 -8
  138. package/src/bind/reload.js +0 -10
  139. package/src/bind/replay.js +0 -10
  140. package/src/bind/rotate.js +0 -10
  141. package/src/bind/screenShot.js +0 -10
  142. package/src/bind/stallCheck.js +0 -8
  143. package/src/bind/start.js +0 -10
  144. package/src/bind/textTrack.js +0 -8
  145. package/src/bind/time.js +0 -8
  146. package/src/bind/volume.js +0 -10
  147. package/src/controls/airplay.js +0 -20
  148. package/src/controls/cssFullscreen.js +0 -49
  149. package/src/controls/danmu.js +0 -75
  150. package/src/controls/definition.js +0 -13
  151. package/src/controls/download.js +0 -28
  152. package/src/controls/errorRetry.js +0 -132
  153. package/src/controls/fullscreen.js +0 -145
  154. package/src/controls/keyboard.js +0 -214
  155. package/src/controls/localPreview.js +0 -32
  156. package/src/controls/memoryPlay.js +0 -14
  157. package/src/controls/miniplayer.js +0 -128
  158. package/src/controls/mobile.js +0 -100
  159. package/src/controls/pc.js +0 -123
  160. package/src/controls/pip.js +0 -52
  161. package/src/controls/play.js +0 -34
  162. package/src/controls/playNext.js +0 -29
  163. package/src/controls/reload.js +0 -24
  164. package/src/controls/replay.js +0 -30
  165. package/src/controls/rotate.js +0 -99
  166. package/src/controls/screenShot.js +0 -65
  167. package/src/controls/stallCheck.js +0 -38
  168. package/src/controls/start.js +0 -60
  169. package/src/controls/textTrack.js +0 -182
  170. package/src/controls/volume.js +0 -178
  171. package/src/controls.js +0 -36
  172. package/src/core_player.js +0 -13
  173. package/src/error.js +0 -74
  174. package/src/index.js +0 -57
  175. package/src/player.js +0 -553
  176. package/src/proxy.js +0 -495
  177. package/src/simple_player.js +0 -42
  178. package/src/skin/assets/airplay.svg +0 -1
  179. package/src/skin/assets/download.svg +0 -14
  180. package/src/skin/assets/exitCssFull.svg +0 -3
  181. package/src/skin/assets/exitFull.svg +0 -3
  182. package/src/skin/assets/loading.svg +0 -3
  183. package/src/skin/assets/panel.svg +0 -4
  184. package/src/skin/assets/pause.svg +0 -3
  185. package/src/skin/assets/play.svg +0 -3
  186. package/src/skin/assets/playNext.svg +0 -3
  187. package/src/skin/assets/reload.svg +0 -3
  188. package/src/skin/assets/replay.svg +0 -3
  189. package/src/skin/assets/requestCssFull.svg +0 -3
  190. package/src/skin/assets/requestFull.svg +0 -3
  191. package/src/skin/assets/rotate.svg +0 -11
  192. package/src/skin/assets/startPause.svg +0 -3
  193. package/src/skin/assets/startPlay.svg +0 -3
  194. package/src/skin/assets/volumeLarge.svg +0 -4
  195. package/src/skin/assets/volumeMuted.svg +0 -4
  196. package/src/skin/assets/volumeSmall.svg +0 -4
  197. package/src/skin/controls/airplay.js +0 -44
  198. package/src/skin/controls/cssFullscreen.js +0 -36
  199. package/src/skin/controls/danmu.js +0 -214
  200. package/src/skin/controls/definition.js +0 -251
  201. package/src/skin/controls/download.js +0 -29
  202. package/src/skin/controls/enter.js +0 -21
  203. package/src/skin/controls/error.js +0 -57
  204. package/src/skin/controls/flex.js +0 -13
  205. package/src/skin/controls/fullscreen.js +0 -43
  206. package/src/skin/controls/i18n.js +0 -168
  207. package/src/skin/controls/loading.js +0 -17
  208. package/src/skin/controls/localPreview.js +0 -18
  209. package/src/skin/controls/memoryPlay.js +0 -39
  210. package/src/skin/controls/miniplayer.js +0 -26
  211. package/src/skin/controls/nativeTextTrack.js +0 -153
  212. package/src/skin/controls/pip.js +0 -26
  213. package/src/skin/controls/play.js +0 -43
  214. package/src/skin/controls/playNext.js +0 -41
  215. package/src/skin/controls/playbackRate.js +0 -141
  216. package/src/skin/controls/poster.js +0 -18
  217. package/src/skin/controls/progress.js +0 -407
  218. package/src/skin/controls/reload.js +0 -29
  219. package/src/skin/controls/replay.js +0 -56
  220. package/src/skin/controls/rotate.js +0 -29
  221. package/src/skin/controls/screenShot.js +0 -27
  222. package/src/skin/controls/start.js +0 -62
  223. package/src/skin/controls/textTrack.js +0 -113
  224. package/src/skin/controls/time.js +0 -40
  225. package/src/skin/controls/volume.js +0 -63
  226. package/src/skin/index.js +0 -63
  227. package/src/skin/style/common/animation.scss +0 -16
  228. package/src/skin/style/common/svg-url.scss +0 -70
  229. package/src/skin/style/controls/airplay.scss +0 -35
  230. package/src/skin/style/controls/controls.scss +0 -40
  231. package/src/skin/style/controls/cssfullscreen.scss +0 -103
  232. package/src/skin/style/controls/danmu.scss +0 -333
  233. package/src/skin/style/controls/definition.scss +0 -76
  234. package/src/skin/style/controls/download.scss +0 -45
  235. package/src/skin/style/controls/enter.scss +0 -55
  236. package/src/skin/style/controls/error.scss +0 -34
  237. package/src/skin/style/controls/fullscreen.scss +0 -60
  238. package/src/skin/style/controls/icon.scss +0 -12
  239. package/src/skin/style/controls/live.scss +0 -9
  240. package/src/skin/style/controls/loading.scss +0 -44
  241. package/src/skin/style/controls/memoryPlay.scss +0 -28
  242. package/src/skin/style/controls/miniplayer.scss +0 -104
  243. package/src/skin/style/controls/pip.scss +0 -42
  244. package/src/skin/style/controls/placeholder.scss +0 -7
  245. package/src/skin/style/controls/play.scss +0 -79
  246. package/src/skin/style/controls/playNext.scss +0 -44
  247. package/src/skin/style/controls/playbackRate.scss +0 -82
  248. package/src/skin/style/controls/poster.scss +0 -19
  249. package/src/skin/style/controls/progress.scss +0 -182
  250. package/src/skin/style/controls/reload.scss +0 -43
  251. package/src/skin/style/controls/replay.scss +0 -46
  252. package/src/skin/style/controls/rotate.scss +0 -41
  253. package/src/skin/style/controls/screenShot.scss +0 -42
  254. package/src/skin/style/controls/start.scss +0 -78
  255. package/src/skin/style/controls/textTrack.scss +0 -87
  256. package/src/skin/style/controls/time.scss +0 -24
  257. package/src/skin/style/controls/tips.scss +0 -24
  258. package/src/skin/style/controls/videoProxy.scss +0 -6
  259. package/src/skin/style/controls/volume.scss +0 -143
  260. package/src/skin/style/index.scss +0 -88
  261. package/src/utils/sniffer.js +0 -47
  262. package/src/utils/url.js +0 -10
  263. package/src/utils/util.js +0 -358
  264. package/src/utils/xgplayerTimeRange.js +0 -17
  265. package/src/version.js +0 -7
  266. package/version.json +0 -3
  267. package/webpack.config.js +0 -168
@@ -1,100 +0,0 @@
1
- import { hasClass } from '../utils/util'
2
-
3
- let mobile = function () {
4
- let player = this
5
- let root = player.root
6
- let clk = 0; let _click_
7
- let clickedTime = {
8
- first: '',
9
- second: ''
10
- }
11
-
12
- player.onElementTouchend = function (e, element) {
13
- if(!this.config.closeVideoPreventDefault) {
14
- e.preventDefault()
15
- }
16
- if(!this.config.closeVideoStopPropagation) {
17
- e.stopPropagation()
18
- }
19
- let player = this
20
- if (hasClass(root, 'xgplayer-inactive')) {
21
- player.emit('focus')
22
- } else {
23
- player.emit('blur')
24
- }
25
- if (!player.config.closeVideoTouch && !player.isTouchMove) {
26
- function onTouch() {
27
- _click_ = setTimeout(function () {
28
- if (hasClass(player.root, 'xgplayer-nostart')) {
29
- return false
30
- } else if (!player.ended) {
31
- if (player.paused) {
32
- let playPromise = player.play()
33
- if (playPromise !== undefined && playPromise) {
34
- playPromise.catch(err => {})
35
- }
36
- } else {
37
- player.pause()
38
- }
39
- }
40
- clk = 0
41
- }, 200)
42
- }
43
- if (!player.config.closeVideoClick) {
44
- clk++
45
- if (_click_) {
46
- clearTimeout(_click_)
47
- }
48
- if (clk === 1) {
49
- if(player.config.enableVideoDbltouch) {
50
- clickedTime.first = new Date()
51
- } else {
52
- onTouch()
53
- }
54
- } else if (clk === 2) {
55
- if(player.config.enableVideoDbltouch) {
56
- clickedTime.second = new Date()
57
- if (Math.abs(clickedTime.first - clickedTime.second) < 400) {
58
- // 双击
59
- onTouch()
60
- } else {
61
- clickedTime.first = new Date()
62
- clk = 1
63
- }
64
- } else {
65
- clk = 0
66
- }
67
- } else {
68
- clk = 0
69
- }
70
- }
71
- }
72
- }
73
-
74
- function onReady (e) {
75
- player.video.addEventListener('touchend', function (e) {
76
- player.onElementTouchend(e, player.video)
77
- })
78
- player.video.addEventListener('touchstart', () => {
79
- player.isTouchMove = false
80
- })
81
- player.video.addEventListener('touchmove', () => {
82
- player.isTouchMove = true
83
- })
84
- if (player.config.autoplay) {
85
- player.start()
86
- }
87
- }
88
- player.once('ready', onReady)
89
-
90
- function onDestroy () {
91
- player.off('ready', onReady)
92
- player.off('destroy', onDestroy)
93
- }
94
- player.once('destroy', onDestroy)
95
- }
96
-
97
- export default {
98
- name: 'mobile',
99
- method: mobile
100
- }
@@ -1,123 +0,0 @@
1
- import { hasClass } from '../utils/util'
2
-
3
- let pc = function () {
4
- let player = this
5
- if(!player.controls || !player.video) return
6
- let controls = player.controls; let root = player.root
7
- let clk = 0; let _click_
8
-
9
- player.onElementClick = function (e, element) {
10
- if(!this.config.closeVideoPreventDefault) {
11
- e.preventDefault()
12
- }
13
- if(!this.config.closeVideoStopPropagation) {
14
- e.stopPropagation()
15
- }
16
- let player = this
17
- if (!player.config.closeVideoClick) {
18
- clk++
19
- if (_click_) {
20
- clearTimeout(_click_)
21
- }
22
- if (clk === 1) {
23
- _click_ = setTimeout(function () {
24
- if (hasClass(player.root, 'xgplayer-nostart')) {
25
- return false
26
- } else if (!player.ended) {
27
- if (player.paused) {
28
- let playPromise = player.play()
29
- if (playPromise !== undefined && playPromise) {
30
- playPromise.catch(err => {})
31
- }
32
- } else {
33
- player.pause()
34
- }
35
- }
36
- clk = 0
37
- }, 200)
38
- } else {
39
- clk = 0
40
- }
41
- }
42
- }
43
- player.video.addEventListener('click', function (e) { player.onElementClick(e, player.video) }, false)
44
-
45
- player.onElementDblclick = function (e, element) {
46
- if(!this.config.closeVideoPreventDefault) {
47
- e.preventDefault()
48
- }
49
- if(!this.config.closeVideoStopPropagation) {
50
- e.stopPropagation()
51
- }
52
- let player = this
53
- if (!player.config.closeVideoDblclick) {
54
- let fullscreen = controls.querySelector('.xgplayer-fullscreen')
55
- if (fullscreen) {
56
- let clk
57
- if (document.createEvent) {
58
- clk = document.createEvent('Event')
59
- clk.initEvent('click', true, true)
60
- } else {
61
- clk = new Event('click')
62
- }
63
- fullscreen.dispatchEvent(clk)
64
- }
65
- }
66
- }
67
- player.video.addEventListener('dblclick', function (e) { player.onElementDblclick(e, player.video) }, false)
68
-
69
- function onMouseEnter () {
70
- clearTimeout(player.leavePlayerTimer)
71
- player.emit('focus', player)
72
- }
73
- root.addEventListener('mouseenter', onMouseEnter)
74
-
75
- function onMouseLeave () {
76
- if(!player.config.closePlayerBlur) {
77
- player.leavePlayerTimer = setTimeout(function () {
78
- player.emit('blur', player)
79
- }, player.config.leavePlayerTime || 0)
80
- }
81
- }
82
- root.addEventListener('mouseleave', onMouseLeave)
83
-
84
- function onControlMouseEnter (e) {
85
- if (player.userTimer) {
86
- clearTimeout(player.userTimer)
87
- }
88
- }
89
- controls.addEventListener('mouseenter', onControlMouseEnter)
90
-
91
- function onControlMouseLeave (e) {
92
- if(!player.config.closeControlsBlur) {
93
- player.emit('focus', player)
94
- }
95
- }
96
- controls.addEventListener('mouseleave', onControlMouseLeave)
97
-
98
- function onControlClick (e) {
99
- e.preventDefault()
100
- e.stopPropagation()
101
- }
102
- controls.addEventListener('click', onControlClick)
103
-
104
- function onReady (e) {
105
- if (player.config.autoplay) {
106
- player.start()
107
- }
108
- }
109
- player.once('ready', onReady)
110
-
111
- function onDestroy () {
112
- root.removeEventListener('mouseenter', onMouseEnter)
113
- root.removeEventListener('mouseleave', onMouseLeave)
114
- player.off('ready', onReady)
115
- player.off('destroy', onDestroy)
116
- }
117
- player.once('destroy', onDestroy)
118
- }
119
-
120
- export default {
121
- name: 'pc',
122
- method: pc
123
- }
@@ -1,52 +0,0 @@
1
-
2
- import { PresentationMode, checkWebkitSetPresentationMode, addClass, removeClass} from '../utils/util'
3
-
4
- let pip = function () {
5
- let player = this
6
- function onPipBtnClick () {
7
- if (player.video !== document.pictureInPictureElement) {
8
- player.video.requestPictureInPicture()
9
- } else {
10
- document.exitPictureInPicture()
11
- }
12
- }
13
- player.on('pipBtnClick', onPipBtnClick)
14
-
15
- const onWebkitpresentationmodechanged = (e) => {
16
- const mode = player.video.webkitPresentationMode
17
- this.pMode = mode
18
- if (mode === PresentationMode.PIP) {
19
- // 进入pip模式
20
- player.emit('requestPictureInPicture', e.pictureInPictureWindow)
21
- } else if (mode === PresentationMode.INLINE) {
22
- // 退出pip,进去inline模式
23
- player.emit('exitPictureInPicture')
24
- }
25
- }
26
-
27
- player.video.addEventListener('enterpictureinpicture', function (pipWindow) {
28
- addClass(player.root, 'xgplayer-pip-active')
29
- player.emit('requestPictureInPicture', pipWindow)
30
- })
31
-
32
- player.video.addEventListener('leavepictureinpicture', function () {
33
- removeClass(player.root, 'xgplayer-pip-active')
34
- player.emit('exitPictureInPicture')
35
- })
36
-
37
- checkWebkitSetPresentationMode(player.video) &&
38
- player.video.addEventListener('webkitpresentationmodechanged', onWebkitpresentationmodechanged)
39
-
40
- function onDestroy () {
41
- player.off('pipBtnClick', onPipBtnClick)
42
- player.off('destroy', onDestroy)
43
- checkWebkitSetPresentationMode(player.video) &&
44
- player.video.removeEventListener('webkitpresentationmodechanged', onWebkitpresentationmodechanged)
45
- }
46
- player.once('destroy', onDestroy)
47
- }
48
-
49
- export default {
50
- name: 'pip',
51
- method: pip
52
- }
@@ -1,34 +0,0 @@
1
- import { hasClass } from '../utils/util'
2
-
3
- let play = function () {
4
- let player = this
5
-
6
- function onPlayBtnClick () {
7
- if (!player.config.allowPlayAfterEnded && player.ended) {
8
- return
9
- }
10
- if(hasClass(player.root, 'xgplayer-nostart')) {
11
- player.start()
12
- }
13
- if (player.paused) {
14
- let playPromise = player.play()
15
- if (playPromise !== undefined && playPromise) {
16
- playPromise.catch(err => {})
17
- }
18
- } else {
19
- player.pause()
20
- }
21
- }
22
- player.on('playBtnClick', onPlayBtnClick)
23
-
24
- function onDestroy () {
25
- player.off('playBtnClick', onPlayBtnClick)
26
- player.off('destroy', onDestroy)
27
- }
28
- player.once('destroy', onDestroy)
29
- }
30
-
31
- export default {
32
- name: 'play',
33
- method: play
34
- }
@@ -1,29 +0,0 @@
1
- let playNext = function () {
2
- let player = this
3
- let nextBtn = player.config.playNext
4
- player.currentVideoIndex = -1
5
-
6
- function onPlayNextBtnClick () {
7
- if (player.currentVideoIndex + 1 < nextBtn.urlList.length) {
8
- player.currentVideoIndex++
9
- player.video.autoplay = true
10
- player.src = nextBtn.urlList[player.currentVideoIndex]
11
- player.emit('playerNext', player.currentVideoIndex + 1)
12
- if (player.currentVideoIndex + 1 === nextBtn.urlList.length) {
13
- player.emit('urlListEnd')
14
- }
15
- }
16
- }
17
- player.on('playNextBtnClick', onPlayNextBtnClick)
18
-
19
- function onDestroy () {
20
- player.off('playNextBtnClick', onPlayNextBtnClick)
21
- player.off('destroy', onDestroy)
22
- }
23
- player.once('destroy', onDestroy)
24
- }
25
-
26
- export default {
27
- name: 'playNext',
28
- method: playNext
29
- }
@@ -1,24 +0,0 @@
1
- import { removeClass } from '../utils/util'
2
-
3
- let reload = function () {
4
- let player = this
5
- let reloadConfig = player.config.reload
6
- if (!reloadConfig) { return }
7
-
8
- function onReloadBtnClick () {
9
- removeClass(player.root, 'xgplayer-is-error')
10
- player.src = player.config.url
11
- }
12
- player.on('reloadBtnClick', onReloadBtnClick)
13
-
14
- function onDestroy () {
15
- player.off('reloadBtnClick', onReloadBtnClick)
16
- player.off('destroy', onDestroy)
17
- }
18
- player.once('destroy', onDestroy)
19
- }
20
-
21
- export default {
22
- name: 'reload',
23
- method: reload
24
- }
@@ -1,30 +0,0 @@
1
- import { addClass, removeClass } from '../utils/util'
2
-
3
- let replay = function () {
4
- let player = this
5
- let root = player.root
6
-
7
- function onReplayBtnClick () {
8
- removeClass(root, 'xgplayer-is-replay')
9
- player.replay()
10
- }
11
- player.on('replayBtnClick', onReplayBtnClick)
12
-
13
- function onEnded () {
14
- if (!player.config.loop) {
15
- addClass(root, 'xgplayer-is-replay')
16
- }
17
- }
18
- player.on('ended', onEnded)
19
-
20
- function onDestroy () {
21
- player.off('replayBtnClick', onReplayBtnClick)
22
- player.off('destroy', onDestroy)
23
- }
24
- player.once('destroy', onDestroy)
25
- }
26
-
27
- export default {
28
- name: 'replay',
29
- method: replay
30
- }
@@ -1,99 +0,0 @@
1
- let rotate = function () {
2
- let player = this
3
- let rotateConfig = player.config.rotate
4
- if (!rotateConfig) { return }
5
-
6
- function onRotateBtnClick () {
7
- player.rotate(rotateConfig.clockwise, rotateConfig.innerRotate)
8
- }
9
- player.on('rotateBtnClick', onRotateBtnClick)
10
-
11
- function onDestroy () {
12
- player.off('rotateBtnClick', onRotateBtnClick)
13
- player.off('destroy', onDestroy)
14
- }
15
- player.once('destroy', onDestroy)
16
-
17
- player.updateRotateDeg = function () {
18
- let player = this;
19
- if (!player.rotateDeg) {
20
- player.rotateDeg = 0
21
- }
22
-
23
- let width = player.root.offsetWidth
24
- let height = player.root.offsetHeight
25
- let targetWidth = player.video.videoWidth
26
- let targetHeight = player.video.videoHeight
27
-
28
- if (!player.config.rotate.innerRotate && player.config.rotate.controlsFix) {
29
- player.root.style.width = height + 'px'
30
- player.root.style.height = width + 'px'
31
- }
32
-
33
- let scale
34
- if (player.rotateDeg === 0.25 || player.rotateDeg === 0.75) {
35
- if (player.config.rotate.innerRotate) {
36
- if ((targetWidth / targetHeight) > (height / width)) { // 旋转后纵向撑满
37
- let videoWidth = 0
38
- if ((targetHeight / targetWidth) > (height / width)) { // 旋转前是纵向撑满
39
- videoWidth = height * targetWidth / targetHeight
40
- } else { // 旋转前是横向撑满
41
- videoWidth = width
42
- }
43
- scale = height / videoWidth
44
- } else { // 旋转后横向撑满
45
- let videoHeight = 0
46
- if ((targetHeight / targetWidth) > (height / width)) { // 旋转前是纵向撑满
47
- videoHeight = height
48
- } else { // 旋转前是横向撑满
49
- videoHeight = width * targetHeight / targetWidth
50
- }
51
- scale = width / videoHeight
52
- }
53
- } else {
54
- if (width >= height) {
55
- scale = width / height
56
- } else {
57
- scale = height / width
58
- }
59
- }
60
- scale = Number(scale.toFixed(5))
61
- } else {
62
- scale = 1
63
- }
64
-
65
- if (player.config.rotate.innerRotate) {
66
- player.video.style.transformOrigin = 'center center'
67
- player.video.style.transform = `rotate(${player.rotateDeg}turn) scale(${scale})`
68
- player.video.style.webKitTransform = `rotate(${player.rotateDeg}turn) scale(${scale})`
69
- } else {
70
- if (player.config.rotate.controlsFix) {
71
- player.video.style.transformOrigin = 'center center'
72
- player.video.style.transform = `rotate(${player.rotateDeg}turn) scale(${scale})`
73
- player.video.style.webKitTransform = `rotate(${player.rotateDeg}turn) scale(${scale})`
74
- } else {
75
- player.root.style.transformOrigin = 'center center'
76
- player.root.style.transform = `rotate(${player.rotateDeg}turn) scale(${1})`
77
- player.root.style.webKitTransform = `rotate(${player.rotateDeg}turn) scale(${1})`
78
- }
79
- }
80
- }
81
-
82
- player.rotate = function (clockwise = false, innerRotate = true, times = 1) {
83
- let player = this;
84
- if (!player.rotateDeg) {
85
- player.rotateDeg = 0
86
- }
87
- let factor = clockwise ? 1 : -1
88
-
89
- player.rotateDeg = (player.rotateDeg + 1 + factor * 0.25 * times) % 1
90
- this.updateRotateDeg()
91
-
92
- player.emit('rotate', player.rotateDeg * 360)
93
- }
94
- }
95
-
96
- export default {
97
- name: 'rotate',
98
- method: rotate
99
- }
@@ -1,65 +0,0 @@
1
- let screenShot = function () {
2
- let player = this
3
- let screenShotOptions = player.config.screenShot
4
- let callBack = null
5
- if (!screenShotOptions) {
6
- return
7
- }
8
-
9
- player.video.setAttribute('crossOrigin', 'anonymous')
10
-
11
- let encoderOptions = 0.92
12
-
13
- if (screenShotOptions.quality || screenShotOptions.quality === 0) {
14
- encoderOptions = screenShotOptions.quality
15
- }
16
- let type = screenShotOptions.type === undefined ? 'image/png' : screenShotOptions.type
17
- let format = screenShotOptions.format === undefined ? '.png' : screenShotOptions.format
18
-
19
- let canvas = document.createElement('canvas')
20
- let canvasCtx = canvas.getContext('2d')
21
- let img = new Image()
22
-
23
- canvas.width = this.config.width || 600
24
- canvas.height = this.config.height || 337.5
25
- let saveScreenShot = function (data, filename) {
26
- let saveLink = document.createElement('a')
27
- saveLink.href = data
28
- saveLink.download = filename
29
- let event = document.createEvent('MouseEvents')
30
- event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
31
- saveLink.dispatchEvent(event)
32
- }
33
-
34
- player.screenShot = function (save = true) {
35
- save = screenShotOptions.saveImg === undefined ? save : screenShotOptions.saveImg
36
- canvas.width = player.video.videoWidth || 600
37
- canvas.height = player.video.videoHeight || 337.5
38
- callBack = screenShotOptions.callBack
39
- img.onload = (function () {
40
- canvasCtx.drawImage(player.video, 0, 0, canvas.width, canvas.height)
41
- img.src = canvas.toDataURL(type, encoderOptions).replace(type, 'image/octet-stream')
42
- let screenShotImg = img.src.replace(/^data:image\/[^;]+/, 'data:application/octet-stream')
43
- let saveFileName = screenShotOptions.fileName || player.lang.SCREENSHOT
44
-
45
- player.emit('screenShot', screenShotImg)
46
- if (save && callBack) {
47
- callBack(screenShotImg, saveFileName, format)
48
- } else {
49
- save && saveScreenShot(screenShotImg, saveFileName + format)
50
- }
51
- })()
52
- }
53
- player.on('screenShotBtnClick', player.screenShot)
54
-
55
- function onDestroy () {
56
- player.off('screenShotBtnClick', player.screenShot)
57
- player.off('destroy', onDestroy)
58
- }
59
- player.once('destroy', onDestroy)
60
- }
61
-
62
- export default {
63
- name: 'screenShot',
64
- method: screenShot
65
- }
@@ -1,38 +0,0 @@
1
- import Errors from '../error'
2
-
3
- function stallCheck () {
4
- const player = this
5
- if(!player.config.enableStallCheck) return;
6
- let lastCurrentTime = 0;
7
- let stallFlag, stallCheckTimer, progressTimer;
8
- player.once('complete', () => {
9
- progressTimer = setInterval(() => {
10
- if (player.currentTime - (lastCurrentTime || 0) > 0.1 || player.paused) {
11
- if (stallFlag === 1 || stallFlag === 2) {
12
- stallFlag = 0;
13
- clearTimeout(stallCheckTimer);
14
- stallCheckTimer = null;
15
- }
16
- } else {
17
- if (!stallFlag) {
18
- stallFlag = 1;
19
- stallCheckTimer = setTimeout(() => {
20
- if (stallFlag === 1) {
21
- stallFlag = 2;
22
- player.emit('error', new Errors('STALL'));
23
- }
24
- stallCheckTimer = null;
25
- }, 20000);
26
- }
27
- }
28
- lastCurrentTime = player.currentTime;
29
- }, 1000);
30
- })
31
- }
32
-
33
- export default {
34
- name: 'stallCheck',
35
- method: stallCheck
36
- }
37
-
38
-
@@ -1,60 +0,0 @@
1
- import { addClass, hasClass, removeClass } from '../utils/util'
2
-
3
- let start = function () {
4
- let player = this
5
- let root = player.root
6
-
7
- function onCanPlay () {
8
- player.off('canplay', onCanPlay)
9
- let playPromise = player.play()
10
- if (playPromise !== undefined && playPromise) {
11
- playPromise.catch(err => {})
12
- }
13
- }
14
-
15
- function onStartBtnClick () {
16
- if (hasClass(root, 'xgplayer-nostart')) {
17
- removeClass(root, 'xgplayer-nostart') // for ie quick switch
18
- addClass(root, 'xgplayer-is-enter')
19
-
20
- if(typeof root.contains === 'function') {
21
- if((player.video && player.video.nodeType === 1 && !root.contains(player.video)) || (player.video && player.video.nodeType !== 1 && player.video.mediaSource === undefined)) {
22
- player.once('canplay', onCanPlay)
23
- player.start()
24
- } else {
25
- onCanPlay()
26
- }
27
- } else {
28
- if((player.video && player.video.nodeType === 1 && !root.querySelector(this.videoConfig.mediaType)) || (player.video && player.video.nodeType !== 1 && player.video.mediaSource === undefined)) {
29
- player.once('canplay', onCanPlay)
30
- player.start()
31
- } else {
32
- onCanPlay()
33
- }
34
- }
35
- } else {
36
- if (player.paused) {
37
- removeClass(root, 'xgplayer-nostart xgplayer-isloading')
38
- setTimeout(() => {
39
- let playPromise = player.play()
40
- if (playPromise !== undefined && playPromise) {
41
- playPromise.catch(err => {})
42
- }
43
- }, 10)
44
- }
45
- }
46
- }
47
- player.on('startBtnClick', onStartBtnClick)
48
-
49
- function onDestroy () {
50
- player.off('startBtnClick', onStartBtnClick)
51
- player.off('canplay', onCanPlay)
52
- player.off('destroy', onDestroy)
53
- }
54
- player.once('destroy', onDestroy)
55
- }
56
-
57
- export default {
58
- name: 'start',
59
- method: start
60
- }