xgplayer 2.32.2 → 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 +2881 -1887
  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 +11 -2
  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 -333
  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 -168
package/src/proxy.js DELETED
@@ -1,495 +0,0 @@
1
- import EventEmitter from 'event-emitter'
2
- import { findDom, createDom, hasClass, removeClass, _clearInterval, _setInterval, on, once, getBuffered2, setStyle } from './utils/util'
3
- import Errors from './error'
4
-
5
- class Proxy {
6
- constructor (options) {
7
- this._hasStart = false
8
- this.videoConfig = {
9
- controls: !!options.isShowControl,
10
- autoplay: options.autoplay,
11
- playsinline: options.playsinline,
12
- 'webkit-playsinline': options.playsinline,
13
- 'x5-playsinline': options.playsinline,
14
- 'x5-video-player-type': options['x5-video-player-type'] || options['x5VideoPlayerType'],
15
- 'x5-video-player-fullscreen': options['x5-video-player-fullscreen'] || options['x5VideoPlayerFullscreen'],
16
- 'x5-video-orientation': options['x5-video-orientation'] || options['x5VideoOrientation'],
17
- airplay: options['airplay'],
18
- 'webkit-airplay': options['airplay'],
19
- tabindex: 2,
20
- mediaType: options.mediaType || 'video'
21
- }
22
- if (options.muted) {
23
- this.videoConfig.muted = 'muted'
24
- }
25
- if (options.loop) {
26
- this.videoConfig.loop = 'loop'
27
- }
28
- let textTrackDom = ''
29
- this.textTrackShowDefault = true
30
- if (options.nativeTextTrack && Array.isArray(options.nativeTextTrack)) {
31
- if (options.nativeTextTrack.length > 0 && !options.nativeTextTrack.some(track => { return track.default })) {
32
- options.nativeTextTrack[0].default = true
33
- this.textTrackShowDefault = false
34
- }
35
- options.nativeTextTrack.some(track => {
36
- if (track.src && track.label && track.default) {
37
- textTrackDom += `<track src="${track.src}" `
38
- if (track.kind) {
39
- textTrackDom += `kind="${track.kind}" `
40
- }
41
- textTrackDom += `label="${track.label}" `
42
- if (track.srclang) {
43
- textTrackDom += `srclang="${track.srclang}" `
44
- }
45
- textTrackDom += `${track.default ? 'default' : ''}>`
46
- return true
47
- }
48
- })
49
- this.videoConfig.crossorigin = 'anonymous'
50
- }
51
- if (options.textTrackStyle) {
52
- let style = document.createElement('style')
53
- this.textTrackStyle = style
54
- document.head.appendChild(style)
55
- let styleStr = ''
56
- for (let index in options.textTrackStyle) {
57
- styleStr += `${index}: ${options.textTrackStyle[index]};`
58
- }
59
- let wrap = options.id ? `#${options.id}` : (options.el.id ? `#${options.el.id}` : `.${options.el.className}`)
60
- if (style.sheet.insertRule) {
61
- style.sheet.insertRule(`${wrap} video::cue { ${styleStr} }`, 0)
62
- } else if (style.sheet.addRule) {
63
- style.sheet.addRule(`${wrap} video::cue`, styleStr)
64
- }
65
- }
66
- let el = options.el ? options.el : findDom(document, `#${options.id}`)
67
- const XgVideoProxy = this.constructor.XgVideoProxy
68
- if(XgVideoProxy && this.videoConfig.mediaType === XgVideoProxy.mediaType) {
69
- this.video = new XgVideoProxy(el, options)
70
- } else {
71
- this.video = createDom(this.videoConfig.mediaType, textTrackDom, this.videoConfig, '')
72
- }
73
- if (options.videoStyle) {
74
- Object.keys(options.videoStyle).forEach(key => {
75
- setStyle(this.video, key, options.videoStyle[key])
76
- })
77
- }
78
- if (!this.textTrackShowDefault && textTrackDom) {
79
- let trackDoms = this.video.getElementsByTagName('Track')
80
- trackDoms[0].track.mode = 'hidden'
81
- }
82
- if (options.autoplay) {
83
- this.video.autoplay = true
84
- if (options.autoplayMuted) {
85
- this.video.muted = true
86
- }
87
- }
88
-
89
- this.ev = ['play', 'playing', 'pause', 'ended', 'error', 'seeking', 'seeked', 'progress',
90
- 'timeupdate', 'waiting', 'canplay', 'canplaythrough', 'durationchange', 'volumechange', 'ratechange', 'loadedmetadata', 'loadeddata', 'loadstart'
91
- ].map((item) => {
92
- return {
93
- [item]: `on${item.charAt(0).toUpperCase()}${item.slice(1)}`
94
- }
95
- })
96
- EventEmitter(this)
97
-
98
- this._interval = {}
99
- let lastBuffer = '0,0'
100
- let self = this
101
-
102
- const defaultVideoEventHandler = name => {
103
- // fix when video destroy called and video reload
104
- if (!this) {
105
- return
106
- }
107
- if (name === 'play') {
108
- this.hasStart = true
109
- } else if (name === 'canplay') {
110
- removeClass(this.root, 'xgplayer-is-enter')
111
- } else if (name === 'waiting') {
112
- this.inWaitingStart = new Date().getTime()
113
- } else if (name === 'playing') {
114
- removeClass(this.root, 'xgplayer-is-enter')
115
- if (this.inWaitingStart) {
116
- this.inWaitingStart = undefined
117
- }
118
- }
119
- if (name === 'error') {
120
- // process the error
121
- this._onError(name)
122
- } else {
123
- this.emit(name, this)
124
- }
125
-
126
- if (this.hasOwnProperty('_interval')) {
127
- if (['ended', 'error', 'timeupdate'].indexOf(name) < 0) {
128
- _clearInterval(this, 'bufferedChange')
129
- _setInterval(this, 'bufferedChange', function () {
130
- if (this.video && this.video.buffered) {
131
- let curBuffer = []
132
- for (let i = 0, len = this.video.buffered.length; i < len; i++) {
133
- curBuffer.push([this.video.buffered.start(i), this.video.buffered.end(i)])
134
- }
135
- if (curBuffer.toString() !== lastBuffer) {
136
- lastBuffer = curBuffer.toString()
137
- this.emit('bufferedChange', curBuffer)
138
- }
139
- }
140
- }, 200)
141
- } else {
142
- if (name !== 'timeupdate') {
143
- _clearInterval(this, 'bufferedChange')
144
- }
145
- }
146
- }
147
- }
148
-
149
- const videoEventHandler = name => {
150
- if(options.videoEventMiddleware && typeof options.videoEventMiddleware[name] === 'function') {
151
- options.videoEventMiddleware[name].call(this, this, name, defaultVideoEventHandler)
152
- } else {
153
- defaultVideoEventHandler.call(this, name);
154
- }
155
- }
156
-
157
- this.ev.forEach(item => {
158
- self.evItem = Object.keys(item)[0]
159
- let name = Object.keys(item)[0]
160
- self.video.addEventListener(Object.keys(item)[0], videoEventHandler.bind(self, name))
161
- })
162
- }
163
- /**
164
- * 错误监听处理逻辑抽离
165
- */
166
- _onError (name) {
167
- if (this.video && this.video.error) {
168
- this.emit(name, new Errors('other', this.currentTime, this.duration, this.networkState, this.readyState, this.currentSrc, this.src,
169
- this.ended, {
170
- line: 162,
171
- msg: this.error,
172
- handle: 'Constructor'
173
- }, this.video.error.code, this.video.error))
174
- }
175
- }
176
-
177
- get hasStart () {
178
- return this._hasStart
179
- }
180
- set hasStart (bool) {
181
- if (typeof bool === 'boolean' && bool === true && !this._hasStart) {
182
- this._hasStart = true
183
- this.emit('hasstart')
184
- }
185
- }
186
- destroy () {
187
- if (this.textTrackStyle) {
188
- this.textTrackStyle.parentNode.removeChild(this.textTrackStyle)
189
- }
190
- }
191
- play () {
192
- return this.video.play()
193
- }
194
- pause () {
195
- this.video.pause()
196
- }
197
- canPlayType (type) {
198
- return this.video.canPlayType(type)
199
- }
200
- getBufferedRange (buffered) {
201
- let range = [0, 0]
202
- let video = this.video
203
- if(!buffered) buffered = video.buffered
204
- let currentTime = video.currentTime
205
- if (buffered) {
206
- for (let i = 0, len = buffered.length; i < len; i++) {
207
- range[0] = buffered.start(i)
208
- range[1] = buffered.end(i)
209
- if (range[0] <= currentTime && currentTime <= range[1]) {
210
- break
211
- }
212
- }
213
- }
214
- if (range[0] - currentTime <= 0 && currentTime - range[1] <= 0) {
215
- return range
216
- } else {
217
- return [0, 0]
218
- }
219
- }
220
- proxyOn (event, fn) {
221
- on(this, event, fn, 'destroy')
222
- }
223
- proxyOnce (event, fn) {
224
- once(this, event, fn, 'destroy')
225
- }
226
- set autoplay (isTrue) {
227
- if(this.video) {
228
- this.video.autoplay = isTrue
229
- }
230
- }
231
- get autoplay () {
232
- if(this.video) {
233
- return this.video.autoplay
234
- } else {
235
- return false
236
- }
237
- }
238
- get buffered () {
239
- if(this.video) {
240
- return this.video.buffered
241
- } else {
242
- return undefined
243
- }
244
- }
245
- get buffered2 () {
246
- return getBuffered2(this.video.buffered)
247
- }
248
- get crossOrigin () {
249
- if(this.video) {
250
- return this.video.crossOrigin
251
- } else {
252
- return false
253
- }
254
- }
255
- set crossOrigin (isTrue) {
256
- if(this.video) {
257
- this.video.crossOrigin = isTrue
258
- }
259
- }
260
- get currentSrc () {
261
- if(this.video) {
262
- return this.video.currentSrc
263
- } else {
264
- return undefined
265
- }
266
- }
267
- get currentTime () {
268
- if(this.video) {
269
- return this.video.currentTime || 0
270
- } else {
271
- return 0
272
- }
273
- }
274
- set currentTime (time) {
275
- if (typeof isFinite === 'function' && !isFinite(time)) return
276
- if (hasClass(this.root, 'xgplayer-ended')) {
277
- this.once('playing', () => { this.video.currentTime = time })
278
- this.replay()
279
- } else {
280
- this.video.currentTime = time
281
- }
282
- this.emit('currentTimeChange', time)
283
- }
284
- get defaultMuted () {
285
- if(this.video) {
286
- return this.video.defaultMuted
287
- } else {
288
- return false
289
- }
290
- }
291
- set defaultMuted (isTrue) {
292
- if(this.video) {
293
- this.video.defaultMuted = isTrue
294
- }
295
- }
296
- get duration () {
297
- if(this.config.duration) {
298
- if(this.video) return Math.min(this.config.duration, this.video.duration)
299
- else return this.config.duration
300
- }
301
- if (!this.video) return null
302
- return this.video.duration
303
- }
304
- get ended () {
305
- if(this.video) {
306
- return this.video.ended || false
307
- } else {
308
- return true
309
- }
310
- }
311
- get error () {
312
- let err = this.video.error
313
- if (!err) {
314
- return null
315
- }
316
- let status = [{
317
- en: 'MEDIA_ERR_ABORTED',
318
- cn: '取回过程被用户中止'
319
- }, {
320
- en: 'MEDIA_ERR_NETWORK',
321
- cn: '当下载时发生错误'
322
- }, {
323
- en: 'MEDIA_ERR_DECODE',
324
- cn: '当解码时发生错误'
325
- }, {
326
- en: 'MEDIA_ERR_SRC_NOT_SUPPORTED',
327
- cn: '不支持音频/视频'
328
- }]
329
- return this.lang ? this.lang[status[err.code - 1].en] : status[err.code - 1].en
330
- }
331
- get loop () {
332
- if(this.video) {
333
- return this.video.loop
334
- } else {
335
- return false
336
- }
337
- }
338
- set loop (isTrue) {
339
- if(this.video) {
340
- this.video.loop = isTrue
341
- }
342
- }
343
- get muted () {
344
- if(this.video) {
345
- return this.video.muted
346
- } else {
347
- return false
348
- }
349
- }
350
- set muted (isTrue) {
351
- if(this.video) {
352
- this.video.muted = isTrue
353
- }
354
- }
355
- get networkState () {
356
- let status = [{
357
- en: 'NETWORK_EMPTY',
358
- cn: '音频/视频尚未初始化'
359
- }, {
360
- en: 'NETWORK_IDLE',
361
- cn: '音频/视频是活动的且已选取资源,但并未使用网络'
362
- }, {
363
- en: 'NETWORK_LOADING',
364
- cn: '浏览器正在下载数据'
365
- }, {
366
- en: 'NETWORK_NO_SOURCE',
367
- cn: '未找到音频/视频来源'
368
- }]
369
- return this.lang ? this.lang[status[this.video.networkState].en] : status[this.video.networkState].en
370
- }
371
- get paused () {
372
- // if(this.video) {
373
- // return this.video.paused
374
- // } else {
375
- // return false
376
- // }
377
- return hasClass(this.root, 'xgplayer-pause')
378
- }
379
- get playbackRate () {
380
- if(this.video) {
381
- return this.video.playbackRate
382
- } else {
383
- return 1
384
- }
385
- }
386
- set playbackRate (rate) {
387
- if(this.video) {
388
- this.video.playbackRate = rate
389
- }
390
- }
391
- get played () {
392
- if(this.video) {
393
- return this.video.played
394
- } else {
395
- return undefined
396
- }
397
- }
398
- get preload () {
399
- if(this.video) {
400
- return this.video.preload
401
- } else {
402
- return false
403
- }
404
- }
405
- set preload (isTrue) {
406
- if(this.video) {
407
- this.video.preload = isTrue
408
- }
409
- }
410
- get readyState () {
411
- let status = [{
412
- en: 'HAVE_NOTHING',
413
- cn: '没有关于音频/视频是否就绪的信息'
414
- }, {
415
- en: 'HAVE_METADATA',
416
- cn: '关于音频/视频就绪的元数据'
417
- }, {
418
- en: 'HAVE_CURRENT_DATA',
419
- cn: '关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧/毫秒'
420
- }, {
421
- en: 'HAVE_FUTURE_DATA',
422
- cn: '当前及至少下一帧的数据是可用的'
423
- }, {
424
- en: 'HAVE_ENOUGH_DATA',
425
- cn: '可用数据足以开始播放'
426
- }]
427
- return this.lang ? this.lang[status[this.video.readyState].en] : status[this.video.readyState]
428
- }
429
- get seekable () {
430
- if(this.video) {
431
- return this.video.seekable
432
- } else {
433
- return false
434
- }
435
- }
436
- get seeking () {
437
- if(this.video) {
438
- return this.video.seeking
439
- } else {
440
- return false
441
- }
442
- }
443
- get src () {
444
- if(this.video) {
445
- return this.video.src
446
- } else {
447
- return undefined
448
- }
449
- }
450
- set src (url) {
451
- if (!hasClass(this.root, 'xgplayer-ended')) {
452
- this.emit('urlchange', this.video.src)
453
- }
454
- removeClass(this.root, 'xgplayer-ended xgplayer-is-replay xgplayer-is-error')
455
- this.video.pause()
456
- this.emit('pause')
457
- this.video.src = url
458
- this.emit('srcChange')
459
- }
460
- set poster (posterUrl) {
461
- let poster = findDom(this.root, '.xgplayer-poster')
462
- if (poster) {
463
- poster.style.backgroundImage = `url(${posterUrl})`
464
- }
465
- }
466
- get volume () {
467
- if(this.video) {
468
- return this.video.volume
469
- } else {
470
- return 1
471
- }
472
- }
473
- set volume (vol) {
474
- if(this.video) {
475
- this.video.volume = vol
476
- }
477
- }
478
- get fullscreen () {
479
- return hasClass(this.root, 'xgplayer-is-fullscreen') || hasClass(this.root, 'xgplayer-fullscreen-active')
480
- }
481
- get bullet () {
482
- return findDom(this.root, 'xg-danmu') ? hasClass(findDom(this.root, 'xg-danmu'), 'xgplayer-has-danmu') : false
483
- }
484
- get textTrack () {
485
- return hasClass(this.root, 'xgplayer-is-textTrack')
486
- }
487
- get pip () {
488
- return hasClass(this.root, 'xgplayer-pip-active')
489
- }
490
- get isMiniPlayer () {
491
- return hasClass(this.root, 'xgplayer-miniplayer-active')
492
- }
493
- }
494
-
495
- export default Proxy
@@ -1,42 +0,0 @@
1
- import Player from './player'
2
-
3
- import Flex from './skin/controls/flex'
4
- import Fullscreen from './controls/fullscreen'
5
- import S_fullscreen from './skin/controls/fullscreen'
6
- import S_loading from './skin/controls/loading'
7
- import Mobile from './controls/mobile'
8
- import Pc from './controls/pc'
9
- import Play from './controls/play'
10
- import S_play from './skin/controls/play'
11
- import S_progress from './skin/controls/progress'
12
- import S_poster from './skin/controls/poster'
13
- import S_time from './skin/controls/time'
14
- import Start from './controls/start'
15
- import S_start from './skin/controls/start'
16
- import Replay from './controls/replay'
17
- import S_replay from './skin/controls/replay'
18
- // import Volume from './controls/volume'
19
- // import S_volume from './skin/controls/volume'
20
-
21
- let controlLst = [
22
- Flex,
23
- Fullscreen,
24
- S_fullscreen,
25
- S_loading,
26
- Mobile,
27
- Pc,
28
- Play,
29
- S_play,
30
- S_progress,
31
- S_poster,
32
- S_time,
33
- Start,
34
- S_start,
35
- Replay,
36
- S_replay
37
- ]
38
- controlLst.forEach(function(control) {
39
- Player.install(control.name, control.method)
40
- })
41
-
42
- export default Player
@@ -1 +0,0 @@
1
- <svg t="1600422191774" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3100" width="28" height="28"><path d="M256 938.666667h512L512 597.333333 256 938.666667z m170.666667-85.333334l85.333333-113.781333L597.333333 853.333333H426.666667zM853.333333 85.333333H170.666667C99.946667 85.333333 42.666667 142.613333 42.666667 213.333333v426.666667c0 70.72 57.28 128 128 128h106.666666l64-85.333333H170.666667c-23.573333 0-42.666667-19.093333-42.666667-42.666667V213.333333c0-23.573333 19.093333-42.666667 42.666667-42.666666h682.666666c23.573333 0 42.666667 19.093333 42.666667 42.666666v426.666667c0 23.573333-19.093333 42.666667-42.666667 42.666667H682.666667l64 85.333333h106.666666c70.72 0 128-57.28 128-128V213.333333c0-70.72-57.28-128-128-128z" p-id="3101" fill="#ffffff"></path></svg>
@@ -1,14 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24">
2
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
3
- <g transform="translate(-488.000000, -340.000000)" fill="#FFFFFF">
4
- <g id="Group-2">
5
- <g id="volme_big-copy" transform="translate(488.000000, 340.000000)">
6
- <rect id="Rectangle-18" x="11" y="4" width="2" height="12" rx="1"></rect>
7
- <rect id="Rectangle-2" x="3" y="18" width="18" height="2" rx="1"></rect>
8
- <rect id="Rectangle-2" transform="translate(4.000000, 17.500000) rotate(90.000000) translate(-4.000000, -17.500000) " x="1.5" y="16.5" width="5" height="2" rx="1"></rect><rect id="Rectangle-2-Copy-3" transform="translate(20.000000, 17.500000) rotate(90.000000) translate(-20.000000, -17.500000) " x="17.5" y="16.5" width="5" height="2" rx="1"></rect>
9
- <path d="M9.48791171,8.26502656 L9.48791171,14.2650266 C9.48791171,14.8173113 9.04019646,15.2650266 8.48791171,15.2650266 C7.93562696,15.2650266 7.48791171,14.8173113 7.48791171,14.2650266 L7.48791171,7.26502656 C7.48791171,6.71274181 7.93562696,6.26502656 8.48791171,6.26502656 L15.4879117,6.26502656 C16.0401965,6.26502656 16.4879117,6.71274181 16.4879117,7.26502656 C16.4879117,7.81731131 16.0401965,8.26502656 15.4879117,8.26502656 L9.48791171,8.26502656 Z" id="Combined-Shape" transform="translate(11.987912, 10.765027) scale(1, -1) rotate(45.000000) translate(-11.987912, -10.765027) "></path>
10
- </g>
11
- </g>
12
- </g>
13
- </g>
14
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
2
- <path transform="scale(0.028 0.028)" d="M834.56 81.92H189.44c-59.392 0-107.52 48.128-107.52 107.52v645.12c0 59.392 48.128 107.52 107.52 107.52h645.12c59.392 0 107.52-48.128 107.52-107.52V189.44c0-59.392-48.128-107.52-107.52-107.52zM458.24 727.04c0 14.848-12.288 26.624-26.624 26.624S404.48 741.888 404.48 727.04v-69.632L289.28 773.12c-10.752 10.24-27.648 10.24-37.888 0-10.24-10.752-10.24-27.648 0-37.888L366.592 619.52H296.96c-14.848 0-26.624-12.288-26.624-26.624s12.288-26.624 26.624-26.624h134.144c14.848 0 26.624 12.288 26.624 26.624V727.04z m0-295.936c0 14.848-12.288 26.624-26.624 26.624H296.96c-14.848 0-26.624-12.288-26.624-26.624S282.112 404.48 296.96 404.48h69.632L251.392 289.28c-10.24-10.752-10.24-27.648 0-37.888 5.12-5.12 12.288-7.68 18.944-7.68 6.656 0 13.824 2.56 18.944 7.68L404.48 366.592V296.96c0-14.848 12.288-26.624 26.624-26.624s26.624 12.288 26.624 26.624v134.144zM773.12 773.12c-10.752 10.24-27.648 10.24-37.888 0L619.52 657.408V727.04c0 14.848-12.288 26.624-26.624 26.624s-26.624-11.776-26.624-26.624v-134.144c0-14.848 12.288-26.624 26.624-26.624H727.04c14.848 0 26.624 12.288 26.624 26.624s-12.288 26.624-26.624 26.624h-69.632l115.2 115.2c10.752 10.752 10.752 27.648 0.512 38.4z m0-483.84L657.408 404.48H727.04c14.848 0 26.624 12.288 26.624 26.624 0 14.848-12.288 26.624-26.624 26.624h-134.144c-14.848 0-26.624-12.288-26.624-26.624V296.96c0-14.848 12.288-26.624 26.624-26.624s26.624 12.288 26.624 26.624v69.632L734.72 250.88c5.12-5.12 12.288-7.68 18.944-7.68s13.824 2.56 18.944 7.68c10.752 10.752 10.752 27.648 0.512 38.4z"></path>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
2
- <path transform="scale(0.0320625 0.0320625)" d="M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z"></path>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewbox="0 0 100 100">
2
- <path d="M100,50A50,50,0,1,1,50,0"></path>
3
- </svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40">
2
- <path fill="#f85959" transform="scale(0.8 0.8)" d="M36.5,18.73a1.19,1.19,0,0,0,1-1.14V16.33a1.2,1.2,0,0,0-1-1.13l-.61-.08a1.75,1.75,0,0,1-1.3-.86l-.21-.36-.2-.36A1.72,1.72,0,0,1,34,12l.23-.58a1.18,1.18,0,0,0-.5-1.42l-1.1-.62a1.18,1.18,0,0,0-1.47.3l-.39.51a1.82,1.82,0,0,1-1.41.72c-.44,0-1.88-.27-2.22-.7l-.39-.49a1.18,1.18,0,0,0-1.48-.28l-1.09.64a1.19,1.19,0,0,0-.47,1.43l.25.59a1.87,1.87,0,0,1-.08,1.58c-.26.37-1.17,1.5-1.71,1.58l-.63.09a1.19,1.19,0,0,0-1,1.14l0,1.27a1.17,1.17,0,0,0,1,1.12l.61.08a1.74,1.74,0,0,1,1.3.87l.21.36.2.35A1.69,1.69,0,0,1,24,22.08l-.23.59a1.19,1.19,0,0,0,.5,1.42l1.1.62a1.19,1.19,0,0,0,1.48-.31l.38-.5a1.83,1.83,0,0,1,1.41-.72c.44,0,1.88.25,2.22.69l.39.49a1.18,1.18,0,0,0,1.48.28L33.86,24a1.19,1.19,0,0,0,.47-1.43L34.09,22a1.84,1.84,0,0,1,.07-1.58c.26-.37,1.17-1.5,1.72-1.58ZM31,18.94a2.76,2.76,0,0,1-4.65-1.2A2.71,2.71,0,0,1,27,15.13a2.76,2.76,0,0,1,4.64,1.2A2.7,2.7,0,0,1,31,18.94Z"/>
3
- <path fill="#f85959" transform="scale(0.8 0.8)" d="M32,0H3.59A3.59,3.59,0,0,0,0,3.59v17A3.59,3.59,0,0,0,3.59,24.2H19.72a12.59,12.59,0,0,1-.81-1.2A11.73,11.73,0,0,1,35.54,7.28V3.59A3.59,3.59,0,0,0,32,0ZM13,14.18H4.29a1.52,1.52,0,0,1,0-3H13a1.52,1.52,0,0,1,0,3ZM16.45,8H4.29a1.51,1.51,0,0,1,0-3H16.45a1.51,1.51,0,1,1,0,3Z"/>
4
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
2
- <path transform="translate(2,2) scale(0.0320625 0.0320625)" d="M598,214h170v596h-170v-596zM256 810v-596h170v596h-170z"></path>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
2
- <path transform="translate(2,2) scale(0.0320625 0.0320625)" d="M576,363L810,512L576,661zM342,214L576,363L576,661L342,810z"></path>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
2
- <path transform="scale(0.038 0.028)" d="M800 380v768h-128v-352l-320 320v-704l320 320v-352z"></path>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
2
- <path fill="#FFF" fill-opacity="1" fill-rule="nonzero" d="M18.17 19.988a7.182 7.182 0 0 1-4.256 1.318 7.806 7.806 0 0 1-.595-.03c-.08-.008-.16-.021-.242-.031a8.004 8.004 0 0 1-.458-.071c-.094-.018-.185-.042-.276-.063a7.743 7.743 0 0 1-.439-.113c-.068-.022-.136-.047-.205-.07a7.03 7.03 0 0 1-.492-.181c-.037-.015-.072-.032-.108-.049a7.295 7.295 0 0 1-.554-.269l-.025-.012a7.347 7.347 0 0 1-2.111-1.753c-.03-.036-.057-.074-.086-.11a7.305 7.305 0 0 1-1.594-4.557h1.686a.123.123 0 0 0 .108-.064.119.119 0 0 0-.006-.125L5.684 9.532a.123.123 0 0 0-.103-.056.123.123 0 0 0-.102.056l-2.834 4.276a.121.121 0 0 0-.005.125c.022.04.064.064.107.064h1.687c0 2.025.627 3.902 1.693 5.454.013.021.022.044.037.066.11.159.233.305.352.455.043.057.085.116.13.171.175.213.36.413.55.61.02.018.036.038.054.055a9.447 9.447 0 0 0 2.91 1.996c.058.026.115.054.175.079.202.084.41.158.619.228.098.034.196.069.296.1.183.054.37.1.558.145.125.029.249.06.376.085.052.01.102.027.155.035.177.032.355.05.533.071.064.007.128.018.19.026.32.03.639.052.956.052a9.46 9.46 0 0 0 5.47-1.746 1.16 1.16 0 0 0 .282-1.608 1.143 1.143 0 0 0-1.6-.283zm5.397-5.991a9.604 9.604 0 0 0-1.685-5.441c-.016-.027-.026-.054-.043-.078-.132-.19-.276-.366-.419-.543-.017-.022-.032-.044-.05-.065a9.467 9.467 0 0 0-3.571-2.7l-.114-.051a11.2 11.2 0 0 0-.673-.248c-.082-.027-.163-.057-.247-.082a9.188 9.188 0 0 0-.6-.156c-.113-.026-.224-.055-.337-.077-.057-.011-.109-.028-.164-.037-.151-.027-.304-.039-.455-.058-.104-.013-.208-.03-.313-.04a10.05 10.05 0 0 0-.759-.039c-.045 0-.09-.007-.136-.007l-.025.003a9.45 9.45 0 0 0-5.46 1.737 1.16 1.16 0 0 0-.284 1.608c.363.523 1.08.65 1.6.284a7.182 7.182 0 0 1 4.222-1.32c.217.002.429.013.639.033.065.007.129.017.193.025.173.021.344.046.513.08.075.014.149.033.221.05.166.037.331.077.494.127l.152.051c.185.061.366.127.545.201l.054.025a7.308 7.308 0 0 1 2.741 2.067l.013.018a7.302 7.302 0 0 1 1.652 4.633h-1.686a.123.123 0 0 0-.108.064.12.12 0 0 0 .006.124l2.834 4.277c.022.033.06.054.103.054.042 0 .08-.021.102-.054l2.833-4.277a.12.12 0 0 0 .005-.124.123.123 0 0 0-.108-.064h-1.685z"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg class="xgplayer-replay-svg" xmlns="http://www.w3.org/2000/svg" width="78" height="78" viewbox="0 0 78 78">
2
- <path d="M8.22708362,13.8757234 L11.2677371,12.6472196 C11.7798067,12.4403301 12.3626381,12.6877273 12.5695276,13.1997969 L12.9441342,14.1269807 C13.1510237,14.6390502 12.9036264,15.2218816 12.3915569,15.4287712 L6.8284538,17.6764107 L5.90126995,18.0510173 C5.38920044,18.2579068 4.80636901,18.0105096 4.5994795,17.49844 L1.97723335,11.0081531 C1.77034384,10.4960836 2.0177411,9.91325213 2.52981061,9.70636262 L3.45699446,9.33175602 C3.96906396,9.12486652 4.5518954,9.37226378 4.75878491,9.88433329 L5.67885163,12.1615783 C7.99551726,6.6766934 13.3983951,3 19.5,3 C27.7842712,3 34.5,9.71572875 34.5,18 C34.5,26.2842712 27.7842712,33 19.5,33 C15.4573596,33 11.6658607,31.3912946 8.87004692,28.5831991 C8.28554571,27.9961303 8.28762719,27.0463851 8.87469603,26.4618839 C9.46176488,25.8773827 10.4115101,25.8794641 10.9960113,26.466533 C13.2344327,28.7147875 16.263503,30 19.5,30 C26.127417,30 31.5,24.627417 31.5,18 C31.5,11.372583 26.127417,6 19.5,6 C14.4183772,6 9.94214483,9.18783811 8.22708362,13.8757234 Z"></path>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
2
- <path transform="scale(0.028 0.028)" d="M843.617212 67.898413 175.411567 67.898413c-61.502749 0-111.367437 49.856501-111.367437 111.367437l0 668.205645c0 61.510936 49.864688 111.367437 111.367437 111.367437L843.617212 958.838931c61.510936 0 111.367437-49.856501 111.367437-111.367437L954.984648 179.26585C954.984648 117.754914 905.12917 67.898413 843.617212 67.898413zM398.146441 736.104057c15.380292 0 27.842115 12.461823 27.842115 27.842115 0 15.379269-12.461823 27.841092-27.842115 27.841092L259.725858 791.787264c-7.785314 0-14.781658-3.217275-19.838837-8.365528-5.383614-4.577249-8.791224-11.228739-8.791224-19.475564L231.095797 624.736621c0-15.371082 12.471033-27.842115 27.842115-27.842115 15.380292 0 27.842115 12.471033 27.842115 27.842115l-0.61603 71.426773 133.036969-133.037992 39.378869 39.378869L324.962651 736.113267 398.146441 736.104057zM419.199942 463.611943 286.162974 330.565764l0.61603 71.435982c0 15.380292-12.461823 27.842115-27.842115 27.842115-15.371082 0-27.842115-12.461823-27.842115-27.842115L231.094774 262.791172c0-8.256034 3.40761-14.908548 8.791224-19.476587 5.057179-5.148253 12.053524-8.374738 19.838837-8.374738l138.420583 0.00921c15.380292 0 27.842115 12.461823 27.842115 27.842115s-12.461823 27.842115-27.842115 27.842115l-73.175603-0.00921 133.607974 133.607974L419.199942 463.611943zM787.932981 763.946172c0 8.247848-3.40761 14.899338-8.791224 19.475564-5.057179 5.148253-12.053524 8.365528-19.839861 8.365528L620.881314 791.787264c-15.379269 0-27.841092-12.461823-27.841092-27.841092 0-15.380292 12.461823-27.842115 27.841092-27.842115l73.185836 0.00921L560.449967 602.50427l39.378869-39.378869L732.875015 696.163393l-0.62524-71.426773c0-15.371082 12.462846-27.842115 27.842115-27.842115 15.380292 0 27.842115 12.471033 27.842115 27.842115L787.934005 763.946172zM787.932981 402.000724c0 15.380292-12.461823 27.842115-27.842115 27.842115-15.379269 0-27.842115-12.461823-27.842115-27.842115l0.62524-71.435982L599.828836 463.611943l-39.378869-39.378869 133.617184-133.607974-73.185836 0.00921c-15.379269 0-27.841092-12.461823-27.841092-27.842115s12.461823-27.842115 27.841092-27.842115l138.421606-0.00921c7.785314 0 14.781658 3.226484 19.839861 8.374738 5.383614 4.568039 8.791224 11.219529 8.791224 19.476587L787.934005 402.000724z"></path>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
2
- <path transform="scale(0.0320625 0.0320625)" d="M598 214h212v212h-84v-128h-128v-84zM726 726v-128h84v212h-212v-84h128zM214 426v-212h212v84h-128v128h-84zM298 598v128h128v84h-212v-212h84z"></path>
3
- </svg>
@@ -1,11 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 40 40" fill="none">
2
- <g clip-path="url(#clip0)">
3
- <path transform="scale(1.5 1.5)" d="M11.6665 9.16663H4.1665C2.78579 9.16663 1.6665 10.2859 1.6665 11.6666V15.8333C1.6665 17.214 2.78579 18.3333 4.1665 18.3333H11.6665C13.0472 18.3333 14.1665 17.214 14.1665 15.8333V11.6666C14.1665 10.2859 13.0472 9.16663 11.6665 9.16663Z" fill="white"/>
4
- <path transform="scale(1.5 1.5)" fill-rule="evenodd" clip-rule="evenodd" d="M3.88148 4.06298C3.75371 4.21005 3.67667 4.40231 3.67749 4.61242C3.67847 4.87253 3.79852 5.10435 3.98581 5.25646L6.99111 8.05895C7.32771 8.37283 7.85502 8.35443 8.16891 8.01782C8.48279 7.68122 8.46437 7.15391 8.12778 6.84003L6.62061 5.43457L9.8198 5.4224C9.82848 5.42239 9.8372 5.42221 9.84591 5.4219C10.9714 5.38233 12.0885 5.6285 13.0931 6.13744C14.0976 6.64635 14.957 7.40148 15.5908 8.33234C16.2246 9.2632 16.6122 10.3394 16.7177 11.4606C16.823 12.5819 16.6427 13.7115 16.1934 14.7442C16.0098 15.1661 16.203 15.6571 16.6251 15.8408C17.0471 16.0243 17.5381 15.8311 17.7216 15.4091C18.2833 14.1183 18.5087 12.7063 18.3771 11.3047C18.2453 9.90318 17.7607 8.55792 16.9684 7.39433C16.1761 6.23073 15.1021 5.28683 13.8463 4.65065C12.5946 4.01651 11.203 3.70872 9.80072 3.75583L6.43415 3.76862L7.96326 2.12885C8.27715 1.79225 8.25872 1.26494 7.92213 0.951061C7.58553 0.63718 7.05822 0.655585 6.74433 0.99219L3.90268 4.0395C3.89545 4.04724 3.88841 4.05509 3.88154 4.06303L3.88148 4.06298Z" fill="white"/>
5
- </g>
6
- <defs>
7
- <clipPath id="clip0">
8
- <rect width="40" height="40" fill="white"/>
9
- </clipPath>
10
- </defs>
11
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="70" height="70" viewBox="0 0 70 70">
2
- <path transform="translate(15,15) scale(0.04 0.04)" d="M598,214h170v596h-170v-596zM256 810v-596h170v596h-170z"></path>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="70" height="70" viewBox="0 0 70 70">
2
- <path transform="translate(15,15) scale(0.04,0.04)" d="M576,363L810,512L576,661zM342,214L576,363L576,661L342,810z"></path>
3
- </svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
2
- <path transform="scale(0.0220625 0.0220625)" d="M358.4 358.4h-204.8v307.2h204.8l256 256v-819.2l-256 256z"></path>
3
- <path transform="scale(0.0220625 0.0220625)" d="M940.632 837.632l-72.192-72.192c65.114-64.745 105.412-154.386 105.412-253.44s-40.299-188.695-105.396-253.424l-0.016-0.016 72.192-72.192c83.639 83.197 135.401 198.37 135.401 325.632s-51.762 242.434-135.381 325.612l-0.020 0.020zM795.648 693.248l-72.704-72.704c27.756-27.789 44.921-66.162 44.921-108.544s-17.165-80.755-44.922-108.546l0.002 0.002 72.704-72.704c46.713 46.235 75.639 110.363 75.639 181.248s-28.926 135.013-75.617 181.227l-0.021 0.021z"></path>
4
- </svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
2
- <path transform="scale(0.0220625 0.0220625)" d="M358.4 358.4h-204.8v307.2h204.8l256 256v-819.2l-256 256z"></path>
3
- <path transform="scale(0.0220625 0.0220625)" d="M920.4 439.808l-108.544-109.056-72.704 72.704 109.568 108.544-109.056 108.544 72.704 72.704 108.032-109.568 108.544 109.056 72.704-72.704-109.568-108.032 109.056-108.544-72.704-72.704-108.032 109.568z"></path>
4
- </svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">
2
- <path transform="scale(0.0220625 0.0220625)" d="M358.4 358.4h-204.8v307.2h204.8l256 256v-819.2l-256 256z"></path>
3
- <path transform="scale(0.0220625 0.0220625)" d="M795.648 693.248l-72.704-72.704c27.756-27.789 44.921-66.162 44.921-108.544s-17.165-80.755-44.922-108.546l0.002 0.002 72.704-72.704c46.713 46.235 75.639 110.363 75.639 181.248s-28.926 135.013-75.617 181.227l-0.021 0.021zM795.648 693.248l-72.704-72.704c27.756-27.789 44.921-66.162 44.921-108.544s-17.165-80.755-44.922-108.546l0.002 0.002 72.704-72.704c46.713 46.235 75.639 110.363 75.639 181.248s-28.926 135.013-75.617 181.227l-0.021 0.021z"></path>
4
- </svg>