@npo/player 1.23.2 → 1.24.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 (140) hide show
  1. package/README.md +1 -1
  2. package/lib/js/playeractions/handlers/error.js +2 -2
  3. package/lib/js/playeractions/handlers/error.test.js +2 -2
  4. package/lib/js/playeractions/handlers/handleoffsets.d.ts +4 -6
  5. package/lib/js/playeractions/handlers/handleoffsets.js +16 -17
  6. package/lib/js/playeractions/handlers/handleoffsets.test.js +73 -29
  7. package/lib/js/playeractions/handlers/mediasessionactions.js +24 -12
  8. package/lib/js/playeractions/handlers/processsourceconfig.js +16 -3
  9. package/lib/js/tracking/handlers/eventbinding.d.ts +1 -1
  10. package/lib/js/tracking/handlers/eventbinding.js +17 -23
  11. package/lib/js/tracking/handlers/eventlogging.d.ts +1 -1
  12. package/lib/js/tracking/handlers/eventlogging.js +18 -18
  13. package/lib/js/tracking/handlers/eventlogging.test.js +24 -24
  14. package/lib/js/tracking/handlers/playertrackerstart.js +4 -2
  15. package/lib/lang/nl.json +3 -1
  16. package/lib/npoplayer.d.ts +1 -2
  17. package/lib/npoplayer.js +25 -43
  18. package/lib/package.json +5 -5
  19. package/lib/services/a11y/setup.js +2 -2
  20. package/lib/services/a11y/setup.test.js +7 -8
  21. package/lib/services/advertHandlers/handlePreRolls.d.ts +2 -0
  22. package/lib/services/advertHandlers/handlePreRolls.js +132 -0
  23. package/lib/services/advertHandlers/handlePrerolls.test.js +52 -0
  24. package/lib/services/cdnProviders/cdnProviders.d.ts +4 -0
  25. package/lib/services/cdnProviders/cdnProviders.js +22 -0
  26. package/lib/services/cdnProviders/cndProviders.test.js +22 -0
  27. package/lib/services/eventListenerHandlers/removeEventListeners.d.ts +1 -1
  28. package/lib/services/eventListenerHandlers/removeEventListeners.js +4 -4
  29. package/lib/services/eventListenerHandlers/removeEventListeners.test.js +28 -13
  30. package/lib/services/liveStreamHandlers/handleLiveStreamControls.d.ts +1 -1
  31. package/lib/services/liveStreamHandlers/handleLiveStreamControls.js +3 -3
  32. package/lib/services/liveStreamHandlers/handleLiveStreamControls.test.d.ts +2 -0
  33. package/lib/services/liveStreamHandlers/handleLiveStreamControls.test.js +65 -0
  34. package/lib/services/localStorageHandlers/localStorageHandlers.d.ts +1 -1
  35. package/lib/services/localStorageHandlers/localStorageHandlers.test.js +0 -1
  36. package/lib/services/npoPlayerAPI/contants.d.ts +5 -0
  37. package/lib/services/npoPlayerAPI/contants.js +5 -0
  38. package/lib/services/npoPlayerAPI/npoPlayerAPI.d.ts +16 -4
  39. package/lib/services/npoPlayerAPI/npoPlayerAPI.js +65 -3
  40. package/lib/services/npoPlayerAPI/npoPlayerAPI.test.js +66 -1
  41. package/lib/services/segmentHandlers/addSegmentEventListeners.js +3 -3
  42. package/lib/services/segmentHandlers/addSegmentEventListeners.test.js +10 -9
  43. package/lib/services/segmentHandlers/convertFragmentToSegment.d.ts +1 -1
  44. package/lib/services/segmentHandlers/handleSegmentSeek.d.ts +1 -1
  45. package/lib/services/segmentHandlers/handleSegmentSeek.test.js +4 -4
  46. package/lib/services/segmentHandlers/handleSegmentTimeChanged.d.ts +1 -1
  47. package/lib/services/segmentHandlers/handleSegmentTimeChanged.test.js +33 -24
  48. package/lib/services/segmentHandlers/initSegment.d.ts +1 -1
  49. package/lib/services/segmentHandlers/initSegment.test.js +3 -1
  50. package/lib/services/segmentHandlers/setSegmentMarkers.d.ts +1 -1
  51. package/lib/services/services.d.ts +3 -1
  52. package/lib/services/services.js +8 -0
  53. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.d.ts +2 -0
  54. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.js +8 -0
  55. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.test.d.ts +1 -0
  56. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.test.js +36 -0
  57. package/lib/src/js/playeractions/handlers/handleoffsets.d.ts +4 -6
  58. package/lib/src/js/tracking/handlers/eventbinding.d.ts +1 -1
  59. package/lib/src/js/tracking/handlers/eventlogging.d.ts +1 -1
  60. package/lib/src/npoplayer.d.ts +1 -2
  61. package/lib/src/services/advertHandlers/handlePreRolls.d.ts +2 -0
  62. package/lib/src/services/advertHandlers/handlePrerolls.test.d.ts +1 -0
  63. package/lib/src/services/cdnProviders/cdnProviders.d.ts +4 -0
  64. package/lib/src/services/cdnProviders/cndProviders.test.d.ts +1 -0
  65. package/lib/src/services/eventListenerHandlers/removeEventListeners.d.ts +1 -1
  66. package/lib/src/services/liveStreamHandlers/handleLiveStreamControls.d.ts +1 -1
  67. package/lib/src/services/liveStreamHandlers/handleLiveStreamControls.test.d.ts +2 -0
  68. package/lib/src/services/localStorageHandlers/localStorageHandlers.d.ts +1 -1
  69. package/lib/src/services/npoPlayerAPI/contants.d.ts +5 -0
  70. package/lib/src/services/npoPlayerAPI/npoPlayerAPI.d.ts +16 -4
  71. package/lib/src/services/segmentHandlers/convertFragmentToSegment.d.ts +1 -1
  72. package/lib/src/services/segmentHandlers/handleSegmentSeek.d.ts +1 -1
  73. package/lib/src/services/segmentHandlers/handleSegmentTimeChanged.d.ts +1 -1
  74. package/lib/src/services/segmentHandlers/initSegment.d.ts +1 -1
  75. package/lib/src/services/segmentHandlers/setSegmentMarkers.d.ts +1 -1
  76. package/lib/src/services/services.d.ts +3 -1
  77. package/lib/src/services/verticalVideoHandlers/handleVerticalVideoControls.d.ts +2 -0
  78. package/lib/src/services/verticalVideoHandlers/handleVerticalVideoControls.test.d.ts +1 -0
  79. package/lib/src/types/events.d.ts +8 -1
  80. package/lib/src/types/interfaces.d.ts +8 -12
  81. package/lib/src/ui/components/audio/controlbar.d.ts +1 -1
  82. package/lib/src/ui/components/controlbar.d.ts +1 -1
  83. package/lib/src/ui/components/seekbar.d.ts +1 -1
  84. package/lib/src/ui/components/settingspanel.d.ts +1 -1
  85. package/lib/src/ui/components/verticalvideo/controlbar.d.ts +3 -0
  86. package/lib/src/ui/handlers/streamhandler.d.ts +2 -4
  87. package/lib/src/ui/uicontainer.d.ts +2 -2
  88. package/lib/tests/mocks/mockNpoplayer.js +0 -1
  89. package/lib/tests/mocks/playerContextMock.d.ts +67 -0
  90. package/lib/tests/mocks/playerContextMock.js +117 -0
  91. package/lib/types/events.d.ts +8 -1
  92. package/lib/types/events.js +184 -1
  93. package/lib/types/interfaces.d.ts +8 -12
  94. package/lib/types/interfaces.js +1 -0
  95. package/lib/ui/components/audio/controlbar.d.ts +1 -1
  96. package/lib/ui/components/audio/controlbar.js +6 -6
  97. package/lib/ui/components/controlbar.d.ts +1 -1
  98. package/lib/ui/components/controlbar.js +13 -11
  99. package/lib/ui/components/nativemobile/controlbar.js +0 -1
  100. package/lib/ui/components/seekbar.js +1 -1
  101. package/lib/ui/components/settingspanel.d.ts +1 -1
  102. package/lib/ui/components/settingspanel.js +68 -84
  103. package/lib/ui/components/topbar.js +6 -3
  104. package/lib/ui/components/verticalvideo/controlbar.d.ts +3 -0
  105. package/lib/ui/components/verticalvideo/controlbar.js +34 -0
  106. package/lib/ui/handlers/streamhandler.d.ts +2 -4
  107. package/lib/ui/handlers/streamhandler.js +16 -7
  108. package/lib/ui/nativemobileuifactory.js +2 -0
  109. package/lib/ui/uicontainer.d.ts +2 -2
  110. package/lib/ui/uicontainer.js +35 -29
  111. package/package.json +5 -5
  112. package/src/style/components/_settingspanel.scss +35 -3
  113. package/src/style/components/_subtitles.scss +29 -25
  114. package/src/style/components/_textbuttons.scss +2 -2
  115. package/src/style/components/_volumeslider.scss +1 -0
  116. package/src/style/components/vertical-video/_bottombar.scss +19 -0
  117. package/src/style/components/vertical-video/_buttons.scss +23 -0
  118. package/src/style/components/vertical-video/_hugeplaybacktogglebutton.scss +14 -0
  119. package/src/style/components/vertical-video/_seekbar.scss +19 -0
  120. package/src/style/components/vertical-video/_settingsbutton.scss +7 -0
  121. package/src/style/components/vertical-video/_settingspanel.scss +14 -0
  122. package/src/style/components/vertical-video/_shortvideo.scss +14 -0
  123. package/src/style/components/vertical-video/_subtitles.scss +3 -0
  124. package/src/style/components/vertical-video/_topbar.scss +17 -0
  125. package/src/style/components/vertical-video/_volumeslider.scss +9 -0
  126. package/src/style/npoplayer.css +74 -34
  127. package/src/style/npoplayer.scss +2 -1
  128. package/src/style/variants/_player-small.scss +18 -10
  129. package/src/style/variants/_player-vertical.scss +23 -0
  130. package/lib/js/ads/ster.d.ts +0 -4
  131. package/lib/js/ads/ster.js +0 -126
  132. package/lib/js/ads/ster.test.js +0 -63
  133. package/lib/js/cdnproviders.d.ts +0 -1
  134. package/lib/js/cdnproviders.js +0 -16
  135. package/lib/src/js/ads/ster.d.ts +0 -4
  136. package/lib/src/js/cdnproviders.d.ts +0 -1
  137. package/lib/tests/mocks/mockPlayerContext.d.ts +0 -2
  138. package/lib/tests/mocks/mockPlayerContext.js +0 -40
  139. /package/lib/{js/ads/ster.test.d.ts → services/advertHandlers/handlePrerolls.test.d.ts} +0 -0
  140. /package/lib/{src/js/ads/ster.test.d.ts → services/cdnProviders/cndProviders.test.d.ts} +0 -0
