@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.
- package/.editorconfig +1 -1
- package/.node-version +1 -0
- package/.nvmrc +1 -0
- package/README.md +162 -0
- package/dist/main.js +24375 -0
- package/package.json +31 -67
- package/tsconfig.json +2 -1
- package/vite-dev.config.mts +35 -0
- package/vite.config.mts +40 -0
- package/ README.md +0 -270
- package/.babelrc +0 -11
- package/.eslintrc.js +0 -6
- package/dist/css/lt-player-main.css +0 -3
- package/dist/css/lt-player-main.css.map +0 -1
- package/dist/fonts/0574e80a2483be7b033e.otf +0 -0
- package/dist/fonts/34274fbfb2f270b8d53b.otf +0 -0
- package/dist/fonts/80acced0ba3630ee652b.otf +0 -0
- package/dist/fonts/8ccea4947561e7008d19.otf +0 -0
- package/dist/fonts/d355445ed7d61b887e58.otf +0 -0
- package/dist/js/lt-player-main.js +0 -3
- package/dist/js/lt-player-main.js.LICENSE.txt +0 -9
- package/dist/js/lt-player-main.js.map +0 -1
- package/examples/basic.html +0 -35
- package/examples/lt-page-with-player.html +0 -3529
- package/examples/lt-page-with-player_files/Weiskopf_Coverphoto.jpg +0 -0
- package/examples/lt-page-with-player_files/ajax-progress.module.css +0 -49
- package/examples/lt-page-with-player_files/align.module.css +0 -32
- package/examples/lt-page-with-player_files/announce.js +0 -49
- package/examples/lt-page-with-player_files/autocomplete-loading.module.css +0 -22
- package/examples/lt-page-with-player_files/autocomplete.css +0 -16
- package/examples/lt-page-with-player_files/bootstrap.css +0 -22691
- package/examples/lt-page-with-player_files/clearfix.module.css +0 -15
- package/examples/lt-page-with-player_files/container-inline.module.css +0 -16
- package/examples/lt-page-with-player_files/cookiesjsr.min.css +0 -10
- package/examples/lt-page-with-player_files/core.css +0 -97
- package/examples/lt-page-with-player_files/details.module.css +0 -10
- package/examples/lt-page-with-player_files/fieldgroup.module.css +0 -9
- package/examples/lt-page-with-player_files/hidden.module.css +0 -53
- package/examples/lt-page-with-player_files/himme-alexander-beyond_0.jpg +0 -0
- package/examples/lt-page-with-player_files/item-list.module.css +0 -19
- package/examples/lt-page-with-player_files/js.module.css +0 -22
- package/examples/lt-page-with-player_files/latest_thinking.style.css +0 -6496
- package/examples/lt-page-with-player_files/logo-small.png +0 -0
- package/examples/lt-page-with-player_files/menu.css +0 -64
- package/examples/lt-page-with-player_files/nowrap.module.css +0 -8
- package/examples/lt-page-with-player_files/paragraphs.unpublished.css +0 -3
- package/examples/lt-page-with-player_files/position-container.module.css +0 -8
- package/examples/lt-page-with-player_files/progress.module.css +0 -51
- package/examples/lt-page-with-player_files/radix.style.css +0 -1
- package/examples/lt-page-with-player_files/reset-appearance.module.css +0 -15
- package/examples/lt-page-with-player_files/resize.module.css +0 -21
- package/examples/lt-page-with-player_files/search_api_autocomplete.css +0 -41
- package/examples/lt-page-with-player_files/sticky-header.module.css +0 -13
- package/examples/lt-page-with-player_files/system-status-counter.css +0 -30
- package/examples/lt-page-with-player_files/system-status-report-counters.css +0 -27
- package/examples/lt-page-with-player_files/system-status-report-general-info.css +0 -14
- package/examples/lt-page-with-player_files/tabledrag.module.css +0 -98
- package/examples/lt-page-with-player_files/tablesort.module.css +0 -19
- package/examples/lt-page-with-player_files/theme.css +0 -446
- package/examples/lt-page-with-player_files/thumbnail_MPI_CBS_Eingangsbereich.jpg +0 -0
- package/examples/lt-page-with-player_files/tree-child.module.css +0 -18
- package/examples/lt-page-with-player_files/widget-min.js +0 -10
- package/examples/lt-website.html +0 -76
- package/examples/portrait-with-subtitles.html +0 -81
- package/examples/samples/vtt/Pahl-Kerstin-Maria-MAIN-20230320.vtt +0 -765
- package/examples/samples/vtt/Sobolev-Anton-Subtitles-20230518_0.vtt +0 -352
- package/examples/samples/vtt/demo.vtt +0 -7
- package/src/assets/css/sample.css +0 -12
- package/src/assets/fonts/museo/MuseoSans-100.otf +0 -0
- package/src/assets/fonts/museo/MuseoSans-300.otf +0 -0
- package/src/assets/fonts/museo/MuseoSans-500.otf +0 -0
- package/src/assets/fonts/museo/MuseoSans-700.otf +0 -0
- package/src/assets/fonts/museo/MuseoSans-900.otf +0 -0
- package/src/assets/icons/arrow-down.svg +0 -8
- package/src/assets/icons/arrow-left.svg +0 -8
- package/src/assets/icons/chevron-down-full.svg +0 -7
- package/src/assets/icons/chevron-down.svg +0 -7
- package/src/assets/icons/chevron-up-full.svg +0 -7
- package/src/assets/icons/chevron-up.svg +0 -7
- package/src/assets/icons/close.svg +0 -8
- package/src/assets/icons/compass.svg +0 -8
- package/src/assets/icons/external-link.svg +0 -9
- package/src/assets/icons/facebook.svg +0 -7
- package/src/assets/icons/fast-backward.svg +0 -8
- package/src/assets/icons/fast-forward.svg +0 -8
- package/src/assets/icons/file-text.svg +0 -11
- package/src/assets/icons/home.svg +0 -8
- package/src/assets/icons/logo-big.png +0 -0
- package/src/assets/icons/logo.png +0 -0
- package/src/assets/icons/maximize.svg +0 -7
- package/src/assets/icons/mini-player.svg +0 -8
- package/src/assets/icons/minimize.svg +0 -7
- package/src/assets/icons/more-vertical.svg +0 -9
- package/src/assets/icons/mute.svg +0 -9
- package/src/assets/icons/pause.svg +0 -8
- package/src/assets/icons/play.svg +0 -8
- package/src/assets/icons/search.svg +0 -8
- package/src/assets/icons/settings.svg +0 -8
- package/src/assets/icons/share.svg +0 -11
- package/src/assets/icons/skip-backward.svg +0 -8
- package/src/assets/icons/skip-forward.svg +0 -8
- package/src/assets/icons/speed-1-5.svg +0 -7
- package/src/assets/icons/speed-1.svg +0 -7
- package/src/assets/icons/speed-2.svg +0 -7
- package/src/assets/icons/subtitles.svg +0 -7
- package/src/assets/icons/twitter.svg +0 -7
- package/src/assets/icons/university.svg +0 -9
- package/src/assets/icons/user.svg +0 -8
- package/src/assets/icons/volume-1.svg +0 -15
- package/src/assets/icons/volume-2.svg +0 -15
- package/src/assets/icons/volume-3.svg +0 -15
- package/src/assets/sass/abstracts/_mixins.scss +0 -145
- package/src/assets/sass/abstracts/_placeholders.scss +0 -112
- package/src/assets/sass/abstracts/_variables.scss +0 -68
- package/src/assets/sass/abstracts/all.scss +0 -4
- package/src/assets/sass/app.scss +0 -100
- package/src/assets/sass/components/_all.scss +0 -6
- package/src/assets/sass/components/_buttons.scss +0 -1
- package/src/assets/sass/components/_images.scss +0 -4
- package/src/assets/sass/components/_loader.scss +0 -187
- package/src/assets/sass/components/_modal.scss +0 -365
- package/src/assets/sass/components/_range.scss +0 -33
- package/src/assets/sass/core/_all.scss +0 -13
- package/src/assets/sass/core/_fonts.scss +0 -55
- package/src/assets/sass/core/_player.scss +0 -70
- package/src/assets/sass/core/_typography.scss +0 -13
- package/src/assets/sass/layout/_all.scss +0 -3
- package/src/assets/sass/layout/_grid.scss +0 -0
- package/src/assets/sass/sections/_additional-info.scss +0 -90
- package/src/assets/sass/sections/_all.scss +0 -6
- package/src/assets/sass/sections/_control.scss +0 -122
- package/src/assets/sass/sections/_poster.scss +0 -319
- package/src/assets/sass/sections/_settings.scss +0 -512
- package/src/assets/sass/sections/_share.scss +0 -250
- package/src/assets/sass/sections/_subtitles.scss +0 -85
- package/src/assets/sass/sections/controllers/_all.scss +0 -4
- package/src/assets/sass/sections/controllers/_botom.scss +0 -522
- package/src/assets/sass/sections/controllers/_mini-player.scss +0 -169
- package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +0 -260
- package/src/assets/sass/sections/controllers/_top.scss +0 -169
- package/src/components/LTPlayerDevMethode.ts +0 -192
- package/src/components/LTPlayerEventsManager.ts +0 -31
- package/src/components/LTPlayerHls.ts +0 -38
- package/src/components/LTPlayerManager.ts +0 -266
- package/src/components/LTPlayerSettingsManager.ts +0 -117
- package/src/components/LTPlayerSetup.ts +0 -286
- package/src/components/LTPlayerStatusFeedback.ts +0 -76
- package/src/components/LTPlayerStorage.ts +0 -58
- package/src/components/LTPlayerType.ts +0 -371
- package/src/components/LTPlayerUpdate.ts +0 -61
- package/src/components/addInfo/LTPLayerAddInfoResizeManager.ts +0 -15
- package/src/components/addInfo/LTPlayerAddInfoDesktop.ts +0 -127
- package/src/components/addInfo/LTPlayerAddInfoManager.ts +0 -230
- package/src/components/addInfo/LTPlayerAddInfoMobile.ts +0 -113
- package/src/components/captions/LTPlayerCaptions.ts +0 -80
- package/src/components/config/LTPlayerConfig.ts +0 -280
- package/src/components/config/LTPlayerConfigProcessor.ts +0 -604
- package/src/components/controls/LTPlayerChapters.ts +0 -285
- package/src/components/controls/LTPlayerControls.ts +0 -57
- package/src/components/controls/LTPlayerControlsEvents.ts +0 -943
- package/src/components/controls/LTPlayerMini.ts +0 -285
- package/src/components/controls/LTPlayerSettingsControlsManager.ts +0 -60
- package/src/components/controls/settings/LTPlayerCommonSettingsControllers.ts +0 -71
- package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +0 -135
- package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +0 -211
- package/src/components/events/LTPlayer.ts +0 -194
- package/src/components/events/LTPlayerCommon.ts +0 -252
- package/src/components/events/LTPlayerDesktop.ts +0 -222
- package/src/components/events/LTPlayerMobile.ts +0 -243
- package/src/components/poster/LTPlayerPoster.ts +0 -78
- package/src/components/poster/LTPlayerPosterEvents.ts +0 -172
- package/src/components/poster/LTPlayerPosterManager.ts +0 -46
- package/src/components/poster/LTPlayerPosterPreload.ts +0 -51
- package/src/components/poster/LTPlayerPosterPreloadEvents.ts +0 -152
- package/src/components/share/LTPlayerShareDesktop.ts +0 -131
- package/src/components/share/LTPlayerShareEvents.ts +0 -64
- package/src/components/share/LTPlayerShareManager.ts +0 -58
- package/src/components/share/LTPlayerShareMobile.ts +0 -154
- package/src/components/video/LTPlayerVideo.ts +0 -49
- package/src/global/controllers/LTPlayerController.ts +0 -58
- package/src/global/interfaces/EventsInterfaces.ts +0 -11
- package/src/global/interfaces/SettingsControlsInterfaces.ts +0 -3
- package/src/global/interfaces/TypeInterface.ts +0 -9
- package/src/global/types/ModuleTypes.d.ts +0 -35
- package/src/global/types/ModuleViews.d.ts +0 -13
- package/src/global/types/ModuleWindow.d.ts +0 -12
- package/src/global/types/Modules.d.ts +0 -44
- package/src/index.ts +0 -10
- package/src/json-schema/player-config.json +0 -16
- package/src/services/Helper.ts +0 -147
- package/src/services/IconsService.ts +0 -124
- package/src/services/LTPlayerRotateDeviceService.ts +0 -15
- package/src/services/LoaderService.ts +0 -21
- package/src/services/ResizeService.ts +0 -352
- package/src/services/TemplateService.ts +0 -136
- package/src/services/ValidatorService.ts +0 -31
- package/src/views/additionalInfo.handlebars +0 -103
- package/src/views/background.handlebars +0 -5
- package/src/views/controls.handlebars +0 -390
- package/src/views/onloadPoster.handlebars +0 -1
- package/src/views/poster.handlebars +0 -69
- package/src/views/settings.handlebars +0 -31
- package/src/views/settings.mobile.handlebars +0 -22
- package/src/views/share.handlebars +0 -101
- package/src/views/template.handlebars +0 -15
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import {LTPlayerShareManager} from "./LTPlayerShareManager";
|
|
2
|
-
|
|
3
|
-
export class LTPlayerShareMobile {
|
|
4
|
-
|
|
5
|
-
manager : LTPlayerShareManager
|
|
6
|
-
isPlaying : boolean
|
|
7
|
-
|
|
8
|
-
constructor(instance : LTPlayerShareManager) {
|
|
9
|
-
this.manager = instance;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
activeModal() {
|
|
13
|
-
if (!this.manager.playerConfig.getShareData().canonicalUrl) {
|
|
14
|
-
if (!this.manager.playerConfig.getShareData().embedUrl) {
|
|
15
|
-
return
|
|
16
|
-
} else {
|
|
17
|
-
this.createModal();
|
|
18
|
-
this.setCopyContent(true);
|
|
19
|
-
}
|
|
20
|
-
} else {
|
|
21
|
-
this.createModal();
|
|
22
|
-
this.setCopyContent(false);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
(window as any).a2a.init_all();
|
|
26
|
-
|
|
27
|
-
this.setCopyButtonsEvents()
|
|
28
|
-
this.setSwitchButton()
|
|
29
|
-
|
|
30
|
-
if (this.manager.instance.plyr.playing) {
|
|
31
|
-
this.isPlaying = true;
|
|
32
|
-
this.manager.instance.plyr.pause();
|
|
33
|
-
} else {
|
|
34
|
-
this.isPlaying = false;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
setTimeout(() => {
|
|
38
|
-
const shareContainer = document.querySelector('.share-controller-wrapper');
|
|
39
|
-
const shareContainerHeader = document.querySelector('.share-controller-mobile-modal-header');
|
|
40
|
-
let instance = this;
|
|
41
|
-
|
|
42
|
-
if (shareContainer) {
|
|
43
|
-
let mobileEvent: HammerManager = this.manager.instance.eventInstance.mobileEvents.setMobileEvent(shareContainer);
|
|
44
|
-
if (mobileEvent) {
|
|
45
|
-
mobileEvent.on('singletap', function LTPlayerMobileShareButtonsExit(event) {
|
|
46
|
-
event.preventDefault();
|
|
47
|
-
let target = event.target as HTMLElement;
|
|
48
|
-
if (!target.classList.contains('player-lt__close-button') && !target.classList.contains('lt-player-mobile-share')) {
|
|
49
|
-
instance.inactiveModal();
|
|
50
|
-
}
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (shareContainerHeader) {
|
|
56
|
-
let mobileEvent: HammerManager = this.manager.instance.eventInstance.mobileEvents.setMobileEvent(shareContainer);
|
|
57
|
-
if (mobileEvent) {
|
|
58
|
-
mobileEvent.on('pan', function LTPlayerMobileShareButtonsExitPan(event) {
|
|
59
|
-
event.preventDefault();
|
|
60
|
-
let target = event.target as HTMLElement;
|
|
61
|
-
if (!target.classList.contains('player-lt__close-button') ) {
|
|
62
|
-
instance.inactiveModal();
|
|
63
|
-
}
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}, 100)
|
|
68
|
-
}
|
|
69
|
-
setSwitchButton() {
|
|
70
|
-
const switchButton = document.querySelector('.share-controller-wrapper').querySelector('.button_embed');
|
|
71
|
-
const urlInput = document.querySelector('.share-controller-wrapper').querySelector('.share-controller-url');
|
|
72
|
-
const instance = this.manager.instance;
|
|
73
|
-
|
|
74
|
-
if (!instance.playerConfig.getShareData().embedUrl || !instance.playerConfig.getShareData().canonicalUrl) {
|
|
75
|
-
switchButton.classList.add('d-none');
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
switchButton.addEventListener('click', () => {
|
|
80
|
-
if (urlInput.classList.contains('canonicalUrl')) {
|
|
81
|
-
urlInput.classList.remove('canonicalUrl');
|
|
82
|
-
urlInput.classList.add('embedUrl');
|
|
83
|
-
this.setCopyContent(true);
|
|
84
|
-
} else {
|
|
85
|
-
urlInput.classList.add('canonicalUrl');
|
|
86
|
-
urlInput.classList.remove('embedUrl');
|
|
87
|
-
this.setCopyContent(false);
|
|
88
|
-
}
|
|
89
|
-
})
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
setCopyButtonsEvents() {
|
|
93
|
-
const selectors = document.querySelectorAll('.share-controller-link');
|
|
94
|
-
const urlInput = document.querySelector('.share-controller-wrapper').querySelector('.share-controller-url');
|
|
95
|
-
|
|
96
|
-
if (selectors.length > 0) {
|
|
97
|
-
selectors.forEach((button: HTMLElement) => {
|
|
98
|
-
button.addEventListener('click', function LTPlayerShareCopy() {
|
|
99
|
-
navigator.clipboard.writeText((urlInput as HTMLElement).dataset.copy);
|
|
100
|
-
})
|
|
101
|
-
|
|
102
|
-
})
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
setCopyContent(embed : boolean) {
|
|
107
|
-
const urlInput = document.querySelector('.share-controller-wrapper').querySelector('.share-controller-url');
|
|
108
|
-
|
|
109
|
-
if (!urlInput) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (!embed) {
|
|
114
|
-
urlInput.classList.add('canonicalUrl');
|
|
115
|
-
urlInput.innerHTML = `${this.manager.instance.playerConfig.getShareData().canonicalUrl}`;
|
|
116
|
-
(urlInput as HTMLElement).dataset.copy = this.manager.instance.playerConfig.getShareData().canonicalUrl;
|
|
117
|
-
urlInput.addEventListener('click', () => {
|
|
118
|
-
window.open(this.manager.instance.playerConfig.getShareData().canonicalUrl)
|
|
119
|
-
})
|
|
120
|
-
return
|
|
121
|
-
}
|
|
122
|
-
urlInput.classList.add('embedUrl');
|
|
123
|
-
const iframe = `<iframe width="560" height="315" src="${this.manager.instance.playerConfig.getShareData().embedUrl}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>`;
|
|
124
|
-
(urlInput as HTMLElement).innerText = iframe;
|
|
125
|
-
(urlInput as HTMLElement).dataset.copy = iframe;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
createModal() {
|
|
129
|
-
|
|
130
|
-
let modalTemplate = this.manager.instance.templateService.getShare(this.manager.playerConfig.getShareData());
|
|
131
|
-
|
|
132
|
-
const modal = document.createElement('div');
|
|
133
|
-
modal.classList.add('lt-player-mobile-share-modal')
|
|
134
|
-
modal.innerHTML = modalTemplate;
|
|
135
|
-
|
|
136
|
-
const body = document.querySelector('body');
|
|
137
|
-
|
|
138
|
-
if (body) {
|
|
139
|
-
body.appendChild(modal);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
inactiveModal() {
|
|
144
|
-
const modal = document.querySelector('.lt-player-mobile-share-modal');
|
|
145
|
-
|
|
146
|
-
if (modal) {
|
|
147
|
-
modal.remove();
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (this.isPlaying) {
|
|
151
|
-
this.manager.instance.plyr.play();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import {LTPlayer} from "../LTPlayerType";
|
|
2
|
-
import {LTPlayerConfig} from "../config/LTPlayerConfig";
|
|
3
|
-
import Plyr from "plyr";
|
|
4
|
-
|
|
5
|
-
export class LTPlayerVideo {
|
|
6
|
-
instanceType : LTPlayer.LandscapeType | LTPlayer.PortraitType
|
|
7
|
-
playerConfig : LTPlayerConfig
|
|
8
|
-
plyr : Plyr
|
|
9
|
-
objectFit: string
|
|
10
|
-
init(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
11
|
-
this.instanceType = instance;
|
|
12
|
-
this.playerConfig = instance.playerConfig;
|
|
13
|
-
this.plyr = instance.plyr;
|
|
14
|
-
this.objectFit =instance.playerConfig.getObjectFit();
|
|
15
|
-
this.appendObjectFit();
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
appendObjectFit() {
|
|
19
|
-
if (!this.objectFit) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if (!this.plyr.isHTML5) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const videoTag = this.plyr.elements.wrapper.querySelector('video');
|
|
28
|
-
|
|
29
|
-
if (this.objectFit === 'cover') {
|
|
30
|
-
videoTag.style.objectFit = this.objectFit;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
removeObjectFit() {
|
|
35
|
-
if (!this.objectFit) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (!this.plyr.isHTML5) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const videoTag = this.plyr.elements.wrapper.querySelector('video');
|
|
44
|
-
|
|
45
|
-
if (this.objectFit === 'cover') {
|
|
46
|
-
videoTag.style.objectFit = null;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import {LTPlayerConfig} from "../../components/config/LTPlayerConfig";
|
|
2
|
-
import {LTPlayerControls} from "../../components/controls/LTPlayerControls";
|
|
3
|
-
import Plyr from "plyr";
|
|
4
|
-
import {TemplateService} from "../../services/TemplateService";
|
|
5
|
-
import {IconsService} from "../../services/IconsService";
|
|
6
|
-
import {ResizeService} from "../../services/ResizeService";
|
|
7
|
-
import {LTPlayerEvents} from "../../components/events/LTPlayer";
|
|
8
|
-
import {LTPLayerAddInfo} from "../../components/addInfo/LTPlayerAddInfoManager";
|
|
9
|
-
import {LTPlayerMini} from "../../components/controls/LTPlayerMini";
|
|
10
|
-
import {LTPlayerDevMethode} from "../../components/LTPlayerDevMethode";
|
|
11
|
-
import {LTPlayerEventsManager} from "../../components/LTPlayerEventsManager";
|
|
12
|
-
import {LTPlayerPosterManager} from "../../components/poster/LTPlayerPosterManager";
|
|
13
|
-
import {LTPlayerShareManager} from "../../components/share/LTPlayerShareManager";
|
|
14
|
-
import {LTPlayerHls} from "../../components/LTPlayerHls";
|
|
15
|
-
import {LTPlayerVideo} from "../../components/video/LTPlayerVideo";
|
|
16
|
-
import {LTPlayerCaptionsManager} from "../../components/captions/LTPlayerCaptions";
|
|
17
|
-
import {LTPlayerStatusFeedback} from "../../components/LTPlayerStatusFeedback";
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Default Player type Service
|
|
21
|
-
*/
|
|
22
|
-
export class LTPlayerController {
|
|
23
|
-
playerId: number
|
|
24
|
-
windowService: ResizeService
|
|
25
|
-
playerConfig: LTPlayerConfig
|
|
26
|
-
playerControl: LTPlayerControls
|
|
27
|
-
plyr: Plyr
|
|
28
|
-
templateService: TemplateService
|
|
29
|
-
iconService: IconsService
|
|
30
|
-
desktopEvents: LTPlayerEvents.Desktop;
|
|
31
|
-
mobileEvents: LTPlayerEvents.Mobile;
|
|
32
|
-
additionalInfoService: LTPLayerAddInfo.Controller | null
|
|
33
|
-
miniPlayer: LTPlayerMini
|
|
34
|
-
devMethodePlayer: LTPlayerDevMethode.Player
|
|
35
|
-
devMethodePreload: LTPlayerDevMethode.Preload
|
|
36
|
-
eventInstance: LTPlayerEventsManager
|
|
37
|
-
posterManager : LTPlayerPosterManager
|
|
38
|
-
share : LTPlayerShareManager
|
|
39
|
-
hls : LTPlayerHls
|
|
40
|
-
videoService : LTPlayerVideo
|
|
41
|
-
captionsService : LTPlayerCaptionsManager
|
|
42
|
-
statusFeedbackService: LTPlayerStatusFeedback
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Base player type service
|
|
46
|
-
*/
|
|
47
|
-
constructor() {
|
|
48
|
-
this.windowService = new ResizeService();
|
|
49
|
-
this.iconService = new IconsService();
|
|
50
|
-
this.templateService = new TemplateService();
|
|
51
|
-
this.playerControl = new LTPlayerControls(this.templateService);
|
|
52
|
-
this.posterManager = new LTPlayerPosterManager();
|
|
53
|
-
this.share = new LTPlayerShareManager();
|
|
54
|
-
this.videoService = new LTPlayerVideo();
|
|
55
|
-
this.captionsService = new LTPlayerCaptionsManager(this);
|
|
56
|
-
this.statusFeedbackService = new LTPlayerStatusFeedback(this);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import {playerConfigType} from "../types/ModuleTypes";
|
|
2
|
-
import {LTPLayerAddInfo} from "../../components/addInfo/LTPlayerAddInfoManager";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Set default methods for Player type service
|
|
6
|
-
*/
|
|
7
|
-
export interface TypeInterface {
|
|
8
|
-
setup(configData: playerConfigType, additionalInfo: LTPLayerAddInfo.Controller | null): boolean;
|
|
9
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import {LTPlayer} from "../../components/LTPlayerType";
|
|
2
|
-
import Plyr from "plyr";
|
|
3
|
-
import {LTPlayerShareEvents} from "../../components/share/LTPlayerShareEvents";
|
|
4
|
-
|
|
5
|
-
type playerConfigType = {[index: string]: any}
|
|
6
|
-
|
|
7
|
-
type urlDataType = {[index: string] : string}
|
|
8
|
-
|
|
9
|
-
type additionalInformation = {[index: string] : any}
|
|
10
|
-
|
|
11
|
-
type defaultType = {[index: string] : any}
|
|
12
|
-
|
|
13
|
-
type PlayerType = LTPlayer.PortraitType | LTPlayer.LandscapeType;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
type plyr = Plyr & {
|
|
17
|
-
id: number;
|
|
18
|
-
captions : defaultType;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
type playerManger = Element & {
|
|
22
|
-
playerManager: LTPlayer.PortraitType | LTPlayer.LandscapeType
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
type urlVideoType = {
|
|
26
|
-
type : string
|
|
27
|
-
origin : string
|
|
28
|
-
embedId : string
|
|
29
|
-
embedHash : string
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
type shareType = {
|
|
33
|
-
mobile : LTPlayerShareEvents.mobile,
|
|
34
|
-
desktop : LTPlayerShareEvents.desktop
|
|
35
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import {LTPlayerManager} from "../../components/LTPlayerManager";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Tells the IntelliSense to allow import of the following file extensions in TypeScript.
|
|
6
|
-
* Current Webpack config for these files doesn't embed their content, but provides the file path inside the Webpack bundle.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
//-----------------------
|
|
10
|
-
// Fonts Module
|
|
11
|
-
//-----------------------
|
|
12
|
-
|
|
13
|
-
declare module '*.otf' {
|
|
14
|
-
const value: any;
|
|
15
|
-
export = value;
|
|
16
|
-
}
|
|
17
|
-
declare module '*.eot' {
|
|
18
|
-
const value: any;
|
|
19
|
-
export = value;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
declare module '*.ttf' {
|
|
23
|
-
const value: any;
|
|
24
|
-
export = value;
|
|
25
|
-
}
|
|
26
|
-
declare module '*.woff' {
|
|
27
|
-
const value: any;
|
|
28
|
-
export = value;
|
|
29
|
-
}
|
|
30
|
-
declare module '*.svg' {
|
|
31
|
-
const value: any;
|
|
32
|
-
export = value;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
//----------------------
|
|
37
|
-
// Images Modules
|
|
38
|
-
//----------------------
|
|
39
|
-
declare module '*.jpg';
|
|
40
|
-
declare module '*.jpeg';
|
|
41
|
-
declare module '*.png';
|
|
42
|
-
declare module '*.svg';
|
|
43
|
-
|
|
44
|
-
|
package/src/index.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import {LTPlayerManager} from "./components/LTPlayerManager";
|
|
2
|
-
|
|
3
|
-
const supportsContainerQueries = "container" in document.documentElement.style;
|
|
4
|
-
if (!supportsContainerQueries) {
|
|
5
|
-
require('container-query-polyfill');
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
if (window.Player === undefined) {
|
|
9
|
-
window.Player = new LTPlayerManager();
|
|
10
|
-
}
|
package/src/services/Helper.ts
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import {defaultType} from "../global/types/ModuleTypes";
|
|
2
|
-
|
|
3
|
-
export class Helper {
|
|
4
|
-
|
|
5
|
-
static getDevice() {
|
|
6
|
-
let device = 'desktop'; //initiate as false
|
|
7
|
-
if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)
|
|
8
|
-
|| /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4))) {
|
|
9
|
-
device = 'mobile';
|
|
10
|
-
}
|
|
11
|
-
return device;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
static setDebugEvent(data: string | object, type?: string) {
|
|
15
|
-
if (type === undefined) {
|
|
16
|
-
type = 'info'
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (process.env.DEBUG === "true") {
|
|
20
|
-
switch (type) {
|
|
21
|
-
case 'info':
|
|
22
|
-
console.info(data);
|
|
23
|
-
break
|
|
24
|
-
case 'error':
|
|
25
|
-
console.error(data);
|
|
26
|
-
break
|
|
27
|
-
case 'table':
|
|
28
|
-
console.table(data)
|
|
29
|
-
break
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
static processConfigData(videoUrl: string | defaultType) {
|
|
37
|
-
|
|
38
|
-
const regex = /^(http:\/\/|https:\/\/)(player\.vimeo\.com|vimeo\.com|youtu\.be|www\.youtube\.com)\/([\w\/]+)(\?.*)?$/;
|
|
39
|
-
|
|
40
|
-
let groupMatch;
|
|
41
|
-
let type = 'video';
|
|
42
|
-
let origin = 'video';
|
|
43
|
-
|
|
44
|
-
if ((groupMatch = regex.exec(<string>videoUrl)) !== null) {
|
|
45
|
-
groupMatch.forEach((match: string) => {
|
|
46
|
-
if (match !== undefined) {
|
|
47
|
-
if (match.includes('vimeo')) {
|
|
48
|
-
type = 'embedded';
|
|
49
|
-
origin = 'vimeo';
|
|
50
|
-
}
|
|
51
|
-
if (match.includes('youtube')) {
|
|
52
|
-
type = 'embedded';
|
|
53
|
-
origin = 'youtube';
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return {
|
|
60
|
-
type: type,
|
|
61
|
-
origin: origin
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
static getEmbeddedID = (url: string | defaultType) => {
|
|
66
|
-
const urlGroups = url.split('?')[0].split('/');
|
|
67
|
-
if (urlGroups.length > 4) {
|
|
68
|
-
return url.split('?')[0].split('/').slice(-2)[0];
|
|
69
|
-
}
|
|
70
|
-
return url.split('?')[0].split('/').slice(-1)[0];
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
static getEmbeddedHash = (url: string | defaultType) => {
|
|
75
|
-
const urlGroups = url.split('?')[0].split('/');
|
|
76
|
-
if (urlGroups.length > 4) {
|
|
77
|
-
return url.split('?')[0].split('/').slice(-1)[0];
|
|
78
|
-
}
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
static isValidHttpUrl(string: string | defaultType) {
|
|
83
|
-
let url;
|
|
84
|
-
|
|
85
|
-
if (typeof string === 'object') {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
try {
|
|
90
|
-
url = new URL(string);
|
|
91
|
-
} catch (_) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
return url.protocol === "http:" || url.protocol === "https:";
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
static checkIsHls(url : string): boolean {
|
|
98
|
-
const extensions = [
|
|
99
|
-
'm3u8'
|
|
100
|
-
]
|
|
101
|
-
|
|
102
|
-
let response = false;
|
|
103
|
-
|
|
104
|
-
extensions.forEach(item => {
|
|
105
|
-
if (url.includes(item)) {
|
|
106
|
-
response = true;
|
|
107
|
-
}
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
return response;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
static getVideoOrientation(width: number, height: number) {
|
|
114
|
-
if (width > height) {
|
|
115
|
-
return 'landscape';
|
|
116
|
-
} else {
|
|
117
|
-
return 'portrait'
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
static getPlayerStringType(type: string|number)
|
|
122
|
-
{
|
|
123
|
-
let response = null;
|
|
124
|
-
|
|
125
|
-
switch (type) {
|
|
126
|
-
case "1":
|
|
127
|
-
response = 'portrait'
|
|
128
|
-
break
|
|
129
|
-
case "2":
|
|
130
|
-
response = 'landscape'
|
|
131
|
-
break
|
|
132
|
-
case 1:
|
|
133
|
-
response = 'portrait'
|
|
134
|
-
break
|
|
135
|
-
case 2:
|
|
136
|
-
response = 'landscape'
|
|
137
|
-
break
|
|
138
|
-
case 'portrait':
|
|
139
|
-
response = 'portrait'
|
|
140
|
-
break
|
|
141
|
-
case 'landscape':
|
|
142
|
-
response = 'landscape'
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return response;
|
|
146
|
-
}
|
|
147
|
-
}
|