@gcorevideo/player 2.22.30 → 2.23.0

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 (69) hide show
  1. package/assets/media-control/container.scss +2 -3
  2. package/assets/poster/poster.ejs +3 -1
  3. package/assets/poster/poster.scss +3 -3
  4. package/assets/style/main.scss +1 -1
  5. package/assets/thumbnails/scrub-thumbnails.ejs +5 -10
  6. package/assets/thumbnails/style.scss +4 -5
  7. package/dist/core.js +1 -1
  8. package/dist/index.css +533 -532
  9. package/dist/index.js +273 -377
  10. package/dist/player.d.ts +63 -33
  11. package/docs/api/{player.seektime.bindevents.md → player.clapprstats.clearmetrics.md} +3 -3
  12. package/docs/api/player.clapprstats.md +14 -0
  13. package/docs/api/player.extendedevents.md +14 -0
  14. package/docs/api/player.md +13 -2
  15. package/docs/api/player.seektime.attributes.md +0 -1
  16. package/docs/api/player.seektime.md +6 -197
  17. package/docs/api/{player.seektime.render.md → player.seektimesettings.md} +7 -7
  18. package/docs/api/player.skiptime.md +3 -184
  19. package/lib/plugins/clips/Clips.d.ts +7 -0
  20. package/lib/plugins/clips/Clips.d.ts.map +1 -1
  21. package/lib/plugins/clips/Clips.js +8 -0
  22. package/lib/plugins/media-control/MediaControl.d.ts +1 -7
  23. package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
  24. package/lib/plugins/media-control/MediaControl.js +9 -18
  25. package/lib/plugins/poster/Poster.d.ts +24 -14
  26. package/lib/plugins/poster/Poster.d.ts.map +1 -1
  27. package/lib/plugins/poster/Poster.js +67 -97
  28. package/lib/plugins/thumbnails/Thumbnails.d.ts +36 -33
  29. package/lib/plugins/thumbnails/Thumbnails.d.ts.map +1 -1
  30. package/lib/plugins/thumbnails/Thumbnails.js +174 -259
  31. package/lib/plugins/thumbnails/utils.d.ts +5 -0
  32. package/lib/plugins/thumbnails/utils.d.ts.map +1 -0
  33. package/lib/plugins/thumbnails/utils.js +12 -0
  34. package/lib/testUtils.d.ts +13 -39
  35. package/lib/testUtils.d.ts.map +1 -1
  36. package/lib/testUtils.js +15 -67
  37. package/package.json +2 -1
  38. package/src/plugins/clips/Clips.ts +10 -1
  39. package/src/plugins/media-control/MediaControl.ts +10 -21
  40. package/src/plugins/media-control/__tests__/__snapshots__/MediaControl.test.ts.snap +1 -1
  41. package/src/plugins/poster/Poster.ts +91 -110
  42. package/src/plugins/poster/__tests__/Poster.test.ts +119 -0
  43. package/src/plugins/poster/__tests__/__snapshots__/Poster.test.ts.snap +8 -0
  44. package/src/plugins/source-controller/__tests__/SourceController.test.ts +1 -2
  45. package/src/plugins/thumbnails/Thumbnails.ts +228 -330
  46. package/src/plugins/thumbnails/__tests__/Thumbnails.test.ts +72 -0
  47. package/src/plugins/thumbnails/__tests__/__snapshots__/Thumbnails.test.ts.snap +10 -0
  48. package/src/plugins/thumbnails/utils.ts +12 -0
  49. package/src/testUtils.ts +15 -88
  50. package/temp/player.api.json +295 -829
  51. package/tsconfig.tsbuildinfo +1 -1
  52. package/docs/api/player.seektime.durationshown.md +0 -14
  53. package/docs/api/player.seektime.getseektime.md +0 -20
  54. package/docs/api/player.seektime.islivestreamwithdvr.md +0 -14
  55. package/docs/api/player.seektime.mediacontrol.md +0 -14
  56. package/docs/api/player.seektime.mediacontrolcontainer.md +0 -14
  57. package/docs/api/player.seektime.shouldbevisible.md +0 -18
  58. package/docs/api/player.seektime.template.md +0 -14
  59. package/docs/api/player.seektime.update.md +0 -18
  60. package/docs/api/player.skiptime.attributes.md +0 -17
  61. package/docs/api/player.skiptime.bindevents.md +0 -18
  62. package/docs/api/player.skiptime.events.md +0 -18
  63. package/docs/api/player.skiptime.handlerewindclicks.md +0 -18
  64. package/docs/api/player.skiptime.render.md +0 -18
  65. package/docs/api/player.skiptime.setback.md +0 -18
  66. package/docs/api/player.skiptime.setforward.md +0 -18
  67. package/docs/api/player.skiptime.setmidclick.md +0 -18
  68. package/docs/api/player.skiptime.template.md +0 -14
  69. package/docs/api/player.skiptime.togglefullscreen.md +0 -18
