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.
- package/browser/controls/airplay.js +1 -1
- package/browser/controls/cssFullscreen.js +1 -1
- package/browser/controls/danmu.js +1 -1
- package/browser/controls/definition.js +1 -1
- package/browser/controls/download.js +1 -1
- package/browser/controls/enter.js +1 -1
- package/browser/controls/error.js +1 -1
- package/browser/controls/errorRetry.js +1 -1
- package/browser/controls/flex.js +1 -1
- package/browser/controls/fullscreen.js +1 -1
- package/browser/controls/loading.js +1 -1
- package/browser/controls/memoryPlay.js +1 -1
- package/browser/controls/miniplayer.js +7 -9
- package/browser/controls/mobile.js +1 -1
- package/browser/controls/nativeTextTrack.js +1 -1
- package/browser/controls/pip.js +1 -1
- package/browser/controls/play.js +1 -1
- package/browser/controls/playNext.js +1 -1
- package/browser/controls/playbackRate.js +1 -1
- package/browser/controls/poster.js +1 -1
- package/browser/controls/progress.js +1 -1
- package/browser/controls/reload.js +1 -1
- package/browser/controls/replay.js +1 -1
- package/browser/controls/rotate.js +1 -1
- package/browser/controls/screenShot.js +1 -1
- package/browser/controls/start.js +1 -1
- package/browser/controls/textTrack.js +1 -1
- package/browser/controls/time.js +1 -1
- package/browser/controls/volume.js +1 -1
- package/browser/core_player.js +1 -1
- package/browser/core_player.js.map +1 -1
- package/browser/index.js +7 -9
- package/browser/index.js.map +1 -1
- package/browser/simple_player.js +1 -1
- package/browser/simple_player.js.map +1 -1
- package/dist/controls/airplay.js +1 -1
- package/dist/controls/cssFullscreen.js +1 -1
- package/dist/controls/danmu.js +1 -1
- package/dist/controls/definition.js +1 -1
- package/dist/controls/download.js +1 -1
- package/dist/controls/enter.js +1 -1
- package/dist/controls/error.js +1 -1
- package/dist/controls/errorRetry.js +1 -1
- package/dist/controls/flex.js +1 -1
- package/dist/controls/fullscreen.js +1 -1
- package/dist/controls/loading.js +1 -1
- package/dist/controls/memoryPlay.js +1 -1
- package/dist/controls/miniplayer.js +7 -9
- package/dist/controls/mobile.js +1 -1
- package/dist/controls/nativeTextTrack.js +1 -1
- package/dist/controls/pip.js +1 -1
- package/dist/controls/play.js +1 -1
- package/dist/controls/playNext.js +1 -1
- package/dist/controls/playbackRate.js +1 -1
- package/dist/controls/poster.js +1 -1
- package/dist/controls/progress.js +1 -1
- package/dist/controls/reload.js +1 -1
- package/dist/controls/replay.js +1 -1
- package/dist/controls/rotate.js +1 -1
- package/dist/controls/screenShot.js +1 -1
- package/dist/controls/start.js +1 -1
- package/dist/controls/textTrack.js +1 -1
- package/dist/controls/time.js +1 -1
- package/dist/controls/volume.js +1 -1
- package/dist/core_player.js +2904 -2970
- package/dist/core_player.js.map +1 -1
- package/dist/index.js +3161 -1856
- package/dist/index.js.map +1 -1
- package/dist/simple_player.js +190 -165
- package/dist/simple_player.js.map +1 -1
- package/es/controls/airplay.js +1 -1
- package/es/controls/cssFullscreen.js +1 -1
- package/es/controls/danmu.js +1 -1
- package/es/controls/definition.js +1 -1
- package/es/controls/download.js +1 -1
- package/es/controls/enter.js +1 -1
- package/es/controls/error.js +1 -1
- package/es/controls/errorRetry.js +1 -1
- package/es/controls/flex.js +1 -1
- package/es/controls/fullscreen.js +1 -1
- package/es/controls/i18n.js +1 -1
- package/es/controls/keyboard.js +1 -1
- package/es/controls/loading.js +1 -1
- package/es/controls/localPreview.js +1 -1
- package/es/controls/memoryPlay.js +1 -1
- package/es/controls/miniplayer.js +7 -9
- package/es/controls/mobile.js +1 -1
- package/es/controls/nativeTextTrack.js +1 -1
- package/es/controls/pc.js +1 -1
- package/es/controls/pip.js +1 -1
- package/es/controls/play.js +1 -1
- package/es/controls/playNext.js +1 -1
- package/es/controls/playbackRate.js +1 -1
- package/es/controls/poster.js +1 -1
- package/es/controls/progress.js +1 -1
- package/es/controls/reload.js +1 -1
- package/es/controls/replay.js +1 -1
- package/es/controls/rotate.js +1 -1
- package/es/controls/screenShot.js +1 -1
- package/es/controls/start.js +1 -1
- package/es/controls/textTrack.js +1 -1
- package/es/controls/time.js +1 -1
- package/es/controls/volume.js +1 -1
- package/es/core_player.js +1 -1
- package/es/core_player.js.map +1 -1
- package/es/index.js +7 -9
- package/es/index.js.map +1 -1
- package/es/simple_player.js +1 -1
- package/es/simple_player.js.map +1 -1
- package/package.json +12 -2
- package/types/index.d.ts +0 -11
- package/postcss.config.js +0 -7
- package/src/bind/airplay.js +0 -10
- package/src/bind/cssFullscreen.js +0 -10
- package/src/bind/danmu.js +0 -10
- package/src/bind/definition.js +0 -10
- package/src/bind/download.js +0 -10
- package/src/bind/enter.js +0 -8
- package/src/bind/error.js +0 -8
- package/src/bind/errorRetry.js +0 -8
- package/src/bind/flex.js +0 -8
- package/src/bind/fullscreen.js +0 -10
- package/src/bind/i18n.js +0 -8
- package/src/bind/keyboard.js +0 -8
- package/src/bind/loading.js +0 -8
- package/src/bind/localPreview.js +0 -10
- package/src/bind/memoryPlay.js +0 -10
- package/src/bind/miniplayer.js +0 -10
- package/src/bind/mobile.js +0 -8
- package/src/bind/nativeTextTrack.js +0 -8
- package/src/bind/pc.js +0 -8
- package/src/bind/pip.js +0 -10
- package/src/bind/play.js +0 -10
- package/src/bind/playNext.js +0 -10
- package/src/bind/playbackRate.js +0 -8
- package/src/bind/poster.js +0 -8
- package/src/bind/progress.js +0 -8
- package/src/bind/reload.js +0 -10
- package/src/bind/replay.js +0 -10
- package/src/bind/rotate.js +0 -10
- package/src/bind/screenShot.js +0 -10
- package/src/bind/stallCheck.js +0 -8
- package/src/bind/start.js +0 -10
- package/src/bind/textTrack.js +0 -8
- package/src/bind/time.js +0 -8
- package/src/bind/volume.js +0 -10
- package/src/controls/airplay.js +0 -20
- package/src/controls/cssFullscreen.js +0 -49
- package/src/controls/danmu.js +0 -75
- package/src/controls/definition.js +0 -13
- package/src/controls/download.js +0 -28
- package/src/controls/errorRetry.js +0 -132
- package/src/controls/fullscreen.js +0 -145
- package/src/controls/keyboard.js +0 -214
- package/src/controls/localPreview.js +0 -32
- package/src/controls/memoryPlay.js +0 -14
- package/src/controls/miniplayer.js +0 -128
- package/src/controls/mobile.js +0 -100
- package/src/controls/pc.js +0 -123
- package/src/controls/pip.js +0 -52
- package/src/controls/play.js +0 -34
- package/src/controls/playNext.js +0 -29
- package/src/controls/reload.js +0 -24
- package/src/controls/replay.js +0 -30
- package/src/controls/rotate.js +0 -99
- package/src/controls/screenShot.js +0 -65
- package/src/controls/stallCheck.js +0 -38
- package/src/controls/start.js +0 -60
- package/src/controls/textTrack.js +0 -182
- package/src/controls/volume.js +0 -178
- package/src/controls.js +0 -36
- package/src/core_player.js +0 -13
- package/src/error.js +0 -74
- package/src/index.js +0 -57
- package/src/player.js +0 -553
- package/src/proxy.js +0 -495
- package/src/simple_player.js +0 -42
- package/src/skin/assets/airplay.svg +0 -1
- package/src/skin/assets/download.svg +0 -14
- package/src/skin/assets/exitCssFull.svg +0 -3
- package/src/skin/assets/exitFull.svg +0 -3
- package/src/skin/assets/loading.svg +0 -3
- package/src/skin/assets/panel.svg +0 -4
- package/src/skin/assets/pause.svg +0 -3
- package/src/skin/assets/play.svg +0 -3
- package/src/skin/assets/playNext.svg +0 -3
- package/src/skin/assets/reload.svg +0 -3
- package/src/skin/assets/replay.svg +0 -3
- package/src/skin/assets/requestCssFull.svg +0 -3
- package/src/skin/assets/requestFull.svg +0 -3
- package/src/skin/assets/rotate.svg +0 -11
- package/src/skin/assets/startPause.svg +0 -3
- package/src/skin/assets/startPlay.svg +0 -3
- package/src/skin/assets/volumeLarge.svg +0 -4
- package/src/skin/assets/volumeMuted.svg +0 -4
- package/src/skin/assets/volumeSmall.svg +0 -4
- package/src/skin/controls/airplay.js +0 -44
- package/src/skin/controls/cssFullscreen.js +0 -36
- package/src/skin/controls/danmu.js +0 -214
- package/src/skin/controls/definition.js +0 -251
- package/src/skin/controls/download.js +0 -29
- package/src/skin/controls/enter.js +0 -21
- package/src/skin/controls/error.js +0 -57
- package/src/skin/controls/flex.js +0 -13
- package/src/skin/controls/fullscreen.js +0 -43
- package/src/skin/controls/i18n.js +0 -168
- package/src/skin/controls/loading.js +0 -17
- package/src/skin/controls/localPreview.js +0 -18
- package/src/skin/controls/memoryPlay.js +0 -39
- package/src/skin/controls/miniplayer.js +0 -26
- package/src/skin/controls/nativeTextTrack.js +0 -153
- package/src/skin/controls/pip.js +0 -26
- package/src/skin/controls/play.js +0 -43
- package/src/skin/controls/playNext.js +0 -41
- package/src/skin/controls/playbackRate.js +0 -141
- package/src/skin/controls/poster.js +0 -18
- package/src/skin/controls/progress.js +0 -407
- package/src/skin/controls/reload.js +0 -29
- package/src/skin/controls/replay.js +0 -56
- package/src/skin/controls/rotate.js +0 -29
- package/src/skin/controls/screenShot.js +0 -27
- package/src/skin/controls/start.js +0 -62
- package/src/skin/controls/textTrack.js +0 -113
- package/src/skin/controls/time.js +0 -40
- package/src/skin/controls/volume.js +0 -63
- package/src/skin/index.js +0 -63
- package/src/skin/style/common/animation.scss +0 -16
- package/src/skin/style/common/svg-url.scss +0 -70
- package/src/skin/style/controls/airplay.scss +0 -35
- package/src/skin/style/controls/controls.scss +0 -40
- package/src/skin/style/controls/cssfullscreen.scss +0 -103
- package/src/skin/style/controls/danmu.scss +0 -333
- package/src/skin/style/controls/definition.scss +0 -76
- package/src/skin/style/controls/download.scss +0 -45
- package/src/skin/style/controls/enter.scss +0 -55
- package/src/skin/style/controls/error.scss +0 -34
- package/src/skin/style/controls/fullscreen.scss +0 -60
- package/src/skin/style/controls/icon.scss +0 -12
- package/src/skin/style/controls/live.scss +0 -9
- package/src/skin/style/controls/loading.scss +0 -44
- package/src/skin/style/controls/memoryPlay.scss +0 -28
- package/src/skin/style/controls/miniplayer.scss +0 -104
- package/src/skin/style/controls/pip.scss +0 -42
- package/src/skin/style/controls/placeholder.scss +0 -7
- package/src/skin/style/controls/play.scss +0 -79
- package/src/skin/style/controls/playNext.scss +0 -44
- package/src/skin/style/controls/playbackRate.scss +0 -82
- package/src/skin/style/controls/poster.scss +0 -19
- package/src/skin/style/controls/progress.scss +0 -182
- package/src/skin/style/controls/reload.scss +0 -43
- package/src/skin/style/controls/replay.scss +0 -46
- package/src/skin/style/controls/rotate.scss +0 -41
- package/src/skin/style/controls/screenShot.scss +0 -42
- package/src/skin/style/controls/start.scss +0 -78
- package/src/skin/style/controls/textTrack.scss +0 -87
- package/src/skin/style/controls/time.scss +0 -24
- package/src/skin/style/controls/tips.scss +0 -24
- package/src/skin/style/controls/videoProxy.scss +0 -6
- package/src/skin/style/controls/volume.scss +0 -143
- package/src/skin/style/index.scss +0 -88
- package/src/utils/sniffer.js +0 -47
- package/src/utils/url.js +0 -10
- package/src/utils/util.js +0 -358
- package/src/utils/xgplayerTimeRange.js +0 -17
- package/src/version.js +0 -7
- package/version.json +0 -3
- package/webpack.config.js +0 -168
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { createDom, createImgBtn } from '../../utils/util'
|
|
2
|
-
import RequestFullIcon from '../assets/requestFull.svg'
|
|
3
|
-
import ExitFullIcon from '../assets/exitFull.svg'
|
|
4
|
-
import '../style/controls/fullscreen.scss'
|
|
5
|
-
|
|
6
|
-
let s_fullscreen = function () {
|
|
7
|
-
let player = this
|
|
8
|
-
let fullscreenBtn = player.config.fullscreenBtn ? player.config.fullscreenBtn : {}
|
|
9
|
-
let btn
|
|
10
|
-
if (fullscreenBtn.type === 'img') {
|
|
11
|
-
btn = createImgBtn('fullscreen', fullscreenBtn.url.request, fullscreenBtn.width, fullscreenBtn.height)
|
|
12
|
-
} else {
|
|
13
|
-
btn = createDom('xg-fullscreen', `<xg-icon class="xgplayer-icon">
|
|
14
|
-
<div class="xgplayer-icon-requestfull">${RequestFullIcon}</div>
|
|
15
|
-
<div class="xgplayer-icon-exitfull">${ExitFullIcon}</div>
|
|
16
|
-
</xg-icon>`, {}, 'xgplayer-fullscreen')
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
let tipsText = {}
|
|
20
|
-
tipsText.requestfull = player.lang.FULLSCREEN_TIPS
|
|
21
|
-
tipsText.exitfull = player.lang.EXITFULLSCREEN_TIPS
|
|
22
|
-
let tips = createDom('xg-tips', `<span class="xgplayer-tip-requestfull">${tipsText.requestfull}</span>
|
|
23
|
-
<span class="xgplayer-tip-exitfull">${tipsText.exitfull}</span>`, {}, 'xgplayer-tips')
|
|
24
|
-
btn.appendChild(tips)
|
|
25
|
-
player.once('ready', () => {
|
|
26
|
-
if(player.controls) {
|
|
27
|
-
player.controls.appendChild(btn)
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
['click', 'touchend'].forEach(item => {
|
|
32
|
-
btn.addEventListener(item, function (e) {
|
|
33
|
-
e.preventDefault()
|
|
34
|
-
e.stopPropagation()
|
|
35
|
-
player.userGestureTrigEvent('fullscreenBtnClick')
|
|
36
|
-
})
|
|
37
|
-
})
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export default {
|
|
41
|
-
name: 's_fullscreen',
|
|
42
|
-
method: s_fullscreen
|
|
43
|
-
}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { typeOf } from '../../utils/util'
|
|
2
|
-
|
|
3
|
-
let s_i18n = function () {
|
|
4
|
-
let player = this; let lang = {};
|
|
5
|
-
lang.en = {
|
|
6
|
-
HAVE_NOTHING: 'There is no information on whether audio/video is ready',
|
|
7
|
-
HAVE_METADATA: 'Audio/video metadata is ready ',
|
|
8
|
-
HAVE_CURRENT_DATA: 'Data about the current play location is available, but there is not enough data to play the next frame/millisecond',
|
|
9
|
-
HAVE_FUTURE_DATA: 'Current and at least one frame of data is available',
|
|
10
|
-
HAVE_ENOUGH_DATA: 'The available data is sufficient to start playing',
|
|
11
|
-
NETWORK_EMPTY: 'Audio/video has not been initialized',
|
|
12
|
-
NETWORK_IDLE: 'Audio/video is active and has been selected for resources, but no network is used',
|
|
13
|
-
NETWORK_LOADING: 'The browser is downloading the data',
|
|
14
|
-
NETWORK_NO_SOURCE: 'No audio/video source was found',
|
|
15
|
-
MEDIA_ERR_ABORTED: 'The fetch process is aborted by the user',
|
|
16
|
-
MEDIA_ERR_NETWORK: 'An error occurred while downloading',
|
|
17
|
-
MEDIA_ERR_DECODE: 'An error occurred while decoding',
|
|
18
|
-
MEDIA_ERR_SRC_NOT_SUPPORTED: 'Audio/video is not supported',
|
|
19
|
-
REPLAY: 'Replay',
|
|
20
|
-
ERROR: 'Network is offline',
|
|
21
|
-
PLAY_TIPS: 'Play',
|
|
22
|
-
PAUSE_TIPS: 'Pause',
|
|
23
|
-
PLAYNEXT_TIPS: 'Play next',
|
|
24
|
-
DOWNLOAD_TIPS: 'Download',
|
|
25
|
-
ROTATE_TIPS: 'Rotate',
|
|
26
|
-
RELOAD_TIPS: 'Reload',
|
|
27
|
-
FULLSCREEN_TIPS: "Fullscreen",
|
|
28
|
-
EXITFULLSCREEN_TIPS: 'Exit fullscreen',
|
|
29
|
-
CSSFULLSCREEN_TIPS: 'Cssfullscreen',
|
|
30
|
-
EXITCSSFULLSCREEN_TIPS: 'Exit cssfullscreen',
|
|
31
|
-
TEXTTRACK: 'Caption',
|
|
32
|
-
PIP: 'Pip',
|
|
33
|
-
MINIPLAYER: 'Miniplayer',
|
|
34
|
-
SCREENSHOT: 'Screenshot',
|
|
35
|
-
LIVE: 'LIVE',
|
|
36
|
-
OFF: 'Off',
|
|
37
|
-
MINIPLAYER_DRAG: 'Click and hold to drag',
|
|
38
|
-
AIRPLAY_TIPS: 'Airplay',
|
|
39
|
-
}
|
|
40
|
-
lang['zh-cn'] = {
|
|
41
|
-
HAVE_NOTHING: '没有关于音频/视频是否就绪的信息',
|
|
42
|
-
HAVE_METADATA: '音频/视频的元数据已就绪',
|
|
43
|
-
HAVE_CURRENT_DATA: '关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧/毫秒',
|
|
44
|
-
HAVE_FUTURE_DATA: '当前及至少下一帧的数据是可用的',
|
|
45
|
-
HAVE_ENOUGH_DATA: '可用数据足以开始播放',
|
|
46
|
-
NETWORK_EMPTY: '音频/视频尚未初始化',
|
|
47
|
-
NETWORK_IDLE: '音频/视频是活动的且已选取资源,但并未使用网络',
|
|
48
|
-
NETWORK_LOADING: '浏览器正在下载数据',
|
|
49
|
-
NETWORK_NO_SOURCE: '未找到音频/视频来源',
|
|
50
|
-
MEDIA_ERR_ABORTED: '取回过程被用户中止',
|
|
51
|
-
MEDIA_ERR_NETWORK: '当下载时发生错误',
|
|
52
|
-
MEDIA_ERR_DECODE: '当解码时发生错误',
|
|
53
|
-
MEDIA_ERR_SRC_NOT_SUPPORTED: '不支持的音频/视频格式',
|
|
54
|
-
REPLAY: '重播',
|
|
55
|
-
ERROR: '网络连接似乎出现了问题',
|
|
56
|
-
PLAY_TIPS: '播放',
|
|
57
|
-
PAUSE_TIPS: '暂停',
|
|
58
|
-
PLAYNEXT_TIPS: '下一集',
|
|
59
|
-
DOWNLOAD_TIPS: '下载',
|
|
60
|
-
ROTATE_TIPS: '旋转',
|
|
61
|
-
RELOAD_TIPS: '重新载入',
|
|
62
|
-
FULLSCREEN_TIPS: "进入全屏",
|
|
63
|
-
EXITFULLSCREEN_TIPS: '退出全屏',
|
|
64
|
-
CSSFULLSCREEN_TIPS: '进入样式全屏',
|
|
65
|
-
EXITCSSFULLSCREEN_TIPS: '退出样式全屏',
|
|
66
|
-
TEXTTRACK: '字幕',
|
|
67
|
-
PIP: '画中画',
|
|
68
|
-
MINIPLAYER: '迷你播放器',
|
|
69
|
-
SCREENSHOT: '截图',
|
|
70
|
-
LIVE: '正在直播',
|
|
71
|
-
OFF: '关闭',
|
|
72
|
-
MINIPLAYER_DRAG: '点击按住可拖动视频',
|
|
73
|
-
AIRPLAY_TIPS: '隔空播放',
|
|
74
|
-
}
|
|
75
|
-
lang['zh-hk'] = {
|
|
76
|
-
HAVE_NOTHING: '沒有關於音頻/視頻是否就緒的信息',
|
|
77
|
-
HAVE_METADATA: '音頻/視頻的元數據已就緒',
|
|
78
|
-
HAVE_CURRENT_DATA: '關於當前播放位置的數據是可用的,但沒有足夠的數據來播放下壹幀/毫秒',
|
|
79
|
-
HAVE_FUTURE_DATA: '當前及至少下壹幀的數據是可用的',
|
|
80
|
-
HAVE_ENOUGH_DATA: '可用數據足以開始播放',
|
|
81
|
-
NETWORK_EMPTY: '音頻/視頻尚未初始化',
|
|
82
|
-
NETWORK_IDLE: '音頻/視頻是活動的且已選取資源,但並未使用網絡',
|
|
83
|
-
NETWORK_LOADING: '瀏覽器正在下載數據',
|
|
84
|
-
NETWORK_NO_SOURCE: '未找到音頻/視頻來源',
|
|
85
|
-
MEDIA_ERR_ABORTED: '取回過程被用戶中止',
|
|
86
|
-
MEDIA_ERR_NETWORK: '當下載時發生錯誤',
|
|
87
|
-
MEDIA_ERR_DECODE: '當解碼時發生錯誤',
|
|
88
|
-
MEDIA_ERR_SRC_NOT_SUPPORTED: '不支持的音頻/視頻格式',
|
|
89
|
-
REPLAY: '重播',
|
|
90
|
-
ERROR: '網絡連接似乎出現了問題',
|
|
91
|
-
PLAY_TIPS: '播放',
|
|
92
|
-
PAUSE_TIPS: '暫停',
|
|
93
|
-
PLAYNEXT_TIPS: '下壹集',
|
|
94
|
-
DOWNLOAD_TIPS: '下載',
|
|
95
|
-
ROTATE_TIPS: '旋轉',
|
|
96
|
-
RELOAD_TIPS: '重新載入',
|
|
97
|
-
FULLSCREEN_TIPS: "進入全屏",
|
|
98
|
-
EXITFULLSCREEN_TIPS: '退出全屏',
|
|
99
|
-
CSSFULLSCREEN_TIPS: '進入樣式全屏',
|
|
100
|
-
EXITCSSFULLSCREEN_TIPS: '退出樣式全屏',
|
|
101
|
-
TEXTTRACK: '字幕',
|
|
102
|
-
PIP: '畫中畫',
|
|
103
|
-
MINIPLAYER: '迷妳播放器',
|
|
104
|
-
SCREENSHOT: '截圖',
|
|
105
|
-
LIVE: '正在直播',
|
|
106
|
-
OFF: '關閉',
|
|
107
|
-
MINIPLAYER_DRAG: '點擊按住可拖動視頻',
|
|
108
|
-
AIRPLAY_TIPS: '隔空播放',
|
|
109
|
-
}
|
|
110
|
-
lang['jp'] = {
|
|
111
|
-
HAVE_NOTHING: 'オーディオ/ビデオが準備できているか情報がありません',
|
|
112
|
-
HAVE_METADATA: 'オーディオ/ビデオのメタデータは準備できています',
|
|
113
|
-
HAVE_CURRENT_DATA: '現在の再生位置に関するデータは利用可能ですが、次のフレーム/ミリ秒を再生するのに十分なデータがありません',
|
|
114
|
-
HAVE_FUTURE_DATA: '現在、少なくとも次のフレームのデータが利用可能です',
|
|
115
|
-
HAVE_ENOUGH_DATA: '利用可能なデータは再生を開始するのに十分です',
|
|
116
|
-
NETWORK_EMPTY: 'オーディオ/ビデオが初期化されていません',
|
|
117
|
-
NETWORK_IDLE: 'オーディオ/ビデオはアクティブでリソースが選択されていますが、ネットワークが使用されていません',
|
|
118
|
-
NETWORK_LOADING: 'ブラウザーはデータをダウンロードしています',
|
|
119
|
-
NETWORK_NO_SOURCE: 'オーディオ/ビデオ のソースが見つかりません',
|
|
120
|
-
MEDIA_ERR_ABORTED: 'ユーザーによってフェッチプロセスが中止されました',
|
|
121
|
-
MEDIA_ERR_NETWORK: 'ダウンロード中にエラーが発生しました',
|
|
122
|
-
MEDIA_ERR_DECODE: 'デコード中にエラーが発生しました',
|
|
123
|
-
MEDIA_ERR_SRC_NOT_SUPPORTED: 'オーディオ/ビデオ の形式がサポートされていません',
|
|
124
|
-
REPLAY: 'リプレイ',
|
|
125
|
-
ERROR: 'ネットワークの接続に問題が発生しました',
|
|
126
|
-
PLAY_TIPS: 'プレイ',
|
|
127
|
-
PAUSE_TIPS: '一時停止',
|
|
128
|
-
PLAYNEXT_TIPS: '次をプレイ',
|
|
129
|
-
DOWNLOAD_TIPS: 'ダウンロード',
|
|
130
|
-
ROTATE_TIPS: '回転',
|
|
131
|
-
RELOAD_TIPS: '再読み込み',
|
|
132
|
-
FULLSCREEN_TIPS: "フルスクリーン",
|
|
133
|
-
EXITFULLSCREEN_TIPS: 'フルスクリーンを終了',
|
|
134
|
-
CSSFULLSCREEN_TIPS: 'シアターモード',
|
|
135
|
-
EXITCSSFULLSCREEN_TIPS: 'シアターモードを終了',
|
|
136
|
-
TEXTTRACK: '字幕',
|
|
137
|
-
PIP: 'ミニプレーヤー',
|
|
138
|
-
MINIPLAYER: 'ミニプレーヤー',
|
|
139
|
-
SCREENSHOT: 'スクリーンショット',
|
|
140
|
-
LIVE: '生放送',
|
|
141
|
-
OFF: 'オフ',
|
|
142
|
-
MINIPLAYER_DRAG: 'ボタンを押して働画をドラッグする',
|
|
143
|
-
AIRPLAY_TIPS: '隔空放送',
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
Object.defineProperty(player, 'lang', {
|
|
147
|
-
get: function () {
|
|
148
|
-
if (player.config) {
|
|
149
|
-
return lang[player.config.lang] || lang['en']
|
|
150
|
-
} else {
|
|
151
|
-
return lang['en']
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
set: function (value) {
|
|
155
|
-
if (typeOf(value) === 'Object') {
|
|
156
|
-
Object.keys(value).forEach(key => {
|
|
157
|
-
lang[key] = value[key]
|
|
158
|
-
})
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
})
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
export default {
|
|
166
|
-
name: 's_i18n',
|
|
167
|
-
method: s_i18n
|
|
168
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { createDom } from '../../utils/util'
|
|
2
|
-
import Loading from '../assets/loading.svg'
|
|
3
|
-
import '../style/controls/loading.scss'
|
|
4
|
-
|
|
5
|
-
let s_loading = function () {
|
|
6
|
-
let player = this
|
|
7
|
-
let root = player.root
|
|
8
|
-
let container = createDom('xg-loading', `${Loading}`, {}, 'xgplayer-loading')
|
|
9
|
-
player.once('ready', () => {
|
|
10
|
-
root.appendChild(container)
|
|
11
|
-
})
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default {
|
|
15
|
-
name: 's_loading',
|
|
16
|
-
method: s_loading
|
|
17
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { createDom } from '../../utils/util'
|
|
2
|
-
|
|
3
|
-
let s_localPreview = function () {
|
|
4
|
-
let player = this
|
|
5
|
-
if (player.config.preview && player.config.preview.uploadEl) {
|
|
6
|
-
let preview = createDom('xg-preview', '<input type="file">', {}, 'xgplayer-preview')
|
|
7
|
-
let upload = preview.querySelector('input')
|
|
8
|
-
player.config.preview.uploadEl.appendChild(preview)
|
|
9
|
-
upload.onchange = function () {
|
|
10
|
-
player.emit('upload', upload)
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export default {
|
|
16
|
-
name: 's_localPreview',
|
|
17
|
-
method: s_localPreview
|
|
18
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { createDom, format } from '../../utils/util'
|
|
2
|
-
import '../style/controls/memoryPlay.scss'
|
|
3
|
-
|
|
4
|
-
let s_memoryPlay = function () {
|
|
5
|
-
let player = this
|
|
6
|
-
let lastPlayTime = player.config.lastPlayTime || 0
|
|
7
|
-
let lastPlayTimeHideDelay = player.config.lastPlayTimeHideDelay || 0
|
|
8
|
-
let dom = null
|
|
9
|
-
if (lastPlayTime <= 0) {
|
|
10
|
-
return
|
|
11
|
-
}
|
|
12
|
-
dom = createDom('xg-memoryplay', `<div class="xgplayer-memoryplay-spot"><div class="xgplayer-progress-tip">您上次观看到 <span class="xgplayer-lasttime">${format(lastPlayTime)}</span> ,为您自动续播 <span class="btn-close"><svg viewBox="64 64 896 896" focusable="false" class="" data-icon="close" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z"></path></svg></span></div></div>`, {}, 'xgplayer-memoryplay');
|
|
13
|
-
dom.addEventListener('mouseover', (e) => {
|
|
14
|
-
e.stopPropagation();
|
|
15
|
-
});
|
|
16
|
-
const removeFunc = () => {
|
|
17
|
-
dom && dom.parentNode && dom.parentNode.removeChild(dom)
|
|
18
|
-
dom = null
|
|
19
|
-
}
|
|
20
|
-
dom.querySelector('.xgplayer-progress-tip .btn-close').addEventListener('click', removeFunc)
|
|
21
|
-
const handlePlay = () => {
|
|
22
|
-
if(lastPlayTimeHideDelay > 0) {
|
|
23
|
-
player.root.appendChild(dom);
|
|
24
|
-
}
|
|
25
|
-
player.emit('memoryPlayStart', lastPlayTime);
|
|
26
|
-
if (lastPlayTimeHideDelay > 0) {
|
|
27
|
-
setTimeout(() => {
|
|
28
|
-
removeFunc()
|
|
29
|
-
}, lastPlayTimeHideDelay * 1000)
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
player.once('playing', handlePlay)
|
|
33
|
-
player.once('ended', removeFunc)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export default {
|
|
37
|
-
name: 's_memoryPlay',
|
|
38
|
-
method: s_memoryPlay
|
|
39
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { createDom } from '../../utils/util'
|
|
2
|
-
import '../style/controls/miniplayer.scss'
|
|
3
|
-
|
|
4
|
-
let s_miniplayer = function () {
|
|
5
|
-
let player = this
|
|
6
|
-
if (!player.config.miniplayer) { return }
|
|
7
|
-
let miniplayer = player.lang.MINIPLAYER
|
|
8
|
-
let btn = createDom('xg-miniplayer', `<p class="name"><span>${miniplayer}</span></p>`, {tabindex: 9}, 'xgplayer-miniplayer')
|
|
9
|
-
|
|
10
|
-
player.once('ready', () => {
|
|
11
|
-
player.controls.appendChild(btn);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
['click', 'touchend'].forEach(item => {
|
|
15
|
-
btn.addEventListener(item, e => {
|
|
16
|
-
e.preventDefault()
|
|
17
|
-
e.stopPropagation()
|
|
18
|
-
player.userGestureTrigEvent('miniplayerBtnClick')
|
|
19
|
-
})
|
|
20
|
-
})
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default {
|
|
24
|
-
name: 's_miniplayer',
|
|
25
|
-
method: s_miniplayer
|
|
26
|
-
}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import Player from '../../player'
|
|
2
|
-
import '../style/controls/textTrack.scss'
|
|
3
|
-
|
|
4
|
-
let s_nativeTextTrack = function () {
|
|
5
|
-
if (!this.config.nativeTextTrack) {
|
|
6
|
-
return
|
|
7
|
-
}
|
|
8
|
-
let player = this
|
|
9
|
-
let root = player.root
|
|
10
|
-
let util = Player.util
|
|
11
|
-
let container = util.createDom('xg-texttrack', '', {tabindex: 7}, 'xgplayer-texttrack')
|
|
12
|
-
let list = player.config.nativeTextTrack
|
|
13
|
-
if (list && Array.isArray(list) && list.length > 0) {
|
|
14
|
-
util.addClass(player.root, 'xgplayer-is-texttrack')
|
|
15
|
-
player.once('canplay', function () {
|
|
16
|
-
let tmp = ['<ul>']
|
|
17
|
-
tmp.push(`<li class='${this.textTrackShowDefault ? '' : 'selected'}'}'>${player.lang.OFF}</li>`)
|
|
18
|
-
list.forEach(item => {
|
|
19
|
-
tmp.push(`<li class='${item.default && this.textTrackShowDefault ? 'selected' : ''}'>${item.label}</li>`)
|
|
20
|
-
})
|
|
21
|
-
let controlText = player.lang.TEXTTRACK
|
|
22
|
-
tmp.push(`</ul><p class="name">${controlText}</p>`)
|
|
23
|
-
|
|
24
|
-
let urlInRoot = root.querySelector('.xgplayer-texttrack')
|
|
25
|
-
if (urlInRoot) {
|
|
26
|
-
urlInRoot.innerHTML = tmp.join('')
|
|
27
|
-
let cur = urlInRoot.querySelector('.name')
|
|
28
|
-
if (!player.config.textTrackActive || player.config.textTrackActive === 'hover') {
|
|
29
|
-
cur.addEventListener('mouseenter', e => {
|
|
30
|
-
e.preventDefault()
|
|
31
|
-
e.stopPropagation()
|
|
32
|
-
util.addClass(root, 'xgplayer-texttrack-active')
|
|
33
|
-
urlInRoot.focus()
|
|
34
|
-
})
|
|
35
|
-
}
|
|
36
|
-
} else {
|
|
37
|
-
container.innerHTML = tmp.join('')
|
|
38
|
-
let cur = container.querySelector('.name')
|
|
39
|
-
if (!player.config.textTrackActive || player.config.textTrackActive === 'hover') {
|
|
40
|
-
cur.addEventListener('mouseenter', e => {
|
|
41
|
-
e.preventDefault()
|
|
42
|
-
e.stopPropagation()
|
|
43
|
-
util.addClass(player.root, 'xgplayer-texttrack-active')
|
|
44
|
-
container.focus()
|
|
45
|
-
})
|
|
46
|
-
}
|
|
47
|
-
player.controls.appendChild(container)
|
|
48
|
-
}
|
|
49
|
-
})
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
['touchend', 'click'].forEach(item => {
|
|
53
|
-
container.addEventListener(item, function (e) {
|
|
54
|
-
e.preventDefault()
|
|
55
|
-
e.stopPropagation()
|
|
56
|
-
let li = e.target || e.srcElement
|
|
57
|
-
if (li && li.tagName.toLocaleLowerCase() === 'li') {
|
|
58
|
-
Array.prototype.forEach.call(li.parentNode.childNodes, item => {
|
|
59
|
-
util.removeClass(item, 'selected')
|
|
60
|
-
})
|
|
61
|
-
util.addClass(li, 'selected')
|
|
62
|
-
let trackDoms = player.root.getElementsByTagName('Track')
|
|
63
|
-
if (li.innerHTML === player.lang.OFF) {
|
|
64
|
-
trackDoms[0].track.mode = 'hidden'
|
|
65
|
-
trackDoms[0].src = ''
|
|
66
|
-
util.removeClass(player.root, 'xgplayer-texttrack-active')
|
|
67
|
-
} else {
|
|
68
|
-
trackDoms[0].style.display = 'block'
|
|
69
|
-
util.addClass(player.root, 'xgplayer-texttrack-active')
|
|
70
|
-
trackDoms[0].track.mode = 'showing'
|
|
71
|
-
|
|
72
|
-
list.some(item => {
|
|
73
|
-
if (item.label === li.innerHTML) {
|
|
74
|
-
trackDoms[0].src = item.src
|
|
75
|
-
if (item.kind) {
|
|
76
|
-
trackDoms[0].kind = item.kind
|
|
77
|
-
}
|
|
78
|
-
trackDoms[0].label = item.label
|
|
79
|
-
if (item.srclang) {
|
|
80
|
-
trackDoms[0].srclang = item.srclang
|
|
81
|
-
}
|
|
82
|
-
return true
|
|
83
|
-
}
|
|
84
|
-
})
|
|
85
|
-
player.emit('textTrackChange', li.innerHTML)
|
|
86
|
-
}
|
|
87
|
-
} else if (player.config.textTrackActive === 'click' && li && (li.tagName.toLocaleLowerCase() === 'p' || li.tagName.toLocaleLowerCase() === 'em')) {
|
|
88
|
-
util.addClass(player.root, 'xgplayer-texttrack-active')
|
|
89
|
-
container.focus()
|
|
90
|
-
}
|
|
91
|
-
}, false)
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
player.on('play', () => {
|
|
95
|
-
let ul = root.querySelector('.xgplayer-texttrack ul')
|
|
96
|
-
let trackDoms = root.getElementsByTagName('Track')
|
|
97
|
-
if (!player['hls'] || !ul || !trackDoms) return
|
|
98
|
-
trackDoms[0].src = ''
|
|
99
|
-
Array.prototype.forEach.call(ul.childNodes, li => {
|
|
100
|
-
if (util.hasClass(li, 'selected')) {
|
|
101
|
-
if (li.innerHTML === player.lang.OFF) {
|
|
102
|
-
trackDoms[0].track.mode = 'hidden'
|
|
103
|
-
trackDoms[0].src = ''
|
|
104
|
-
} else {
|
|
105
|
-
trackDoms[0].track.mode = 'hidden'
|
|
106
|
-
|
|
107
|
-
list.some(item => {
|
|
108
|
-
if (item.label !== li.innerHTML) {
|
|
109
|
-
trackDoms[0].src = item.src
|
|
110
|
-
if (item.kind) {
|
|
111
|
-
trackDoms[0].kind = item.kind
|
|
112
|
-
}
|
|
113
|
-
trackDoms[0].label = item.label
|
|
114
|
-
if (item.srclang) {
|
|
115
|
-
trackDoms[0].srclang = item.srclang
|
|
116
|
-
}
|
|
117
|
-
return true
|
|
118
|
-
}
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
list.some(item => {
|
|
122
|
-
if (item.label === li.innerHTML) {
|
|
123
|
-
setTimeout(() => {
|
|
124
|
-
trackDoms[0].src = item.src
|
|
125
|
-
if (item.kind) {
|
|
126
|
-
trackDoms[0].kind = item.kind
|
|
127
|
-
}
|
|
128
|
-
trackDoms[0].label = item.label
|
|
129
|
-
if (item.srclang) {
|
|
130
|
-
trackDoms[0].srclang = item.srclang
|
|
131
|
-
}
|
|
132
|
-
trackDoms[0].track.mode = 'showing'
|
|
133
|
-
})
|
|
134
|
-
return true
|
|
135
|
-
}
|
|
136
|
-
})
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
})
|
|
140
|
-
util.removeClass(player.root, 'xgplayer-texttrack-active')
|
|
141
|
-
})
|
|
142
|
-
|
|
143
|
-
container.addEventListener('mouseleave', e => {
|
|
144
|
-
e.preventDefault()
|
|
145
|
-
e.stopPropagation()
|
|
146
|
-
util.removeClass(player.root, 'xgplayer-texttrack-active')
|
|
147
|
-
})
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
export default {
|
|
151
|
-
name: 's_nativeTextTrack',
|
|
152
|
-
method: s_nativeTextTrack
|
|
153
|
-
}
|
package/src/skin/controls/pip.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { createDom } from '../../utils/util'
|
|
2
|
-
import '../style/controls/pip.scss'
|
|
3
|
-
|
|
4
|
-
let s_pip = function () {
|
|
5
|
-
let player = this
|
|
6
|
-
if (!player.config.pip || typeof player.video.requestPictureInPicture !== 'function') { return }
|
|
7
|
-
let pip = player.lang.PIP
|
|
8
|
-
let btn = createDom('xg-pip', `<p class="name"><span>${pip}</span></p>`, {tabindex: 9}, 'xgplayer-pip')
|
|
9
|
-
|
|
10
|
-
player.once('ready', () => {
|
|
11
|
-
player.controls.appendChild(btn);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
['click', 'touchend'].forEach(item => {
|
|
15
|
-
btn.addEventListener(item, e => {
|
|
16
|
-
e.preventDefault()
|
|
17
|
-
e.stopPropagation()
|
|
18
|
-
player.userGestureTrigEvent('pipBtnClick')
|
|
19
|
-
})
|
|
20
|
-
})
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default {
|
|
24
|
-
name: 's_pip',
|
|
25
|
-
method: s_pip
|
|
26
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { createDom, createImgBtn } from '../../utils/util'
|
|
2
|
-
import PlayIcon from '../assets/play.svg'
|
|
3
|
-
import PauseIcon from '../assets/pause.svg'
|
|
4
|
-
import '../style/controls/play.scss'
|
|
5
|
-
|
|
6
|
-
let s_play = function () {
|
|
7
|
-
let player = this
|
|
8
|
-
let playBtn = player.config.playBtn ? player.config.playBtn : {}
|
|
9
|
-
let btn
|
|
10
|
-
if (playBtn.type === 'img') {
|
|
11
|
-
btn = createImgBtn('play', playBtn.url.play, playBtn.width, playBtn.height)
|
|
12
|
-
} else {
|
|
13
|
-
btn = createDom('xg-play', `<xg-icon class="xgplayer-icon">
|
|
14
|
-
<div class="xgplayer-icon-play">${PlayIcon}</div>
|
|
15
|
-
<div class="xgplayer-icon-pause">${PauseIcon}</div>
|
|
16
|
-
</xg-icon>`, {}, 'xgplayer-play')
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
let tipsText = {}
|
|
20
|
-
tipsText.play = player.lang.PLAY_TIPS
|
|
21
|
-
tipsText.pause = player.lang.PAUSE_TIPS
|
|
22
|
-
let tips = createDom('xg-tips', `<span class="xgplayer-tip-play">${tipsText.play}</span>
|
|
23
|
-
<span class="xgplayer-tip-pause">${tipsText.pause}</span>`, {}, 'xgplayer-tips')
|
|
24
|
-
btn.appendChild(tips)
|
|
25
|
-
player.once('ready', () => {
|
|
26
|
-
if(player.controls) {
|
|
27
|
-
player.controls.appendChild(btn)
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
['click', 'touchend'].forEach(item => {
|
|
32
|
-
btn.addEventListener(item, function (e) {
|
|
33
|
-
e.preventDefault()
|
|
34
|
-
e.stopPropagation()
|
|
35
|
-
player.userGestureTrigEvent('playBtnClick')
|
|
36
|
-
})
|
|
37
|
-
})
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export default {
|
|
41
|
-
name: 's_play',
|
|
42
|
-
method: s_play
|
|
43
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { createDom, addClass } from '../../utils/util'
|
|
2
|
-
import PlayNextIcon from '../assets/playNext.svg'
|
|
3
|
-
import '../style/controls/playNext.scss'
|
|
4
|
-
|
|
5
|
-
let s_playNext = function () {
|
|
6
|
-
let player = this
|
|
7
|
-
let nextBtn = player.config.playNext
|
|
8
|
-
if (!nextBtn || !nextBtn.urlList) { return }
|
|
9
|
-
let btn = createDom('xg-playnext', `<xg-icon class="xgplayer-icon">${PlayNextIcon}</xg-icon>`, {}, 'xgplayer-playnext')
|
|
10
|
-
let tipsText = player.lang.PLAYNEXT_TIPS
|
|
11
|
-
let tips = createDom('xg-tips', `<span class="xgplayer-tip-playnext">${tipsText}</span>`, {}, 'xgplayer-tips')
|
|
12
|
-
btn.appendChild(tips)
|
|
13
|
-
player.once('ready', () => {
|
|
14
|
-
player.controls.appendChild(btn)
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
['click', 'touchend'].forEach(item => {
|
|
18
|
-
btn.addEventListener(item, e => {
|
|
19
|
-
e.preventDefault()
|
|
20
|
-
e.stopPropagation()
|
|
21
|
-
addClass(player.root, 'xgplayer-is-enter')
|
|
22
|
-
player.userGestureTrigEvent('playNextBtnClick')
|
|
23
|
-
})
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
let onUrlListEnd = function () {
|
|
27
|
-
addClass(player.root, 'xgplayer-playnext-inactive')
|
|
28
|
-
}
|
|
29
|
-
player.on('urlListEnd', onUrlListEnd)
|
|
30
|
-
|
|
31
|
-
function onDestroy () {
|
|
32
|
-
player.off('urlListEnd', onUrlListEnd)
|
|
33
|
-
player.off('destroy', onDestroy)
|
|
34
|
-
}
|
|
35
|
-
player.once('destroy', onDestroy)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export default {
|
|
39
|
-
name: 's_playNext',
|
|
40
|
-
method: s_playNext
|
|
41
|
-
}
|