xgplayer 2.32.1 → 2.32.3
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/danmu.js +3 -1
- package/browser/controls/errorRetry.js +1 -1
- package/browser/controls/nativeTextTrack.js +1 -1
- package/browser/core_player.js +1 -1
- package/browser/core_player.js.map +1 -1
- package/browser/index.js +7 -5
- 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/danmu.js +3 -1
- package/dist/controls/errorRetry.js +1 -1
- package/dist/controls/nativeTextTrack.js +1 -1
- package/dist/core_player.js +6 -7
- package/dist/core_player.js.map +1 -1
- package/dist/index.js +2882 -1888
- package/dist/index.js.map +1 -1
- package/dist/index.min.css +1 -0
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.map +1 -0
- package/dist/simple_player.js +6 -7
- package/dist/simple_player.js.map +1 -1
- package/es/controls/danmu.js +3 -1
- package/es/controls/errorRetry.js +1 -1
- package/es/controls/nativeTextTrack.js +1 -1
- package/es/core_player.js +1 -1
- package/es/core_player.js.map +1 -1
- package/es/index.js +7 -5
- 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 -3
- 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 -331
- 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 -163
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { createDom } from '../../utils/util'
|
|
2
|
-
import '../style/controls/screenShot.scss'
|
|
3
|
-
|
|
4
|
-
let s_screenShot = function () {
|
|
5
|
-
let player = this
|
|
6
|
-
if (!player.config.screenShot || player.config.screenShot.hideButton) {
|
|
7
|
-
return
|
|
8
|
-
}
|
|
9
|
-
let screenShotText = player.lang.SCREENSHOT
|
|
10
|
-
let btn = createDom('xg-screenshot', `<p class="name"><span>${player.config.screenShot.iconText || screenShotText}</span></p>`, {tabindex: 11}, 'xgplayer-screenshot')
|
|
11
|
-
player.once('ready', () => {
|
|
12
|
-
player.controls.appendChild(btn)
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
['click', 'touchend'].forEach(item => {
|
|
16
|
-
btn.addEventListener(item, e => {
|
|
17
|
-
e.preventDefault()
|
|
18
|
-
e.stopPropagation()
|
|
19
|
-
player.userGestureTrigEvent('screenShotBtnClick')
|
|
20
|
-
})
|
|
21
|
-
})
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export default {
|
|
25
|
-
name: 's_screenShot',
|
|
26
|
-
method: s_screenShot
|
|
27
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { createDom, addClass, removeClass, isWeiXin, isUc } from '../../utils/util'
|
|
2
|
-
import StartPlayIcon from '../assets/startPlay.svg'
|
|
3
|
-
import StartPauseIcon from '../assets/startPause.svg'
|
|
4
|
-
import '../style/controls/start.scss'
|
|
5
|
-
|
|
6
|
-
let s_start = function () {
|
|
7
|
-
let player = this
|
|
8
|
-
let root = player.root
|
|
9
|
-
let btn = createDom('xg-start', `<div class="xgplayer-icon-play">${StartPlayIcon}</div>
|
|
10
|
-
<div class="xgplayer-icon-pause">${StartPauseIcon}</div>`, {}, 'xgplayer-start')
|
|
11
|
-
function onPlayerReady(player) {
|
|
12
|
-
addClass(player.root, 'xgplayer-skin-default')
|
|
13
|
-
if (player.config) {
|
|
14
|
-
player.config.autoplay && !isWeiXin() && !isUc() && addClass(player.root, 'xgplayer-is-enter')
|
|
15
|
-
if (player.config.lang && player.config.lang === 'en') {
|
|
16
|
-
addClass(player.root, 'xgplayer-lang-is-en')
|
|
17
|
-
} else if (player.config.lang === 'jp') {
|
|
18
|
-
addClass(player.root, 'xgplayer-lang-is-jp')
|
|
19
|
-
}
|
|
20
|
-
if(!player.config.enableContextmenu) {
|
|
21
|
-
player.video.addEventListener('contextmenu', e => {
|
|
22
|
-
e.preventDefault()
|
|
23
|
-
e.stopPropagation()
|
|
24
|
-
})
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if(player.config && player.config.hideStartBtn) {
|
|
30
|
-
addClass(root, 'xgplayer-start-hide')
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (player.isReady) {
|
|
34
|
-
root.appendChild(btn)
|
|
35
|
-
onPlayerReady(player)
|
|
36
|
-
} else {
|
|
37
|
-
player.once('ready', () => {
|
|
38
|
-
root.appendChild(btn)
|
|
39
|
-
onPlayerReady(player)
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
player.once('autoplay was prevented', () => {
|
|
44
|
-
removeClass(player.root, 'xgplayer-is-enter')
|
|
45
|
-
addClass(player.root, 'xgplayer-nostart')
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
player.once('canplay', () => {
|
|
49
|
-
removeClass(player.root, 'xgplayer-is-enter')
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
btn.onclick = e => {
|
|
53
|
-
e.preventDefault()
|
|
54
|
-
e.stopPropagation()
|
|
55
|
-
player.userGestureTrigEvent('startBtnClick')
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export default {
|
|
60
|
-
name: 's_start',
|
|
61
|
-
method: s_start
|
|
62
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { createDom, addClass, removeClass, hasClass } from '../../utils/util'
|
|
2
|
-
import '../style/controls/textTrack.scss'
|
|
3
|
-
|
|
4
|
-
function renderList (root, textTrack, offText, isDefaultShow) {
|
|
5
|
-
if (textTrack.length === 0) {
|
|
6
|
-
root.innerHTML = ''
|
|
7
|
-
return
|
|
8
|
-
}
|
|
9
|
-
let tmp = []
|
|
10
|
-
tmp.push(`<li data-type="off" class="${isDefaultShow ? '' : 'selected'}">${offText}</li>`)
|
|
11
|
-
textTrack.forEach(item => {
|
|
12
|
-
tmp.push(`<li data-id=${item.id} data-language=${item.language} class="${item.isDefault && isDefaultShow ? 'selected' : ''}">${item.label}</li>`)
|
|
13
|
-
})
|
|
14
|
-
root.innerHTML = tmp.join('')
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// eslint-disable-next-line camelcase
|
|
18
|
-
let s_textTrack = function () {
|
|
19
|
-
let player = this
|
|
20
|
-
if (!this.config.textTrack) {
|
|
21
|
-
return
|
|
22
|
-
}
|
|
23
|
-
let textTrack = this.config.textTrack
|
|
24
|
-
let controlText = player.lang.TEXTTRACK
|
|
25
|
-
const container = createDom('xg-texttrack', `<ul></ul><p class="name">${controlText}</p>`, {tabindex: 7}, 'xgplayer-texttrack')
|
|
26
|
-
|
|
27
|
-
function onCanPlay () {
|
|
28
|
-
const urlInRoot = player.root.querySelector('.xgplayer-texttrack')
|
|
29
|
-
if (!urlInRoot) {
|
|
30
|
-
player.controls.appendChild(container)
|
|
31
|
-
const cur = container.querySelector('.name')
|
|
32
|
-
if (!player.config.textTrackActive || player.config.textTrackActive === 'hover') {
|
|
33
|
-
cur.addEventListener('mouseenter', e => {
|
|
34
|
-
e.preventDefault()
|
|
35
|
-
e.stopPropagation()
|
|
36
|
-
addClass(player.root, 'xgplayer-texttrack-active')
|
|
37
|
-
container.focus()
|
|
38
|
-
})
|
|
39
|
-
container.addEventListener('mouseleave', e => {
|
|
40
|
-
e.preventDefault()
|
|
41
|
-
e.stopPropagation()
|
|
42
|
-
removeClass(player.root, 'xgplayer-texttrack-active')
|
|
43
|
-
})
|
|
44
|
-
} else {
|
|
45
|
-
cur.addEventListener('click', e => {
|
|
46
|
-
e.preventDefault()
|
|
47
|
-
e.stopPropagation()
|
|
48
|
-
if (hasClass(player.root, 'xgplayer-texttrack-active')) {
|
|
49
|
-
removeClass(player.root, 'xgplayer-texttrack-active')
|
|
50
|
-
} else {
|
|
51
|
-
addClass(player.root, 'xgplayer-texttrack-active')
|
|
52
|
-
}
|
|
53
|
-
})
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
['touchend', 'click'].forEach(item => {
|
|
58
|
-
container.addEventListener(item, function (e) {
|
|
59
|
-
e.preventDefault()
|
|
60
|
-
e.stopPropagation()
|
|
61
|
-
let li = e.target || e.srcElement
|
|
62
|
-
if (li && li.tagName.toLocaleLowerCase() === 'li') {
|
|
63
|
-
const id = li.getAttribute('data-id')
|
|
64
|
-
const type = li.getAttribute('data-type')
|
|
65
|
-
const language = li.getAttribute('data-language')
|
|
66
|
-
Array.prototype.forEach.call(li.parentNode.childNodes, item => {
|
|
67
|
-
removeClass(item, 'selected')
|
|
68
|
-
})
|
|
69
|
-
addClass(li, 'selected')
|
|
70
|
-
if (type === 'off') {
|
|
71
|
-
player.switchOffSubtile()
|
|
72
|
-
removeClass(player.root, 'xgplayer-texttrack-active')
|
|
73
|
-
} else {
|
|
74
|
-
player.switchSubTitle({id, language})
|
|
75
|
-
addClass(player.root, 'xgplayer-texttrack-active')
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
})
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
const ul = container.getElementsByTagName('ul')[0]
|
|
82
|
-
renderList(ul, textTrack, player.lang.OFF, player.textTrackShowDefault)
|
|
83
|
-
if (textTrack.length === 0) {
|
|
84
|
-
addClass(container, 'xgplayer-texttrack-hide')
|
|
85
|
-
} else {
|
|
86
|
-
removeClass(container, 'xgplayer-texttrack-hide')
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const onListUpdate = function (data) {
|
|
91
|
-
if (!data.isListUpdate) return
|
|
92
|
-
const ul = container.getElementsByTagName('ul')[0]
|
|
93
|
-
textTrack = data.list
|
|
94
|
-
renderList(ul, data.list, player.lang.OFF, player.textTrackShowDefault)
|
|
95
|
-
data.list.length > 0 ? addClass(player.root, 'xgplayer-is-texttrack') : removeClass(player.root, 'xgplayer-is-texttrack')
|
|
96
|
-
if (data.list.length === 0) {
|
|
97
|
-
addClass(container, 'xgplayer-texttrack-hide')
|
|
98
|
-
} else {
|
|
99
|
-
removeClass(container, 'xgplayer-texttrack-hide')
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (textTrack && Array.isArray(textTrack)) {
|
|
104
|
-
textTrack.length > 0 && addClass(player.root, 'xgplayer-is-texttrack')
|
|
105
|
-
player.once('canplay', onCanPlay)
|
|
106
|
-
player.on('subtitle_change', onListUpdate)
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export default {
|
|
111
|
-
name: 's_textTrack',
|
|
112
|
-
method: s_textTrack
|
|
113
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { createDom, format } from '../../utils/util'
|
|
2
|
-
import '../style/controls/time.scss'
|
|
3
|
-
|
|
4
|
-
let s_time = function () {
|
|
5
|
-
let player = this
|
|
6
|
-
let container = createDom('xg-time', `<span class="xgplayer-time-current">${player.currentTime || format(0)}</span>
|
|
7
|
-
<span>${player.duration || format(0)}</span>`, {}, 'xgplayer-time')
|
|
8
|
-
player.once('ready', () => {
|
|
9
|
-
if(player.controls) {
|
|
10
|
-
player.controls.appendChild(container)
|
|
11
|
-
}
|
|
12
|
-
})
|
|
13
|
-
let onTimeChange = function () {
|
|
14
|
-
// let liveText = player.lang.LIVE
|
|
15
|
-
// if(player.duration === Infinity) {
|
|
16
|
-
// addClass(player.root, 'xgplayer-is-live')
|
|
17
|
-
// if(!findDom(player.root, '.xgplayer-live')) {
|
|
18
|
-
// const live = createDom('xg-live', liveText, {}, 'xgplayer-live')
|
|
19
|
-
// player.controls.appendChild(live)
|
|
20
|
-
// }
|
|
21
|
-
// }
|
|
22
|
-
if (player.videoConfig.mediaType !== 'audio' || !player.isProgressMoving || !player.dash) {
|
|
23
|
-
container.innerHTML = `<span class="xgplayer-time-current">${format(player.currentTime || 0)}</span>` + `<span>${format(player.duration)}</span>`
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
player.on('durationchange', onTimeChange)
|
|
27
|
-
player.on('timeupdate', onTimeChange)
|
|
28
|
-
|
|
29
|
-
function onDestroy () {
|
|
30
|
-
player.off('durationchange', onTimeChange)
|
|
31
|
-
player.off('timeupdate', onTimeChange)
|
|
32
|
-
player.off('destroy', onDestroy)
|
|
33
|
-
}
|
|
34
|
-
player.once('destroy', onDestroy)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export default {
|
|
38
|
-
name: 's_time',
|
|
39
|
-
method: s_time
|
|
40
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { createDom } from '../../utils/util'
|
|
2
|
-
import MutedIcon from '../assets/volumeMuted.svg'
|
|
3
|
-
import SmallIcon from '../assets/volumeSmall.svg'
|
|
4
|
-
import LargeIcon from '../assets/volumeLarge.svg'
|
|
5
|
-
import '../style/controls/volume.scss'
|
|
6
|
-
|
|
7
|
-
let s_volume = function () {
|
|
8
|
-
let player = this
|
|
9
|
-
let container = createDom('xg-volume', `<xg-icon class="xgplayer-icon">
|
|
10
|
-
<div class="xgplayer-icon-large">${LargeIcon}</div>
|
|
11
|
-
<div class="xgplayer-icon-small">${SmallIcon}</div>
|
|
12
|
-
<div class="xgplayer-icon-muted">${MutedIcon}</div>
|
|
13
|
-
</xg-icon>
|
|
14
|
-
<xg-slider class="xgplayer-slider" tabindex="2">
|
|
15
|
-
<xg-bar class="xgplayer-bar">
|
|
16
|
-
<xg-drag class="xgplayer-drag"></xg-drag>
|
|
17
|
-
</xg-bar>
|
|
18
|
-
</xg-slider>`, {}, 'xgplayer-volume')
|
|
19
|
-
player.once('ready', () => {
|
|
20
|
-
if(player.controls) {
|
|
21
|
-
player.controls.appendChild(container)
|
|
22
|
-
}
|
|
23
|
-
})
|
|
24
|
-
let slider = container.querySelector('.xgplayer-slider')
|
|
25
|
-
let bar = container.querySelector('.xgplayer-bar')
|
|
26
|
-
let selected = container.querySelector('.xgplayer-drag')
|
|
27
|
-
let icon = container.querySelector('.xgplayer-icon')
|
|
28
|
-
selected.style.height = `${player.config.volume * 100}%`
|
|
29
|
-
slider.volume = player.config.volume;
|
|
30
|
-
|
|
31
|
-
bar.addEventListener('mousedown', e => {
|
|
32
|
-
e.preventDefault()
|
|
33
|
-
e.stopPropagation()
|
|
34
|
-
player.userGestureTrigEvent('volumeBarClick', e)
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
['click', 'touchend'].forEach(item => {
|
|
38
|
-
icon.addEventListener(item, e => {
|
|
39
|
-
e.preventDefault()
|
|
40
|
-
e.stopPropagation()
|
|
41
|
-
player.userGestureTrigEvent('volumeIconClick')
|
|
42
|
-
})
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
icon.addEventListener('mouseenter', e => {
|
|
46
|
-
e.preventDefault()
|
|
47
|
-
e.stopPropagation()
|
|
48
|
-
player.userGestureTrigEvent('volumeIconEnter')
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
['blur', 'mouseleave'].forEach(item => {
|
|
52
|
-
container.addEventListener(item, e => {
|
|
53
|
-
e.preventDefault()
|
|
54
|
-
e.stopPropagation()
|
|
55
|
-
player.userGestureTrigEvent('volumeIconLeave')
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export default {
|
|
61
|
-
name: 's_volume',
|
|
62
|
-
method: s_volume
|
|
63
|
-
}
|
package/src/skin/index.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import Player from '../player'
|
|
2
|
-
|
|
3
|
-
import I18n from './controls/i18n.js'
|
|
4
|
-
import Enter from './controls/enter.js'
|
|
5
|
-
import Play from './controls/play.js'
|
|
6
|
-
import Start from './controls/start.js'
|
|
7
|
-
import Poster from './controls/poster.js'
|
|
8
|
-
import Flex from './controls/flex.js'
|
|
9
|
-
import Fullscreen from './controls/fullscreen.js'
|
|
10
|
-
import CssFullscreen from './controls/cssFullscreen.js'
|
|
11
|
-
import Volume from './controls/volume.js'
|
|
12
|
-
import Definition from './controls/definition.js'
|
|
13
|
-
import Loading from './controls/loading.js'
|
|
14
|
-
import Progress from './controls/progress.js'
|
|
15
|
-
import Time from './controls/time.js'
|
|
16
|
-
import Replay from './controls/replay.js'
|
|
17
|
-
import PlaybackRate from './controls/playbackRate.js'
|
|
18
|
-
import LocalPreview from './controls/localPreview.js'
|
|
19
|
-
import Download from './controls/download.js'
|
|
20
|
-
import Danmu from './controls/danmu.js'
|
|
21
|
-
import Pip from './controls/pip.js'
|
|
22
|
-
import Miniplayer from './controls/miniplayer.js'
|
|
23
|
-
import PlayNext from './controls/playNext.js'
|
|
24
|
-
import Rotate from './controls/rotate.js'
|
|
25
|
-
import Reload from './controls/reload.js'
|
|
26
|
-
import ScreenShot from './controls/screenShot.js'
|
|
27
|
-
import NativeTextTrack from './controls/nativeTextTrack.js'
|
|
28
|
-
import TextTrack from './controls/textTrack.js'
|
|
29
|
-
import ErrorControl from './controls/error.js'
|
|
30
|
-
import MemoryPlay from './controls/memoryPlay.js'
|
|
31
|
-
import Airplay from './controls/airplay.js'
|
|
32
|
-
|
|
33
|
-
Player.installAll([
|
|
34
|
-
I18n,
|
|
35
|
-
Enter,
|
|
36
|
-
Play,
|
|
37
|
-
Start,
|
|
38
|
-
Poster,
|
|
39
|
-
Flex,
|
|
40
|
-
Fullscreen,
|
|
41
|
-
CssFullscreen,
|
|
42
|
-
Volume,
|
|
43
|
-
Definition,
|
|
44
|
-
Loading,
|
|
45
|
-
Progress,
|
|
46
|
-
Time,
|
|
47
|
-
Replay,
|
|
48
|
-
PlaybackRate,
|
|
49
|
-
LocalPreview,
|
|
50
|
-
Download,
|
|
51
|
-
Danmu,
|
|
52
|
-
Pip,
|
|
53
|
-
Miniplayer,
|
|
54
|
-
PlayNext,
|
|
55
|
-
Rotate,
|
|
56
|
-
Reload,
|
|
57
|
-
ScreenShot,
|
|
58
|
-
NativeTextTrack,
|
|
59
|
-
TextTrack,
|
|
60
|
-
ErrorControl,
|
|
61
|
-
MemoryPlay,
|
|
62
|
-
Airplay
|
|
63
|
-
])
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Function to create an optimized svg url
|
|
3
|
-
//
|
|
4
|
-
// Helper function to replace characters in a string
|
|
5
|
-
@function str-replace($string, $search, $replace: '') {
|
|
6
|
-
$index: str-index($string, $search);
|
|
7
|
-
@return if($index,
|
|
8
|
-
str-slice($string, 1, $index - 1) + $replace +
|
|
9
|
-
str-replace(str-slice($string, $index +
|
|
10
|
-
str-length($search)), $search, $replace),
|
|
11
|
-
$string);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
@function svg-url($svg){
|
|
15
|
-
//
|
|
16
|
-
// Add missing namespace
|
|
17
|
-
//
|
|
18
|
-
@if not str-index($svg,xmlns) {
|
|
19
|
-
$svg: str-replace($svg, '<svg','<svg xmlns="http://www.w3.org/2000/svg"');
|
|
20
|
-
}
|
|
21
|
-
//
|
|
22
|
-
// Chunk up string in order to avoid
|
|
23
|
-
// "stack level too deep" error
|
|
24
|
-
//
|
|
25
|
-
$encoded:'';
|
|
26
|
-
$slice: 2000;
|
|
27
|
-
$index: 0;
|
|
28
|
-
$loops: ceil(str-length($svg)/$slice);
|
|
29
|
-
@for $i from 1 through $loops {
|
|
30
|
-
$chunk: str-slice($svg, $index, $index + $slice - 1);
|
|
31
|
-
//
|
|
32
|
-
// Encode
|
|
33
|
-
//
|
|
34
|
-
$chunk: str-replace($chunk, '"', '\'');
|
|
35
|
-
$chunk: str-replace($chunk, '%', '%25');
|
|
36
|
-
$chunk: str-replace($chunk, '#', '%23');
|
|
37
|
-
$chunk: str-replace($chunk, '{', '%7B');
|
|
38
|
-
$chunk: str-replace($chunk, '}', '%7D');
|
|
39
|
-
$chunk: str-replace($chunk, '<', '%3C');
|
|
40
|
-
$chunk: str-replace($chunk, '>', '%3E');
|
|
41
|
-
|
|
42
|
-
//
|
|
43
|
-
// The maybe list
|
|
44
|
-
//
|
|
45
|
-
// Keep size and compile time down
|
|
46
|
-
// ... only add on documented fail
|
|
47
|
-
//
|
|
48
|
-
// $chunk: str-replace($chunk, '&', '%26');
|
|
49
|
-
// $chunk: str-replace($chunk, '|', '%7C');
|
|
50
|
-
// $chunk: str-replace($chunk, '[', '%5B');
|
|
51
|
-
// $chunk: str-replace($chunk, ']', '%5D');
|
|
52
|
-
// $chunk: str-replace($chunk, '^', '%5E');
|
|
53
|
-
// $chunk: str-replace($chunk, '`', '%60');
|
|
54
|
-
// $chunk: str-replace($chunk, ';', '%3B');
|
|
55
|
-
// $chunk: str-replace($chunk, '?', '%3F');
|
|
56
|
-
// $chunk: str-replace($chunk, ':', '%3A');
|
|
57
|
-
// $chunk: str-replace($chunk, '@', '%40');
|
|
58
|
-
// $chunk: str-replace($chunk, '=', '%3D');
|
|
59
|
-
|
|
60
|
-
$encoded: #{$encoded}#{$chunk};
|
|
61
|
-
$index: $index + $slice;
|
|
62
|
-
}
|
|
63
|
-
@return url("data:image/svg+xml,#{$encoded}");
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Background svg mixin
|
|
67
|
-
@mixin background-svg($svg){
|
|
68
|
-
background-image: svg-url($svg);
|
|
69
|
-
}
|
|
70
|
-
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
.xgplayer-skin-default {
|
|
2
|
-
.xgplayer-airplay {
|
|
3
|
-
position: relative;
|
|
4
|
-
order: 11;
|
|
5
|
-
display: block;
|
|
6
|
-
cursor: pointer;
|
|
7
|
-
margin-left: 5px;
|
|
8
|
-
margin-right: 3px;
|
|
9
|
-
.xgplayer-icon {
|
|
10
|
-
margin-top: 6px;
|
|
11
|
-
margin-left: 6px;
|
|
12
|
-
div {
|
|
13
|
-
position: absolute;
|
|
14
|
-
}
|
|
15
|
-
.xgplayer-icon-airplay {
|
|
16
|
-
display: block;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
.xgplayer-tips {
|
|
20
|
-
position: absolute;
|
|
21
|
-
right: 0;
|
|
22
|
-
left: auto;
|
|
23
|
-
.xgplayer-tip-airplay {
|
|
24
|
-
display: block;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
&:hover {
|
|
28
|
-
opacity: 0.85;
|
|
29
|
-
.xgplayer-tips {
|
|
30
|
-
display: block;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
.xgplayer-skin-default {
|
|
2
|
-
.xgplayer-controls {
|
|
3
|
-
display: flex;
|
|
4
|
-
position: absolute;
|
|
5
|
-
bottom: 0;
|
|
6
|
-
left: 0;
|
|
7
|
-
right: 0;
|
|
8
|
-
height: 40px;
|
|
9
|
-
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .37), rgba(0, 0, 0, .75), rgba(0, 0, 0, .75));
|
|
10
|
-
z-index: 10;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.xgplayer-skin-default.xgplayer-nostart {
|
|
15
|
-
.xgplayer-controls {
|
|
16
|
-
display: none;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.xgplayer-skin-default.xgplayer-no-controls {
|
|
21
|
-
.xgplayer-controls {
|
|
22
|
-
display: none;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.xgplayer-skin-default.xgplayer-inactive {
|
|
27
|
-
.xgplayer-controls {
|
|
28
|
-
display: none;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
.xgplayer-skin-default.xgplayer-is-live {
|
|
32
|
-
.xgplayer-controls {
|
|
33
|
-
.xgplayer-time,.xgplayer-progress {
|
|
34
|
-
display: none;
|
|
35
|
-
}
|
|
36
|
-
.xgplayer-live {
|
|
37
|
-
display: block;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
.xgplayer-skin-default {
|
|
2
|
-
.xgplayer-cssfullscreen, .xgplayer-cssfullscreen-img {
|
|
3
|
-
position: relative;
|
|
4
|
-
order: 12;
|
|
5
|
-
display: block;
|
|
6
|
-
cursor: pointer;
|
|
7
|
-
.xgplayer-icon {
|
|
8
|
-
width: 32px;
|
|
9
|
-
margin-top: 5px;
|
|
10
|
-
div {
|
|
11
|
-
position: absolute;
|
|
12
|
-
}
|
|
13
|
-
.xgplayer-icon-requestfull {
|
|
14
|
-
display: block;
|
|
15
|
-
}
|
|
16
|
-
.xgplayer-icon-exitfull {
|
|
17
|
-
display: none;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
.xgplayer-tips {
|
|
21
|
-
margin-left: -40px;
|
|
22
|
-
.xgplayer-tip-requestfull {
|
|
23
|
-
display: block;
|
|
24
|
-
}
|
|
25
|
-
.xgplayer-tip-exitfull {
|
|
26
|
-
display: none;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
&:hover {
|
|
30
|
-
opacity: 0.85;
|
|
31
|
-
.xgplayer-tips {
|
|
32
|
-
display: block;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.xgplayer-skin-default.xgplayer-is-cssfullscreen {
|
|
39
|
-
.xgplayer-cssfullscreen, .xgplayer-cssfullscreen-img {
|
|
40
|
-
.xgplayer-icon {
|
|
41
|
-
.xgplayer-icon-requestfull {
|
|
42
|
-
display: none;
|
|
43
|
-
}
|
|
44
|
-
.xgplayer-icon-exitfull {
|
|
45
|
-
display: block;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
.xgplayer-tips {
|
|
49
|
-
margin-left: -47px;
|
|
50
|
-
.xgplayer-tip-requestfull {
|
|
51
|
-
display: none;
|
|
52
|
-
}
|
|
53
|
-
.xgplayer-tip-exitfull {
|
|
54
|
-
display: block;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.xgplayer-skin-default.xgplayer-is-fullscreen {
|
|
61
|
-
.xgplayer-cssfullscreen, .xgplayer-cssfullscreen-img {
|
|
62
|
-
display: none;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.xgplayer-skin-default.xgplayer-is-cssfullscreen {
|
|
67
|
-
position: fixed !important;
|
|
68
|
-
left: 0 !important;
|
|
69
|
-
top: 0 !important;
|
|
70
|
-
width: 100%!important;
|
|
71
|
-
height: 100%!important;
|
|
72
|
-
z-index: 99999 !important;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.xgplayer-lang-is-en {
|
|
76
|
-
.xgplayer-cssfullscreen, .xgplayer-cssfullscreen-img {
|
|
77
|
-
.xgplayer-tips {
|
|
78
|
-
margin-left: -46px;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
.xgplayer-lang-is-en.xgplayer-is-cssfullscreen {
|
|
83
|
-
.xgplayer-cssfullscreen, .xgplayer-cssfullscreen-img {
|
|
84
|
-
.xgplayer-tips {
|
|
85
|
-
margin-left: -46px;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.lang-is-jp {
|
|
91
|
-
.xgplayer-cssfullscreen, .xgplayer-cssfullscreen-img {
|
|
92
|
-
.xgplayer-tips {
|
|
93
|
-
margin-left: -120px;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
.lang-is-jp.xgplayer-is-cssfullscreen {
|
|
98
|
-
.xgplayer-cssfullscreen, .xgplayer-cssfullscreen-img {
|
|
99
|
-
.xgplayer-tips {
|
|
100
|
-
margin-left: -60px;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|