@@ -0,0 +1,119 @@
1
+ import { Poster } from '../Poster'
2
+ import { describe, it, expect, beforeEach } from 'vitest'
3
+ import { createMockCore } from '../../../testUtils'
4
+ import { Events, PlayerError } from '@clappr/core'
5
+
6
+ describe('Poster', () => {
7
+ let core: any
8
+ let poster: Poster
9
+ describe('basically', () => {
10
+ beforeEach(() => {
11
+ core = createMockCore({
12
+ poster: {
13
+ url: 'https://via.placeholder.com/150.png',
14
+ },
15
+ })
16
+ poster = new Poster(core.activeContainer)
17
+ core.activeContainer.trigger(Events.CONTAINER_READY)
18
+ })
19
+ it('should render', () => {
20
+ expect(poster.el.innerHTML).toMatchSnapshot()
21
+ })
22
+ describe('when clicked', () => {
23
+ beforeEach(() => {
24
+ poster.el.click()
25
+ })
26
+ it('should start playback', () => {
27
+ expect(core.activeContainer.play).toHaveBeenCalled()
28
+ expect(core.activeContainer.playback.consent).not.toHaveBeenCalled()
29
+ })
30
+ it('should hide button', () => {
31
+ expect(poster.$el.find('#poster-play')[0].style.display).toBe('none')
32
+ })
33
+ it('should remove clickable class', () => {
34
+ expect(poster.el.classList.contains('clickable')).toBe(false)
35
+ })
36
+ })
37
+ describe('when playback is triggered', () => {
38
+ beforeEach(() => {
39
+ core.activeContainer.playback.trigger(Events.PLAYBACK_PLAY_INTENT)
40
+ })
41
+ it('should hide button', () => {
42
+ expect(poster.$el.find('#poster-play')[0].style.display).toBe('none')
43
+ })
44
+ })
45
+ describe('when playback is about to start', () => {
46
+ describe.each([
47
+ [
48
+ Events.CONTAINER_STATE_BUFFERING,
49
+ ], [
50
+ Events.CONTAINER_STATE_BUFFERFULL,
51
+ ]
52
+ ])("event %s", (event) => {
53
+ beforeEach(() => {
54
+ core.activeContainer.buffering = true
55
+ core.activeContainer.trigger(event)
56
+ })
57
+ it('should hide button', () => {
58
+ expect(poster.$el.find('#poster-play')[0].style.display).toBe('none')
59
+ })
60
+ })
61
+ })
62
+ describe('when playback is started', () => {
63
+ beforeEach(() => {
64
+ core.activeContainer.trigger(Events.CONTAINER_PLAY)
65
+ core.activeContainer.playback.trigger(Events.PLAYBACK_PLAY)
66
+ })
67
+ it('should hide poster', () => {
68
+ expect(poster.el.style.display).toBe('none')
69
+ })
70
+ })
71
+ describe('when playback is stopped', () => {
72
+ beforeEach(() => {
73
+ core.activeContainer.trigger(Events.CONTAINER_PLAY)
74
+ core.activeContainer.playback.trigger(Events.PLAYBACK_PLAY)
75
+ core.activeContainer.trigger(Events.CONTAINER_STOP)
76
+ })
77
+ it('should show poster', () => {
78
+ expect(poster.el.style.display).not.toBe('none')
79
+ })
80
+ it('should show button', () => {
81
+ expect(poster.$el.find('#poster-play')[0].style.display).not.toBe('none')
82
+ })
83
+ it('should add clickable class', () => {
84
+ expect(poster.el.classList.contains('clickable')).toBe(true)
85
+ })
86
+ })
87
+ })
88
+ describe('when autoplay is configured', () => {
89
+ beforeEach(() => {
90
+ core = createMockCore({
91
+ autoPlay: true,
92
+ })
93
+ poster = new Poster(core.activeContainer)
94
+ core.activeContainer.trigger(Events.CONTAINER_READY)
95
+ })
96
+ it('should hide button initially', () => {
97
+ expect(poster.$el.find('#poster-play')[0].style.display).toBe('none')
98
+ })
99
+ })
100
+ describe('when error occurs', () => {
101
+ beforeEach(() => {
102
+ core = createMockCore({
103
+ autoPlay: true,
104
+ })
105
+ poster = new Poster(core.activeContainer)
106
+ core.activeContainer.trigger(Events.CONTAINER_READY)
107
+ core.activeContainer.playback.trigger(Events.PLAYBACK_PLAY_INTENT)
108
+ core.activeContainer.trigger(Events.CONTAINER_ERROR, {
109
+ level: PlayerError.Levels.FATAL,
110
+ })
111
+ })
112
+ it('should show poster', () => {
113
+ expect(poster.el.style.display).not.toBe('none')
114
+ })
115
+ it('should hide button', () => {
116
+ expect(poster.$el.find('#poster-play')[0].style.display).toBe('none')
117
+ })
118
+ })
119
+ })
@@ -0,0 +1,8 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`Poster > basically > should render 1`] = `
4
+ "<div class="play-wrapper" id="gplayer-poster">
5
+ <div class="circle-poster gcore-skin-button-color gcore-skin-border-color" id="poster-play">/assets/icons/new/play.svg</div>
6
+ </div>
7
+ "
8
+ `;
@@ -5,7 +5,6 @@ import FakeTimers from '@sinonjs/fake-timers'
5
5
  import { SourceController } from '../SourceController'
6
6
  import { PlaybackErrorCode } from '../../../playback.types.js'
7
7
  import {
8
- _MockPlayback,
9
8
  createMockCore,
10
9
  createMockPlayback,
11
10
  createMockPlugin,
@@ -151,7 +150,7 @@ describe('SourceController', () => {
151
150
  core.activePlayback.emit('playback:error', {
152
151
  code: PlaybackErrorCode.MediaSourceUnavailable,
153
152
  })
154
- nextPlayback = new _MockPlayback({} as any, {} as any)
153
+ nextPlayback = createMockPlayback()
155
154
  vi.spyOn(nextPlayback, 'consent')
156
155
  vi.spyOn(nextPlayback, 'play')
157
156
  core.activePlayback = nextPlayback