@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,172 +0,0 @@
1
- import {LTPlayer} from "../LTPlayerType";
2
- import {LoaderService} from "../../services/LoaderService";
3
-
4
- export namespace LTPlayerPosterEvents {
5
- export class Common {
6
-
7
- poster = {
8
- getButtons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType): undefined | NodeListOf<Element> {
9
- const playerContainer = instance.plyr.elements.container;
10
- const playButtons = playerContainer.querySelectorAll('.poster-button-play, .poster-button-watch-now');
11
-
12
- if (playButtons.length === 0) {
13
- if (process.env.DEBUG === "true") {
14
- console.error('No button selector found');
15
- }
16
- return undefined;
17
- }
18
-
19
- return playButtons;
20
- },
21
-
22
- reset(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
23
- const playerContainer = instance.plyr.elements.container;
24
- const disablePoster = () => {
25
- playerContainer.querySelector(`.lt-player__poster`).classList.add('d-none');
26
- playerContainer.querySelector('.plyr__controls').classList.remove('d-none');
27
- }
28
-
29
- const play = () => {
30
- if (instance.plyr.isEmbed) {
31
- disablePoster();
32
- playerContainer.querySelector(`.lt-player__poster`).insertAdjacentHTML('afterend', LoaderService.getSpinner())
33
- instance.plyr.embed.play().then(() => {
34
- instance.plyr.volume = 1;
35
- LoaderService.removeSpinner(playerContainer)
36
- },
37
- () => {
38
- instance.plyr.volume = 1;
39
- LoaderService.removeSpinner(playerContainer)
40
- instance.plyr.play();
41
- });
42
- } else {
43
- disablePoster();
44
- instance.plyr.volume = 1;
45
- instance.plyr.play();
46
- }
47
-
48
- if (instance.playerConfig.getPreload()) {
49
- LoaderService.removeSpinner(playerContainer);
50
-
51
- if (instance.playerConfig.getDevice() === 'mobile') {
52
- if (instance.plyr.isEmbed) {
53
- instance.plyr.embed.getTextTracks().then( (response: string | any[]) => {
54
- if (response.length !== 0) {
55
- instance.plyr.toggleCaptions(true);
56
- }
57
- })
58
- } else {
59
- instance.plyr.toggleCaptions(true);
60
- }
61
- }
62
- }
63
-
64
- }
65
-
66
- if (instance.playerConfig.getPreload().isActive) {
67
- instance.plyr.volume = 1;
68
- instance.plyr.currentTime = 0;
69
- instance.playerConfig.getPreload().isActive = false;
70
- }
71
-
72
- play();
73
- }
74
- }
75
-
76
- }
77
-
78
-
79
- export class Desktop {
80
- /**
81
- * Add play event on poster
82
- */
83
- posterBody(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
84
-
85
- const common: Common = new LTPlayerPosterEvents.Common();
86
-
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) {
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
-
101
- instance.playerControl.desktopEvents.titleLineBreak(instance);
102
- instance.playerControl.desktopEvents.playPauseIcon(instance, 'timeupdate');
103
- common.poster.reset(instance);
104
-
105
- })
106
- }
107
- }
108
- }
109
-
110
- export class Mobile {
111
- /**
112
- * Add play event on poster mobile
113
- */
114
- posterBody(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
115
-
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();
120
-
121
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerBody);
122
-
123
- if (mobileEvent) {
124
- mobileEvent.on('singletap', function LTPlayerMobilePosterPlay() {
125
-
126
- if (playerPoster.classList.contains('d-none')) {
127
- return;
128
- }
129
-
130
- instance.playerControl.desktopEvents.titleLineBreak(instance);
131
-
132
- instance.playerControl.mobileEvents.playPauseIcon(instance, 'timeupdate');
133
- common.poster.reset(instance);
134
-
135
- playerContainer.classList.remove('plyr__poster-enabled');
136
-
137
- instance.playerControl.mobileEvents.showControls(instance);
138
- });
139
- }
140
- }
141
-
142
- /**
143
- * Remove Onload Poster from player
144
- */
145
- onload(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
146
- // const playerElementContainer = instance.playerConfig.getPlayerElementContainer();
147
- // const playerOnloadPosterSelector = playerElementContainer.parentElement.querySelector('.lt-player-onload-poster');
148
- //
149
- // if (playerOnloadPosterSelector) {
150
- // // playerElementContainer.classList.remove('d-none');
151
- // playerElementContainer.parentElement.querySelector('.lt-player-onload-poster').remove();
152
- // }
153
- }
154
-
155
- showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
156
- const playerContainer: HTMLElement = instance.plyr.elements.container;
157
- const playerControlsContainer: HTMLElement = instance.plyr.elements.controls;
158
- const playerPoster: Element = playerContainer.querySelector('.plyr__poster');
159
-
160
-
161
- let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerPoster);
162
-
163
- if (mobileEvent) {
164
- mobileEvent.on('singletap', function LTPlayerMobilePosterShowControls() {
165
- if (!playerControlsContainer.classList.contains('.plyr__controls-enable')) {
166
- instance.playerControl.mobileEvents.showControls(instance);
167
- }
168
- });
169
- }
170
- }
171
- }
172
- }
@@ -1,46 +0,0 @@
1
- import {LTPlayerPosterPreload} from "./LTPlayerPosterPreload";
2
- import {LTPlayerPoster} from "./LTPlayerPoster";
3
- import {LTPlayer} from "../LTPlayerType";
4
- import {LTPlayerDevMethode} from "../LTPlayerDevMethode";
5
- import {LTPlayerConfig} from "../config/LTPlayerConfig";
6
- import {TemplateService} from "../../services/TemplateService";
7
- import {IconsService} from "../../services/IconsService";
8
- import {LTPlayerPosterEvents} from "./LTPlayerPosterEvents";
9
-
10
- export class LTPlayerPosterManager {
11
-
12
- instance: LTPlayer.LandscapeType | LTPlayer.PortraitType
13
- preload: LTPlayerPosterPreload
14
- poster: LTPlayerPoster
15
- playerConfig: LTPlayerConfig
16
- iconService: IconsService
17
- templateService: TemplateService
18
- desktopEvents: LTPlayerPosterEvents.Desktop;
19
- mobileEvents: LTPlayerPosterEvents.Mobile;
20
- constructor() {
21
- this.desktopEvents = new LTPlayerPosterEvents.Desktop();
22
- this.mobileEvents = new LTPlayerPosterEvents.Mobile();
23
- }
24
-
25
- init(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
26
-
27
- this.instance = instance;
28
- this.playerConfig = instance.playerConfig;
29
- this.templateService = instance.templateService;
30
- this.iconService = instance.iconService;
31
-
32
- this.poster = new LTPlayerPoster(this.instance.plyr, this.templateService, this.playerConfig, this.iconService);
33
-
34
- this.poster.setTemplate();
35
- this.poster.setImage();
36
- if (this.playerConfig.getPreload()) {
37
- this.initPreload();
38
- }
39
-
40
- }
41
- initPreload() {
42
- this.preload = new LTPlayerPosterPreload();
43
- this.preload.initPreload(this.instance.plyr, this.templateService, this.playerConfig, this.iconService);
44
- this.instance.devMethodePreload = new LTPlayerDevMethode.Preload(this.instance, this.preload);
45
- }
46
- }
@@ -1,51 +0,0 @@
1
- import {LTPlayerPoster} from "./LTPlayerPoster";
2
- import Plyr from "plyr";
3
- import {TemplateService} from "../../services/TemplateService";
4
- import {LTPlayerConfig} from "../config/LTPlayerConfig";
5
- import {IconsService} from "../../services/IconsService";
6
- import {LoaderService} from "../../services/LoaderService";
7
- import {LTPlayer} from "../LTPlayerType";
8
-
9
- /**
10
- * Preload video
11
- */
12
- export class LTPlayerPosterPreload {
13
- config: LTPlayerConfig;
14
- iconService: IconsService;
15
- templateService: TemplateService;
16
- plyr: Plyr
17
-
18
- /**
19
- * Setup preload video with poster cover
20
- * @param plyr
21
- * @param templateService
22
- * @param config
23
- * @param iconService
24
- */
25
- initPreload(plyr: Plyr, templateService: TemplateService, config: LTPlayerConfig, iconService: IconsService) {
26
-
27
- this.plyr = plyr;
28
- this.iconService = iconService;
29
- this.templateService = templateService;
30
- this.config = config;
31
-
32
- const playerContainer = plyr.elements.container;
33
- const imagePosterContainer = playerContainer.querySelector('.lt-player__poster__image-body');
34
-
35
-
36
- if (imagePosterContainer) {
37
-
38
- if (config.isAutoPreload()) {
39
- this.plyr.on('play', () => {
40
- imagePosterContainer.classList.add('lt-player__poster__image-body--preload');
41
- })
42
- } else {
43
- setTimeout(() => {
44
- imagePosterContainer.classList.add('lt-player__poster__image-body--preload');
45
- }, 800)
46
- }
47
-
48
-
49
- }
50
- }
51
- }
@@ -1,152 +0,0 @@
1
- import {LTPlayer} from "../LTPlayerType";
2
- import {LoaderService} from "../../services/LoaderService";
3
-
4
- export class LTPlayerPosterPreloadEvents {
5
- static preloadEvents = {
6
- removePosterImage(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
7
- const playerElementContainer = instance.playerConfig.getPlayerElementContainer();
8
- const playerOnloadPosterSelector = playerElementContainer.parentElement.querySelector('.plyr__poster');
9
- if (playerOnloadPosterSelector) {
10
- playerOnloadPosterSelector.classList.add('lt-player__preload-hide');
11
- }
12
- },
13
-
14
- embedPlay(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
15
- let playerContainer = instance.plyr.elements.container;
16
- playerContainer.querySelector(`.lt-player__poster`).insertAdjacentHTML('afterend', LoaderService.getSpinner());
17
- const preloadData = instance.playerConfig.getPreload();
18
- const playAutoPreload = () => {
19
- console.log('preload play')
20
- if (preloadData.start !== 0) {
21
- instance.plyr.embed.setCurrentTime(preloadData.start).then(() => {
22
- instance.plyr.embed.setMuted(true).then(function () {
23
- instance.plyr.embed.play().then(function () {
24
- instance.plyr.volume = 0;
25
- LoaderService.removeSpinner(playerContainer)
26
- });
27
- }).catch(function () {
28
- // an error occurred
29
- });
30
- });
31
- LoaderService.removeSpinner(playerContainer)
32
- } else {
33
- instance.plyr.volume = 0;
34
- if (instance.plyr.embed) {
35
- instance.plyr.embed.play().then(function () {
36
- LoaderService.removeSpinner(playerContainer)
37
- });
38
- } else {
39
- instance.plyr.play()
40
- LoaderService.removeSpinner(playerContainer)
41
- }
42
-
43
- }
44
- }
45
-
46
- const pausePreload = () => {
47
- console.log('preload play')
48
- if (preloadData.start !== 0) {
49
- instance.plyr.embed.setCurrentTime(preloadData.start).then( () => {
50
- instance.plyr.embed.pause().then(function() {
51
- instance.plyr.volume = 0;
52
- LoaderService.removeSpinner(playerContainer)
53
- });
54
- });
55
- } else {
56
- if (instance.plyr.embed) {
57
- instance.plyr.embed.pause().then(function () {
58
- LoaderService.removeSpinner(playerContainer)
59
- });
60
- } else {
61
- instance.plyr.pause()
62
- LoaderService.removeSpinner(playerContainer)
63
- }
64
- }
65
- LoaderService.removeSpinner(playerContainer)
66
- }
67
-
68
- const playEvent = () => {
69
- if (instance.playerConfig.isAutoPreload()) {
70
- playAutoPreload();
71
- } else {
72
- pausePreload();
73
- }
74
- }
75
-
76
- switch (type) {
77
- case 'event':
78
- this.removePosterImage(instance);
79
- playEvent();
80
- break
81
- case 'action':
82
- playAutoPreload();
83
- break
84
- }
85
- },
86
-
87
- html5Play(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
88
-
89
- const play = () => {
90
- instance.plyr.volume = 0;
91
- const preloadData = instance.playerConfig.getPreload();
92
-
93
- if (preloadData.start !== 0) {
94
- instance.plyr.currentTime = preloadData.start;
95
- }
96
-
97
- switch (type) {
98
- case 'event':
99
- this.removePosterImage(instance);
100
- if (instance.playerConfig.isAutoPreload()) {
101
- instance.plyr.play();
102
- } else {
103
- instance.plyr.pause();
104
- }
105
- break
106
- case 'action':
107
- instance.plyr.play();
108
- break
109
- }
110
- }
111
-
112
-
113
- let checkPlayer = false;
114
-
115
- instance.plyr.on('loadeddata', () => {
116
- checkPlayer = true;
117
- play();
118
- })
119
-
120
- if (!checkPlayer) {
121
- play();
122
- }
123
-
124
- },
125
-
126
- stop(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
127
- const playEvent = () => {
128
- const preloadData = instance.playerConfig.getPreload();
129
- if (instance.plyr.currentTime >= preloadData.stop) {
130
- if (instance.plyr.isEmbed) {
131
- this.embedPlay(instance, 'action');
132
- } else {
133
- this.html5Play(instance, 'action');
134
- }
135
-
136
- }
137
- }
138
-
139
- const stop = () => {
140
- instance.plyr.pause();
141
- }
142
-
143
- switch (type) {
144
- case 'event':
145
- playEvent();
146
- break
147
- case 'action' :
148
- stop();
149
- }
150
- }
151
- }
152
- }
@@ -1,131 +0,0 @@
1
- import {LTPlayerShareManager} from "./LTPlayerShareManager";
2
-
3
- export class LTPlayerShareDesktop {
4
- manager : LTPlayerShareManager
5
- isPlaying : boolean
6
- switchButtonSet: boolean
7
- constructor(instance : LTPlayerShareManager) {
8
- this.manager = instance;
9
- this.setTemplate();
10
- }
11
- setTemplate() {
12
- const playerContainer = this.manager.instance.plyr.elements.wrapper;
13
- playerContainer.insertAdjacentHTML("afterend", this.manager.templateService.getShare(this.manager.playerConfig.getShareData()));
14
- }
15
-
16
- activeModal() {
17
- const selectors = this.getSelector();
18
- const instance = this.manager.instance;
19
-
20
- selectors.shareContainer.classList.remove('share-inactive');
21
- selectors.shareContainer.classList.add('share-active');
22
- (window as any).a2a.init_all();
23
- if (!instance.playerConfig.getShareData().canonicalUrl) {
24
- if (!instance.playerConfig.getShareData().embedUrl) {
25
- selectors.shareContainer.querySelector('.share-controller-top').classList.add('d-none')
26
- } else {
27
- this.setCopyContent(true);
28
- }
29
- } else {
30
- this.setCopyContent(false);
31
- }
32
-
33
- this.setCopyButtonsEvents();
34
-
35
- if (!this.switchButtonSet) {
36
- this.setSwitchButton();
37
- this.switchButtonSet = true;
38
- }
39
-
40
- if (instance.plyr.playing) {
41
- this.isPlaying = true;
42
- instance.plyr.pause();
43
- } else {
44
- this.isPlaying = false;
45
- }
46
- }
47
-
48
-
49
- setSwitchButton() {
50
- const selectors = this.getSelector();
51
- const instance = this.manager.instance;
52
-
53
- if (!instance.playerConfig.getShareData().embedUrl || !instance.playerConfig.getShareData().canonicalUrl) {
54
- selectors.switchButton.classList.add('d-none');
55
- return;
56
- }
57
-
58
- const switchEvent = () => {
59
-
60
- if (selectors.urlInput.classList.contains('canonicalUrl')) {
61
- selectors.urlInput.classList.remove('canonicalUrl');
62
- selectors.urlInput.classList.add('embedUrl');
63
- this.setCopyContent(true);
64
- } else {
65
- selectors.urlInput.classList.add('canonicalUrl');
66
- selectors.urlInput.classList.remove('embedUrl');
67
- this.setCopyContent(false);
68
- }
69
- }
70
-
71
- selectors.switchButton.addEventListener('click', () => {
72
- switchEvent();
73
- })
74
- }
75
-
76
- setCopyContent(embed : boolean) {
77
- const selectors = this.getSelector();
78
- const instance = this.manager.instance;
79
-
80
- if (!embed) {
81
- selectors.urlInput.classList.add('canonicalUrl');
82
- selectors.urlInput.innerHTML = `${instance.playerConfig.getShareData().canonicalUrl}`;
83
- (selectors.urlInput as HTMLElement).dataset.copy = instance.playerConfig.getShareData().canonicalUrl;
84
- selectors.urlInput.addEventListener('click', () => {
85
- window.open(instance.playerConfig.getShareData().canonicalUrl)
86
- })
87
- return
88
- }
89
- selectors.urlInput.classList.add('embedUrl');
90
- const iframe = `<iframe width="560" height="315" src="${instance.playerConfig.getShareData().embedUrl}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>`;
91
- (selectors.urlInput as HTMLElement).innerText = iframe;
92
- (selectors.urlInput as HTMLElement).dataset.copy = iframe;
93
- }
94
-
95
- inactiveModal() {
96
- const selectors = this.getSelector();
97
- const instance = this.manager.instance;
98
-
99
- selectors.shareContainer.classList.add('share-inactive');
100
- selectors.shareContainer.classList.remove('share-active');
101
- if (this.isPlaying) {
102
- instance.plyr.play();
103
- }
104
- }
105
-
106
- getSelector() {
107
- return {
108
- buttons : [
109
- this.manager.instance.plyr.elements.container.querySelector('.poster-lt-player-share'),
110
- this.manager.instance.plyr.elements.controls.querySelector('.lt-player-share'),
111
- ],
112
- urlInput : this.manager.instance.plyr.elements.container.querySelector('.share-controller-wrapper').querySelector('.share-controller-url'),
113
- shareContainer : this.manager.instance.plyr.elements.container.querySelector('.share-controller-wrapper'),
114
- copyButtons : this.manager.instance.plyr.elements.container.querySelectorAll('.share-controller-link'),
115
- switchButton : this.manager.instance.plyr.elements.container.querySelector('.share-controller-wrapper').querySelector('.button_embed')
116
- };
117
- }
118
-
119
- setCopyButtonsEvents() {
120
- const selectors = this.getSelector();
121
-
122
- if (selectors.copyButtons.length > 0) {
123
- selectors.copyButtons.forEach((button: HTMLElement) => {
124
- button.addEventListener('click', function LTPlayerShareCopy() {
125
- navigator.clipboard.writeText((selectors.urlInput as HTMLElement).dataset.copy);
126
- })
127
-
128
- })
129
- }
130
- }
131
- }
@@ -1,64 +0,0 @@
1
- import {LTPlayerShareManager} from "./LTPlayerShareManager";
2
-
3
- export namespace LTPlayerShareEvents {
4
-
5
- export class mobile {
6
-
7
- manager : LTPlayerShareManager
8
-
9
- constructor(manager: LTPlayerShareManager) {
10
- this.manager = manager;
11
- }
12
-
13
- init() {
14
- const buttons = [
15
- this.manager.instance.plyr.elements.container.querySelector('.poster-lt-player-share'),
16
- this.manager.instance.plyr.elements.controls.querySelector('.lt-player-share'),
17
- ];
18
-
19
- const instance = this;
20
-
21
- buttons.forEach(button => {
22
- if (button) {
23
- let mobileEvent: HammerManager = this.manager.instance.eventInstance.mobileEvents.setMobileEvent(button);
24
- if (mobileEvent) {
25
- mobileEvent.on('singletap', function LTPlayerMobileShareButtons(event) {
26
- event.preventDefault();
27
- instance.manager.mobile.activeModal();
28
- })
29
- }
30
- }
31
- })
32
- }
33
- }
34
-
35
- export class desktop {
36
- manager : LTPlayerShareManager
37
- constructor(manager: LTPlayerShareManager) {
38
- this.manager = manager;
39
- }
40
-
41
- init() {
42
- const manager = this.manager;
43
- manager.desktop.getSelector().buttons.forEach(button => {
44
- if (button) {
45
- button.addEventListener('click', () => {
46
- manager.desktop.activeModal();
47
- })
48
- }
49
- })
50
-
51
- if (manager.desktop.getSelector().shareContainer) {
52
- manager.desktop.getSelector().shareContainer.addEventListener('click', function LTPlayerShareArea(event) {
53
- event.preventDefault();
54
- if ( manager.desktop.getSelector().shareContainer.classList.contains('share-active')) {
55
- let target = event.target as HTMLElement;
56
- if (target.classList.contains('share-active') || target.classList.contains('player-lt__close-button')) {
57
- manager.desktop.inactiveModal();
58
- }
59
- }
60
- })
61
- }
62
- }
63
- }
64
- }
@@ -1,58 +0,0 @@
1
- import {LTPlayer} from "../LTPlayerType";
2
- import {LTPlayerConfig} from "../config/LTPlayerConfig";
3
- import {IconsService} from "../../services/IconsService";
4
- import {TemplateService} from "../../services/TemplateService";
5
- import {LTPlayerShareEvents} from "./LTPlayerShareEvents";
6
- import {shareType} from "../../global/types/ModuleTypes";
7
- import {LTPlayerShareDesktop} from "./LTPlayerShareDesktop";
8
- import {LTPlayerShareMobile} from "./LTPlayerShareMobile";
9
-
10
- export class LTPlayerShareManager {
11
- instance: LTPlayer.LandscapeType | LTPlayer.PortraitType
12
- playerConfig: LTPlayerConfig
13
- iconService: IconsService
14
- templateService: TemplateService
15
- events: shareType = {
16
- desktop : undefined,
17
- mobile : undefined
18
- }
19
- desktop : LTPlayerShareDesktop
20
- mobile: LTPlayerShareMobile
21
-
22
- init(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
23
- this.instance = instance;
24
- this.playerConfig = instance.playerConfig;
25
- this.templateService = instance.templateService;
26
- this.iconService = instance.iconService;
27
- this.appendScriptTag();
28
- this.setByDevice();
29
- }
30
-
31
- setByDevice() {
32
- switch (this.playerConfig.getDevice()) {
33
- case "desktop":
34
- this.desktop = new LTPlayerShareDesktop(this);
35
- this.events.desktop = new LTPlayerShareEvents.desktop(this);
36
- break
37
- case "mobile":
38
- this.mobile = new LTPlayerShareMobile(this);
39
- this.events.mobile = new LTPlayerShareEvents.mobile(this)
40
- }
41
- }
42
-
43
- appendScriptTag() {
44
- const script = document.createElement("script");
45
- script.classList.add('lt-player-add-to-any')
46
- script.type = "text/javascript";
47
- script.src = "https://static.addtoany.com/menu/page.js";
48
- script.async;
49
- document.body.appendChild(script);
50
- }
51
-
52
- removeScriptTag() {
53
- const script = document.querySelector('.lt-player-add-to-any');
54
- if(script) {
55
- script.remove();
56
- }
57
- }
58
- }