@latest-thinking/lt-player 1.0.7-d → 1.0.7-e

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.
@@ -1,5 +1,7 @@
1
1
  import {LTPLayerAddInfo} from "./LTPlayerAddInfoManager";
2
2
  import {additionalInformation} from "../../global/types/ModuleTypes";
3
+ import {LTPlayer} from "../LTPlayerType";
4
+ import {LoaderService} from "../../services/LoaderService";
3
5
 
4
6
  export class LTPlayerAddInfoDesktop {
5
7
  set(controller: LTPLayerAddInfo.Controller, type: string) {
@@ -33,24 +35,24 @@ export class LTPlayerAddInfoDesktop {
33
35
  return
34
36
  }
35
37
 
36
- const createInformationModal = (info: additionalInformation, key: string) => {
38
+ const createInformationModal = (info: additionalInformation, key: string) => {
37
39
 
38
40
  let modalTemplate = null;
39
41
 
40
42
  if (typeof info === 'object') {
41
43
  modalTemplate = controller.templateService.getAdditionalInfo({
42
- desktop : true,
43
- modal : true,
44
- id : `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,
45
- object_data : true,
46
- [key] : info
44
+ desktop: true,
45
+ modal: true,
46
+ id: `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,
47
+ object_data: true,
48
+ [key]: info
47
49
  })
48
50
  } else {
49
51
  modalTemplate = controller.templateService.getAdditionalInfo({
50
- desktop : true,
51
- modal : true,
52
- id : `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,
53
- data : info
52
+ desktop: true,
53
+ modal: true,
54
+ id: `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,
55
+ data: info
54
56
  })
55
57
  }
56
58
 
@@ -76,12 +78,18 @@ export class LTPlayerAddInfoDesktop {
76
78
  modal.classList.add('player-lt__show-modal');
77
79
  }
78
80
 
79
- window.Player.players.forEach( item => {item.plyr.pause()})
81
+ window.Player.players.forEach(item => {
82
+ if (item.plyr.playing) {
83
+ instance.playerInstance.pausedPlayer = item.plyr;
84
+ item.plyr.pause();
85
+ return;
86
+ }
87
+ })
80
88
  })
81
89
  })
82
90
  }
83
91
 
