@latest-thinking/lt-player 1.0.6 → 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.
Files changed (40) hide show
  1. package/dist/css/lt-player-main.css +1 -1
  2. package/dist/css/lt-player-main.css.map +1 -1
  3. package/dist/js/lt-player-main.js +1 -1
  4. package/dist/js/lt-player-main.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/assets/sass/abstracts/_mixins.scss +11 -0
  7. package/src/assets/sass/abstracts/_variables.scss +3 -0
  8. package/src/assets/sass/app.scss +13 -1
  9. package/src/assets/sass/components/_modal.scss +1 -1
  10. package/src/assets/sass/sections/_settings.scss +255 -82
  11. package/src/assets/sass/sections/_share.scss +132 -21
  12. package/src/assets/sass/sections/controllers/_botom.scss +296 -303
  13. package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +36 -66
  14. package/src/assets/sass/sections/controllers/_top.scss +94 -113
  15. package/src/components/LTPlayerSetup.ts +0 -1
  16. package/src/components/LTPlayerType.ts +12 -12
  17. package/src/components/addInfo/LTPlayerAddInfoDesktop.ts +99 -0
  18. package/src/components/addInfo/LTPlayerAddInfoManager.ts +6 -6
  19. package/src/components/addInfo/LTPlayerAddInfoMobile.ts +110 -0
  20. package/src/components/config/LTPlayerConfig.ts +25 -11
  21. package/src/components/controls/LTPlayerControlsEvents.ts +46 -36
  22. package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +0 -1
  23. package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +166 -30
  24. package/src/components/events/LTPlayer.ts +8 -0
  25. package/src/components/events/LTPlayerCommon.ts +28 -32
  26. package/src/components/events/LTPlayerDesktop.ts +4 -0
  27. package/src/components/events/LTPlayerMobile.ts +4 -2
  28. package/src/components/share/LTPlayerShareDesktop.ts +120 -0
  29. package/src/components/share/LTPlayerShareEvents.ts +30 -132
  30. package/src/components/share/{LTPlayerShare.ts → LTPlayerShareManager.ts} +26 -8
  31. package/src/components/share/LTPlayerShareMobile.ts +154 -0
  32. package/src/components/video/LTPlayerVideo.ts +49 -0
  33. package/src/global/controllers/LTPlayerController.ts +6 -3
  34. package/src/index.ts +6 -0
  35. package/src/services/ResizeService.ts +7 -7
  36. package/src/views/additionalInfo.handlebars +4 -8
  37. package/src/views/controls.handlebars +41 -37
  38. package/src/views/settings.handlebars +11 -14
  39. package/src/views/share.handlebars +36 -33
  40. package/src/components/addInfo/LTPlayerAdditionalInfoEvents.ts +0 -247
