@latest-thinking/lt-player 1.0.9 → 1.1.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@latest-thinking/lt-player",
3
- "version": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "description": "LT player.",
5
5
  "main": "dist/js/lt-player-main.js",
6
6
  "module": "dist/js/lt-player-main.js",
@@ -16,6 +16,7 @@
16
16
 
17
17
  $lt-font-family-base: "MuseoSans", sans-serif !important;
18
18
 
19
+ $lt-player-font-size-xxs: 10px;
19
20
  $lt-player-font-size-xs: 12px;
20
21
  $lt-player-font-size-sm: 14px;
21
22
  $lt-player-font-size-base: 16px;
@@ -45,3 +45,9 @@
45
45
  }
46
46
  }
47
47
  }
48
+
49
+ .lt-player-portrate--mobile {
50
+ .fullscreen-custom-control {
51
+ display: none !important;
52
+ }
53
+ }
@@ -66,6 +66,10 @@
66
66
  &:active {
67
67
  background-color: $default-lt-player-blue;
68
68
  }
69
+
70
+ span {
71
+ font-size: $lt-player-font-size-xxs;
72
+ }
69
73
  }
70
74
  }
71
75
 
@@ -334,6 +338,10 @@
334
338
  .plyr__controls_speed-button {
335
339
  width: 40px;
336
340
  height: 40px;
341
+
342
+ span {
343
+ font-size: $lt-player-font-size-sm;
344
+ }
337
345
  }
338
346
  }
339
347
  }
