@latest-thinking/lt-player 1.2.0 → 2.0.0-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.
Files changed (205) hide show
  1. package/.editorconfig +1 -1
  2. package/.node-version +1 -0
  3. package/.nvmrc +1 -0
  4. package/README.md +163 -0
  5. package/dist/main.js +29712 -0
  6. package/package.json +32 -67
  7. package/tsconfig.json +2 -1
  8. package/vite-dev.config.mts +35 -0
  9. package/vite.config.mts +40 -0
  10. package/ README.md +0 -270
  11. package/.babelrc +0 -11
  12. package/.eslintrc.js +0 -6
  13. package/dist/css/lt-player-main.css +0 -3
  14. package/dist/css/lt-player-main.css.map +0 -1
  15. package/dist/fonts/0574e80a2483be7b033e.otf +0 -0
  16. package/dist/fonts/34274fbfb2f270b8d53b.otf +0 -0
  17. package/dist/fonts/80acced0ba3630ee652b.otf +0 -0
  18. package/dist/fonts/8ccea4947561e7008d19.otf +0 -0
  19. package/dist/fonts/d355445ed7d61b887e58.otf +0 -0
  20. package/dist/js/lt-player-main.js +0 -3
  21. package/dist/js/lt-player-main.js.LICENSE.txt +0 -9
  22. package/dist/js/lt-player-main.js.map +0 -1
  23. package/examples/basic.html +0 -35
  24. package/examples/lt-page-with-player.html +0 -3529
  25. package/examples/lt-page-with-player_files/Weiskopf_Coverphoto.jpg +0 -0
  26. package/examples/lt-page-with-player_files/ajax-progress.module.css +0 -49
  27. package/examples/lt-page-with-player_files/align.module.css +0 -32
  28. package/examples/lt-page-with-player_files/announce.js +0 -49
  29. package/examples/lt-page-with-player_files/autocomplete-loading.module.css +0 -22
  30. package/examples/lt-page-with-player_files/autocomplete.css +0 -16
  31. package/examples/lt-page-with-player_files/bootstrap.css +0 -22691
  32. package/examples/lt-page-with-player_files/clearfix.module.css +0 -15
  33. package/examples/lt-page-with-player_files/container-inline.module.css +0 -16
  34. package/examples/lt-page-with-player_files/cookiesjsr.min.css +0 -10
  35. package/examples/lt-page-with-player_files/core.css +0 -97
  36. package/examples/lt-page-with-player_files/details.module.css +0 -10
  37. package/examples/lt-page-with-player_files/fieldgroup.module.css +0 -9
  38. package/examples/lt-page-with-player_files/hidden.module.css +0 -53
  39. package/examples/lt-page-with-player_files/himme-alexander-beyond_0.jpg +0 -0
  40. package/examples/lt-page-with-player_files/item-list.module.css +0 -19
  41. package/examples/lt-page-with-player_files/js.module.css +0 -22
  42. package/examples/lt-page-with-player_files/latest_thinking.style.css +0 -6496
  43. package/examples/lt-page-with-player_files/logo-small.png +0 -0
  44. package/examples/lt-page-with-player_files/menu.css +0 -64
  45. package/examples/lt-page-with-player_files/nowrap.module.css +0 -8
  46. package/examples/lt-page-with-player_files/paragraphs.unpublished.css +0 -3
  47. package/examples/lt-page-with-player_files/position-container.module.css +0 -8
  48. package/examples/lt-page-with-player_files/progress.module.css +0 -51
  49. package/examples/lt-page-with-player_files/radix.style.css +0 -1
  50. package/examples/lt-page-with-player_files/reset-appearance.module.css +0 -15
  51. package/examples/lt-page-with-player_files/resize.module.css +0 -21
  52. package/examples/lt-page-with-player_files/search_api_autocomplete.css +0 -41
  53. package/examples/lt-page-with-player_files/sticky-header.module.css +0 -13
  54. package/examples/lt-page-with-player_files/system-status-counter.css +0 -30
  55. package/examples/lt-page-with-player_files/system-status-report-counters.css +0 -27
  56. package/examples/lt-page-with-player_files/system-status-report-general-info.css +0 -14
  57. package/examples/lt-page-with-player_files/tabledrag.module.css +0 -98
  58. package/examples/lt-page-with-player_files/tablesort.module.css +0 -19
  59. package/examples/lt-page-with-player_files/theme.css +0 -446
  60. package/examples/lt-page-with-player_files/thumbnail_MPI_CBS_Eingangsbereich.jpg +0 -0
  61. package/examples/lt-page-with-player_files/tree-child.module.css +0 -18
  62. package/examples/lt-page-with-player_files/widget-min.js +0 -10
  63. package/examples/lt-website.html +0 -76
  64. package/examples/portrait-with-subtitles.html +0 -81
  65. package/examples/samples/vtt/Pahl-Kerstin-Maria-MAIN-20230320.vtt +0 -765
  66. package/examples/samples/vtt/Sobolev-Anton-Subtitles-20230518_0.vtt +0 -352
  67. package/examples/samples/vtt/demo.vtt +0 -7
  68. package/src/assets/css/sample.css +0 -12
  69. package/src/assets/fonts/museo/MuseoSans-100.otf +0 -0
  70. package/src/assets/fonts/museo/MuseoSans-300.otf +0 -0
  71. package/src/assets/fonts/museo/MuseoSans-500.otf +0 -0
  72. package/src/assets/fonts/museo/MuseoSans-700.otf +0 -0
  73. package/src/assets/fonts/museo/MuseoSans-900.otf +0 -0
  74. package/src/assets/icons/arrow-down.svg +0 -8
  75. package/src/assets/icons/arrow-left.svg +0 -8
  76. package/src/assets/icons/chevron-down-full.svg +0 -7
  77. package/src/assets/icons/chevron-down.svg +0 -7
  78. package/src/assets/icons/chevron-up-full.svg +0 -7
  79. package/src/assets/icons/chevron-up.svg +0 -7
  80. package/src/assets/icons/close.svg +0 -8
  81. package/src/assets/icons/compass.svg +0 -8
  82. package/src/assets/icons/external-link.svg +0 -9
  83. package/src/assets/icons/facebook.svg +0 -7
  84. package/src/assets/icons/fast-backward.svg +0 -8
  85. package/src/assets/icons/fast-forward.svg +0 -8
  86. package/src/assets/icons/file-text.svg +0 -11
  87. package/src/assets/icons/home.svg +0 -8
  88. package/src/assets/icons/logo-big.png +0 -0
  89. package/src/assets/icons/logo.png +0 -0
  90. package/src/assets/icons/maximize.svg +0 -7
  91. package/src/assets/icons/mini-player.svg +0 -8
  92. package/src/assets/icons/minimize.svg +0 -7
  93. package/src/assets/icons/more-vertical.svg +0 -9
  94. package/src/assets/icons/mute.svg +0 -9
  95. package/src/assets/icons/pause.svg +0 -8
  96. package/src/assets/icons/play.svg +0 -8
  97. package/src/assets/icons/search.svg +0 -8
  98. package/src/assets/icons/settings.svg +0 -8
  99. package/src/assets/icons/share.svg +0 -11
  100. package/src/assets/icons/skip-backward.svg +0 -8
  101. package/src/assets/icons/skip-forward.svg +0 -8
  102. package/src/assets/icons/speed-1-5.svg +0 -7
  103. package/src/assets/icons/speed-1.svg +0 -7
  104. package/src/assets/icons/speed-2.svg +0 -7
  105. package/src/assets/icons/subtitles.svg +0 -7
  106. package/src/assets/icons/twitter.svg +0 -7
  107. package/src/assets/icons/university.svg +0 -9
  108. package/src/assets/icons/user.svg +0 -8
  109. package/src/assets/icons/volume-1.svg +0 -15
  110. package/src/assets/icons/volume-2.svg +0 -15
  111. package/src/assets/icons/volume-3.svg +0 -15
  112. package/src/assets/sass/abstracts/_mixins.scss +0 -145
  113. package/src/assets/sass/abstracts/_placeholders.scss +0 -112
  114. package/src/assets/sass/abstracts/_variables.scss +0 -68
  115. package/src/assets/sass/abstracts/all.scss +0 -4
  116. package/src/assets/sass/app.scss +0 -99
  117. package/src/assets/sass/components/_all.scss +0 -6
  118. package/src/assets/sass/components/_buttons.scss +0 -1
  119. package/src/assets/sass/components/_images.scss +0 -4
  120. package/src/assets/sass/components/_loader.scss +0 -187
  121. package/src/assets/sass/components/_modal.scss +0 -365
  122. package/src/assets/sass/components/_range.scss +0 -33
  123. package/src/assets/sass/core/_all.scss +0 -13
  124. package/src/assets/sass/core/_fonts.scss +0 -55
  125. package/src/assets/sass/core/_player.scss +0 -71
  126. package/src/assets/sass/core/_typography.scss +0 -13
  127. package/src/assets/sass/layout/_all.scss +0 -3
  128. package/src/assets/sass/layout/_grid.scss +0 -0
  129. package/src/assets/sass/sections/_additional-info.scss +0 -90
  130. package/src/assets/sass/sections/_all.scss +0 -6
  131. package/src/assets/sass/sections/_control.scss +0 -122
  132. package/src/assets/sass/sections/_poster.scss +0 -319
  133. package/src/assets/sass/sections/_settings.scss +0 -504
  134. package/src/assets/sass/sections/_share.scss +0 -250
  135. package/src/assets/sass/sections/_subtitles.scss +0 -85
  136. package/src/assets/sass/sections/controllers/_all.scss +0 -4
  137. package/src/assets/sass/sections/controllers/_botom.scss +0 -522
  138. package/src/assets/sass/sections/controllers/_mini-player.scss +0 -169
  139. package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +0 -260
  140. package/src/assets/sass/sections/controllers/_top.scss +0 -169
  141. package/src/components/LTPlayerDevMethode.ts +0 -192
  142. package/src/components/LTPlayerEventsManager.ts +0 -31
  143. package/src/components/LTPlayerHls.ts +0 -38
  144. package/src/components/LTPlayerManager.ts +0 -266
  145. package/src/components/LTPlayerSettingsManager.ts +0 -117
  146. package/src/components/LTPlayerSetup.ts +0 -286
  147. package/src/components/LTPlayerStatusFeedback.ts +0 -76
  148. package/src/components/LTPlayerStorage.ts +0 -58
  149. package/src/components/LTPlayerType.ts +0 -371
  150. package/src/components/LTPlayerUpdate.ts +0 -61
  151. package/src/components/addInfo/LTPLayerAddInfoResizeManager.ts +0 -15
  152. package/src/components/addInfo/LTPlayerAddInfoDesktop.ts +0 -127
  153. package/src/components/addInfo/LTPlayerAddInfoManager.ts +0 -230
  154. package/src/components/addInfo/LTPlayerAddInfoMobile.ts +0 -113
  155. package/src/components/captions/LTPlayerCaptions.ts +0 -80
  156. package/src/components/config/LTPlayerConfig.ts +0 -280
  157. package/src/components/config/LTPlayerConfigProcessor.ts +0 -604
  158. package/src/components/controls/LTPlayerChapters.ts +0 -285
  159. package/src/components/controls/LTPlayerControls.ts +0 -57
  160. package/src/components/controls/LTPlayerControlsEvents.ts +0 -946
  161. package/src/components/controls/LTPlayerMini.ts +0 -285
  162. package/src/components/controls/LTPlayerSettingsControlsManager.ts +0 -60
  163. package/src/components/controls/settings/LTPlayerCommonSettingsControllers.ts +0 -71
  164. package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +0 -135
  165. package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +0 -211
  166. package/src/components/events/LTPlayer.ts +0 -194
  167. package/src/components/events/LTPlayerCommon.ts +0 -252
  168. package/src/components/events/LTPlayerDesktop.ts +0 -222
  169. package/src/components/events/LTPlayerMobile.ts +0 -243
  170. package/src/components/poster/LTPlayerPoster.ts +0 -78
  171. package/src/components/poster/LTPlayerPosterEvents.ts +0 -172
  172. package/src/components/poster/LTPlayerPosterManager.ts +0 -46
  173. package/src/components/poster/LTPlayerPosterPreload.ts +0 -51
  174. package/src/components/poster/LTPlayerPosterPreloadEvents.ts +0 -152
  175. package/src/components/share/LTPlayerShareDesktop.ts +0 -131
  176. package/src/components/share/LTPlayerShareEvents.ts +0 -64
  177. package/src/components/share/LTPlayerShareManager.ts +0 -58
  178. package/src/components/share/LTPlayerShareMobile.ts +0 -154
  179. package/src/components/video/LTPlayerVideo.ts +0 -49
  180. package/src/global/controllers/LTPlayerController.ts +0 -58
  181. package/src/global/interfaces/EventsInterfaces.ts +0 -11
  182. package/src/global/interfaces/SettingsControlsInterfaces.ts +0 -3
  183. package/src/global/interfaces/TypeInterface.ts +0 -9
  184. package/src/global/types/ModuleTypes.d.ts +0 -35
  185. package/src/global/types/ModuleViews.d.ts +0 -13
  186. package/src/global/types/ModuleWindow.d.ts +0 -12
  187. package/src/global/types/Modules.d.ts +0 -44
  188. package/src/index.ts +0 -10
  189. package/src/json-schema/player-config.json +0 -16
  190. package/src/services/Helper.ts +0 -147
  191. package/src/services/IconsService.ts +0 -124
  192. package/src/services/LTPlayerRotateDeviceService.ts +0 -15
  193. package/src/services/LoaderService.ts +0 -21
  194. package/src/services/ResizeService.ts +0 -352
  195. package/src/services/TemplateService.ts +0 -136
  196. package/src/services/ValidatorService.ts +0 -31
  197. package/src/views/additionalInfo.handlebars +0 -103
  198. package/src/views/background.handlebars +0 -5
  199. package/src/views/controls.handlebars +0 -390
  200. package/src/views/onloadPoster.handlebars +0 -1
  201. package/src/views/poster.handlebars +0 -69
  202. package/src/views/settings.handlebars +0 -31
  203. package/src/views/settings.mobile.handlebars +0 -22
  204. package/src/views/share.handlebars +0 -101
  205. package/src/views/template.handlebars +0 -15
