@latest-thinking/lt-player 1.0.7 → 1.0.8

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 (36) 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 +2 -1
  6. package/src/assets/sass/abstracts/_mixins.scss +38 -0
  7. package/src/assets/sass/abstracts/_variables.scss +5 -0
  8. package/src/assets/sass/app.scss +22 -1
  9. package/src/assets/sass/components/_modal.scss +39 -24
  10. package/src/assets/sass/core/_player.scss +24 -2
  11. package/src/assets/sass/sections/_additional-info.scss +7 -0
  12. package/src/assets/sass/sections/_poster.scss +251 -177
  13. package/src/assets/sass/sections/_settings.scss +6 -4
  14. package/src/assets/sass/sections/_share.scss +2 -8
  15. package/src/assets/sass/sections/controllers/_botom.scss +1 -0
  16. package/src/components/LTPlayerHls.ts +10 -1
  17. package/src/components/LTPlayerSetup.ts +7 -0
  18. package/src/components/LTPlayerType.ts +6 -1
  19. package/src/components/addInfo/LTPlayerAddInfoDesktop.ts +43 -15
  20. package/src/components/addInfo/LTPlayerAddInfoMobile.ts +60 -57
  21. package/src/components/config/LTPlayerConfigProcessor.ts +1 -1
  22. package/src/components/controls/LTPlayerControlsEvents.ts +94 -59
  23. package/src/components/events/LTPlayerCommon.ts +0 -4
  24. package/src/components/events/LTPlayerDesktop.ts +3 -3
  25. package/src/components/events/LTPlayerMobile.ts +8 -10
  26. package/src/components/poster/LTPlayerPoster.ts +6 -1
  27. package/src/components/poster/LTPlayerPosterEvents.ts +41 -28
  28. package/src/components/share/LTPlayerShareDesktop.ts +14 -3
  29. package/src/index.ts +4 -9
  30. package/src/services/Helper.ts +27 -0
  31. package/src/services/ResizeService.ts +66 -36
  32. package/src/views/additionalInfo.handlebars +11 -1
  33. package/src/views/controls.handlebars +4 -4
  34. package/src/views/poster.handlebars +43 -10
  35. package/src/views/share.handlebars +2 -2
  36. package/src/views/template.handlebars +1 -1
