diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 7421761d13..eef791603c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -14,12 +14,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.4.208", - "_release": "1.4.208", + "version": "1.4.209", + "_release": "1.4.209", "_resolution": { "type": "version", - "tag": "1.4.208", - "commit": "e7d9ca4dc8083c9dc63d5add4d73f0179369461a" + "tag": "1.4.209", + "commit": "e83ed420a7c59b3d413329b046103e001ed784e5" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.1", diff --git a/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js b/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js index eadfaf096a..0792b1229f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js +++ b/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js @@ -5,6 +5,10 @@ define(['browser'], function (browser) { return !!(v.canPlayType && v.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, '')); } + function canPlayH265() { + return false; + } + var _supportsTextTracks; function supportsTextTracks() { @@ -257,7 +261,7 @@ define(['browser'], function (browser) { // Only put mp3 first if mkv support is there // Otherwise with HLS and mp3 audio we're seeing some browsers - if (videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, '') || isEdgeUniversal()) { + if (videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, '') || isEdgeUniversal() || browser.tizen) { // safari is lying if (!browser.safari) { videoAudioCodecs.push('ac3'); @@ -293,20 +297,29 @@ define(['browser'], function (browser) { //videoAudioCodecs.push('truehd'); } + var mp4VideoCodecs = []; if (canPlayH264()) { + mp4VideoCodecs.push('h264'); + } + if (canPlayH265()) { + mp4VideoCodecs.push('h265'); + mp4VideoCodecs.push('hevc'); + } + + if (mp4VideoCodecs.length) { profile.DirectPlayProfiles.push({ Container: 'mp4,m4v', Type: 'Video', - VideoCodec: 'h264', + VideoCodec: mp4VideoCodecs.join(','), AudioCodec: videoAudioCodecs.join(',') }); } - if (canPlayMkv) { + if (canPlayMkv && mp4VideoCodecs.length) { profile.DirectPlayProfiles.push({ Container: 'mkv', Type: 'Video', - VideoCodec: 'h264', + VideoCodec: mp4VideoCodecs.join(','), AudioCodec: videoAudioCodecs.join(',') }); diff --git a/dashboard-ui/bower_components/emby-webcomponents/formdialog.css b/dashboard-ui/bower_components/emby-webcomponents/formdialog.css index 5945e385d8..019762a94d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/formdialog.css +++ b/dashboard-ui/bower_components/emby-webcomponents/formdialog.css @@ -4,10 +4,10 @@ } .formDialogHeader { - padding: .7em .5em; + padding: .8em .5em; display: flex; align-items: center; - background-color: #101010; + background-color: #222326; flex-shrink: 0; } diff --git a/dashboard-ui/bower_components/emby-webcomponents/scroller/smoothscroller.js b/dashboard-ui/bower_components/emby-webcomponents/scroller/smoothscroller.js index 6825339a41..91c7e7423f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/scroller/smoothscroller.js +++ b/dashboard-ui/bower_components/emby-webcomponents/scroller/smoothscroller.js @@ -110,11 +110,7 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l // native scroll is a must with touch input // also use native scroll when scrolling vertically in desktop mode - excluding horizontal because the mouse wheel support is choppy at the moment // in cases with firefox, if the smooth scroll api is supported then use that because their implementation is very good - if (browser.operaTv) { - // no scrolling supported - options.enableNativeScroll = false; - } - else if (isSmoothScrollSupported && browser.firefox) { + if (isSmoothScrollSupported && browser.firefox) { // native smooth scroll options.enableNativeScroll = true; } diff --git a/dashboard-ui/bower_components/iron-icon/.bower.json b/dashboard-ui/bower_components/iron-icon/.bower.json index f76855b27a..87e3dad5d3 100644 --- a/dashboard-ui/bower_components/iron-icon/.bower.json +++ b/dashboard-ui/bower_components/iron-icon/.bower.json @@ -32,14 +32,14 @@ "web-component-tester": "^4.0.0", "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, - "homepage": "https://github.com/PolymerElements/iron-icon", + "homepage": "https://github.com/polymerelements/iron-icon", "_release": "1.0.10", "_resolution": { "type": "version", "tag": "v1.0.10", "commit": "f4e146da4982ff96bb25db85290c09e8de4ec734" }, - "_source": "git://github.com/PolymerElements/iron-icon.git", + "_source": "git://github.com/polymerelements/iron-icon.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-icon" + "_originalSource": "polymerelements/iron-icon" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-meta/.bower.json b/dashboard-ui/bower_components/iron-meta/.bower.json index db341575ee..5e37c2a3e4 100644 --- a/dashboard-ui/bower_components/iron-meta/.bower.json +++ b/dashboard-ui/bower_components/iron-meta/.bower.json @@ -27,14 +27,14 @@ }, "main": "iron-meta.html", "ignore": [], - "homepage": "https://github.com/PolymerElements/iron-meta", + "homepage": "https://github.com/polymerelements/iron-meta", "_release": "1.1.2", "_resolution": { "type": "version", "tag": "v1.1.2", "commit": "bae96531b63ea6d4ce982f5592248aea849c0f5a" }, - "_source": "git://github.com/PolymerElements/iron-meta.git", + "_source": "git://github.com/polymerelements/iron-meta.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-meta" + "_originalSource": "polymerelements/iron-meta" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/polymer/.bower.json b/dashboard-ui/bower_components/polymer/.bower.json index 25eb84c037..a96f0f050e 100644 --- a/dashboard-ui/bower_components/polymer/.bower.json +++ b/dashboard-ui/bower_components/polymer/.bower.json @@ -32,14 +32,14 @@ "iron-component-page": "polymerElements/iron-component-page#^1.1.6" }, "private": true, - "homepage": "https://github.com/polymer/polymer", + "homepage": "https://github.com/Polymer/polymer", "_release": "1.6.1", "_resolution": { "type": "version", "tag": "v1.6.1", "commit": "1f197d9d7874b1e5808b2a5c26f34446a7d912fc" }, - "_source": "git://github.com/polymer/polymer.git", + "_source": "git://github.com/Polymer/polymer.git", "_target": "^1.1.0", - "_originalSource": "polymer/polymer" + "_originalSource": "Polymer/polymer" } \ No newline at end of file diff --git a/dashboard-ui/components/apphost.js b/dashboard-ui/components/apphost.js index 8c8d73d234..31f73e91fe 100644 --- a/dashboard-ui/components/apphost.js +++ b/dashboard-ui/components/apphost.js @@ -99,6 +99,60 @@ define(['appStorage', 'browser'], function (appStorage, browser) { window.msSpeechRecognition; } + function supportsFullscreen() { + + if (browser.tv) { + return false; + }; + + var element = document.documentElement; + + return element.requestFullscreen || + element.mozRequestFullScreen || + element.webkitRequestFullscreen || + element.msRequestFullscreen; + } + + var supportedFeatures = function () { + + var features = [ + 'filedownload', + 'sharing', + 'externalpremium' + ]; + + if (browser.operaTv || browser.tizen || browser.web0s) { + features.push('exit'); + } else { + features.push('exitmenu'); + } + + if (!browser.operaTv) { + features.push('externallinks'); + } + + if (supportsVoiceInput()) { + features.push('voiceinput'); + } + + var userAgent = navigator.userAgent.toLowerCase(); + + if (!browser.mobile || userAgent.indexOf('msapphost') != -1) { + features.push('htmlaudioautoplay'); + features.push('htmlvideoautoplay'); + } + + if (window.SyncRegistered) { + //features.push('sync'); + } + + if (supportsFullscreen()) { + features.push('fullscreen'); + } + return features; + }(); + + var appInfo; var version = window.dashboardVersion || '3.0'; @@ -124,38 +178,7 @@ define(['appStorage', 'browser'], function (appStorage, browser) { }, supports: function (command) { - var features = [ - 'filedownload', - 'sharing', - 'externalpremium' - ]; - - if (browser.operaTv || browser.tizen || browser.web0s) { - features.push('exit'); - } else { - features.push('exitmenu'); - } - - if (!browser.operaTv) { - features.push('externallinks'); - } - - if (supportsVoiceInput()) { - features.push('voiceinput'); - } - - var userAgent = navigator.userAgent.toLowerCase(); - - if (!browser.mobile || userAgent.indexOf('msapphost') != -1) { - features.push('htmlaudioautoplay'); - features.push('htmlvideoautoplay'); - } - - if (window.SyncRegistered) { - //features.push('sync'); - } - - return features.indexOf(command.toLowerCase()) != -1; + return supportedFeatures.indexOf(command.toLowerCase()) != -1; }, unlockedFeatures: function () { diff --git a/dashboard-ui/livetvsettings.html b/dashboard-ui/livetvsettings.html index 9d6a9ba224..25bacc216a 100644 --- a/dashboard-ui/livetvsettings.html +++ b/dashboard-ui/livetvsettings.html @@ -33,7 +33,7 @@