@latest-thinking/lt-player 1.0.4 → 1.0.5

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 (44) hide show
  1. package/dist/css/lt-player-main.css +1 -3
  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 +10 -8
  6. package/src/assets/sass/app.scss +2 -2
  7. package/src/assets/sass/core/_fonts.scss +5 -5
  8. package/src/assets/sass/sections/_control.scss +35 -0
  9. package/src/assets/sass/sections/_poster.scss +3 -0
  10. package/src/assets/sass/sections/_settings.scss +1 -1
  11. package/src/assets/sass/sections/_subtitles.scss +4 -0
  12. package/src/assets/sass/sections/controllers/_botom.scss +15 -5
  13. package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +70 -11
  14. package/src/components/LTPlayerManager.ts +12 -5
  15. package/src/components/LTPlayerSetup.ts +31 -7
  16. package/src/components/LTPlayerType.ts +11 -7
  17. package/src/components/addInfo/LTPlayerAdditionalInfoEvents.ts +6 -2
  18. package/src/components/config/LTPlayerConfig.ts +192 -0
  19. package/src/components/config/LTPlayerConfigProcessor.ts +546 -0
  20. package/src/components/controls/LTPlayerChapters.ts +8 -4
  21. package/src/components/controls/LTPlayerControls.ts +1 -1
  22. package/src/components/controls/LTPlayerControlsEvents.ts +206 -65
  23. package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +2 -4
  24. package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +2 -0
  25. package/src/components/events/LTPlayer.ts +36 -1
  26. package/src/components/events/LTPlayerDesktop.ts +1 -0
  27. package/src/components/events/LTPlayerMobile.ts +1 -1
  28. package/src/components/poster/LTPlayerPoster.ts +2 -2
  29. package/src/components/poster/LTPlayerPosterEvents.ts +2 -0
  30. package/src/components/poster/LTPlayerPosterManager.ts +1 -1
  31. package/src/components/poster/LTPlayerPosterPreload.ts +1 -1
  32. package/src/components/poster/LTPlayerPosterPreloadEvents.ts +17 -6
  33. package/src/components/share/LTPlayerShare.ts +1 -1
  34. package/src/components/share/LTPlayerShareEvents.ts +20 -20
  35. package/src/global/controllers/LTPlayerController.ts +1 -1
  36. package/src/services/Helper.ts +20 -5
  37. package/src/services/IconsService.ts +15 -0
  38. package/src/services/LTPlayerRotateDeviceService.ts +8 -1
  39. package/src/services/ResizeService.ts +24 -6
  40. package/src/services/TemplateService.ts +1 -1
  41. package/src/views/controls.handlebars +71 -14
  42. package/src/views/settings.handlebars +3 -3
  43. package/src/views/template.handlebars +2 -2
  44. package/src/components/LTPlayerConfig.ts +0 -398
