@latest-thinking/lt-player 1.0.5 → 1.0.6-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 (52) hide show
  1. package/.babelrc +2 -1
  2. package/dist/css/lt-player-main.css +1 -1
  3. package/dist/css/lt-player-main.css.map +1 -1
  4. package/dist/js/lt-player-main.js +1 -1
  5. package/dist/js/lt-player-main.js.map +1 -1
  6. package/package.json +5 -3
  7. package/src/assets/sass/abstracts/_mixins.scss +5 -5
  8. package/src/assets/sass/abstracts/_placeholders.scss +5 -5
  9. package/src/assets/sass/abstracts/_variables.scss +7 -7
  10. package/src/assets/sass/components/_modal.scss +61 -19
  11. package/src/assets/sass/sections/_additional-info.scss +6 -6
  12. package/src/assets/sass/sections/_control.scss +12 -11
  13. package/src/assets/sass/sections/_poster.scss +52 -10
  14. package/src/assets/sass/sections/_settings.scss +14 -12
  15. package/src/assets/sass/sections/_share.scss +263 -95
  16. package/src/assets/sass/sections/_subtitles.scss +14 -1
  17. package/src/assets/sass/sections/controllers/_botom.scss +160 -98
  18. package/src/assets/sass/sections/controllers/_mini-player.scss +18 -3
  19. package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +48 -85
  20. package/src/assets/sass/sections/controllers/_top.scss +39 -13
  21. package/src/components/LTPlayerDevMethode.ts +23 -3
  22. package/src/components/LTPlayerHls.ts +29 -0
  23. package/src/components/LTPlayerSetup.ts +14 -9
  24. package/src/components/LTPlayerType.ts +85 -37
  25. package/src/components/addInfo/LTPlayerAddInfoManager.ts +12 -5
  26. package/src/components/addInfo/LTPlayerAdditionalInfoEvents.ts +37 -12
  27. package/src/components/config/LTPlayerConfig.ts +44 -1
  28. package/src/components/config/LTPlayerConfigProcessor.ts +9 -5
  29. package/src/components/controls/LTPlayerControlsEvents.ts +26 -10
  30. package/src/components/controls/LTPlayerMini.ts +75 -5
  31. package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +2 -2
  32. package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +4 -4
  33. package/src/components/events/LTPlayer.ts +10 -1
  34. package/src/components/events/LTPlayerCommon.ts +7 -8
  35. package/src/components/events/LTPlayerDesktop.ts +29 -2
  36. package/src/components/events/LTPlayerMobile.ts +27 -0
  37. package/src/components/poster/LTPlayerPoster.ts +36 -22
  38. package/src/components/poster/LTPlayerPosterEvents.ts +10 -7
  39. package/src/components/poster/LTPlayerPosterManager.ts +3 -10
  40. package/src/components/share/LTPlayerShareDesktop.ts +120 -0
  41. package/src/components/share/LTPlayerShareEvents.ts +30 -69
  42. package/src/components/share/{LTPlayerShare.ts → LTPlayerShareManager.ts} +26 -8
  43. package/src/components/share/LTPlayerShareMobile.ts +154 -0
  44. package/src/components/video/LTPlayerVideo.ts +49 -0
  45. package/src/global/controllers/LTPlayerController.ts +8 -3
  46. package/src/services/Helper.ts +24 -0
  47. package/src/services/ResizeService.ts +33 -10
  48. package/src/views/additionalInfo.handlebars +58 -0
  49. package/src/views/background.handlebars +1 -1
  50. package/src/views/controls.handlebars +6 -6
  51. package/src/views/poster.handlebars +2 -1
  52. package/src/views/share.handlebars +81 -78
@@ -4,37 +4,55 @@ import {IconsService} from "../../services/IconsService";
4
4
  import {TemplateService} from "../../services/TemplateService";
5
5
  import {LTPlayerShareEvents} from "./LTPlayerShareEvents";
6
6
  import {shareType} from "../../global/types/ModuleTypes";
7
+ import {LTPlayerShareDesktop} from "./LTPlayerShareDesktop";
8
+ import {LTPlayerShareMobile} from "./LTPlayerShareMobile";
7
9
 
