@latest-thinking/lt-player 1.2.0-d → 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 -100
  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 -70
  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 -512
  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 -943
  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,943 +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
- const itemsDataSet: string[] = [];
514
- rangeVolumesItems.forEach(item => {
515
- itemsDataSet.push(item.dataset.rangeValue)
516
- })
517
-
518
- openVolumeButton.addEventListener('mouseover', (event) => {
519
- volumeControl.classList.remove('d-none');
520
- volumeBackground.classList.remove('d-none');
521
- openVolumeButton.classList.add('d-none');
522
- volume.classList.add('volume-control-enable');
523
- volume.classList.add('volume-area-open')
524
- })
525
-
526
- volume.addEventListener('mouseleave', () => {
527
- volumeControl.classList.add('d-none');
528
- volumeBackground.classList.add('d-none');
529
- openVolumeButton.classList.remove('d-none');
530
- volume.classList.remove('volume-control-enable');
531
- })
532
-
533
- muteUnmuteVolumeButton.addEventListener('click', (event) => {
534
- event.preventDefault();
535
- if (instance.plyr.volume > 0) {
536
- instance.playerControl.playerVolumeBefore = instance.plyr.volume;
537
- instance.plyr.volume = 0;
538
- volumeIcons(0);
539
- return;
540
- }
541
-
542
- if (instance.playerControl.playerVolumeBefore) {
543
- instance.plyr.volume = instance.playerControl.playerVolumeBefore;
544
- volumeIcons(instance.playerControl.playerVolumeBefore);
545
- return;
546
- }
547
-
548
- instance.plyr.volume = 1;
549
- volumeIcons(1)
550
- })
551
-
552
- const getClosest = (curr: any, prev: any, range: any) => {
553
- return (Math.abs(curr - range) < Math.abs(prev - range) ? curr : prev);
554
- }
555
-
556
- const volumeMax: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-max');
557
- const volume75: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-75');
558
- const volume50: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-50');
559
- const volumeMute: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-mute');
560
- const volumeBody: HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
561
- const volumeIconsManger = (item: HTMLElement) => {
562
-
563
- const rangeVolumesItems: NodeListOf<HTMLElement> = volumeBody.querySelectorAll('.volume-max, .volume-75, .volume-50, .volume-mute');
564
-
565
- rangeVolumesItems.forEach(function (value) {
566
- if (item.dataset.rangeValue === value.dataset.rangeValue) {
567
- value.classList.remove('d-none');
568
- } else {
569
- value.classList.add('d-none')
570
- }
571
- })
572
- }
573
-
574
- const volumeIcons = (level: any) => {
575
- if (itemsDataSet.length === 0) {
576
- return;
577
- }
578
-
579
- let range = itemsDataSet.reduce(function (prev, curr) {
580
- return getClosest(curr, prev, level);
581
- });
582
-
583
- if (typeof range == 'number') {
584
- range = range.toString()
585
- }
586
-
587
- switch (range) {
588
- case volumeMax.dataset.rangeValue :
589
- volumeIconsManger(volumeMax);
590
- break;
591
- case volume75.dataset.rangeValue :
592
- volumeIconsManger(volume75);
593
- break;
594
- case volume50.dataset.rangeValue :
595
- volumeIconsManger(volume50);
596
- break;
597
- case volumeMute.dataset.rangeValue :
598
- volumeIconsManger(volumeMute);
599
- break;
600
- }
601
- }
602
-
603
- volumeRangeControl.addEventListener('input', function () {
604
- volumeIcons((volumeRangeControl as HTMLInputElement).value);
605
- })
606
-
607
- instance.plyr.volume = 1;
608
-
609
- volumeIcons(instance.plyr.volume)
610
- }
611
- }
612
-
613
- export class Mobile {
614
-
615
- common: Common
616
-
617
- controlsTimeOut: NodeJS.Timeout
618
-
619
- constructor() {
620
- this.common = new Common();
621
- }
622
- seekBar(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
623
- const playerControlsContainer = instance.plyr.elements.controls;
624
- const seekBar: HTMLInputElement = playerControlsContainer.querySelector('.plyr__progress__seek');
625
- const rangeTouch = require('rangetouch');
626
- rangeTouch.setup(seekBar);
627
- const __this = this;
628
- seekBar.addEventListener('change', () => {
629
- __this.showControls(instance);
630
- })
631
-
632
- }
633
-
634
- controlsTimeShow(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
635
- const playerContainer = instance.plyr.elements.container;
636
- const playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
637
- const __this = this;
638
- if (playerControlsBackground) {
639
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerControlsBackground);
640
-
641
- if (mobileEvent) {
642
- mobileEvent.on('singletap', function LTPlayerMobileBack() {
643
- __this.showControls(instance);
644
- })
645
- }
646
- }
647
- }
648
-
649
- removePlyrControlsClass(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
650
- const playerContainer = instance.plyr.elements.container;
651
- const playerControlsContainer = instance.plyr.elements.controls;
652
-
653
- if (playerControlsContainer.classList.contains('plyr__controls-enable')) {
654
- playerContainer.classList.remove('plyr--hide-controls');
655
- }
656
-
657
- }
658
-
659
-
660
- showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
661
- const playerContainer = instance.plyr.elements.container;
662
- const playerControlsContainer = instance.plyr.elements.controls;
663
- const eventsInstance = this;
664
- const commonInstance = this.common;
665
-
666
- let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
667
-
668
- instance.statusFeedbackService.setControlsVisible()
669
-
670
- if (playerContainer.classList.contains('plyr--hide-controls')) {
671
- playerContainer.classList.remove('plyr--hide-controls');
672
- }
673
-
674
- if (playerControlsBackground) {
675
- if (!playerControlsBackground.classList.contains('d-none')) {
676
- playerControlsBackground.classList.add('d-none');
677
- }
678
- }
679
-
680
- if (!playerControlsContainer.classList.contains('plyr__controls-enable')) {
681
- playerControlsContainer.classList.add('plyr__controls-enable');
682
- }
683
-
684
- eventsInstance.common.subtitlesHide(instance);
685
-
686
- if (this.controlsTimeOut) {
687
- clearTimeout(this.controlsTimeOut);
688
- }
689
-
690
- commonInstance.showHideText(true, playerControlsContainer);
691
- commonInstance.showHideSeekBar(true, playerControlsContainer);
692
- commonInstance.showHideBottomControls(true, playerControlsContainer);
693
-
694
-
695
- if (instance.plyr.paused) {
696
- commonInstance.showHideAllControls(true, playerControlsContainer);
697
- return;
698
- }
699
-
700
- this.hideControls(instance, false);
701
- }
702
-
703
- hideControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, now: boolean) {
704
- const playerContainer = instance.plyr.elements.container;
705
- const playerControlsContainer = instance.plyr.elements.controls;
706
- const eventsInstance = this;
707
- const commonInstance = this.common;
708
- let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
709
-
710
- const showHideControls = () => {
711
- instance.statusFeedbackService.clearControlsVisible()
712
-
713
- if (!instance.playerConfig.isPinTextControls()) {
714
- commonInstance.showHideText(false, playerControlsContainer);
715
- }
716
-
717
- if (!instance.playerConfig.isPinSeekBarControls()) {
718
- commonInstance.showHideSeekBar(false, playerControlsContainer);
719
- }
720
- if (!instance.playerConfig.isPinBottomControls()) {
721
- commonInstance.showHideBottomControls(false, playerControlsContainer);
722
- }
723
- }
724
-
725
-
726
- if (!playerControlsContainer.classList.contains('plyr__controls-enable-addInfo')) {
727
-
728
- if (now) {
729
-
730
- if (instance.plyr.paused) {
731
- commonInstance.showHideAllControls(true, playerControlsContainer);
732
- return;
733
- }
734
-
735
- showHideControls();
736
- // playerControlsContainer.classList.remove('plyr__controls-enable');
737
- // playerContainer.classList.add('plyr--hide-controls');
738
- if (!playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
739
- playerControlsBackground.classList.remove('d-none');
740
- }
741
- } else {
742
- this.controlsTimeOut = setTimeout(() => {
743
- // playerControlsContainer.classList.remove('plyr__controls-enable');
744
- // playerContainer.classList.add('plyr--hide-controls');
745
-
746
- if (instance.plyr.paused) {
747
- commonInstance.showHideAllControls(true, playerControlsContainer);
748
- return;
749
- }
750
-
751
- showHideControls();
752
- if (playerControlsBackground && !playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
753
- playerControlsBackground.classList.remove('d-none');
754
- }
755
- }, 5000);
756
- }
757
- eventsInstance.common.subtitlesShow(instance);
758
- }
759
- }
760
-
761
- fullScreenButtons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
762
- let playerControlsSelector = instance.plyr.elements.controls;
763
-
764
- const fullScreenButtonContainer = playerControlsSelector.querySelector('.fullscreen-custom-control');
765
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(fullScreenButtonContainer);
766
-
767
- if (mobileEvent) {
768
- mobileEvent.on('singletap', function LTPlayerMobileFullScreen(event) {
769
- event.preventDefault();
770
- instance.plyr.fullscreen.toggle();
771
- })
772
- }
773
- }
774
-
775
- playPauseIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
776
- let common = this.common;
777
- let instanceMobile = this;
778
-
779
- switch (type) {
780
- case 'timeupdate':
781
- common.playPauseIconTimeUpdate(instance);
782
- break
783
- case 'ready':
784
- const playButton = instance.plyr.elements.controls.querySelector('.play-button');
785
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playButton);
786
- if (mobileEvent) {
787
- mobileEvent.on('singletap', function LTPlayerMobilePLayPauseIcon() {
788
- if (instance.plyr.playing) {
789
- instance.plyr.togglePlay(false);
790
- } else {
791
- instance.plyr.togglePlay(true);
792
- }
793
- common.playPauseIconTimeUpdate(instance);
794
- instanceMobile.showControls(instance);
795
- });
796
- }
797
- }
798
- }
799
-
800
- backwardForward(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
801
-
802
- let common = this.common;
803
- const selectors = common.backwardRewind.getSelectors(instance);
804
-
805
- const singleTapAction = () => {
806
- instance.playerControl.mobileEvents.hideControls(instance, true);
807
- }
808
-
809
- if (selectors.forwardArea) {
810
-
811
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.forwardArea);
812
-
813
- mobileEvent.on('doubletap', function LTPlayerMobileForwardDbClick(event) {
814
-
815
- common.backwardRewind.animateNotificationIn(selectors.forwardAnimation);
816
- common.backwardRewind.updateCurrentTime(instance, 10);
817
- setTimeout(() => {
818
- common.backwardRewind.animateNotificationOut(selectors.forwardAnimation)
819
- }, 500)
820
- instance.playerControl.mobileEvents.showControls(instance);
821
- })
822
-
823
- mobileEvent.on('singletap', function LTPlayerMobileForwardDbClick(event) {
824
- singleTapAction();
825
- });
826
-
827
- let mobileEventBackground: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.forwardAreaBackground);
828
-
829
- mobileEventBackground.on('doubletap', function LTPlayerMobileForwardDbClickBackground(event) {
830
- common.backwardRewind.animateNotificationIn(selectors.forwardAnimationBackground);
831
- common.backwardRewind.updateCurrentTime(instance, 10);
832
- setTimeout(() => {
833
- common.backwardRewind.animateNotificationOut(selectors.forwardAnimationBackground)
834
- }, 500)
835
- })
836
- }
837
-
838
- if (selectors.rewindArea) {
839
-
840
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.rewindArea);
841
-
842
- mobileEvent.on('doubletap', function LTPlayerMobileRewindDbClick(event) {
843
-
844
- common.backwardRewind.animateNotificationIn(selectors.rewindAnimation);
845
- common.backwardRewind.updateCurrentTime(instance, -10);
846
- setTimeout(() => {
847
- common.backwardRewind.animateNotificationOut(selectors.rewindAnimation)
848
- }, 500)
849
- instance.playerControl.mobileEvents.showControls(instance);
850
- })
851
-
852
- mobileEvent.on('singletap', function LTPlayerMobileRewindClick(event) {
853
- singleTapAction();
854
- })
855
-
856
- let mobileEventBackground: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.rewindAreaBackground);
857
-
858
- mobileEventBackground.on('doubletap', function LTPlayerMobileRewindDbClickBackground(event) {
859
- common.backwardRewind.animateNotificationIn(selectors.rewindAnimationBackground);
860
- common.backwardRewind.updateCurrentTime(instance, 10);
861
- setTimeout(() => {
862
- common.backwardRewind.animateNotificationOut(selectors.rewindAnimationBackground)
863
- }, 500)
864
- })
865
-
866
- }
867
- }
868
-
869
-
870
- backwardForwardSeconds(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
871
- let playerControlsContainer = instance.plyr.elements.controls;
872
- let forward = playerControlsContainer.querySelector('.skip-forward-seconds');
873
- let backward = playerControlsContainer.querySelector('.skip-backward-seconds');
874
-
875
- if (forward) {
876
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(forward);
877
-
878
- mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
879
- instance.plyr.currentTime += 10;
880
- })
881
- }
882
-
883
- if (backward) {
884
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(backward);
885
- mobileEvent.on('singletap', function LTPlayerBackwardSeconds() {
886
- instance.plyr.currentTime -= 10;
887
- })
888
- }
889
- }
890
-
891
-
892
- settings(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
893
- let playerControlsContainer = instance.plyr.elements.controls;
894
- const settingsButton = playerControlsContainer.querySelector('.plyr__controls_settings-button');
895
-
896
- if (settingsButton) {
897
-
898
- }
899
- }
900
-
901
- volume(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
902
- let playerControlsContainer = instance.plyr.elements.controls;
903
- const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
904
- const setVolume = (): string => {
905
- if (instance.plyr.muted) {
906
- instance.plyr.muted = false;
907
- return 'up';
908
- } else {
909
- instance.plyr.muted = true;
910
- return 'mute';
911
- }
912
- }
913
-
914
- if (volume) {
915
- const volumeButton = volume.querySelector('button');
916
- const volumeUp = volume.querySelector('.volume-max');
917
- const volumeMute = volume.querySelector('.volume-mute');
918
-
919
- const setVolumeIcon = (volumeState: string) => {
920
- if (volumeState === 'up') {
921
- volumeUp.classList.remove('d-none');
922
- volumeMute.classList.remove('d-none');
923
- volumeMute.classList.add('d-none');
924
- } else {
925
- volumeUp.classList.remove('d-none');
926
- volumeMute.classList.remove('d-none');
927
- volumeUp.classList.add('d-none');
928
- }
929
- }
930
-
931
- setVolumeIcon('up');
932
-
933
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(volumeButton);
934
-
935
- mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
936
- let volumeState = setVolume();
937
- setVolumeIcon(volumeState);
938
- instance.playerControl.mobileEvents.showControls(instance);
939
- })
940
- }
941
- }
942
- }
943
- }