@@ -1,124 +0,0 @@
1
- export class IconsService {
2
-
3
- path
4
-
5
- posterMapIconsName = [
6
- 'play',
7
- 'logo',
8
- 'share'
9
- ];
10
-
11
- controlsMapIconsName = [
12
- 'play',
13
- 'skip-backward',
14
- 'skip-forward',
15
- 'volume-3',
16
- 'volume-2',
17
- 'volume-1',
18
- 'mute',
19
- 'settings',
20
- 'pause',
21
- 'minimize',
22
- 'maximize',
23
- 'mini-player',
24
- 'share',
25
- 'external-link',
26
- 'fast-backward',
27
- 'fast-forward'
28
- ];
29
-
30
- additionalInfoIconsName = [
31
- 'file-text',
32
- 'user',
33
- 'university',
34
- ]
35
-
36
- playPause = [
37
- 'play',
38
- 'pause'
39
- ]
40
-
41
- constructor() {
42
- this.path = require.context('../assets/icons', false);
43
- }
44
-
45
- getLogo(): any {
46
-
47
- let response = null
48
-
49
- this.path.keys().forEach(item => {
50
- let name = item.replace(/(\.(?:jpg|png|svg))$/i, "").replace('./', '');
51
-
52
- if (name === 'logo-big') {
53
- response = this.path(item);
54
- }
55
- })
56
-
57
- return response;
58
- }
59
-
60
- getIconsByComponent(type: string) {
61
-
62
- let response = {};
63
-
64
- switch (type) {
65
- case 'poster':
66
- this.path.keys().forEach(item => {
67
- this.posterMapIconsName.forEach(mapElement => {
68
- let name = item.replace(/(\.(?:jpg|png|svg))$/i, "").replace('./', '');
69
- if (name === mapElement) {
70
- Object.assign(response, {[name] : this.path(item)})
71
- }
72
- })
73
- })
74
- break
75
- case 'controls':
76
- this.path.keys().forEach(item => {
77
- this.controlsMapIconsName.forEach(mapElement => {
78
- let name = item.replace(/(\.(?:jpg|png|svg))$/i, "").replace('./', '');
79
- if (name === mapElement) {
80
- Object.assign(response, {[name] : this.path(item)})
81
- }
82
- })
83
- })
84
- break
85
- case 'additionalInfo':
86
- this.path.keys().forEach(item => {
87
- this.additionalInfoIconsName.forEach(mapElement => {
88
- let name = item.replace(/(\.(?:jpg|png|svg))$/i, "").replace('./', '');
89
- if (name === mapElement) {
90
- Object.assign(response, {[name] : this.path(item)})
91
- }
92
- })
93
- })
94
- break
95
- case 'playPause':
96
- this.path.keys().forEach(item => {
97
- this.playPause.forEach(mapElement => {
98
- let name = item.replace(/(\.(?:jpg|png|svg))$/i, "").replace('./', '');
99
- if (name === mapElement) {
100
- Object.assign(response, {[name] : this.path(item)})
101
- }
102
- })
103
- })
104
- }
105
-
106
-
107
- return response;
108
- }
109
-
110
- getControlsIcons() {
111
- let response = {};
112
- this.path.keys().forEach(item => {
113
- this.posterMapIconsName.forEach(mapElement => {
114
- let name = item.replace(/(\.(?:jpg|png|svg))$/i, "").replace('./', '');
115
- if (name === mapElement) {
116
- Object.assign(response, {[name] : this.path(item)})
117
- }
118
- })
119
- })
120
-
121
- return response;
122
- }
123
-
124
- }
@@ -1,15 +0,0 @@
1
- export class LTPlayerRotateDeviceService {
2
- constructor() {
3
- }
4
-
5
- getDeviceOrientation() {
6
- if (window.matchMedia("(orientation: portrait)").matches) {
7
- return 'portrait';
8
- }
9
-
10
- if (window.matchMedia("(orientation: landscape)").matches) {
11
- return 'landscape';
12
- }
13
- return 'portrait';
14
- }
15
- }
@@ -1,21 +0,0 @@
1
- export class LoaderService {
2
- static getSpinner() {
3
- return `<div class="lt-player-spinner__loader">
4
- <svg class="lt-player-spinner__loader__circle-svg" viewBox="0 0 50 50">
5
- <circle class="path" cx="25" cy="25" r="20" fill="none" stroke-width="5"></circle>
6
- </svg>
7
- </div>`;
8
- }
9
-
10
- static removeSpinner(playerContainer: HTMLElement) {
11
- if (!playerContainer) {
12
- return
13
- }
14
-
15
- const spinner = playerContainer.querySelector('.lt-player-spinner__loader');
16
-
17
- if (spinner) {
18
- spinner.remove();
19
- }
20
- }
21
- }
@@ -1,352 +0,0 @@
1
- import {LTPlayer} from "../components/LTPlayerType";
2
- import {defaultType} from "../global/types/ModuleTypes";
3
- import Plyr from "plyr";
4
- import {LTPLayerAddInfoResizeManager} from "../components/addInfo/LTPLayerAddInfoResizeManager";
5
- import {LTPLayerAddInfo} from "../components/addInfo/LTPlayerAddInfoManager";
6
- import {LTPlayerRotateDeviceService} from "./LTPlayerRotateDeviceService";
7
- import {LTPlayerAddInfoDesktop} from "../components/addInfo/LTPlayerAddInfoDesktop";
8
- import {Helper} from "./Helper";
9
-
10
- /**
11
- * Window service (set width and height)
12
- */
13
- export class ResizeService {
14
- orientation: LTPlayerRotateDeviceService
15
- playerInstance: LTPlayer.LandscapeType | LTPlayer.PortraitType
16
- player: Plyr
17
- playerContainer: HTMLElement
18
- playerParentContainer: HTMLElement
19
- device: string
20
- playerType: string
21
- addInfo: LTPLayerAddInfoResizeManager
22
-
23
- addInfoOutSide: false
24
- addInfoInSide: true
25
-
26
- playerParam: defaultType = {
27
- width : null,
28
- height : null
29
- }
30
-
31
-
32
- defaultPortrate = {
33
- max : {
34
- width: 500,
35
- height: 776
36
- },
37
- min : {
38
- width: 200,
39
- height: 400
40
- },
41
- size : {
42
- 438 : "lg",
43
- 375 : "md",
44
- 350 : "sm",
45
- 200 : "xs"
46
- }
47
- }
48
-
49
- defaultLandscape = {
50
- max : {
51
- width: 1067,
52
- height: 600
53
- },
54
- min : {
55
- width: 300,
56
- height: 150
57
- },
58
- size : {
59
- 1067 : "xxl",
60
- 913 : "xl",
61
- 820 : "lg",
62
- 760 : "md",
63
- 640 : "sm",
64
- 480 : "xs",
65
- 266 : "xxs"
66
- }
67
- }
68
-
69
- constructor() {
70
- this.orientation = new LTPlayerRotateDeviceService();
71
- }
72
-
73
- init(playerInstance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
74
- this.playerInstance = playerInstance;
75
- this.playerContainer = playerInstance.playerConfig.getPlayerElementContainer();
76
- this.player = playerInstance.plyr;
77
- this.device = playerInstance.playerConfig.getDevice();
78
- this.playerParentContainer = this.playerContainer.parentElement;
79
- this.addInfo = new LTPLayerAddInfoResizeManager(playerInstance);
80
- this.setPlayerDimensions();
81
- }
82
-
83
- protected setPlayerDimensions() {
84
-
85
- if (!this.playerInstance.playerConfig.getPlayerType()) {
86
- return;
87
- }
88
-
89
-
90
- switch (this.playerInstance.playerConfig.getPlayerType()) {
91
- case "1":
92
- this.setPortrate();
93
- this.playerType = 'portrait';
94
- break
95
- case "2":
96
- this.setLandScape();
97
- this.playerType = 'landscape';
98
- break
99
- case 1:
100
- this.setPortrate();
101
- this.playerType = 'portrait';
102
- break
103
- case 2:
104
- this.setLandScape();
105
- this.playerType = 'landscape';
106
- break
107
- case 'portrait':
108
- this.playerType = 'landscape';
109
- this.setPortrate();
110
- break
111
- case 'landscape':
112
- this.playerType = 'landscape';
113
- this.setLandScape();
114
- break
115
- }
116
-
117
- }
118
-
119
- protected setPortrate() {
120
- // this.setEvent(this.defaultPortrate);
121
- }
122
-
123
-
124
- protected setLandScape() {
125
- // this.setEvent(this.defaultLandscape);
126
- }
127
-
128
- protected setEvent(defaultData: defaultType) {
129
- new ResizeObserver(response => {
130
- this.setDimensions(response[0].target.clientWidth, response[0].target.clientHeight, defaultData)
131
- }).observe(this.playerParentContainer);
132
- }
133
-
134
- public setEventAddInfo(buttonsTemplate: string, deskEvent: LTPlayerAddInfoDesktop, controller: LTPLayerAddInfo.Controller) {
135
- new ResizeObserver(response => {
136
- this.setAddInfoByDimensions(response[0].target.clientWidth, buttonsTemplate, deskEvent, controller)
137
- }).observe(this.playerInstance.plyr.elements.container);
138
- }
139
-
140
- protected setAddInfoByDimensions(containerWidth: number, buttonsTemplate:string, deskEvent: LTPlayerAddInfoDesktop, controller: LTPLayerAddInfo.Controller) {
141
-
142
-
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
- }
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
- }
174
- let addInfoContainer = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
175
- if (addInfoContainer) {
176
- addInfoContainer.remove();
177
- }
178
-
179
- this.playerInstance.plyr.elements.container.insertAdjacentHTML("afterend", buttonsTemplate);
180
- let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
181
- inserted.classList.add('lt-player__additional-info__is_set_out-side');
182
-
183
- setButtonsByVideoType();
184
- }
185
-
186
- const createAddInfoButtonsInSide = () => {
187
-
188
- let addInfoContainer = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
189
- if (addInfoContainer) {
190
- addInfoContainer.remove();
191
- }
192
-
193
- if (this.playerInstance.plyr.elements.controls !== undefined) {
194
- let controlsInfoBody = this.playerInstance.plyr.elements.controls.querySelector('.content__body');
195
-
196
- controlsInfoBody.insertAdjacentHTML("afterend", buttonsTemplate);
197
- let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
198
- inserted.classList.add('lt-player__additional-info__is_set_in-side');
199
-
200
- deskEvent.set(controller, 'in');
201
- } else {
202
- this.playerInstance.plyr.on('ready', () => {
203
-
204
- let controlsInfoBody = this.playerInstance.plyr.elements.controls.querySelector('.content__body');
205
-
206
- controlsInfoBody.insertAdjacentHTML("afterend", buttonsTemplate);
207
- let inserted = this.playerInstance.playerConfig.getPlayerElementContainer().querySelector('.lt-player__additional-info');
208
- inserted.classList.add('lt-player__additional-info__is_set_in-side');
209
-
210
- deskEvent.set(controller, 'in');
211
- })
212
- }
213
- }
214
-
215
- if (this.playerInstance.playerConfig.getEmbed()) {
216
- createAddInfoButtonsInSide();
217
- return;
218
- }
219
-
220
- createAddInfoButtonsInSide();
221
-
222
-
223
- // if (containerWidth >= 380) {
224
- //
225
- // if (this.addInfoInSide && (containerWidth + 70 <= 380)) {
226
- // return;
227
- // }
228
- //
229
- // if (this.addInfoOutSide) {
230
- // return;
231
- // }
232
- //
233
- // this.addInfoOutSide = true;
234
- // this.addInfoInSide = false;
235
- //
236
- // createAddInfoButtonsOutSide();
237
- // } else {
238
- //
239
- // if (this.addInfoOutSide && (containerWidth + 70 >= 380)) {
240
- // return;
241
- // }
242
- //
243
- // if (this.addInfoInSide) {
244
- // return;
245
- // }
246
- //
247
- // this.addInfoInSide = true;
248
- // this.addInfoOutSide = false;
249
- // createAddInfoButtonsInSide();
250
- // }
251
- }
252
-
253
- protected setDimensions(containerWidth: number, containerHeight: number, defaultData: defaultType) {
254
-
255
- const setClass = () => {
256
- if (this.playerInstance.plyr.elements.container !== undefined) {
257
-
258
- let itemClass:string | boolean = false;
259
- let dimension: defaultType = this.defaultPortrate;
260
-
261
- if (this.playerType === 'landscape') {
262
- dimension = this.defaultLandscape;
263
- }
264
-
265
- Object.keys(dimension.size).forEach( item => {
266
- if (this.playerContainer.classList.contains(`lt-player--${this.playerType}__${(dimension.size as defaultType)[item]}`)){
267
- this.playerContainer.classList.remove(`lt-player--${this.playerType}__${(dimension.size as defaultType)[item]}`)
268
- }
269
- if (this.playerContainer.clientWidth >= parseInt(item)) {
270
- itemClass = `lt-player--${this.playerType}__${(dimension.size as defaultType)[item]}`;
271
- }
272
- })
273
-
274
-
275
- if (itemClass) {
276
- this.playerContainer.classList.add(itemClass);
277
- }
278
-
279
- }
280
- }
281
-
282
- const setWidth = () => {
283
- if (this.playerInstance.plyr.elements.container !== undefined) {
284
- if (this.device === 'mobile' && this.orientation.getDeviceOrientation() === 'landscape' && this.playerType === 'portrate') {
285
- this.playerContainer.style.width = '100%';
286
- return;
287
- }
288
- if (containerWidth >= defaultData.max.width) {
289
- this.playerContainer.style.width = `${defaultData.max.width}px`;
290
- this.playerParam.width = defaultData.max.width;
291
- return;
292
- }
293
- if (containerWidth < defaultData.max.width && containerWidth >= defaultData.min.width) {
294
- this.playerContainer.style.width = `${containerWidth}px`;
295
- this.playerParam.width = containerWidth;
296
- return;
297
- }
298
- if (containerWidth < defaultData.min.width) {
299
- this.playerContainer.style.width = `${defaultData.min.width}px`;
300
- this.playerParam.width = defaultData.min.width;
301
- return;
302
- }
303
- }
304
- }
305
-
306
- const setHeight = () => {
307
- if (this.playerInstance.plyr.elements.container !== undefined) {
308
- if (this.device === 'mobile' && this.orientation.getDeviceOrientation() === 'landscape' && this.playerType === 'portrate') {
309
- this.playerContainer.style.height = '90vh';
310
- return;
311
- }
312
- if (containerHeight >= defaultData.max.height) {
313
- this.playerContainer.style.height = `${defaultData.max.height}px`;
314
- this.playerParam.height = defaultData.max.height;
315
- return;
316
- }
317
- if (containerHeight >= defaultData.min.height && containerHeight < defaultData.max.height) {
318
- this.playerContainer.style.height = `${containerHeight}px`;
319
- this.playerParam.height = containerHeight;
320
- return;
321
- }
322
- if (containerHeight < defaultData.min.height) {
323
- this.playerContainer.style.height = `${defaultData.min.height}px`;
324
- this.playerParam.height = defaultData.min.height;
325
- return;
326
- }
327
- }
328
- }
329
-
330
- const version = this.playerInstance.playerConfig.getVersion();
331
- const observeConfig = this.playerInstance.playerConfig.getObserve();
332
-
333
- if (observeConfig) {
334
- if (observeConfig.hasOwnProperty('width') && observeConfig.width) {
335
- setWidth();
336
- }
337
-
338
- if (observeConfig.hasOwnProperty('height') && observeConfig.height) {
339
- setHeight();
340
- }
341
- } else {
342
-
343
- setWidth();
344
-
345
- if (version !== 1) {
346
- setHeight();
347
- }
348
- }
349
-
350
- setClass();
351
- }
352
- }
@@ -1,136 +0,0 @@
1
- import Mustache from "mustache";
2
- import template from '../views/template.handlebars';
3
- import controlsTemplate from '../views/controls.handlebars';
4
- import posterTemplate from '../views/poster.handlebars';
5
- import settingsTemplate from '../views/settings.handlebars';
6
- import settingsMobileTemplate from '../views/settings.mobile.handlebars';
7
- import additionalInfo from '../views/additionalInfo.handlebars';
8
- import share from '../views/share.handlebars';
9
- import background from '../views/background.handlebars';
10
- import miniPlayerControls from '../views/controls.handlebars';
11
- import onloadPoster from '../views/onloadPoster.handlebars';
12
- import {LTPlayerConfig} from "../components/config/LTPlayerConfig";
13
- import {IconsService} from "./IconsService";
14
- import {defaultType} from "../global/types/ModuleTypes";
15
-
16
- export class TemplateService {
17
- /**
18
- * Return player template
19
- */
20
- constructor() {
21
- }
22
-
23
- getOnloadPoster(data: defaultType) {
24
- return Mustache.render(onloadPoster, data)
25
- }
26
-
27
- /**
28
- * Get Share html string
29
- * @param data
30
- */
31
- getShare(data: Object) {
32
- return Mustache.render(share, data);
33
- }
34
-
35
- /**
36
- * Get poster html string
37
- * @param data
38
- */
39
- getPoster(data: Object) {
40
- return Mustache.render(posterTemplate, data);
41
- }
42
-
43
- getSettings(data: Object) {
44
- return Mustache.render(settingsTemplate, data);
45
- }
46
-
47
- getMobileSettings(data: Object) {
48
- return Mustache.render(settingsMobileTemplate, data);
49
- }
50
-
51
- getAdditionalInfo(data : Object) {
52
- return Mustache.render(additionalInfo, data);
53
- }
54
-
55
- getAdditionalInfoButtons(data: Object) {
56
- return Mustache.render(additionalInfo, data);
57
- }
58
-
59
- /**
60
- *
61
- * @param config
62
- * @return String
63
- */
64
- getTemplateByType(config: LTPlayerConfig) {
65
- let configData = config.getConfigData();
66
-
67
- Object.assign(configData, {[config.getVideoType()]: true, mobile: (config.getDevice() !== 'mobile')});
68
-
69
- let render = Mustache.render(template, configData);
70
-
71
- delete configData.mobile;
72
-
73
- return render;
74
- }
75
-
76
- /**
77
- *
78
- * @param config
79
- * @param iconService
80
- */
81
- getTemplateControls(config: LTPlayerConfig, iconService: IconsService) {
82
-
83
- let configData = config.getConfigData()
84
-
85
- Object.assign(configData, {icons: iconService.getIconsByComponent('controls')});
86
-
87
- Object.assign(configData, {isShare: config.isShareData()});
88
- Object.assign(configData, {player: 'true'});
89
-
90
- if (configData.device === 'mobile') {
91
- Object.assign(configData, {mobile: 'true'});
92
- } else {
93
- Object.assign(configData, {desktop: 'true'});
94
- }
95
-
96
- switch (config.getPlayerType()) {
97
- case "1":
98
- Object.assign(configData, {portrait: 'true'});
99
- break
100
- case "2":
101
- Object.assign(configData, {landscape: 'true'});
102
- break
103
- case 1:
104
- Object.assign(configData, {portrait: 'true'});
105
- break
106
- case 2:
107
- Object.assign(configData, {landscape: 'true'});
108
- break
109
- case 'portrait':
110
- Object.assign(configData, {portrait: 'true'});
111
- break
112
- case 'landscape':
113
- Object.assign(configData, {landscape: 'true'});
114
- break
115
- }
116
-
117
- Object.assign(configData, {chaptersEnabled: (!!configData['chapters']) })
118
-
119
- let render = Mustache.render(controlsTemplate,configData);
120
-
121
- delete configData.mobile;
122
- delete configData.desktop;
123
-
124
- return render;
125
- }
126
-
127
- getBackGroundTemplate(data: defaultType) {
128
- return Mustache.render(background, data);
129
- }
130
-
131
- getControlsMiniPlayer(data: defaultType) {
132
- return Mustache.render(miniPlayerControls, data);
133
- }
134
-
135
-
136
- }
@@ -1,31 +0,0 @@
1
- import { Draft, draft07Config, JSONError } from "json-schema-library";
2
- import {JSONSchema} from "json-schema-library/lib/types";
3
- import {defaultType} from "../global/types/ModuleTypes";
4
-
5
- export class ValidatorService {
6
-
7
- private static type: defaultType = {
8
- init : draft07Config
9
- };
10
- /**
11
- * Validate data with JSON Schema
12
- * @param type
13
- * @param schema
14
- * @param data
15
- * @return boolean
16
- */
17
- static validate(type: string, schema: JSONSchema, data: Object): boolean {
18
- const jsonSchema: Draft = new Draft(this.type[type], schema);
19
- const errors: JSONError[] = jsonSchema.validate(data);
20
-
21
- if (errors.length > 0) {
22
- if (process.env.DEBUG === "true") {
23
- console.table(errors);
24
- }
25
- console.error('Schema Validation Errors!');
26
- return false;
27
- }
28
-
29
- return true;
30
- }
31
- }