8
- export class LTPlayerShare {
10
+ export class LTPlayerShareManager {
9
11
  instance: LTPlayer.LandscapeType | LTPlayer.PortraitType
10
12
  playerConfig: LTPlayerConfig
11
13
  iconService: IconsService
12
14
  templateService: TemplateService
13
- events: shareType = { desktop: new LTPlayerShareEvents.desktop(), mobile: new LTPlayerShareEvents.mobile() }
14
-
15
- constructor() {
15
+ events: shareType = {
16
+ desktop : undefined,
17
+ mobile : undefined
16
18
  }
19
+ desktop : LTPlayerShareDesktop
20
+ mobile: LTPlayerShareMobile
17
21
 
18
22
  init(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
19
23
  this.instance = instance;
20
24
  this.playerConfig = instance.playerConfig;
21
25
  this.templateService = instance.templateService;
22
26
  this.iconService = instance.iconService;
23
- this.setTemplate();
24
27
  this.appendScriptTag();
28
+ this.setByDevice();
25
29
  }
26
30
 
27
- setTemplate() {
28
- const playerContainer = this.instance.plyr.elements.wrapper;
29
- playerContainer.insertAdjacentHTML("afterend", this.templateService.getShare(this.playerConfig.getShareData()));
31
+ setByDevice() {
32
+ switch (this.playerConfig.getDevice()) {
33
+ case "desktop":
34
+ this.desktop = new LTPlayerShareDesktop(this);
35
+ this.events.desktop = new LTPlayerShareEvents.desktop(this);
36
+ break
37
+ case "mobile":
38
+ this.mobile = new LTPlayerShareMobile(this);
39
+ this.events.mobile = new LTPlayerShareEvents.mobile(this)
40
+ }
30
41
  }
31
42
 
32
43
  appendScriptTag() {
33
44
  const script = document.createElement("script");
45
+ script.classList.add('lt-player-add-to-any')
34
46
  script.type = "text/javascript";
35
47
  script.src = "https://static.addtoany.com/menu/page.js";
36
48
  script.async;
37
49
  document.body.appendChild(script);
38
50
  }
39
51
 
52
+ removeScriptTag() {
53
+ const script = document.querySelector('.lt-player-add-to-any');
54
+ if(script) {
55
+ script.remove();
56
+ }
57
+ }
40
58
  }
@@ -0,0 +1,154 @@
1
+ import {LTPlayerShareManager} from "./LTPlayerShareManager";
2
+
3
+ export class LTPlayerShareMobile {
4
+
5
+ manager : LTPlayerShareManager
6
+ isPlaying : boolean
7
+
8
+ constructor(instance : LTPlayerShareManager) {
9
+ this.manager = instance;
10
+ }
11
+
12
+ activeModal() {
13
+ if (!this.manager.playerConfig.getShareData().canonicalUrl) {
14
+ if (!this.manager.playerConfig.getShareData().embedUrl) {
15
+ return
16
+ } else {
17
+ this.createModal();
18
+ this.setCopyContent(true);
19
+ }
20
+ } else {
21
+ this.createModal();
22
+ this.setCopyContent(false);
23
+ }
24
+
25
+ (window as any).a2a.init_all();
26
+
27
+ this.setCopyButtonsEvents()
28
+ this.setSwitchButton()
29
+
30
+ if (this.manager.instance.plyr.playing) {
31
+ this.isPlaying = true;
32
+ this.manager.instance.plyr.pause();
33
+ } else {
34
+ this.isPlaying = false;
35
+ }
36
+
37
+ setTimeout(() => {
38
+ const shareContainer = document.querySelector('.share-controller-wrapper');
39
+ const shareContainerHeader = document.querySelector('.share-controller-mobile-modal-header');
40
+ let instance = this;
41
+
42
+ if (shareContainer) {
43
+ let mobileEvent: HammerManager = this.manager.instance.eventInstance.mobileEvents.setMobileEvent(shareContainer);
44
+ if (mobileEvent) {
45
+ mobileEvent.on('singletap', function LTPlayerMobileShareButtonsExit(event) {
46
+ event.preventDefault();
47
+ let target = event.target as HTMLElement;
48
+ if (!target.classList.contains('player-lt__close-button') && !target.classList.contains('lt-player-mobile-share')) {
49
+ instance.inactiveModal();
50
+ }
51
+ })
52
+ }
53
+ }
54
+
55
+ if (shareContainerHeader) {
56
+ let mobileEvent: HammerManager = this.manager.instance.eventInstance.mobileEvents.setMobileEvent(shareContainer);
57
+ if (mobileEvent) {
58
+ mobileEvent.on('pan', function LTPlayerMobileShareButtonsExitPan(event) {
59
+ event.preventDefault();
60
+ let target = event.target as HTMLElement;
61
+ if (!target.classList.contains('player-lt__close-button') ) {
62
+ instance.inactiveModal();
63
+ }
64
+ })
65
+ }
66
+ }
67
+ }, 100)
68
+ }
69
+ setSwitchButton() {
70
+ const switchButton = document.querySelector('.share-controller-wrapper').querySelector('.button_embed');
71
+ const urlInput = document.querySelector('.share-controller-wrapper').querySelector('.share-controller-url');
72
+ const instance = this.manager.instance;
73
+
74
+ if (!instance.playerConfig.getShareData().embedUrl || !instance.playerConfig.getShareData().canonicalUrl) {
75
+ switchButton.classList.add('d-none');
76
+ return;
77
+ }
78
+
79
+ switchButton.addEventListener('click', () => {
80
+ if (urlInput.classList.contains('canonicalUrl')) {
81
+ urlInput.classList.remove('canonicalUrl');
82
+ urlInput.classList.add('embedUrl');
83
+ this.setCopyContent(true);
84
+ } else {
85
+ urlInput.classList.add('canonicalUrl');
86
+ urlInput.classList.remove('embedUrl');
87
+ this.setCopyContent(false);
88
+ }
89
+ })
90
+ }
91
+
92
+ setCopyButtonsEvents() {
93
+ const selectors = document.querySelectorAll('.share-controller-link');
94
+ const urlInput = document.querySelector('.share-controller-wrapper').querySelector('.share-controller-url');
95
+
96
+ if (selectors.length > 0) {
97
+ selectors.forEach((button: HTMLElement) => {
98
+ button.addEventListener('click', function LTPlayerShareCopy() {
99
+ navigator.clipboard.writeText((urlInput as HTMLElement).dataset.copy);
100
+ })
101
+
102
+ })
103
+ }
104
+ }
105
+
106
+ setCopyContent(embed : boolean) {
107
+ const urlInput = document.querySelector('.share-controller-wrapper').querySelector('.share-controller-url');
108
+
109
+ if (!urlInput) {
110
+ return;
111
+ }
112
+
113
+ if (!embed) {
114
+ urlInput.classList.add('canonicalUrl');
115
+ urlInput.innerHTML = `${this.manager.instance.playerConfig.getShareData().canonicalUrl}`;
116
+ (urlInput as HTMLElement).dataset.copy = this.manager.instance.playerConfig.getShareData().canonicalUrl;
117
+ urlInput.addEventListener('click', () => {
118
+ window.open(this.manager.instance.playerConfig.getShareData().canonicalUrl)
119
+ })
120
+ return
121
+ }
122
+ urlInput.classList.add('embedUrl');
123
+ const iframe = `<iframe width="560" height="315" src="${this.manager.instance.playerConfig.getShareData().embedUrl}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>`;
124
+ (urlInput as HTMLElement).innerText = iframe;
125
+ (urlInput as HTMLElement).dataset.copy = iframe;
126
+ }
127
+
128
+ createModal() {
129
+
130
+ let modalTemplate = this.manager.instance.templateService.getShare(this.manager.playerConfig.getShareData());
131
+
132
+ const modal = document.createElement('div');
133
+ modal.classList.add('lt-player-mobile-share-modal')
134
+ modal.innerHTML = modalTemplate;
135
+
136
+ const body = document.querySelector('body');
137
+
138
+ if (body) {
139
+ body.appendChild(modal);
140
+ }
141
+ }
142
+
143
+ inactiveModal() {
144
+ const modal = document.querySelector('.lt-player-mobile-share-modal');
145
+
146
+ if (modal) {
147
+ modal.remove();
148
+ }
149
+
150
+ if (this.isPlaying) {
151
+ this.manager.instance.plyr.play();
152
+ }
153
+ }
154
+ }
@@ -0,0 +1,49 @@
1
+ import {LTPlayer} from "../LTPlayerType";
2
+ import {LTPlayerConfig} from "../config/LTPlayerConfig";
3
+ import Plyr from "plyr";
4
+
5
+ export class LTPlayerVideo {
6
+ instanceType : LTPlayer.LandscapeType | LTPlayer.PortraitType
7
+ playerConfig : LTPlayerConfig
8
+ plyr : Plyr
9
+ objectFit: string
10
+ init(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
11
+ this.instanceType = instance;
12
+ this.playerConfig = instance.playerConfig;
13
+ this.plyr = instance.plyr;
14
+ this.objectFit =instance.playerConfig.getObjectFit();
15
+ this.appendObjectFit();
16
+ }
17
+
18
+ appendObjectFit() {
19
+ if (!this.objectFit) {
20
+ return;
21
+ }
22
+
23
+ if (!this.plyr.isHTML5) {
24
+ return;
25
+ }
26
+
27
+ const videoTag = this.plyr.elements.wrapper.querySelector('video');
28
+
29
+ if (this.objectFit === 'cover') {
30
+ videoTag.style.objectFit = this.objectFit;
31
+ }
32
+ }
33
+
34
+ removeObjectFit() {
35
+ if (!this.objectFit) {
36
+ return;
37
+ }
38
+
39
+ if (!this.plyr.isHTML5) {
40
+ return;
41
+ }
42
+
43
+ const videoTag = this.plyr.elements.wrapper.querySelector('video');
44
+
45
+ if (this.objectFit === 'cover') {
46
+ videoTag.style.objectFit = null;
47
+ }
48
+ }
49
+ }
@@ -10,7 +10,9 @@ import {LTPlayerMini} from "../../components/controls/LTPlayerMini";
10
10
  import {LTPlayerDevMethode} from "../../components/LTPlayerDevMethode";
11
11
  import {LTPlayerEventsManager} from "../../components/LTPlayerEventsManager";
12
12
  import {LTPlayerPosterManager} from "../../components/poster/LTPlayerPosterManager";
13
- import {LTPlayerShare} from "../../components/share/LTPlayerShare";
13
+ import {LTPlayerShareManager} from "../../components/share/LTPlayerShareManager";
14
+ import {LTPlayerHls} from "../../components/LTPlayerHls";
15
+ import {LTPlayerVideo} from "../../components/video/LTPlayerVideo";
14
16
 
15
17
  /**
16
18
  * Default Player type Service
@@ -31,7 +33,9 @@ export class LTPlayerController {
31
33
  devMethodePreload: LTPlayerDevMethode.Preload
32
34
  eventInstance: LTPlayerEventsManager
33
35
  posterManager : LTPlayerPosterManager
34
- share : LTPlayerShare
36
+ share : LTPlayerShareManager
37
+ hls : LTPlayerHls
38
+ videoService : LTPlayerVideo
35
39
  /**
36
40
  * Base player type service
37
41
  */
@@ -41,6 +45,7 @@ export class LTPlayerController {
41
45
  this.templateService = new TemplateService();
42
46
  this.playerControl = new LTPlayerControls(this.templateService);
43
47
  this.posterManager = new LTPlayerPosterManager();
44
- this.share = new LTPlayerShare();
48
+ this.share = new LTPlayerShareManager();
49
+ this.videoService = new LTPlayerVideo();
45
50
  }
46
51
  }
@@ -88,4 +88,28 @@ export class Helper {
88
88
  }
89
89
  return url.protocol === "http:" || url.protocol === "https:";
90
90
  }
91
+
92
+ static checkIsHls(url : string): boolean {
93
+ const extensions = [
94
+ 'm3u8'
95
+ ]
96
+
97
+ let response = false;
98
+
99
+ extensions.forEach(item => {
100
+ if (url.includes(item)) {
101
+ response = true;
102
+ }
103
+ })
104
+
105
+ return response;
106
+ }
107
+
108
+ static getVideoOrientation(width: number, height: number) {
109
+ if (width > height) {
110
+ return 'landscape';
111
+ } else {
112
+ return 'portrait'
113
+ }
114
+ }
91
115
  }
