@latest-thinking/lt-player 1.0.6 → 1.0.7-b
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 +2 -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 +14 -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 +132 -21
- 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/LTPlayerSetup.ts +0 -1
- package/src/components/LTPlayerType.ts +12 -12
- 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/config/LTPlayerConfig.ts +25 -11
- package/src/components/controls/LTPlayerControlsEvents.ts +141 -95
- 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 +27 -35
- package/src/components/events/LTPlayerDesktop.ts +4 -0
- package/src/components/events/LTPlayerMobile.ts +4 -2
- package/src/components/share/LTPlayerShareDesktop.ts +131 -0
- package/src/components/share/LTPlayerShareEvents.ts +30 -132
- package/src/components/share/{LTPlayerShare.ts → LTPlayerShareManager.ts} +26 -8
- package/src/components/share/LTPlayerShareMobile.ts +154 -0
- package/src/components/video/LTPlayerVideo.ts +49 -0
- package/src/global/controllers/LTPlayerController.ts +6 -3
- package/src/index.ts +7 -6
- package/src/services/ResizeService.ts +7 -7
- package/src/views/additionalInfo.handlebars +4 -8
- package/src/views/controls.handlebars +45 -41
- package/src/views/settings.handlebars +11 -14
- package/src/views/share.handlebars +36 -33
- package/src/components/addInfo/LTPlayerAdditionalInfoEvents.ts +0 -247
|
@@ -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> }
|
|
@@ -107,16 +100,18 @@ export class LTPlayerCommon {
|
|
|
107
100
|
});
|
|
108
101
|
}
|
|
109
102
|
onReadyPlayer() {
|
|
110
|
-
|
|
111
103
|
//set share button
|
|
112
|
-
this.player.
|
|
104
|
+
if (this.player.playerConfig.getShareData()) {
|
|
105
|
+
if (this.player.playerConfig.getDevice() === 'mobile') {
|
|
106
|
+
this.player.share.events.mobile.init();
|
|
107
|
+
} else {
|
|
108
|
+
this.player.share.events.desktop.init();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
113
111
|
|
|
114
|
-
// this.player.windowService.init(this.player);
|
|
115
112
|
//set poster
|
|
116
113
|
this.player.posterManager.mobileEvents.onload(this.player);
|
|
117
114
|
|
|
118
|
-
|
|
119
|
-
|
|
120
115
|
if (this.player.playerConfig.isAutoPlay()) {
|
|
121
116
|
let playerContainer = this.player.plyr.elements.container;
|
|
122
117
|
|
|
@@ -151,9 +146,6 @@ export class LTPlayerCommon {
|
|
|
151
146
|
if (this.player.playerControl.chaptersService) {
|
|
152
147
|
this.player.playerControl.chaptersService.updateCurrentTimeAndTitle(this.player, event);
|
|
153
148
|
}
|
|
154
|
-
|
|
155
|
-
//set captions
|
|
156
|
-
this.player.playerControl.desktopEvents.subtitles(this.player);
|
|
157
149
|
}
|
|
158
150
|
|
|
159
151
|
|
|
@@ -147,6 +147,8 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
|
|
|
147
147
|
//fullscreen icon
|
|
148
148
|
instance.playerControl.desktopEvents.fullscreenIcon(instance, 'enterfullscreen');
|
|
149
149
|
|
|
150
|
+
instance.videoService.removeObjectFit();
|
|
151
|
+
|
|
150
152
|
});
|
|
151
153
|
|
|
152
154
|
plyr.on('exitfullscreen', function LTPlayerDesktopExitFullScreen() {
|
|
@@ -155,6 +157,8 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
|
|
|
155
157
|
|
|
156
158
|
//fullscreen icon
|
|
157
159
|
instance.playerControl.desktopEvents.fullscreenIcon(instance, 'exitfullscreen');
|
|
160
|
+
|
|
161
|
+
instance.videoService.appendObjectFit();
|
|
158
162
|
})
|
|
159
163
|
}
|
|
160
164
|
|
|
@@ -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);
|
|
@@ -132,11 +132,13 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
132
132
|
//fullscreen icon
|
|
133
133
|
instance.playerControl.desktopEvents.fullscreenIcon(instance, 'enterfullscreen');
|
|
134
134
|
|
|
135
|
+
instance.videoService.removeObjectFit();
|
|
135
136
|
});
|
|
136
137
|
|
|
137
138
|
plyr.on('exitfullscreen', function LTPlayerDesktopExitFullScreen() {
|
|
138
139
|
//fullscreen icon
|
|
139
140
|
instance.playerControl.desktopEvents.fullscreenIcon(instance, 'exitfullscreen');
|
|
141
|
+
instance.videoService.appendObjectFit();
|
|
140
142
|
})
|
|
141
143
|
}
|
|
142
144
|
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {LTPlayerShareManager} from "./LTPlayerShareManager";
|
|
2
|
+
|
|
3
|
+
export class LTPlayerShareDesktop {
|
|
4
|
+
manager : LTPlayerShareManager
|
|
5
|
+
isPlaying : boolean
|
|
6
|
+
switchButtonSet: boolean
|
|
7
|
+
constructor(instance : LTPlayerShareManager) {
|
|
8
|
+
this.manager = instance;
|
|
9
|
+
this.setTemplate();
|
|
10
|
+
}
|
|
11
|
+
setTemplate() {
|
|
12
|
+
const playerContainer = this.manager.instance.plyr.elements.wrapper;
|
|
13
|
+
playerContainer.insertAdjacentHTML("afterend", this.manager.templateService.getShare(this.manager.playerConfig.getShareData()));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
activeModal() {
|
|
17
|
+
const selectors = this.getSelector();
|
|
18
|
+
const instance = this.manager.instance;
|
|
19
|
+
|
|
20
|
+
selectors.shareContainer.classList.remove('share-inactive');
|
|
21
|
+
selectors.shareContainer.classList.add('share-active');
|
|
22
|
+
(window as any).a2a.init_all();
|
|
23
|
+
if (!instance.playerConfig.getShareData().canonicalUrl) {
|
|
24
|
+
if (!instance.playerConfig.getShareData().embedUrl) {
|
|
25
|
+
selectors.shareContainer.querySelector('.share-controller-top').classList.add('d-none')
|
|
26
|
+
} else {
|
|
27
|
+
this.setCopyContent(true);
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
this.setCopyContent(false);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
this.setCopyButtonsEvents();
|
|
34
|
+
|
|
35
|
+
if (!this.switchButtonSet) {
|
|
36
|
+
this.setSwitchButton();
|
|
37
|
+
this.switchButtonSet = true;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (instance.plyr.playing) {
|
|
41
|
+
this.isPlaying = true;
|
|
42
|
+
instance.plyr.pause();
|
|
43
|
+
} else {
|
|
44
|
+
this.isPlaying = false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
setSwitchButton() {
|
|
50
|
+
const selectors = this.getSelector();
|
|
51
|
+
const instance = this.manager.instance;
|
|
52
|
+
|
|
53
|
+
if (!instance.playerConfig.getShareData().embedUrl || !instance.playerConfig.getShareData().canonicalUrl) {
|
|
54
|
+
selectors.switchButton.classList.add('d-none');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const switchEvent = () => {
|
|
59
|
+
|
|
60
|
+
if (selectors.urlInput.classList.contains('canonicalUrl')) {
|
|
61
|
+
selectors.urlInput.classList.remove('canonicalUrl');
|
|
62
|
+
selectors.urlInput.classList.add('embedUrl');
|
|
63
|
+
this.setCopyContent(true);
|
|
64
|
+
} else {
|
|
65
|
+
selectors.urlInput.classList.add('canonicalUrl');
|
|
66
|
+
selectors.urlInput.classList.remove('embedUrl');
|
|
67
|
+
this.setCopyContent(false);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
selectors.switchButton.addEventListener('click', () => {
|
|
72
|
+
switchEvent();
|
|
73
|
+
})
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
setCopyContent(embed : boolean) {
|
|
77
|
+
const selectors = this.getSelector();
|
|
78
|
+
const instance = this.manager.instance;
|
|
79
|
+
|
|
80
|
+
if (!embed) {
|
|
81
|
+
selectors.urlInput.classList.add('canonicalUrl');
|
|
82
|
+
selectors.urlInput.innerHTML = `${instance.playerConfig.getShareData().canonicalUrl}`;
|
|
83
|
+
(selectors.urlInput as HTMLElement).dataset.copy = instance.playerConfig.getShareData().canonicalUrl;
|
|
84
|
+
selectors.urlInput.addEventListener('click', () => {
|
|
85
|
+
window.open(instance.playerConfig.getShareData().canonicalUrl)
|
|
86
|
+
})
|
|
87
|
+
return
|
|
88
|
+
}
|
|
89
|
+
selectors.urlInput.classList.add('embedUrl');
|
|
90
|
+
const iframe = `<iframe width="560" height="315" src="${instance.playerConfig.getShareData().embedUrl}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>`;
|
|
91
|
+
(selectors.urlInput as HTMLElement).innerText = iframe;
|
|
92
|
+
(selectors.urlInput as HTMLElement).dataset.copy = iframe;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
inactiveModal() {
|
|
96
|
+
const selectors = this.getSelector();
|
|
97
|
+
const instance = this.manager.instance;
|
|
98
|
+
|
|
99
|
+
selectors.shareContainer.classList.add('share-inactive');
|
|
100
|
+
selectors.shareContainer.classList.remove('share-active');
|
|
101
|
+
if (this.isPlaying) {
|
|
102
|
+
instance.plyr.play();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
getSelector() {
|
|
107
|
+
return {
|
|
108
|
+
buttons : [
|
|
109
|
+
this.manager.instance.plyr.elements.container.querySelector('.poster-lt-player-share'),
|
|
110
|
+
this.manager.instance.plyr.elements.controls.querySelector('.lt-player-share'),
|
|
111
|
+
],
|
|
112
|
+
urlInput : this.manager.instance.plyr.elements.container.querySelector('.share-controller-wrapper').querySelector('.share-controller-url'),
|
|
113
|
+
shareContainer : this.manager.instance.plyr.elements.container.querySelector('.share-controller-wrapper'),
|
|
114
|
+
copyButtons : this.manager.instance.plyr.elements.container.querySelectorAll('.share-controller-link'),
|
|
115
|
+
switchButton : this.manager.instance.plyr.elements.container.querySelector('.share-controller-wrapper').querySelector('.button_embed')
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
setCopyButtonsEvents() {
|
|
120
|
+
const selectors = this.getSelector();
|
|
121
|
+
|
|
122
|
+
if (selectors.copyButtons.length > 0) {
|
|
123
|
+
selectors.copyButtons.forEach((button: HTMLElement) => {
|
|
124
|
+
button.addEventListener('click', function LTPlayerShareCopy() {
|
|
125
|
+
navigator.clipboard.writeText((selectors.urlInput as HTMLElement).dataset.copy);
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
})
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|