@latest-thinking/lt-player 1.0.6-b → 1.0.7
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 +11 -0
- package/src/assets/sass/abstracts/_variables.scss +3 -0
- package/src/assets/sass/app.scss +13 -1
- package/src/assets/sass/components/_modal.scss +1 -1
- package/src/assets/sass/sections/_settings.scss +255 -82
- package/src/assets/sass/sections/_share.scss +4 -38
- package/src/assets/sass/sections/controllers/_botom.scss +296 -303
- package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +36 -66
- package/src/assets/sass/sections/controllers/_top.scss +94 -113
- package/src/components/LTPlayerType.ts +2 -0
- package/src/components/addInfo/LTPlayerAddInfoDesktop.ts +99 -0
- package/src/components/addInfo/LTPlayerAddInfoManager.ts +6 -6
- package/src/components/addInfo/LTPlayerAddInfoMobile.ts +110 -0
- package/src/components/controls/LTPlayerControlsEvents.ts +46 -36
- package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +0 -1
- package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +166 -30
- package/src/components/events/LTPlayer.ts +8 -0
- package/src/components/events/LTPlayerCommon.ts +21 -27
- package/src/components/events/LTPlayerMobile.ts +2 -2
- package/src/index.ts +6 -0
- package/src/services/ResizeService.ts +7 -7
- package/src/views/additionalInfo.handlebars +4 -8
- package/src/views/controls.handlebars +41 -37
- package/src/views/settings.handlebars +11 -14
- package/src/views/share.handlebars +1 -1
- package/src/components/addInfo/LTPlayerAdditionalInfoEvents.ts +0 -247
|
@@ -706,46 +706,56 @@ export namespace LTPlayerControlsEvents {
|
|
|
706
706
|
}
|
|
707
707
|
|
|
708
708
|
|
|
709
|
-
|
|
709
|
+
settings(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
710
710
|
let playerControlsContainer = instance.plyr.elements.controls;
|
|
711
|
-
const
|
|
712
|
-
const volumeButton = volume.querySelector('button');
|
|
713
|
-
const volumeUp = volume.querySelector('.volume-max');
|
|
714
|
-
const volumeMute = volume.querySelector('.volume-mute');
|
|
715
|
-
|
|
716
|
-
const setVolumeIcon = (volumeState: string) => {
|
|
717
|
-
if (volumeState === 'up') {
|
|
718
|
-
volumeUp.classList.remove('d-none');
|
|
719
|
-
volumeMute.classList.remove('d-none');
|
|
720
|
-
volumeMute.classList.add('d-none');
|
|
721
|
-
} else {
|
|
722
|
-
volumeUp.classList.remove('d-none');
|
|
723
|
-
volumeMute.classList.remove('d-none');
|
|
724
|
-
volumeUp.classList.add('d-none');
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
const setVolume = (): string => {
|
|
729
|
-
if (instance.plyr.muted) {
|
|
730
|
-
instance.plyr.muted = false;
|
|
731
|
-
return 'up';
|
|
732
|
-
} else {
|
|
733
|
-
instance.plyr.muted = true;
|
|
734
|
-
return 'mute';
|
|
735
|
-
}
|
|
736
|
-
}
|
|
711
|
+
const settingsButton = playerControlsContainer.querySelector('.plyr__controls_settings-button');
|
|
737
712
|
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(volumeButton);
|
|
741
|
-
|
|
742
|
-
mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
|
|
743
|
-
let volumeState = setVolume();
|
|
744
|
-
setVolumeIcon(volumeState);
|
|
745
|
-
instance.playerControl.mobileEvents.showControls(instance);
|
|
746
|
-
})
|
|
713
|
+
if (settingsButton) {
|
|
747
714
|
|
|
715
|
+
}
|
|
748
716
|
}
|
|
717
|
+
|
|
718
|
+
//remove volume
|
|
719
|
+
// volume(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
720
|
+
// let playerControlsContainer = instance.plyr.elements.controls;
|
|
721
|
+
// const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
722
|
+
// const volumeButton = volume.querySelector('button');
|
|
723
|
+
// const volumeUp = volume.querySelector('.volume-max');
|
|
724
|
+
// const volumeMute = volume.querySelector('.volume-mute');
|
|
725
|
+
//
|
|
726
|
+
// const setVolumeIcon = (volumeState: string) => {
|
|
727
|
+
// if (volumeState === 'up') {
|
|
728
|
+
// volumeUp.classList.remove('d-none');
|
|
729
|
+
// volumeMute.classList.remove('d-none');
|
|
730
|
+
// volumeMute.classList.add('d-none');
|
|
731
|
+
// } else {
|
|
732
|
+
// volumeUp.classList.remove('d-none');
|
|
733
|
+
// volumeMute.classList.remove('d-none');
|
|
734
|
+
// volumeUp.classList.add('d-none');
|
|
735
|
+
// }
|
|
736
|
+
// }
|
|
737
|
+
//
|
|
738
|
+
// const setVolume = (): string => {
|
|
739
|
+
// if (instance.plyr.muted) {
|
|
740
|
+
// instance.plyr.muted = false;
|
|
741
|
+
// return 'up';
|
|
742
|
+
// } else {
|
|
743
|
+
// instance.plyr.muted = true;
|
|
744
|
+
// return 'mute';
|
|
745
|
+
// }
|
|
746
|
+
// }
|
|
747
|
+
//
|
|
748
|
+
// setVolumeIcon('up');
|
|
749
|
+
//
|
|
750
|
+
// let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(volumeButton);
|
|
751
|
+
//
|
|
752
|
+
// mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
|
|
753
|
+
// let volumeState = setVolume();
|
|
754
|
+
// setVolumeIcon(volumeState);
|
|
755
|
+
// instance.playerControl.mobileEvents.showControls(instance);
|
|
756
|
+
// })
|
|
757
|
+
//
|
|
758
|
+
// }
|
|
749
759
|
}
|
|
750
760
|
|
|
751
761
|
|
|
@@ -18,7 +18,6 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
addOpenSettingsEventButton() {
|
|
21
|
-
|
|
22
21
|
const selectors: defaultType = this.settingsInstance.common.getSelectors();
|
|
23
22
|
|
|
24
23
|
selectors.button.addEventListener('click', (event: MouseEvent) => {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {LTPlayerSettingsControlsManager} from "../LTPlayerSettingsControlsManager";
|
|
2
2
|
import {SettingsControlsInterfaces} from "../../../global/interfaces/SettingsControlsInterfaces";
|
|
3
|
-
import {defaultType} from "../../../global/types/ModuleTypes";
|
|
4
3
|
|
|
5
4
|
export class LTPlayerMobileSettingsControllers implements SettingsControlsInterfaces {
|
|
6
5
|
settingsInstance: LTPlayerSettingsControlsManager
|
|
@@ -10,48 +9,185 @@ export class LTPlayerMobileSettingsControllers implements SettingsControlsInterf
|
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
init() {
|
|
13
|
-
this.
|
|
14
|
-
this.setDefaultSpeed();
|
|
15
|
-
this.setButtonSpeed();
|
|
12
|
+
this.addOpenSettingsEventButton();
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
this.settingsInstance.playerInstance.plyr.
|
|
15
|
+
addOpenSettingsEventButton() {
|
|
16
|
+
const settingsButton = this.settingsInstance.playerInstance.plyr.elements.controls.querySelector('.plyr__controls_settings-button');
|
|
17
|
+
const instance = this;
|
|
18
|
+
if (settingsButton) {
|
|
19
|
+
let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(settingsButton);
|
|
20
|
+
if (mobileEvent) {
|
|
21
|
+
mobileEvent.on('singletap', function LTPlayerMobileSettingsButton() {
|
|
22
|
+
instance.settingsInstance.playerInstance.playerControl.mobileEvents.showControls(instance.settingsInstance.playerInstance);
|
|
23
|
+
instance.createModal();
|
|
24
|
+
instance.setActiveModal();
|
|
25
|
+
instance.initCaptionsEvent();
|
|
26
|
+
instance.initSpeedVideoEvent();
|
|
27
|
+
instance.initSaveButton();
|
|
28
|
+
setTimeout(() => {
|
|
29
|
+
instance.setInactiveTouchModal();
|
|
30
|
+
}, 100)
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
}
|
|
20
34
|
}
|
|
21
35
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
let instance = this.settingsInstance.playerInstance;
|
|
36
|
+
setInactiveTouchModal() {
|
|
37
|
+
const modal = document.querySelector('.lt-player-mobile-settings-modal');
|
|
38
|
+
const background = modal.querySelector('.settings-controllers-enable__background');
|
|
39
|
+
const settingsContainerHeader = modal.querySelector('.settings-controllers-header')
|
|
40
|
+
const instance = this;
|
|
28
41
|
|
|
29
|
-
if (
|
|
30
|
-
let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(
|
|
42
|
+
if (background) {
|
|
43
|
+
let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(background);
|
|
31
44
|
if (mobileEvent) {
|
|
32
|
-
mobileEvent.on('singletap', function
|
|
45
|
+
mobileEvent.on('singletap', function LTPlayerMobileSettingsBackground(event) {
|
|
46
|
+
instance.settingsInstance.playerInstance.playerControl.mobileEvents.showControls(instance.settingsInstance.playerInstance);
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
let target = event.target as HTMLElement;
|
|
49
|
+
if (!target.classList.contains('settings-controllers')) {
|
|
50
|
+
instance.setInactiveModal();
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
}
|
|
54
|
+
}
|
|
33
55
|
|
|
34
|
-
|
|
56
|
+
if (settingsContainerHeader) {
|
|
57
|
+
let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(settingsContainerHeader);
|
|
58
|
+
if (mobileEvent) {
|
|
59
|
+
mobileEvent.on('pan', function LTPlayerMobileSettingsHeader(event) {
|
|
60
|
+
instance.settingsInstance.playerInstance.playerControl.mobileEvents.showControls(instance.settingsInstance.playerInstance);
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
let target = event.target as HTMLElement;
|
|
63
|
+
instance.setInactiveModal();
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
}
|
|
35
67
|
|
|
36
|
-
|
|
37
|
-
playerSpeedButton.innerHTML = `1x`;
|
|
38
|
-
plyr.speed = 1;
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
68
|
+
}
|
|
41
69
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
playerSpeedButton.innerHTML = `${playSpeed + 0.25}X`;
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
70
|
+
createModal() {
|
|
71
|
+
let modalTemplate = this.settingsInstance.playerInstance.templateService.getSettings({id : this.settingsInstance.playerInstance.playerConfig.getPlayerId()});
|
|
47
72
|
|
|
48
|
-
|
|
49
|
-
|
|
73
|
+
const modal = document.createElement('div');
|
|
74
|
+
modal.classList.add('lt-player-mobile-settings-modal')
|
|
75
|
+
modal.innerHTML = modalTemplate;
|
|
50
76
|
|
|
51
|
-
|
|
52
|
-
|
|
77
|
+
const body = document.querySelector('body');
|
|
78
|
+
|
|
79
|
+
if (body) {
|
|
80
|
+
body.appendChild(modal);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
setActiveModal() {
|
|
85
|
+
const modal = document.querySelector('.lt-player-mobile-settings-modal');
|
|
86
|
+
const background = modal.querySelector('.settings-controllers-enable__background');
|
|
87
|
+
|
|
88
|
+
if (background) {
|
|
89
|
+
if (background.classList.contains('d-none')) {
|
|
90
|
+
background.classList.remove('d-none')
|
|
53
91
|
}
|
|
54
92
|
}
|
|
55
93
|
}
|
|
56
94
|
|
|
95
|
+
setInactiveModal() {
|
|
96
|
+
const modal = document.querySelector('.lt-player-mobile-settings-modal');
|
|
97
|
+
if (modal) {
|
|
98
|
+
modal.remove();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
initCaptionsEvent() {
|
|
102
|
+
const modal = document.querySelector('.lt-player-mobile-settings-modal');
|
|
103
|
+
const checkBox = modal.querySelector(`#captions-lt-player-${this.settingsInstance.playerInstance.playerConfig.getPlayerId()}`) as HTMLInputElement;
|
|
104
|
+
const instance = this;
|
|
105
|
+
if (checkBox) {
|
|
106
|
+
checkBox.addEventListener('change', () => {
|
|
107
|
+
instance.settingsInstance.playerInstance.playerControl.mobileEvents.showControls(instance.settingsInstance.playerInstance);
|
|
108
|
+
|
|
109
|
+
if (!checkBox.checked) {
|
|
110
|
+
this.settingsInstance.player.toggleCaptions(false);
|
|
111
|
+
return
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
this.settingsInstance.player.toggleCaptions(true);
|
|
115
|
+
|
|
116
|
+
})
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
initSpeedVideoEvent() {
|
|
120
|
+
const modal = document.querySelector('.lt-player-mobile-settings-modal');
|
|
121
|
+
const playerInstance = this.settingsInstance.playerInstance;
|
|
122
|
+
const player = this.settingsInstance.player;
|
|
123
|
+
const rangeInput: HTMLInputElement = modal.querySelector('.speed-range-input');
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
const myRange: HTMLInputElement = modal.querySelector(`#speed-range-${playerInstance.playerConfig.getPlayerId()}`);
|
|
127
|
+
|
|
128
|
+
myRange.value = String(0);
|
|
129
|
+
|
|
130
|
+
const myValue: HTMLElement = modal.querySelector(`#speed-range-value-${playerInstance.playerConfig.getPlayerId()}`);
|
|
131
|
+
|
|
132
|
+
myValue.style.top = "-20px";
|
|
133
|
+
|
|
134
|
+
let values:any = [1,1.25,1.50,2];
|
|
135
|
+
|
|
136
|
+
const instance = this;
|
|
137
|
+
myRange.oninput = function() {
|
|
138
|
+
instance.settingsInstance.playerInstance.playerControl.mobileEvents.showControls(instance.settingsInstance.playerInstance);
|
|
139
|
+
player.speed = parseFloat(values[rangeInput.value]);
|
|
140
|
+
myValue.innerHTML = `${values[rangeInput.value]}X`;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
player.speed = parseFloat(String(values[0]));
|
|
144
|
+
myValue.innerHTML = `${values[0]}X`;
|
|
145
|
+
}
|
|
146
|
+
initSaveButton() {
|
|
147
|
+
const modal = document.querySelector('.lt-player-mobile-settings-modal');
|
|
148
|
+
const instance = this;
|
|
149
|
+
|
|
150
|
+
const saveButton = modal.querySelector('.button-save');
|
|
151
|
+
|
|
152
|
+
saveButton.addEventListener('click', function (event) {
|
|
153
|
+
instance.settingsInstance.playerInstance.playerControl.mobileEvents.showControls(instance.settingsInstance.playerInstance);
|
|
154
|
+
event.preventDefault();
|
|
155
|
+
instance.setInactiveModal();
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
// setButtonSpeed() {
|
|
159
|
+
// let playerControlsContainer = this.settingsInstance.playerInstance.plyr.elements.controls;
|
|
160
|
+
// let playerSpeedButton = playerControlsContainer.querySelector('.plyr__controls_speed-button');
|
|
161
|
+
// playerSpeedButton.innerHTML = `${this.settingsInstance.playerInstance.plyr.speed}X`;
|
|
162
|
+
// let plyr = this.settingsInstance.playerInstance.plyr;
|
|
163
|
+
// let instance = this.settingsInstance.playerInstance;
|
|
164
|
+
//
|
|
165
|
+
// if (playerSpeedButton) {
|
|
166
|
+
// let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(playerSpeedButton);
|
|
167
|
+
// if (mobileEvent) {
|
|
168
|
+
// mobileEvent.on('singletap', function LTPlayerMobileSpeedButton() {
|
|
169
|
+
//
|
|
170
|
+
// let playSpeed = plyr.speed + 0.25;
|
|
171
|
+
//
|
|
172
|
+
// if (playSpeed > 2) {
|
|
173
|
+
// playerSpeedButton.innerHTML = `1x`;
|
|
174
|
+
// plyr.speed = 1;
|
|
175
|
+
// return;
|
|
176
|
+
// }
|
|
177
|
+
//
|
|
178
|
+
// if (playSpeed === 1.75) {
|
|
179
|
+
// plyr.speed = playSpeed + 0.25
|
|
180
|
+
// playerSpeedButton.innerHTML = `${playSpeed + 0.25}X`;
|
|
181
|
+
// return;
|
|
182
|
+
// }
|
|
183
|
+
//
|
|
184
|
+
// plyr.speed = playSpeed;
|
|
185
|
+
// playerSpeedButton.innerHTML = `${playSpeed}X`;
|
|
186
|
+
//
|
|
187
|
+
// instance.playerControl.mobileEvents.showControls(instance);
|
|
188
|
+
// })
|
|
189
|
+
// }
|
|
190
|
+
// }
|
|
191
|
+
// }
|
|
192
|
+
|
|
57
193
|
}
|
|
@@ -116,6 +116,14 @@ export namespace LTPlayerEvents {
|
|
|
116
116
|
const settingsBody = playerContainer.querySelector('.settings-controllers');
|
|
117
117
|
|
|
118
118
|
if (!settingsBody) {
|
|
119
|
+
|
|
120
|
+
const modal = document.querySelector('.lt-player-mobile-settings-modal');
|
|
121
|
+
|
|
122
|
+
if (modal) {
|
|
123
|
+
modal.remove();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
119
127
|
return;
|
|
120
128
|
}
|
|
121
129
|
|
|
@@ -27,33 +27,26 @@ export class LTPlayerCommon {
|
|
|
27
27
|
|
|
28
28
|
instance.plyr.speed = 1;
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
let checkCaptions = (instance.plyr as plyr).captions;
|
|
52
|
-
|
|
53
|
-
if (checkCaptions.currentTrack >= 0) {
|
|
54
|
-
instance.plyr.toggleCaptions(true);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
30
|
+
instance.plyr.toggleCaptions(false);
|
|
31
|
+
return;
|
|
32
|
+
|
|
33
|
+
//
|
|
34
|
+
// if (instance.plyr.isEmbed) {
|
|
35
|
+
// instance.plyr.embed.getTextTracks().then( (response: string | any[]) => {
|
|
36
|
+
// if (response.length !== 0) {
|
|
37
|
+
// instance.plyr.toggleCaptions(true);
|
|
38
|
+
// } else {
|
|
39
|
+
// instance.plyr.toggleCaptions(false);
|
|
40
|
+
// }
|
|
41
|
+
// })
|
|
42
|
+
// } else {
|
|
43
|
+
//
|
|
44
|
+
// let checkCaptions = (instance.plyr as plyr).captions;
|
|
45
|
+
//
|
|
46
|
+
// if (checkCaptions.currentTrack >= 0) {
|
|
47
|
+
// instance.plyr.toggleCaptions(true);
|
|
48
|
+
// }
|
|
49
|
+
// }
|
|
57
50
|
}
|
|
58
51
|
removeDesktopPlyrEvents() {
|
|
59
52
|
let plyrInstance = this.plyr as Plyr as Plyr & { eventListeners: Array<any> }
|
|
@@ -155,6 +148,7 @@ export class LTPlayerCommon {
|
|
|
155
148
|
}
|
|
156
149
|
|
|
157
150
|
//set captions
|
|
151
|
+
// TODO: Find a way to show/hide subtitles that does not loop on every timeUpdate. Consider using the controls show/hide event.
|
|
158
152
|
this.player.playerControl.desktopEvents.subtitles(this.player);
|
|
159
153
|
}
|
|
160
154
|
|
|
@@ -83,8 +83,8 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
83
83
|
instance.playerControl.mobileEvents.backwardForward(instance);
|
|
84
84
|
instance.playerControl.mobileEvents.backwardForwardSeconds(instance);
|
|
85
85
|
|
|
86
|
-
//
|
|
87
|
-
instance.playerControl.mobileEvents.volume(instance);
|
|
86
|
+
//remove volume controller
|
|
87
|
+
// instance.playerControl.mobileEvents.volume(instance);
|
|
88
88
|
|
|
89
89
|
//set settings controller
|
|
90
90
|
instance.playerControl.settingsControlsManager.init(instance);
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import {LTPlayerManager} from "./components/LTPlayerManager";
|
|
2
2
|
|
|
3
|
+
const supportsContainerQueries = "container" in document.documentElement.style;
|
|
4
|
+
if (!supportsContainerQueries) {
|
|
5
|
+
let polyfill_script = document.createElement('script');
|
|
6
|
+
polyfill_script.setAttribute('src','https://cdn.jsdelivr.net/npm/container-query-polyfill@1/dist/container-query-polyfill.modern.js');
|
|
7
|
+
document.body.appendChild(polyfill_script);
|
|
8
|
+
}
|
|
3
9
|
|
|
4
10
|
//todo remove from window, it's for developer
|
|
5
11
|
window.addEventListener('load', function () {
|
|
@@ -2,9 +2,9 @@ import {LTPlayer} from "../components/LTPlayerType";
|
|
|
2
2
|
import {defaultType} from "../global/types/ModuleTypes";
|
|
3
3
|
import Plyr from "plyr";
|
|
4
4
|
import {LTPLayerAddInfoResizeManager} from "../components/addInfo/LTPLayerAddInfoResizeManager";
|
|
5
|
-
import {LTPlayerAdditionalInfo} from "../components/addInfo/LTPlayerAdditionalInfoEvents";
|
|
6
5
|
import {LTPLayerAddInfo} from "../components/addInfo/LTPlayerAddInfoManager";
|
|
7
6
|
import {LTPlayerRotateDeviceService} from "./LTPlayerRotateDeviceService";
|
|
7
|
+
import {LTPlayerAddInfoDesktop} from "../components/addInfo/LTPlayerAddInfoDesktop";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Window service (set width and height)
|
|
@@ -39,8 +39,8 @@ export class ResizeService {
|
|
|
39
39
|
},
|
|
40
40
|
size : {
|
|
41
41
|
438 : "lg",
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
375 : "md",
|
|
43
|
+
350 : "sm",
|
|
44
44
|
200 : "xs"
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -116,12 +116,12 @@ export class ResizeService {
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
protected setPortrate() {
|
|
119
|
-
this.setEvent(this.defaultPortrate);
|
|
119
|
+
// this.setEvent(this.defaultPortrate);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
|
|
123
123
|
protected setLandScape() {
|
|
124
|
-
this.setEvent(this.defaultLandscape);
|
|
124
|
+
// this.setEvent(this.defaultLandscape);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
protected setEvent(defaultData: defaultType) {
|
|
@@ -130,13 +130,13 @@ export class ResizeService {
|
|
|
130
130
|
}).observe(this.playerParentContainer);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
public setEventAddInfo(buttonsTemplate: string, deskEvent:
|
|
133
|
+
public setEventAddInfo(buttonsTemplate: string, deskEvent: LTPlayerAddInfoDesktop, controller: LTPLayerAddInfo.Controller) {
|
|
134
134
|
new ResizeObserver(response => {
|
|
135
135
|
this.setAddInfoByDimensions(response[0].target.clientWidth, buttonsTemplate, deskEvent, controller)
|
|
136
136
|
}).observe(this.playerInstance.plyr.elements.container);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
protected setAddInfoByDimensions(containerWidth: number, buttonsTemplate:string, deskEvent:
|
|
139
|
+
protected setAddInfoByDimensions(containerWidth: number, buttonsTemplate:string, deskEvent: LTPlayerAddInfoDesktop, controller: LTPLayerAddInfo.Controller) {
|
|
140
140
|
|
|
141
141
|
const createAddInfoButtonsOutSide = () => {
|
|
142
142
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{{#modal}}
|
|
2
2
|
{{#mobile}}
|
|
3
3
|
{{#object_data}}
|
|
4
|
+
<div class="player-lt__modal__mobile__background"></div>
|
|
5
|
+
<div class="player-lt__modal__mobile">
|
|
4
6
|
<div class="player-lt__mobile__modal-header">
|
|
5
7
|
<span class="line-button"></span>
|
|
6
8
|
</div>
|
|
@@ -24,15 +26,9 @@
|
|
|
24
26
|
<p>{{bio.description}}</p>
|
|
25
27
|
{{/bio}}
|
|
26
28
|
</div>
|
|
29
|
+
</div>
|
|
27
30
|
{{/object_data}}
|
|
28
|
-
|
|
29
|
-
<div class="player-lt__mobile__modal-header">
|
|
30
|
-
<span class="line-button"></span>
|
|
31
|
-
</div>
|
|
32
|
-
<div class="player-lt__mobile__modal-content">
|
|
33
|
-
{{{data}}}
|
|
34
|
-
</div>
|
|
35
|
-
{{/data}}
|
|
31
|
+
|
|
36
32
|
{{/mobile}}
|
|
37
33
|
{{#desktop}}
|
|
38
34
|
{{#object_data}}
|
|
@@ -82,12 +82,9 @@
|
|
|
82
82
|
<div class="bottom-controller">
|
|
83
83
|
{{#mobile}}
|
|
84
84
|
<div class="bottom-controller__left-buttons">
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
<img class="volume-mute d-none filter button-open" data-range-value="0" src="{{icons.mute}}" alt="">
|
|
89
|
-
</button>
|
|
90
|
-
</div>
|
|
85
|
+
<button type="button" class="plyr__control plyr__controls_settings-button settings">
|
|
86
|
+
<img class="filter settings" src="{{icons.settings}}" alt="">
|
|
87
|
+
</button>
|
|
91
88
|
</div>
|
|
92
89
|
{{/mobile}}
|
|
93
90
|
{{#desktop}}
|
|
@@ -125,18 +122,22 @@
|
|
|
125
122
|
<img class="filter" src="{{icons.skip-backward}}" alt="">
|
|
126
123
|
</button>
|
|
127
124
|
</div>
|
|
125
|
+
{{#desktop}}
|
|
128
126
|
<button type="button" class="plyr__control skip-backward-seconds" data-lt-player-chapterTimeStamp="">
|
|
129
127
|
<img class="filter" src="{{icons.fast-backward}}" alt="">
|
|
130
128
|
</button>
|
|
129
|
+
{{/desktop}}
|
|
131
130
|
<div class="bottom-controller__play-button_body bottom-controller__play-button_body__landscape">
|
|
132
131
|
<button type="button" class="plyr__control play-button">
|
|
133
132
|
<img class="bottom-controller__play-icon d-none" src="{{icons.play}}" alt="">
|
|
134
133
|
<img class="bottom-controller__pause-icon" src="{{icons.pause}}" alt="">
|
|
135
134
|
</button>
|
|
136
135
|
</div>
|
|
136
|
+
{{#desktop}}
|
|
137
137
|
<button type="button" class="plyr__control skip-forward-seconds" data-lt-player-chapterTimeStamp="">
|
|
138
138
|
<img class="filter" src="{{icons.fast-forward}}" alt="">
|
|
139
139
|
</button>
|
|
140
|
+
{{/desktop}}
|
|
140
141
|
<div class="bottom-controller__next-chapter-view-wrapper">
|
|
141
142
|
<button type="button" class="plyr__control skip-forward" data-lt-player-chapterTimeStamp="">
|
|
142
143
|
<img class="filter" src="{{icons.skip-forward}}" alt="">
|
|
@@ -149,21 +150,19 @@
|
|
|
149
150
|
<button type="button" class="plyr__control mini-player-control">
|
|
150
151
|
<img class="filter" src="{{icons.mini-player}}" alt="">
|
|
151
152
|
</button>
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
</button>
|
|
153
|
+
<button type="button" class="plyr__control fullscreen-custom-control">
|
|
154
|
+
<img class="filter minimize d-none" src="{{icons.minimize}}" alt="">
|
|
155
|
+
<img class="filter maximize" src="{{icons.maximize}}" alt="">
|
|
156
|
+
</button>
|
|
157
157
|
{{/desktop}}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
158
|
+
{{#mobile}}
|
|
159
|
+
<button type="button" class="plyr__control fullscreen-custom-control">
|
|
160
|
+
<img class="filter minimize d-none" src="{{icons.minimize}}" alt="">
|
|
161
|
+
<img class="filter maximize" src="{{icons.maximize}}" alt="">
|
|
162
|
+
</button>
|
|
163
|
+
{{/mobile}}
|
|
163
164
|
</div>
|
|
164
165
|
</div>
|
|
165
|
-
<div class="player-lt__modal__mobile__background d-none"></div>
|
|
166
|
-
<div class="player-lt__modal__mobile d-none"></div>
|
|
167
166
|
</div>
|
|
168
167
|
{{#mobile}}
|
|
169
168
|
<div class="plyr__controls__mobile-background d-none">
|
|
@@ -275,14 +274,14 @@
|
|
|
275
274
|
<div class="bottom-controller__background"></div>
|
|
276
275
|
<div class="bottom-controller">
|
|
277
276
|
{{#mobile}}
|
|
278
|
-
<div class="bottom-
|
|
279
|
-
<button type="button" class="plyr__control
|
|
280
|
-
|
|
281
|
-
<img class="volume-mute d-none filter button-open" data-range-value="0" src="{{icons.mute}}" alt="">
|
|
277
|
+
<div class="bottom-controller__left-buttons">
|
|
278
|
+
<button type="button" class="plyr__control plyr__controls_settings-button settings">
|
|
279
|
+
<img class="filter settings" src="{{icons.settings}}" alt="">
|
|
282
280
|
</button>
|
|
283
281
|
</div>
|
|
284
282
|
{{/mobile}}
|
|
285
283
|
{{#desktop}}
|
|
284
|
+
<div class="bottom-controller__left-buttons">
|
|
286
285
|
<div class="bottom-controller__volume_control">
|
|
287
286
|
<button type="button" class="plyr__control volume_control__volume-button button-open">
|
|
288
287
|
<img class="volume-max filter button-open" data-range-value="1" src="{{icons.volume-3}}" alt="">
|
|
@@ -304,33 +303,38 @@
|
|
|
304
303
|
autocomplete="off" aria-label="Volume">
|
|
305
304
|
</div>
|
|
306
305
|
</div>
|
|
306
|
+
</div>
|
|
307
307
|
{{/desktop}}
|
|
308
|
-
<
|
|
309
|
-
<
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
<
|
|
313
|
-
<
|
|
314
|
-
|
|
308
|
+
<div class="bottom-controller__center-buttons">
|
|
309
|
+
<button type="button" class="plyr__control skip-backward" data-lt-player-chapterTimeStamp="">
|
|
310
|
+
<img class="filter" src="{{icons.skip-backward}}" alt="">
|
|
311
|
+
</button>
|
|
312
|
+
<div class="bottom-controller__play-button_body bottom-controller__play-button_body__portrait">
|
|
313
|
+
<button type="button" class="plyr__control play-button">
|
|
314
|
+
<img class="bottom-controller__play-icon d-none" src="{{icons.play}}" alt="">
|
|
315
|
+
<img class="bottom-controller__pause-icon" src="{{icons.pause}}" alt="">
|
|
316
|
+
</button>
|
|
317
|
+
</div>
|
|
318
|
+
<button type="button" class="plyr__control skip-forward" data-lt-player-chapterTimeStamp="">
|
|
319
|
+
<img class="filter" src="{{icons.skip-forward}}" alt="">
|
|
315
320
|
</button>
|
|
316
321
|
</div>
|
|
317
|
-
<button type="button" class="plyr__control skip-forward" data-lt-player-chapterTimeStamp="">
|
|
318
|
-
<img class="filter" src="{{icons.skip-forward}}" alt="">
|
|
319
|
-
</button>
|
|
320
322
|
{{#mobile}}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
323
|
+
<div class="bottom-controller__right-buttons">
|
|
324
|
+
</div>
|
|
325
|
+
{{/mobile}}
|
|
326
|
+
{{#mobile}}
|
|
327
|
+
<!--Maybe fullscreen-->
|
|
324
328
|
{{/mobile}}
|
|
325
329
|
|
|
326
330
|
{{#desktop}}
|
|
331
|
+
<div class="bottom-controller__right-buttons">
|
|
327
332
|
<button type="button" class="plyr__control plyr__controls_settings-button settings">
|
|
328
333
|
<img class="filter settings" src="{{icons.settings}}" alt="">
|
|
329
334
|
</button>
|
|
335
|
+
</div>
|
|
330
336
|
{{/desktop}}
|
|
331
337
|
</div>
|
|
332
|
-
<div class="player-lt__modal__mobile__background d-none"></div>
|
|
333
|
-
<div class="player-lt__modal__mobile d-none"></div>
|
|
334
338
|
</div>
|
|
335
339
|
{{#mobile}}
|
|
336
340
|
<div class="plyr__controls__mobile-background d-none">
|