@latest-thinking/lt-player 1.0.4 → 1.0.5-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 (48) hide show
  1. package/dist/css/lt-player-main.css +1 -3
  2. package/dist/css/lt-player-main.css.map +1 -1
  3. package/dist/js/lt-player-main.js +1 -1
  4. package/dist/js/lt-player-main.js.map +1 -1
  5. package/package.json +10 -8
  6. package/src/assets/sass/app.scss +2 -2
  7. package/src/assets/sass/core/_fonts.scss +5 -5
  8. package/src/assets/sass/sections/_control.scss +35 -0
  9. package/src/assets/sass/sections/_poster.scss +3 -0
  10. package/src/assets/sass/sections/_settings.scss +1 -1
  11. package/src/assets/sass/sections/_subtitles.scss +4 -0
  12. package/src/assets/sass/sections/controllers/_botom.scss +15 -5
  13. package/src/assets/sass/sections/controllers/_mini-player.scss +17 -2
  14. package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +70 -11
  15. package/src/components/LTPlayerDevMethode.ts +23 -3
  16. package/src/components/LTPlayerManager.ts +12 -5
  17. package/src/components/LTPlayerSetup.ts +31 -7
  18. package/src/components/LTPlayerType.ts +58 -11
  19. package/src/components/addInfo/LTPlayerAdditionalInfoEvents.ts +6 -2
  20. package/src/components/config/LTPlayerConfig.ts +200 -0
  21. package/src/components/config/LTPlayerConfigProcessor.ts +546 -0
  22. package/src/components/controls/LTPlayerChapters.ts +8 -4
  23. package/src/components/controls/LTPlayerControls.ts +1 -1
  24. package/src/components/controls/LTPlayerControlsEvents.ts +225 -71
  25. package/src/components/controls/LTPlayerMini.ts +75 -5
  26. package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +2 -4
  27. package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +2 -0
  28. package/src/components/events/LTPlayer.ts +46 -2
  29. package/src/components/events/LTPlayerDesktop.ts +1 -0
  30. package/src/components/events/LTPlayerMobile.ts +1 -1
  31. package/src/components/poster/LTPlayerPoster.ts +2 -2
  32. package/src/components/poster/LTPlayerPosterEvents.ts +5 -0
  33. package/src/components/poster/LTPlayerPosterManager.ts +1 -1
  34. package/src/components/poster/LTPlayerPosterPreload.ts +1 -1
  35. package/src/components/poster/LTPlayerPosterPreloadEvents.ts +17 -6
  36. package/src/components/share/LTPlayerShare.ts +1 -1
  37. package/src/components/share/LTPlayerShareEvents.ts +20 -20
  38. package/src/global/controllers/LTPlayerController.ts +1 -1
  39. package/src/services/Helper.ts +20 -5
  40. package/src/services/IconsService.ts +15 -0
  41. package/src/services/LTPlayerRotateDeviceService.ts +8 -1
  42. package/src/services/ResizeService.ts +24 -6
  43. package/src/services/TemplateService.ts +1 -1
  44. package/src/views/background.handlebars +1 -1
  45. package/src/views/controls.handlebars +71 -14
  46. package/src/views/settings.handlebars +3 -3
  47. package/src/views/template.handlebars +2 -2
  48. package/src/components/LTPlayerConfig.ts +0 -398
@@ -2,13 +2,14 @@ import {LTPlayerController} from "../global/controllers/LTPlayerController";
2
2
  import {TypeInterface} from "../global/interfaces/TypeInterface";
3
3
  import {defaultType, playerConfigType} from "../global/types/ModuleTypes";
4
4
  import {LTPlayerMini} from "./controls/LTPlayerMini";
5
- import {LTPlayerConfig} from "./LTPlayerConfig";
5
+ import {LTPlayerConfig} from "./config/LTPlayerConfig";
6
6
  import Plyr from "plyr";
7
7
  import {LTPlayerDevMethode} from "./LTPlayerDevMethode";
8
8
  import {LTPlayerEventsManager} from "./LTPlayerEventsManager";
9
9
  import {LTPLayerAddInfo} from "./addInfo/LTPlayerAddInfoManager";