@@ -55,10 +55,13 @@ export class ResizeService {
55
55
  height: 150
56
56
  },
57
57
  size : {
58
- 1067 : "lg",
59
- 800 : "md",
60
- 533 : "sm",
61
- 266 : "xs"
58
+ 1067 : "xxl",
59
+ 913 : "xl",
60
+ 820 : "lg",
61
+ 760 : "md",
62
+ 640 : "sm",
63
+ 480 : "xs",
64
+ 266 : "xxs"
62
65
  }
63
66
  }
64
67
 
@@ -145,7 +148,9 @@ export class ResizeService {
145
148
  this.playerInstance.plyr.elements.container.insertAdjacentHTML("afterend", buttonsTemplate);
146
149
  let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
147
150
  inserted.classList.add('lt-player__additional-info__is_set_out-side');
148
- deskEvent.set(controller);
151
+ this.playerInstance.plyr.on('ready', () => {
152
+ deskEvent.set(controller);
153
+ })
149
154
  }
150
155
 
151
156
  const createAddInfoButtonsInSide = () => {
@@ -154,12 +159,29 @@ export class ResizeService {
154
159
  addInfoContainer.remove();
155
160
  }
156
161
 
157
- let controlsInfoBody = this.playerInstance.plyr.elements.controls.querySelector('.content__body');
162
+ if (this.playerInstance.plyr.elements.controls !== undefined) {
163
+ let controlsInfoBody = this.playerInstance.plyr.elements.controls.querySelector('.content__body');
164
+
165
+ controlsInfoBody.insertAdjacentHTML("afterend", buttonsTemplate);
166
+ let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
167
+ inserted.classList.add('lt-player__additional-info__is_set_in-side');
168
+
169
+ deskEvent.set(controller);
170
+ } else {
171
+ this.playerInstance.plyr.on('ready', () => {
172
+
173
+ let controlsInfoBody = this.playerInstance.plyr.elements.controls.querySelector('.content__body');
174
+
175
+ controlsInfoBody.insertAdjacentHTML("afterend", buttonsTemplate);
176
+ let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
177
+ inserted.classList.add('lt-player__additional-info__is_set_in-side');
178
+
179
+ deskEvent.set(controller);
180
+ })
181
+ }
182
+
183
+
158
184
 
159
- controlsInfoBody.insertAdjacentHTML("afterend", buttonsTemplate);
160
- let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
161
- inserted.classList.add('lt-player__additional-info__is_set_in-side');
162
- deskEvent.set(controller);
163
185
  }
