@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.
- package/dist/css/lt-player-main.css +1 -1
- package/dist/css/lt-player-main.css.map +1 -1
- 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/assets/sass/abstracts/_mixins.scss +32 -0
- package/src/assets/sass/abstracts/_variables.scss +5 -0
- package/src/assets/sass/core/_player.scss +18 -0
- package/src/assets/sass/sections/_additional-info.scss +7 -0
- package/src/assets/sass/sections/_poster.scss +250 -177
- package/src/assets/sass/sections/_settings.scss +6 -4
- package/src/assets/sass/sections/_share.scss +2 -8
- package/src/assets/sass/sections/controllers/_botom.scss +1 -0
- package/src/components/LTPlayerType.ts +6 -1
- package/src/components/addInfo/LTPlayerAddInfoDesktop.ts +39 -12
- package/src/components/addInfo/LTPlayerAddInfoMobile.ts +43 -7
- package/src/components/config/LTPlayerConfigProcessor.ts +1 -1
- package/src/components/events/LTPlayerDesktop.ts +1 -1
- package/src/components/poster/LTPlayerPoster.ts +6 -1
- package/src/services/Helper.ts +27 -0
- package/src/services/ResizeService.ts +34 -1
- package/src/views/poster.handlebars +43 -10
- package/src/views/share.handlebars +2 -2
|
@@ -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
|
|
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
|
|
43
|
-
modal
|
|
44
|
-
id
|
|
45
|
-
object_data
|
|
46
|
-
[key]
|
|
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
|
|
51
|
-
modal
|
|
52
|
-
id
|
|
53
|
-
data
|
|
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(
|
|
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(
|
|
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
|
-
|
|
93
|
-
|
|
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
|
-
|
|
104
|
-
|
|
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
|
}
|
|
@@ -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
|
|
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
|
|
package/src/services/Helper.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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="#
|
|
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="#
|
|
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>
|