@@ -1,398 +0,0 @@
1
- import {defaultType, playerConfigType, urlDataType} from "../global/types/ModuleTypes";
2
- import {Helper} from "../services/Helper";
3
-
4
- export class LTPlayerConfig {
5
-
6
- private configData: playerConfigType = {
7
- preload: false,
8
- selector : '',
9
- autoPlay : false,
10
- videoTitle: '',
11
- posterImage: '',
12
- videoParagraph: '',
13
- videoUrl: '',
14
- videoType: '',
15
- embedId: '',
16
- embedHash: '',
17
- origin: '',
18
- playerId: '',
19
- playerContainer: '',
20
- vimeo: {
21
- 'controls': false,
22
- "active": false,
23
- 'gesture': 'media',
24
- 'transparent': false,
25
- 'speed': true,
26
- 'portrait': true,
27
- 'keyboard': false,
28
- 'title': false,
29
- 'byline': false,
30
- 'playsinline': true,
31
- 'background' : true
32
- },
33
- youtube: {
34
- 'controls': 0,
35
- 'noCookie': false,
36
- 'rel': 0,
37
- 'showinfo': 0,
38
- 'iv_load_policy': 3,
39
- 'modestbranding': 1,
40
- 'playsinline': true,
41
- },
42
- defaultConfig : {
43
- speed : {
44
- selected : 1,
45
- captions : false,
46
- update: true
47
- },
48
- captions : {
49
- active : false
50
- },
51
- clickToPlay : false,
52
- playsinline : true,
53
- pip : false
54
- },
55
- share: null,
56
- chapters : null,
57
- dimensions: null,
58
- playerType: null,
59
- device : 'desktop'
60
- }
61
-
62
-
63
- private defaultDimensions: defaultType = {
64
- max_width: '450px',
65
- min_width: '350px',
66
- max_height: '780px',
67
- min_height: '600px'
68
- }
69
-
70
- /**
71
- * @param config
72
- */
73
- constructor(config: playerConfigType) {
74
- this.setConfig(config);
75
- this.processConfigData();
76
- }
77
-
78
- setConfig(config: playerConfigType) {
79
- Object.keys(this.configData).forEach(item => {
80
-
81
- const setCustomConfig = (item: object, configItem: object) => {
82
-
83
- if (configItem && Object.keys(configItem).length > 0) {
84
-
85
- Object.keys(configItem).forEach( element => {
86
- if (item[element as keyof typeof item] === configItem[element as keyof typeof configItem]) {
87
- item[element as keyof typeof item] = configItem[element as keyof typeof configItem]
88
- } else {
89
- Object.assign(item, {[element]:configItem[element as keyof typeof configItem]})
90
- }
91
- })
92
- }
93
-
94
- return item;
95
-
96
- }
97
-
98
- const setDimensions = (data: defaultType) : any => {
99
-
100
- let response: defaultType = {
101
- width: '100%',
102
- min_width: this.defaultDimensions.min_width,
103
- max_width: this.defaultDimensions.max_width,
104
- height: '100%',
105
- min_height: this.defaultDimensions.min_height,
106
- max_height: this.defaultDimensions.max_height,
107
- }
108
-
109
-
110
- if (data) {
111
- if (data.width <= parseInt(this.defaultDimensions.max_width.replace('px', '')) && data.width >= parseInt(this.defaultDimensions.min_width.replace('px', ''))) {
112
- response.width = (Number.isInteger(data.width)) ? `${data.width}px` : '100%';
113
- }
114
-
115
- if (data.height <= parseInt(this.defaultDimensions.max_height.replace('px', '')) && data.height >= parseInt(this.defaultDimensions.min_height.replace('px', ''))) {
116
- response.height = (Number.isInteger(data.height)) ? `${data.height}px` : '100%';
117
- }
118
- }
119
-
120
- return response;
121
-
122
- }
123
-
124
- switch (item) {
125
- case 'vimeo':
126
- this.configData[item] = setCustomConfig(this.configData[item], config[item]);
127
- break;
128
- case 'youtube':
129
- this.configData[item] = setCustomConfig(this.configData[item], config[item]);
130
- break;
131
- case 'defaultConfig':
132
- this.configData[item] = setCustomConfig(this.configData[item], config[item]);
133
- break
134
- case 'dimensions':
135
- this.configData[item] = setDimensions(config[item]);
136
- break
137
- case 'additionalInfo':
138
- this.configData[item] = config[item];
139
- break
140
- case 'playerId' :
141
- if (typeof item === 'string') {
142
- this.configData[item] = parseInt(config[item]);
143
- } else {
144
- this.configData[item] = config[item];
145
- }
146
- break
147
- case 'preload':
148
- const setDefaultTimeRange = () => {
149
- this.configData[item] = {
150
- start : 0,
151
- stop : 10
152
- }
153
- }
154
-
155
- const setTimeRange = (config: defaultType) => {
156
-
157
- setDefaultTimeRange();
158
-
159
- if (config.start) {
160
-
161
- let start = config.start;
162
-
163
- if (typeof start === 'string') {
164
- start = parseFloat(start);
165
- }
166
-
167
- this.configData[item].start = start;
168
-
169
-
170
- if (!start) {
171
- this.configData[item].start = 0;
172
- }
173
- }
174
- if (config.stop) {
175
-
176
- let stop = config.stop;
177
-
178
- if (typeof stop === 'string') {
179
- stop = parseFloat(stop);
180
- }
181
-
182
- this.configData[item].stop = stop;
183
-
184
- if (!stop) {
185
- this.configData[item].stop = 10;
186
- }
187
-
188
- }
189
-
190
- if (!config.start || !config.stop) {
191
- setDefaultTimeRange();
192
- }
193
- }
194
-
195
-
196
- const setPreloadType = (type: defaultType) => {
197
-
198
- this.configData[item].autoType = true;
199
-
200
- if (type.onload !== undefined) {
201
- if (typeof type.onload === 'string' && type.onload === 'false') {
202
- this.configData[item].autoType = false;
203
- }
204
-
205
- if (typeof type.onload === 'boolean') {
206
- if (!type.onload) {
207
- this.configData[item].autoType = false;
208
- }
209
- }
210
- }
211
-
212
- }
213
-
214
- const setActive = () => {
215
- this.configData[item].isActive = true;
216
- }
217
-
218
- if (typeof config[item] === 'object') {
219
- if (Object.keys(config[item]).length !== 0) {
220
- setTimeRange(config[item]);
221
- setPreloadType(config[item]);
222
- setActive();
223
- }
224
-
225
- if (Object.keys(config[item]).length === 0) {
226
- setDefaultTimeRange();
227
- setPreloadType(config[item]);
228
- setActive();
229
- }
230
- }
231
-
232
-
233
- if (typeof config[item] === 'string' && config[item] !== 'false') {
234
- switch (config[item]) {
235
- case 'true':
236
- setDefaultTimeRange();
237
- setPreloadType(config[item]);
238
- setActive();
239
- break
240
- }
241
- }
242
-
243
- if (typeof config[item] === 'boolean') {
244
- if (config[item]) {
245
- setDefaultTimeRange();
246
- setPreloadType(config[item]);
247
- setActive();
248
- }
249
- }
250
-
251
- break
252
- default:
253
- if (config[item]) {
254
- this.configData[item] = config[item];
255
- }
256
- }
257
- })
258
- }
259
-
260
- processConfigData() {
261
-
262
- let videoUrl: string = this.configData.videoUrl;
263
-
264
- const urlVideoData: urlDataType = Helper.processConfigData(videoUrl);
265
-
266
- this.configData.origin = urlVideoData.origin;
267
-
268
- if (!this.configData.videoType.toLowerCase() || (urlVideoData.type !== this.configData.videoType.toLowerCase())) {
269
- Object.assign(this.configData, {videoType: urlVideoData.type})
270
- }
271
-
272
- if (this.configData.videoType === 'embedded') {
273
-
274
- this.configData.embedId = Helper.getEmbeddedID(this.configData.videoUrl);
275
-
276
- if (Helper.getEmbeddedHash(this.configData.videoUrl)) {
277
- this.configData.embedHash = Helper.getEmbeddedHash(this.configData.videoUrl);
278
- }
279
-
280
- }
281
- }
282
-
283
- getDimensions() {
284
- return this.configData.dimensions
285
- }
286
-
287
- getAdditionalInfo() {
288
- return this.configData.additionalInfo;
289
- }
290
-
291
- getVideoTitle() {
292
- return this.configData.videoTitle;
293
- }
294
-
295
- getPosterImage() {
296
- return this.configData.posterImage;
297
- }
298
-
299
- getParagraph() {
300
- return this.configData.videoParagraph;
301
- }
302
-
303
- getVideoType() {
304
- return this.configData.videoType;
305
- }
306
-
307
- getVideoUrl() {
308
- return this.configData.videoUrl;
309
- }
310
-
311
- getPlayerId() {
312
- return this.configData.playerId;
313
- }
314
-
315
- getConfigData() {
316
- return this.configData;
317
- }
318
-
319
- getPlayerElementContainer() {
320
- return this.configData.playerContainer;
321
- }
322
-
323
- getVideoOrigin() {
324
- return this.configData.origin;
325
- }
326
-
327
- /**
328
- *
329
- * @param origin
330
- */
331
- getConfigByOrigin(origin: string) {
332
- return (this.configData[origin] !== undefined) ? this.configData[origin] : null;
333
- }
334
-
335
- getDefaultConfigItems() {
336
- return this.configData.defaultConfig;
337
- }
338
-
339
- getDomSelector() {
340
- return this.configData.selector;
341
- }
342
-
343
- getChapters() {
344
- return this.configData.chapters
345
- }
346
-
347
- isShareData() {
348
- if (this.configData.share) {
349
- return Object.keys(this.configData.share).length > 0;
350
- }
351
-
352
- return false;
353
- }
354
-
355
- getShareData() {
356
- return this.configData.share
357
- }
358
-
359
- getCaptions () {
360
- return this.configData.defaultConfig.captions
361
- }
362
-
363
- getPlayerType() {
364
- return this.configData.playerType
365
- }
366
-
367
- setPlayerId(id: number) {
368
- this.configData.playerId = id;
369
- }
370
-
371
- isAutoPlay() {
372
- return this.configData.autoPlay;
373
- }
374
-
375
- getPreload() {
376
- return this.configData.preload;
377
- }
378
- isAutoPreload() {
379
- return this.configData.preload.autoType;
380
- }
381
-
382
- getDevice() {
383
- return this.configData.device;
384
- }
385
-
386
- getEmbedOrigin() {
387
- return {[this.getVideoOrigin()] : this.getConfigByOrigin(this.getVideoOrigin())};
388
- }
389
-
390
- getFullscreenMode() {
391
- if (this.getDevice() === 'mobile') {
392
- return {fullscreen: {enabled: false}}
393
- } else {
394
- return false
395
- }
396
- }
397
- }
398
-