@latest-thinking/lt-player 1.2.0-d → 2.0.0-a

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 +162 -0
  5. package/dist/main.js +24375 -0
  6. package/package.json +31 -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 -100
  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 -70
  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 -512
  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 -943
  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,127 +0,0 @@
1
- import {LTPLayerAddInfo} from "./LTPlayerAddInfoManager";
2
- import {additionalInformation} from "../../global/types/ModuleTypes";
3
- import {LTPlayer} from "../LTPlayerType";
4
- import {LoaderService} from "../../services/LoaderService";
5
-
6
- export class LTPlayerAddInfoDesktop {
7
- set(controller: LTPLayerAddInfo.Controller, type: string) {
8
-
9
- const playerContainer = controller.plyr.elements.container;
10
- const playerControlsContainer = controller.plyr.elements.controls;
11
- let additionalInfoBodyOut: Element = playerContainer.nextElementSibling;
12
- let additionalInfoBodyIn: Element = playerControlsContainer.querySelector('.lt-player__additional-info');
13
- let instance = controller;
14
-
15
- const getInfoButtons = (selector: Element): NodeList => {
16
-
17
- if (!selector) {
18
- return null
19
- }
20
- return selector.querySelectorAll('button');
21
- }
22
-
23
- let buttons: NodeList = null;
24
-
25
- const infoButtonsOut: NodeList = getInfoButtons(additionalInfoBodyOut);
26
- const infoButtonsIn: NodeList = getInfoButtons(additionalInfoBodyIn);
27
-
28
- if (type == 'in') {
29
- buttons = infoButtonsIn;
30
- } else {
31
- buttons = infoButtonsOut;
32
- }
33
-
34
- if (buttons.length === 0) {
35
- return
36
- }
37
-
38
- const createInformationModal = (info: additionalInformation, key: string) => {
39
-
40
- let modalTemplate = null;
41
-
42
- if (typeof info === 'object') {
43
- modalTemplate = controller.templateService.getAdditionalInfo({
44
- desktop: true,
45
- modal: true,
46
- id: `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,
47
- object_data: true,
48
- [key]: info
49
- })
50
- } else {
51
- modalTemplate = controller.templateService.getAdditionalInfo({
52
- desktop: true,
53
- modal: true,
54
- id: `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,
55
- data: info
56
- })
57
- }
58
-
59
- document.querySelector('body').insertAdjacentHTML("afterend", modalTemplate);
60
- }
61
-
62
- buttons.forEach((button: HTMLElement) => {
63
-
64
- button.addEventListener('click', function (event) {
65
-
66
- event.preventDefault();
67
-
68
- let targetModal = button.dataset.ltTarget;
69
- let data = instance.additionalData;
70
-
71
- if (data[targetModal] !== undefined) {
72
- createInformationModal(data[targetModal], targetModal)
73
- }
74
-
75
- let modal = document.querySelector(`.lt-modal-${targetModal}-${instance.playerInstance.playerConfig.getPlayerId()}`);
76
-
77
- if (modal) {
78
- modal.classList.add('player-lt__show-modal');
79
- document.body.classList.add('overflow-hidden-body-important');
80
- }
81
-
82
- window.Player.players.forEach(item => {
83
- if (item.plyr.playing) {
84
- instance.playerInstance.pausedPlayer = item.plyr;
85
- item.plyr.pause();
86
- return;
87
- }
88
- })
89
- })
90
- })
91
- }
92
-
93
- windowDesktopEvents(event: MouseEvent, instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
94
- const modals = document.querySelectorAll('.player-lt__modal');
95
- if (modals.length !== 0) {
96
- modals.forEach(modal => {
97
- if (modal.classList.contains('player-lt__show-modal')) {
98
- let target = event.target as HTMLElement;
99
- if (target.classList.contains('player-lt__show-modal') || target.classList.contains('player-lt__close-button')) {
100
- modal.classList.remove('player-lt__show-modal');
101
- document.body.classList.remove('overflow-hidden-body-important');
102
- document.querySelectorAll(".player-lt__modal").forEach(el => el.remove());
103
-
104
- window.Player.players.forEach(item => {
105
- if (item.pausedPlayer !== undefined) {
106
- if (item.pausedPlayer.isEmbed) {
107
- item.pausedPlayer.embed.play().then(function () {
108
- return;
109
- }).catch(function () {
110
- // an error occurred
111
- });
112
- }
113
-
114
- if (item.pausedPlayer.isHTML5) {
115
-
116
- item.pausedPlayer.play();
117
- return;
118
- }
119
- return;
120
- }
121
- })
122
- }
123
- }
124
- })
125
- }
126
- }
127
- }
@@ -1,230 +0,0 @@
1
- import {additionalInformation, defaultType} from "../../global/types/ModuleTypes";
2
- import {TemplateService} from "../../services/TemplateService";
3
- import {IconsService} from "../../services/IconsService";
4
- import Plyr, {PlyrEvent} from "plyr";
5
- import {LTPlayer} from "../LTPlayerType";
6
- import {LTPlayerAddInfoDesktop} from "./LTPlayerAddInfoDesktop";
7
- import {LTPlayerAddInfoMobile} from "./LTPlayerAddInfoMobile";
8
-
9
- export class LTPlayerAddInfoManager {
10
- container: HTMLElement
11
- additionalData: additionalInformation = {};
12
- playerId: number
13
- templateService : TemplateService
14
- iconService: IconsService
15
- plyr : Plyr
16
- playerInstance: LTPlayer.PortraitType | LTPlayer.LandscapeType
17
- players: Array<any>;
18
- device: string
19
- addInfoType: LTPLayerAddInfo.Landscape | LTPLayerAddInfo.Portrate
20
- desktopEvents: LTPlayerAddInfoDesktop;
21
- mobileEvents: LTPlayerAddInfoMobile
22
-
23
-
24
- constructor() {
25
- this.setDesktopEvents();
26
- this.setMobileEvents();
27
- }
28
-
29
-
30
- setDesktopEvents() {
31
- this.desktopEvents = new LTPlayerAddInfoDesktop();
32
- }
33
-
34
- setMobileEvents() {
35
- this.mobileEvents = new LTPlayerAddInfoMobile();
36
- }
37
- }
38
-
39
-
40
- export namespace LTPLayerAddInfo {
41
-
42
- export class Controller extends LTPlayerAddInfoManager {
43
- activePlayer: Plyr;
44
-
45
- setContainer(container: HTMLElement) {
46
- this.container = container;
47
- this.setDataContent();
48
- }
49
-
50
- private setDataContent() {
51
- const items: HTMLCollection = this.container.children;
52
-
53
- if (items.length === 0) {
54
- return;
55
- }
56
-
57
- Array.from(items).forEach((item: HTMLElement) => {
58
- if (item.hasAttribute('data-lt-player-additional-info-target')) {
59
- Object.assign(this.additionalData, {[item.dataset.ltPlayerAdditionalInfoTarget] : item.innerHTML})
60
- }
61
- })
62
- }
63
-
64
- setConfig(config: defaultType) {
65
- Object.keys(config).forEach(item => {
66
- if (Object.keys(config[item]).length > 0) {
67
- Object.assign(this.additionalData, {[item] : config[item]})
68
- }
69
- })
70
- }
71
-
72
- init(player: LTPlayer.PortraitType | LTPlayer.LandscapeType, playerId: number, iconService: IconsService, templateService: TemplateService) {
73
-
74
- if (Object.keys(this.additionalData).length === 0) {
75
- return;
76
- }
77
- this.playerInstance = player;
78
- this.plyr = player.plyr;
79
- this.playerId = playerId;
80
- this.iconService = iconService;
81
- this.templateService = templateService;
82
- this.device = player.playerConfig.getDevice();
83
- this.setPlayerType();
84
- }
85
-
86
-
87
- setPlayerType() {
88
- switch (this.playerInstance.playerConfig.getPlayerType()) {
89
- case 1:
90
- this.addInfoType = new LTPLayerAddInfo.Portrate().setAddInfo(this);
91
- break
92
- case 2:
93
- this.addInfoType = new LTPLayerAddInfo.Landscape;
94
- break
95
- case '1':
96
- this.addInfoType = new LTPLayerAddInfo.Portrate().setAddInfo(this);
97
- break
98
- case '2':
99
- this.addInfoType = new LTPLayerAddInfo.Landscape;
100
- break
101
- case 'portrait':
102
- this.addInfoType = new LTPLayerAddInfo.Portrate().setAddInfo(this);
103
- break
104
- case 'landscape':
105
- this.addInfoType = new LTPLayerAddInfo.Landscape;
106
- break
107
- }
108
- }
109
-
110
- setCurrentPlayerPlay(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, event: PlyrEvent) {
111
- this.activePlayer = event.detail.plyr;
112
- }
113
- remove(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
114
-
115
- let modals = document.querySelectorAll('.player-lt__modal');
116
-
117
- if (modals.length !== 0) {
118
- modals.forEach(item => {
119
- item.remove();
120
- })
121
- }
122
-
123
- let container = instance.playerConfig.getPlayerElementContainer();
124
-
125
- let addContainer = container.querySelector('.lt-player__additional-info');
126
-
127
- addContainer.remove();
128
- }
129
-
130
- }
131
-
132
- export class Portrate extends Controller {
133
-
134
- controller: LTPLayerAddInfo.Controller
135
-
136
- setAddInfo(controller: LTPLayerAddInfo.Controller) {
137
-
138
- this.controller = controller;
139
-
140
- switch (this.controller.device) {
141
- case 'mobile':
142
- this.controller.plyr.on('ready', () => {
143
- this.mobile();
144
- })
145
- break
146
- case 'desktop':
147
- this.desktop();
148
- break
149
- }
150
-
151
- return this;
152
- }
153
-
154
-
155
- mobile() {
156
-
157
- const icons: defaultType = this.controller.iconService.getIconsByComponent('additionalInfo');
158
- const playerControlsContainer = this.controller.plyr.elements.controls;
159
- const playerVideoContent = playerControlsContainer.querySelector('.content__body');
160
-
161
- let templateData: { target: string; icon: any; }[] = [];
162
-
163
- Object.keys(this.controller.additionalData).forEach(item => {
164
- switch (item) {
165
- case 'abstract':
166
- templateData.push({target: item, icon: icons['file-text']});
167
- break
168
- case 'bio':
169
- templateData.push({target: item, icon: icons['user']});
170
- break
171
- case 'institution':
172
- templateData.push({target: item, icon: icons['university']});
173
- break
174
- default:
175
- templateData.push({target: item, icon: null});
176
- }
177
- })
178
-
179
- let buttonsTemplate: string = '';
180
- buttonsTemplate = this.controller.templateService.getAdditionalInfoButtons({mobile: true, exist: 'true', buttons:templateData})
181
- playerVideoContent.insertAdjacentHTML("afterend", buttonsTemplate);
182
-
183
- this.mobileEvents.set(this.controller);
184
- }
185
-
186
-
187
- desktop() {
188
- const icons: defaultType = this.controller.iconService.getIconsByComponent('additionalInfo');
189
-
190
- let templateData: { target: string; icon: any; }[] = [];
191
-
192
- Object.keys(this.controller.additionalData).forEach(item => {
193
- switch (item) {
194
- case 'abstract':
195
- templateData.push({target: item, icon: icons['file-text']});
196
- break
197
- case 'bio':
198
- templateData.push({target: item, icon: icons['user']});
199
- break
200
- case 'institution':
201
- templateData.push({target: item, icon: icons['university']});
202
- break
203
- default:
204
- templateData.push({target: item, icon: null});
205
- }
206
- })
207
-
208
- let buttonsTemplate: string = '';
209
-
210
- buttonsTemplate = this.controller.templateService.getAdditionalInfoButtons({
211
- desktop: true,
212
- exist: 'true',
213
- buttons: templateData
214
- });
215
- this.controller.playerInstance.windowService.setEventAddInfo(buttonsTemplate, this.desktopEvents, this.controller);
216
- }
217
- }
218
-
219
- export class Landscape extends Controller {
220
- controller: LTPLayerAddInfo.Controller
221
- setAddInfo() {
222
-
223
- }
224
- mobileTouchEvent() {
225
-
226
- }
227
-
228
-
229
- }
230
- }
@@ -1,113 +0,0 @@
1
- import {LTPLayerAddInfo} from "./LTPlayerAddInfoManager";
2
- import {additionalInformation} from "../../global/types/ModuleTypes";
3
- import {LTPlayer} from "../LTPlayerType";
4
-
5
- export class LTPlayerAddInfoMobile {
6
- set(controller: LTPLayerAddInfo.Controller) {
7
-
8
- const playerContainer = controller.plyr.elements.container;
9
- let additionalInfoBody: Element = playerContainer.querySelector('.lt-player__additional-info-mobile');
10
- let instance = controller;
11
- let __this = this;
12
-
13
- let buttons: NodeList = additionalInfoBody.querySelectorAll('button');
14
-
15
- if (buttons.length === 0) {
16
- return
17
- }
18
-
19
- const createInformationModal = (info: additionalInformation, key: string) => {
20
-
21
- let modalTemplate = null;
22
-
23
- if (typeof info === 'object') {
24
- modalTemplate = controller.templateService.getAdditionalInfo({
25
- desktop: true,
26
- modal: true,
27
- id: `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,
28
- object_data: true,
29
- [key]: info
30
- })
31
- } else {
32
- modalTemplate = controller.templateService.getAdditionalInfo({
33
- desktop: true,
34
- modal: true,
35
- id: `${key}-${controller.playerInstance.playerConfig.getPlayerId()}`,
36
- data: info
37
- })
38
- }
39
-
40
- document.querySelector('body').insertAdjacentHTML("afterend", modalTemplate);
41
- }
42
-
43
- buttons.forEach((button: HTMLElement) => {
44
- let mobileEvent: HammerManager = controller.playerInstance.eventInstance.mobileEvents.setMobileEvent(button);
45
- if (mobileEvent) {
46
- mobileEvent.on('singletap', function LTPlayerMobileAdditionalInfoButtons(event) {
47
- event.preventDefault();
48
-
49
- let targetModal = button.dataset.ltTarget;
50
- let data = instance.additionalData;
51
-
52
- if (data[targetModal] !== undefined) {
53
- createInformationModal(data[targetModal], targetModal)
54
- }
55
-
56
- let modal = document.querySelector(`.lt-modal-${targetModal}-${instance.playerInstance.playerConfig.getPlayerId()}`);
57
-
58
- if (modal) {
59
- modal.classList.add('player-lt__show-modal');
60
- document.body.classList.add('overflow-hidden-body-important');
61
- }
62
-
63
- window.Player.players.forEach(item => {
64
- if (item.plyr.playing) {
65
- instance.playerInstance.pausedPlayer = item.plyr;
66
- item.plyr.pause();
67
- return;
68
- }
69
- })
70
-
71
- __this.closeModal(controller);
72
- })
73
- }
74
- })
75
- }
76
-
77
- closeModal(controller: LTPLayerAddInfo.Controller) {
78
- const modals = document.querySelectorAll('.player-lt__modal');
79
-
80
- if (modals.length !== 0) {
81
- modals.forEach(modal => {
82
- const mobileEvent: HammerManager = controller.playerInstance.eventInstance.mobileEvents.setMobileEvent(modal);
83
- mobileEvent.on('singletap', function(event) {
84
- const target = event.target;
85
- if (modal.classList.contains('player-lt__show-modal')) {
86
- if (target.classList.contains('player-lt__show-modal') || target.classList.contains('player-lt__close-button')) {
87
- modal.classList.remove('player-lt__show-modal');
88
- document.body.classList.remove('overflow-hidden-body-important');
89
- document.querySelectorAll(".player-lt__modal").forEach(el => el.remove());
90
- window.Player.players.forEach(item => {
91
- if (item.pausedPlayer !== undefined) {
92
- if (item.pausedPlayer.isEmbed) {
93
- item.pausedPlayer.embed.play().then(function () {
94
- return;
95
- }).catch(function () {
96
- // an error occurred
97
- });
98
- }
99
-
100
- if (item.pausedPlayer.isHTML5) {
101
- item.pausedPlayer.play();
102
- return;
103
- }
104
- return;
105
- }
106
- })
107
- }
108
- }
109
- });
110
- })
111
- }
112
- }
113
- }
@@ -1,80 +0,0 @@
1
- import {LTPlayerController} from "../../global/controllers/LTPlayerController";
2
-
3
- export class LTPlayerCaptionsManager {
4
- player: LTPlayerController
5
-
6
- constructor(player: LTPlayerController) {
7
- this.player = player;
8
- }
9
-
10
- enableSubtitlesCheckbox() {
11
- const playerContainer = this.player.playerConfig.getPlayerElementContainer()
12
- const subtitleCheckboxInput = playerContainer.querySelector('.subtitles-body__input-switch')
13
- subtitleCheckboxInput.removeAttribute('disabled')
14
- }
15
-
16
- disableSubtitlesCheckbox() {
17
- const playerContainer = this.player.playerConfig.getPlayerElementContainer()
18
- const subtitleCheckboxInput = playerContainer.querySelector('.subtitles-body__input-switch')
19
- subtitleCheckboxInput.setAttribute('disabled', '')
20
- }
21
-
22
- setCaptions(src: string|null): void {
23
- const playerContainer = this.player.playerConfig.getPlayerElementContainer()
24
- const videoElement = playerContainer.querySelector("video")
25
- const trackElement = videoElement.querySelector("track")
26
-
27
- this.player.plyr.currentTrack = -1;
28
- this.clearSubtitles()
29
-
30
- if (trackElement) {
31
- trackElement.remove()
32
- }
33
-
34
- if (src) {
35
- const newTrack = document.createElement('track');
36
- Object.assign(newTrack, {
37
- kind: 'captions',
38
- label: 'English captions',
39
- srclang: 'en',
40
- default: 'default',
41
- src: src
42
- });
43
-
44
- newTrack.addEventListener(`load`, evt => {
45
- this.player.plyr.currentTrack = 0;
46
- });
47
- this.enableSubtitlesCheckbox()
48
- this.player.plyr.toggleCaptions(true);
49
- videoElement.appendChild(newTrack);
50
- } else {
51
- this.disableSubtitlesCheckbox()
52
- }
53
- }
54
-
55
- enableCaptions() {
56
- this.player.playerConfig.setCaptionsEnabled(true)
57
- this.player.plyr.currentTrack = 0;
58
- this.player.plyr.toggleCaptions(true)
59
- this.player.statusFeedbackService.setCaptionsEnabled()
60
- }
61
-
62
- disableCaptions() {
63
- this.player.playerConfig.setCaptionsEnabled(false)
64
- this.player.plyr.currentTrack = -1;
65
- this.player.plyr.toggleCaptions(false)
66
- this.clearSubtitles()
67
- this.player.statusFeedbackService.clearCaptionsEnabled()
68
- }
69
-
70
- clearSubtitles(): void {
71
- const controls = this.player.plyr.elements.controls
72
- const customSubtitlesElement = controls.querySelector('.lt-player-custom-captions');
73
- const spanElement = customSubtitlesElement.querySelector('span');
74
-
75
- if (!spanElement) {
76
- return;
77
- }
78
- spanElement.innerHTML = ''; // Clear previous captions
79
- }
80
- }