@@ -1 +1,184 @@
1
- export {};
1
+ import { PlayerEvent } from 'bitmovin-player';
2
+ export var NpoPlayerEvent;
3
+ (function (NpoPlayerEvent) {
4
+ NpoPlayerEvent["Ready"] = "ready";
5
+ NpoPlayerEvent["Play"] = "play";
6
+ NpoPlayerEvent["Playing"] = "playing";
7
+ NpoPlayerEvent["Paused"] = "paused";
8
+ NpoPlayerEvent["Seek"] = "seek";
9
+ NpoPlayerEvent["Seeked"] = "seeked";
10
+ NpoPlayerEvent["TimeShift"] = "timeshift";
11
+ NpoPlayerEvent["TimeShifted"] = "timeshifted";
12
+ NpoPlayerEvent["VolumeChanged"] = "volumechanged";
13
+ NpoPlayerEvent["Muted"] = "muted";
14
+ NpoPlayerEvent["Unmuted"] = "unmuted";
15
+ NpoPlayerEvent["PlayerResized"] = "playerresized";
16
+ NpoPlayerEvent["PlaybackFinished"] = "playbackfinished";
17
+ NpoPlayerEvent["Error"] = "error";
18
+ NpoPlayerEvent["Warning"] = "warning";
19
+ NpoPlayerEvent["StallStarted"] = "stallstarted";
20
+ NpoPlayerEvent["StallEnded"] = "stallended";
21
+ NpoPlayerEvent["AudioChanged"] = "audiochanged";
22
+ NpoPlayerEvent["AudioAdded"] = "audioadded";
23
+ NpoPlayerEvent["AudioRemoved"] = "audioremoved";
24
+ NpoPlayerEvent["VideoQualityChanged"] = "videoqualitychanged";
25
+ NpoPlayerEvent["AudioQualityChanged"] = "audioqualitychanged";
26
+ NpoPlayerEvent["VideoDownloadQualityChange"] = "videodownloadqualitychange";
27
+ NpoPlayerEvent["AudioDownloadQualityChange"] = "audiodownloadqualitychange";
28
+ NpoPlayerEvent["VideoDownloadQualityChanged"] = "videodownloadqualitychanged";
29
+ NpoPlayerEvent["AudioDownloadQualityChanged"] = "audiodownloadqualitychanged";
30
+ NpoPlayerEvent["VideoPlaybackQualityChanged"] = "videoplaybackqualitychanged";
31
+ NpoPlayerEvent["AudioPlaybackQualityChanged"] = "audioplaybackqualitychanged";
32
+ NpoPlayerEvent["TimeChanged"] = "timechanged";
33
+ NpoPlayerEvent["CueParsed"] = "cueparsed";
34
+ NpoPlayerEvent["CueEnter"] = "cueenter";
35
+ NpoPlayerEvent["CueUpdate"] = "cueupdate";
36
+ NpoPlayerEvent["CueExit"] = "cueexit";
37
+ NpoPlayerEvent["SegmentPlayback"] = "segmentplayback";
38
+ NpoPlayerEvent["Metadata"] = "metadata";
39
+ NpoPlayerEvent["MetadataParsed"] = "metadataparsed";
40
+ NpoPlayerEvent["MetadataChanged"] = "metadatachanged";
41
+ NpoPlayerEvent["VideoAdaptation"] = "videoadaptation";
42
+ NpoPlayerEvent["AudioAdaptation"] = "audioadaptation";
43
+ NpoPlayerEvent["DownloadFinished"] = "downloadfinished";
44
+ NpoPlayerEvent["SegmentRequestFinished"] = "segmentrequestfinished";
45
+ NpoPlayerEvent["AdManifestLoaded"] = "admanifestloaded";
46
+ NpoPlayerEvent["AdStarted"] = "adstarted";
47
+ NpoPlayerEvent["OverlayAdStarted"] = "overlayadstarted";
48
+ NpoPlayerEvent["AdQuartile"] = "adquartile";
49
+ NpoPlayerEvent["AdSkipped"] = "adskipped";
50
+ NpoPlayerEvent["AdClicked"] = "adclicked";
51
+ NpoPlayerEvent["AdInteraction"] = "adinteraction";
52
+ NpoPlayerEvent["AdLinearityChanged"] = "adlinearitychanged";
53
+ NpoPlayerEvent["AdBreakStarted"] = "adbreakstarted";
54
+ NpoPlayerEvent["AdBreakFinished"] = "adbreakfinished";
55
+ NpoPlayerEvent["AdFinished"] = "adfinished";
56
+ NpoPlayerEvent["AdError"] = "aderror";
57
+ NpoPlayerEvent["VRViewingDirectionChange"] = "vrviewingdirectionchange";
58
+ NpoPlayerEvent["VRViewingDirectionChanged"] = "vrviewingdirectionchanged";
59
+ NpoPlayerEvent["VRStereoChanged"] = "vrstereochanged";
60
+ NpoPlayerEvent["CastAvailable"] = "castavailable";
61
+ NpoPlayerEvent["CastStopped"] = "caststopped";
62
+ NpoPlayerEvent["CastStart"] = "caststart";
63
+ NpoPlayerEvent["CastStarted"] = "caststarted";
64
+ NpoPlayerEvent["CastWaitingForDevice"] = "castwaitingfordevice";
65
+ NpoPlayerEvent["SourceLoaded"] = "sourceloaded";
66
+ NpoPlayerEvent["SourceUnloaded"] = "sourceunloaded";
67
+ NpoPlayerEvent["PeriodSwitch"] = "periodswitch";
68
+ NpoPlayerEvent["PeriodSwitched"] = "periodswitched";
69
+ NpoPlayerEvent["DVRWindowExceeded"] = "dvrwindowexceeded";
70
+ NpoPlayerEvent["SubtitleAdded"] = "subtitleadded";
71
+ NpoPlayerEvent["SubtitleRemoved"] = "subtitleremoved";
72
+ NpoPlayerEvent["ShowAirplayTargetPicker"] = "showairplaytargetpicker";
73
+ NpoPlayerEvent["AirplayAvailable"] = "airplayavailable";
74
+ NpoPlayerEvent["AirplayChanged"] = "airplaychanged";
75
+ NpoPlayerEvent["Destroy"] = "destroy";
76
+ NpoPlayerEvent["PlaybackSpeedChanged"] = "playbackspeedchanged";
77
+ NpoPlayerEvent["DurationChanged"] = "durationchanged";
78
+ NpoPlayerEvent["ViewModeChanged"] = "viewmodechanged";
79
+ NpoPlayerEvent["ModuleReady"] = "moduleready";
80
+ NpoPlayerEvent["SubtitleEnable"] = "subtitleenable";
81
+ NpoPlayerEvent["SubtitleEnabled"] = "subtitleenabled";
82
+ NpoPlayerEvent["SubtitleDisable"] = "subtitledisable";
83
+ NpoPlayerEvent["SubtitleDisabled"] = "subtitledisabled";
84
+ NpoPlayerEvent["VideoQualityAdded"] = "videoqualityadded";
85
+ NpoPlayerEvent["VideoQualityRemoved"] = "videoqualityremoved";
86
+ NpoPlayerEvent["AudioQualityAdded"] = "audioqualityadded";
87
+ NpoPlayerEvent["AudioQualityRemoved"] = "audioqualityremoved";
88
+ NpoPlayerEvent["TargetLatencyChanged"] = "targetlatencychanged";
89
+ NpoPlayerEvent["LatencyModeChanged"] = "latencymodechanged";
90
+ NpoPlayerEvent["LicenseValidated"] = "licensevalidated";
91
+ NpoPlayerEvent["DrmLicenseAdded"] = "drmlicenseadded";
92
+ NpoPlayerEvent["AspectRatioChanged"] = "aspectratiochanged";
93
+ })(NpoPlayerEvent || (NpoPlayerEvent = {}));
94
+ export const playerEventMap = {
95
+ [NpoPlayerEvent.Ready]: PlayerEvent.Ready,
96
+ [NpoPlayerEvent.Play]: PlayerEvent.Play,
97
+ [NpoPlayerEvent.Playing]: PlayerEvent.Playing,
98
+ [NpoPlayerEvent.Paused]: PlayerEvent.Paused,
99
+ [NpoPlayerEvent.Seek]: PlayerEvent.Seek,
100
+ [NpoPlayerEvent.Seeked]: PlayerEvent.Seeked,
101
+ [NpoPlayerEvent.TimeShift]: PlayerEvent.TimeShift,
102
+ [NpoPlayerEvent.TimeShifted]: PlayerEvent.TimeShifted,
103
+ [NpoPlayerEvent.VolumeChanged]: PlayerEvent.VolumeChanged,
104
+ [NpoPlayerEvent.Muted]: PlayerEvent.Muted,
105
+ [NpoPlayerEvent.Unmuted]: PlayerEvent.Unmuted,
106
+ [NpoPlayerEvent.PlayerResized]: PlayerEvent.PlayerResized,
107
+ [NpoPlayerEvent.PlaybackFinished]: PlayerEvent.PlaybackFinished,
108
+ [NpoPlayerEvent.Error]: PlayerEvent.Error,
109
+ [NpoPlayerEvent.Warning]: PlayerEvent.Warning,
110
+ [NpoPlayerEvent.StallStarted]: PlayerEvent.StallStarted,
111
+ [NpoPlayerEvent.StallEnded]: PlayerEvent.StallEnded,
112
+ [NpoPlayerEvent.AudioChanged]: PlayerEvent.AudioChanged,
113
+ [NpoPlayerEvent.AudioAdded]: PlayerEvent.AudioAdded,
114
+ [NpoPlayerEvent.AudioRemoved]: PlayerEvent.AudioRemoved,
115
+ [NpoPlayerEvent.VideoQualityChanged]: PlayerEvent.VideoQualityChanged,
116
+ [NpoPlayerEvent.AudioQualityChanged]: PlayerEvent.AudioQualityChanged,
117
+ [NpoPlayerEvent.VideoDownloadQualityChange]: PlayerEvent.VideoDownloadQualityChange,
118
+ [NpoPlayerEvent.AudioDownloadQualityChange]: PlayerEvent.AudioDownloadQualityChange,
119
+ [NpoPlayerEvent.VideoDownloadQualityChanged]: PlayerEvent.VideoDownloadQualityChanged,
120
+ [NpoPlayerEvent.AudioDownloadQualityChanged]: PlayerEvent.AudioDownloadQualityChanged,
121
+ [NpoPlayerEvent.VideoPlaybackQualityChanged]: PlayerEvent.VideoPlaybackQualityChanged,
122
+ [NpoPlayerEvent.AudioPlaybackQualityChanged]: PlayerEvent.AudioPlaybackQualityChanged,
123
+ [NpoPlayerEvent.TimeChanged]: PlayerEvent.TimeChanged,
124
+ [NpoPlayerEvent.CueParsed]: PlayerEvent.CueParsed,
125
+ [NpoPlayerEvent.CueEnter]: PlayerEvent.CueEnter,
126
+ [NpoPlayerEvent.CueUpdate]: PlayerEvent.CueUpdate,
127
+ [NpoPlayerEvent.CueExit]: PlayerEvent.CueExit,
128
+ [NpoPlayerEvent.SegmentPlayback]: PlayerEvent.SegmentPlayback,
129
+ [NpoPlayerEvent.Metadata]: PlayerEvent.Metadata,
130
+ [NpoPlayerEvent.MetadataParsed]: PlayerEvent.MetadataParsed,
131
+ [NpoPlayerEvent.MetadataChanged]: PlayerEvent.MetadataChanged,
132
+ [NpoPlayerEvent.VideoAdaptation]: PlayerEvent.VideoAdaptation,
133
+ [NpoPlayerEvent.AudioAdaptation]: PlayerEvent.AudioAdaptation,
134
+ [NpoPlayerEvent.DownloadFinished]: PlayerEvent.DownloadFinished,
135
+ [NpoPlayerEvent.SegmentRequestFinished]: PlayerEvent.SegmentRequestFinished,
136
+ [NpoPlayerEvent.AdManifestLoaded]: PlayerEvent.AdManifestLoaded,
137
+ [NpoPlayerEvent.AdStarted]: PlayerEvent.AdStarted,
138
+ [NpoPlayerEvent.OverlayAdStarted]: PlayerEvent.OverlayAdStarted,
139
+ [NpoPlayerEvent.AdQuartile]: PlayerEvent.AdQuartile,
140
+ [NpoPlayerEvent.AdSkipped]: PlayerEvent.AdSkipped,
141
+ [NpoPlayerEvent.AdClicked]: PlayerEvent.AdClicked,
142
+ [NpoPlayerEvent.AdInteraction]: PlayerEvent.AdInteraction,
143
+ [NpoPlayerEvent.AdLinearityChanged]: PlayerEvent.AdLinearityChanged,
144
+ [NpoPlayerEvent.AdBreakStarted]: PlayerEvent.AdBreakStarted,
145
+ [NpoPlayerEvent.AdBreakFinished]: PlayerEvent.AdBreakFinished,
146
+ [NpoPlayerEvent.AdFinished]: PlayerEvent.AdFinished,
147
+ [NpoPlayerEvent.AdError]: PlayerEvent.AdError,
148
+ [NpoPlayerEvent.VRViewingDirectionChange]: PlayerEvent.VRViewingDirectionChange,
149
+ [NpoPlayerEvent.VRViewingDirectionChanged]: PlayerEvent.VRViewingDirectionChanged,
150
+ [NpoPlayerEvent.VRStereoChanged]: PlayerEvent.VRStereoChanged,
151
+ [NpoPlayerEvent.CastAvailable]: PlayerEvent.CastAvailable,
152
+ [NpoPlayerEvent.CastStopped]: PlayerEvent.CastStopped,
153
+ [NpoPlayerEvent.CastStart]: PlayerEvent.CastStart,
154
+ [NpoPlayerEvent.CastStarted]: PlayerEvent.CastStarted,
155
+ [NpoPlayerEvent.CastWaitingForDevice]: PlayerEvent.CastWaitingForDevice,
156
+ [NpoPlayerEvent.SourceLoaded]: PlayerEvent.SourceLoaded,
157
+ [NpoPlayerEvent.SourceUnloaded]: PlayerEvent.SourceUnloaded,
158
+ [NpoPlayerEvent.PeriodSwitch]: PlayerEvent.PeriodSwitch,
159
+ [NpoPlayerEvent.PeriodSwitched]: PlayerEvent.PeriodSwitched,
160
+ [NpoPlayerEvent.DVRWindowExceeded]: PlayerEvent.DVRWindowExceeded,
161
+ [NpoPlayerEvent.SubtitleAdded]: PlayerEvent.SubtitleAdded,
162
+ [NpoPlayerEvent.SubtitleRemoved]: PlayerEvent.SubtitleRemoved,
163
+ [NpoPlayerEvent.ShowAirplayTargetPicker]: PlayerEvent.ShowAirplayTargetPicker,
164
+ [NpoPlayerEvent.AirplayAvailable]: PlayerEvent.AirplayAvailable,
165
+ [NpoPlayerEvent.AirplayChanged]: PlayerEvent.AirplayChanged,
166
+ [NpoPlayerEvent.Destroy]: PlayerEvent.Destroy,
167
+ [NpoPlayerEvent.PlaybackSpeedChanged]: PlayerEvent.PlaybackSpeedChanged,
168
+ [NpoPlayerEvent.DurationChanged]: PlayerEvent.DurationChanged,
169
+ [NpoPlayerEvent.ViewModeChanged]: PlayerEvent.ViewModeChanged,
170
+ [NpoPlayerEvent.ModuleReady]: PlayerEvent.ModuleReady,
171
+ [NpoPlayerEvent.SubtitleEnable]: PlayerEvent.SubtitleEnable,
172
+ [NpoPlayerEvent.SubtitleEnabled]: PlayerEvent.SubtitleEnabled,
173
+ [NpoPlayerEvent.SubtitleDisable]: PlayerEvent.SubtitleDisable,
174
+ [NpoPlayerEvent.SubtitleDisabled]: PlayerEvent.SubtitleDisabled,
175
+ [NpoPlayerEvent.VideoQualityAdded]: PlayerEvent.VideoQualityAdded,
176
+ [NpoPlayerEvent.VideoQualityRemoved]: PlayerEvent.VideoQualityRemoved,
177
+ [NpoPlayerEvent.AudioQualityAdded]: PlayerEvent.AudioQualityAdded,
178
+ [NpoPlayerEvent.AudioQualityRemoved]: PlayerEvent.AudioQualityRemoved,
179
+ [NpoPlayerEvent.TargetLatencyChanged]: PlayerEvent.TargetLatencyChanged,
180
+ [NpoPlayerEvent.LatencyModeChanged]: PlayerEvent.LatencyModeChanged,
181
+ [NpoPlayerEvent.LicenseValidated]: PlayerEvent.LicenseValidated,
182
+ [NpoPlayerEvent.DrmLicenseAdded]: PlayerEvent.DrmLicenseAdded,
183
+ [NpoPlayerEvent.AspectRatioChanged]: PlayerEvent.AspectRatioChanged
184
+ };
@@ -1,9 +1,10 @@
1
- import { PlayerEventCallback, type SourceConfig } from 'bitmovin-player';
2
1
  import { type ErrorMessageOverlay, type Label, ControlBar, SettingsPanelItem, Button, SeekBar, CastToggleButton, SettingsPanel } from 'bitmovin-player-ui';
