@latest-thinking/lt-player 1.0.7-b → 1.0.7-d
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.
- package/dist/js/lt-player-main.js +1 -1
- package/dist/js/lt-player-main.js.map +1 -1
- package/package.json +1 -1
- package/src/components/LTPlayerSetup.ts +7 -0
- package/src/components/addInfo/LTPlayerAddInfoDesktop.ts +2 -3
- package/src/components/controls/LTPlayerControlsEvents.ts +0 -1
- package/src/components/events/LTPlayerDesktop.ts +2 -2
- package/src/components/events/LTPlayerMobile.ts +4 -4
- package/src/components/poster/LTPlayerPosterEvents.ts +41 -28
- package/src/services/ResizeService.ts +24 -30
package/package.json
CHANGED
|
@@ -180,6 +180,13 @@ export class LTPlayerSetup {
|
|
|
180
180
|
const processVideo = () => {
|
|
181
181
|
let videoTag = document.createElement('video');
|
|
182
182
|
videoTag.src = url;
|
|
183
|
+
|
|
184
|
+
if (url.includes('.m3u8')) {
|
|
185
|
+
return new Promise((resolve) => {
|
|
186
|
+
resolve('portrait')
|
|
187
|
+
})
|
|
188
|
+
}
|
|
189
|
+
|
|
183
190
|
return new Promise((resolve) => {
|
|
184
191
|
videoTag.addEventListener( "loadedmetadata", function (e) {
|
|
185
192
|
if (this.videoWidth > this.videoHeight) {
|
|
@@ -2,7 +2,7 @@ import {LTPLayerAddInfo} from "./LTPlayerAddInfoManager";
|
|
|
2
2
|
import {additionalInformation} from "../../global/types/ModuleTypes";
|
|
3
3
|
|
|
4
4
|
export class LTPlayerAddInfoDesktop {
|
|
5
|
-
set(controller: LTPLayerAddInfo.Controller) {
|
|
5
|
+
set(controller: LTPLayerAddInfo.Controller, type: string) {
|
|
6
6
|
|
|
7
7
|
const playerContainer = controller.plyr.elements.container;
|
|
8
8
|
const playerControlsContainer = controller.plyr.elements.controls;
|
|
@@ -10,7 +10,6 @@ export class LTPlayerAddInfoDesktop {
|
|
|
10
10
|
let additionalInfoBodyIn: Element = playerControlsContainer.querySelector('.lt-player__additional-info');
|
|
11
11
|
let instance = controller;
|
|
12
12
|
|
|
13
|
-
|
|
14
13
|
const getInfoButtons = (selector: Element): NodeList => {
|
|
15
14
|
|
|
16
15
|
if (!selector) {
|
|
@@ -24,7 +23,7 @@ export class LTPlayerAddInfoDesktop {
|
|
|
24
23
|
const infoButtonsOut: NodeList = getInfoButtons(additionalInfoBodyOut);
|
|
25
24
|
const infoButtonsIn: NodeList = getInfoButtons(additionalInfoBodyIn);
|
|
26
25
|
|
|
27
|
-
if (
|
|
26
|
+
if (type == 'in') {
|
|
28
27
|
buttons = infoButtonsIn;
|
|
29
28
|
} else {
|
|
30
29
|
buttons = infoButtonsOut;
|
|
@@ -65,7 +65,7 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
|
|
|
65
65
|
}
|
|
66
66
|
eventManager.onReadyPlayer();
|
|
67
67
|
eventManager.modal(instance);
|
|
68
|
-
instance.posterManager.desktopEvents.
|
|
68
|
+
instance.posterManager.desktopEvents.posterBody(instance);
|
|
69
69
|
|
|
70
70
|
if (instance.playerConfig.getPreload()) {
|
|
71
71
|
eventManager.preloadPoster.ready(instance);
|
|
@@ -118,7 +118,7 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
|
|
|
118
118
|
plyr.embed.ready().then (function LTPlayerEmbedReady() {
|
|
119
119
|
eventManager.modal(instance);
|
|
120
120
|
eventManager.onReadyPlayer();
|
|
121
|
-
instance.posterManager.desktopEvents.
|
|
121
|
+
instance.posterManager.desktopEvents.posterBody(instance);
|
|
122
122
|
if (instance.playerConfig.getPreload()) {
|
|
123
123
|
eventManager.preloadPoster.ready(instance);
|
|
124
124
|
}
|
|
@@ -61,7 +61,7 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
eventManager.onReadyPlayer();
|
|
64
|
-
instance.posterManager.mobileEvents.
|
|
64
|
+
instance.posterManager.mobileEvents.posterBody(instance);
|
|
65
65
|
|
|
66
66
|
instance.playerControl.mobileEvents.seekBar(instance);
|
|
67
67
|
|
|
@@ -102,11 +102,11 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
102
102
|
let plyr: Plyr = this.plyr;
|
|
103
103
|
|
|
104
104
|
if (plyr.isEmbed) {
|
|
105
|
-
plyr.on('ready', function LTPLayerMobileReadyEmbed() {
|
|
106
|
-
plyr.embed.ready().then(function LTPlayerEmbedReady() {
|
|
105
|
+
plyr.on('ready', function LTPLayerMobileReadyEmbed(): void {
|
|
106
|
+
plyr.embed.ready().then(function LTPlayerEmbedReady():void {
|
|
107
107
|
eventManager.onReadyPlayer();
|
|
108
108
|
instance.playerControl.mobileEvents.seekBar(instance);
|
|
109
|
-
instance.posterManager.mobileEvents.
|
|
109
|
+
instance.posterManager.mobileEvents.posterBody(instance);
|
|
110
110
|
if (instance.playerConfig.getPreload()) {
|
|
111
111
|
eventManager.preloadPoster.ready(instance);
|
|
112
112
|
}
|
|
@@ -78,50 +78,65 @@ export namespace LTPlayerPosterEvents {
|
|
|
78
78
|
|
|
79
79
|
export class Desktop {
|
|
80
80
|
/**
|
|
81
|
-
* Add play event on poster
|
|
81
|
+
* Add play event on poster
|
|
82
82
|
*/
|
|
83
|
-
|
|
83
|
+
posterBody(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
84
84
|
|
|
85
|
-
const common = new LTPlayerPosterEvents.Common();
|
|
85
|
+
const common: Common = new LTPlayerPosterEvents.Common();
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
const playerContainer: HTMLElement = instance.plyr.elements.container;
|
|
88
|
+
const posterBody: HTMLElement = playerContainer.querySelector('.lt-player__poster__body');
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if (posterBody) {
|
|
92
|
+
posterBody.addEventListener('click', function LTPlayerPosterButtons(event) {
|
|
89
93
|
event.preventDefault();
|
|
94
|
+
|
|
95
|
+
if((event.target as HTMLInputElement).classList.contains('poster-lt-player-share') ||
|
|
96
|
+
(event.target as HTMLInputElement).classList.contains('filter')
|
|
97
|
+
) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
90
101
|
instance.playerControl.desktopEvents.titleLineBreak(instance);
|
|
91
102
|
instance.playerControl.desktopEvents.playPauseIcon(instance, 'timeupdate');
|
|
92
103
|
common.poster.reset(instance);
|
|
104
|
+
|
|
93
105
|
})
|
|
94
|
-
}
|
|
106
|
+
}
|
|
95
107
|
}
|
|
96
108
|
}
|
|
97
109
|
|
|
98
110
|
export class Mobile {
|
|
99
111
|
/**
|
|
100
|
-
* Add play event on poster
|
|
112
|
+
* Add play event on poster mobile
|
|
101
113
|
*/
|
|
102
|
-
|
|
114
|
+
posterBody(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
103
115
|
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const
|
|
116
|
+
const playerContainer: HTMLElement = instance.plyr.elements.container;
|
|
117
|
+
const playerPoster: Element = playerContainer.querySelector('.plyr__poster');
|
|
118
|
+
const playerBody: Element = playerContainer.querySelector('.lt-player__poster__body');
|
|
119
|
+
const common: Common = new LTPlayerPosterEvents.Common();
|
|
107
120
|
|
|
108
|
-
|
|
109
|
-
|
|
121
|
+
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerBody);
|
|
122
|
+
|
|
123
|
+
if (mobileEvent) {
|
|
124
|
+
mobileEvent.on('singletap', function LTPlayerMobilePosterPlay() {
|
|
110
125
|
|
|
111
|
-
|
|
112
|
-
|
|
126
|
+
if (playerPoster.classList.contains('d-none')) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
113
129
|
|
|
114
|
-
|
|
130
|
+
instance.playerControl.desktopEvents.titleLineBreak(instance);
|
|
115
131
|
|
|
116
|
-
|
|
117
|
-
|
|
132
|
+
instance.playerControl.mobileEvents.playPauseIcon(instance, 'timeupdate');
|
|
133
|
+
common.poster.reset(instance);
|
|
118
134
|
|
|
119
|
-
|
|
135
|
+
playerContainer.classList.remove('plyr__poster-enabled');
|
|
120
136
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
});
|
|
137
|
+
instance.playerControl.mobileEvents.showControls(instance);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
125
140
|
}
|
|
126
141
|
|
|
127
142
|
/**
|
|
@@ -138,9 +153,9 @@ export namespace LTPlayerPosterEvents {
|
|
|
138
153
|
}
|
|
139
154
|
|
|
140
155
|
showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
141
|
-
const playerContainer = instance.plyr.elements.container;
|
|
142
|
-
const playerControlsContainer = instance.plyr.elements.controls;
|
|
143
|
-
const playerPoster = playerContainer.querySelector('.plyr__poster');
|
|
156
|
+
const playerContainer: HTMLElement = instance.plyr.elements.container;
|
|
157
|
+
const playerControlsContainer: HTMLElement = instance.plyr.elements.controls;
|
|
158
|
+
const playerPoster: Element = playerContainer.querySelector('.plyr__poster');
|
|
144
159
|
|
|
145
160
|
|
|
146
161
|
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerPoster);
|
|
@@ -153,7 +168,5 @@ export namespace LTPlayerPosterEvents {
|
|
|
153
168
|
});
|
|
154
169
|
}
|
|
155
170
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
171
|
}
|
|
159
172
|
}
|
|
@@ -148,9 +148,7 @@ export class ResizeService {
|
|
|
148
148
|
this.playerInstance.plyr.elements.container.insertAdjacentHTML("afterend", buttonsTemplate);
|
|
149
149
|
let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
|
|
150
150
|
inserted.classList.add('lt-player__additional-info__is_set_out-side');
|
|
151
|
-
|
|
152
|
-
deskEvent.set(controller);
|
|
153
|
-
})
|
|
151
|
+
deskEvent.set(controller, 'out');
|
|
154
152
|
}
|
|
155
153
|
|
|
156
154
|
const createAddInfoButtonsInSide = () => {
|
|
@@ -166,7 +164,7 @@ export class ResizeService {
|
|
|
166
164
|
let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
|
|
167
165
|
inserted.classList.add('lt-player__additional-info__is_set_in-side');
|
|
168
166
|
|
|
169
|
-
deskEvent.set(controller);
|
|
167
|
+
deskEvent.set(controller, 'in');
|
|
170
168
|
} else {
|
|
171
169
|
this.playerInstance.plyr.on('ready', () => {
|
|
172
170
|
|
|
@@ -176,43 +174,39 @@ export class ResizeService {
|
|
|
176
174
|
let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
|
|
177
175
|
inserted.classList.add('lt-player__additional-info__is_set_in-side');
|
|
178
176
|
|
|
179
|
-
deskEvent.set(controller);
|
|
177
|
+
deskEvent.set(controller, 'in');
|
|
180
178
|
})
|
|
181
179
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
180
|
}
|
|
186
181
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (this.addInfoInSide && containerWidth + 70 <= 380) {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
182
|
+
if (containerWidth >= 380) {
|
|
192
183
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
184
|
+
if (this.addInfoInSide && (containerWidth + 70 <= 380)) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
196
187
|
|
|
197
|
-
|
|
198
|
-
|
|
188
|
+
if (this.addInfoOutSide) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
199
191
|
|
|
200
|
-
|
|
201
|
-
|
|
192
|
+
this.addInfoOutSide = true;
|
|
193
|
+
this.addInfoInSide = false;
|
|
202
194
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}
|
|
195
|
+
createAddInfoButtonsOutSide();
|
|
196
|
+
} else {
|
|
206
197
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
198
|
+
if (this.addInfoOutSide && (containerWidth + 70 >= 380)) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
210
201
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
202
|
+
if (this.addInfoInSide) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
215
205
|
|
|
206
|
+
this.addInfoInSide = true;
|
|
207
|
+
this.addInfoOutSide = false;
|
|
208
|
+
createAddInfoButtonsInSide();
|
|
209
|
+
}
|
|
216
210
|
}
|
|
217
211
|
|
|
218
212
|
protected setDimensions(containerWidth: number, containerHeight: number, defaultData: defaultType) {
|