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.
Files changed (188) hide show
  1. package/browser/controls/danmu.js +3 -1
  2. package/browser/controls/errorRetry.js +1 -1
  3. package/browser/controls/nativeTextTrack.js +1 -1
  4. package/browser/core_player.js +1 -1
  5. package/browser/core_player.js.map +1 -1
  6. package/browser/index.js +7 -5
  7. package/browser/index.js.map +1 -1
  8. package/browser/simple_player.js +1 -1
  9. package/browser/simple_player.js.map +1 -1
  10. package/dist/controls/danmu.js +3 -1
  11. package/dist/controls/errorRetry.js +1 -1
  12. package/dist/controls/nativeTextTrack.js +1 -1
  13. package/dist/core_player.js +6 -7
  14. package/dist/core_player.js.map +1 -1
  15. package/dist/index.js +2882 -1888
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.min.css +1 -0
  18. package/dist/index.min.js +2 -0
  19. package/dist/index.min.js.map +1 -0
  20. package/dist/simple_player.js +6 -7
  21. package/dist/simple_player.js.map +1 -1
  22. package/es/controls/danmu.js +3 -1
  23. package/es/controls/errorRetry.js +1 -1
  24. package/es/controls/nativeTextTrack.js +1 -1
  25. package/es/core_player.js +1 -1
  26. package/es/core_player.js.map +1 -1
  27. package/es/index.js +7 -5
  28. package/es/index.js.map +1 -1
  29. package/es/simple_player.js +1 -1
  30. package/es/simple_player.js.map +1 -1
  31. package/package.json +12 -3
  32. package/types/index.d.ts +0 -11
  33. package/postcss.config.js +0 -7
  34. package/src/bind/airplay.js +0 -10
  35. package/src/bind/cssFullscreen.js +0 -10
  36. package/src/bind/danmu.js +0 -10
  37. package/src/bind/definition.js +0 -10
  38. package/src/bind/download.js +0 -10
  39. package/src/bind/enter.js +0 -8
  40. package/src/bind/error.js +0 -8
  41. package/src/bind/errorRetry.js +0 -8
  42. package/src/bind/flex.js +0 -8
  43. package/src/bind/fullscreen.js +0 -10
  44. package/src/bind/i18n.js +0 -8
  45. package/src/bind/keyboard.js +0 -8
  46. package/src/bind/loading.js +0 -8
  47. package/src/bind/localPreview.js +0 -10
  48. package/src/bind/memoryPlay.js +0 -10
  49. package/src/bind/miniplayer.js +0 -10
  50. package/src/bind/mobile.js +0 -8
  51. package/src/bind/nativeTextTrack.js +0 -8
  52. package/src/bind/pc.js +0 -8
  53. package/src/bind/pip.js +0 -10
  54. package/src/bind/play.js +0 -10
  55. package/src/bind/playNext.js +0 -10
  56. package/src/bind/playbackRate.js +0 -8
  57. package/src/bind/poster.js +0 -8
  58. package/src/bind/progress.js +0 -8
  59. package/src/bind/reload.js +0 -10
  60. package/src/bind/replay.js +0 -10
  61. package/src/bind/rotate.js +0 -10
  62. package/src/bind/screenShot.js +0 -10
  63. package/src/bind/stallCheck.js +0 -8
  64. package/src/bind/start.js +0 -10
  65. package/src/bind/textTrack.js +0 -8
  66. package/src/bind/time.js +0 -8
  67. package/src/bind/volume.js +0 -10
  68. package/src/controls/airplay.js +0 -20
  69. package/src/controls/cssFullscreen.js +0 -49
  70. package/src/controls/danmu.js +0 -75
  71. package/src/controls/definition.js +0 -13
  72. package/src/controls/download.js +0 -28
  73. package/src/controls/errorRetry.js +0 -132
  74. package/src/controls/fullscreen.js +0 -145
  75. package/src/controls/keyboard.js +0 -214
  76. package/src/controls/localPreview.js +0 -32
  77. package/src/controls/memoryPlay.js +0 -14
  78. package/src/controls/miniplayer.js +0 -128
  79. package/src/controls/mobile.js +0 -100
  80. package/src/controls/pc.js +0 -123
  81. package/src/controls/pip.js +0 -52
  82. package/src/controls/play.js +0 -34
  83. package/src/controls/playNext.js +0 -29
  84. package/src/controls/reload.js +0 -24
  85. package/src/controls/replay.js +0 -30
  86. package/src/controls/rotate.js +0 -99
  87. package/src/controls/screenShot.js +0 -65
  88. package/src/controls/stallCheck.js +0 -38
  89. package/src/controls/start.js +0 -60
  90. package/src/controls/textTrack.js +0 -182
  91. package/src/controls/volume.js +0 -178
  92. package/src/controls.js +0 -36
  93. package/src/core_player.js +0 -13
  94. package/src/error.js +0 -74
  95. package/src/index.js +0 -57
  96. package/src/player.js +0 -553
  97. package/src/proxy.js +0 -495
  98. package/src/simple_player.js +0 -42
  99. package/src/skin/assets/airplay.svg +0 -1
  100. package/src/skin/assets/download.svg +0 -14
  101. package/src/skin/assets/exitCssFull.svg +0 -3
  102. package/src/skin/assets/exitFull.svg +0 -3
  103. package/src/skin/assets/loading.svg +0 -3
  104. package/src/skin/assets/panel.svg +0 -4
  105. package/src/skin/assets/pause.svg +0 -3
  106. package/src/skin/assets/play.svg +0 -3
  107. package/src/skin/assets/playNext.svg +0 -3
  108. package/src/skin/assets/reload.svg +0 -3
  109. package/src/skin/assets/replay.svg +0 -3
  110. package/src/skin/assets/requestCssFull.svg +0 -3
  111. package/src/skin/assets/requestFull.svg +0 -3
  112. package/src/skin/assets/rotate.svg +0 -11
  113. package/src/skin/assets/startPause.svg +0 -3
  114. package/src/skin/assets/startPlay.svg +0 -3
  115. package/src/skin/assets/volumeLarge.svg +0 -4
  116. package/src/skin/assets/volumeMuted.svg +0 -4
  117. package/src/skin/assets/volumeSmall.svg +0 -4
  118. package/src/skin/controls/airplay.js +0 -44
  119. package/src/skin/controls/cssFullscreen.js +0 -36
  120. package/src/skin/controls/danmu.js +0 -214
  121. package/src/skin/controls/definition.js +0 -251
  122. package/src/skin/controls/download.js +0 -29
  123. package/src/skin/controls/enter.js +0 -21
  124. package/src/skin/controls/error.js +0 -57
  125. package/src/skin/controls/flex.js +0 -13
  126. package/src/skin/controls/fullscreen.js +0 -43
  127. package/src/skin/controls/i18n.js +0 -168
  128. package/src/skin/controls/loading.js +0 -17
  129. package/src/skin/controls/localPreview.js +0 -18
  130. package/src/skin/controls/memoryPlay.js +0 -39
  131. package/src/skin/controls/miniplayer.js +0 -26
  132. package/src/skin/controls/nativeTextTrack.js +0 -153
  133. package/src/skin/controls/pip.js +0 -26
  134. package/src/skin/controls/play.js +0 -43
  135. package/src/skin/controls/playNext.js +0 -41
  136. package/src/skin/controls/playbackRate.js +0 -141
  137. package/src/skin/controls/poster.js +0 -18
  138. package/src/skin/controls/progress.js +0 -407
  139. package/src/skin/controls/reload.js +0 -29
  140. package/src/skin/controls/replay.js +0 -56
  141. package/src/skin/controls/rotate.js +0 -29
  142. package/src/skin/controls/screenShot.js +0 -27
  143. package/src/skin/controls/start.js +0 -62
  144. package/src/skin/controls/textTrack.js +0 -113
  145. package/src/skin/controls/time.js +0 -40
  146. package/src/skin/controls/volume.js +0 -63
  147. package/src/skin/index.js +0 -63
  148. package/src/skin/style/common/animation.scss +0 -16
  149. package/src/skin/style/common/svg-url.scss +0 -70
  150. package/src/skin/style/controls/airplay.scss +0 -35
  151. package/src/skin/style/controls/controls.scss +0 -40
  152. package/src/skin/style/controls/cssfullscreen.scss +0 -103
  153. package/src/skin/style/controls/danmu.scss +0 -331
  154. package/src/skin/style/controls/definition.scss +0 -76
  155. package/src/skin/style/controls/download.scss +0 -45
  156. package/src/skin/style/controls/enter.scss +0 -55
  157. package/src/skin/style/controls/error.scss +0 -34
  158. package/src/skin/style/controls/fullscreen.scss +0 -60
  159. package/src/skin/style/controls/icon.scss +0 -12
  160. package/src/skin/style/controls/live.scss +0 -9
  161. package/src/skin/style/controls/loading.scss +0 -44
  162. package/src/skin/style/controls/memoryPlay.scss +0 -28
  163. package/src/skin/style/controls/miniplayer.scss +0 -104
  164. package/src/skin/style/controls/pip.scss +0 -42
  165. package/src/skin/style/controls/placeholder.scss +0 -7
  166. package/src/skin/style/controls/play.scss +0 -79
  167. package/src/skin/style/controls/playNext.scss +0 -44
  168. package/src/skin/style/controls/playbackRate.scss +0 -82
  169. package/src/skin/style/controls/poster.scss +0 -19
  170. package/src/skin/style/controls/progress.scss +0 -182
  171. package/src/skin/style/controls/reload.scss +0 -43
  172. package/src/skin/style/controls/replay.scss +0 -46
  173. package/src/skin/style/controls/rotate.scss +0 -41
  174. package/src/skin/style/controls/screenShot.scss +0 -42
  175. package/src/skin/style/controls/start.scss +0 -78
  176. package/src/skin/style/controls/textTrack.scss +0 -87
  177. package/src/skin/style/controls/time.scss +0 -24
  178. package/src/skin/style/controls/tips.scss +0 -24
  179. package/src/skin/style/controls/videoProxy.scss +0 -6
  180. package/src/skin/style/controls/volume.scss +0 -143
  181. package/src/skin/style/index.scss +0 -88
  182. package/src/utils/sniffer.js +0 -47
  183. package/src/utils/url.js +0 -10
  184. package/src/utils/util.js +0 -358
  185. package/src/utils/xgplayerTimeRange.js +0 -17
  186. package/src/version.js +0 -7
  187. package/version.json +0 -3
  188. 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,16 +0,0 @@
1
- @keyframes loadingRotate {
2
- 0% {
3
- transform: rotate(0);
4
- }
5
- 100% {
6
- transform: rotate(360deg);
7
- }
8
- }
9
- @keyframes loadingDashOffset {
10
- 0% {
11
- stroke-dashoffset: 236;
12
- }
13
- 100% {
14
- stroke-dashoffset: 0;
15
- }
16
- }
@@ -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
- }