@@ -78,50 +78,65 @@ export namespace LTPlayerPosterEvents {
78
78
 
79
79
  export class Desktop {
80
80
  /**
81
- * Add play event on poster buttons
81
+ * Add play event on poster
82
82
  */
83
- buttons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
83
+ posterBody(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
84
84
 
85
- const common = new LTPlayerPosterEvents.Common();
85
+ const common: Common = new LTPlayerPosterEvents.Common();
86
86
 
87
- common.poster.getButtons(instance)?.forEach(button => {
88
- button.addEventListener('click', function LTPlayerPosterButtons(event) {
87
+ const playerContainer: HTMLElement = instance.plyr.elements.container;
88
+ const posterBody: HTMLElement = playerContainer.querySelector('.lt-player__poster__body');
89
+
90
+
91
+ if (posterBody) {
92
+ posterBody.addEventListener('click', function LTPlayerPosterButtons(event) {
89
93
  event.preventDefault();
94
+
95
+ if((event.target as HTMLInputElement).classList.contains('poster-lt-player-share') ||
96
+ (event.target as HTMLInputElement).classList.contains('filter')
97
+ ) {
98
+ return;
99
+ }
100
+
90
101
  instance.playerControl.desktopEvents.titleLineBreak(instance);
91
102
  instance.playerControl.desktopEvents.playPauseIcon(instance, 'timeupdate');
92
103
  common.poster.reset(instance);
104
+
93
105
  })
94
- });
106
+ }
95
107
  }
96
108
  }
97
109
 
98
110
  export class Mobile {
99
111
  /**
100
- * Add play event on poster buttons mobile
112
+ * Add play event on poster mobile
101
113
  */
102
- buttons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
114
+ posterBody(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
103
115
 
104
- const playerControlsContainer = instance.plyr.elements.controls;
105
- const playerContainer = instance.plyr.elements.container;
106
- const common = new LTPlayerPosterEvents.Common();
116
+ const playerContainer: HTMLElement = instance.plyr.elements.container;
117
+ const playerPoster: Element = playerContainer.querySelector('.plyr__poster');
118
+ const playerBody: Element = playerContainer.querySelector('.lt-player__poster__body');
119
+ const common: Common = new LTPlayerPosterEvents.Common();
107
120
 
108
- common.poster.getButtons(instance)?.forEach(button => {
109
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(button);
121
+ let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerBody);
122
+
123
+ if (mobileEvent) {
124
+ mobileEvent.on('singletap', function LTPlayerMobilePosterPlay() {
110
125
 
111
- if (mobileEvent) {
112
- mobileEvent.on('singletap', function LTPlayerMobilePosterButtons() {
126
+ if (playerPoster.classList.contains('d-none')) {
127
+ return;
128
+ }
113
129
 
114
- instance.playerControl.desktopEvents.titleLineBreak(instance);
130
+ instance.playerControl.desktopEvents.titleLineBreak(instance);
115
131
 
116
- instance.playerControl.mobileEvents.playPauseIcon(instance, 'timeupdate');
117
- common.poster.reset(instance);
132
+ instance.playerControl.mobileEvents.playPauseIcon(instance, 'timeupdate');
133
+ common.poster.reset(instance);
118
134
 
119
- playerContainer.classList.remove('plyr__poster-enabled');
135
+ playerContainer.classList.remove('plyr__poster-enabled');
120
136
 
121
- instance.playerControl.mobileEvents.showControls(instance);
122
- });
123
- }
124
- });
137
+ instance.playerControl.mobileEvents.showControls(instance);
138
+ });
139
+ }
125
140
  }
126
141
 
127
142
  /**
@@ -138,9 +153,9 @@ export namespace LTPlayerPosterEvents {
138
153
  }
139
154
 
140
155
  showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
141
- const playerContainer = instance.plyr.elements.container;
142
- const playerControlsContainer = instance.plyr.elements.controls;
143
- const playerPoster = playerContainer.querySelector('.plyr__poster');
156
+ const playerContainer: HTMLElement = instance.plyr.elements.container;
157
+ const playerControlsContainer: HTMLElement = instance.plyr.elements.controls;
158
+ const playerPoster: Element = playerContainer.querySelector('.plyr__poster');
144
159
 
145
160
 
146
161
  let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerPoster);
@@ -153,7 +168,5 @@ export namespace LTPlayerPosterEvents {
153
168
  });
154
169
  }
155
170
  }
156
-
157
-
158
171
  }
159
172
  }
@@ -3,6 +3,7 @@ import {LTPlayerShareManager} from "./LTPlayerShareManager";
3
3
  export class LTPlayerShareDesktop {
4
4
  manager : LTPlayerShareManager
5
5
  isPlaying : boolean
6
+ switchButtonSet: boolean
6
7
  constructor(instance : LTPlayerShareManager) {
7
8
  this.manager = instance;
8
9
  this.setTemplate();
@@ -29,8 +30,13 @@ export class LTPlayerShareDesktop {
29
30
  this.setCopyContent(false);
30
31
  }
31
32
 
32
- this.setCopyButtonsEvents()
33
- this.setSwitchButton()
33
+ this.setCopyButtonsEvents();
34
+
35
+ if (!this.switchButtonSet) {
36
+ this.setSwitchButton();
37
+ this.switchButtonSet = true;
38
+ }
39
+
34
40
  if (instance.plyr.playing) {
35
41
  this.isPlaying = true;
36
42
  instance.plyr.pause();
@@ -49,7 +55,8 @@ export class LTPlayerShareDesktop {
49
55
  return;
50
56
  }
51
57
 
52
- selectors.switchButton.addEventListener('click', () => {
58
+ const switchEvent = () => {
59
+
53
60
  if (selectors.urlInput.classList.contains('canonicalUrl')) {
54
61
  selectors.urlInput.classList.remove('canonicalUrl');
55
62
  selectors.urlInput.classList.add('embedUrl');
@@ -59,6 +66,10 @@ export class LTPlayerShareDesktop {
59
66
  selectors.urlInput.classList.remove('embedUrl');
60
67
  this.setCopyContent(false);
61
68
  }
69
+ }
70
+
71
+ selectors.switchButton.addEventListener('click', () => {
72
+ switchEvent();
62
73
  })
63
74
  }
64
75
 
package/src/index.ts CHANGED
@@ -2,14 +2,9 @@ import {LTPlayerManager} from "./components/LTPlayerManager";
2
2
 
3
3
  const supportsContainerQueries = "container" in document.documentElement.style;
4
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);
5
+ require('container-query-polyfill');
8
6
  }
9
7
 
10
- //todo remove from window, it's for developer
11
- window.addEventListener('load', function () {
12
- if (window.Player === undefined) {
13
- window.Player = new LTPlayerManager();
14
- }
15
- })
8
+ if (window.Player === undefined) {
9
+ window.Player = new LTPlayerManager();
10
+ }
@@ -112,4 +112,31 @@ export class Helper {
112
112
  return 'portrait'
113
113
  }
114
114
  }
115
+
116
+ static getPlayerStringType(type: string|number)
117
+ {
118
+ let response = null;
119
+
120
+ switch (type) {
121
+ case "1":
122
+ response = 'portrait'
123
+ break
124
+ case "2":
125
+ response = 'landscape'
126
+ break
127
+ case 1:
128
+ response = 'portrait'
129
+ break
130
+ case 2:
131
+ response = 'landscape'
132
+ break
133
+ case 'portrait':
134
+ response = 'portrait'
135
+ break
136
+ case 'landscape':
137
+ response = 'landscape'
138
+ }
139
+
140
+ return response;
141
+ }
115
142
  }
@@ -5,6 +5,7 @@ import {LTPLayerAddInfoResizeManager} from "../components/addInfo/LTPLayerAddInf
5
5
  import {LTPLayerAddInfo} from "../components/addInfo/LTPlayerAddInfoManager";
6
6
  import {LTPlayerRotateDeviceService} from "./LTPlayerRotateDeviceService";
7
7
  import {LTPlayerAddInfoDesktop} from "../components/addInfo/LTPlayerAddInfoDesktop";
8
+ import {Helper} from "./Helper";
8
9
 
9
10
  /**
10
11
  * Window service (set width and height)
@@ -138,8 +139,38 @@ export class ResizeService {
138
139
 
139
140
  protected setAddInfoByDimensions(containerWidth: number, buttonsTemplate:string, deskEvent: LTPlayerAddInfoDesktop, controller: LTPLayerAddInfo.Controller) {
140
141
 
142
+
141
143
  const createAddInfoButtonsOutSide = () => {
144
+ const setButtonsByVideoType = () => {
145
+ const plyr: Plyr = this.player;
146
+
147
+ if (plyr.embed !== undefined) {
148
+ deskEvent.set(controller, 'out');
149
+ return;
150
+ }
151
+
152
+
153
+ if (this.playerInstance.playerConfig.getVideoType() === 'embedded') {
154
+ plyr.on('ready', function () {
155
+ plyr.embed.ready().then (function () {
156
+ deskEvent.set(controller, 'out');
157
+ })
158
+ })
159
+ return;
160
+ }
142
161
 
162
+ if (this.playerInstance.playerConfig.getVideoType() === 'video'){
163
+ plyr.on('ready', function () {
164
+ deskEvent.set(controller, 'out');
165
+ return;
166
+ })
167
+ deskEvent.set(controller, 'out');
168
+ return;
169
+ }
170
+
171
+
172
+
173
+ }
143
174
  let addInfoContainer = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
144
175
  if (addInfoContainer) {
145
176
  addInfoContainer.remove();
@@ -148,12 +179,12 @@ export class ResizeService {
148
179
  this.playerInstance.plyr.elements.container.insertAdjacentHTML("afterend", buttonsTemplate);
149
180
  let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
150
181
  inserted.classList.add('lt-player__additional-info__is_set_out-side');
151
- this.playerInstance.plyr.on('ready', () => {
152
- deskEvent.set(controller);
153
- })
182
+
183
+ setButtonsByVideoType();
154
184
  }
155
185
 
156
186
  const createAddInfoButtonsInSide = () => {
187
+
157
188
  let addInfoContainer = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
158
189
  if (addInfoContainer) {
159
190
  addInfoContainer.remove();
@@ -166,7 +197,7 @@ export class ResizeService {
166
197
  let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
167
198
  inserted.classList.add('lt-player__additional-info__is_set_in-side');
168
199
 
169
- deskEvent.set(controller);
200
+ deskEvent.set(controller, 'in');
170
201
  } else {
171
202
  this.playerInstance.plyr.on('ready', () => {
172
203
 
@@ -176,42 +207,41 @@ export class ResizeService {
176
207
  let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
177
208
  inserted.classList.add('lt-player__additional-info__is_set_in-side');
178
209
 
179
- deskEvent.set(controller);
210
+ deskEvent.set(controller, 'in');
180
211
  })
181
212
  }
182
-
183
-
184
-
185
213
  }
186
214
 
187
- if (containerWidth >= 380) {
188
-
189
- if (this.addInfoInSide && containerWidth + 70 <= 380) {
190
- return;
191
- }
192
-
193
- if (this.addInfoOutSide) {
194
- return;
195
- }
196
-
197
- this.addInfoOutSide = true;
198
- this.addInfoInSide = false;
199
-
200
- createAddInfoButtonsOutSide();
201
- } else {
202
-
203
- if (this.addInfoOutSide && containerWidth + 70 >= 380) {
204
- return;
205
- }
206
-
207
- if (this.addInfoInSide) {
208
- return;
209
- }
210
-
211
- this.addInfoInSide = true;
212
- this.addInfoOutSide = false;
213
- createAddInfoButtonsInSide();
214
- }
215
+ // if (containerWidth >= 380) {
216
+ //
217
+ // if (this.addInfoInSide && (containerWidth + 70 <= 380)) {
218
+ // return;
219
+ // }
220
+ //
221
+ // if (this.addInfoOutSide) {
222
+ // return;
223
+ // }
224
+ //
225
+ // this.addInfoOutSide = true;
226
+ // this.addInfoInSide = false;
227
+ //
228
+ // createAddInfoButtonsOutSide();
229
+ // } else {
230
+ //
231
+ // if (this.addInfoOutSide && (containerWidth + 70 >= 380)) {
232
+ // return;
233
+ // }
234
+ //
235
+ // if (this.addInfoInSide) {
236
+ // return;
237
+ // }
238
+ //
239
+ // this.addInfoInSide = true;
240
+ // this.addInfoOutSide = false;
241
+ // createAddInfoButtonsInSide();
242
+ // }
243
+
244
+ createAddInfoButtonsInSide();
215
245
 
216
246
  }
217
247
 
@@ -1,5 +1,16 @@
1
1
  {{#modal}}
2
2
  {{#mobile}}
3
+ {{#data}}
4
+ <div class="player-lt__modal__mobile__background"></div>
5
+ <div class="player-lt__modal__mobile">
6
+ <div class="player-lt__mobile__modal-header">
7
+ <span class="line-button"></span>
8
+ </div>
9
+ <div class="player-lt__mobile__modal-content">
10
+ {{{data}}}
11
+ </div>
12
+ </div>
13
+ {{/data}}
3
14
  {{#object_data}}
4
15
  <div class="player-lt__modal__mobile__background"></div>
5
16
  <div class="player-lt__modal__mobile">
@@ -28,7 +39,6 @@
28
39
  </div>
29
40
  </div>
30
41
  {{/object_data}}
31
-
32
42
  {{/mobile}}
33
43
  {{#desktop}}
34
44
  {{#object_data}}
@@ -95,15 +95,15 @@
95
95
  <div class="bottom-controller__volume_control">
96
96
  <button type="button" class="plyr__control volume_control__volume-button button-open">
97
97
  <img class="volume-max filter button-open" data-range-value="1" src="{{icons.volume-3}}" alt="">
98
- <img class="volume-75 d-none filter button-open" data-range-value="0.65" src="{{icons.volume-2}}" alt="">
99
- <img class="volume-50 d-none filter button-open" data-range-value="0.35" src="{{icons.volume-1}}" alt="">
98
+ <img class="volume-75 d-none filter button-open" data-range-value="0.40" src="{{icons.volume-2}}" alt="">
99
+ <img class="volume-50 d-none filter button-open" data-range-value="0.02" src="{{icons.volume-1}}" alt="">
100
100
  <img class="volume-mute d-none filter button-open" data-range-value="0" src="{{icons.mute}}" alt="">
101
101
  </button>
102
102
  <div class="volume_control__background d-none">
103
103
  <button class="volume_control__volume-button-close button-close">
104
104
  <img class="volume-max button-close" data-range-value="1" src="{{icons.volume-3}}" alt="">
105
- <img class="volume-75 d-none button-close" data-range-value="0.65" src="{{icons.volume-2}}" alt="">
106
- <img class="volume-50 d-none button-close" data-range-value="0.35" src="{{icons.volume-1}}" alt="">
105
+ <img class="volume-75 d-none button-close" data-range-value="0.40" src="{{icons.volume-2}}" alt="">
106
+ <img class="volume-50 d-none button-close" data-range-value="0.02" src="{{icons.volume-1}}" alt="">
107
107
  <img class="volume-mute d-none button-close" data-range-value="0" src="{{icons.mute}}" alt="">
108
108
  </button>
109
109
  </div>
@@ -1,32 +1,64 @@
1
+ {{#portrait}}
1
2
  <div class="lt-player__poster">
2
- <div class="lt-player__poster__image-body lt-player__poster__background__grey" >
3
+ <div class="lt-player__poster__image-body">
4
+ <div class="lt-player__poster--background"></div>
5
+ <img class="lt-player__poster__img lt-player__poster__img__set-default d-none" alt="" src="{{logoBig}}">
6
+ <img class="lt-player__poster__img--set-custom d-none" alt="" src="{{config.configData.posterImage}}">
7
+ </div>
8
+ <div class="lt-player__poster__body">
9
+ <div class="content">
10
+ <div class="content__header">
11
+ <img src="{{config.logo}}" alt="logo">
12
+ </div>
13
+ <div class="content__body">
14
+ <div class="poster-title">{{config.configData.videoParagraph}}</div>
15
+ <div class="poster-paragraph">{{config.configData.videoTitle}}</div>
16
+ </div>
17
+ <div class="content__footer">
18
+ <div class="poster-buttons">
19
+ <button class="poster-button-play">
20
+ <img src="{{config.play}}" alt="" class="icon--not-pressed" role="presentation">
21
+ </button>
22
+ <button class="poster-button-watch-now">
23
+ Watch now
24
+ </button>
25
+ {{#isShare}}
26
+ <button class="poster-lt-player-share" type="button">
27
+ <img class="filter" src="{{config.share}}" alt="" role="presentation">
28
+ </button>
29
+ {{/isShare}}
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ {{/portrait}}
36
+ {{#landscape}}
37
+ <div class="lt-player__poster">
38
+ <div class="lt-player__poster__image-body">
39
+ <div class="lt-player__poster--background"></div>
3
40
  <img class="lt-player__poster__img lt-player__poster__img__set-default d-none" alt="" src="{{logoBig}}">
4
41
  <img class="lt-player__poster__img--set-custom d-none" alt="" src="{{config.configData.posterImage}}">
5
42
  </div>
6
43
  <div class="lt-player__poster__body">
7
44
  <div class="content">
8
45
  <div class="content__header">
9
- <div class="poster-logo-header">
10
- <div class="logo">
11
- <img src="{{config.logo}}" alt="">
12
- </div>
13
- </div>
46
+ <div class="poster-title">{{config.configData.videoParagraph}}</div>
14
47
  </div>
15
48
  <div class="content__body">
16
- <h4 class="poster-title">{{config.configData.videoParagraph}}</h4>
17
- <p class="poster-paragraph">{{config.configData.videoTitle}}</p>
49
+ <div class="poster-paragraph">{{config.configData.videoTitle}}</div>
18
50
  </div>
19
51
  <div class="content__footer">
20
52
  <div class="poster-buttons">
21
53
  <button class="poster-button-play">
22
- <img src="{{config.play}}" alt="" class="icon--not-pressed" role="presentation" >
54
+ <img src="{{config.play}}" alt="" class="icon--not-pressed" role="presentation">
23
55
  </button>
24
56
  <button class="poster-button-watch-now">
25
57
  Watch now
26
58
  </button>
27
59
  {{#isShare}}
28
60
  <button class="poster-lt-player-share" type="button">
29
- <img class="filter" src="{{config.share}}" alt="" role="presentation" >
61
+ <img class="filter" src="{{config.share}}" alt="" role="presentation">
30
62
  </button>
31
63
  {{/isShare}}
32
64
  </div>
@@ -34,3 +66,4 @@
34
66
  </div>
35
67
  </div>
36
68
  </div>
69
+ {{/landscape}}
@@ -26,8 +26,8 @@
26
26
  <a class="button_embed lt-player-mobile-share">
27
27
  <span class="share-icon__icon lt-player-mobile-share">
28
28
  <svg class="lt-player-mobile-share" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
29
- <path d="M8.00028 17.0003C7.74428 17.0003 7.48825 16.9023 7.29325 16.7073L3.29325 12.7073C2.90225 12.3163 2.90225 11.6843 3.29325 11.2933L7.29325 7.29325C7.68425 6.90225 8.31631 6.90225 8.70731 7.29325C9.09831 7.68425 9.09831 8.31631 8.70731 8.70731L5.41434 12.0003L8.70731 15.2933C9.09831 15.6843 9.09831 16.3163 8.70731 16.7073C8.51231 16.9023 8.25628 17.0003 8.00028 17.0003Z" fill="#27282A"/>
30
- <path d="M16.0007 17.0003C16.2567 17.0003 16.5127 16.9023 16.7077 16.7073L20.7077 12.7073C21.0987 12.3163 21.0987 11.6843 20.7077 11.2933L16.7077 7.29325C16.3167 6.90225 15.6847 6.90225 15.2937 7.29325C14.9027 7.68425 14.9027 8.31631 15.2937 8.70731L18.5866 12.0003L15.2937 15.2933C14.9027 15.6843 14.9027 16.3163 15.2937 16.7073C15.4887 16.9023 15.7447 17.0003 16.0007 17.0003Z" fill="#27282A"/>
29
+ <path d="M8.00028 17.0003C7.74428 17.0003 7.48825 16.9023 7.29325 16.7073L3.29325 12.7073C2.90225 12.3163 2.90225 11.6843 3.29325 11.2933L7.29325 7.29325C7.68425 6.90225 8.31631 6.90225 8.70731 7.29325C9.09831 7.68425 9.09831 8.31631 8.70731 8.70731L5.41434 12.0003L8.70731 15.2933C9.09831 15.6843 9.09831 16.3163 8.70731 16.7073C8.51231 16.9023 8.25628 17.0003 8.00028 17.0003Z" fill="#ffffff"/>
30
+ <path d="M16.0007 17.0003C16.2567 17.0003 16.5127 16.9023 16.7077 16.7073L20.7077 12.7073C21.0987 12.3163 21.0987 11.6843 20.7077 11.2933L16.7077 7.29325C16.3167 6.90225 15.6847 6.90225 15.2937 7.29325C14.9027 7.68425 14.9027 8.31631 15.2937 8.70731L18.5866 12.0003L15.2937 15.2933C14.9027 15.6843 14.9027 16.3163 15.2937 16.7073C15.4887 16.9023 15.7447 17.0003 16.0007 17.0003Z" fill="#ffffff"/>
31
31
  </svg>
32
32
  </span>
33
33
  </a>
@@ -3,7 +3,7 @@
3
3
  </div>
4
4
  {{/embedded}}
5
5
  {{#video}}
6
- <video class="embed_player lt-player-wrapper" playsinline controls>
6
+ <video class="embed_player lt-player-wrapper" playsinline controls crossorigin preload="none">
7
7
  <source src="{{videoUrl.videoUrl}}"/>
8
8
  {{#defaultConfig.captions}}
9
9
  <track kind="captions" label="{{label}} captions" src="{{url}}" srclang="{{srclang}}" {{default}} />