@@ -0,0 +1,110 @@
1
+ import {LTPLayerAddInfo} from "./LTPlayerAddInfoManager";
2
+ import {additionalInformation} from "../../global/types/ModuleTypes";
3
+
4
+ export class LTPlayerAddInfoMobile {
5
+ set(controller: LTPLayerAddInfo.Controller) {
6
+ const playerContainer = controller.plyr.elements.container;
7
+ const playerControlsContainer = controller.plyr.elements.controls;
8
+ let additionalInfoBody: Element = playerContainer.querySelector('.lt-player__additional-info-mobile');
9
+ let instance = controller;
10
+ let __this = this;
11
+
12
+ let buttons: NodeList = additionalInfoBody.querySelectorAll('button');
13
+
14
+ if (buttons.length === 0) {
15
+ return
16
+ }
17
+
18
+ const createInformationModal = (info: additionalInformation, key: string) => {
19
+ let modalTemplate = null;
20
+
21
+ if (typeof info === 'object') {
22
+ modalTemplate = controller.templateService.getAdditionalInfo({
23
+ mobile : true,
24
+ modal : true,
25
+ [controller.device] : true,
26
+ object_data : true,
27
+ [key] : info
28
+ })
29
+ } else {
30
+ modalTemplate = controller.templateService.getAdditionalInfo({
31
+ mobile : true,
32
+ modal : true,
33
+ data : info,
34
+ [controller.device] : true
35
+ })
36
+ }
37
+
38
+ const modal = document.createElement('div');
39
+ modal.classList.add('lt-player-mobile-add-info-modal')
40
+ modal.innerHTML = modalTemplate;
41
+
42
+ const body = document.querySelector('body');
43
+
44
+ if (body) {
45
+ body.appendChild(modal);
46
+ }
47
+ }
48
+
49
+ buttons.forEach((button: HTMLElement) => {
50
+ let mobileEvent: HammerManager = controller.playerInstance.eventInstance.mobileEvents.setMobileEvent(button);
51
+ if (mobileEvent) {
52
+ mobileEvent.on('singletap', function LTPlayerMobileAdditionalInfoButtons(event) {
53
+ event.preventDefault();
54
+
55
+ controller.playerInstance.plyr.elements.controls.classList.add('plyr__controls-enable-addInfo');
56
+
57
+ let targetModal = button.dataset.ltTarget;
58
+ let data = instance.additionalData;
59
+
60
+
61
+ if (data[targetModal] !== undefined) {
62
+ createInformationModal(data[targetModal], targetModal)
63
+ }
64
+
65
+ playerControlsContainer.classList.add('player-lt__modal__mobile-show-modal');
66
+
67
+ window.Player.players.forEach( item => {item.plyr.pause()});
68
+
69
+ __this.dragCloseModal(controller);
70
+
71
+ controller.playerInstance.playerControl.mobileEvents.showControls(controller.playerInstance)
72
+ })
73
+ }
74
+ })
75
+
76
+
77
+ }
78
+
79
+ dragCloseModal(controller: LTPLayerAddInfo.Controller) {
80
+ const modalBody = document.querySelector('.lt-player-mobile-add-info-modal');
81
+ const modalHeader = modalBody.querySelector('.player-lt__mobile__modal-header');
82
+ const background = modalBody.querySelector('.player-lt__modal__mobile__background');
83
+
84
+ const closeModal = () => {
85
+ modalBody.remove();
86
+ }
87
+ if (modalHeader) {
88
+ let mobileEvent: HammerManager = controller.playerInstance.eventInstance.mobileEvents.setMobileEvent(modalHeader);
89
+ if (mobileEvent) {
90
+ mobileEvent.on('pan', function LTPlayerMobileDragDownModal() {
91
+ closeModal();
92
+ if (controller.plyr.paused) {
93
+ controller.plyr.play();
94
+ }
95
+ })
96
+ }
97
+ }
98
+ if (background) {
99
+ let mobileEvent: HammerManager = controller.playerInstance.eventInstance.mobileEvents.setMobileEvent(background);
100
+ if (mobileEvent) {
101
+ mobileEvent.on('singletap', function LTPlayerMobileCloseModal() {
102
+ closeModal();
103
+ if (controller.plyr.paused) {
104
+ controller.plyr.play();
105
+ }
106
+ })
107
+ }
108
+ }
109
+ }
110
+ }
@@ -29,7 +29,8 @@ export class LTPlayerConfig {
29
29
  chapters : null,
30
30
  playerType: null,
31
31
  device : 'desktop',
32
- observe : false
32
+ observe : false,
33
+ videoObjectFit : false
33
34
  }
34
35
  processor : LTPlayerConfigProcessor.Map
35
36
 
@@ -64,22 +65,35 @@ export class LTPlayerConfig {
64
65
  }
65
66
 
