@latest-thinking/lt-player 1.2.0 → 2.0.0-a

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 (205) hide show
  1. package/.editorconfig +1 -1
  2. package/.node-version +1 -0
  3. package/.nvmrc +1 -0
  4. package/README.md +162 -0
  5. package/dist/main.js +24375 -0
  6. package/package.json +31 -67
  7. package/tsconfig.json +2 -1
  8. package/vite-dev.config.mts +35 -0
  9. package/vite.config.mts +40 -0
  10. package/ README.md +0 -270
  11. package/.babelrc +0 -11
  12. package/.eslintrc.js +0 -6
  13. package/dist/css/lt-player-main.css +0 -3
  14. package/dist/css/lt-player-main.css.map +0 -1
  15. package/dist/fonts/0574e80a2483be7b033e.otf +0 -0
  16. package/dist/fonts/34274fbfb2f270b8d53b.otf +0 -0
  17. package/dist/fonts/80acced0ba3630ee652b.otf +0 -0
  18. package/dist/fonts/8ccea4947561e7008d19.otf +0 -0
  19. package/dist/fonts/d355445ed7d61b887e58.otf +0 -0
  20. package/dist/js/lt-player-main.js +0 -3
  21. package/dist/js/lt-player-main.js.LICENSE.txt +0 -9
  22. package/dist/js/lt-player-main.js.map +0 -1
  23. package/examples/basic.html +0 -35
  24. package/examples/lt-page-with-player.html +0 -3529
  25. package/examples/lt-page-with-player_files/Weiskopf_Coverphoto.jpg +0 -0
  26. package/examples/lt-page-with-player_files/ajax-progress.module.css +0 -49
  27. package/examples/lt-page-with-player_files/align.module.css +0 -32
  28. package/examples/lt-page-with-player_files/announce.js +0 -49
  29. package/examples/lt-page-with-player_files/autocomplete-loading.module.css +0 -22
  30. package/examples/lt-page-with-player_files/autocomplete.css +0 -16
  31. package/examples/lt-page-with-player_files/bootstrap.css +0 -22691
  32. package/examples/lt-page-with-player_files/clearfix.module.css +0 -15
  33. package/examples/lt-page-with-player_files/container-inline.module.css +0 -16
  34. package/examples/lt-page-with-player_files/cookiesjsr.min.css +0 -10
  35. package/examples/lt-page-with-player_files/core.css +0 -97
  36. package/examples/lt-page-with-player_files/details.module.css +0 -10
  37. package/examples/lt-page-with-player_files/fieldgroup.module.css +0 -9
  38. package/examples/lt-page-with-player_files/hidden.module.css +0 -53
  39. package/examples/lt-page-with-player_files/himme-alexander-beyond_0.jpg +0 -0
  40. package/examples/lt-page-with-player_files/item-list.module.css +0 -19
  41. package/examples/lt-page-with-player_files/js.module.css +0 -22
  42. package/examples/lt-page-with-player_files/latest_thinking.style.css +0 -6496
  43. package/examples/lt-page-with-player_files/logo-small.png +0 -0
  44. package/examples/lt-page-with-player_files/menu.css +0 -64
  45. package/examples/lt-page-with-player_files/nowrap.module.css +0 -8
  46. package/examples/lt-page-with-player_files/paragraphs.unpublished.css +0 -3
  47. package/examples/lt-page-with-player_files/position-container.module.css +0 -8
  48. package/examples/lt-page-with-player_files/progress.module.css +0 -51
  49. package/examples/lt-page-with-player_files/radix.style.css +0 -1
  50. package/examples/lt-page-with-player_files/reset-appearance.module.css +0 -15
  51. package/examples/lt-page-with-player_files/resize.module.css +0 -21
  52. package/examples/lt-page-with-player_files/search_api_autocomplete.css +0 -41
  53. package/examples/lt-page-with-player_files/sticky-header.module.css +0 -13
  54. package/examples/lt-page-with-player_files/system-status-counter.css +0 -30
  55. package/examples/lt-page-with-player_files/system-status-report-counters.css +0 -27
  56. package/examples/lt-page-with-player_files/system-status-report-general-info.css +0 -14
  57. package/examples/lt-page-with-player_files/tabledrag.module.css +0 -98
  58. package/examples/lt-page-with-player_files/tablesort.module.css +0 -19
  59. package/examples/lt-page-with-player_files/theme.css +0 -446
  60. package/examples/lt-page-with-player_files/thumbnail_MPI_CBS_Eingangsbereich.jpg +0 -0
  61. package/examples/lt-page-with-player_files/tree-child.module.css +0 -18
  62. package/examples/lt-page-with-player_files/widget-min.js +0 -10
  63. package/examples/lt-website.html +0 -76
  64. package/examples/portrait-with-subtitles.html +0 -81
  65. package/examples/samples/vtt/Pahl-Kerstin-Maria-MAIN-20230320.vtt +0 -765
  66. package/examples/samples/vtt/Sobolev-Anton-Subtitles-20230518_0.vtt +0 -352
  67. package/examples/samples/vtt/demo.vtt +0 -7
  68. package/src/assets/css/sample.css +0 -12
  69. package/src/assets/fonts/museo/MuseoSans-100.otf +0 -0
  70. package/src/assets/fonts/museo/MuseoSans-300.otf +0 -0
  71. package/src/assets/fonts/museo/MuseoSans-500.otf +0 -0
  72. package/src/assets/fonts/museo/MuseoSans-700.otf +0 -0
  73. package/src/assets/fonts/museo/MuseoSans-900.otf +0 -0
  74. package/src/assets/icons/arrow-down.svg +0 -8
  75. package/src/assets/icons/arrow-left.svg +0 -8
  76. package/src/assets/icons/chevron-down-full.svg +0 -7
  77. package/src/assets/icons/chevron-down.svg +0 -7
  78. package/src/assets/icons/chevron-up-full.svg +0 -7
  79. package/src/assets/icons/chevron-up.svg +0 -7
  80. package/src/assets/icons/close.svg +0 -8
  81. package/src/assets/icons/compass.svg +0 -8
  82. package/src/assets/icons/external-link.svg +0 -9
  83. package/src/assets/icons/facebook.svg +0 -7
  84. package/src/assets/icons/fast-backward.svg +0 -8
  85. package/src/assets/icons/fast-forward.svg +0 -8
  86. package/src/assets/icons/file-text.svg +0 -11
  87. package/src/assets/icons/home.svg +0 -8
  88. package/src/assets/icons/logo-big.png +0 -0
  89. package/src/assets/icons/logo.png +0 -0
  90. package/src/assets/icons/maximize.svg +0 -7
  91. package/src/assets/icons/mini-player.svg +0 -8
  92. package/src/assets/icons/minimize.svg +0 -7
  93. package/src/assets/icons/more-vertical.svg +0 -9
  94. package/src/assets/icons/mute.svg +0 -9
  95. package/src/assets/icons/pause.svg +0 -8
  96. package/src/assets/icons/play.svg +0 -8
  97. package/src/assets/icons/search.svg +0 -8
  98. package/src/assets/icons/settings.svg +0 -8
  99. package/src/assets/icons/share.svg +0 -11
  100. package/src/assets/icons/skip-backward.svg +0 -8
  101. package/src/assets/icons/skip-forward.svg +0 -8
  102. package/src/assets/icons/speed-1-5.svg +0 -7
  103. package/src/assets/icons/speed-1.svg +0 -7
  104. package/src/assets/icons/speed-2.svg +0 -7
  105. package/src/assets/icons/subtitles.svg +0 -7
  106. package/src/assets/icons/twitter.svg +0 -7
  107. package/src/assets/icons/university.svg +0 -9
  108. package/src/assets/icons/user.svg +0 -8
  109. package/src/assets/icons/volume-1.svg +0 -15
  110. package/src/assets/icons/volume-2.svg +0 -15
  111. package/src/assets/icons/volume-3.svg +0 -15
  112. package/src/assets/sass/abstracts/_mixins.scss +0 -145
  113. package/src/assets/sass/abstracts/_placeholders.scss +0 -112
  114. package/src/assets/sass/abstracts/_variables.scss +0 -68
  115. package/src/assets/sass/abstracts/all.scss +0 -4
  116. package/src/assets/sass/app.scss +0 -99
  117. package/src/assets/sass/components/_all.scss +0 -6
  118. package/src/assets/sass/components/_buttons.scss +0 -1
  119. package/src/assets/sass/components/_images.scss +0 -4
  120. package/src/assets/sass/components/_loader.scss +0 -187
  121. package/src/assets/sass/components/_modal.scss +0 -365
  122. package/src/assets/sass/components/_range.scss +0 -33
  123. package/src/assets/sass/core/_all.scss +0 -13
  124. package/src/assets/sass/core/_fonts.scss +0 -55
  125. package/src/assets/sass/core/_player.scss +0 -71
  126. package/src/assets/sass/core/_typography.scss +0 -13
  127. package/src/assets/sass/layout/_all.scss +0 -3
  128. package/src/assets/sass/layout/_grid.scss +0 -0
  129. package/src/assets/sass/sections/_additional-info.scss +0 -90
  130. package/src/assets/sass/sections/_all.scss +0 -6
  131. package/src/assets/sass/sections/_control.scss +0 -122
  132. package/src/assets/sass/sections/_poster.scss +0 -319
  133. package/src/assets/sass/sections/_settings.scss +0 -504
  134. package/src/assets/sass/sections/_share.scss +0 -250
  135. package/src/assets/sass/sections/_subtitles.scss +0 -85
  136. package/src/assets/sass/sections/controllers/_all.scss +0 -4
  137. package/src/assets/sass/sections/controllers/_botom.scss +0 -522
  138. package/src/assets/sass/sections/controllers/_mini-player.scss +0 -169
  139. package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +0 -260
  140. package/src/assets/sass/sections/controllers/_top.scss +0 -169
  141. package/src/components/LTPlayerDevMethode.ts +0 -192
  142. package/src/components/LTPlayerEventsManager.ts +0 -31
  143. package/src/components/LTPlayerHls.ts +0 -38
  144. package/src/components/LTPlayerManager.ts +0 -266
  145. package/src/components/LTPlayerSettingsManager.ts +0 -117
  146. package/src/components/LTPlayerSetup.ts +0 -286
  147. package/src/components/LTPlayerStatusFeedback.ts +0 -76
  148. package/src/components/LTPlayerStorage.ts +0 -58
  149. package/src/components/LTPlayerType.ts +0 -371
  150. package/src/components/LTPlayerUpdate.ts +0 -61
  151. package/src/components/addInfo/LTPLayerAddInfoResizeManager.ts +0 -15
  152. package/src/components/addInfo/LTPlayerAddInfoDesktop.ts +0 -127
  153. package/src/components/addInfo/LTPlayerAddInfoManager.ts +0 -230
  154. package/src/components/addInfo/LTPlayerAddInfoMobile.ts +0 -113
  155. package/src/components/captions/LTPlayerCaptions.ts +0 -80
  156. package/src/components/config/LTPlayerConfig.ts +0 -280
  157. package/src/components/config/LTPlayerConfigProcessor.ts +0 -604
  158. package/src/components/controls/LTPlayerChapters.ts +0 -285
  159. package/src/components/controls/LTPlayerControls.ts +0 -57
  160. package/src/components/controls/LTPlayerControlsEvents.ts +0 -946
  161. package/src/components/controls/LTPlayerMini.ts +0 -285
  162. package/src/components/controls/LTPlayerSettingsControlsManager.ts +0 -60
  163. package/src/components/controls/settings/LTPlayerCommonSettingsControllers.ts +0 -71
  164. package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +0 -135
  165. package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +0 -211
  166. package/src/components/events/LTPlayer.ts +0 -194
  167. package/src/components/events/LTPlayerCommon.ts +0 -252
  168. package/src/components/events/LTPlayerDesktop.ts +0 -222
  169. package/src/components/events/LTPlayerMobile.ts +0 -243
  170. package/src/components/poster/LTPlayerPoster.ts +0 -78
  171. package/src/components/poster/LTPlayerPosterEvents.ts +0 -172
  172. package/src/components/poster/LTPlayerPosterManager.ts +0 -46
  173. package/src/components/poster/LTPlayerPosterPreload.ts +0 -51
  174. package/src/components/poster/LTPlayerPosterPreloadEvents.ts +0 -152
  175. package/src/components/share/LTPlayerShareDesktop.ts +0 -131
  176. package/src/components/share/LTPlayerShareEvents.ts +0 -64
  177. package/src/components/share/LTPlayerShareManager.ts +0 -58
  178. package/src/components/share/LTPlayerShareMobile.ts +0 -154
  179. package/src/components/video/LTPlayerVideo.ts +0 -49
  180. package/src/global/controllers/LTPlayerController.ts +0 -58
  181. package/src/global/interfaces/EventsInterfaces.ts +0 -11
  182. package/src/global/interfaces/SettingsControlsInterfaces.ts +0 -3
  183. package/src/global/interfaces/TypeInterface.ts +0 -9
  184. package/src/global/types/ModuleTypes.d.ts +0 -35
  185. package/src/global/types/ModuleViews.d.ts +0 -13
  186. package/src/global/types/ModuleWindow.d.ts +0 -12
  187. package/src/global/types/Modules.d.ts +0 -44
  188. package/src/index.ts +0 -10
  189. package/src/json-schema/player-config.json +0 -16
  190. package/src/services/Helper.ts +0 -147
  191. package/src/services/IconsService.ts +0 -124
  192. package/src/services/LTPlayerRotateDeviceService.ts +0 -15
  193. package/src/services/LoaderService.ts +0 -21
  194. package/src/services/ResizeService.ts +0 -352
  195. package/src/services/TemplateService.ts +0 -136
  196. package/src/services/ValidatorService.ts +0 -31
  197. package/src/views/additionalInfo.handlebars +0 -103
  198. package/src/views/background.handlebars +0 -5
  199. package/src/views/controls.handlebars +0 -390
  200. package/src/views/onloadPoster.handlebars +0 -1
  201. package/src/views/poster.handlebars +0 -69
  202. package/src/views/settings.handlebars +0 -31
  203. package/src/views/settings.mobile.handlebars +0 -22
  204. package/src/views/share.handlebars +0 -101
  205. package/src/views/template.handlebars +0 -15