164
186
 
165
187
  if (containerWidth >= 380) {
@@ -282,6 +304,7 @@ export class ResizeService {
282
304
  setHeight();
283
305
  }
284
306
  } else {
307
+
285
308
  setWidth();
286
309
 
287
310
  if (version !== 1) {
@@ -1,5 +1,30 @@
1
1
  {{#modal}}
2
2
  {{#mobile}}
3
+ {{#object_data}}
4
+ <div class="player-lt__mobile__modal-header">
5
+ <span class="line-button"></span>
6
+ </div>
7
+ <div class="player-lt__mobile__modal-content">
8
+ {{#abstract}}
9
+ <h2>{{abstract.title}}</h2>
10
+ <p>{{abstract.description}}</p>
11
+ <p>{{abstract.videoDOI}}</p>
12
+ <p>{{abstract.videoCitation}}</p>
13
+ {{/abstract}}
14
+
15
+ {{#institution}}
16
+ <h2>{{institution.title}}</h2>
17
+ <img src="{{institution.image}}" alt="image">
18
+ <p>{{institution.institutionName}}</p>
19
+ <p>{{institution.description}}</p>
20
+ {{/institution}}
21
+
22
+ {{#bio}}
23
+ <h2>{{bio.title}}</h2>
24
+ <p>{{bio.description}}</p>
25
+ {{/bio}}
26
+ </div>
27
+ {{/object_data}}
3
28
  {{#data}}
4
29
  <div class="player-lt__mobile__modal-header">
5
30
  <span class="line-button"></span>
@@ -10,6 +35,39 @@
10
35
  {{/data}}
11
36
  {{/mobile}}
12
37
  {{#desktop}}
38
+ {{#object_data}}
39
+ <div class="player-lt__modal lt-modal-{{id}}">
40
+ <div class="player-lt__modal-content">
41
+ <span class="player-lt__close-button">&times;</span>
42
+ <div class="player-lt__modal-body">
43
+ {{#abstract}}
44
+ <h2>{{abstract.title}}</h2>
45
+ <p>{{abstract.description}}</p>
46
+ <hr>
47
+ <h3>Video DOI</h3>
48
+ <p>{{abstract.videoDOI}}</p>
49
+ <h3>Video Citation</h3>
50
+ <p>{{abstract.videoCitation}}</p>
51
+ {{/abstract}}
52
+
53
+ {{#institution}}
54
+ <h2>{{institution.title}}</h2>
55
+ <div class="modal-flex">
56
+ <img src="{{institution.image}}" alt="image">
57
+ <h3>{{institution.institutionName}}</h3>
58
+ </div>
59
+ <hr>
60
+ <p>{{institution.description}}</p>
61
+ {{/institution}}
62
+
63
+ {{#bio}}
64
+ <h2>{{bio.title}}</h2>
65
+ <p>{{bio.description}}</p>
66
+ {{/bio}}
67
+ </div>
68
+ </div>
69
+ </div>
70
+ {{/object_data}}
13
71
  {{#data}}
14
72
  <div class="player-lt__modal lt-modal-{{id}}">
15
73
  <div class="player-lt__modal-content">
@@ -1,4 +1,4 @@
1
- <div class="lt-player-mini-player-background">
1
+ <div class="lt-player-mini-player-background {{classObserve}}">
2
2
  <div class="logo">
3
3
  <img src="{{logo}}" alt="">
4
4
  </div>
@@ -31,14 +31,14 @@
31
31
  </div>
32
32
  </div>
33
33
  </div>
34
- <div class="lt-player-notification">
34
+ <div class="lt-player-notification landscape">
35
35
  <!-- <div class="lt-player-video-content">-->
36
36
  <!-- <div class="content__body">-->
37
37
  <!-- <h4 class="poster-title">{{videoParagraph}}</h4>-->
38
38
  <!-- <p class="poster-paragraph">{{videoTitle}}</p>-->
39
39
  <!-- </div>-->
40
40
  <!-- </div>-->
41
- <div class="lt-player-notification__notification-button-state">
41
+ <div class="lt-player-notification__notification-button-state landscape">
42
42
  <div class="player-state">
43
43
  <img class="player-state__icon filter" src="" alt="">
44
44
  </div>
@@ -167,7 +167,7 @@
167
167
  </div>
168
168
  {{#mobile}}
169
169
  <div class="plyr__controls__mobile-background d-none">
170
- <div class="lt-player-notification">
170
+ <div class="lt-player-notification portrait">
171
171
  <div class="lt-player-rewind-area">
172
172
  </div>
173
173
  <div class="lt-player-rewind lt-player-notify">
@@ -222,8 +222,8 @@
222
222
  </div>
223
223
  </div>
224
224
  </div>
225
- <div class="lt-player-notification">
226
- <div class="lt-player-notification__notification-button-state">
225
+ <div class="lt-player-notification portrait">
226
+ <div class="lt-player-notification__notification-button-state portrait">
227
227
  <div class="player-state">
228
228
  <img class="player-state__icon filter" src="" alt="">
229
229
  </div>
@@ -334,7 +334,7 @@
334
334
  </div>
335
335
  {{#mobile}}
336
336
  <div class="plyr__controls__mobile-background d-none">
337
- <div class="lt-player-notification">
337
+ <div class="lt-player-notification portrait">
338
338
  <div class="lt-player-rewind-area">
339
339
  </div>
340
340
  <div class="lt-player-rewind lt-player-notify">
@@ -1,6 +1,7 @@
1
1
  <div class="lt-player__poster">
2
2
  <div class="lt-player__poster__image-body lt-player__poster__background__grey" >
3
- <img class="lt-player__poster__img lt-player__poster__img__set-default" alt="" src="{{logoBig}}">
3
+ <img class="lt-player__poster__img lt-player__poster__img__set-default d-none" alt="" src="{{logoBig}}">
4
+ <img class="lt-player__poster__img--set-custom d-none" alt="" src="{{config.configData.posterImage}}">
4
5
  </div>
5
6
  <div class="lt-player__poster__body">
6
7
  <div class="content">