@latest-thinking/lt-player 1.0.4 → 1.0.5
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 -3
- 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 +10 -8
- package/src/assets/sass/app.scss +2 -2
- package/src/assets/sass/core/_fonts.scss +5 -5
- package/src/assets/sass/sections/_control.scss +35 -0
- package/src/assets/sass/sections/_poster.scss +3 -0
- package/src/assets/sass/sections/_settings.scss +1 -1
- package/src/assets/sass/sections/_subtitles.scss +4 -0
- package/src/assets/sass/sections/controllers/_botom.scss +15 -5
- package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +70 -11
- package/src/components/LTPlayerManager.ts +12 -5
- package/src/components/LTPlayerSetup.ts +31 -7
- package/src/components/LTPlayerType.ts +11 -7
- package/src/components/addInfo/LTPlayerAdditionalInfoEvents.ts +6 -2
- package/src/components/config/LTPlayerConfig.ts +192 -0
- package/src/components/config/LTPlayerConfigProcessor.ts +546 -0
- package/src/components/controls/LTPlayerChapters.ts +8 -4
- package/src/components/controls/LTPlayerControls.ts +1 -1
- package/src/components/controls/LTPlayerControlsEvents.ts +206 -65
- package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +2 -4
- package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +2 -0
- package/src/components/events/LTPlayer.ts +36 -1
- package/src/components/events/LTPlayerDesktop.ts +1 -0
- package/src/components/events/LTPlayerMobile.ts +1 -1
- package/src/components/poster/LTPlayerPoster.ts +2 -2
- package/src/components/poster/LTPlayerPosterEvents.ts +2 -0
- package/src/components/poster/LTPlayerPosterManager.ts +1 -1
- package/src/components/poster/LTPlayerPosterPreload.ts +1 -1
- package/src/components/poster/LTPlayerPosterPreloadEvents.ts +17 -6
- package/src/components/share/LTPlayerShare.ts +1 -1
- package/src/components/share/LTPlayerShareEvents.ts +20 -20
- package/src/global/controllers/LTPlayerController.ts +1 -1
- package/src/services/Helper.ts +20 -5
- package/src/services/IconsService.ts +15 -0
- package/src/services/LTPlayerRotateDeviceService.ts +8 -1
- package/src/services/ResizeService.ts +24 -6
- package/src/services/TemplateService.ts +1 -1
- package/src/views/controls.handlebars +71 -14
- package/src/views/settings.handlebars +3 -3
- package/src/views/template.handlebars +2 -2
- package/src/components/LTPlayerConfig.ts +0 -398
|
@@ -16,6 +16,7 @@ export class LTPlayerPosterPreloadEvents {
|
|
|
16
16
|
playerContainer.querySelector(`.lt-player__poster`).insertAdjacentHTML('afterend', LoaderService.getSpinner());
|
|
17
17
|
const preloadData = instance.playerConfig.getPreload();
|
|
18
18
|
const playAutoPreload = () => {
|
|
19
|
+
console.log('preload play')
|
|
19
20
|
if (preloadData.start !== 0) {
|
|
20
21
|
instance.plyr.embed.setCurrentTime(preloadData.start).then(() => {
|
|
21
22
|
instance.plyr.embed.setMuted(true).then(function () {
|
|
@@ -30,13 +31,20 @@ export class LTPlayerPosterPreloadEvents {
|
|
|
30
31
|
LoaderService.removeSpinner(playerContainer)
|
|
31
32
|
} else {
|
|
32
33
|
instance.plyr.volume = 0;
|
|
33
|
-
instance.plyr.embed
|
|
34
|
+
if (instance.plyr.embed) {
|
|
35
|
+
instance.plyr.embed.play().then(function () {
|
|
36
|
+
LoaderService.removeSpinner(playerContainer)
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
instance.plyr.play()
|
|
34
40
|
LoaderService.removeSpinner(playerContainer)
|
|
35
|
-
}
|
|
41
|
+
}
|
|
42
|
+
|
|
36
43
|
}
|
|
37
44
|
}
|
|
38
45
|
|
|
39
46
|
const pausePreload = () => {
|
|
47
|
+
console.log('preload play')
|
|
40
48
|
if (preloadData.start !== 0) {
|
|
41
49
|
instance.plyr.embed.setCurrentTime(preloadData.start).then( () => {
|
|
42
50
|
instance.plyr.embed.pause().then(function() {
|
|
@@ -45,12 +53,15 @@ export class LTPlayerPosterPreloadEvents {
|
|
|
45
53
|
});
|
|
46
54
|
});
|
|
47
55
|
} else {
|
|
48
|
-
instance.plyr.
|
|
49
|
-
|
|
56
|
+
if (instance.plyr.embed) {
|
|
57
|
+
instance.plyr.embed.pause().then(function () {
|
|
58
|
+
LoaderService.removeSpinner(playerContainer)
|
|
59
|
+
});
|
|
60
|
+
} else {
|
|
61
|
+
instance.plyr.pause()
|
|
50
62
|
LoaderService.removeSpinner(playerContainer)
|
|
51
|
-
}
|
|
63
|
+
}
|
|
52
64
|
}
|
|
53
|
-
|
|
54
65
|
LoaderService.removeSpinner(playerContainer)
|
|
55
66
|
}
|
|
56
67
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {LTPlayer} from "../LTPlayerType";
|
|
2
|
-
import {LTPlayerConfig} from "../LTPlayerConfig";
|
|
2
|
+
import {LTPlayerConfig} from "../config/LTPlayerConfig";
|
|
3
3
|
import {IconsService} from "../../services/IconsService";
|
|
4
4
|
import {TemplateService} from "../../services/TemplateService";
|
|
5
5
|
import {LTPlayerShareEvents} from "./LTPlayerShareEvents";
|
|
@@ -56,17 +56,17 @@ export namespace LTPlayerShareEvents {
|
|
|
56
56
|
}
|
|
57
57
|
})
|
|
58
58
|
|
|
59
|
-
common.getSelector(instance).shareContainer
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
if (common.getSelector(instance).shareContainer) {
|
|
60
|
+
common.getSelector(instance).shareContainer.addEventListener('click', function LTPlayerShareArea(event) {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
if ( common.getSelector(instance).shareContainer.classList.contains('share-active')) {
|
|
63
|
+
let target = event.target as HTMLElement;
|
|
64
|
+
if (target.classList.contains('share-active') || target.classList.contains('player-lt__close-button')) {
|
|
65
|
+
common.inactiveModal(instance, common.getSelector(instance));
|
|
66
|
+
}
|
|
65
67
|
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
|
|
@@ -87,17 +87,17 @@ export namespace LTPlayerShareEvents {
|
|
|
87
87
|
}
|
|
88
88
|
})
|
|
89
89
|
|
|
90
|
-
common.getSelector(instance).shareContainer
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
if (common.getSelector(instance).shareContainer) {
|
|
91
|
+
common.getSelector(instance).shareContainer.addEventListener('click', function LTPlayerShareArea(event) {
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
if ( common.getSelector(instance).shareContainer.classList.contains('share-active')) {
|
|
94
|
+
let target = event.target as HTMLElement;
|
|
95
|
+
if (target.classList.contains('share-active') || target.classList.contains('player-lt__close-button')) {
|
|
96
|
+
common.inactiveModal(instance, common.getSelector(instance));
|
|
97
|
+
}
|
|
96
98
|
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
})
|
|
100
|
+
}
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {LTPlayerConfig} from "../../components/LTPlayerConfig";
|
|
1
|
+
import {LTPlayerConfig} from "../../components/config/LTPlayerConfig";
|
|
2
2
|
import {LTPlayerControls} from "../../components/controls/LTPlayerControls";
|
|
3
3
|
import Plyr from "plyr";
|
|
4
4
|
import {TemplateService} from "../../services/TemplateService";
|
package/src/services/Helper.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {defaultType} from "../global/types/ModuleTypes";
|
|
2
2
|
|
|
3
3
|
export class Helper {
|
|
4
4
|
static getDevice() {
|
|
@@ -28,7 +28,7 @@ export class Helper {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
static processConfigData(videoUrl: string) {
|
|
31
|
+
static processConfigData(videoUrl: string | defaultType) {
|
|
32
32
|
|
|
33
33
|
const regex = /^(http:\/\/|https:\/\/)(player\.vimeo\.com|vimeo\.com|youtu\.be|www\.youtube\.com)\/([\w\/]+)(\?.*)?$/;
|
|
34
34
|
|
|
@@ -36,7 +36,7 @@ export class Helper {
|
|
|
36
36
|
let type = 'video';
|
|
37
37
|
let origin = 'video';
|
|
38
38
|
|
|
39
|
-
if ((groupMatch = regex.exec(videoUrl)) !== null) {
|
|
39
|
+
if ((groupMatch = regex.exec(<string>videoUrl)) !== null) {
|
|
40
40
|
groupMatch.forEach((match: string) => {
|
|
41
41
|
if (match !== undefined) {
|
|
42
42
|
if (match.includes('vimeo')) {
|
|
@@ -57,7 +57,7 @@ export class Helper {
|
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
static getEmbeddedID = (url: string) => {
|
|
60
|
+
static getEmbeddedID = (url: string | defaultType) => {
|
|
61
61
|
const urlGroups = url.split('?')[0].split('/');
|
|
62
62
|
if (urlGroups.length > 4) {
|
|
63
63
|
return url.split('?')[0].split('/').slice(-2)[0];
|
|
@@ -66,11 +66,26 @@ export class Helper {
|
|
|
66
66
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
static getEmbeddedHash = (url: string) => {
|
|
69
|
+
static getEmbeddedHash = (url: string | defaultType) => {
|
|
70
70
|
const urlGroups = url.split('?')[0].split('/');
|
|
71
71
|
if (urlGroups.length > 4) {
|
|
72
72
|
return url.split('?')[0].split('/').slice(-1)[0];
|
|
73
73
|
}
|
|
74
74
|
return null;
|
|
75
75
|
}
|
|
76
|
+
|
|
77
|
+
static isValidHttpUrl(string: string | defaultType) {
|
|
78
|
+
let url;
|
|
79
|
+
|
|
80
|
+
if (typeof string === 'object') {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
url = new URL(string);
|
|
86
|
+
} catch (_) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return url.protocol === "http:" || url.protocol === "https:";
|
|
90
|
+
}
|
|
76
91
|
}
|
|
@@ -33,6 +33,11 @@ export class IconsService {
|
|
|
33
33
|
'university',
|
|
34
34
|
]
|
|
35
35
|
|
|
36
|
+
playPause = [
|
|
37
|
+
'play',
|
|
38
|
+
'pause'
|
|
39
|
+
]
|
|
40
|
+
|
|
36
41
|
constructor() {
|
|
37
42
|
this.path = require.context('../assets/icons', false);
|
|
38
43
|
}
|
|
@@ -86,6 +91,16 @@ export class IconsService {
|
|
|
86
91
|
}
|
|
87
92
|
})
|
|
88
93
|
})
|
|
94
|
+
break
|
|
95
|
+
case 'playPause':
|
|
96
|
+
this.path.keys().forEach(item => {
|
|
97
|
+
this.playPause.forEach(mapElement => {
|
|
98
|
+
let name = item.replace(/(\.(?:jpg|png|svg))$/i, "").replace('./', '');
|
|
99
|
+
if (name === mapElement) {
|
|
100
|
+
Object.assign(response, {[name] : this.path(item)})
|
|
101
|
+
}
|
|
102
|
+
})
|
|
103
|
+
})
|
|
89
104
|
}
|
|
90
105
|
|
|
91
106
|
|
|
@@ -3,6 +3,13 @@ export class LTPlayerRotateDeviceService {
|
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
getDeviceOrientation() {
|
|
6
|
-
|
|
6
|
+
if (window.matchMedia("(orientation: portrait)").matches) {
|
|
7
|
+
return 'portrait';
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (window.matchMedia("(orientation: landscape)").matches) {
|
|
11
|
+
return 'landscape';
|
|
12
|
+
}
|
|
13
|
+
return 'portrait';
|
|
7
14
|
}
|
|
8
15
|
}
|
|
@@ -136,19 +136,20 @@ export class ResizeService {
|
|
|
136
136
|
protected setAddInfoByDimensions(containerWidth: number, buttonsTemplate:string, deskEvent: LTPlayerAdditionalInfo.Desktop, controller: LTPLayerAddInfo.Controller) {
|
|
137
137
|
|
|
138
138
|
const createAddInfoButtonsOutSide = () => {
|
|
139
|
-
|
|
139
|
+
|
|
140
|
+
let addInfoContainer = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
|
|
140
141
|
if (addInfoContainer) {
|
|
141
142
|
addInfoContainer.remove();
|
|
142
143
|
}
|
|
143
144
|
|
|
144
145
|
this.playerInstance.plyr.elements.container.insertAdjacentHTML("afterend", buttonsTemplate);
|
|
145
|
-
let inserted =
|
|
146
|
+
let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
|
|
146
147
|
inserted.classList.add('lt-player__additional-info__is_set_out-side');
|
|
147
148
|
deskEvent.set(controller);
|
|
148
149
|
}
|
|
149
150
|
|
|
150
151
|
const createAddInfoButtonsInSide = () => {
|
|
151
|
-
let addInfoContainer =
|
|
152
|
+
let addInfoContainer = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
|
|
152
153
|
if (addInfoContainer) {
|
|
153
154
|
addInfoContainer.remove();
|
|
154
155
|
}
|
|
@@ -156,7 +157,7 @@ export class ResizeService {
|
|
|
156
157
|
let controlsInfoBody = this.playerInstance.plyr.elements.controls.querySelector('.content__body');
|
|
157
158
|
|
|
158
159
|
controlsInfoBody.insertAdjacentHTML("afterend", buttonsTemplate);
|
|
159
|
-
let inserted =
|
|
160
|
+
let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
|
|
160
161
|
inserted.classList.add('lt-player__additional-info__is_set_in-side');
|
|
161
162
|
deskEvent.set(controller);
|
|
162
163
|
}
|
|
@@ -269,8 +270,25 @@ export class ResizeService {
|
|
|
269
270
|
}
|
|
270
271
|
}
|
|
271
272
|
|
|
272
|
-
|
|
273
|
-
|
|
273
|
+
const version = this.playerInstance.playerConfig.getVersion();
|
|
274
|
+
const observeConfig = this.playerInstance.playerConfig.getObserve();
|
|
275
|
+
|
|
276
|
+
if (observeConfig) {
|
|
277
|
+
if (observeConfig.hasOwnProperty('width') && observeConfig.width) {
|
|
278
|
+
setWidth();
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
if (observeConfig.hasOwnProperty('height') && observeConfig.height) {
|
|
282
|
+
setHeight();
|
|
283
|
+
}
|
|
284
|
+
} else {
|
|
285
|
+
setWidth();
|
|
286
|
+
|
|
287
|
+
if (version !== 1) {
|
|
288
|
+
setHeight();
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
274
292
|
setClass();
|
|
275
293
|
}
|
|
276
294
|
}
|
|
@@ -8,7 +8,7 @@ import share from '../views/share.handlebars';
|
|
|
8
8
|
import background from '../views/background.handlebars';
|
|
9
9
|
import miniPlayerControls from '../views/controls.handlebars';
|
|
10
10
|
import onloadPoster from '../views/onloadPoster.handlebars';
|
|
11
|
-
import {LTPlayerConfig} from "../components/LTPlayerConfig";
|
|
11
|
+
import {LTPlayerConfig} from "../components/config/LTPlayerConfig";
|
|
12
12
|
import {IconsService} from "./IconsService";
|
|
13
13
|
import {defaultType} from "../global/types/ModuleTypes";
|
|
14
14
|
|
|
@@ -38,16 +38,15 @@
|
|
|
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">
|
|
42
42
|
<div class="player-state">
|
|
43
|
-
<img class="player-
|
|
44
|
-
<img class="player-state__pause-icon filter" src="{{icons.pause}}" alt="">
|
|
43
|
+
<img class="player-state__icon filter" src="" alt="">
|
|
45
44
|
</div>
|
|
46
45
|
</div>
|
|
47
46
|
<div class="lt-player-rewind-area">
|
|
48
47
|
</div>
|
|
49
48
|
<div class="lt-player-rewind lt-player-notify">
|
|
50
|
-
<div class="lt-player-rewind__icon">
|
|
49
|
+
<div class="lt-player-rewind__icon lt-player-rewind__icon__landscape">
|
|
51
50
|
<div class="lt-player-rewind__icon-wrapper rotate">
|
|
52
51
|
<img class="filter" src="{{icons.play}}" alt="">
|
|
53
52
|
<img class="filter" src="{{icons.play}}" alt="">
|
|
@@ -58,7 +57,7 @@
|
|
|
58
57
|
<div class="lt-player-forward-area">
|
|
59
58
|
</div>
|
|
60
59
|
<div class="lt-player-forward lt-player-notify">
|
|
61
|
-
<div class="lt-player-forward__icon">
|
|
60
|
+
<div class="lt-player-forward__icon lt-player-forward__icon__landscape">
|
|
62
61
|
<div class="lt-player-rewind__icon-wrapper">
|
|
63
62
|
<img class="filter" src="{{icons.play}}" alt="">
|
|
64
63
|
<img class="filter" src="{{icons.play}}" alt="">
|
|
@@ -129,8 +128,8 @@
|
|
|
129
128
|
<button type="button" class="plyr__control skip-backward-seconds" data-lt-player-chapterTimeStamp="">
|
|
130
129
|
<img class="filter" src="{{icons.fast-backward}}" alt="">
|
|
131
130
|
</button>
|
|
132
|
-
<div class="bottom-controller__play-button_body">
|
|
133
|
-
<button type="button" class="plyr__control play-button"
|
|
131
|
+
<div class="bottom-controller__play-button_body bottom-controller__play-button_body__landscape">
|
|
132
|
+
<button type="button" class="plyr__control play-button">
|
|
134
133
|
<img class="bottom-controller__play-icon d-none" src="{{icons.play}}" alt="">
|
|
135
134
|
<img class="bottom-controller__pause-icon" src="{{icons.pause}}" alt="">
|
|
136
135
|
</button>
|
|
@@ -166,6 +165,34 @@
|
|
|
166
165
|
<div class="player-lt__modal__mobile__background d-none"></div>
|
|
167
166
|
<div class="player-lt__modal__mobile d-none"></div>
|
|
168
167
|
</div>
|
|
168
|
+
{{#mobile}}
|
|
169
|
+
<div class="plyr__controls__mobile-background d-none">
|
|
170
|
+
<div class="lt-player-notification">
|
|
171
|
+
<div class="lt-player-rewind-area">
|
|
172
|
+
</div>
|
|
173
|
+
<div class="lt-player-rewind lt-player-notify">
|
|
174
|
+
<div class="lt-player-rewind__icon lt-player-rewind__icon__portrait">
|
|
175
|
+
<span class="rewind">10 sec</span>
|
|
176
|
+
<div class="lt-player-rewind__icon-wrapper rotate">
|
|
177
|
+
<img class="filter" src="{{icons.play}}" alt="">
|
|
178
|
+
<img class="filter" src="{{icons.play}}" alt="">
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
<div class="lt-player-forward-area">
|
|
183
|
+
</div>
|
|
184
|
+
<div class="lt-player-forward lt-player-notify">
|
|
185
|
+
<div class="lt-player-forward__icon lt-player-forward__icon__portrait">
|
|
186
|
+
<div class="lt-player-rewind__icon-wrapper">
|
|
187
|
+
<img class="filter" src="{{icons.play}}" alt="">
|
|
188
|
+
<img class="filter" src="{{icons.play}}" alt="">
|
|
189
|
+
</div>
|
|
190
|
+
<span class="forward">10 sec</span>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
{{/mobile}}
|
|
169
196
|
{{/landscape}}
|
|
170
197
|
{{#portrait}}
|
|
171
198
|
<div class="plyr__controls">
|
|
@@ -198,20 +225,22 @@
|
|
|
198
225
|
<div class="lt-player-notification">
|
|
199
226
|
<div class="lt-player-notification__notification-button-state">
|
|
200
227
|
<div class="player-state">
|
|
201
|
-
<img class="player-
|
|
202
|
-
<img class="player-state__pause-icon filter d-none" src="{{icons.pause}}" alt="">
|
|
228
|
+
<img class="player-state__icon filter" src="" alt="">
|
|
203
229
|
</div>
|
|
204
230
|
</div>
|
|
205
231
|
<div class="lt-player-video-content">
|
|
206
232
|
<div class="content__body">
|
|
207
233
|
<h4 class="poster-title">{{videoParagraph}}</h4>
|
|
208
|
-
<
|
|
234
|
+
<div class="poster-paragraph">
|
|
235
|
+
<p class="poster-paragraph__content">{{videoTitle}}</p>
|
|
236
|
+
</div>
|
|
209
237
|
</div>
|
|
210
238
|
</div>
|
|
239
|
+
<button class="poster-paragraph__button">Read more</button>
|
|
211
240
|
<div class="lt-player-rewind-area">
|
|
212
241
|
</div>
|
|
213
242
|
<div class="lt-player-rewind lt-player-notify">
|
|
214
|
-
<div class="lt-player-rewind__icon">
|
|
243
|
+
<div class="lt-player-rewind__icon lt-player-rewind__icon__portrait">
|
|
215
244
|
<span class="rewind">10 sec</span>
|
|
216
245
|
<div class="lt-player-rewind__icon-wrapper rotate">
|
|
217
246
|
<img class="filter" src="{{icons.play}}" alt="">
|
|
@@ -222,7 +251,7 @@
|
|
|
222
251
|
<div class="lt-player-forward-area">
|
|
223
252
|
</div>
|
|
224
253
|
<div class="lt-player-forward lt-player-notify">
|
|
225
|
-
<div class="lt-player-forward__icon">
|
|
254
|
+
<div class="lt-player-forward__icon lt-player-forward__icon__portrait">
|
|
226
255
|
<div class="lt-player-rewind__icon-wrapper">
|
|
227
256
|
<img class="filter" src="{{icons.play}}" alt="">
|
|
228
257
|
<img class="filter" src="{{icons.play}}" alt="">
|
|
@@ -279,8 +308,8 @@
|
|
|
279
308
|
<button type="button" class="plyr__control skip-backward" data-lt-player-chapterTimeStamp="">
|
|
280
309
|
<img class="filter" src="{{icons.skip-backward}}" alt="">
|
|
281
310
|
</button>
|
|
282
|
-
<div class="bottom-controller__play-button_body">
|
|
283
|
-
<button type="button" class="plyr__control play-button"
|
|
311
|
+
<div class="bottom-controller__play-button_body bottom-controller__play-button_body__portrait">
|
|
312
|
+
<button type="button" class="plyr__control play-button">
|
|
284
313
|
<img class="bottom-controller__play-icon d-none" src="{{icons.play}}" alt="">
|
|
285
314
|
<img class="bottom-controller__pause-icon" src="{{icons.pause}}" alt="">
|
|
286
315
|
</button>
|
|
@@ -303,5 +332,33 @@
|
|
|
303
332
|
<div class="player-lt__modal__mobile__background d-none"></div>
|
|
304
333
|
<div class="player-lt__modal__mobile d-none"></div>
|
|
305
334
|
</div>
|
|
335
|
+
{{#mobile}}
|
|
336
|
+
<div class="plyr__controls__mobile-background d-none">
|
|
337
|
+
<div class="lt-player-notification">
|
|
338
|
+
<div class="lt-player-rewind-area">
|
|
339
|
+
</div>
|
|
340
|
+
<div class="lt-player-rewind lt-player-notify">
|
|
341
|
+
<div class="lt-player-rewind__icon lt-player-rewind__icon__portrait">
|
|
342
|
+
<span class="rewind">10 sec</span>
|
|
343
|
+
<div class="lt-player-rewind__icon-wrapper rotate">
|
|
344
|
+
<img class="filter" src="{{icons.play}}" alt="">
|
|
345
|
+
<img class="filter" src="{{icons.play}}" alt="">
|
|
346
|
+
</div>
|
|
347
|
+
</div>
|
|
348
|
+
</div>
|
|
349
|
+
<div class="lt-player-forward-area">
|
|
350
|
+
</div>
|
|
351
|
+
<div class="lt-player-forward lt-player-notify">
|
|
352
|
+
<div class="lt-player-forward__icon lt-player-forward__icon__portrait">
|
|
353
|
+
<div class="lt-player-rewind__icon-wrapper">
|
|
354
|
+
<img class="filter" src="{{icons.play}}" alt="">
|
|
355
|
+
<img class="filter" src="{{icons.play}}" alt="">
|
|
356
|
+
</div>
|
|
357
|
+
<span class="forward">10 sec</span>
|
|
358
|
+
</div>
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
</div>
|
|
362
|
+
{{/mobile}}
|
|
306
363
|
{{/portrait}}
|
|
307
364
|
{{/player}}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
<span class="line-button"></span>
|
|
4
4
|
{{#desktop}}
|
|
5
5
|
<div class="settings-controllers-enable__subtitles settings">
|
|
6
|
-
<p class="settings-text">Subtitles</p>
|
|
6
|
+
<p class="settings-text settings">Subtitles</p>
|
|
7
7
|
<label class="subtitles-body__switch settings">
|
|
8
8
|
<input id="captions-lt-player-{{id}}" class="subtitles-body__input-switch settings" value="" type="checkbox">
|
|
9
9
|
<label for="captions-lt-player-{{id}}" class="subtitles-body__slider settings"></label>
|
|
10
10
|
</label>
|
|
11
11
|
</div>
|
|
12
12
|
<div class="settings-controllers-enable__speed-range settings">
|
|
13
|
-
<p class="settings-text">Speed</p>
|
|
13
|
+
<p class="settings-text settings">Speed</p>
|
|
14
14
|
<div class="speed-range-input-body settings">
|
|
15
15
|
<output class="settings speed-range-value" style="display: flex; justify-content: center" id="speed-range-value-{{id}}"></output>
|
|
16
16
|
<input id="speed-range-{{id}}" type="range" min="0" max="3" step="1" class="speed-range-input settings">
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
{{/desktop}}
|
|
20
20
|
{{#mobile}}
|
|
21
21
|
<div class="settings-controllers-enable__speed-range settings">
|
|
22
|
-
<p class="settings-text">Speed</p>
|
|
22
|
+
<p class="settings-text settings">Speed</p>
|
|
23
23
|
<div class="speed-range-input-body mobile settings">
|
|
24
24
|
<button class="button-speed settings button_active" data-speed="1">1</button>
|
|
25
25
|
<button class="button-speed settings" data-speed="1.25">1.25</button>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{{#embedded }}
|
|
2
|
-
<div class="plyr__video-embed embed_player" data-plyr-provider="{{origin}}" data-plyr-embed-id="{{embedId}}" data-plyr-embed-hash="{{embedHash}}">
|
|
2
|
+
<div class="plyr__video-embed embed_player" data-plyr-provider="{{videoUrl.origin}}" data-plyr-embed-id="{{videoUrl.embedId}}" data-plyr-embed-hash="{{videoUrl.embedHash}}">
|
|
3
3
|
</div>
|
|
4
4
|
{{/embedded}}
|
|
5
5
|
{{#video}}
|
|
6
6
|
<video class="embed_player lt-player-wrapper" playsinline controls>
|
|
7
|
-
<source src="{{videoUrl}}"/>
|
|
7
|
+
<source src="{{videoUrl.videoUrl}}"/>
|
|
8
8
|
{{#defaultConfig.captions}}
|
|
9
9
|
<track kind="captions" label="{{label}} captions" src="{{url}}" srclang="{{srclang}}" {{default}} />
|
|
10
10
|
{{/defaultConfig.captions}}
|