1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge branch 'master' into osd-tweak

This commit is contained in:
dkanada 2020-11-21 22:15:49 +09:00 committed by GitHub
commit 36344af64f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
291 changed files with 6833 additions and 6332 deletions

View file

@ -1,22 +1,26 @@
import playbackManager from 'playbackManager';
import dom from 'dom';
import inputManager from 'inputManager';
import mouseManager from 'mouseManager';
import datetime from 'datetime';
import itemHelper from 'itemHelper';
import mediaInfo from 'mediaInfo';
import focusManager from 'focusManager';
import events from 'events';
import browser from 'browser';
import globalize from 'globalize';
import appHost from 'apphost';
import layoutManager from 'layoutManager';
import * as userSettings from 'userSettings';
import keyboardnavigation from 'keyboardnavigation';
import 'scrollStyles';
import 'emby-slider';
import 'paper-icon-button-light';
import 'css!assets/css/videoosd';
import { playbackManager } from '../../../components/playback/playbackmanager';
import dom from '../../../scripts/dom';
import inputManager from '../../../scripts/inputManager';
import mouseManager from '../../../scripts/mouseManager';
import datetime from '../../../scripts/datetime';
import itemHelper from '../../../components/itemHelper';
import mediaInfo from '../../../components/mediainfo/mediainfo';
import focusManager from '../../../components/focusManager';
import { Events } from 'jellyfin-apiclient';
import browser from '../../../scripts/browser';
import globalize from '../../../scripts/globalize';
import { appHost } from '../../../components/apphost';
import layoutManager from '../../../components/layoutManager';
import * as userSettings from '../../../scripts/settings/userSettings';
import keyboardnavigation from '../../../scripts/keyboardNavigation';
import '../../../assets/css/scrollstyles.css';
import '../../../elements/emby-slider/emby-slider';
import '../../../elements/emby-button/paper-icon-button-light';
import '../../../assets/css/videoosd.css';
import ServerConnections from '../../../components/ServerConnections';
import shell from '../../../scripts/shell';
import SubtitleSync from '../../../components/subtitlesync/subtitlesync';
import { appRouter } from '../../../components/appRouter';
/* eslint-disable indent */
@ -73,7 +77,7 @@ import 'css!assets/css/videoosd';
function getDisplayItem(item) {
if (item.Type === 'TvChannel') {
const apiClient = window.connectionManager.getApiClient(item.ServerId);
const apiClient = ServerConnections.getApiClient(item.ServerId);
return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) {
return {
originalItem: refreshedItem,
@ -97,9 +101,9 @@ import 'css!assets/css/videoosd';
return void view.querySelector('.btnRecord').classList.add('hide');
}
window.connectionManager.getApiClient(item.ServerId).getCurrentUser().then(function (user) {
ServerConnections.getApiClient(item.ServerId).getCurrentUser().then(function (user) {
if (user.Policy.EnableLiveTvManagement) {
import('recordingButton').then(({default: RecordingButton}) => {
import('../../../components/recordingcreator/recordingbutton').then(({default: RecordingButton}) => {
if (recordingButtonManager) {
return void recordingButtonManager.refreshItem(item);
}
@ -190,7 +194,7 @@ import 'css!assets/css/videoosd';
currentItem = item;
if (!item) {
updateRecordingButton(null);
Emby.Page.setTitle('');
appRouter.setTitle('');
nowPlayingVolumeSlider.disabled = true;
nowPlayingPositionSlider.disabled = true;
btnFastForward.disabled = true;
@ -238,7 +242,7 @@ import 'css!assets/css/videoosd';
itemName = parentName || '';
}
Emby.Page.setTitle(itemName);
appRouter.setTitle(itemName);
const documentTitle = parentName || (item ? item.Name : null);
@ -510,7 +514,7 @@ import 'css!assets/css/videoosd';
if (state.NextMediaType !== 'Video') {
view.removeEventListener('viewbeforehide', onViewHideStopPlayback);
Emby.Page.back();
appRouter.back();
}
}
@ -540,16 +544,16 @@ import 'css!assets/css/videoosd';
onStateChanged.call(player, {
type: 'init'
}, state);
events.on(player, 'playbackstart', onPlaybackStart);
events.on(player, 'playbackstop', onPlaybackStopped);
events.on(player, 'volumechange', onVolumeChanged);
events.on(player, 'pause', onPlayPauseStateChanged);
events.on(player, 'unpause', onPlayPauseStateChanged);
events.on(player, 'timeupdate', onTimeUpdate);
events.on(player, 'fullscreenchange', updateFullscreenIcon);
events.on(player, 'mediastreamschange', onMediaStreamsChanged);
events.on(player, 'beginFetch', onBeginFetch);
events.on(player, 'endFetch', onEndFetch);
Events.on(player, 'playbackstart', onPlaybackStart);
Events.on(player, 'playbackstop', onPlaybackStopped);
Events.on(player, 'volumechange', onVolumeChanged);
Events.on(player, 'pause', onPlayPauseStateChanged);
Events.on(player, 'unpause', onPlayPauseStateChanged);
Events.on(player, 'timeupdate', onTimeUpdate);
Events.on(player, 'fullscreenchange', updateFullscreenIcon);
Events.on(player, 'mediastreamschange', onMediaStreamsChanged);
Events.on(player, 'beginFetch', onBeginFetch);
Events.on(player, 'endFetch', onEndFetch);
resetUpNextDialog();
if (player.isFetching) {
@ -564,14 +568,14 @@ import 'css!assets/css/videoosd';
const player = currentPlayer;
if (player) {
events.off(player, 'playbackstart', onPlaybackStart);
events.off(player, 'playbackstop', onPlaybackStopped);
events.off(player, 'volumechange', onVolumeChanged);
events.off(player, 'pause', onPlayPauseStateChanged);
events.off(player, 'unpause', onPlayPauseStateChanged);
events.off(player, 'timeupdate', onTimeUpdate);
events.off(player, 'fullscreenchange', updateFullscreenIcon);
events.off(player, 'mediastreamschange', onMediaStreamsChanged);
Events.off(player, 'playbackstart', onPlaybackStart);
Events.off(player, 'playbackstop', onPlaybackStopped);
Events.off(player, 'volumechange', onVolumeChanged);
Events.off(player, 'pause', onPlayPauseStateChanged);
Events.off(player, 'unpause', onPlayPauseStateChanged);
Events.off(player, 'timeupdate', onTimeUpdate);
Events.off(player, 'fullscreenchange', updateFullscreenIcon);
Events.off(player, 'mediastreamschange', onMediaStreamsChanged);
currentPlayer = null;
}
}
@ -613,7 +617,7 @@ import 'css!assets/css/videoosd';
}
function showComingUpNext(player) {
import('upNextDialog').then(({default: UpNextDialog}) => {
import('../../../components/upnextdialog/upnextdialog').then(({default: UpNextDialog}) => {
if (!(currentVisibleMenu || currentUpNextDialog)) {
currentVisibleMenu = 'upnext';
comingUpNextDisplayed = true;
@ -623,7 +627,7 @@ import 'css!assets/css/videoosd';
player: player,
nextItem: nextItem
});
events.on(currentUpNextDialog, 'hide', onUpNextHidden);
Events.on(currentUpNextDialog, 'hide', onUpNextHidden);
}, onUpNextHidden);
}
});
@ -864,7 +868,7 @@ import 'css!assets/css/videoosd';
function onSettingsButtonClick(e) {
const btn = this;
import('playerSettingsMenu').then(({default: playerSettingsMenu}) => {
import('../../../components/playback/playersettingsmenu').then((playerSettingsMenu) => {
const player = currentPlayer;
if (player) {
@ -901,7 +905,7 @@ import 'css!assets/css/videoosd';
}
function toggleStats() {
import('playerStats').then(({default: PlayerStats}) => {
import('../../../components/playerstats/playerstats').then(({default: PlayerStats}) => {
const player = currentPlayer;
if (player) {
@ -941,7 +945,7 @@ import 'css!assets/css/videoosd';
});
const positionTo = this;
import('actionsheet').then(({default: actionsheet}) => {
import('../../../components/actionSheet/actionSheet').then(({default: actionsheet}) => {
actionsheet.show({
items: menuItems,
title: globalize.translate('Audio'),
@ -987,7 +991,7 @@ import 'css!assets/css/videoosd';
});
const positionTo = this;
import('actionsheet').then(({default: actionsheet}) => {
import('../../../components/actionSheet/actionSheet').then(({default: actionsheet}) => {
actionsheet.show({
title: globalize.translate('Subtitles'),
items: menuItems,
@ -1009,14 +1013,12 @@ import 'css!assets/css/videoosd';
}
function toggleSubtitleSync(action) {
import('subtitleSync').then(({default: SubtitleSync}) => {
const player = currentPlayer;
if (subtitleSyncOverlay) {
subtitleSyncOverlay.toggle(action);
} else if (player) {
subtitleSyncOverlay = new SubtitleSync(player);
}
});
const player = currentPlayer;
if (subtitleSyncOverlay) {
subtitleSyncOverlay.toggle(action);
} else if (player) {
subtitleSyncOverlay = new SubtitleSync(player);
}
}
function destroySubtitleSync() {
@ -1240,9 +1242,7 @@ import 'css!assets/css/videoosd';
let playPauseClickTimeout;
function onViewHideStopPlayback() {
if (playbackManager.isPlayingVideo()) {
import('shell').then(({default: shell}) => {
shell.disableFullscreen();
});
shell.disableFullscreen();
clearTimeout(playPauseClickTimeout);
const player = currentPlayer;
@ -1260,9 +1260,7 @@ import 'css!assets/css/videoosd';
}
}
import('shell').then(({default: shell}) => {
shell.enableFullscreen();
});
shell.enableFullscreen();
let currentPlayer;
let comingUpNextDisplayed;
@ -1307,11 +1305,11 @@ import 'css!assets/css/videoosd';
view.addEventListener('viewbeforeshow', function (e) {
headerElement.classList.add('osdHeader');
Emby.Page.setTransparency('full');
appRouter.setTransparency('full');
});
view.addEventListener('viewshow', function (e) {
try {
events.on(playbackManager, 'playerchange', onPlayerChange);
Events.on(playbackManager, 'playerchange', onPlayerChange);
bindToPlayer(playbackManager.getCurrentPlayer());
/* eslint-disable-next-line compat/compat */
dom.addEventListener(document, window.PointerEvent ? 'pointermove' : 'mousemove', onPointerMove, {
@ -1349,9 +1347,7 @@ import 'css!assets/css/videoosd';
passive: true
});
} catch (e) {
import('appRouter').then(({default: appRouter}) => {
appRouter.goHome();
});
appRouter.goHome();
}
});
view.addEventListener('viewbeforehide', function () {
@ -1396,7 +1392,7 @@ import 'css!assets/css/videoosd';
passive: true
});
inputManager.off(window, onInputCommand);
events.off(playbackManager, 'playerchange', onPlayerChange);
Events.off(playbackManager, 'playerchange', onPlayerChange);
releaseCurrentPlayer();
});
view.querySelector('.btnFullscreen').addEventListener('click', function () {
@ -1527,7 +1523,7 @@ import 'css!assets/css/videoosd';
const item = currentItem;
if (item && item.Chapters && item.Chapters.length && item.Chapters[0].ImageTag) {
const html = getChapterBubbleHtml(window.connectionManager.getApiClient(item.ServerId), item, item.Chapters, ticks);
const html = getChapterBubbleHtml(ServerConnections.getApiClient(item.ServerId), item, item.Chapters, ticks);
if (html) {
return html;
@ -1560,15 +1556,15 @@ import 'css!assets/css/videoosd';
if (browser.touch) {
(function () {
import('touchHelper').then(({default: TouchHelper}) => {
import('../../../scripts/touchHelper').then(({default: TouchHelper}) => {
self.touchHelper = new TouchHelper(view, {
swipeYThreshold: 30,
triggerOnMove: true,
preventDefaultOnMove: true,
ignoreTagNames: ['BUTTON', 'INPUT', 'TEXTAREA']
});
events.on(self.touchHelper, 'swipeup', onVerticalSwipe);
events.on(self.touchHelper, 'swipedown', onVerticalSwipe);
Events.on(self.touchHelper, 'swipeup', onVerticalSwipe);
Events.on(self.touchHelper, 'swipedown', onVerticalSwipe);
});
})();
}