3
2
  import { type NPOTag, type PageTracker } from '@npotag/tag';
4
3
  import { ButtonConfig } from 'bitmovin-player-ui/dist/js/framework/components/button';
5
4
  import NpoPlayer from '../npoplayer';
6
5
  import { NpoPlayerAPI } from '../services/npoPlayerAPI/npoPlayerAPI';
6
+ import { NpoPlayerEventCallback } from './events';
7
+ import { SourceConfig } from 'bitmovin-player';
7
8
  export { Technology } from 'bitmovin-player';
8
9
  export interface Profile {
9
10
  profileName: string;
@@ -15,9 +16,9 @@ export interface Segment {
15
16
  duration: number;
16
17
  }
17
18
  export interface EventListeners {
18
- liveStreamHandleTimeChangedCallback?: PlayerEventCallback;
19
- segmentHandleTimeChangedCallback?: PlayerEventCallback;
20
- segmentSeekFunctionCallback?: PlayerEventCallback;
19
+ liveStreamHandleTimeChangedCallback?: NpoPlayerEventCallback;
20
+ segmentHandleTimeChangedCallback?: NpoPlayerEventCallback;
21
+ segmentSeekFunctionCallback?: NpoPlayerEventCallback;
21
22
  }
22
23
  export interface StreamObject {
23
24
  stream: StreamObject_Stream;
@@ -76,19 +77,12 @@ interface StreamObject_Assets {
76
77
  }
77
78
  export interface StreamObject_Metadata {
78
79
  broadcaster?: string;
79
- broadcasters?: string[];
80
- country?: string[];
81
- credits?: string[];
82
80
  description: string;
83
81
  duration?: string;
84
- genre?: string[];
85
- isDubbed?: boolean;
86
- language?: string[];
87
82
  nicam?: string[] | null;
88
83
  poster?: string;
89
84
  posterIsDefault?: boolean;
90
85
  prid?: string;
91
- sourceIP?: string;
92
86
  ageRating?: string;
93
87
  title: string;
94
88
  hasPreroll?: string;
@@ -117,6 +111,7 @@ export interface StreamOptions {
117
111
  useWidevineServerCertificate?: boolean;
118
112
  customFallbackPoster?: string;
119
113
  autoFillTimeLineMarkerDuration?: boolean;
114
+ autoplay?: boolean;
120
115
  }
121
116
  export interface UIComponents {
122
117
  errorMessageOverlay?: ErrorMessageOverlay;
@@ -127,7 +122,7 @@ export interface UIComponents {
127
122
  subtitlesButton?: SettingsPanelItem | undefined;
128
123
  qualityButton?: SettingsPanelItem | undefined;
129
124
  watchFromStartButton?: Button<ButtonConfig> | undefined;
130
- controlbar?: ControlBar | undefined;
125
+ controlBar?: ControlBar | undefined;
131
126
  adbutton?: Button<ButtonConfig> | undefined;
132
127
  adlabel?: Label<{
133
128
  text: string;
@@ -178,6 +173,7 @@ export declare enum CustomMessages {
178
173
  export declare enum NpoPlayerUIVariants {
179
174
  DEFAULT = "default",
180
175
  AUDIO = "audio",
176
+ VERTICAL = "vertical",
181
177
  AD = "ad"
182
178
  }
183
179
  export declare enum ViewMode {
@@ -29,6 +29,7 @@ export var NpoPlayerUIVariants;
29
29
  (function (NpoPlayerUIVariants) {
30
30
  NpoPlayerUIVariants["DEFAULT"] = "default";
31
31
  NpoPlayerUIVariants["AUDIO"] = "audio";
32
+ NpoPlayerUIVariants["VERTICAL"] = "vertical";
32
33
  NpoPlayerUIVariants["AD"] = "ad";
33
34
  })(NpoPlayerUIVariants || (NpoPlayerUIVariants = {}));
34
35
  export var ViewMode;
@@ -1,3 +1,3 @@
1
1
  import { ControlBar } from 'bitmovin-player-ui';
2
2
  import type NpoPlayer from '../../../npoplayer';
3
- export declare function createAudioControlBar(npoplayer: NpoPlayer): ControlBar;
3
+ export declare function createAudioControlBar(npoPlayer: NpoPlayer): ControlBar;
@@ -1,11 +1,11 @@
1
1
  import { ControlBar, Container, SeekBar, SeekBarLabel, VolumeControlButton } from 'bitmovin-player-ui';
2
2
  import { createSeekBar } from '../seekbar';
3
- export function createAudioControlBar(npoplayer) {
3
+ export function createAudioControlBar(npoPlayer) {
4
4
  const seekBar = new SeekBar({ label: new SeekBarLabel() });
5
- npoplayer.uiComponents.seekBar = seekBar;
6
- const controlbar = new ControlBar({
5
+ npoPlayer.uiComponents.seekBar = seekBar;
6
+ const controlBar = new ControlBar({
7
7
  components: [
8
- createSeekBar(npoplayer),
8
+ createSeekBar(npoPlayer),
9
9
  new Container({
10
10
  components: [
11
11
  new VolumeControlButton({
@@ -17,6 +17,6 @@ export function createAudioControlBar(npoplayer) {
17
17
  ],
18
18
  cssClasses: ['ui-controlbar-bottom']
19
19
  });
20
- npoplayer.uiComponents.controlbar = controlbar;
21
- return controlbar;
20
+ npoPlayer.uiComponents.controlBar = controlBar;
21
+ return controlBar;
22
22
  }
@@ -1,3 +1,3 @@
1
1
  import { ControlBar } from 'bitmovin-player-ui';
2
2
  import type NpoPlayer from '../../npoplayer';
3
- export declare function createControlBar(npoplayer: NpoPlayer): ControlBar;
3
+ export declare function createControlBar(npoPlayer: NpoPlayer): ControlBar;
@@ -3,24 +3,26 @@ import { PlayerEvent } from 'bitmovin-player';
3
3
  import { createForwardButton, createRewindButton } from './buttons';
4
4
  import { createSeekBar } from './seekbar';
5
5
  import { createSettingsPanel } from './settingspanel';
6
- export function createControlBar(npoplayer) {
7
- const player = npoplayer.player;
6
+ export function createControlBar(npoPlayer) {
7
+ const player = npoPlayer.player;
8
8
  const rewindButton = createRewindButton(player);
9
9
  const forwardButton = createForwardButton(player);
10
10
  const seekBar = new SeekBar({ label: new SeekBarLabel() });
11
- npoplayer.uiComponents.seekBar = seekBar;
11
+ npoPlayer.uiComponents.seekBar = seekBar;
12
12
  const chromeCastButton = new CastToggleButton({
13
13
  hidden: true
14
14
  });
15
- player?.on(PlayerEvent.CastAvailable, () => {
16
- if (player.isCastAvailable()) {
15
+ const handleCastAvailable = () => {
16
+ player?.off(PlayerEvent.CastAvailable, handleCastAvailable);
17
+ if (player?.isCastAvailable()) {
17
18
  chromeCastButton.show();
18
19
  }
19
- });
20
- const settingsPanel = createSettingsPanel(npoplayer);
21
- const controlbar = new ControlBar({
20
+ };
21
+ player?.on(PlayerEvent.CastAvailable, handleCastAvailable);
22
+ const settingsPanel = createSettingsPanel(npoPlayer);
23
+ const controlBar = new ControlBar({
22
24
  components: [
23
- createSeekBar(npoplayer),
25
+ createSeekBar(npoPlayer),
24
26
  new Container({
25
27
  components: [
26
28
  new PlaybackToggleButton(),
@@ -41,6 +43,6 @@ export function createControlBar(npoplayer) {
41
43
  ],
42
44
  cssClasses: ['ui-controlbar-bottom']
43
45
  });
44
- npoplayer.uiComponents.controlbar = controlbar;
45
- return controlbar;
46
+ npoPlayer.uiComponents.controlBar = controlBar;
47
+ return controlBar;
46
48
  }
@@ -8,7 +8,6 @@ export function createControlBar(player) {
8
8
  const settingsPanel = createSettingsPanel(player);
9
9
  return new ControlBar({
10
10
  components: [
11
- settingsPanel,
12
11
  new Container({
13
12
  components: [
14
13
  new PlaybackTimeLabel({
@@ -15,6 +15,6 @@ export function createSeekBar(npoplayer) {
15
15
  cssClasses: ['total-time']
16
16
  })
17
17
  ],
18
- cssClasses: ['controlbar-top']
18
+ cssClasses: ['controlbar-top', 'controlbar-seekbar']
19
19
  });
20
20
  }
@@ -1,4 +1,4 @@
1
1
  import { SettingsPanel } from 'bitmovin-player-ui';
2
2
  import type NpoPlayer from '../../npoplayer';
3
3
  import { PlayerAPI } from 'bitmovin-player';
4
- export declare function createSettingsPanel(npoplayer: NpoPlayer | PlayerAPI): SettingsPanel;
4
+ export declare function createSettingsPanel(npoPlayer: NpoPlayer | PlayerAPI): SettingsPanel;
@@ -1,53 +1,54 @@
1
- import { SubtitleListBox, ListBox, SettingsPanel, SettingsPanelPage, SettingsPanelPageOpenButton, SettingsPanelPageBackButton, Button, Label, SettingsPanelItem, AudioQualitySelectBox, AudioTrackSelectBox } from 'bitmovin-player-ui';
1
+ import { SubtitleListBox, ListBox, SettingsPanel, SettingsPanelPage, SettingsPanelPageOpenButton, SettingsPanelPageBackButton, SettingsToggleButton, Button, Label, SettingsPanelItem, AudioQualitySelectBox, AudioTrackSelectBox } from 'bitmovin-player-ui';
2
2
  import { localizeKey } from '../../js/utilities/utilities.locale';
3
3
  import { handleSubtitleListBoxItemSelected, handleSpeedListBoxItemSelected, handleQualityListBoxItemSelected } from '../handlers/listboxhandlers';
4
4
  import { PlayerEvent } from 'bitmovin-player';
5
- export function createSettingsPanel(npoplayer) {
6
- const player = 'player' in npoplayer ? npoplayer.player : npoplayer;
5
+ const createListBox = (items) => new ListBox({ items });
6
+ const createPanelPage = (components, cssClasses) => new SettingsPanelPage({ components, cssClasses });
7
+ const createSettingsPanelPageBackButton = (targetPage, container, text, cssClasses) => new SettingsPanelPageBackButton({
8
+ targetPage,
9
+ container,
10
+ text,
11
+ cssClasses
12
+ });
13
+ const createSettingsOpenButton = (targetPage, container, text, cssClasses) => new SettingsPanelPageOpenButton({
14
+ targetPage,
15
+ container,
16
+ text,
17
+ cssClasses
18
+ });
19
+ export function createSettingsPanel(npoPlayer) {
20
+ const player = 'player' in npoPlayer ? npoPlayer.player : npoPlayer;
7
21
  const subtitleListBox = new SubtitleListBox();
8
- const speedListBox = new ListBox({
9
- items: [
10
- { key: '0.25', label: '0.25x' },
11
- { key: '0.5', label: '0.5x' },
12
- { key: '1', label: '1x' },
13
- { key: '1.5', label: '1.5x' },
14
- { key: '2', label: '2x' }
15
- ]
16
- });
22
+ const speedListBox = createListBox([
23
+ { key: '0.25', label: '0.25x' },
24
+ { key: '0.5', label: '0.5x' },
25
+ { key: '1', label: '1x' },
26
+ { key: '1.5', label: '1.5x' },
27
+ { key: '2', label: '2x' }
28
+ ]);
17
29
  const qualityListBox = new ListBox();
18
- const settingsLabel = localizeKey('settings');
19
- const videoqualityLabel = localizeKey('settings.video.quality');
20
- const speedLabel = localizeKey('speed');
21
- const subtitlesLabel = localizeKey('settings.subtitles');
22
30
  const audioqualityLabel = localizeKey('settings.audio.quality');
23
31
  const audiotrackLabel = localizeKey('settings.audio.track');
24
32
  const autoLabel = localizeKey('auto');
33
+ const offLabel = localizeKey('off');
34
+ const settingsLabel = localizeKey('settings');
35
+ const speedLabel = localizeKey('speed');
36
+ const subtitlesLabel = localizeKey('settings.subtitles');
37
+ const videoqualityLabel = localizeKey('settings.video.quality');
25
38
  const settingTriggerClass = 'settings-trigger';
26
39
  const settingsBackButtonClass = 'settings-back-button';
27
40
  const listboxPanelClass = 'listbox-panel';
28
41
  const listboxPagerButtonClass = 'listbox-pager-button';
29
- const subtitlePanelPage = new SettingsPanelPage({
30
- components: [new Button({ cssClass: settingTriggerClass }), new SettingsPanelItem('', subtitleListBox)],
31
- cssClasses: [listboxPanelClass]
32
- });
33
- const speedPanelPage = new SettingsPanelPage({
34
- components: [new Button({ cssClass: settingTriggerClass }), new SettingsPanelItem('', speedListBox)],
35
- cssClasses: [listboxPanelClass]
36
- });
37
- const qualityPanelPage = new SettingsPanelPage({
38
- components: [new Button({ cssClass: settingTriggerClass }), new SettingsPanelItem('', qualityListBox)],
39
- cssClasses: [listboxPanelClass]
40
- });
42
+ const subtitlePanelPage = createPanelPage([new Button({ cssClass: settingTriggerClass }), new SettingsPanelItem('', subtitleListBox)], [listboxPanelClass]);
43
+ const speedPanelPage = createPanelPage([new Button({ cssClass: settingTriggerClass }), new SettingsPanelItem('', speedListBox)], [listboxPanelClass]);
44
+ const qualityPanelPage = createPanelPage([new Button({ cssClass: settingTriggerClass }), new SettingsPanelItem('', qualityListBox)], [listboxPanelClass]);
41
45
  const settingsTriggerButton = new Button({ cssClass: settingTriggerClass });
42
- const mainSettingsPage = new SettingsPanelPage({
43
- components: [
44
- settingsTriggerButton,
45
- new Label({ text: settingsLabel, cssClass: 'setting-header' }),
46
- new SettingsPanelItem(audioqualityLabel, new AudioQualitySelectBox()),
47
- new SettingsPanelItem(audiotrackLabel, new AudioTrackSelectBox())
48
- ],
49
- cssClasses: ['main-panel']
50
- });
46
+ const mainSettingsPage = createPanelPage([
47
+ settingsTriggerButton,
48
+ new Label({ text: settingsLabel, cssClass: 'setting-header' }),
49
+ new SettingsPanelItem(audioqualityLabel, new AudioQualitySelectBox()),
50
+ new SettingsPanelItem(audiotrackLabel, new AudioTrackSelectBox())
51
+ ], ['main-panel']);
51
52
  const onSourceLoaded = () => {
52
53
  player?.off(PlayerEvent.SourceLoaded, onSourceLoaded);
53
54
  checkQualities();
@@ -59,51 +60,35 @@ export function createSettingsPanel(npoplayer) {
59
60
  pageTransitionAnimation: false,
60
61
  hideDelay: -1
61
62
  });
62
- const subtitleSettingsOpenButton = new SettingsPanelPageOpenButton({
63
- targetPage: subtitlePanelPage,
64
- container: settingsPanel,
65
- text: 'Geen',
66
- cssClasses: [listboxPagerButtonClass]
67
- });
68
- const speedSettingsOpenButton = new SettingsPanelPageOpenButton({
69
- targetPage: speedPanelPage,
70
- container: settingsPanel,
71
- text: '1x',
72
- cssClasses: [listboxPagerButtonClass]
73
- });
74
- const qualitySettingsOpenButton = new SettingsPanelPageOpenButton({
75
- targetPage: qualityPanelPage,
76
- container: settingsPanel,
77
- text: 'automatisch',
78
- cssClasses: [listboxPagerButtonClass]
79
- });
63
+ const subtitleSettingsOpenButton = createSettingsOpenButton(subtitlePanelPage, settingsPanel, offLabel, [
64
+ listboxPagerButtonClass
65
+ ]);
66
+ const speedSettingsOpenButton = createSettingsOpenButton(speedPanelPage, settingsPanel, '1x', [
67
+ listboxPagerButtonClass
68
+ ]);
69
+ const qualitySettingsOpenButton = createSettingsOpenButton(qualityPanelPage, settingsPanel, autoLabel, [
70
+ listboxPagerButtonClass
71
+ ]);
80
72
  const subtitlesPanelItem = new SettingsPanelItem(subtitlesLabel, subtitleSettingsOpenButton, { hidden: false });
81
73
  const speedPanelItem = new SettingsPanelItem(speedLabel, speedSettingsOpenButton);
82
74
  const qualityPanelItem = new SettingsPanelItem(videoqualityLabel, qualitySettingsOpenButton, { hidden: false });
83
- mainSettingsPage.addComponent(subtitlesPanelItem);
84
- mainSettingsPage.addComponent(speedPanelItem);
85
- mainSettingsPage.addComponent(qualityPanelItem);
86
- subtitlePanelPage.addComponent(new SettingsPanelPageBackButton({
87
- targetPage: mainSettingsPage,
88
- container: settingsPanel,
89
- text: 'Ondertiteling',
90
- cssClasses: [settingsBackButtonClass]
91
- }));
92
- speedPanelPage.addComponent(new SettingsPanelPageBackButton({
93
- targetPage: mainSettingsPage,
94
- container: settingsPanel,
95
- text: 'Snelheid',
96
- cssClasses: [settingsBackButtonClass]
97
- }));
98
- qualityPanelPage.addComponent(new SettingsPanelPageBackButton({
99
- targetPage: mainSettingsPage,
100
- container: settingsPanel,
101
- text: 'Kwaliteit',
102
- cssClasses: [settingsBackButtonClass]
103
- }));
104
- if ('uiComponents' in npoplayer) {
105
- npoplayer.uiComponents.subtitlesButton = subtitlesPanelItem;
106
- npoplayer.uiComponents.qualityButton = qualityPanelItem;
75
+ for (const item of [
76
+ subtitlesPanelItem,
77
+ speedPanelItem,
78
+ qualityPanelItem,
79
+ new SettingsToggleButton({ settingsPanel })
80
+ ])
81
+ mainSettingsPage.addComponent(item);
82
+ for (const [index, panelPage] of [subtitlePanelPage, speedPanelPage, qualityPanelPage].entries()) {
83
+ const labels = [subtitlesLabel, speedLabel, videoqualityLabel];
84
+ panelPage.addComponent(createSettingsPanelPageBackButton(mainSettingsPage, settingsPanel, labels[index], [
85
+ settingsBackButtonClass
86
+ ]));
87
+ panelPage.addComponent(new SettingsToggleButton({ settingsPanel }));
88
+ }
89
+ if ('uiComponents' in npoPlayer) {
90
+ npoPlayer.uiComponents.subtitlesButton = subtitlesPanelItem;
91
+ npoPlayer.uiComponents.qualityButton = qualityPanelItem;
107
92
  }
108
93
  subtitleListBox.onItemSelected.subscribe(handleSubtitleListBoxItemSelected(subtitleSettingsOpenButton, settingsPanel, mainSettingsPage));
109
94
  if (player) {
@@ -112,15 +97,15 @@ export function createSettingsPanel(npoplayer) {
112
97
  qualityListBox.selectItem('auto');
113
98
  qualityListBox.onItemSelected.subscribe(handleQualityListBoxItemSelected(player, qualitySettingsOpenButton, settingsPanel, mainSettingsPage));
114
99
  }
115
- if (npoplayer.uiComponents) {
116
- const uiComponents = npoplayer.uiComponents;
100
+ if (npoPlayer.uiComponents) {
101
+ const uiComponents = npoPlayer.uiComponents;
117
102
  uiComponents.settingsPanels = uiComponents.settingsPanels
118
103
  ? [...uiComponents.settingsPanels, settingsPanel]
119
104
  : [settingsPanel];
120
105
  }
121
106
  const checkSubtitles = () => {
122
107
  const subtitles = player?.subtitles?.list();
123
- if (subtitles != undefined && subtitles.length > 0) {
108
+ if (subtitles && subtitles.length > 0) {
124
109
  subtitlesPanelItem.show();
125
110
  }
126
111
  else {
@@ -131,9 +116,8 @@ export function createSettingsPanel(npoplayer) {
131
116
  const availableVideoQualities = player?.getAvailableVideoQualities();
132
117
  qualityListBox.clearItems();
133
118
  if (availableVideoQualities?.length) {
134
- for (const quality of availableVideoQualities) {
119
+ for (const quality of availableVideoQualities)
135
120
  qualityListBox.addItem(quality.id, quality.label ?? 'test');
136
- }
137
121
  qualityListBox.addItem('auto', autoLabel);
138
122
  qualityListBox.selectItem('auto');
139
123
  qualityPanelItem.show();
@@ -6,10 +6,13 @@ export function createTopBar(npoplayer) {
6
6
  const chromeCastButton = new CastToggleButton({
7
7
  hidden: true
8
8
  });
9
- player?.on(PlayerEvent.CastAvailable, () => {
10
- if (player.isCastAvailable())
9
+ const handleCastAvailable = () => {
10
+ player?.off(PlayerEvent.CastAvailable, handleCastAvailable);
11
+ if (player?.isCastAvailable()) {
11
12
  chromeCastButton.show();
12
- });
13
+ }
14
+ };
15
+ player?.on(PlayerEvent.CastAvailable, handleCastAvailable);
13
16
  const settingsPanel = createSettingsPanel(npoplayer);
14
17
  return new TitleBar({
15
18
  components: [
@@ -0,0 +1,3 @@
1
+ import { ControlBar } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ export declare function createVerticalVideoControlBar(npoPlayer: NpoPlayer): ControlBar;
@@ -0,0 +1,34 @@
1
+ import { ControlBar, Container, SeekBar, SeekBarLabel, PlaybackToggleButton, SettingsToggleButton, FullscreenToggleButton, VolumeControlButton } from 'bitmovin-player-ui';
2
+ import { createForwardButton, createRewindButton } from '../buttons';
3
+ import { createSeekBar } from '../seekbar';
4
+ import { createSettingsPanel } from '../settingspanel';
5
+ export function createVerticalVideoControlBar(npoPlayer) {
6
+ const player = npoPlayer.player;
7
+ const rewindButton = createRewindButton(player);
8
+ const forwardButton = createForwardButton(player);
9
+ const seekBar = new SeekBar({ label: new SeekBarLabel() });
10
+ npoPlayer.uiComponents.seekBar = seekBar;
11
+ const settingsPanel = createSettingsPanel(npoPlayer);
12
+ const settingsContainer = new Container({
13
+ components: [new SettingsToggleButton({ settingsPanel }), settingsPanel],
14
+ cssClasses: ['vertical-video-controlbar-settings']
15
+ });
16
+ const controlBarButtonsContainer = new Container({
17
+ components: [
18
+ new VolumeControlButton({
19
+ vertical: true
20
+ }),
21
+ rewindButton,
22
+ new PlaybackToggleButton(),
23
+ forwardButton,
24
+ new FullscreenToggleButton()
25
+ ],
26
+ cssClasses: ['vertical-video-controlbar-buttons']
27
+ });
28
+ const controlBar = new ControlBar({
29
+ components: [settingsContainer, createSeekBar(npoPlayer), controlBarButtonsContainer],
30
+ cssClasses: ['ui-controlbar-bottom']
31
+ });
32
+ npoPlayer.uiComponents.controlBar = controlBar;
33
+ return controlBar;
34
+ }
@@ -1,4 +1,2 @@
1
- import { PlayerContext, type StreamObject, type StreamOptions } from '../../types/interfaces';
2
- import { PlayerAPI, SourceConfig } from 'bitmovin-player';
3
- import { UIManager } from 'bitmovin-player-ui';
4
- export declare function processStream(streamObject: StreamObject | undefined, container: HTMLElement, streamOptions: StreamOptions | undefined, player: PlayerAPI, uiManager: UIManager | undefined, sourceConfig: SourceConfig, playerContext: PlayerContext): void;
1
+ import { PlayerContext } from '../../types/interfaces';
2
+ export declare function processStream(playerContext: PlayerContext): void;