@@ -1,946 +0,0 @@
1
- import {LTPlayer} from "../LTPlayerType";
2
- import {plyr} from "../../global/types/ModuleTypes";
3
- import * as events from "events";
4
-
5
- export namespace LTPlayerControlsEvents {
6
-
7
- export class Common {
8
-
9
- backwardRewind = {
10
-
11
- getSelectors(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
12
-
13
- let selectors = {
14
- playerContainer: instance.plyr.elements.container,
15
- playerControlsContainer: instance.plyr.elements.controls,
16
- forwardArea: instance.plyr.elements.controls.querySelector('.lt-player-forward-area'),
17
- rewindArea: instance.plyr.elements.controls.querySelector('.lt-player-rewind-area'),
18
- forwardAnimation: instance.plyr.elements.controls.querySelector('.lt-player-forward'),
19
- rewindAnimation: instance.plyr.elements.controls.querySelector('.lt-player-rewind'),
20
- forwardAreaBackground: null as Element,
21
- rewindAreaBackground: null as Element,
22
- forwardAnimationBackground: null as Element,
23
- rewindAnimationBackground: null as Element,
24
-
25
- }
26
-
27
- if (instance.playerConfig.getDevice() === 'mobile') {
28
- selectors.forwardAreaBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-forward-area')
29
- selectors.rewindAreaBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-rewind-area')
30
- selectors.forwardAnimationBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-forward')
31
- selectors.rewindAnimationBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-rewind')
32
- }
33
-
34
- return selectors
35
- },
36
-
37
- updateCurrentTime(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, time: number) {
38
- if (Math.sign(time)) {
39
- instance.plyr.currentTime += time;
40
- } else {
41
- instance.plyr.currentTime -= time;
42
- }
43
- },
44
-
45
- playPause(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
46
-
47
- const icons = instance.iconService.getIconsByComponent('playPause') as { play: string, pause: string };
48
- const playerStateInfo = instance.plyr.elements.controls.querySelector('.player-state');
49
- const iconSelector: HTMLImageElement = playerStateInfo.querySelector('.player-state__icon');
50
-
51
- const removeStateButtons = () => {
52
- setTimeout(() => {
53
- playerStateInfo.classList.remove('active');
54
- }, 200)
55
- }
56
-
57
- if (instance.plyr.playing) {
58
- iconSelector.src = icons.pause;
59
- playerStateInfo.classList.add('active');
60
- instance.plyr.togglePlay(false);
61
- removeStateButtons();
62
- } else {
63
- iconSelector.src = icons.play;
64
- playerStateInfo.classList.add('active');
65
- instance.plyr.togglePlay(true);
66
- removeStateButtons();
67
- }
68
- },
69
-
70
- animateNotificationIn(selector: Element) {
71
- selector.classList.add('animate-in');
72
- },
73
-
74
- animateNotificationOut(selector: Element) {
75
- selector.classList.remove('animate-in');
76
- },
77
- }
78
-
79
- checkTitleBreakWord(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
80
- const controlsSelector = instance.plyr.elements.controls;
81
- const videoTitle = controlsSelector.querySelector('.poster-paragraph__content');
82
- const readButton = controlsSelector.querySelector('.poster-paragraph__button');
83
-
84
- if (!videoTitle) {
85
- return;
86
- }
87
-
88
- if (videoTitle.scrollHeight <= videoTitle.clientHeight) {
89
- readButton.classList.add('d-none');
90
- return;
91
- }
92
-
93
- const heightContent = videoTitle.scrollHeight;
94
-
95
- const openHide = () => {
96
-
97
- let inlineStyleElement = videoTitle as unknown as ElementCSSInlineStyle
98
-
99
- if (videoTitle.classList.contains('open-content')) {
100
- inlineStyleElement.style.maxHeight = null;
101
- setTimeout(() => {
102
- videoTitle.classList.remove('open-content');
103
- }, 300)
104
- readButton.innerHTML = 'Read more'
105
- } else {
106
- readButton.innerHTML = 'Hide'
107
- inlineStyleElement.style.maxHeight = `${heightContent}px`;
108
- videoTitle.classList.add('open-content');
109
- }
110
- }
111
-
112
- if (readButton) {
113
-
114
- if (instance.playerConfig.getDevice() === 'mobile') {
115
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(readButton);
116
- mobileEvent.on('singletap', function LTPlayerMobileShowHideTitle() {
117
- openHide();
118
- instance.playerControl.mobileEvents.showControls(instance)
119
- })
120
- } else {
121
- readButton.addEventListener('click', function LTPlayerTitleButton() {
122
- openHide();
123
- })
124
- }
125
- }
126
- }
127
-
128
- playPauseIconTimeUpdate(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
129
-
130
- const player = instance.plyr;
131
-
132
- let playerContainer = player.elements.container;
133
-
134
- const playIcon = playerContainer.querySelector('.bottom-controller__play-icon');
135
- const pauseIcon = playerContainer.querySelector('.bottom-controller__pause-icon');
136
-
137
- if (player.isEmbed) {
138
- player.embed.getPaused().then((paused: any) => {
139
- if (paused) {
140
- pauseIcon.classList.add('d-none');
141
- playIcon.classList.remove('d-none');
142
- } else {
143
- playIcon.classList.add('d-none');
144
- pauseIcon.classList.remove('d-none');
145
- }
146
- })
147
- } else {
148
- if (player.playing) {
149
- playIcon.classList.add('d-none');
150
- pauseIcon.classList.remove('d-none');
151
- } else {
152
- pauseIcon.classList.add('d-none');
153
- playIcon.classList.remove('d-none');
154
- }
155
- }
156
-
157
- }
158
-
159
- subtitlesShow(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
160
- const playerContainer = instance.plyr.elements.container;
161
- const playerControls = instance.plyr.elements.controls;
162
-
163
- const captions = playerContainer.querySelector('.plyr__captions');
164
-
165
- let checkCaptions = (instance.plyr as plyr).captions.active;
166
-
167
- if (!checkCaptions) {
168
- return;
169
- }
170
-
171
- if (!captions) {
172
- return;
173
- }
174
-
175
- if (!playerControls.classList.contains('plyr__controls-enable')) {
176
- if (captions.classList.contains('d-none')) {
177
- captions.classList.remove('d-none');
178
- }
179
- }
180
- }
181
-
182
- subtitlesHide(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
183
- const playerContainer = instance.plyr.elements.container;
184
- const playerControls = instance.plyr.elements.controls;
185
- const captions = playerContainer.querySelector('.plyr__captions');
186
-
187
- let checkCaptions = (instance.plyr as plyr).captions.active;
188
-
189
- if (!checkCaptions) {
190
- return;
191
- }
192
-
193
- if (!captions) {
194
- return;
195
- }
196
-
197
- if (playerControls.classList.contains('plyr__controls-enable')) {
198
- if (!captions.classList.contains('d-none')) {
199
- captions.classList.add('d-none');
200
- }
201
- }
202
- }
203
-
204
- showHideText(visible: boolean, controls: HTMLElement) {
205
- const textControlsElement = controls.querySelector('.lt-player-video-content');
206
-
207
- if (textControlsElement) {
208
- if (visible) {
209
- if (!textControlsElement.classList.contains('lt-player-video-content-enable')) {
210
- textControlsElement.classList.add('lt-player-video-content-enable')
211
- }
212
- } else {
213
- textControlsElement.classList.remove('lt-player-video-content-enable')
214
- }
215
- }
216
- }
217
-
218
- showHideSeekBar(visible: boolean, controls: HTMLElement) {
219
- const seekBarControlsElement = controls.querySelector('.plyr__progress--wrapper');
220
-
221
- if (seekBarControlsElement) {
222
- if (visible) {
223
- if (!seekBarControlsElement.classList.contains('plyr__progress--wrapper-enable')) {
224
- seekBarControlsElement.classList.add('plyr__progress--wrapper-enable')
225
- }
226
- } else {
227
- seekBarControlsElement.classList.remove('plyr__progress--wrapper-enable')
228
- }
229
- }
230
- }
231
-
232
- showHideBottomControls(visible: boolean, controls: HTMLElement) {
233
- const bottomControlsElement = controls.querySelector('.bottom-controller');
234
-
235
- if (bottomControlsElement) {
236
- if (visible) {
237
- if (!bottomControlsElement.classList.contains('bottom-controller-enable')) {
238
- bottomControlsElement.classList.add('bottom-controller-enable')
239
- }
240
- } else {
241
- bottomControlsElement.classList.remove('bottom-controller-enable')
242
- }
243
- }
244
- }
245
-
246
- showHideAllControls(visible: boolean, controls: HTMLElement) {
247
- this.showHideText(visible, controls);
248
- this.showHideSeekBar(visible, controls);
249
- this.showHideBottomControls(visible, controls);
250
- }
251
-
252
- }
253
-
254
- export class Desktop {
255
-
256
- common: Common
257
-
258
- constructor() {
259
- this.common = new Common();
260
- }
261
-
262
- titleLineBreak(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
263
- return;
264
- /*Remove title break*/
265
- // this.common.checkTitleBreakWord(instance);
266
- /**/
267
- }
268
-
269
-
270
- showHide(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
271
- const controls = instance.plyr.elements.controls;
272
- const commonInstance = this.common;
273
- controls.classList.add('plyr__controls-enable');
274
- instance.statusFeedbackService.setControlsVisible()
275
-
276
- commonInstance.showHideText(true, controls);
277
- commonInstance.showHideSeekBar(true, controls);
278
- commonInstance.showHideBottomControls(true, controls);
279
-
280
- let timerText: NodeJS.Timeout = null;
281
- let timerSeekBar: NodeJS.Timeout = null;
282
- let timerBottomControls: NodeJS.Timeout = null;
283
-
284
- controls.addEventListener('mouseover', function () {
285
-
286
- if (timerText) {
287
- clearTimeout(timerText);
288
- }
289
-
290
- if (timerSeekBar) {
291
- clearTimeout(timerSeekBar);
292
- }
293
-
294
- if (timerBottomControls) {
295
- clearTimeout(timerBottomControls);
296
- }
297
-
298
- if (instance.plyr.paused) {
299
- commonInstance.showHideAllControls(true, controls);
300
- return;
301
- }
302
-
303
- if (!instance.playerConfig.isPinTextControls()) {
304
- commonInstance.showHideText(true, controls);
305
- }
306
-
307
- if (!instance.playerConfig.isPinSeekBarControls()) {
308
- commonInstance.showHideSeekBar(true, controls);
309
- }
310
-
311
- if (!instance.playerConfig.isPinBottomControls()) {
312
- commonInstance.showHideBottomControls(true, controls);
313
- }
314
-
315
- })
316
-
317
-
318
- controls.addEventListener('mouseleave', function () {
319
- if (instance.plyr.paused) {
320
- commonInstance.showHideAllControls(true, controls);
321
- return;
322
- }
323
-
324
- if (!instance.playerConfig.isPinTextControls()) {
325
- timerText = setTimeout(() => {
326
- commonInstance.showHideText(false, controls);
327
- }, 5000)
328
- }
329
-
330
- if (!instance.playerConfig.isPinSeekBarControls()) {
331
- timerSeekBar = setTimeout(() => {
332
- commonInstance.showHideSeekBar(false, controls);
333
-
334
- }, 5000)
335
- }
336
- if (!instance.playerConfig.isPinBottomControls()) {
337
- timerBottomControls = setTimeout(() => {
338
- instance.statusFeedbackService.clearControlsVisible()
339
- commonInstance.showHideBottomControls(false, controls);
340
- }, 5000)
341
- }
342
- })
343
- }
344
-
345
- fullScreenButtons(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
346
- let playerControlsSelector = instance.plyr.elements.controls;
347
-
348
- const fullScreenButtonContainer = playerControlsSelector.querySelector('.fullscreen-custom-control');
349
-
350
- if (fullScreenButtonContainer) {
351
- fullScreenButtonContainer.addEventListener('click', function LTPlayerFullScreenDesk(event) {
352
- event.preventDefault();
353
- instance.plyr.fullscreen.toggle();
354
- })
355
- }
356
- }
357
-
358
- fullscreenIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
359
-
360
- let playerControls = instance.plyr.elements.controls;
361
- const fullScreenButtonContainer = playerControls.querySelector('.fullscreen-custom-control');
362
-
363
- switch (type) {
364
- case 'enterfullscreen':
365
- fullScreenButtonContainer.querySelector('.maximize').classList.add('d-none');
366
- fullScreenButtonContainer.querySelector('.minimize').classList.remove('d-none');
367
- playerControls.classList.add('progress-width-mobile');
368
- break
369
- case 'exitfullscreen':
370
- fullScreenButtonContainer.querySelector('.maximize').classList.remove('d-none');
371
- fullScreenButtonContainer.querySelector('.minimize').classList.add('d-none');
372
- playerControls.classList.remove('progress-width-mobile');
373
- break
374
- }
375
- }
376
-
377
- playPauseIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
378
- let common = this.common;
379
- switch (type) {
380
- case 'timeupdate':
381
- this.common.playPauseIconTimeUpdate(instance);
382
- break
383
- case 'ready':
384
- const playButton = instance.plyr.elements.controls.querySelector('.play-button');
385
- if (playButton) {
386
- playButton.addEventListener('click', function LTPlayerPlayButton() {
387
- if (instance.plyr.playing) {
388
- instance.plyr.togglePlay(false);
389
- } else {
390
- instance.plyr.togglePlay(true);
391
- }
392
- common.playPauseIconTimeUpdate(instance);
393
- })
394
- }
395
- }
396
- }
397
-
398
- backwardForward(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
399
-
400
- let common = this.common;
401
- const selectors = common.backwardRewind.getSelectors(instance);
402
-
403
- if (selectors.forwardArea) {
404
- selectors.forwardArea.addEventListener('dblclick', function LTPlayerForwardDbClick(event) {
405
- event.preventDefault();
406
-
407
- const playerState = selectors.playerControlsContainer.querySelector('.lt-player-notification__notification-button-state');
408
-
409
- if (playerState && !playerState.classList.contains('d-none')) {
410
- playerState.classList.add('d-none');
411
- }
412
-
413
- common.backwardRewind.animateNotificationIn(selectors.forwardAnimation);
414
- common.backwardRewind.updateCurrentTime(instance, 10);
415
- setTimeout(() => {
416
- common.backwardRewind.animateNotificationOut(selectors.forwardAnimation);
417
- playerState.classList.remove('d-none');
418
- }, 500)
419
- })
420
-
421
- selectors.forwardArea.addEventListener('click', function LTPlayerForwardClick(event) {
422
- event.preventDefault();
423
-
424
- setTimeout(() => {
425
- const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');
426
-
427
- if (volumeControlArea) {
428
- if (!volumeControlArea.classList.contains('volume-control-enable')) {
429
- common.backwardRewind.playPause(instance);
430
- }
431
- }
432
- }, 100)
433
-
434
-
435
- })
436
- }
437
-
438
- if (selectors.rewindArea) {
439
-
440
- selectors.rewindArea.addEventListener('dblclick', function LTPlayerRewindDbClick(event) {
441
- event.preventDefault();
442
-
443
- const playerState = selectors.playerControlsContainer.querySelector('.lt-player-notification__notification-button-state');
444
-
445
- if (playerState && !playerState.classList.contains('d-none')) {
446
- playerState.classList.add('d-none');
447
- }
448
-
449
-
450
- common.backwardRewind.animateNotificationIn(selectors.rewindAnimation);
451
- common.backwardRewind.updateCurrentTime(instance, -10);
452
- setTimeout(() => {
453
- common.backwardRewind.animateNotificationOut(selectors.rewindAnimation);
454
- playerState.classList.remove('d-none');
455
- }, 500)
456
- })
457
-
458
- selectors.rewindArea.addEventListener('click', function LTPlayerRewindClick(event) {
459
- event.preventDefault();
460
-
461
- setTimeout(() => {
462
- const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');
463
-
464
- if (volumeControlArea) {
465
- if (!volumeControlArea.classList.contains('volume-control-enable')) {
466
- common.backwardRewind.playPause(instance);
467
- }
468
- }
469
- }, 100)
470
-
471
- })
472
-
473
- }
474
- }
475
-
476
- backwardForwardSeconds(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
477
- let playerControlsContainer = instance.plyr.elements.controls;
478
- let forward = playerControlsContainer.querySelector('.skip-forward-seconds');
479
- let backward = playerControlsContainer.querySelector('.skip-backward-seconds');
480
-
481
-
482
- if (forward) {
483
- forward.addEventListener('click', function LTPlayerForwardSeconds(event) {
484
- event.preventDefault();
485
- instance.plyr.currentTime += 10;
486
- })
487
- }
488
-
489
- if (backward) {
490
- backward.addEventListener('click', function LTPlayerBackwardSeconds(event) {
491
- event.preventDefault();
492
- instance.plyr.currentTime -= 10;
493
- })
494
- }
495
-
496
-
497
- }
498
-
499
-
500
- volume(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
501
-
502
- let playerControlsContainer = instance.plyr.elements.controls;
503
-
504
-
505
- const volume: HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
506
- const openVolumeButton: HTMLElement = playerControlsContainer.querySelector('.volume_control__volume-button');
507
- const muteUnmuteVolumeButton: HTMLElement = playerControlsContainer.querySelector('.volume_control__volume-button-close');
508
- const volumeControl: HTMLElement = playerControlsContainer.querySelector('.volume_control__background__area');
509
- const volumeBackground: HTMLElement = playerControlsContainer.querySelector('.volume_control__background');
510
- const volumeRangeControl: HTMLElement = playerControlsContainer.querySelector('.volume_control__background__area__range');
511
- const rangeVolumesItems: NodeListOf<HTMLElement> = volume.querySelectorAll('.volume-max, .volume-75, .volume-50, .volume-mute');
512
-
513
- openVolumeButton.addEventListener('mouseover', (event) => {
514
- volumeControl.classList.remove('d-none');
515
- volumeBackground.classList.remove('d-none');
516
- openVolumeButton.classList.add('d-none');
517
- volume.classList.add('volume-control-enable');
518
- volume.classList.add('volume-area-open')
519
- })
520
-
521
- volume.addEventListener('mouseleave', () => {
522
- volumeControl.classList.add('d-none');
523
- volumeBackground.classList.add('d-none');
524
- openVolumeButton.classList.remove('d-none');
525
- volume.classList.remove('volume-control-enable');
526
- })
527
-
528
- muteUnmuteVolumeButton.addEventListener('click', (event) => {
529
- event.preventDefault();
530
- if (instance.plyr.volume > 0) {
531
- instance.playerControl.playerVolumeBefore = instance.plyr.volume;
532
- instance.plyr.volume = 0;
533
- volumeIcons(0);
534
- return;
535
- }
536
-
537
- if (instance.playerControl.playerVolumeBefore) {
538
- instance.plyr.volume = instance.playerControl.playerVolumeBefore;
539
- volumeIcons(instance.playerControl.playerVolumeBefore);
540
- return;
541
- }
542
-
543
- instance.plyr.volume = 1;
544
- volumeIcons(1)
545
- })
546
-
547
- const volumeIcons = (range: any) => {
548
-
549
- if (typeof range == 'number') {
550
- range = range.toString()
551
- }
552
-
553
- const volumeMax: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-max');
554
- const volume75: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-75');
555
- const volume50: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-50');
556
- const volumeMute: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-mute');
557
- const volumeBody: HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
558
- const volumeIconsManger = (item: HTMLElement) => {
559
-
560
- const rangeVolumesItems: NodeListOf<HTMLElement> = volumeBody.querySelectorAll('.volume-max, .volume-75, .volume-50, .volume-mute');
561
-
562
- rangeVolumesItems.forEach(function (value) {
563
- if (item.dataset.rangeValue === value.dataset.rangeValue) {
564
- value.classList.remove('d-none');
565
- } else {
566
- value.classList.add('d-none')
567
- }
568
- })
569
- }
570
-
571
- switch (range) {
572
- case volumeMax.dataset.rangeValue :
573
- volumeIconsManger(volumeMax);
574
- break;
575
- case volume75.dataset.rangeValue :
576
- volumeIconsManger(volume75);
577
- break;
578
- case volume50.dataset.rangeValue :
579
- volumeIconsManger(volume50);
580
- break;
581
- case volumeMute.dataset.rangeValue :
582
- volumeIconsManger(volumeMute);
583
- break;
584
- }
585
- }
586
-
587
- volumeRangeControl.addEventListener('input', function () {
588
-
589
- let itemsDataSet: string[] = [];
590
-
591
- rangeVolumesItems.forEach(item => {
592
- itemsDataSet.push(item.dataset.rangeValue)
593
- })
594
-
595
- if (itemsDataSet.length === 0) {
596
- return;
597
- }
598
-
599
- const getClosest = (curr: any, prev: any, range: any) => {
600
- return (Math.abs(curr - range) < Math.abs(prev - range) ? curr : prev);
601
- }
602
-
603
-
604
- let closest = itemsDataSet.reduce(function (prev, curr) {
605
- return getClosest(curr, prev, (volumeRangeControl as HTMLInputElement).value);
606
- });
607
- volumeIcons(closest);
608
- })
609
-
610
- instance.plyr.volume = 1;
611
-
612
- volumeIcons(instance.plyr.volume)
613
- }
614
- }
615
-
616
- export class Mobile {
617
-
618
- common: Common
619
-
620
- controlsTimeOut: NodeJS.Timeout
621
-
622
- constructor() {
623
- this.common = new Common();
624
- }
625
- seekBar(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
626
- const playerControlsContainer = instance.plyr.elements.controls;
627
- const seekBar: HTMLInputElement = playerControlsContainer.querySelector('.plyr__progress__seek');
628
- const rangeTouch = require('rangetouch');
629
- rangeTouch.setup(seekBar);
630
- const __this = this;
631
- seekBar.addEventListener('change', () => {
632
- __this.showControls(instance);
633
- })
634
-
635
- }
636
-
637
- controlsTimeShow(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
638
- const playerContainer = instance.plyr.elements.container;
639
- const playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
640
- const __this = this;
641
- if (playerControlsBackground) {
642
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerControlsBackground);
643
-
644
- if (mobileEvent) {
645
- mobileEvent.on('singletap', function LTPlayerMobileBack() {
646
- __this.showControls(instance);
647
- })
648
- }
649
- }
650
- }
651
-
652
- removePlyrControlsClass(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
653
- const playerContainer = instance.plyr.elements.container;
654
- const playerControlsContainer = instance.plyr.elements.controls;
655
-
656
- if (playerControlsContainer.classList.contains('plyr__controls-enable')) {
657
- playerContainer.classList.remove('plyr--hide-controls');
658
- }
659
-
660
- }
661
-
662
-
663
- showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
664
- const playerContainer = instance.plyr.elements.container;
665
- const playerControlsContainer = instance.plyr.elements.controls;
666
- const eventsInstance = this;
667
- const commonInstance = this.common;
668
-
669
- let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
670
-
671
- instance.statusFeedbackService.setControlsVisible()
672
-
673
- if (playerContainer.classList.contains('plyr--hide-controls')) {
674
- playerContainer.classList.remove('plyr--hide-controls');
675
- }
676
-
677
- if (playerControlsBackground) {
678
- if (!playerControlsBackground.classList.contains('d-none')) {
679
- playerControlsBackground.classList.add('d-none');
680
- }
681
- }
682
-
683
- if (!playerControlsContainer.classList.contains('plyr__controls-enable')) {
684
- playerControlsContainer.classList.add('plyr__controls-enable');
685
- }
686
-
687
- eventsInstance.common.subtitlesHide(instance);
688
-
689
- if (this.controlsTimeOut) {
690
- clearTimeout(this.controlsTimeOut);
691
- }
692
-
693
- commonInstance.showHideText(true, playerControlsContainer);
694
- commonInstance.showHideSeekBar(true, playerControlsContainer);
695
- commonInstance.showHideBottomControls(true, playerControlsContainer);
696
-
697
-
698
- if (instance.plyr.paused) {
699
- commonInstance.showHideAllControls(true, playerControlsContainer);
700
- return;
701
- }
702
-
703
- this.hideControls(instance, false);
704
- }
705
-
706
- hideControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, now: boolean) {
707
- const playerContainer = instance.plyr.elements.container;
708
- const playerControlsContainer = instance.plyr.elements.controls;
709
- const eventsInstance = this;
710
- const commonInstance = this.common;
711
- let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
712
-
713
- const showHideControls = () => {
714
- instance.statusFeedbackService.clearControlsVisible()
715
-
716
- if (!instance.playerConfig.isPinTextControls()) {
717
- commonInstance.showHideText(false, playerControlsContainer);
718
- }
719
-
720
- if (!instance.playerConfig.isPinSeekBarControls()) {
721
- commonInstance.showHideSeekBar(false, playerControlsContainer);
722
- }
723
- if (!instance.playerConfig.isPinBottomControls()) {
724
- commonInstance.showHideBottomControls(false, playerControlsContainer);
725
- }
726
- }
727
-
728
-
729
- if (!playerControlsContainer.classList.contains('plyr__controls-enable-addInfo')) {
730
-
731
- if (now) {
732
-
733
- if (instance.plyr.paused) {
734
- commonInstance.showHideAllControls(true, playerControlsContainer);
735
- return;
736
- }
737
-
738
- showHideControls();
739
- // playerControlsContainer.classList.remove('plyr__controls-enable');
740
- // playerContainer.classList.add('plyr--hide-controls');
741
- if (!playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
742
- playerControlsBackground.classList.remove('d-none');
743
- }
744
- } else {
745
- this.controlsTimeOut = setTimeout(() => {
746
- // playerControlsContainer.classList.remove('plyr__controls-enable');
747
- // playerContainer.classList.add('plyr--hide-controls');
748
-
749
- if (instance.plyr.paused) {
750
- commonInstance.showHideAllControls(true, playerControlsContainer);
751
- return;
752
- }
753
-
754
- showHideControls();
755
- if (playerControlsBackground && !playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
756
- playerControlsBackground.classList.remove('d-none');
757
- }
758
- }, 5000);
759
- }
760
- eventsInstance.common.subtitlesShow(instance);
761
- }
762
- }
763
-
764
- fullScreenButtons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
765
- let playerControlsSelector = instance.plyr.elements.controls;
766
-
767
- const fullScreenButtonContainer = playerControlsSelector.querySelector('.fullscreen-custom-control');
768
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(fullScreenButtonContainer);
769
-
770
- if (mobileEvent) {
771
- mobileEvent.on('singletap', function LTPlayerMobileFullScreen(event) {
772
- event.preventDefault();
773
- instance.plyr.fullscreen.toggle();
774
- })
775
- }
776
- }
777
-
778
- playPauseIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
779
- let common = this.common;
780
- let instanceMobile = this;
781
-
782
- switch (type) {
783
- case 'timeupdate':
784
- common.playPauseIconTimeUpdate(instance);
785
- break
786
- case 'ready':
787
- const playButton = instance.plyr.elements.controls.querySelector('.play-button');
788
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playButton);
789
- if (mobileEvent) {
790
- mobileEvent.on('singletap', function LTPlayerMobilePLayPauseIcon() {
791
- if (instance.plyr.playing) {
792
- instance.plyr.togglePlay(false);
793
- } else {
794
- instance.plyr.togglePlay(true);
795
- }
796
- common.playPauseIconTimeUpdate(instance);
797
- instanceMobile.showControls(instance);
798
- });
799
- }
800
- }
801
- }
802
-
803
- backwardForward(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
804
-
805
- let common = this.common;
806
- const selectors = common.backwardRewind.getSelectors(instance);
807
-
808
- const singleTapAction = () => {
809
- instance.playerControl.mobileEvents.hideControls(instance, true);
810
- }
811
-
812
- if (selectors.forwardArea) {
813
-
814
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.forwardArea);
815
-
816
- mobileEvent.on('doubletap', function LTPlayerMobileForwardDbClick(event) {
817
-
818
- common.backwardRewind.animateNotificationIn(selectors.forwardAnimation);
819
- common.backwardRewind.updateCurrentTime(instance, 10);
820
- setTimeout(() => {
821
- common.backwardRewind.animateNotificationOut(selectors.forwardAnimation)
822
- }, 500)
823
- instance.playerControl.mobileEvents.showControls(instance);
824
- })
825
-
826
- mobileEvent.on('singletap', function LTPlayerMobileForwardDbClick(event) {
827
- singleTapAction();
828
- });
829
-
830
- let mobileEventBackground: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.forwardAreaBackground);
831
-
832
- mobileEventBackground.on('doubletap', function LTPlayerMobileForwardDbClickBackground(event) {
833
- common.backwardRewind.animateNotificationIn(selectors.forwardAnimationBackground);
834
- common.backwardRewind.updateCurrentTime(instance, 10);
835
- setTimeout(() => {
836
- common.backwardRewind.animateNotificationOut(selectors.forwardAnimationBackground)
837
- }, 500)
838
- })
839
- }
840
-
841
- if (selectors.rewindArea) {
842
-
843
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.rewindArea);
844
-
845
- mobileEvent.on('doubletap', function LTPlayerMobileRewindDbClick(event) {
846
-
847
- common.backwardRewind.animateNotificationIn(selectors.rewindAnimation);
848
- common.backwardRewind.updateCurrentTime(instance, -10);
849
- setTimeout(() => {
850
- common.backwardRewind.animateNotificationOut(selectors.rewindAnimation)
851
- }, 500)
852
- instance.playerControl.mobileEvents.showControls(instance);
853
- })
854
-
855
- mobileEvent.on('singletap', function LTPlayerMobileRewindClick(event) {
856
- singleTapAction();
857
- })
858
-
859
- let mobileEventBackground: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.rewindAreaBackground);
860
-
861
- mobileEventBackground.on('doubletap', function LTPlayerMobileRewindDbClickBackground(event) {
862
- common.backwardRewind.animateNotificationIn(selectors.rewindAnimationBackground);
863
- common.backwardRewind.updateCurrentTime(instance, 10);
864
- setTimeout(() => {
865
- common.backwardRewind.animateNotificationOut(selectors.rewindAnimationBackground)
866
- }, 500)
867
- })
868
-
869
- }
870
- }
871
-
872
-
873
- backwardForwardSeconds(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
874
- let playerControlsContainer = instance.plyr.elements.controls;
875
- let forward = playerControlsContainer.querySelector('.skip-forward-seconds');
876
- let backward = playerControlsContainer.querySelector('.skip-backward-seconds');
877
-
878
- if (forward) {
879
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(forward);
880
-
881
- mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
882
- instance.plyr.currentTime += 10;
883
- })
884
- }
885
-
886
- if (backward) {
887
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(backward);
888
- mobileEvent.on('singletap', function LTPlayerBackwardSeconds() {
889
- instance.plyr.currentTime -= 10;
890
- })
891
- }
892
- }
893
-
894
-
895
- settings(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
896
- let playerControlsContainer = instance.plyr.elements.controls;
897
- const settingsButton = playerControlsContainer.querySelector('.plyr__controls_settings-button');
898
-
899
- if (settingsButton) {
900
-
901
- }
902
- }
903
-
904
- volume(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
905
- let playerControlsContainer = instance.plyr.elements.controls;
906
- const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
907
- const setVolume = (): string => {
908
- if (instance.plyr.muted) {
909
- instance.plyr.muted = false;
910
- return 'up';
911
- } else {
912
- instance.plyr.muted = true;
913
- return 'mute';
914
- }
915
- }
916
-
917
- if (volume) {
918
- const volumeButton = volume.querySelector('button');
919
- const volumeUp = volume.querySelector('.volume-max');
920
- const volumeMute = volume.querySelector('.volume-mute');
921
-
922
- const setVolumeIcon = (volumeState: string) => {
923
- if (volumeState === 'up') {
924
- volumeUp.classList.remove('d-none');
925
- volumeMute.classList.remove('d-none');
926
- volumeMute.classList.add('d-none');
927
- } else {
928
- volumeUp.classList.remove('d-none');
929
- volumeMute.classList.remove('d-none');
930
- volumeUp.classList.add('d-none');
931
- }
932
- }
933
-
934
- setVolumeIcon('up');
935
-
936
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(volumeButton);
937
-
938
- mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
939
- let volumeState = setVolume();
940
- setVolumeIcon(volumeState);
941
- instance.playerControl.mobileEvents.showControls(instance);
942
- })
943
- }
944
- }
945
- }
946
- }