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

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 +163 -0
  5. package/dist/main.js +29712 -0
  6. package/package.json +32 -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,285 +0,0 @@
1
- import Plyr from "plyr";
2
- import {defaultType} from "../../global/types/ModuleTypes";
3
- import {TemplateService} from "../../services/TemplateService";
4
- import {IconsService} from "../../services/IconsService";
5
- import {LTPlayer} from "../LTPlayerType";
6
-
7
- /**
8
- * Create and add mini-player
9
- */
10
- export class LTPlayerMini {
11
-
12
- player: Plyr
13
- playerContainer: defaultType = {
14
- width: null,
15
- height: null
16
- }
17
- templateService: TemplateService
18
- private iconService: IconsService;
19
-
20
- playerType : string
21
-
22
- instance : LTPlayer.PortraitType | LTPlayer.LandscapeType
23
-
24
- observe : ResizeObserver
25
-
26
- constructor() {
27
- }
28
-
29
- /**
30
- * Init mini player setup
31
- * @param player
32
- * @param templateService
33
- * @param iconService
34
- * @param playerType
35
- * @param instance
36
- */
37
- init(player: Plyr, templateService: TemplateService, iconService: IconsService, playerType : string, instance : LTPlayer.LandscapeType | LTPlayer.PortraitType) {
38
- this.instance = instance;
39
- this.templateService = templateService;
40
- this.iconService = iconService;
41
- this.player = player;
42
- this.playerType = playerType;
43
- this.setup();
44
- }
45
-
46
- enterMiniPlayer() {
47
- this.playerContainer.width = this.player.elements.wrapper.getBoundingClientRect().width;
48
- this.playerContainer.height = this.player.elements.wrapper.getBoundingClientRect().height;
49
- this.player.elements.wrapper.classList.add('lt-player-mini-enable');
50
- this.player.elements.wrapper.classList.add(`lt-player-mini-${this.playerType}`)
51
- this.setBackground(this.player.elements.wrapper);
52
- this.addMouseHoverControllers();
53
- this.addPlayPauseEvents();
54
- this.setSeekBar();
55
-
56
- }
57
-
58
- /**
59
- * Setup mini player
60
- * @private
61
- */
62
- private setup() {
63
- const player = this.player;
64
- const _this = this;
65
- player.on('ready', function () {
66
- const playerContainer = player.elements.container;
67
- const playerWrapper = player.elements.wrapper;
68
- const button = playerContainer.querySelector('.mini-player-control');
69
-
70
- if (button) {
71
- button.addEventListener('click', function (event) {
72
- event.preventDefault();
73
- _this.playerContainer.width = playerContainer.getBoundingClientRect().width;
74
- _this.playerContainer.height = playerContainer.getBoundingClientRect().height;
75
- playerWrapper.classList.add('lt-player-mini-enable');
76
- playerWrapper.classList.add(`lt-player-mini-${_this.playerType}`)
77
- _this.setBackground(playerWrapper);
78
- _this.addMouseHoverControllers();
79
- _this.addPlayPauseEvents();
80
- _this.setSeekBar();
81
- _this.exitMiniPlayer(_this.player);
82
- })
83
- }
84
- })
85
- }
86
-
87
- /**
88
- * Set seek bar, add style component
89
- */
90
- setSeekBar() {
91
- const player = this.player;
92
- const playerContainer = player.elements.container;
93
- const seekBar: HTMLInputElement | any = playerContainer.querySelector('.lt-player-mini-player-controls__progress__seek');
94
-
95
- seekBar.addEventListener('input', function () {
96
- player.currentTime = parseInt(seekBar.value);
97
- })
98
-
99
- const setValue = (seekBar: HTMLInputElement | any) => {
100
- let value = (seekBar.value - seekBar.min)/(seekBar.max-seekBar.min)*100;
101
- seekBar.value = player.currentTime.toFixed(2).toString();
102
- seekBar.max = player.duration.toFixed(2).toString();
103
- seekBar.style.background = 'linear-gradient(to right, #D8D846 0%, #D8D846 ' + value + '%, transparent ' + value + '%, transparent 100%)';
104
- }
105
-
106
-
107
- player.on('timeupdate', function () {
108
- seekBar.value = player.currentTime.toFixed(2).toString();
109
- seekBar.max = player.duration.toFixed(2).toString();
110
- setValue(seekBar);
111
- })
112
- setValue(seekBar);
113
-
114
- }
115
-
116
- /**
117
- * Set background on primary player on mini player is enable
118
- * @param playerWrapper
119
- */
120
- private setBackground(playerWrapper: HTMLElement) {
121
-
122
- const background = this.templateService.getBackGroundTemplate({logo : this.iconService.getLogo()});
123
-
124
- const controls = this.templateService.getControlsMiniPlayer({
125
- mini_player: 'true',
126
- icons: this.iconService.getIconsByComponent('controls'),
127
- })
128
-
129
- playerWrapper.insertAdjacentHTML("afterend", background);
130
- playerWrapper.children[0].insertAdjacentHTML("afterend", controls);
131
-
132
- if (this.instance.playerConfig.getObserve()) {
133
- if (this.instance.playerConfig.isObserveHeight() !== undefined && !this.instance.playerConfig.isObserveHeight()) {
134
- this.setObserveBackground();
135
- }
136
- } else {
137
- this.setObserveBackground();
138
- }
139
-
140
- }
141
-
142
- setObserveBackground() {
143
-
144
- const miniPlayerBackground : HTMLElement = this.player.elements.container.querySelector('.lt-player-mini-player-background');
145
-
146
- this.observe = new ResizeObserver(response => {
147
- let documentWidth = response[0].contentRect.width;
148
- let miniPlayerBackgroundWidth = miniPlayerBackground.getBoundingClientRect().width;
149
- if (documentWidth >= miniPlayerBackgroundWidth) {
150
- if (documentWidth > this.playerContainer.width) {
151
- if (this.player.elements.controls.getBoundingClientRect().height === 103) {
152
- miniPlayerBackground.style.width = `${this.playerContainer.width}px`;
153
- miniPlayerBackground.style.height = `${this.playerContainer.height}px`;
154
- } else {
155
- miniPlayerBackground.style.width = `${this.player.elements.controls.getBoundingClientRect().width}px`;
156
- miniPlayerBackground.style.height = `${this.player.elements.controls.getBoundingClientRect().height}px`;
157
- }
158
- } else {
159
- miniPlayerBackground.style.width = `${this.playerContainer.width}px`;
160
- let calc = this.playerContainer.height + (response[0].contentRect.width - this.playerContainer.width);
161
- miniPlayerBackground.style.height = (calc > 100) ? `${calc}px` : this.playerContainer.height;
162
- }
163
- }
164
- if (documentWidth < miniPlayerBackgroundWidth) {
165
- miniPlayerBackground.style.width = `${documentWidth}px`;
166
- let calc = this.playerContainer.height - (this.playerContainer.width - response[0].contentRect.width);
167
- miniPlayerBackground.style.height = (calc > 100) ? `${calc}px` : this.playerContainer.height;
168
- }
169
-
170
- });
171
-
172
- this.observe.observe(document.body);
173
- }
174
-
175
- /**
176
- * Add mini player mouse event
177
- * @private
178
- */
179
- private addMouseHoverControllers() {
180
- const playerContainer = this.player.elements.container;
181
- const miniPLayerSelector = playerContainer.querySelector('.lt-player-mini-enable');
182
-
183
- miniPLayerSelector.addEventListener('mouseover', function () {
184
- const miniPLayerControls = miniPLayerSelector.querySelector('.lt-player-mini-player-controls');
185
-
186
- if (miniPLayerControls) {
187
- miniPLayerControls.classList.add('lt-player-mini-player-controls-enable');
188
- }
189
-
190
- })
191
-
192
- miniPLayerSelector.addEventListener('mouseleave', function () {
193
- const miniPLayerControls = miniPLayerSelector.querySelector('.lt-player-mini-player-controls');
194
- if (miniPLayerControls) {
195
- miniPLayerControls.classList.remove('lt-player-mini-player-controls-enable');
196
- }
197
- })
198
- }
199
-
200
- /**
201
- * Add play/pause event
202
- */
203
- addPlayPauseEvents() {
204
- const playerContainer = this.player.elements.container;
205
- const player = this.player;
206
-
207
-
208
- const playButton = playerContainer.querySelector('.lt-player-mini-player-controls__play-button');
209
-
210
-
211
- if (playButton) {
212
- let playerContainer = player.elements.container;
213
-
214
- const playIcon = playerContainer.querySelector('.lt-player-mini-player-controls__play-icon');
215
- const pauseIcon = playerContainer.querySelector('.lt-player-mini-player-controls__pause-icon');
216
-
217
- if (player.playing) {
218
- playIcon.classList.add('d-none');
219
- pauseIcon.classList.remove('d-none');
220
- } else {
221
- pauseIcon.classList.add('d-none');
222
- playIcon.classList.remove('d-none');
223
- }
224
-
225
- playButton.addEventListener('click', function (event) {
226
- event.preventDefault();
227
- if (player.playing) {
228
- player.pause();
229
- playIcon.classList.remove('d-none');
230
- pauseIcon.classList.add('d-none');
231
- } else {
232
- player.play();
233
- pauseIcon.classList.remove('d-none');
234
- playIcon.classList.add('d-none');
235
- }
236
- })
237
- }
238
- }
239
-
240
- /**
241
- * Add exit mini player event, return to primary player
242
- * @param player
243
- */
244
- exitMiniPlayer(player: Plyr) {
245
- const playerContainer = player.elements.container;
246
- const exit = playerContainer.querySelector('.lt-player-mini-player-controls__exit');
247
- let _this = this;
248
-
249
- if (!exit) {
250
- return
251
- }
252
-
253
- exit.addEventListener('click', function (event) {
254
- event.preventDefault();
255
- playerContainer.querySelector('.lt-player-mini-player-controls').remove();
256
- playerContainer.querySelector('.lt-player-mini-player-background').remove();
257
- playerContainer.querySelector('.lt-player-mini-enable').classList.remove(`lt-player-mini-${_this.playerType}`)
258
- playerContainer.querySelector('.lt-player-mini-enable').classList.remove('lt-player-mini-enable');
259
- _this.observe.disconnect();
260
-
261
- })
262
- }
263
-
264
-
265
- event = {
266
- removeMiniPLOnFullScreen(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, type: string) {
267
-
268
- let player = instance.plyr;
269
- const playerControllers = player.elements.controls;
270
- const fullScreenButton = playerControllers.querySelector('.mini-player-control');
271
-
272
- if (fullScreenButton) {
273
- switch (type) {
274
- case 'enterfullscreen' :
275
- fullScreenButton.classList.add('d-none');
276
- break
277
- case 'exitfullscreen':
278
- fullScreenButton.classList.remove('d-none');
279
- break
280
- }
281
- }
282
-
283
- }
284
- }
285
- }
@@ -1,60 +0,0 @@
1
- import Plyr from "plyr";
2
- import {TemplateService} from "../../services/TemplateService";
3
- import {plyr} from "../../global/types/ModuleTypes";
4
- import {LTPlayer} from "../LTPlayerType";
5
- import {LTPlayerCommonSettingsControllers} from "./settings/LTPlayerCommonSettingsControllers";
6
- import {LTPlayerMobileSettingsControllers} from "./settings/LTPlayerMobileSettingsControllers";
7
- import {LTPlayerDesktopSettingsControllers} from "./settings/LTPlayerDesktopSettingsControllers";
8
-
9
- export class LTPlayerSettingsControlsManager {
10
- playerInstance: LTPlayer.PortraitType | LTPlayer.LandscapeType
11
- player: Plyr
12
- templateService: TemplateService
13
- playerID: number
14
- common: LTPlayerCommonSettingsControllers
15
- mobile: LTPlayerMobileSettingsControllers
16
- desktop: LTPlayerDesktopSettingsControllers
17
-
18
- init(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
19
- this.playerInstance = instance;
20
- this.player = instance.plyr;
21
- this.templateService = instance.templateService;
22
- this.common = new LTPlayerCommonSettingsControllers(instance);
23
- const playerType = this.player as plyr;
24
- this.playerID = playerType.id;
25
-
26
- if (instance.playerConfig.getDevice() === 'mobile') {
27
- this.mobile = new LTPlayerMobileSettingsControllers(this);
28
- } else {
29
- this.desktop = new LTPlayerDesktopSettingsControllers(this);
30
- }
31
-
32
- }
33
- static closeSettingsEvent(event: MouseEvent) {
34
-
35
- const playerControlsContainer: NodeListOf<Element> = document.querySelectorAll('.plyr__controls');
36
-
37
- if (playerControlsContainer.length === 0) {
38
- return;
39
- }
40
-
41
- playerControlsContainer.forEach( control => {
42
- if (control.classList.contains('plyr__controls-enable-settings')) {
43
- const settingsBody = control.querySelector('.settings-controllers');
44
-
45
- if (!(event.target as HTMLTextAreaElement).classList.contains('settings') && settingsBody.classList.contains('settings-controllers-enable')) {
46
- const settingsBody = control.querySelector('.settings-controllers');
47
-
48
- control.classList.remove('plyr__controls-enable-settings');
49
- settingsBody.classList.remove('settings-controllers-enable');
50
-
51
- const background = control.querySelector('.settings-controllers-enable__background');
52
-
53
- if (!background.classList.contains('d-none')) {
54
- background.classList.add('d-none');
55
- }
56
- }
57
- }
58
- })
59
- }
60
- }
@@ -1,71 +0,0 @@
1
- import {LTPlayer} from "../../LTPlayerType";
2
-
3
- export class LTPlayerCommonSettingsControllers {
4
-
5
- instance: LTPlayer.PortraitType | LTPlayer.LandscapeType
6
-
7
- constructor(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
8
- this.instance = instance;
9
- }
10
-
11
- addSettingsTemplate(string: 'mobile' | 'desktop') {
12
- const settingsTemplate = this.instance.templateService.getSettings(
13
- {
14
- id : this.instance.playerConfig.getPlayerId(),
15
- [string] : true,
16
- captions_enabled: this.instance.playerConfig.getCaptionsEnabled() &&
17
- this.instance.playerConfig.hasCaptionsUrl(),
18
- captions_missing: !this.instance.playerConfig.hasCaptionsUrl()
19
- }
20
- );
21
- const lastElement = this.instance.plyr.elements.controls.lastElementChild;
22
-
23
- if (lastElement) {
24
- lastElement.insertAdjacentHTML("afterend", settingsTemplate);
25
- }
26
- }
27
-
28
- openSettings() {
29
- if (!this.getSelectors().playerControlsContainer.classList.contains('plyr__controls-enable-settings')) {
30
- this.getSelectors().playerControlsContainer.classList.add('plyr__controls-enable-settings');
31
- }
32
-
33
- if (!this.getSelectors().settingsContainer.classList.contains('settings-controllers-enable')) {
34
- this.getSelectors().settingsContainer.classList.add('settings-controllers-enable');
35
-
36
- if (this.getSelectors().background.classList.contains('d-none')) {
37
- this.getSelectors().background.classList.remove('d-none');
38
- }
39
- }
40
- }
41
-
42
- getSelectors() {
43
- return {
44
- playerControlsContainer : this.instance.plyr.elements.controls,
45
- settingsContainer : this.instance.plyr.elements.controls.querySelector('.settings-controllers'),
46
- background : this.instance.plyr.elements.controls.querySelector('.settings-controllers-enable__background'),
47
- button : this.instance.plyr.elements.controls.querySelector('.plyr__controls_settings-button'),
48
- saveButton : this.instance.plyr.elements.controls.querySelector('.button-save'),
49
- playerContainer : this.instance.plyr.elements.container
50
- }
51
- }
52
-
53
- closeSettings() {
54
- const settingsBody = this.getSelectors().playerControlsContainer.querySelector('.settings-controllers');
55
-
56
- if (settingsBody.classList.contains('settings-controllers-enable')) {
57
-
58
- const settingsBody = this.getSelectors().playerControlsContainer.querySelector('.settings-controllers');
59
- this.getSelectors().playerControlsContainer.classList.remove('plyr__controls-enable-settings');
60
- settingsBody.classList.remove('settings-controllers-enable');
61
-
62
- const background = this.getSelectors().playerContainer.querySelector('.settings-controllers-enable__background');
63
-
64
- if (!background.classList.contains('d-none')) {
65
- background.classList.add('d-none');
66
- }
67
-
68
- }
69
- }
70
-
71
- }
@@ -1,135 +0,0 @@
1
- import {LTPlayerSettingsControlsManager} from "../LTPlayerSettingsControlsManager";
2
- import {SettingsControlsInterfaces} from "../../../global/interfaces/SettingsControlsInterfaces";
3
- import {defaultType} from "../../../global/types/ModuleTypes";
4
- import {LTPlayerStorage} from "../../LTPlayerStorage";
5
-
6
- export class LTPlayerDesktopSettingsControllers implements SettingsControlsInterfaces {
7
- settingsInstance: LTPlayerSettingsControlsManager
8
- constructor(settingsInstance: LTPlayerSettingsControlsManager) {
9
- this.settingsInstance = settingsInstance;
10
- this.init();
11
- }
12
-
13
- init() {
14
- this.setButtonSpeed();
15
- this.settingsInstance.common.addSettingsTemplate(this.settingsInstance.playerInstance.playerConfig.getDevice());
16
- this.addOpenSettingsEventButton();
17
- this.initCaptionsEvent();
18
- this.initSpeedVideoEvent();
19
- this.initSaveButton();
20
- }
21
-
22
- addOpenSettingsEventButton() {
23
- const selectors: defaultType = this.settingsInstance.common.getSelectors();
24
- if (selectors.button) {
25
- selectors.button.addEventListener('click', (event: MouseEvent) => {
26
- event.preventDefault();
27
- this.settingsInstance.common.openSettings();
28
- })
29
- }
30
- }
31
-
32
- initCaptionsEvent() {
33
-
34
- const selectors = this.settingsInstance.common.getSelectors();
35
-
36
- const checkBox = selectors.playerControlsContainer.querySelector(`.subtitles-body__input-switch`) as HTMLInputElement;
37
-
38
- if (checkBox) {
39
- checkBox.addEventListener('change', () => {
40
-
41
- if (!checkBox.checked) {
42
- this.settingsInstance.playerInstance.captionsService.disableCaptions();
43
- } else {
44
- this.settingsInstance.playerInstance.captionsService.enableCaptions();
45
- }
46
-
47
- })
48
- }
49
- }
50
-
51
- initSpeedVideoEvent() {
52
- const playerInstance = this.settingsInstance.playerInstance;
53
- const playerControlsContainer = this.settingsInstance.player.elements.controls;
54
- const player = this.settingsInstance.player;
55
- const rangeInput: HTMLInputElement = playerControlsContainer.querySelector('.speed-range-input');
56
-
57
-
58
- const myRange: HTMLInputElement = playerControlsContainer.querySelector(`#speed-range-${playerInstance.playerConfig.getPlayerId()}`);
59
-
60
- myRange.value = String(0);
61
-
62
- const myValue: HTMLElement = playerControlsContainer.querySelector(`#speed-range-value-${playerInstance.playerConfig.getPlayerId()}`);
63
-
64
- myValue.style.top = "-20px";
65
-
66
- let values:any = [1,1.25,1.50,2];
67
-
68
- myRange.oninput = function() {
69
- player.speed = parseFloat(values[rangeInput.value]);
70
- myValue.innerHTML = `${values[rangeInput.value]}X`;
71
- };
72
-
73
- player.speed = parseFloat(String(values[0]));
74
- myValue.innerHTML = `${values[0]}X`;
75
- }
76
- initSaveButton() {
77
-
78
- const selectors = this.settingsInstance.common.getSelectors();
79
- const instance = this;
80
-
81
- const saveButton = selectors.playerControlsContainer.querySelector('.button-save');
82
-
83
- saveButton.addEventListener('click', function (event) {
84
- event.preventDefault();
85
- instance.settingsInstance.common.closeSettings();
86
- })
87
- }
88
-
89
- setButtonSpeed() {
90
- const playerControlsContainer = this.settingsInstance.playerInstance.plyr.elements.controls;
91
- const playerSpeedButton = playerControlsContainer.querySelector('.plyr__controls_speed-button');
92
- const plyr = this.settingsInstance.playerInstance.plyr;
93
- const instance = this.settingsInstance.playerInstance;
94
- const storage = new LTPlayerStorage();
95
-
96
- if (playerSpeedButton) {
97
- const speedSpan = document.createElement('span');
98
- playerSpeedButton.appendChild(speedSpan);
99
-
100
- const displaySpeed = Math.floor(plyr.speed * 10) / 10;
101
- speedSpan.innerHTML = displaySpeed + "X";
102
- speedSpan.className = '';
103
- speedSpan.classList.add('playback-speed--' + plyr.speed + 'X');
104
-
105
- playerSpeedButton.addEventListener('click', function(event) {
106
- const playSpeed = plyr.speed + 0.25;
107
-
108
- if (playSpeed > 2) {
109
- speedSpan.innerHTML = `1X`;
110
- plyr.speed = 1;
111
- speedSpan.className = '';
112
- speedSpan.classList.add('playback-speed--1X');
113
- return;
114
- }
115
-
116
- if (playSpeed === 1.75) {
117
- plyr.speed = playSpeed + 0.25;
118
- speedSpan.innerHTML = `2X`;
119
- speedSpan.className = '';
120
- speedSpan.classList.add('playback-speed--2X');
121
- return;
122
- }
123
-
124
- plyr.speed = playSpeed;
125
- const displaySpeed = Math.floor(playSpeed * 10) / 10;
126
- speedSpan.innerHTML = displaySpeed + "X";
127
- speedSpan.className = '';
128
- console.log(playSpeed.toPrecision(2));
129
- speedSpan.classList.add('playback-speed--' + playSpeed + 'X');
130
-
131
- instance.playerControl.mobileEvents.showControls(instance);
132
- })
133
- }
134
- }
135
- }