@@ -24,9 +24,9 @@ export class LTPlayerManager {
24
24
 
25
25
  let domElements: NodeListOf<HTMLElement>;
26
26
 
27
- domElements = document.querySelectorAll(`.${process.env.DEFAULT_DOM_HTML_ELEMENTS}`);
27
+ domElements = document.querySelectorAll(`.${process.env.DEFAULT_DOM_HTML_ELEMENTS}, #${process.env.DEFAULT_DOM_HTML_ELEMENTS}`);
28
28
 
29
- if (domElements.length === 0) {
29
+ if (domElements.length !== 0) {
30
30
  domElements = document.querySelectorAll('[data-lt-player-config]');
31
31
  }
32
32
 
@@ -51,8 +51,9 @@ export class LTPlayerManager {
51
51
  /**
52
52
  * Init player by identifier
53
53
  * @param identifier
54
+ * @param playerConfig
54
55
  */
55
- initByClassOrID(identifier: string) {
56
+ initByClassOrID(identifier: string, playerConfig?: playerConfigType) {
56
57
 
57
58
  if (typeof identifier !== 'string') {
58
59
  console.error('Identifier has another type of');
@@ -69,7 +70,7 @@ export class LTPlayerManager {
69
70
  return;
70
71
  }
71
72
  return new Promise(resolve => {
72
- this.initBySelector(defaultSelector).then( result => {
73
+ this.initBySelector(defaultSelector, playerConfig).then(result => {
73
74
  resolve(result);
74
75
  })
75
76
  })
@@ -79,13 +80,24 @@ export class LTPlayerManager {
79
80
  /**
80
81
  * Init player by HTMLElement selector
81
82
  * @param selector
83
+ * @param playerConfig
82
84
  */
83
- initBySelector(selector: HTMLElement) {
84
- let playerConfig = selector.dataset.ltPlayerConfig;
85
+ initBySelector(selector: HTMLElement, playerConfig?: playerConfigType) {
85
86
 
86
- if (playerConfig !== undefined) {
87
+ let config: playerConfigType | string = selector.dataset.ltPlayerConfig;
87
88
 
88
- const configData = JSON.parse(playerConfig);
89
+ if (!config) {
90
+ config = playerConfig;
91
+ }
92
+
93
+ if (config !== undefined) {
94
+ let configData: playerConfigType;
95
+
96
+ if (typeof config === "string") {
97
+ configData = JSON.parse(config);
98
+ } else {
99
+ configData = config;
100
+ }
89
101
 
90
102
  Object.assign(configData.body, {playerContainer: selector})
91
103
 
@@ -96,13 +108,17 @@ export class LTPlayerManager {
96
108
  })
97
109
  }
98
110
 
99
- console.error(`Lt Player: No "data-lt-player-config" attribute is set on element!`);
100
- console.log(selector)
101
- console.error('Use one of below examples')
102
- console.table({
103
- Example_1: '<div class="lt-player" data-lt-player-config="{config}"> </div>',
111
+ return new Promise((resolve, reject) => {
112
+ console.error(`Lt Player: No "data-lt-player-config" attribute is set on element!`);
113
+ console.log(selector)
114
+ console.error('Use one of below examples')
115
+ console.table({
116
+ Example_1: '<div class="lt-player" data-lt-player-config="{config}"> </div>',
117
+ })
118
+ reject()
104
119
  })
105
- return;
120
+
121
+
106
122
  }
107
123
 
108
124
  /**
@@ -110,25 +126,27 @@ export class LTPlayerManager {
110
126
  * @param playerConfig
111
127
  * @protected
112
128
  */
113
- public initPlayer(playerConfig?: playerConfigType) {
129
+ public initPlayer(playerConfig?: playerConfigType): Promise<any> | null {
114
130
 
115
131
  const setup = new LTPlayerSetup();
116
132
 
117
- return new Promise((resolve, reject) => {
118
- let setupPLayer = setup.init(playerConfig);
119
-
120
- if (setupPLayer) {
121
- setupPLayer.then( result => {
122
- this.players.push(result);
123
- resolve(result);
124
- })
125
- } else {
126
- reject('Player is not setup')
127
- }
128
-
129
- })
130
-
133
+ return new Promise((resolve, reject) => {
134
+ if (!setup.checkIfPlayerExists(playerConfig)) {
135
+ reject('Duplicate player');
136
+ return;
137
+ }
138
+ let setupPLayer = setup.init(playerConfig);
139
+
140
+ if (setupPLayer) {
141
+ setupPLayer.then( result => {
142
+ this.players.push(result);
143
+ resolve(result);
144
+ })
145
+ } else {
146
+ reject('Player is not setup')
147
+ }
131
148
 
149
+ })
132
150
  }
133
151
 
134
152
  /**
@@ -5,10 +5,30 @@ import {ValidatorService} from "../services/ValidatorService";
5
5
  import * as playerSchema from "../json-schema/player-config.json";
6
6
  import {LTPLayerAddInfo} from "./addInfo/LTPlayerAddInfoManager";
7
7
  import Plyr from "plyr";
8
+ import {LTPlayerDevMethode} from "./LTPlayerDevMethode";
9
+ import Player = LTPlayerDevMethode.Player;
8
10
 
9
11
  export class LTPlayerSetup {
12
+
10
13
  additionalInfoService: LTPLayerAddInfo.Controller;
11
14
 
15
+ checkIfPlayerExists(playerConfig?: playerConfigType): boolean
16
+ {
17
+ let response: boolean = false;
18
+
19
+ if (playerConfig.body.playerContainer instanceof HTMLElement) {
20
+ response = true;
21
+ if (window.Player !== undefined) {
22
+ window.Player.players.forEach(player => {
23
+ if (player.playerConfig.getPlayerElementContainer() === playerConfig.body.playerContainer) {
24
+ response = false;
25
+ }
26
+ })
27
+ }
28
+ }
29
+ return response;
30
+ }
31
+
12
32
  init(playerConfig?: playerConfigType): Promise<any> {
13
33
 
14
34
  Helper.setDebugEvent('Start init player', 'info');
@@ -89,34 +89,44 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
89
89
  setButtonSpeed() {
90
90
  let playerControlsContainer = this.settingsInstance.playerInstance.plyr.elements.controls;
91
91
  let playerSpeedButton = playerControlsContainer.querySelector('.plyr__controls_speed-button');
92
- if (playerSpeedButton) {
93
- playerSpeedButton.innerHTML = `${this.settingsInstance.playerInstance.plyr.speed}`;
94
- }
95
92
  let plyr = this.settingsInstance.playerInstance.plyr;
96
93
  let instance = this.settingsInstance.playerInstance;
97
94
 
98
95
  if (playerSpeedButton) {
96
+ let speedSpan = document.createElement('span');
97
+ playerSpeedButton.appendChild(speedSpan);
98
+ speedSpan.innerHTML = `1X`;
99
+ speedSpan.className = '';
100
+ speedSpan.classList.add('playback-speed--1X');
101
+
99
102
  playerSpeedButton.addEventListener('click', function(event) {
100
103
  let playSpeed = plyr.speed + 0.25;
101
104
 
102
105
  if (playSpeed > 2) {
103
- playerSpeedButton.innerHTML = `1`;
106
+ speedSpan.innerHTML = `1X`;
104
107
  plyr.speed = 1;
108
+ speedSpan.className = '';
109
+ speedSpan.classList.add('playback-speed--1X');
105
110
  return;
106
111
  }
107
112
 
108
113
  if (playSpeed === 1.75) {
109
114
  plyr.speed = playSpeed + 0.25
110
- playerSpeedButton.innerHTML = `${playSpeed + 0.25}`;
115
+ speedSpan.innerHTML = `2X`;
116
+ speedSpan.className = '';
117
+ speedSpan.classList.add('playback-speed--2X');
111
118
  return;
112
119
  }
113
120
 
114
121
  plyr.speed = playSpeed;
115
- playerSpeedButton.innerHTML = `${playSpeed}`;
122
+ const displaySpeed = Math.floor(playSpeed * 10) / 10;
123
+ speedSpan.innerHTML = displaySpeed + "X";
124
+ speedSpan.className = '';
125
+ console.log(playSpeed.toPrecision(2));
126
+ speedSpan.classList.add('playback-speed--' + playSpeed + 'X');
116
127
 
117
128
  instance.playerControl.mobileEvents.showControls(instance);
118
129
  })
119
130
  }
120
131
  }
121
-
122
132
  }
@@ -163,27 +163,38 @@ export class LTPlayerMobileSettingsControllers implements SettingsControlsInterf
163
163
  let instance = this.settingsInstance.playerInstance;
164
164
 
165
165
  if (playerSpeedButton) {
166
- playerSpeedButton.innerHTML = `${this.settingsInstance.playerInstance.plyr.speed}`;
166
+ let speedSpan = document.createElement('span');
167
+ playerSpeedButton.appendChild(speedSpan);
168
+ speedSpan.innerHTML = `1X`;
169
+ speedSpan.className = '';
170
+ speedSpan.classList.add('playback-speed--1X');
171
+
167
172
  let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(playerSpeedButton);
168
173
  if (mobileEvent) {
169
174
  mobileEvent.on('singletap', function LTPlayerMobileSpeedButton() {
170
-
171
175
  let playSpeed = plyr.speed + 0.25;
172
176
 
173
177
  if (playSpeed > 2) {
174
- playerSpeedButton.innerHTML = `1`;
178
+ speedSpan.innerHTML = `1X`;
175
179
  plyr.speed = 1;
180
+ speedSpan.className = '';
181
+ speedSpan.classList.add('playback-speed--1X');
176
182
  return;
177
183
  }
178
184
 
179
185
  if (playSpeed === 1.75) {
180
186
  plyr.speed = playSpeed + 0.25
181
- playerSpeedButton.innerHTML = `${playSpeed + 0.25}`;
187
+ speedSpan.innerHTML = `2X`;
188
+ speedSpan.className = '';
189
+ speedSpan.classList.add('playback-speed--2X');
182
190
  return;
183
191
  }
184
192
 
185
193
  plyr.speed = playSpeed;
186
- playerSpeedButton.innerHTML = `${playSpeed}`;
194
+ const displaySpeed = Math.floor(playSpeed * 10) / 10;
195
+ speedSpan.innerHTML = displaySpeed + "X";
196
+ speedSpan.className = '';
197
+ speedSpan.classList.add('playback-speed--' + playSpeed + 'X');
187
198
 
188
199
  instance.playerControl.mobileEvents.showControls(instance);
189
200
  })
@@ -333,9 +333,7 @@
333
333
  </div>
334
334
  {{#mobile}}
335
335
  <div class="bottom-controller__right-buttons">
336
- <button type="button" class="plyr__control plyr__controls_speed-button">
337
- <span class="playback-speed"></span>
338
- </button>
336
+ <button type="button" class="plyr__control plyr__controls_speed-button"></button>
339
337
  </div>
340
338
  {{/mobile}}
341
339
  {{#mobile}}
@@ -344,9 +342,7 @@
344
342
 
345
343
  {{#desktop}}
346
344
  <div class="bottom-controller__right-buttons">
347
- <button type="button" class="plyr__control plyr__controls_speed-button">
348
- <span class="playback-speed></span>
349
- </button>
345
+ <button type="button" class="plyr__control plyr__controls_speed-button"></button>
350
346
  </div>
351
347
  {{/desktop}}
352
348
  </div>