84
- windowDesktopEvents(event: MouseEvent) {
92
+ windowDesktopEvents(event: MouseEvent, instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
85
93
  const modals = document.querySelectorAll('.player-lt__modal');
86
94
  if (modals.length !== 0) {
87
95
  modals.forEach(modal => {
@@ -90,6 +98,25 @@ export class LTPlayerAddInfoDesktop {
90
98
  if (target.classList.contains('player-lt__show-modal') || target.classList.contains('player-lt__close-button')) {
91
99
  modal.classList.remove('player-lt__show-modal');
92
100
  document.querySelectorAll(".player-lt__modal").forEach(el => el.remove());
101
+
102
+ window.Player.players.forEach(item => {
103
+ if (item.pausedPlayer !== undefined) {
104
+ if (item.pausedPlayer.isEmbed) {
105
+ item.pausedPlayer.embed.play().then(function () {
106
+ return;
107
+ }).catch(function () {
108
+ // an error occurred
109
+ });
110
+ }
111
+
112
+ if (item.pausedPlayer.isHTML5) {
113
+
114
+ item.pausedPlayer.play();
115
+ return;
116
+ }
117
+ return;
118
+ }
119
+ })
93
120
  }
94
121
  }
95
122
  })
@@ -64,7 +64,13 @@ export class LTPlayerAddInfoMobile {
64
64
 
65
65
  playerControlsContainer.classList.add('player-lt__modal__mobile-show-modal');
66
66
 
67
- window.Player.players.forEach( item => {item.plyr.pause()});
67
+ window.Player.players.forEach(item => {
68
+ if (item.plyr.playing) {
69
+ instance.playerInstance.pausedPlayer = item.plyr;
70
+ item.plyr.pause();
71
+ return;
72
+ }
73
+ })
68
74
 
69
75
  __this.dragCloseModal(controller);
70
76
 
@@ -89,9 +95,24 @@ export class LTPlayerAddInfoMobile {
89
95
  if (mobileEvent) {
90
96
  mobileEvent.on('pan', function LTPlayerMobileDragDownModal() {
91
97
  closeModal();
92
- if (controller.plyr.paused) {
93
- controller.plyr.play();
94
- }
98
+ window.Player.players.forEach(item => {
99
+ if (item.pausedPlayer !== undefined) {
100
+ if (item.pausedPlayer.isEmbed) {
101
+ item.pausedPlayer.embed.play().then(function () {
102
+ return;
103
+ }).catch(function () {
104
+ // an error occurred
105
+ });
106
+ }
107
+
108
+ if (item.pausedPlayer.isHTML5) {
109
+
110
+ item.pausedPlayer.play();
111
+ return;
112
+ }
113
+ return;
114
+ }
115
+ })
95
116
  })
96
117
  }
97
118
  }
@@ -100,9 +121,24 @@ export class LTPlayerAddInfoMobile {
100
121
  if (mobileEvent) {
101
122
  mobileEvent.on('singletap', function LTPlayerMobileCloseModal() {
102
123
  closeModal();
103
- if (controller.plyr.paused) {
104
- controller.plyr.play();
105
- }
124
+ window.Player.players.forEach(item => {
125
+ if (item.pausedPlayer !== undefined) {
126
+ if (item.pausedPlayer.isEmbed) {
127
+ item.pausedPlayer.embed.play().then(function () {
128
+ return;
129
+ }).catch(function () {
130
+ // an error occurred
131
+ });
132
+ }
133
+
134
+ if (item.pausedPlayer.isHTML5) {
135
+
136
+ item.pausedPlayer.play();
137
+ return;
138
+ }
139
+ return;
140
+ }
141
+ })
106
142
  })
107
143
  }
108
144
  }
@@ -169,7 +169,7 @@ export namespace LTPlayerConfigProcessor {
169
169
  controls: false,
170
170
  active: false,
171
171
  gesture: 'media',
172
- transparent: false,
172
+ transparent: true,
173
173
  speed: true,
174
174
  portrait: true,
175
175
  keyboard: false,
@@ -103,7 +103,7 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
103
103
  window.addEventListener('click', function LTPLayerWindowClick(event: MouseEvent) {
104
104
 
105
105
  if (instance.additionalInfoService) {
106
- instance.additionalInfoService.desktopEvents.windowDesktopEvents(event);
106
+ instance.additionalInfoService.desktopEvents.windowDesktopEvents(event, instance);
107
107
  }
108
108
  LTPlayerSettingsControlsManager.closeSettingsEvent(event);
109
109
  })
@@ -2,6 +2,7 @@ import {TemplateService} from "../../services/TemplateService";
2
2
  import {LTPlayerConfig} from "../config/LTPlayerConfig";
3
3
  import {IconsService} from "../../services/IconsService";
4
4
  import Plyr from "plyr";
5
+ import {Helper} from "../../services/Helper";
5
6
 
6
7
  export class LTPlayerPoster {
7
8
  custom_selector: string = 'lt-player__poster';
@@ -22,7 +23,11 @@ export class LTPlayerPoster {
22
23
 
23
24
  const logo: string = this.iconService.getLogo();
24
25
 
25
- const posterTemplate = this.templateService.getPoster({config:this.config, logoBig: logo, isShare : !!(this.config.isShareData())});
26
+ const playerTypeString = Helper.getPlayerStringType(this.config.getPlayerType());
27
+
28
+ let templateData = {[playerTypeString]: true, config:this.config, logoBig: logo, isShare : !!(this.config.isShareData())}
29
+
30
+ const posterTemplate = this.templateService.getPoster(templateData);
26
31
 
27
32
  const container = this.plyr.elements.wrapper;
28
33
 
@@ -112,4 +112,31 @@ export class Helper {
112
112
  return 'portrait'
113
113
  }
114
114
  }
115
+
116
+ static getPlayerStringType(type: string|number)
117
+ {
118
+ let response = null;
119
+
120
+ switch (type) {
121
+ case "1":
122
+ response = 'portrait'
123
+ break
124
+ case "2":
125
+ response = 'landscape'
126
+ break
127
+ case 1:
128
+ response = 'portrait'
129
+ break
130
+ case 2:
131
+ response = 'landscape'
132
+ break
133
+ case 'portrait':
134
+ response = 'portrait'
135
+ break
136
+ case 'landscape':
137
+ response = 'landscape'
138
+ }
139
+
140
+ return response;
141
+ }
115
142
  }
@@ -5,6 +5,7 @@ import {LTPLayerAddInfoResizeManager} from "../components/addInfo/LTPLayerAddInf
5
5
  import {LTPLayerAddInfo} from "../components/addInfo/LTPlayerAddInfoManager";
6
6
  import {LTPlayerRotateDeviceService} from "./LTPlayerRotateDeviceService";
7
7
  import {LTPlayerAddInfoDesktop} from "../components/addInfo/LTPlayerAddInfoDesktop";
8
+ import {Helper} from "./Helper";
8
9
 
9
10
  /**
10
11
  * Window service (set width and height)
@@ -138,8 +139,38 @@ export class ResizeService {
138
139
 
139
140
  protected setAddInfoByDimensions(containerWidth: number, buttonsTemplate:string, deskEvent: LTPlayerAddInfoDesktop, controller: LTPLayerAddInfo.Controller) {
140
141
 
142
+
141
143
  const createAddInfoButtonsOutSide = () => {
144
+ const setButtonsByVideoType = () => {
145
+ const plyr: Plyr = this.player;
146
+
147
+ if (plyr.embed !== undefined) {
148
+ deskEvent.set(controller, 'out');
149
+ return;
150
+ }
151
+
152
+
153
+ if (this.playerInstance.playerConfig.getVideoType() === 'embedded') {
154
+ plyr.on('ready', function () {
155
+ plyr.embed.ready().then (function () {
156
+ deskEvent.set(controller, 'out');
157
+ })
158
+ })
159
+ return;
160
+ }
142
161
 
162
+ if (this.playerInstance.playerConfig.getVideoType() === 'video'){
163
+ plyr.on('ready', function () {
164
+ deskEvent.set(controller, 'out');
165
+ return;
166
+ })
167
+ deskEvent.set(controller, 'out');
168
+ return;
169
+ }
170
+
171
+
172
+
173
+ }
143
174
  let addInfoContainer = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
144
175
  if (addInfoContainer) {
145
176
  addInfoContainer.remove();
@@ -148,10 +179,12 @@ export class ResizeService {
148
179
  this.playerInstance.plyr.elements.container.insertAdjacentHTML("afterend", buttonsTemplate);
149
180
  let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
150
181
  inserted.classList.add('lt-player__additional-info__is_set_out-side');
151
- deskEvent.set(controller, 'out');
182
+
183
+ setButtonsByVideoType();
152
184
  }
153
185
 
154
186
  const createAddInfoButtonsInSide = () => {
187
+
155
188
  let addInfoContainer = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
156
189
  if (addInfoContainer) {
157
190
  addInfoContainer.remove();
@@ -1,32 +1,64 @@
1
+ {{#portrait}}
1
2
  <div class="lt-player__poster">
2
- <div class="lt-player__poster__image-body lt-player__poster__background__grey" >
3
+ <div class="lt-player__poster__image-body">
4
+ <div class="lt-player__poster--background"></div>
5
+ <img class="lt-player__poster__img lt-player__poster__img__set-default d-none" alt="" src="{{logoBig}}">
6
+ <img class="lt-player__poster__img--set-custom d-none" alt="" src="{{config.configData.posterImage}}">
7
+ </div>
8
+ <div class="lt-player__poster__body">
9
+ <div class="content">
10
+ <div class="content__header">
11
+ <img src="{{config.logo}}" alt="logo">
12
+ </div>
13
+ <div class="content__body">
14
+ <div class="poster-title">{{config.configData.videoParagraph}}</div>
15
+ <div class="poster-paragraph">{{config.configData.videoTitle}}</div>
16
+ </div>
17
+ <div class="content__footer">
18
+ <div class="poster-buttons">
19
+ <button class="poster-button-play">
20
+ <img src="{{config.play}}" alt="" class="icon--not-pressed" role="presentation">
21
+ </button>
22
+ <button class="poster-button-watch-now">
23
+ Watch now
24
+ </button>
25
+ {{#isShare}}
26
+ <button class="poster-lt-player-share" type="button">
27
+ <img class="filter" src="{{config.share}}" alt="" role="presentation">
28
+ </button>
29
+ {{/isShare}}
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ {{/portrait}}
36
+ {{#landscape}}
37
+ <div class="lt-player__poster">
38
+ <div class="lt-player__poster__image-body">
39
+ <div class="lt-player__poster--background"></div>
3
40
  <img class="lt-player__poster__img lt-player__poster__img__set-default d-none" alt="" src="{{logoBig}}">
4
41
  <img class="lt-player__poster__img--set-custom d-none" alt="" src="{{config.configData.posterImage}}">
5
42
  </div>
6
43
  <div class="lt-player__poster__body">
7
44
  <div class="content">
8
45
  <div class="content__header">
9
- <div class="poster-logo-header">
10
- <div class="logo">
11
- <img src="{{config.logo}}" alt="">
12
- </div>
13
- </div>
46
+ <div class="poster-title">{{config.configData.videoParagraph}}</div>
14
47
  </div>
15
48
  <div class="content__body">
16
- <h4 class="poster-title">{{config.configData.videoParagraph}}</h4>
17
- <p class="poster-paragraph">{{config.configData.videoTitle}}</p>
49
+ <div class="poster-paragraph">{{config.configData.videoTitle}}</div>
18
50
  </div>
19
51
  <div class="content__footer">
20
52
  <div class="poster-buttons">
21
53
  <button class="poster-button-play">
22
- <img src="{{config.play}}" alt="" class="icon--not-pressed" role="presentation" >
54
+ <img src="{{config.play}}" alt="" class="icon--not-pressed" role="presentation">
23
55
  </button>
24
56
  <button class="poster-button-watch-now">
25
57
  Watch now
26
58
  </button>
27
59
  {{#isShare}}
28
60
  <button class="poster-lt-player-share" type="button">
29
- <img class="filter" src="{{config.share}}" alt="" role="presentation" >
61
+ <img class="filter" src="{{config.share}}" alt="" role="presentation">
30
62
  </button>
31
63
  {{/isShare}}
32
64
  </div>
@@ -34,3 +66,4 @@
34
66
  </div>
35
67
  </div>
36
68
  </div>
69
+ {{/landscape}}
@@ -26,8 +26,8 @@
26
26
  <a class="button_embed lt-player-mobile-share">
27
27
  <span class="share-icon__icon lt-player-mobile-share">
28
28
  <svg class="lt-player-mobile-share" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
29
- <path d="M8.00028 17.0003C7.74428 17.0003 7.48825 16.9023 7.29325 16.7073L3.29325 12.7073C2.90225 12.3163 2.90225 11.6843 3.29325 11.2933L7.29325 7.29325C7.68425 6.90225 8.31631 6.90225 8.70731 7.29325C9.09831 7.68425 9.09831 8.31631 8.70731 8.70731L5.41434 12.0003L8.70731 15.2933C9.09831 15.6843 9.09831 16.3163 8.70731 16.7073C8.51231 16.9023 8.25628 17.0003 8.00028 17.0003Z" fill="#27282A"/>
30
- <path d="M16.0007 17.0003C16.2567 17.0003 16.5127 16.9023 16.7077 16.7073L20.7077 12.7073C21.0987 12.3163 21.0987 11.6843 20.7077 11.2933L16.7077 7.29325C16.3167 6.90225 15.6847 6.90225 15.2937 7.29325C14.9027 7.68425 14.9027 8.31631 15.2937 8.70731L18.5866 12.0003L15.2937 15.2933C14.9027 15.6843 14.9027 16.3163 15.2937 16.7073C15.4887 16.9023 15.7447 17.0003 16.0007 17.0003Z" fill="#27282A"/>
29
+ <path d="M8.00028 17.0003C7.74428 17.0003 7.48825 16.9023 7.29325 16.7073L3.29325 12.7073C2.90225 12.3163 2.90225 11.6843 3.29325 11.2933L7.29325 7.29325C7.68425 6.90225 8.31631 6.90225 8.70731 7.29325C9.09831 7.68425 9.09831 8.31631 8.70731 8.70731L5.41434 12.0003L8.70731 15.2933C9.09831 15.6843 9.09831 16.3163 8.70731 16.7073C8.51231 16.9023 8.25628 17.0003 8.00028 17.0003Z" fill="#ffffff"/>
30
+ <path d="M16.0007 17.0003C16.2567 17.0003 16.5127 16.9023 16.7077 16.7073L20.7077 12.7073C21.0987 12.3163 21.0987 11.6843 20.7077 11.2933L16.7077 7.29325C16.3167 6.90225 15.6847 6.90225 15.2937 7.29325C14.9027 7.68425 14.9027 8.31631 15.2937 8.70731L18.5866 12.0003L15.2937 15.2933C14.9027 15.6843 14.9027 16.3163 15.2937 16.7073C15.4887 16.9023 15.7447 17.0003 16.0007 17.0003Z" fill="#ffffff"/>
31
31
  </svg>
32
32
  </span>
33
33
  </a>