66
67
  setObjectFit(plyr : Plyr, instanceType : string) {
67
- if (plyr.isHTML5) {
68
68
 
69
- const videoTag = plyr.elements.wrapper.querySelector('video');
69
+ return new Promise(resolve => {
70
+ if (plyr.isHTML5) {
70
71
 
71
- if (videoTag) {
72
+ const videoTag = plyr.elements.wrapper.querySelector('video');
72
73
 
73
- videoTag.addEventListener('loadedmetadata', (event)=> {
74
+ if (videoTag) {
74
75
 
75
- const type = Helper.getVideoOrientation(videoTag.videoWidth, videoTag.videoHeight);
76
+ videoTag.addEventListener('loadedmetadata', (event)=> {
76
77
 
77
- if (type === instanceType) {
78
- videoTag.style.objectFit = 'cover';
79
- }
80
- })
78
+ const type = Helper.getVideoOrientation(videoTag.videoWidth, videoTag.videoHeight);
79
+
80
+ if (type === instanceType) {
81
+ this.configData.videoObjectFit = 'cover';
82
+ } else {
83
+ this.configData.videoObjectFit = 'clip';
84
+ }
85
+
86
+ resolve(true);
87
+ })
88
+ }
81
89
  }
82
- }
90
+ })
91
+
92
+
93
+ }
94
+
95
+ getObjectFit() {
96
+ return this.configData.videoObjectFit
83
97
  }
84
98
 
85
99
  setVersion(version : string | number) {
@@ -706,46 +706,56 @@ export namespace LTPlayerControlsEvents {
706
706
  }
707
707
 
708
708
 
709
- volume(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
709
+ settings(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
710
710
  let playerControlsContainer = instance.plyr.elements.controls;
711
- const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
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
- setVolumeIcon('up');
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.settingsInstance.common.addSettingsTemplate(this.settingsInstance.playerInstance.playerConfig.getDevice());
14
- this.setDefaultSpeed();
15
- this.setButtonSpeed();
12
+ this.addOpenSettingsEventButton();
16
13
  }
17
14
 
18
- setDefaultSpeed() {
19
- this.settingsInstance.playerInstance.plyr.speed = 1;
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
- setButtonSpeed() {
23
- let playerControlsContainer = this.settingsInstance.playerInstance.plyr.elements.controls;
24
- let playerSpeedButton = playerControlsContainer.querySelector('.plyr__controls_speed-button');
25
- playerSpeedButton.innerHTML = `${this.settingsInstance.playerInstance.plyr.speed}X`;
26
- let plyr = this.settingsInstance.playerInstance.plyr;
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 (playerSpeedButton) {
30
- let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(playerSpeedButton);
42
+ if (background) {
43
+ let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(background);
31
44
  if (mobileEvent) {
32
- mobileEvent.on('singletap', function LTPlayerMobileSpeedButton() {
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
- let playSpeed = plyr.speed + 0.25;
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
- if (playSpeed > 2) {
37
- playerSpeedButton.innerHTML = `1x`;
38
- plyr.speed = 1;
39
- return;
40
- }
68
+ }
41
69
 
42
- if (playSpeed === 1.75) {
43
- plyr.speed = playSpeed + 0.25
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
- plyr.speed = playSpeed;
49
- playerSpeedButton.innerHTML = `${playSpeed}X`;
73
+ const modal = document.createElement('div');
74
+ modal.classList.add('lt-player-mobile-settings-modal')
75
+ modal.innerHTML = modalTemplate;
50
76
 
51
- instance.playerControl.mobileEvents.showControls(instance);
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
- if (instance.playerConfig.getDevice() === 'desktop') {
32
- instance.plyr.toggleCaptions(false);
33
- return;
34
- }
35
-
36
- if (instance.playerConfig.getPreload()) {
37
- instance.plyr.toggleCaptions(false);
38
- return;
39
- }
40
-
41
- if (instance.plyr.isEmbed) {
42
- instance.plyr.embed.getTextTracks().then( (response: string | any[]) => {
43
- if (response.length !== 0) {
44
- instance.plyr.toggleCaptions(true);
45
- } else {
46
- instance.plyr.toggleCaptions(false);
47
- }
48
- })
49
- } else {
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.share.events.desktop.init(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
 
@@ -153,6 +148,7 @@ export class LTPlayerCommon {
153
148
  }
154
149
 
155
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.
156
152
  this.player.playerControl.desktopEvents.subtitles(this.player);
157
153
  }
158
154
 
@@ -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
- //set volume controller
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