10
10
  import {LTPlayerEvents} from "./events/LTPlayer";
11
11
  import {LTPlayerPosterManager} from "./poster/LTPlayerPosterManager";
12
+ import {config} from "json-schema-library";
12
13
 
13
14
  export namespace LTPlayer {
14
15
 
@@ -37,7 +38,7 @@ export namespace LTPlayer {
37
38
 
38
39
  this.additionalInfoService = additionalInfoService;
39
40
  this.miniPlayer = new LTPlayerMini();
40
- this.setPlayerConfig(configData.body);
41
+ this.setPlayerConfig(configData.body, configData.version);
41
42
  this.initSetupPlayerPoster(configData.body);
42
43
  this.initPlayer();
43
44
  this.setEvents();
@@ -68,10 +69,12 @@ export namespace LTPlayer {
68
69
  /**
69
70
  * Set Player config Instance
70
71
  * @param configData
72
+ * @param version
71
73
  * @private
72
74
  */
73
- private setPlayerConfig(configData: playerConfigType) {
74
- this.playerConfig = new LTPlayerConfig(configData);
75
+ private setPlayerConfig(configData: playerConfigType, version : string | number) {
76
+ this.playerConfig = new LTPlayerConfig(version);
77
+ this.playerConfig.mapConfigData(configData);
75
78
  }
76
79
 
77
80
  /**
@@ -135,7 +138,7 @@ export namespace LTPlayer {
135
138
 
136
139
  this.plyr = player;
137
140
 
138
- this.devMethodePlayer = new LTPlayerDevMethode.Player(player);
141
+ this.devMethodePlayer = new LTPlayerDevMethode.Player(this);
139
142
 
140
143
  this.posterManager.init(this);
141
144
 
@@ -144,7 +147,7 @@ export namespace LTPlayer {
144
147
  }
145
148
 
146
149
  if (this.playerConfig.getDevice() !== 'mobile') {
147
- this.miniPlayer.init(player, this.templateService, this.iconService);
150
+ this.miniPlayer.init(player, this.templateService, this.iconService, this.playerConfig.getPlayerType(), this);
148
151
  }
149
152
  }
150
153
 
@@ -164,6 +167,13 @@ export namespace LTPlayer {
164
167
  return this.devMethodePreload;
165
168
  }
166
169
 
170
+ enterMiniPlayer() {
171
+ return this.devMethodePlayer.enterMiniPlayer()
172
+ }
173
+ exitMiniPlayer() {
174
+ return this.devMethodePlayer.exitMiniPlayer()
175
+ }
176
+
167
177
  destruct() {
168
178
  let _this = this;
169
179
 
@@ -206,7 +216,7 @@ export namespace LTPlayer {
206
216
  }
207
217
 
208
218
  this.miniPlayer = new LTPlayerMini();
209
- this.setPlayerConfig(configData.body);
219
+ this.setPlayerConfig(configData.body, configData.version);
210
220
  this.initPoster(configData.body);
211
221
  this.initPlayer();
212
222
  this.setEvents();
@@ -254,7 +264,7 @@ export namespace LTPlayer {
254
264
 
255
265
  this.plyr = player;
256
266
 
257
- this.devMethodePlayer = new LTPlayerDevMethode.Player(player);
267
+ this.devMethodePlayer = new LTPlayerDevMethode.Player(this);
258
268
 
259
269
  this.posterManager.init(this);
260
270
 
@@ -263,7 +273,7 @@ export namespace LTPlayer {
263
273
  }
264
274
 
265
275
  if (this.playerConfig.getDevice() !== 'mobile') {
266
- this.miniPlayer.init(player, this.templateService, this.iconService);
276
+ this.miniPlayer.init(player, this.templateService, this.iconService, this.playerConfig.getPlayerType(), this);
267
277
  }
268
278
  }
269
279
 
@@ -283,15 +293,52 @@ export namespace LTPlayer {
283
293
  playerContainer.insertAdjacentHTML("afterend", this.templateService.getOnloadPoster({logo: logo})) ;
284
294
  }
285
295
 
286
- private setPlayerConfig(configData: playerConfigType) {
287
- this.playerConfig = new LTPlayerConfig(configData);
296
+ private setPlayerConfig(configData: playerConfigType, version: string | number) {
297
+ this.playerConfig = new LTPlayerConfig(version);
298
+ this.playerConfig.mapConfigData(configData);
288
299
  }
289
300
 
290
301
  public getPlayer() {
291
302
  return this.plyr;
292
303
  }
293
304
 
305
+ play() {
306
+ this.devMethodePlayer.play();
307
+ }
308
+
309
+ pause() {
310
+ this.devMethodePlayer.pause();
311
+ }
312
+
313
+ stop() {
314
+ this.devMethodePlayer.stop();
315
+ }
316
+
317
+ preload() {
318
+ return this.devMethodePreload;
319
+ }
320
+
321
+ enterMiniPlayer() {
322
+ return this.devMethodePlayer.enterMiniPlayer()
323
+ }
324
+
325
+ exitMiniPlayer() {
326
+ return this.devMethodePlayer.exitMiniPlayer()
327
+ }
328
+
294
329
  destruct() {
330
+ let _this = this;
331
+
332
+ return new Promise((resolve) => {
333
+ _this.additionalInfoService.remove(this);
334
+
335
+ _this.additionalInfoService = null;
336
+
337
+ this.plyr.destroy(() => {
338
+ _this = undefined;
339
+ resolve(true);
340
+ })
341
+ })
295
342
  }
296
343
  setDesktopEvents() {
297
344
  this.desktopEvents = new LTPlayerEvents.Desktop();
@@ -155,6 +155,8 @@ export namespace LTPlayerAdditionalInfo {
155
155
  window.Player.players.forEach( item => {item.plyr.pause()});
156
156
 
157
157
  __this.dragCloseModal(controller);
158
+
159
+ controller.playerInstance.playerControl.mobileEvents.showControls(controller.playerInstance)
158
160
  })
159
161
  }
160
162
  })
@@ -173,8 +175,7 @@ export namespace LTPlayerAdditionalInfo {
173
175
  if (playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
174
176
 
175
177
  modal.style.removeProperty('bottom')
176
- playerControlsContainer.classList.remove('plyr__controls-enable-addInfo')
177
-
178
+ playerControlsContainer.classList.remove('plyr__controls-enable-addInfo');
178
179
 
179
180
  setTimeout(() => {
180
181
  const modalBody = playerControlsContainer.querySelector('.player-lt__modal__mobile');
@@ -186,6 +187,9 @@ export namespace LTPlayerAdditionalInfo {
186
187
  if (background) {
187
188
  background.classList.add('d-none');
188
189
  }
190
+
191
+ controller.playerInstance.playerControl.mobileEvents.showControls(controller.playerInstance);
192
+
189
193
  }, 150)
190
194
 
191
195
  }
@@ -0,0 +1,200 @@
1
+ import {playerConfigType} from "../../global/types/ModuleTypes";
2
+ import {LTPlayerConfigProcessor} from "./LTPlayerConfigProcessor";
3
+ export class LTPlayerConfig {
4
+
5
+ private configData: playerConfigType = {
6
+ version : null,
7
+ preload: false,
8
+ autoPlay : false,
9
+ videoTitle: '',
10
+ posterImage: '',
11
+ videoParagraph: '',
12
+ videoUrl : false,
13
+ playerId: '',
14
+ playerContainer: '',
15
+ vimeo: false,
16
+ youtube: {
17
+ 'controls': 0,
18
+ 'noCookie': false,
19
+ 'rel': 0,
20
+ 'showinfo': 0,
21
+ 'iv_load_policy': 3,
22
+ 'modestbranding': 1,
23
+ 'playsinline': true,
24
+ },
25
+ defaultConfig : false,
26
+ share: null,
27
+ chapters : null,
28
+ playerType: null,
29
+ device : 'desktop',
30
+ observe : false
31
+ }
32
+ processor : LTPlayerConfigProcessor.Map
33
+
34
+
35
+ /**
36
+ * @param version
37
+ */
38
+ constructor(version: string | number) {
39
+ this.processor = new LTPlayerConfigProcessor.Map();
40
+ this.setVersion(version);
41
+ this.processor.setVersion(this.configData.version);
42
+ }
43
+
44
+ mapConfigData(config : playerConfigType) {
45
+
46
+ Object.keys(this.configData).forEach(instanceItem => {
47
+
48
+ if (this.processor.version === 1) {
49
+ let process = this.processor.processItem(instanceItem, config);
50
+
51
+ if (process) {
52
+ this.configData[instanceItem] = process;
53
+ }
54
+ } else {
55
+ let process = this.processor.processItem(instanceItem, (config[instanceItem]) ?? null);
56
+
57
+ if (process) {
58
+ this.configData[instanceItem] = process;
59
+ }
60
+ }
61
+ })
62
+ }
63
+
64
+ setVersion(version : string | number) {
65
+
66
+ if (typeof version === 'string') {
67
+ return this.configData.version = parseInt(version);
68
+ }
69
+
70
+ this.configData.version = version;
71
+ }
72
+
73
+ getVersion() {
74
+ return this.configData.version
75
+ }
76
+
77
+ getObserve() {
78
+ return this.configData.observe
79
+ }
80
+
81
+ isObserveHeight() {
82
+ return this.configData.observe.height;
83
+ }
84
+
85
+ isObserveWidth() {
86
+ return this.configData.observe.width;
87
+ }
88
+
89
+ getDimensions() {
90
+ return this.configData.dimensions
91
+ }
92
+
93
+ getAdditionalInfo() {
94
+ return this.configData.additionalInfo;
95
+ }
96
+
97
+ getVideoTitle() {
98
+ return this.configData.videoTitle;
99
+ }
100
+
101
+ getPosterImage() {
102
+ return this.configData.posterImage;
103
+ }
104
+
105
+ getParagraph() {
106
+ return this.configData.videoParagraph;
107
+ }
108
+
109
+ getVideoType() {
110
+ return this.configData.videoUrl.videoType;
111
+ }
112
+
113
+ getVideoUrl() {
114
+ return this.configData.videoUrl;
115
+ }
116
+
117
+ getPlayerId() {
118
+ return this.configData.playerId;
119
+ }
120
+
121
+ getConfigData() {
122
+ return this.configData;
123
+ }
124
+
125
+ getPlayerElementContainer() {
126
+ return this.configData.playerContainer;
127
+ }
128
+
129
+ getVideoOrigin() {
130
+ return this.configData.videoUrl.origin;
131
+ }
132
+
133
+ /**
134
+ *
135
+ * @param origin
136
+ */
137
+ getConfigByOrigin(origin: string) {
138
+ return (this.configData[origin] !== undefined) ? this.configData[origin] : null;
139
+ }
140
+
141
+ getDefaultConfigItems() {
142
+ return this.configData.defaultConfig;
143
+ }
144
+
145
+ getChapters() {
146
+ return this.configData.chapters
147
+ }
148
+
149
+ isShareData() {
150
+ if (this.configData.share) {
151
+ return Object.keys(this.configData.share).length > 0;
152
+ }
153
+
154
+ return false;
155
+ }
156
+
157
+ getShareData() {
158
+ return this.configData.share
159
+ }
160
+
161
+ getCaptions () {
162
+ return this.configData.defaultConfig.captions
163
+ }
164
+
165
+ getPlayerType() {
166
+ return this.configData.playerType
167
+ }
168
+
169
+ setPlayerId(id: number) {
170
+ this.configData.playerId = id;
171
+ }
172
+
173
+ isAutoPlay() {
174
+ return this.configData.autoPlay;
175
+ }
176
+
177
+ getPreload() {
178
+ return this.configData.preload;
179
+ }
180
+ isAutoPreload() {
181
+ return this.configData.preload.autoType;
182
+ }
183
+
184
+ getDevice() {
185
+ return this.configData.device;
186
+ }
187
+
188
+ getEmbedOrigin() {
189
+ return {[this.getVideoOrigin()] : this.getConfigByOrigin(this.getVideoOrigin())};
190
+ }
191
+
192
+ getFullscreenMode() {
193
+ if (this.getDevice() === 'mobile') {
194
+ return {fullscreen: {enabled: false}}
195
+ } else {
196
+ return false
197
+ }
198
+ }
199
+ }
200
+