From 8aaa2c7e472b70188f60e558c5d26a145e8b83da Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 20 Sep 2016 12:51:16 -0400 Subject: [PATCH] update recording dialogs --- .../emby-apiclient/.bower.json | 8 +- .../emby-apiclient/apiclient.js | 6 +- .../emby-apiclient/connectionmanager.js | 7 +- .../emby-webcomponents/.bower.json | 8 +- .../browserdeviceprofile.js | 9 +- .../emby-webcomponents/cardbuilder/card.css | 4 +- .../dialoghelper/dialoghelper.js | 4 + .../emby-toggle/emby-toggle.css | 51 ++- .../emby-toggle/emby-toggle.js | 2 +- .../emby-webcomponents/mediainfo/mediainfo.js | 20 +- .../recordingcreator/recordingcreator.css | 17 +- .../recordingcreator/recordingcreator.js | 259 +------------- .../recordingcreator.template.html | 58 +-- .../recordingcreator/recordingeditor.js | 94 ++--- .../recordingeditor.template.html | 23 +- .../recordingcreator/recordingfields.js | 37 +- .../recordingfields.template.html | 62 +++- .../emby-webcomponents/sharing/sharingmenu.js | 57 ++- .../LICENSE | 0 .../dist/css/social-share-kit.css | 7 + .../dist/fonts/social-share-kit.eot | Bin 0 -> 8660 bytes .../dist/fonts/social-share-kit.svg | 33 ++ .../dist/fonts/social-share-kit.ttf | Bin 0 -> 8456 bytes .../dist/css/social-share-kit.css | 7 - .../dist/fonts/social-share-kit.eot | Bin 8348 -> 0 bytes .../dist/fonts/social-share-kit.svg | 32 -- .../dist/fonts/social-share-kit.ttf | Bin 8144 -> 0 bytes .../dist/fonts/social-share-kit.woff | Bin 6420 -> 0 bytes .../dist/js/social-share-kit.js | 338 ------------------ .../dist/js/social-share-kit.min.js | 8 - .../emby-webcomponents/shortcuts.js | 13 +- .../emby-webcomponents/strings/ar.json | 2 + .../emby-webcomponents/strings/bg-BG.json | 2 + .../emby-webcomponents/strings/ca.json | 2 + .../emby-webcomponents/strings/cs.json | 2 + .../emby-webcomponents/strings/da.json | 2 + .../emby-webcomponents/strings/de.json | 2 + .../emby-webcomponents/strings/el.json | 2 + .../emby-webcomponents/strings/en-GB.json | 4 +- .../emby-webcomponents/strings/en-US.json | 4 +- .../emby-webcomponents/strings/es-AR.json | 2 + .../emby-webcomponents/strings/es-MX.json | 18 +- .../emby-webcomponents/strings/es.json | 2 + .../emby-webcomponents/strings/fi.json | 2 + .../emby-webcomponents/strings/fr-CA.json | 2 + .../emby-webcomponents/strings/fr.json | 2 + .../emby-webcomponents/strings/gsw.json | 2 + .../emby-webcomponents/strings/he.json | 2 + .../emby-webcomponents/strings/hr.json | 2 + .../emby-webcomponents/strings/hu.json | 2 + .../emby-webcomponents/strings/id.json | 2 + .../emby-webcomponents/strings/it.json | 2 + .../emby-webcomponents/strings/kk.json | 6 +- .../emby-webcomponents/strings/ko.json | 2 + .../emby-webcomponents/strings/ms.json | 2 + .../emby-webcomponents/strings/nb.json | 2 + .../emby-webcomponents/strings/nl.json | 2 + .../emby-webcomponents/strings/pl.json | 2 + .../emby-webcomponents/strings/pt-BR.json | 2 + .../emby-webcomponents/strings/pt-PT.json | 2 + .../emby-webcomponents/strings/ro.json | 2 + .../emby-webcomponents/strings/ru.json | 6 +- .../emby-webcomponents/strings/sk.json | 2 + .../emby-webcomponents/strings/sl-SI.json | 2 + .../emby-webcomponents/strings/sv.json | 2 + .../emby-webcomponents/strings/tr.json | 2 + .../emby-webcomponents/strings/uk.json | 2 + .../emby-webcomponents/strings/vi.json | 2 + .../emby-webcomponents/strings/zh-CN.json | 2 + .../emby-webcomponents/strings/zh-HK.json | 2 + .../emby-webcomponents/strings/zh-TW.json | 2 + .../bower_components/hls.js/.bower.json | 8 +- .../bower_components/hls.js/bower.json | 2 +- .../bower_components/hls.js/dist/hls.min.js | 10 +- .../bower_components/hls.js/package.json | 2 +- dashboard-ui/devices/ios/ios.css | 4 - dashboard-ui/itemdetails.html | 22 +- dashboard-ui/scripts/itemdetailpage.js | 77 ++-- 78 files changed, 432 insertions(+), 965 deletions(-) rename dashboard-ui/bower_components/emby-webcomponents/sharing/{social-share-kit-1.0.4 => social-share-kit-1.0.10}/LICENSE (100%) create mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/css/social-share-kit.css create mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.eot create mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.svg create mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.ttf delete mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/css/social-share-kit.css delete mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.eot delete mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.svg delete mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.ttf delete mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.woff delete mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/js/social-share-kit.js delete mode 100644 dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/js/social-share-kit.min.js diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json index e38c78981..11d527634 100644 --- a/dashboard-ui/bower_components/emby-apiclient/.bower.json +++ b/dashboard-ui/bower_components/emby-apiclient/.bower.json @@ -16,12 +16,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.1.82", - "_release": "1.1.82", + "version": "1.1.83", + "_release": "1.1.83", "_resolution": { "type": "version", - "tag": "1.1.82", - "commit": "3ce8ac9212de0ee709f2bf836b1897fac14c5db0" + "tag": "1.1.83", + "commit": "64d6582c85ba3ab677f81bdb9d535587b5de3c65" }, "_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git", "_target": "^1.1.51", diff --git a/dashboard-ui/bower_components/emby-apiclient/apiclient.js b/dashboard-ui/bower_components/emby-apiclient/apiclient.js index 179b6933a..9a56f8e1d 100644 --- a/dashboard-ui/bower_components/emby-apiclient/apiclient.js +++ b/dashboard-ui/bower_components/emby-apiclient/apiclient.js @@ -535,7 +535,11 @@ return; } - self.openWebSocket(); + try { + self.openWebSocket(); + } catch (err) { + console.log("Error opening web socket: " + err); + } }; function replaceAll(originalString, strReplace, strWith) { diff --git a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js index 55efe7ba2..fd93e1be2 100644 --- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js +++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js @@ -448,12 +448,9 @@ } if (options.enableWebSocket !== false) { - if (!apiClient.isWebSocketOpenOrConnecting() && apiClient.isWebSocketSupported()) { + console.log('calling apiClient.ensureWebSocket'); - console.log('calling apiClient.openWebSocket'); - - apiClient.openWebSocket(); - } + apiClient.ensureWebSocket(); } } diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 296428d13..7cc679328 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.255", - "_release": "1.4.255", + "version": "1.4.256", + "_release": "1.4.256", "_resolution": { "type": "version", - "tag": "1.4.255", - "commit": "24c4f512b1038c00015dee815b1c5472cafe5487" + "tag": "1.4.256", + "commit": "dbe988350fad1cbe359594a57be846a89ae764d4" }, "_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 d86a58869..fcbfbf403 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js +++ b/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js @@ -269,19 +269,20 @@ define(['browser'], function (browser) { } var mp3Added = false; - if ((canPlayMkv && options.enableMkvProgressive !== false) || (canPlayTs && options.enableMkvProgressive !== false)) { + if (canPlayMkv || canPlayTs) { if (supportsMp3VideoAudio) { mp3Added = true; videoAudioCodecs.push('mp3'); - hlsVideoAudioCodecs.push('mp3'); } } if (videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.2"').replace(/no/, '')) { videoAudioCodecs.push('aac'); hlsVideoAudioCodecs.push('aac'); } - if (!mp3Added && supportsMp3VideoAudio) { - videoAudioCodecs.push('mp3'); + if (supportsMp3VideoAudio) { + if (!mp3Added) { + videoAudioCodecs.push('mp3'); + } hlsVideoAudioCodecs.push('mp3'); } diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css index 9523c94d0..fcf679001 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css +++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/card.css @@ -85,7 +85,7 @@ @media all and (min-width: 600px) { .cardBox-mobile { - margin: 3px; + margin: 2px; } } @@ -147,7 +147,7 @@ .cardImageContainer { /* Should be 0 with visualCardBox, but not really noticeable */ - border-radius: 2px; + border-radius: 1px; } } diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js index e23b24ce7..f2b5ef304 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js @@ -117,6 +117,10 @@ addBackdropOverlay(dlg); dlg.classList.add('opened'); + dlg.dispatchEvent(new CustomEvent('open', { + bubbles: false, + cancelable: false + })); if (dlg.getAttribute('data-lockscroll') == 'true' && !document.body.classList.contains('noScroll')) { document.body.classList.add('noScroll'); diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.css b/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.css index 387197c15..f13b39c29 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.css +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.css @@ -2,10 +2,10 @@ position: relative; z-index: 1; vertical-align: middle; - display: inline-block; + display: inline-flex; + align-items: center; box-sizing: border-box; width: 100%; - height: 1.72em; margin: 0; padding: 0; overflow: visible; @@ -14,7 +14,8 @@ -moz-user-select: none; -ms-user-select: none; user-select: none; - padding-left: 2em; + flex-direction: row-reverse; + justify-content: flex-end; } .toggleContainer { @@ -22,11 +23,6 @@ } .mdl-switch__input { - line-height: 1.72em; -} - -.mdl-switch__input { - position: absolute; width: 0; height: 0; margin: 0; @@ -39,26 +35,27 @@ border: none; } +.mdl-switch__trackContainer { + position: relative; + width: 2.9em; +} + .mdl-switch__track { background: rgba(255,255,255, 0.26); - position: absolute; - left: 0; - top: .36em; height: 1em; - width: 2.58em; border-radius: 1em; cursor: pointer; } -.mdl-switch__input:checked + .mdl-switch__label + .mdl-switch__track { +.mdl-switch__input:checked + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__track { background: rgba(82,181,75, 0.5); } -.mdl-switch__input.red:checked + .mdl-switch__label + .mdl-switch__track { +.mdl-switch__input.red:checked + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__track { background: rgba(204,51,51, 0.5); } -.mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__track { +.mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__track { background: rgba(0,0,0, 0.12); cursor: auto; } @@ -67,7 +64,7 @@ background: #999; position: absolute; left: 0; - top: .15em; + top: -.25em; height: 1.44em; width: 1.44em; border-radius: 50%; @@ -76,21 +73,23 @@ transition-duration: 0.28s; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-property: left; + display: flex; + align-items: center; + justify-content: center; } -.mdl-switch__input:checked + .mdl-switch__label + .mdl-switch__track + .mdl-switch__thumb { +.mdl-switch__input:checked + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { background: rgb(82,181,75); - left: 1.146em; + left: 1.466em; box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 8px 0 rgba(0, 0, 0, 0.12); } -.mdl-switch__input.red:checked + .mdl-switch__label + .mdl-switch__track + .mdl-switch__thumb { +.mdl-switch__input.red:checked + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { background: rgb(204,51,51); - left: 1.146em; box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 8px 0 rgba(0, 0, 0, 0.12); } -.mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__track + .mdl-switch__thumb { +.mdl-switch__input[disabled] + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { background: rgb(189,189,189); cursor: auto; } @@ -109,29 +108,27 @@ background-color: transparent; } -.mdl-switch__input:focus + .mdl-switch__label + .mdl-switch__track + .mdl-switch__thumb > .mdl-switch__focus-helper { +.mdl-switch__input:focus + .mdl-switch__label + .mdl-switch__trackContainer .mdl-switch__focus-helper { box-shadow: 0 0 0px 20px rgba(255,255,255, 0.26); background-color: rgba(255,255,255, 0.26); } -.mdl-switch__input:checked:focus + .mdl-switch__label + .mdl-switch__track + .mdl-switch__thumb > .mdl-switch__focus-helper { +.mdl-switch__input:checked:focus + .mdl-switch__label + .mdl-switch__trackContainer .mdl-switch__focus-helper { box-shadow: 0 0 0px 20px rgba(82,181,75, 0.26); background-color: rgba(82,181,75, 0.26); } -.mdl-switch__input.red:checked:focus + .mdl-switch__label + .mdl-switch__track + .mdl-switch__thumb > .mdl-switch__focus-helper { +.mdl-switch__input.red:checked:focus + .mdl-switch__label + .mdl-switch__trackContainer .mdl-switch__focus-helper { box-shadow: 0 0 0px 20px rgba(204,51,51, 0.26); background-color: rgba(204,51,51, 0.26); } .mdl-switch__label { - position: relative; cursor: pointer; - line-height: 1.72em; margin: 0; - left: 1.52em; display: inline-flex; align-items: center; + margin-left: .7em; } .mdl-switch__input[disabled] .mdl-switch__label { diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.js b/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.js index 3dab35b1b..17898539d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-toggle/emby-toggle.js @@ -34,7 +34,7 @@ var labelTextElement = labelElement.querySelector('span'); - labelElement.insertAdjacentHTML('beforeend', '
'); + labelElement.insertAdjacentHTML('beforeend', '
'); labelTextElement.classList.add('toggleButtonLabel'); labelTextElement.classList.add('mdl-switch__label'); diff --git a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js index af402f411..b15944e17 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js +++ b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js @@ -40,15 +40,17 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', ' } } - if (item.SeriesTimerId) { - miscInfo.push({ - html: '' - }); - } - else if (item.TimerId) { - miscInfo.push({ - html: '' - }); + if (options.timerIndicator !== false) { + if (item.SeriesTimerId) { + miscInfo.push({ + html: '' + }); + } + else if (item.TimerId) { + miscInfo.push({ + html: '' + }); + } } html += miscInfo.map(function (m) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.css b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.css index ba9843e3d..f1cc9eedc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.css +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.css @@ -2,10 +2,6 @@ color: #cc3333; } -.layout-tv .btnHeaderSave { - display: none; -} - .recordingDialog-imageContainer { flex-shrink: 0; padding: 1em 1em 1em 0; @@ -16,10 +12,6 @@ max-width: 100%; } -.btnPlay-notplayable { - display: none !important; -} - .recordingDialog-itemName { margin-top: .5em; } @@ -33,11 +25,4 @@ .programDialog-itemName { display: none; } -} - -@media all and (max-height: 1400px) { - - .layout-tv .recordingDialog .itemOverview { - display: none; - } -} +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js index 9c489fad4..eb76c03cb 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.js @@ -1,216 +1,29 @@ -define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'datetime', 'imageLoader', 'shell', 'emby-checkbox', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, datetime, imageLoader, shell) { +define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'datetime', 'imageLoader', 'recordingFields', 'emby-checkbox', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, datetime, imageLoader, recordingFields) { var currentProgramId; var currentServerId; var currentDialog; - var recordingCreated = false; var closeAction; + var currentRecordingFields; - function hideSeriesRecordingFields(context) { + function closeDialog() { - slideUpToHide(context.querySelector('.seriesFields')); - context.querySelector('.btnSubmit').classList.remove('hide'); - context.querySelector('.supporterContainer').classList.add('hide'); - } - - function closeDialog(isSubmitted) { - - recordingCreated = isSubmitted; dialogHelper.close(currentDialog); } - function onSubmit(e) { - - loading.show(); - - var form = this; - - var apiClient = connectionManager.getApiClient(currentServerId); - - apiClient.getNewLiveTvTimerDefaults({ programId: currentProgramId }).then(function (item) { - - item.RecordNewOnly = form.querySelector('#chkNewOnly').checked; - item.RecordAnyChannel = form.querySelector('#chkAllChannels').checked; - item.RecordAnyTime = form.querySelector('#chkAnyTime').checked; - - if (form.querySelector('#chkRecordSeries').checked) { - - apiClient.createLiveTvSeriesTimer(item).then(function () { - - loading.hide(); - closeDialog(true); - }); - - } else { - apiClient.createLiveTvTimer(item).then(function () { - - loading.hide(); - closeDialog(true); - }); - } - }); - - // Disable default form submission - e.preventDefault(); - return false; - } - - function getRegistration(apiClient, programId, feature) { - - loading.show(); - - return apiClient.getJSON(apiClient.getUrl('LiveTv/Registration', { - - ProgramId: programId, - Feature: feature - - })).then(function (result) { - - loading.hide(); - return result; - - }, function () { - - loading.hide(); - - return { - TrialVersion: true, - IsValid: true, - IsRegistered: false - }; - }); - } - - function setPlayButtonVisible(context, visible) { - - var btnPlay = context.querySelector('.btnPlay'); - - if (!visible) { - btnPlay.classList.add('hide'); - } else { - btnPlay.classList.remove('hide'); - } - } - - function showSeriesRecordingFields(context, apiClient) { - - slideDownToShow(context.querySelector('.seriesFields')); - - getRegistration(apiClient, currentProgramId, 'seriesrecordings').then(function (regInfo) { - - if (regInfo.IsRegistered) { - context.querySelector('.btnSubmit').classList.remove('hide'); - setPlayButtonVisible(context, true); - context.querySelector('.supporterContainer').classList.add('hide'); - - } else { - - context.querySelector('.supporterContainerText').innerHTML = globalize.translate('sharedcomponents#MessageActiveSubscriptionRequiredSeriesRecordings'); - context.querySelector('.supporterContainer').classList.remove('hide'); - context.querySelector('.btnSubmit').classList.add('hide'); - setPlayButtonVisible(context, false); - } - }); - } - - function showSingleRecordingFields(context, apiClient) { - - getRegistration(apiClient, currentProgramId, 'dvr').then(function (regInfo) { - - if (regInfo.IsRegistered) { - context.querySelector('.btnSubmit').classList.remove('hide'); - setPlayButtonVisible(context, true); - context.querySelector('.supporterContainer').classList.add('hide'); - - } else { - - context.querySelector('.supporterContainerText').innerHTML = globalize.translate('sharedcomponents#DvrSubscriptionRequired'); - context.querySelector('.supporterContainer').classList.remove('hide'); - context.querySelector('.btnSubmit').classList.add('hide'); - setPlayButtonVisible(context, false); - } - }); - } - - function slideDownToShow(elem) { - - if (!elem.classList.contains('hide')) { - return; - } - - elem.classList.remove('hide'); - - elem.style.overflowY = 'hidden'; - - requestAnimationFrame(function () { - - elem.animate([{ - height: 0 - }, { - height: elem.offsetHeight + 'px' - - }], { duration: 400, easing: 'ease' }).onfinish = function () { - elem.classList.remove('hide'); - }; - }); - } - - function slideUpToHide(elem) { - - if (elem.classList.contains('hide')) { - return; - } - - elem.style.overflowY = 'hidden'; - - requestAnimationFrame(function () { - - elem.animate([{ - height: elem.offsetHeight + 'px' - }, { - height: 0 - }], { duration: 400, easing: 'ease' }).onfinish = function () { - elem.classList.add('hide'); - }; - }); - } - function init(context) { - var apiClient = connectionManager.getApiClient(currentServerId); - - context.querySelector('#chkRecordSeries').addEventListener('change', function () { - - if (this.checked) { - showSeriesRecordingFields(context, apiClient); - } else { - hideSeriesRecordingFields(context); - showSingleRecordingFields(context, apiClient); - } - }); - context.querySelector('.btnPlay').addEventListener('click', function () { closeAction = 'play'; - closeDialog(false); + closeDialog(); }); context.querySelector('.btnCancel').addEventListener('click', function () { closeAction = null; - closeDialog(false); + closeDialog(); }); - - context.querySelector('form', context).addEventListener('submit', onSubmit); - - var supporterButtons = context.querySelectorAll('.btnSupporter'); - for (var i = 0, length = supporterButtons.length; i < length; i++) { - if (appHost.supports('externalpremium')) { - supporterButtons[i].classList.remove('hide'); - } else { - supporterButtons[i].classList.add('hide'); - } - } } function getImageUrl(item, apiClient, imageHeight) { @@ -261,56 +74,22 @@ context.querySelector('.itemGenres').innerHTML = (program.Genres || []).join(' / '); context.querySelector('.itemOverview').innerHTML = program.Overview || ''; - var btnPlay = context.querySelector('.btnPlay'); + var formDialogFooter = context.querySelector('.formDialogFooter'); var now = new Date(); if (now >= datetime.parseISO8601Date(program.StartDate, true) && now < datetime.parseISO8601Date(program.EndDate, true)) { - btnPlay.classList.remove('btnPlay-notplayable'); + formDialogFooter.classList.remove('hide'); } else { - btnPlay.classList.add('btnPlay-notplayable'); + formDialogFooter.classList.add('hide'); } context.querySelector('.itemMiscInfoPrimary').innerHTML = mediaInfo.getPrimaryMediaInfoHtml(program); - context.querySelector('.itemMiscInfoSecondary').innerHTML = mediaInfo.getSecondaryMediaInfoHtml(program); - - context.querySelector('#chkNewOnly').checked = defaultTimer.RecordNewOnly; - context.querySelector('#chkAllChannels').checked = defaultTimer.RecordAnyChannel; - context.querySelector('#chkAnyTime').checked = defaultTimer.RecordAnyTime; - - if (program.IsSeries) { - context.querySelector('#eligibleForSeriesFields').classList.remove('hide'); - } else { - context.querySelector('#eligibleForSeriesFields').classList.add('hide'); - } - - showConvertRecordingsUnlockMessage(context, apiClient); + context.querySelector('.itemMiscInfoSecondary').innerHTML = mediaInfo.getSecondaryMediaInfoHtml(program, { + timerIndicator: false + }); loading.hide(); } - function showConvertRecordingsUnlockMessage(context, apiClient) { - - apiClient.getPluginSecurityInfo().then(function (regInfo) { - - if (regInfo.IsMBSupporter) { - context.querySelector('.convertRecordingsContainer').classList.add('hide'); - } else { - context.querySelector('.convertRecordingsContainer').classList.remove('hide'); - } - - }, function () { - - context.querySelector('.convertRecordingsContainer').classList.remove('hide'); - }); - } - - function onSupporterButtonClick() { - if (appHost.supports('externalpremium')) { - shell.openUrl('https://emby.media/premiere'); - } else { - - } - } - function reload(context, programId) { loading.show(); @@ -350,7 +129,6 @@ return new Promise(function (resolve, reject) { - recordingCreated = false; currentProgramId = itemId; currentServerId = serverId; closeAction = null; @@ -387,10 +165,7 @@ executeCloseAction(closeAction, currentProgramId, currentServerId); - if (recordingCreated) { - require(['toast'], function (toast) { - toast(globalize.translate('sharedcomponents#RecordingScheduled')); - }); + if (currentRecordingFields && currentRecordingFields.hasChanged()) { resolve(); } else { reject(); @@ -401,14 +176,16 @@ scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); } - dlg.querySelector('.btnSupporterForConverting').addEventListener('click', onSupporterButtonClick); - - hideSeriesRecordingFields(dlg); - showSingleRecordingFields(dlg, connectionManager.getApiClient(serverId)); init(dlg); reload(dlg, itemId); + currentRecordingFields = new recordingFields({ + parent: dlg.querySelector('.recordingFields'), + programId: itemId, + serverId: serverId + }); + dialogHelper.open(dlg); }); }); diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.template.html b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.template.html index 65f799f4a..f27fbdd9e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingcreator.template.html @@ -9,65 +9,23 @@
-
+

-

-

+

+

+ +
+

- -
-
- - -
-
- - - -
-
-
-

-
-

${HeaderConvertYourRecordings}

-
${PromoConvertRecordingsToStreamingFormat}
-
- -
-
-
-
-
-
- -
- -
\ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingeditor.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingeditor.js index 10f7c394d..eec179f69 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingeditor.js +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingeditor.js @@ -13,7 +13,7 @@ require(['confirm'], function (confirm) { confirm({ - + title: globalize.translate('sharedcomponents#HeaderConfirmRecordingCancellation'), text: globalize.translate('sharedcomponents#MessageConfirmRecordingCancellation'), confirmText: globalize.translate('sharedcomponents#HeaderCancelRecording'), @@ -38,85 +38,30 @@ }); } - function getImageUrl(item, apiClient, imageHeight) { - - var imageTags = item.ImageTags || {}; - - if (item.PrimaryImageTag) { - imageTags.Primary = item.PrimaryImageTag; - } - - if (imageTags.Primary) { - - return apiClient.getScaledImageUrl(item.Id, { - type: "Primary", - maxHeight: imageHeight, - tag: item.ImageTags.Primary - }); - } - else if (imageTags.Thumb) { - - return apiClient.getScaledImageUrl(item.Id, { - type: "Thumb", - maxHeight: imageHeight, - tag: item.ImageTags.Thumb - }); - } - - return null; - } - function renderTimer(context, item, apiClient) { var program = item.ProgramInfo || {}; - var imgUrl = getImageUrl(program, apiClient, 200); - var imageContainer = context.querySelector('.recordingDialog-imageContainer'); - - if (imgUrl) { - imageContainer.innerHTML = ''; - imageContainer.classList.remove('hide'); - - imageLoader.lazyChildren(imageContainer); - } else { - imageContainer.innerHTML = ''; - imageContainer.classList.add('hide'); - } - - context.querySelector('.recordingDialog-itemName').innerHTML = item.Name; - - context.querySelector('.itemGenres').innerHTML = (program.Genres || []).join(' / '); - context.querySelector('.itemOverview').innerHTML = program.Overview || ''; - - context.querySelector('.itemMiscInfoPrimary').innerHTML = mediaInfo.getPrimaryMediaInfoHtml(program); - context.querySelector('.itemMiscInfoSecondary').innerHTML = mediaInfo.getSecondaryMediaInfoHtml(program); - context.querySelector('#txtPrePaddingMinutes').value = item.PrePaddingSeconds / 60; context.querySelector('#txtPostPaddingMinutes').value = item.PostPaddingSeconds / 60; - var timerStausElem = context.querySelector('.timerStatus'); - - if (item.Status == 'New') { - timerStausElem.classList.add('hide'); - } else { - timerStausElem.classList.remove('hide'); - timerStausElem.innerHTML = 'Status:   ' + item.Status; - } - loading.hide(); } - function closeDialog(isSubmitted, isDeleted) { + function closeDialog(isDeleted) { - recordingUpdated = isSubmitted; + recordingUpdated = true; recordingDeleted = isDeleted; - dialogHelper.close(currentDialog); + + if (isDeleted) { + dialogHelper.close(currentDialog); + } else { + currentDialog.querySelector('.btnSubmit').click(); + } } function onSubmit(e) { - loading.show(); - var form = this; var apiClient = connectionManager.getApiClient(currentServerId); @@ -126,11 +71,7 @@ item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60; item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60; apiClient.updateLiveTvTimer(item).then(function () { - loading.hide(); - require(['toast'], function (toast) { - toast(Globalize.translate('MessageRecordingSaved')); - closeDialog(true); - }); + dialogHelper.close(currentDialog); }); }); @@ -151,7 +92,7 @@ var apiClient = connectionManager.getApiClient(currentServerId); deleteTimer(apiClient, currentItemId).then(function () { - closeDialog(true, true); + closeDialog(true); }); }); @@ -171,7 +112,7 @@ }); } - function showEditor(itemId, serverId) { + function showEditor(itemId, serverId, options) { return new Promise(function (resolve, reject) { @@ -179,6 +120,7 @@ recordingDeleted = false; currentServerId = serverId; loading.show(); + options = options || {}; require(['text!./recordingeditor.template.html'], function (template) { @@ -190,7 +132,7 @@ if (layoutManager.tv) { dialogOptions.size = 'fullscreen'; } else { - dialogOptions.size = 'small'; + dialogOptions.size = 'mini'; } var dlg = dialogHelper.createDialog(dialogOptions); @@ -198,12 +140,20 @@ dlg.classList.add('formDialog'); dlg.classList.add('recordingDialog'); + if (!layoutManager.tv) { + dlg.style['min-width'] = '20%'; + } + var html = ''; html += globalize.translateDocument(template, 'sharedcomponents'); dlg.innerHTML = html; + if (options.enableCancel === false) { + dlg.querySelector('.formDialogFooter').classList.add('hide'); + } + currentDialog = dlg; dlg.addEventListener('close', function () { diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingeditor.template.html b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingeditor.template.html index 76a06d8f6..fa0d99d7f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingeditor.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingeditor.template.html @@ -1,30 +1,13 @@ 

- ${Edit} + ${HeaderRecordingOptions}

-
-
- -
-
-

-

-

-
-
- -

-

- -

-

-

@@ -36,10 +19,10 @@
- -
diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js index b4f705fa3..ceb376cd0 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.js @@ -1,4 +1,4 @@ -define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'recordingHelper', 'emby-toggle'], function (globalize, connectionManager, require, loading, appHost, recordingHelper) { +define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'recordingHelper', 'emby-toggle', 'paper-icon-button-light', 'emby-button'], function (globalize, connectionManager, require, loading, appHost, recordingHelper) { function getRegistration(apiClient, programId, feature) { @@ -105,6 +105,18 @@ showSingleRecordingFields(parent, program.Id, apiClient); } + if (program.SeriesTimerId) { + parent.querySelector('.btnManageSeriesRecording').classList.remove('visibilityHide'); + } else { + parent.querySelector('.btnManageSeriesRecording').classList.add('visibilityHide'); + } + + if (program.TimerId) { + parent.querySelector('.btnManageRecording').classList.remove('visibilityHide'); + } else { + parent.querySelector('.btnManageRecording').classList.add('visibilityHide'); + } + //var seriesTimerPromise = program.SeriesTimerId ? // apiClient.getLiveTvSeriesTimer(program.SeriesTimerId) : // apiClient.getLiveTvProgram(program.Id, apiClient.getCurrentUserId()); @@ -143,6 +155,28 @@ } } + function onManageRecordingClick(e) { + + var options = this.options; + + if (!this.TimerId) { + return; + } + + var self = this; + + require(['recordingEditor'], function (recordingEditor) { + + recordingEditor.show(self.TimerId, options.serverId, { + + enableCancel: false + + }).then(function () { + self.changed = true; + }); + }); + } + function onRecordChange(e) { this.changed = true; @@ -227,6 +261,7 @@ context.querySelector('.chkRecord').addEventListener('change', onRecordChange.bind(self)); context.querySelector('.chkRecordSeries').addEventListener('change', onRecordSeriesChange.bind(self)); + context.querySelector('.btnManageRecording').addEventListener('click', onManageRecordingClick.bind(self)); fetchData(self).then(resolve); }); diff --git a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.template.html b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.template.html index 2049fcf36..af677ed00 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.template.html +++ b/dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.template.html @@ -1,4 +1,41 @@ -
+ + +

${HeaderConvertYourRecordings}

${PromoConvertRecordingsToStreamingFormat}

@@ -15,13 +52,20 @@
- +
+ + +
- +
+ + +
+
\ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/sharingmenu.js b/dashboard-ui/bower_components/emby-webcomponents/sharing/sharingmenu.js index 882fa4650..8a65c4cf4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/sharing/sharingmenu.js +++ b/dashboard-ui/bower_components/emby-webcomponents/sharing/sharingmenu.js @@ -1,10 +1,11 @@ -define(['dialogHelper', 'layoutManager', 'globalize', './social-share-kit-1.0.4/dist/js/social-share-kit.min', 'css!./social-share-kit-1.0.4/dist/css/social-share-kit.css', 'emby-button'], function (dialogHelper, layoutManager, globalize) { +define(['dialogHelper', 'layoutManager', 'globalize', './social-share-kit-1.0.10/dist/js/social-share-kit.min', 'css!./social-share-kit-1.0.10/dist/css/social-share-kit.css', 'emby-button'], function (dialogHelper, layoutManager, globalize) { function showMenu(options) { var dlg = dialogHelper.createDialog({ removeOnClose: true, - autoFocus: layoutManager.tv + autoFocus: layoutManager.tv, + modal: false }); dlg.id = 'dlg' + new Date().getTime(); @@ -12,18 +13,18 @@ html += '

' + Globalize.translate('Share') + '

'; - html += '
'; html += '
'; // We can only do facebook if we can guarantee that the current page is available over the internet, since FB will try to probe it. - html += ''; + html += ''; - html += '
'; + html += ''; + html += ''; + html += ''; + html += ''; html += '
'; - html += '
'; - html += ''; - html += '
'; + dlg.style['padding'] = '.5em 1.5em 1.5em'; dlg.innerHTML = html; @@ -31,15 +32,6 @@ var shareInfo = options.share; - SocialShareKit.init({ - selector: '#' + dlg.id + ' .ssk', - url: shareInfo.Url, - title: shareInfo.Name, - text: shareInfo.Overview, - image: shareInfo.ImageUrl, - via: 'Emby' - }); - function onSskButtonClick(e) { isShared = true; dialogHelper.close(dlg); @@ -51,25 +43,24 @@ sskButtons[i].addEventListener('click', onSskButtonClick); } - // Has to be assigned a z-index after the call to .open() - dlg.querySelector('.btnCancel').addEventListener('click', function () { - dialogHelper.close(dlg); - }); - - var promise = new Promise(function (resolve, reject) { - - dlg.addEventListener('close', function () { - if (isShared) { - resolve(); - } else { - reject(); - } + dlg.addEventListener('open', function() { + SocialShareKit.init({ + selector: '#' + dlg.id + ' .ssk', + url: shareInfo.Url, + title: shareInfo.Name, + text: shareInfo.Overview, + image: shareInfo.ImageUrl, + via: 'Emby' }); }); - dialogHelper.open(dlg); - - return promise; + return dialogHelper.open(dlg).then(function() { + if (isShared) { + return Promise.resolve(); + } else { + return Promise.reject(); + } + }); } return { diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/LICENSE b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/LICENSE similarity index 100% rename from dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/LICENSE rename to dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/LICENSE diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/css/social-share-kit.css b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/css/social-share-kit.css new file mode 100644 index 000000000..3c5e29fd0 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/css/social-share-kit.css @@ -0,0 +1,7 @@ +/*! + * Social Share Kit v1.0.7 (http://socialsharekit.com) + * Copyright 2015 Social Share Kit / Kaspars Sprogis. + * Licensed under Creative Commons Attribution-NonCommercial 3.0 license: + * https://github.com/darklow/social-share-kit/blob/master/LICENSE + * --- + */@font-face{font-family:'social-share-kit';src:url('../fonts/social-share-kit.eot');src:url('../fonts/social-share-kit.eot?#iefix') format('embedded-opentype'),url('../fonts/social-share-kit.woff') format('woff'),url('../fonts/social-share-kit.ttf') format('truetype'),url('../fonts/social-share-kit.svg#social-share-kit') format('svg');font-weight:normal;font-style:normal}.ssk:before{display:inline-block;font-family:"social-share-kit" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ssk-facebook:before{content:"a";text-indent:4px;margin-right:-4px}.ssk-twitter:before{content:"b"}.ssk-google-plus:before{content:"v"}.ssk-google-plus-old:before{content:"c"}.ssk-email:before{content:"d";top:-1px;position:relative}.ssk-pinterest:before{content:"e"}.ssk-tumblr:before{content:"f"}.ssk-linkedin:before{content:"g"}.ssk-github:before{content:"h"}.ssk-vk:before{content:"i"}.ssk-instagram:before{content:"j"}.ssk-amazon:before{content:"k"}.ssk-skype:before{content:"s"}.ssk-youtube:before{content:"x"}.ssk-vimeo:before{content:"u"}.ssk-ebay:before{content:"p"}.ssk-apple:before{content:"l"}.ssk-behance:before{content:"q"}.ssk-dribble:before{content:"n"}.ssk-android:before{content:"o"}.ssk-whatsapp:before{content:"m"}.ssk-reddit:before{content:"r"}.ssk-reddit2:before{content:"t"}.ssk{background-color:#757575;color:white;display:inline-block;font-size:22px;line-height:1px;margin-right:2px;margin-bottom:2px;padding:7px;text-align:center;text-decoration:none;transition:background-color .1s;-webkit-transition:background-color .1s;-moz-transition:background-color .1s;-ms-transition:background-color .1s;-o-transition:background-color .1s}.ssk:before,.ssk .glyphicon,.ssk .fa{position:relative;font-size:22px;top:0;vertical-align:middle}.ssk.ssk-xs,.ssk-xs>.ssk{padding:4px}.ssk.ssk-xs:before,.ssk-xs>.ssk:before,.ssk.ssk-xs .glyphicon,.ssk-xs>.ssk .glyphicon,.ssk.ssk-xs .fa,.ssk-xs>.ssk .fa{font-size:15px}.ssk.ssk-sm,.ssk-sm>.ssk{padding:5px}.ssk.ssk-sm:before,.ssk-sm>.ssk:before,.ssk.ssk-sm .glyphicon,.ssk-sm>.ssk .glyphicon,.ssk.ssk-sm .fa,.ssk-sm>.ssk .fa{font-size:20px}.ssk.ssk-lg,.ssk-lg>.ssk{padding:9px}.ssk.ssk-lg:before,.ssk-lg>.ssk:before,.ssk.ssk-lg .glyphicon,.ssk-lg>.ssk .glyphicon,.ssk.ssk-lg .fa,.ssk-lg>.ssk .fa{font-size:28px}.ssk:last-child{margin-right:0}.ssk:hover{background-color:#424242}.ssk:hover,.ssk:focus{color:#fff;text-decoration:none}.ssk.ssk-round,.ssk-round .ssk{border-radius:50%}.ssk.ssk-round:before,.ssk-round .ssk:before{text-indent:0;margin-right:0}.ssk.ssk-rounded,.ssk-rounded .ssk{border-radius:15%}.ssk.ssk-icon{color:#757575;padding:2px;font-size:24px}.ssk.ssk-icon,.ssk.ssk-icon:hover{background-color:transparent}.ssk.ssk-icon:hover{color:#424242}.ssk.ssk-icon.ssk-xs,.ssk-xs>.ssk.ssk-icon{font-size:16px}.ssk.ssk-icon.ssk-sm,.ssk-sm>.ssk.ssk-icon{font-size:20px}.ssk.ssk-icon.ssk-lg,.ssk-lg>.ssk.ssk-icon{font-size:28px}.ssk.ssk-text{overflow:hidden;font-size:17px;line-height:normal;padding-right:10px}.ssk.ssk-text:before,.ssk.ssk-text .glyphicon,.ssk.ssk-text .fa{margin:-7px 10px -7px -7px;padding:7px;background-color:rgba(0,0,0,0.15);vertical-align:bottom;text-indent:0}.ssk-block .ssk.ssk-text{display:block;margin-right:0;text-align:left}.ssk.ssk-text.ssk-xs,.ssk-xs>.ssk.ssk-text{font-size:12px;padding-right:6px}.ssk.ssk-text.ssk-xs:before,.ssk-xs>.ssk.ssk-text:before,.ssk.ssk-text.ssk-xs .glyphicon,.ssk-xs>.ssk.ssk-text .glyphicon,.ssk.ssk-text.ssk-xs .fa,.ssk-xs>.ssk.ssk-text .fa{margin:-4px 6px -4px -4px;padding:4px}.ssk.ssk-text.ssk-sm,.ssk-sm>.ssk.ssk-text{font-size:16px;padding-right:7px}.ssk.ssk-text.ssk-sm:before,.ssk-sm>.ssk.ssk-text:before,.ssk.ssk-text.ssk-sm .glyphicon,.ssk-sm>.ssk.ssk-text .glyphicon,.ssk.ssk-text.ssk-sm .fa,.ssk-sm>.ssk.ssk-text .fa{margin:-5px 7px -5px -5px;padding:5px}.ssk.ssk-text.ssk-lg,.ssk-lg>.ssk.ssk-text{font-size:22px;padding-right:13px}.ssk.ssk-text.ssk-lg:before,.ssk-lg>.ssk.ssk-text:before,.ssk.ssk-text.ssk-lg .glyphicon,.ssk-lg>.ssk.ssk-text .glyphicon,.ssk.ssk-text.ssk-lg .fa,.ssk-lg>.ssk.ssk-text .fa{margin:-9px 13px -9px -9px;padding:9px}.ssk-group,.ssk-sticky{font-size:0}.ssk-sticky{top:0;position:fixed;z-index:2000}.ssk-sticky .ssk{transition:padding .1s ease-out;-webkit-transition:padding .1s ease-out;-moz-transition:padding .1s ease-out;-ms-transition:padding .1s ease-out;-o-transition:padding .1s ease-out;margin:0}@media (min-width:768px){.ssk-sticky.ssk-left .ssk,.ssk-sticky.ssk-right .ssk{display:block;clear:both}.ssk-sticky.ssk-left.ssk-center,.ssk-sticky.ssk-right.ssk-center{top:50%;transform:translateY(-50%);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%)}.ssk-sticky.ssk-left{left:0}.ssk-sticky.ssk-left .ssk{float:left}.ssk-sticky.ssk-left .ssk:hover{padding-left:15px}.ssk-sticky.ssk-right{right:0}.ssk-sticky.ssk-right .ssk{float:right}.ssk-sticky.ssk-right .ssk:hover{padding-right:15px}}.ssk-sticky.ssk-bottom{font-size:0;top:auto;bottom:0}.ssk-sticky.ssk-bottom.ssk-center{left:50%;right:auto;transform:translateX(-50%);-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%)}.ssk-sticky.ssk-bottom .ssk{vertical-align:bottom}.ssk-sticky.ssk-bottom .ssk:hover{padding-bottom:15px}.ssk-sticky.ssk-round.ssk-xs .ssk:hover{padding:8px}.ssk-sticky.ssk-round.ssk-sm .ssk:hover{padding:9px}.ssk-sticky.ssk-round .ssk:hover{padding:11px}.ssk-sticky.ssk-round.ssk-lg .ssk:hover{padding:13px}@media (max-width:767px){.ssk-sticky{left:0;right:0;bottom:0;top:auto;width:100%;display:flex !important;flex-direction:row;flex-wrap:nowrap}.ssk-sticky.ssk-sticky-hide-xs{display:none !important}.ssk-sticky .ssk{flex:1;width:auto}.ssk-sticky .ssk .ssk-num{display:none}}.ssk-count{padding-top:20px}.ssk-count .ssk{position:relative}.ssk-count .ssk-num{border-radius:4px;color:#8f8f8f;background-color:rgba(50,50,50,0.03);display:block;font-size:12px;left:0;line-height:20px;position:absolute;right:0;text-align:center;top:-20px}@media (min-width:768px){.ssk-count.ssk-sticky{padding-top:0}.ssk-count.ssk-sticky.ssk-left .ssk-num,.ssk-count.ssk-sticky.ssk-right .ssk-num{top:20%;background-color:transparent}.ssk-count.ssk-sticky.ssk-left .ssk-num{left:100%;margin-left:5px}.ssk-count.ssk-sticky.ssk-right .ssk-num{right:115%;margin-left:-100%;text-align:right}}.ssk-facebook{background-color:#255c95}.ssk-grayscale>.ssk-facebook{background-color:#757575}.ssk-facebook:hover{background-color:#1b436c}.ssk-facebook:hover{background-color:#1b436c}.ssk-grayscale>.ssk-facebook:hover{background-color:#255c95}.ssk-facebook.ssk-icon{color:#255c95}.ssk-facebook.ssk-icon:hover{color:#1b436c}.ssk-facebook.ssk-icon:before{text-indent:0;margin-right:0}.ssk-twitter{background-color:#00b4e0}.ssk-grayscale>.ssk-twitter{background-color:#757575}.ssk-twitter:hover{background-color:#008bad}.ssk-twitter:hover{background-color:#008bad}.ssk-grayscale>.ssk-twitter:hover{background-color:#00b4e0}.ssk-twitter.ssk-icon{color:#00b4e0}.ssk-twitter.ssk-icon:hover{color:#008bad}.ssk-google-plus{background-color:#f1403a}.ssk-grayscale>.ssk-google-plus{background-color:#757575}.ssk-google-plus:hover{background-color:#e81810}.ssk-google-plus:hover{background-color:#e81810}.ssk-grayscale>.ssk-google-plus:hover{background-color:#f1403a}.ssk-google-plus.ssk-icon{color:#f1403a}.ssk-google-plus.ssk-icon:hover{color:#e81810}.ssk-pinterest{background-color:#cb2027}.ssk-grayscale>.ssk-pinterest{background-color:#757575}.ssk-pinterest:hover{background-color:#9f191f}.ssk-pinterest:hover{background-color:#9f191f}.ssk-grayscale>.ssk-pinterest:hover{background-color:#cb2027}.ssk-pinterest.ssk-icon{color:#cb2027}.ssk-pinterest.ssk-icon:hover{color:#9f191f}.ssk-tumblr{background-color:#395773}.ssk-grayscale>.ssk-tumblr{background-color:#757575}.ssk-tumblr:hover{background-color:#283d51}.ssk-tumblr:hover{background-color:#283d51}.ssk-grayscale>.ssk-tumblr:hover{background-color:#395773}.ssk-tumblr.ssk-icon{color:#395773}.ssk-tumblr.ssk-icon:hover{color:#283d51}.ssk-email{background-color:#757575}.ssk-grayscale>.ssk-email{background-color:#757575}.ssk-email:hover{background-color:#5b5b5b}.ssk-email:hover{background-color:#5b5b5b}.ssk-grayscale>.ssk-email:hover{background-color:#757575}.ssk-grayscale>.ssk-email:hover{background-color:#5b5b5b}.ssk-email.ssk-icon{color:#757575}.ssk-email.ssk-icon:hover{color:#5b5b5b}.ssk-vk{background-color:#54769a}.ssk-grayscale>.ssk-vk{background-color:#757575}.ssk-vk:hover{background-color:#425d79}.ssk-vk:hover{background-color:#425d79}.ssk-grayscale>.ssk-vk:hover{background-color:#54769a}.ssk-vk.ssk-icon{color:#54769a}.ssk-vk.ssk-icon:hover{color:#425d79}.ssk-linkedin{background-color:#1c87bd}.ssk-grayscale>.ssk-linkedin{background-color:#757575}.ssk-linkedin:hover{background-color:#156791}.ssk-linkedin:hover{background-color:#156791}.ssk-grayscale>.ssk-linkedin:hover{background-color:#1c87bd}.ssk-linkedin.ssk-icon{color:#1c87bd}.ssk-linkedin.ssk-icon:hover{color:#156791}.ssk-whatsapp{background-color:#34AF23}.ssk-grayscale>.ssk-whatsapp{background-color:#757575}.ssk-whatsapp:hover{background-color:#27851a}.ssk-whatsapp:hover{background-color:#27851a}.ssk-grayscale>.ssk-whatsapp:hover{background-color:#34AF23}.ssk-whatsapp.ssk-icon{color:#34AF23}.ssk-whatsapp.ssk-icon:hover{color:#27851a}.ssk-reddit{background-color:#5f99cf}.ssk-grayscale>.ssk-reddit{background-color:#757575}.ssk-reddit:hover{background-color:#3a80c1}.ssk-reddit:hover{background-color:#3a80c1}.ssk-grayscale>.ssk-reddit:hover{background-color:#5f99cf}.ssk-reddit.ssk-icon{color:#5f99cf}.ssk-reddit.ssk-icon:hover{color:#3a80c1}.ssk-reddit2{background-color:#5f99cf}.ssk-grayscale>.ssk-reddit2{background-color:#757575}.ssk-reddit2:hover{background-color:#3a80c1}.ssk-reddit2:hover{background-color:#3a80c1}.ssk-grayscale>.ssk-reddit2:hover{background-color:#5f99cf}.ssk-reddit2.ssk-icon{color:#5f99cf}.ssk-reddit2.ssk-icon:hover{color:#3a80c1}.ssk-turquoise{background-color:#1abc9c}.ssk-turquoise:hover{background-color:#148f77}.ssk-emerald{background-color:#2ecc71}.ssk-emerald:hover{background-color:#25a25a}.ssk-peter-river{background-color:#3498db}.ssk-peter-river:hover{background-color:#217dbb}.ssk-belize-hole{background-color:#2980b9}.ssk-belize-hole:hover{background-color:#20638f}.ssk-amethyst{background-color:#9b59b6}.ssk-amethyst:hover{background-color:#804399}.ssk-wisteria{background-color:#8e44ad}.ssk-wisteria:hover{background-color:#703688}.ssk-wet-asphalt{background-color:#34495e}.ssk-wet-asphalt:hover{background-color:#222f3d}.ssk-midnight-blue{background-color:#2c3e50}.ssk-midnight-blue:hover{background-color:#1a242f}.ssk-green-sea{background-color:#16a085}.ssk-green-sea:hover{background-color:#107360}.ssk-nephritis{background-color:#27ae60}.ssk-nephritis:hover{background-color:#1e8449}.ssk-sunflower{background-color:#f1c40f}.ssk-sunflower:hover{background-color:#c29d0b}.ssk-orange{background-color:#f39c12}.ssk-orange:hover{background-color:#c87f0a}.ssk-carrot{background-color:#e67e22}.ssk-carrot:hover{background-color:#bf6516}.ssk-pumpkin{background-color:#d35400}.ssk-pumpkin:hover{background-color:#a04000}.ssk-alizarin{background-color:#e74c3c}.ssk-alizarin:hover{background-color:#d62c1a}.ssk-pomegranate{background-color:#c0392b}.ssk-pomegranate:hover{background-color:#962d22}.ssk-clouds{background-color:#cfd9db}.ssk-clouds:hover{background-color:#b1c2c6}.ssk-concrete{background-color:#95a5a6}.ssk-concrete:hover{background-color:#798d8f}.ssk-silver{background-color:#bdc3c7}.ssk-silver:hover{background-color:#a1aab0}.ssk-asbestos{background-color:#7f8c8d}.ssk-asbestos:hover{background-color:#667273}.ssk-dark-gray{background-color:#555}.ssk-dark-gray:hover{background-color:#3b3b3b}.ssk-black{background-color:#333}.ssk-black:hover{background-color:#1a1a1a} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.eot b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.eot new file mode 100644 index 0000000000000000000000000000000000000000..a9d69c604c7f0efee6e6256f76fa9c512dba9b59 GIT binary patch literal 8660 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 P`~K`}eAw3ee}4aO0;u9b literal 0 HcmV?d00001 diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.svg b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.svg new file mode 100644 index 000000000..a6ec16e06 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.svg @@ -0,0 +1,33 @@ + + + +Generated by Fontastic.me + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.ttf b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.10/dist/fonts/social-share-kit.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a6f445873827f27ff9cc76152883c00a20adef7c GIT binary patch literal 8456 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 HAHe?t$5_e; literal 0 HcmV?d00001 diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/css/social-share-kit.css b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/css/social-share-kit.css deleted file mode 100644 index dfa18d9b8..000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/css/social-share-kit.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Social Share Kit v1.0.3 (http://socialsharekit.com) - * Copyright 2015 Social Share Kit / Kaspars Sprogis. - * Licensed under Creative Commons Attribution-NonCommercial 3.0 license: - * https://github.com/darklow/social-share-kit/blob/master/LICENSE - * --- - */@font-face{font-family:'social-share-kit';src:url('../fonts/social-share-kit.eot');src:url('../fonts/social-share-kit.eot?#iefix') format('embedded-opentype'),url('../fonts/social-share-kit.woff') format('woff'),url('../fonts/social-share-kit.ttf') format('truetype'),url('../fonts/social-share-kit.svg#social-share-kit') format('svg');font-weight:normal;font-style:normal}.ssk:before{display:inline-block;font-family:"social-share-kit" !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ssk-facebook:before{content:"a";text-indent:4px;margin-right:-4px}.ssk-twitter:before{content:"b"}.ssk-google-plus:before{content:"c"}.ssk-email:before{content:"d";top:-1px;position:relative}.ssk-pinterest:before{content:"e"}.ssk-tumblr:before{content:"f"}.ssk-linkedin:before{content:"g"}.ssk-github:before{content:"h"}.ssk-vk:before{content:"i"}.ssk-instagram:before{content:"j"}.ssk-amazon:before{content:"k"}.ssk-skype:before{content:"s"}.ssk-youtube:before{content:"x"}.ssk-vimeo:before{content:"u"}.ssk-ebay:before{content:"p"}.ssk-apple:before{content:"l"}.ssk-behance:before{content:"q"}.ssk-dribble:before{content:"n"}.ssk-android:before{content:"o"}.ssk-whatsapp:before{content:"m"}.ssk-reddit:before{content:"r"}.ssk-reddit2:before{content:"t"}.ssk{background-color:#757575;color:white;display:inline-block;font-size:22px;line-height:1px;margin-right:2px;margin-bottom:2px;padding:7px;text-align:center;text-decoration:none;transition:background-color .1s;-webkit-transition:background-color .1s;-moz-transition:background-color .1s;-ms-transition:background-color .1s;-o-transition:background-color .1s}.ssk:before,.ssk .glyphicon,.ssk .fa{position:relative;font-size:22px;top:0;vertical-align:middle}.ssk.ssk-xs,.ssk-xs>.ssk{padding:4px}.ssk.ssk-xs:before,.ssk-xs>.ssk:before,.ssk.ssk-xs .glyphicon,.ssk-xs>.ssk .glyphicon,.ssk.ssk-xs .fa,.ssk-xs>.ssk .fa{font-size:15px}.ssk.ssk-sm,.ssk-sm>.ssk{padding:5px}.ssk.ssk-sm:before,.ssk-sm>.ssk:before,.ssk.ssk-sm .glyphicon,.ssk-sm>.ssk .glyphicon,.ssk.ssk-sm .fa,.ssk-sm>.ssk .fa{font-size:20px}.ssk.ssk-lg,.ssk-lg>.ssk{padding:9px}.ssk.ssk-lg:before,.ssk-lg>.ssk:before,.ssk.ssk-lg .glyphicon,.ssk-lg>.ssk .glyphicon,.ssk.ssk-lg .fa,.ssk-lg>.ssk .fa{font-size:28px}.ssk:last-child{margin-right:0}.ssk:hover{background-color:#424242}.ssk:hover,.ssk:focus{color:#fff;text-decoration:none}.ssk.ssk-round,.ssk-round .ssk{border-radius:50%}.ssk.ssk-round:before,.ssk-round .ssk:before{text-indent:0;margin-right:0}.ssk.ssk-rounded,.ssk-rounded .ssk{border-radius:15%}.ssk.ssk-icon{color:#757575;padding:2px;font-size:24px}.ssk.ssk-icon,.ssk.ssk-icon:hover{background-color:transparent}.ssk.ssk-icon:hover{color:#424242}.ssk.ssk-icon.ssk-xs,.ssk-xs>.ssk.ssk-icon{font-size:16px}.ssk.ssk-icon.ssk-sm,.ssk-sm>.ssk.ssk-icon{font-size:20px}.ssk.ssk-icon.ssk-lg,.ssk-lg>.ssk.ssk-icon{font-size:28px}.ssk.ssk-text{overflow:hidden;font-size:17px;line-height:normal;padding-right:10px}.ssk.ssk-text:before,.ssk.ssk-text .glyphicon,.ssk.ssk-text .fa{margin:-7px 10px -7px -7px;padding:7px;background-color:rgba(0,0,0,0.15);vertical-align:bottom;text-indent:0}.ssk-block .ssk.ssk-text{display:block;margin-right:0;text-align:left}.ssk.ssk-text.ssk-xs,.ssk-xs>.ssk.ssk-text{font-size:12px;padding-right:6px}.ssk.ssk-text.ssk-xs:before,.ssk-xs>.ssk.ssk-text:before,.ssk.ssk-text.ssk-xs .glyphicon,.ssk-xs>.ssk.ssk-text .glyphicon,.ssk.ssk-text.ssk-xs .fa,.ssk-xs>.ssk.ssk-text .fa{margin:-4px 6px -4px -4px;padding:4px}.ssk.ssk-text.ssk-sm,.ssk-sm>.ssk.ssk-text{font-size:16px;padding-right:7px}.ssk.ssk-text.ssk-sm:before,.ssk-sm>.ssk.ssk-text:before,.ssk.ssk-text.ssk-sm .glyphicon,.ssk-sm>.ssk.ssk-text .glyphicon,.ssk.ssk-text.ssk-sm .fa,.ssk-sm>.ssk.ssk-text .fa{margin:-5px 7px -5px -5px;padding:5px}.ssk.ssk-text.ssk-lg,.ssk-lg>.ssk.ssk-text{font-size:22px;padding-right:13px}.ssk.ssk-text.ssk-lg:before,.ssk-lg>.ssk.ssk-text:before,.ssk.ssk-text.ssk-lg .glyphicon,.ssk-lg>.ssk.ssk-text .glyphicon,.ssk.ssk-text.ssk-lg .fa,.ssk-lg>.ssk.ssk-text .fa{margin:-9px 13px -9px -9px;padding:9px}.ssk-group,.ssk-sticky{font-size:0}.ssk-sticky{top:0;position:fixed;z-index:2000}.ssk-sticky .ssk{transition:padding .1s ease-out;-webkit-transition:padding .1s ease-out;-moz-transition:padding .1s ease-out;-ms-transition:padding .1s ease-out;-o-transition:padding .1s ease-out;margin:0}.ssk-sticky.ssk-left .ssk,.ssk-sticky.ssk-right .ssk{display:block;clear:both}.ssk-sticky.ssk-left.ssk-center,.ssk-sticky.ssk-right.ssk-center{top:50%;transform:translateY(-50%);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%)}.ssk-sticky.ssk-left{left:0}.ssk-sticky.ssk-left .ssk{float:left}.ssk-sticky.ssk-left .ssk:hover{padding-left:15px}.ssk-sticky.ssk-right{right:0}.ssk-sticky.ssk-right .ssk{float:right}.ssk-sticky.ssk-right .ssk:hover{padding-right:15px}.ssk-sticky.ssk-bottom{font-size:0;top:auto;bottom:0}.ssk-sticky.ssk-bottom.ssk-center{left:50%;right:auto;transform:translateX(-50%);-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%)}.ssk-sticky.ssk-bottom .ssk{vertical-align:bottom}.ssk-sticky.ssk-bottom .ssk:hover{padding-bottom:15px}.ssk-sticky.ssk-round.ssk-xs .ssk:hover{padding:8px}.ssk-sticky.ssk-round.ssk-sm .ssk:hover{padding:9px}.ssk-sticky.ssk-round .ssk:hover{padding:11px}.ssk-sticky.ssk-round.ssk-lg .ssk:hover{padding:13px}@media (max-width:767px){.ssk-sticky{display:none}}.ssk-count{padding-top:20px}.ssk-count .ssk{position:relative}.ssk-count .ssk-num{border-radius:4px;color:#8f8f8f;background-color:rgba(50,50,50,0.03);display:block;font-size:12px;left:0;line-height:20px;position:absolute;right:0;text-align:center;top:-20px}.ssk-count.ssk-sticky{padding-top:0}.ssk-count.ssk-sticky.ssk-left .ssk-num,.ssk-count.ssk-sticky.ssk-right .ssk-num{top:20%;background-color:transparent}.ssk-count.ssk-sticky.ssk-left .ssk-num{left:100%;margin-left:5px}.ssk-count.ssk-sticky.ssk-right .ssk-num{right:115%;margin-left:-100%;text-align:right}.ssk-facebook{background-color:#255c95}.ssk-grayscale>.ssk-facebook{background-color:#757575}.ssk-facebook:hover{background-color:#1b436c}.ssk-facebook:hover{background-color:#1b436c}.ssk-grayscale>.ssk-facebook:hover{background-color:#255c95}.ssk-facebook.ssk-icon{color:#255c95}.ssk-facebook.ssk-icon:hover{color:#1b436c}.ssk-facebook.ssk-icon:before{text-indent:0;margin-right:0}.ssk-twitter{background-color:#00b4e0}.ssk-grayscale>.ssk-twitter{background-color:#757575}.ssk-twitter:hover{background-color:#008bad}.ssk-twitter:hover{background-color:#008bad}.ssk-grayscale>.ssk-twitter:hover{background-color:#00b4e0}.ssk-twitter.ssk-icon{color:#00b4e0}.ssk-twitter.ssk-icon:hover{color:#008bad}.ssk-google-plus{background-color:#f1403a}.ssk-grayscale>.ssk-google-plus{background-color:#757575}.ssk-google-plus:hover{background-color:#e81810}.ssk-google-plus:hover{background-color:#e81810}.ssk-grayscale>.ssk-google-plus:hover{background-color:#f1403a}.ssk-google-plus.ssk-icon{color:#f1403a}.ssk-google-plus.ssk-icon:hover{color:#e81810}.ssk-pinterest{background-color:#cb2027}.ssk-grayscale>.ssk-pinterest{background-color:#757575}.ssk-pinterest:hover{background-color:#9f191f}.ssk-pinterest:hover{background-color:#9f191f}.ssk-grayscale>.ssk-pinterest:hover{background-color:#cb2027}.ssk-pinterest.ssk-icon{color:#cb2027}.ssk-pinterest.ssk-icon:hover{color:#9f191f}.ssk-tumblr{background-color:#395773}.ssk-grayscale>.ssk-tumblr{background-color:#757575}.ssk-tumblr:hover{background-color:#283d51}.ssk-tumblr:hover{background-color:#283d51}.ssk-grayscale>.ssk-tumblr:hover{background-color:#395773}.ssk-tumblr.ssk-icon{color:#395773}.ssk-tumblr.ssk-icon:hover{color:#283d51}.ssk-email{background-color:#757575}.ssk-grayscale>.ssk-email{background-color:#757575}.ssk-email:hover{background-color:#5b5b5b}.ssk-email:hover{background-color:#5b5b5b}.ssk-grayscale>.ssk-email:hover{background-color:#757575}.ssk-grayscale>.ssk-email:hover{background-color:#5b5b5b}.ssk-email.ssk-icon{color:#757575}.ssk-email.ssk-icon:hover{color:#5b5b5b}.ssk-vk{background-color:#54769a}.ssk-grayscale>.ssk-vk{background-color:#757575}.ssk-vk:hover{background-color:#425d79}.ssk-vk:hover{background-color:#425d79}.ssk-grayscale>.ssk-vk:hover{background-color:#54769a}.ssk-vk.ssk-icon{color:#54769a}.ssk-vk.ssk-icon:hover{color:#425d79}.ssk-linkedin{background-color:#1c87bd}.ssk-grayscale>.ssk-linkedin{background-color:#757575}.ssk-linkedin:hover{background-color:#156791}.ssk-linkedin:hover{background-color:#156791}.ssk-grayscale>.ssk-linkedin:hover{background-color:#1c87bd}.ssk-linkedin.ssk-icon{color:#1c87bd}.ssk-linkedin.ssk-icon:hover{color:#156791}.ssk-whatsapp{background-color:#34af23}.ssk-grayscale>.ssk-whatsapp{background-color:#757575}.ssk-whatsapp:hover{background-color:#27851a}.ssk-whatsapp:hover{background-color:#27851a}.ssk-grayscale>.ssk-whatsapp:hover{background-color:#34af23}.ssk-whatsapp.ssk-icon{color:#34af23}.ssk-whatsapp.ssk-icon:hover{color:#27851a}.ssk-reddit{background-color:#5f99cf}.ssk-grayscale>.ssk-reddit{background-color:#757575}.ssk-reddit:hover{background-color:#3a80c1}.ssk-reddit:hover{background-color:#3a80c1}.ssk-grayscale>.ssk-reddit:hover{background-color:#5f99cf}.ssk-reddit.ssk-icon{color:#5f99cf}.ssk-reddit.ssk-icon:hover{color:#3a80c1}.ssk-reddit2{background-color:#5f99cf}.ssk-grayscale>.ssk-reddit2{background-color:#757575}.ssk-reddit2:hover{background-color:#3a80c1}.ssk-reddit2:hover{background-color:#3a80c1}.ssk-grayscale>.ssk-reddit2:hover{background-color:#5f99cf}.ssk-reddit2.ssk-icon{color:#5f99cf}.ssk-reddit2.ssk-icon:hover{color:#3a80c1}.ssk-turquoise{background-color:#1abc9c}.ssk-turquoise:hover{background-color:#148f77}.ssk-emerald{background-color:#2ecc71}.ssk-emerald:hover{background-color:#25a25a}.ssk-peter-river{background-color:#3498db}.ssk-peter-river:hover{background-color:#217dbb}.ssk-belize-hole{background-color:#2980b9}.ssk-belize-hole:hover{background-color:#20638f}.ssk-amethyst{background-color:#9b59b6}.ssk-amethyst:hover{background-color:#804399}.ssk-wisteria{background-color:#8e44ad}.ssk-wisteria:hover{background-color:#703688}.ssk-wet-asphalt{background-color:#34495e}.ssk-wet-asphalt:hover{background-color:#222f3d}.ssk-midnight-blue{background-color:#2c3e50}.ssk-midnight-blue:hover{background-color:#1a242f}.ssk-green-sea{background-color:#16a085}.ssk-green-sea:hover{background-color:#107360}.ssk-nephritis{background-color:#27ae60}.ssk-nephritis:hover{background-color:#1e8449}.ssk-sunflower{background-color:#f1c40f}.ssk-sunflower:hover{background-color:#c29d0b}.ssk-orange{background-color:#f39c12}.ssk-orange:hover{background-color:#c87f0a}.ssk-carrot{background-color:#e67e22}.ssk-carrot:hover{background-color:#bf6516}.ssk-pumpkin{background-color:#d35400}.ssk-pumpkin:hover{background-color:#a04000}.ssk-alizarin{background-color:#e74c3c}.ssk-alizarin:hover{background-color:#d62c1a}.ssk-pomegranate{background-color:#c0392b}.ssk-pomegranate:hover{background-color:#962d22}.ssk-clouds{background-color:#cfd9db}.ssk-clouds:hover{background-color:#b1c2c6}.ssk-concrete{background-color:#95a5a6}.ssk-concrete:hover{background-color:#798d8f}.ssk-silver{background-color:#bdc3c7}.ssk-silver:hover{background-color:#a1aab0}.ssk-asbestos{background-color:#7f8c8d}.ssk-asbestos:hover{background-color:#667273}.ssk-dark-gray{background-color:#555}.ssk-dark-gray:hover{background-color:#3b3b3b}.ssk-black{background-color:#333}.ssk-black:hover{background-color:#1a1a1a} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.eot b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.eot deleted file mode 100644 index 0adc052065473f2e613856c7a7e46c76a3d83b8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8348 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 IcWiP0FOW!&bN~PV diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.svg b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.svg deleted file mode 100644 index 910cdcad4..000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - -Generated by Fontastic.me - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.ttf b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.ttf deleted file mode 100644 index d3547e18e5448d4314d190daab95c776b7d297ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8144 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 diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.woff b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/fonts/social-share-kit.woff deleted file mode 100644 index 12cc6b542fc17112f5b7ef1703b497ee4881faae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6420 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 200 && this.status < 400) { - callback(this.responseText); - } - } - }; - request.open('POST', url, true); - request.setRequestHeader('Content-Type', 'application/json'); - request.send(body); - } - - function JSONPRequest(network, url, callback) { - var callbackName = 'cb_' + network + '_' + Math.round(100000 * Math.random()), - script = document.createElement('script'); - window[callbackName] = function (data) { - try { // IE8 - delete window[callbackName]; - } catch (e) { - } - document.body.removeChild(script); - callback(data); - }; - if (network == 'vk') { - window['VK'] = { - Share: { - count: function (a, b) { - window[callbackName](b); - } - } - }; - } else if (network == 'google-plus') { - window['services'] = { - gplus: { - cb: window[callbackName] - } - }; - } - script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callbackName; - document.body.appendChild(script); - return true; - } - - return { - init: init - }; -})(); - -window.SocialShareKit = SocialShareKit; diff --git a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/js/social-share-kit.min.js b/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/js/social-share-kit.min.js deleted file mode 100644 index d105532f6..000000000 --- a/dashboard-ui/bower_components/emby-webcomponents/sharing/social-share-kit-1.0.4/dist/js/social-share-kit.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * Social Share Kit v1.0.3 (http://socialsharekit.com) - * Copyright 2015 Social Share Kit / Kaspars Sprogis. - * Licensed under Creative Commons Attribution-NonCommercial 3.0 license: - * https://github.com/darklow/social-share-kit/blob/master/LICENSE - * --- - */ -;var SocialShareKit=(function(){var f,d,v,t={},q="*|*";function x(A){d=A||{};v=/(twitter|facebook|google-plus|pinterest|tumblr|vk|linkedin|email)/;n(function(){f=g(d.selector||".ssk");if(!f.length){return}e(f,function(C){var D=s(C),B;if(!D){return}r(C,"click",h);p(C,"click",h);if(C.parentNode.className.indexOf("ssk-count")!==-1){D=D[0];B=D+q+z(D,C);if(!(B in t)){t[B]=[]}t[B].push(C)}});j()})}function n(A){if(document.readyState!="loading"){A()}else{if(document.addEventListener){document.addEventListener("DOMContentLoaded",A)}else{document.attachEvent("onreadystatechange",function(){if(document.readyState!="loading"){A()}})}}}function g(A){return document.querySelectorAll(A)}function e(C,B){for(var A=0;A=200&&this.status<400){D(this.responseText)}}};C.open("POST",B,true);C.setRequestHeader("Content-Type","application/json");C.send(A)}function b(C,B,E){var D="cb_"+C+"_"+Math.round(100000*Math.random()),A=document.createElement("script");window[D]=function(F){try{delete window[D]}catch(G){}document.body.removeChild(A);E(F)};if(C=="vk"){window.VK={Share:{count:function(G,F){window[D](F)}}}}else{if(C=="google-plus"){window.services={gplus:{cb:window[D]}}}}A.src=B+(B.indexOf("?")>=0?"&":"?")+"callback="+D;document.body.appendChild(A);return true}return{init:x}})();window.SocialShareKit=SocialShareKit; \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js b/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js index e49465e41..492d9c4bd 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js +++ b/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js @@ -313,10 +313,17 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g var serverId = apiClient.serverInfo().Id; if (item.Type == 'Timer') { - require(['recordingEditor'], function (recordingEditor) { + if (item.ProgramId) { + require(['recordingCreator'], function (recordingCreator) { - recordingEditor.show(item.Id, serverId).then(resolve, reject); - }); + recordingCreator.show(item.ProgramId, serverId).then(resolve, reject); + }); + } else { + require(['recordingEditor'], function (recordingEditor) { + + recordingEditor.show(item.Id, serverId).then(resolve, reject); + }); + } } else { require(['metadataEditor'], function (metadataEditor) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json index 731019da7..b4e3a3730 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/bg-BG.json b/dashboard-ui/bower_components/emby-webcomponents/strings/bg-BG.json index 5dcd45628..e7f0c2d1c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/bg-BG.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/bg-BG.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u0414\u043e\u0431\u0430\u0432\u0438", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json index 911f4362f..2d163cb1e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Afegeix", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json b/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json index fb1b86a03..86bdd8a50 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "P\u0159idat", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json index c99f1c78d..5f51ad641 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Del", "Add": "Tilf\u00f8j", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json index 3153c2d91..09017f146 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Erfahre mehr", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Teilen", "Add": "Hinzuf\u00fcgen", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json index ee70fc61a..b57f5e15a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-GB.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-GB.json index 62b5b1168..e9e820798 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-GB.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-GB.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", @@ -52,7 +54,7 @@ "HeaderBecomeProjectSupporter": "Get Emby Premiere", "MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.", "OptionConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format", - "OptionConvertRecordingsToStreamingFormatHelp": "Recordings will be converted on the fly to MP4 for easy playback on your devices.", + "OptionConvertRecordingsToStreamingFormatHelp": "Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", "Record": "Record", "Save": "Save", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json index 9a53ea76d..555791cca 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json @@ -286,5 +286,7 @@ "HeaderCancelRecording": "Cancel Recording", "HeaderKeepRecording": "Keep Recording", "HeaderLearnMore": "Learn More", - "DeleteMedia": "Delete media" + "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-AR.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-AR.json index 8dc6440b0..500eb099f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-AR.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-AR.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json index f75795001..99046460d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json @@ -1,9 +1,11 @@ { - "PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.", - "HeaderConvertYourRecordings": "Convert Your Recordings", - "HeaderLearnMore": "Learn More", - "HeaderKeepRecording": "Keep Recording", - "DeleteMedia": "Delete media", + "PromoConvertRecordingsToStreamingFormat": "Convertir autom\u00e1ticamente grabaciones a un formato amigable para transmitir con Emby Premiere. Las grabaciones ser\u00e1n convertidos en tiempo real a MP4 o MKV, basado en las configuraciones del servidor Emby.", + "HeaderConvertYourRecordings": "Convertir Sus Grabaciones", + "HeaderLearnMore": "Aprenda m\u00e1s", + "HeaderKeepRecording": "Conservar Grabaciones", + "DeleteMedia": "Eliminar medios", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Compartir", "Add": "Agregar", @@ -52,7 +54,7 @@ "HeaderBecomeProjectSupporter": "Obtener Emby Premier", "MessageActiveSubscriptionRequiredSeriesRecordings": "Se requiere de una suscripci\u00f3n de Emby Premier para crear grabaciones automatizadas de series.", "OptionConvertRecordingsToStreamingFormat": "Convertir autom\u00e1ticamente las grabaciones a un formato amigable para transmisi\u00f3n", - "OptionConvertRecordingsToStreamingFormatHelp": "Las grabaciones ser\u00e1n convertidas en tiempo real a MP4 para una f\u00e1cil reproducci\u00f3n en sus dispositivos.", + "OptionConvertRecordingsToStreamingFormatHelp": "Las grabaciones ser\u00e1n convertidas en tiempo real a MP4 o MKV para una f\u00e1cil reproducci\u00f3n en sus dispositivos, basado en las configuraciones del servidor Emby.", "FeatureRequiresEmbyPremiere": "Esta caracter\u00edstica requiere de una suscripci\u00f3n activa de Emby Premiere.", "Record": "Grabar", "Save": "Guardar", @@ -288,6 +290,6 @@ "LiveBroadcasts": "Transmisiones en vivo", "Premieres": "Estrenos", "RepeatEpisodes": "Repetir episodios", - "DvrSubscriptionRequired": "Emby DVR requires an active Emby Premiere subscription.", - "HeaderCancelRecording": "Cancel Recording" + "DvrSubscriptionRequired": "Emby DVR necesita una suscripci\u00f3n activa de Emby Premiere.", + "HeaderCancelRecording": "Cancelar Grabaci\u00f3n" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json index e34768564..53a8514b7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Compartir", "Add": "A\u00f1adir", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json index d1c488533..9a0b6a63e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-CA.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-CA.json index 299d43f37..9fd097070 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-CA.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-CA.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json index 9f4b6e606..277b7b2ed 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Sp\u00e9cial - {0}", "Share": "Partager", "Add": "Ajouter", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json index 74efde7be..f3f4d4b54 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json index 0a7cdcbe5..32a5fdde7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u05d4\u05d5\u05e1\u05e3", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json index fc1f04cd6..f7974103b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Dodaj", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json index 99c1a852c..f99391fba 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Megoszt\u00e1s", "Add": "Hozz\u00e1ad", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json index c28bede7b..7efb79b85 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json index 2b07119ac..5edf66e71 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Aggiungi", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json index 8d2ee88b6..04bf4c01d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json @@ -2,8 +2,10 @@ "PromoConvertRecordingsToStreamingFormat": "Emby Premiere \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443\u0493\u0430 \u043e\u04a3\u0430\u0439 \u043f\u0456\u0448\u0456\u043d\u0434\u0435 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u0434\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443. \u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440 Emby Server \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456 \u043d\u0435\u0433\u0456\u0437\u0456\u043d\u0434\u0435, \u043d\u0430\u049b\u0442\u044b \u0443\u0430\u049b\u044b\u0442\u0442\u0430 MP4 \u043d\u0435\u043c\u0435\u0441\u0435 MKV \u043f\u0456\u0448\u0456\u043c\u0456\u043d\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0435\u0434\u0456.", "HeaderConvertYourRecordings": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u044b\u04a3\u044b\u0437\u0434\u044b \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", "HeaderLearnMore": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u0431\u0456\u043b\u0443", - "HeaderKeepRecording": "Keep Recording", - "DeleteMedia": "Delete media", + "HeaderKeepRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", + "DeleteMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0456 \u0436\u043e\u044e", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", "Share": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443", "Add": "\u04ae\u0441\u0442\u0435\u0443", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json index 603a5d161..7243a62e9 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\ucd94\uac00", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json index 299d43f37..9fd097070 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json index 71ae82096..51f1048b0 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Spesial - {0}", "Share": "Del", "Add": "Legg til", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json index a3c2ef036..80f0bbe17 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Speciaal - {0}", "Share": "Delen", "Add": "Toevoegen", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json index 22d7ed63c..f568c5264 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Dodaj", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json index 333f188a3..4f4402591 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Saiba Mais", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Compartilhar", "Add": "Adicionar", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json index 27a357a69..43ecce15d 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Partilhar", "Add": "Adicionar", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json index 1ebf457e7..ee5e1460b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json index 78faf153c..d8433504e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json @@ -2,8 +2,10 @@ "PromoConvertRecordingsToStreamingFormat": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Emby Premiere. \u0417\u0430\u043f\u0438\u0441\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 MP4 \u0438\u043b\u0438 MKV, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 Emby Server.", "HeaderConvertYourRecordings": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439", "HeaderLearnMore": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435...", - "HeaderKeepRecording": "Keep Recording", - "DeleteMedia": "Delete media", + "HeaderKeepRecording": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", + "DeleteMedia": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", "Share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f", "Add": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json index 299d43f37..9fd097070 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-SI.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-SI.json index c456b1ccf..258d38940 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-SI.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-SI.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json index 436460235..d4ac95650 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Specialavsnitt - {0}", "Share": "Dela", "Add": "L\u00e4gg till", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json index 625aea8a2..0dcf0063c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Ekle", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json index 7b2ca7985..2904d371b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Add", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json index b3c3f8037..792fcf5f4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "Th\u00eam", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-CN.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-CN.json index c791beedc..61945adc3 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-CN.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-CN.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u6dfb\u52a0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-HK.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-HK.json index 9511d0686..b098189c7 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-HK.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-HK.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Share", "Add": "\u65b0\u589e", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json index f0e4485ce..bf66d04ae 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json @@ -4,6 +4,8 @@ "HeaderLearnMore": "Learn More", "HeaderKeepRecording": "Keep Recording", "DeleteMedia": "Delete media", + "SeriesSettings": "Series settings", + "HeaderRecordingOptions": "Recording Options", "ValueSpecialEpisodeName": "Special - {0}", "Share": "\u5206\u4eab", "Add": "\u6dfb\u52a0", diff --git a/dashboard-ui/bower_components/hls.js/.bower.json b/dashboard-ui/bower_components/hls.js/.bower.json index bb16d9ac0..9086a86c4 100644 --- a/dashboard-ui/bower_components/hls.js/.bower.json +++ b/dashboard-ui/bower_components/hls.js/.bower.json @@ -1,6 +1,6 @@ { "name": "hls.js", - "version": "0.5.47", + "version": "0.5.48", "license": "Apache-2.0", "description": "Media Source Extension - HLS library, by/for Dailymotion", "homepage": "https://github.com/dailymotion/hls.js", @@ -16,11 +16,11 @@ "test", "tests" ], - "_release": "0.5.47", + "_release": "0.5.48", "_resolution": { "type": "version", - "tag": "v0.5.47", - "commit": "21becc9db79debff24e818fee2d961ed655e744b" + "tag": "v0.5.48", + "commit": "d37a6900d9a9c487b686b6cad4e8aabd5ad03893" }, "_source": "git://github.com/dailymotion/hls.js.git", "_target": "~0.5.7", diff --git a/dashboard-ui/bower_components/hls.js/bower.json b/dashboard-ui/bower_components/hls.js/bower.json index 2edfe2f88..5735c80ce 100644 --- a/dashboard-ui/bower_components/hls.js/bower.json +++ b/dashboard-ui/bower_components/hls.js/bower.json @@ -1,6 +1,6 @@ { "name": "hls.js", - "version": "0.5.47", + "version": "0.5.48", "license": "Apache-2.0", "description": "Media Source Extension - HLS library, by/for Dailymotion", "homepage": "https://github.com/dailymotion/hls.js", diff --git a/dashboard-ui/bower_components/hls.js/dist/hls.min.js b/dashboard-ui/bower_components/hls.js/dist/hls.min.js index 168b0f41d..8748a25ac 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.min.js +++ b/dashboard-ui/bower_components/hls.js/dist/hls.min.js @@ -1,5 +1,5 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Hls=e()}}(function(){return function s(e,t,r){function a(i,d){if(!t[i]){if(!e[i]){var l="function"==typeof require&&require;if(!d&&l)return l(i,!0);if(n)return n(i,!0);var u=new Error("Cannot find module '"+i+"'");throw u.code="MODULE_NOT_FOUND",u}var o=t[i]={exports:{}};e[i][0].call(o.exports,function(t){var r=e[i][1][t];return a(r?r:t)},o,o.exports,s,e,t,r)}return t[i].exports}for(var n="function"==typeof require&&require,i=0;ie||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},e.prototype.emit=function(l){var s,e,u,i,n,o;if(this._events||(this._events={}),"error"===l&&(!this._events.error||r(this._events.error)&&!this._events.error.length)){if(s=arguments[1],s instanceof Error)throw s;throw TypeError('Uncaught, unspecified "error" event.')}if(e=this._events[l],a(e))return!1;if(t(e))switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:i=Array.prototype.slice.call(arguments,1),e.apply(this,i)}else if(r(e))for(i=Array.prototype.slice.call(arguments,1),o=e.slice(),u=o.length,n=0;u>n;n++)o[n].apply(this,i);return!0},e.prototype.addListener=function(i,n){var s;if(!t(n))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",i,t(n.listener)?n.listener:n),this._events[i]?r(this._events[i])?this._events[i].push(n):this._events[i]=[this._events[i],n]:this._events[i]=n,r(this._events[i])&&!this._events[i].warned&&(s=a(this._maxListeners)?e.defaultMaxListeners:this._maxListeners,s&&s>0&&this._events[i].length>s&&(this._events[i].warned=!0,"function"==typeof console.trace)),this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(a,e){function r(){this.removeListener(a,r),i||(i=!0,e.apply(this,arguments))}if(!t(e))throw TypeError("listener must be a function");var i=!1;return r.listener=e,this.on(a,r),this},e.prototype.removeListener=function(i,a){var e,s,o,n;if(!t(a))throw TypeError("listener must be a function");if(!this._events||!this._events[i])return this;if(e=this._events[i],o=e.length,s=-1,e===a||t(e.listener)&&e.listener===a)delete this._events[i],this._events.removeListener&&this.emit("removeListener",i,a);else if(r(e)){for(n=o;n-- >0;)if(e[n]===a||e[n].listener&&e[n].listener===a){s=n;break}if(0>s)return this;1===e.length?(e.length=0,delete this._events[i]):e.splice(s,1),this._events.removeListener&&this.emit("removeListener",i,a)}return this},e.prototype.removeAllListeners=function(r){var a,e;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[r]&&delete this._events[r],this;if(0===arguments.length){for(a in this._events)"removeListener"!==a&&this.removeAllListeners(a);return this.removeAllListeners("removeListener"),this._events={},this}if(e=this._events[r],t(e))this.removeListener(r,e);else if(e)for(;e.length;)this.removeListener(r,e[e.length-1]);return delete this._events[r],this},e.prototype.listeners=function(e){var r;return r=this._events&&this._events[e]?t(this._events[e])?[this._events[e]]:this._events[e].slice():[]},e.prototype.listenerCount=function(r){if(this._events){var e=this._events[r];if(t(e))return 1;if(e)return e.length}return 0},e.listenerCount=function(e,t){return e.listenerCount(t)}},{}],2:[function(n,a,s){var i=arguments[3],e=arguments[4],r=arguments[5],t=JSON.stringify;a.exports=function(l){for(var a,s=Object.keys(r),n=0,d=s.length;d>n;n++){var o=s[n],u=r[o].exports;if(u===l||u.default===l){a=o;break}}if(!a){a=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var f={},n=0,d=s.length;d>n;n++){var o=s[n];f[o]=o}e[a]=[Function(["require","module","exports"],"("+l+")(self)"),f]}var h=Math.floor(Math.pow(16,8)*Math.random()).toString(16),c={};c[a]=a,e[h]=[Function(["require"],"var f = require("+t(a)+");(f.default ? f.default : f)(self);"),c];var v="("+i+")({"+Object.keys(e).map(function(r){return t(r)+":["+e[r][0]+","+t(e[r][1])+"]"}).join(",")+"},{},["+t(h)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL;return new Worker(g.createObjectURL(new Blob([v],{type:"text/javascript"})))}},{}],3:[function(e,m,o){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(o,"__esModule",{value:!0});var g=function(){function e(a,r){for(var t=0;t500*e.duration){var f=i.levels,h=Math.max(1,1e3*e.loaded/u),v=Math.max(e.loaded,Math.round(e.duration*f[e.level].bitrate/8)),c=s.currentTime,d=(v-e.loaded)/h,o=n.default.bufferInfo(s,c,i.config.maxBufferHole).end-c;if(o<2*e.duration&&d>o){var l=void 0,a=void 0;for(a=e.level-1;a>=0&&(l=e.duration*f[a].bitrate/(6.4*h),t.logger.log("fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay["+a+"] :"+d.toFixed(1)+"/"+o.toFixed(1)+"/"+l.toFixed(1)),!(o>l));a--);d>l&&(a=Math.max(0,a),i.nextLoadLevel=a,this.bwEstimator.sample(u,e.loaded),t.logger.warn("loading too slow, abort fragment loading and switch to level "+a),e.loader.abort(),this.clearTimer(),i.trigger(r.default.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e}))}}}}},{key:"onFragLoaded",value:function(t){var e=t.stats,r=t.frag;if(void 0===e.aborted&&1===r.loadCounter){var a=e.tload-e.trequest;this.bwEstimator.sample(a,e.loaded),r.bitrateTest?this.bitrateTestDelay=a/1e3:this.bitrateTestDelay=0}this.clearTimer(),this.lastLoadedFragLevel=t.frag.level,this._nextAutoLevel=-1}},{key:"onError",value:function(e){switch(e.details){case s.ErrorDetails.FRAG_LOAD_ERROR:case s.ErrorDetails.FRAG_LOAD_TIMEOUT:this.clearTimer()}}},{key:"clearTimer",value:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}},{key:"findBestLevel",value:function(g,f,s,v,u,c,h,l){for(var e=v;e>=0;e--){var d=l[e],n=d.details,o=n?n.totalduration/n.fragments.length:f,r=void 0;r=g>=e?c*s:h*s;var i=l[e].bitrate,a=i*o/r;if(t.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+e+"/"+Math.round(r)+"/"+i+"/"+o+"/"+u+"/"+a),r>i&&(!a||u>a))return e}return 0}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){this._autoLevelCapping=e}},{key:"nextAutoLevel",get:function(){var i,u=this.hls,a=u.levels,e=u.config;if(i=-1===this._autoLevelCapping&&a&&a.length?a.length-1:this._autoLevelCapping,-1!==this._nextAutoLevel)return Math.min(this._nextAutoLevel,i);var r=u.media,c=this.lastLoadedFragLevel,f=this.fragCurrent?this.fragCurrent.duration:0,v=r?r.currentTime:0,g=r&&0!==r.playbackRate?Math.abs(r.playbackRate):1,d=this.bwEstimator?this.bwEstimator.getEstimate():e.abrEwmaDefaultEstimate,l=(n.default.bufferInfo(r,v,e.maxBufferHole).end-v)/g,h=this.findBestLevel(c,f,d,i,l,e.abrBandWidthFactor,e.abrBandWidthUpFactor,a);if(h)return h;t.logger.trace("rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering");var o=e.maxStarvationDelay;if(0===l){var s=this.bitrateTestDelay;s&&(o-=s,t.logger.trace("bitrate test took "+Math.round(1e3*s)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*o)+" ms"))}return this.findBestLevel(c,f,d,i,l+o,e.abrBandWidthFactor,e.abrBandWidthUpFactor,a)},set:function(e){this._nextAutoLevel=e}}]),e}(i.default);o.default=y},{"../errors":21,"../event-handler":22,"../events":23,"../helper/buffer-helper":24,"../utils/logger":38,"./ewma-bandwidth-estimator":6}],4:[function(a,v,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function e(a,r){for(var t=0;tthis._msDuration&&(t.logger.log("Updating mediasource duration to "+this._levelDuration),e.duration=this._levelDuration,this._msDuration=this._levelDuration)}}}},{key:"doFlush",value:function(){for(;this.flushRange.length;){var r=this.flushRange[0];if(!this.flushBuffer(r.start,r.end))return void(this._needsFlush=!0);this.flushRange.shift(),this.flushBufferCounter=0}if(0===this.flushRange.length){this._needsFlush=!1;var a=0,t=this.sourceBuffer;if(t)for(var i in t)a+=t[i].buffered.length;this.appended=a,this.hls.trigger(e.default.BUFFER_FLUSHED)}}},{key:"doAppending",value:function(){var i=this.hls,s=this.sourceBuffer,n=this.segments;if(s){if(this.media.error)return n=[],void t.logger.error("trying to append although a media error occured, flush segment and abort");for(var l in s)if(s[l].updating)return;if(n.length){var o=n.shift();try{s[o.type].appendBuffer(o.data),this.appendError=0,this.appended++}catch(s){t.logger.error("error while trying to append buffer:"+s.message),n.unshift(o);var a={type:r.ErrorTypes.MEDIA_ERROR};if(22===s.code)return this.segments=[],a.details=r.ErrorDetails.BUFFER_FULL_ERROR,void i.trigger(e.default.ERROR,a);if(this.appendError?this.appendError++:this.appendError=1,a.details=r.ErrorDetails.BUFFER_APPEND_ERROR,a.frag=this.fragCurrent,this.appendError>i.config.appendErrorMaxRetry)return t.logger.log("fail "+i.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),n=[],a.fatal=!0,void i.trigger(e.default.ERROR,a);a.fatal=!1,i.trigger(e.default.ERROR,a)}}}}},{key:"flushBuffer",value:function(l,s){var e,r,o,n,a,i;if(this.flushBufferCounter.5)return this.flushBufferCounter++,t.logger.log("flush "+u+" ["+a+","+i+"], of ["+o+","+n+"], pos:"+this.media.currentTime),e.remove(a,i),!1}else t.logger.warn("abort flushing too many retries");return t.logger.log("buffer flushed"),!0}}]),a}(s.default);i.default=o},{"../errors":21,"../event-handler":22,"../events":23,"../utils/logger":38}],5:[function(e,h,t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(a,r){for(var t=0;tthis.autoLevelCapping&&this.hls.streamController.nextLevelSwitch(),this.autoLevelCapping=this.hls.autoLevelCapping)}}},{key:"getMaxLevel",value:function(n){var r=void 0,e=void 0,t=void 0,s=this.mediaWidth,o=this.mediaHeight,a=0,i=0;for(e=0;n>=e&&(t=this.levels[e],r=e,a=t.width,i=t.height,!(a>=s||i>=o));e++);return r}},{key:"contentScaleFactor",get:function(){var e=1;try{e=window.devicePixelRatio}catch(e){}return e}},{key:"mediaWidth",get:function(){var e=void 0;return this.media&&(e=this.media.width||this.media.clientWidth||this.media.offsetWidth,e*=this.contentScaleFactor),e}},{key:"mediaHeight",get:function(){var e=void 0;return this.media&&(e=this.media.height||this.media.clientHeight||this.media.offsetHeight,e*=this.contentScaleFactor),e}}]),e}(s.default);t.default=u},{"../event-handler":22,"../events":23}],6:[function(r,l,e){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(a,r){for(var t=0;t=0&&a1e3){r.logger.log("(re)loading playlist for level "+a);var o=i.urlId;this.hls.trigger(t.default.LEVEL_LOADING,{url:i.url[o],level:a,id:o})}}else this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.OTHER_ERROR,details:e.ErrorDetails.LEVEL_SWITCH_ERROR,level:a,fatal:!1,reason:"invalid level idx"})}},{key:"onError",value:function(n){if(!n.fatal){var i=n.details,o=this.hls,s=void 0,a=void 0,l=!1;switch(i){case e.ErrorDetails.FRAG_LOAD_ERROR:case e.ErrorDetails.FRAG_LOAD_TIMEOUT:case e.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case e.ErrorDetails.KEY_LOAD_ERROR:case e.ErrorDetails.KEY_LOAD_TIMEOUT:s=n.frag.level;break;case e.ErrorDetails.LEVEL_LOAD_ERROR:case e.ErrorDetails.LEVEL_LOAD_TIMEOUT:s=n.level,l=!0}if(void 0!==s)if(a=this._levels[s],a.urlIde&&(this._level===e&&void 0!==t[e].details||this.setLevelInternal(e))}},{key:"manualLevel",get:function(){return this._manualLevel},set:function(e){this._manualLevel=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){return void 0===this._startLevel?this._firstLevel:this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this._manualLevel?this._manualLevel:this.hls.abrController.nextAutoLevel},set:function(e){this.level=e,-1===this._manualLevel&&(this.hls.abrController.nextAutoLevel=e)}}]),a}(f.default);i.default=o},{"../errors":21,"../event-handler":22,"../events":23,"../utils/logger":38}],8:[function(i,A,o){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(o,"__esModule",{value:!0});var m=function(){function e(a,r){for(var t=0;t0?(t.logger.log("configure startPosition @"+a),this.lastPaused||(t.logger.log("resuming video"),r.play()),this.state=e.IDLE):(this.lastCurrentTime=this.startPosition?this.startPosition:i,this.state=e.STARTING),this.nextLoadPosition=this.startPosition=this.lastCurrentTime,this.tick()}else t.logger.warn("cannot start loading as manifest not parsed yet"),this.state=e.STOPPED}},{key:"stopLoad",value:function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=e.STOPPED}},{key:"tick",value:function(){this.ticks++,1===this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){var R,l,n,c=this.hls,o=c.config,h=this.media,b=h&&h.seeking;switch(this.state){case e.ERROR:case e.PAUSED:break;case e.STARTING:var _=c.startLevel;-1===_&&(_=0,this.fragBitrateTest=!0),this.level=c.nextLoadLevel=_,this.state=e.WAITING_LEVEL,this.loadedmetadata=!1;break;case e.IDLE:if(!h&&(this.startFragRequested||!o.startFragPrefetch))break;R=this.loadedmetadata?h.currentTime:this.nextLoadPosition,l=c.nextLoadLevel;var v,T=s.default.bufferInfo(h,R,o.maxBufferHole),P=T.len,f=T.end,u=this.fragPrevious;if(this.levels[l].hasOwnProperty("bitrate")?(v=Math.max(8*o.maxBufferSize/this.levels[l].bitrate,o.maxBufferLength),v=Math.min(v,o.maxMaxBufferLength)):v=o.maxBufferLength,v>P){if(c.nextLoadLevel=l,this.level=l,n=this.levels[l].details,"undefined"==typeof n||n.live&&this.levelLastLoaded!==l){this.state=e.WAITING_LEVEL;break}if(!n.live&&u&&u.sn===n.endSN&&(!b||h.duration-f<=u.duration/2)){this.hls.trigger(r.default.BUFFER_EOS),this.state=e.ENDED;break}var d=n.fragments,g=d.length,m=d[0].start,E=d[g-1].start+d[g-1].duration,i=void 0;if(n.live){var D=void 0!==o.liveMaxLatencyDuration?o.liveMaxLatencyDuration:o.liveMaxLatencyDurationCount*n.targetduration;if(fy&&(h.currentTime=y)}if(n.PTSKnown&&f>E)break;if(this.startFragRequested&&!n.PTSKnown){if(u){var A=u.sn+1;A>=n.startSN&&A<=n.endSN&&(i=d[A-n.startSN],t.logger.log("live playlist, switching playlist, load frag with next SN: "+i.sn))}i||(i=d[Math.min(g-1,Math.round(g/2))],t.logger.log("live playlist, switching playlist, unknown, load middle frag : "+i.sn))}}else m>f&&(i=d[0]);if(i||!function(){var e=o.maxFragLookUpTolerance;E>f?((f>E-e||b)&&(e=0),i=p.default.search(d,function(t){return t.start+t.duration-e<=f?1:t.start-e>f?-1:0})):i=d[g-1]}(),i){if(m=i.start,u&&i.level===u.level&&i.sn===u.sn){if(!(i.sno.maxBufferHole&&u.dropped?(i=d[k-1],t.logger.warn("SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this"),u.loadCounter--):(i=d[k+1],t.logger.log("SN just loaded, load next one: "+i.sn)),!i)break}if(null!=i.decryptdata.uri&&null==i.decryptdata.key)t.logger.log("Loading key for "+i.sn+" of ["+n.startSN+" ,"+n.endSN+"],level "+l),this.state=e.KEY_LOADING,c.trigger(r.default.KEY_LOADING,{frag:i});else{if(t.logger.log("Loading "+i.sn+" of ["+n.startSN+" ,"+n.endSN+"],level "+l+", currentTime:"+R+",bufferEnd:"+f.toFixed(3)),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,i.loadCounter){i.loadCounter++;var S=o.fragLoadingLoopThreshold;if(i.loadCounter>S&&Math.abs(this.fragLoadIdx-i.loadIdx)=w||b)&&(t.logger.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=e.IDLE);break;case e.STOPPED:case e.FRAG_LOADING:case e.PARSING:case e.PARSED:case e.ENDED:}this._checkBuffer(),this._checkFragmentChanged()}},{key:"getBufferRange",value:function(a){var e,t,r=this.bufferRange;if(r)for(e=r.length-1;e>=0;e--)if(t=r[e],a>=t.start&&a<=t.end)return t;return null}},{key:"followingBufferRange",value:function(e){return e?this.getBufferRange(e.end+.5):null}},{key:"isBuffered",value:function(r){var a=this.media;if(a)for(var t=a.buffered,e=0;e=t.start(e)&&r<=t.end(e))return!0;return!1}},{key:"_checkFragmentChanged",value:function(){var t,e,a=this.media;if(a&&a.seeking===!1&&(e=a.currentTime,e>a.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),this.isBuffered(e)?t=this.getBufferRange(e):this.isBuffered(e+.1)&&(t=this.getBufferRange(e+.1)),t)){var i=t.frag;i!==this.fragPlaying&&(this.fragPlaying=i,this.hls.trigger(r.default.FRAG_CHANGED,{frag:i}))}}},{key:"immediateLevelSwitch",value:function(){if(t.logger.log("immediateLevelSwitch"),!this.immediateSwitch){this.immediateSwitch=!0;var a=this.media,i=void 0;a?(i=a.paused,a.pause()):i=!0,this.previouslyPaused=i}var n=this.fragCurrent;n&&n.loader&&n.loader.abort(),this.fragCurrent=null,this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY})}},{key:"immediateLevelSwitchEnd",value:function(){this.immediateSwitch=!1;var e=this.media;e&&e.readyState&&(e.currentTime-=1e-4,this.previouslyPaused||e.play())}},{key:"nextLevelSwitch",value:function(){var t=this.media;if(t&&t.readyState){var n=void 0,i=void 0,a=void 0;if(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,i=this.getBufferRange(t.currentTime),i&&i.start>1&&(this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:0,endOffset:i.start-1})),t.paused)n=0;else{var l=this.hls.nextLoadLevel,u=this.levels[l],o=this.fragLastKbps;n=o&&this.fragCurrent?this.fragCurrent.duration*u.bitrate/(1e3*o)+1:0}if(a=this.getBufferRange(t.currentTime+n),a&&(a=this.followingBufferRange(a))){var s=this.fragCurrent;s&&s.loader&&s.loader.abort(),this.fragCurrent=null,this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:a.start,endOffset:Number.POSITIVE_INFINITY})}}}},{key:"onMediaAttached",value:function(r){var e=this.media=r.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("ended",this.onvended);var t=this.config;this.levels&&t.autoStartLoad&&this.hls.startLoad(t.startPosition)}},{key:"onMediaDetaching",value:function(){var e=this.media;e&&e.ended&&(t.logger.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var r=this.levels;r&&r.forEach(function(e){e.details&&e.details.fragments.forEach(function(e){e.loadCounter=void 0})}),e&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("seeked",this.onvseeked),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=null,this.loadedmetadata=!1,this.stopLoad()}},{key:"onMediaSeeking",value:function(){if(this.state===e.FRAG_LOADING){if(0===s.default.bufferInfo(this.media,this.media.currentTime,this.config.maxBufferHole).len){t.logger.log("seeking outside of buffer while fragment load in progress, cancel fragment load");var r=this.fragCurrent;r&&(r.loader&&r.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.state=e.IDLE}}else this.state===e.ENDED&&(this.state=e.IDLE);this.media&&(this.lastCurrentTime=this.media.currentTime),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.tick()}},{key:"onMediaSeeked",value:function(){this.tick()}},{key:"onMediaEnded",value:function(){t.logger.log("media ended"),this.startPosition=this.lastCurrentTime=0}},{key:"onManifestLoading",value:function(){t.logger.log("trigger BUFFER_RESET"),this.hls.trigger(r.default.BUFFER_RESET),this.bufferRange=[],this.stalled=!1}},{key:"onManifestParsed",value:function(r){var e,a=!1,i=!1;r.levels.forEach(function(t){e=t.audioCodec,e&&(-1!==e.indexOf("mp4a.40.2")&&(a=!0),-1!==e.indexOf("mp4a.40.5")&&(i=!0))}),this.audioCodecSwitch=a&&i,this.audioCodecSwitch&&t.logger.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=r.levels,this.startLevelLoaded=!1,this.startFragRequested=!1;var n=this.config;n.autoStartLoad&&this.hls.startLoad(n.startPosition)}},{key:"onLevelLoaded",value:function(o){var a=o.details,i=o.level,l=this.levels[i],d=a.totalduration,n=0;if(t.logger.log("level "+i+" loaded ["+a.startSN+","+a.endSN+"],duration:"+d),this.levelLastLoaded=i,a.live){var f=l.details;f?(u.default.mergeDetails(f,a),n=a.fragments[0].start,a.PTSKnown?t.logger.log("live playlist sliding:"+n.toFixed(3)):t.logger.log("live playlist - outdated PTS, unknown sliding")):(a.PTSKnown=!1,t.logger.log("live playlist - first load, unknown sliding"))}else a.PTSKnown=!1;if(l.details=a,this.hls.trigger(r.default.LEVEL_UPDATED,{details:a,level:i}),this.startFragRequested===!1){if(-1===this.startPosition){var s=a.startTimeOffset;if(isNaN(s))if(a.live){var h=void 0!==this.config.liveSyncDuration?this.config.liveSyncDuration:this.config.liveSyncDurationCount*a.targetduration;this.startPosition=Math.max(0,n+d-h)}else this.startPosition=0;else t.logger.log("start time offset found in playlist, adjust startPosition to "+s),this.startPosition=s}this.nextLoadPosition=this.startPosition}this.state===e.WAITING_LEVEL&&(this.state=e.IDLE),this.tick()}},{key:"onKeyLoaded",value:function(){this.state===e.KEY_LOADING&&(this.state=e.IDLE,this.tick())}},{key:"onFragLoaded",value:function(n){var a=this.fragCurrent,s=n.frag;if(this.state===e.FRAG_LOADING&&a&&s.level===a.level&&s.sn===a.sn){var o=n.stats;if(t.logger.log("Loaded "+a.sn+" of level "+a.level),this.fragBitrateTest=!1,s.bitrateTest===!0&&this.hls.nextLoadLevel)this.state=e.IDLE,this.startFragRequested=!1,o.tparsed=o.tbuffered=performance.now(),this.hls.trigger(r.default.FRAG_BUFFERED,{stats:n.stats,frag:a}),this.tick();else{this.state=e.PARSING,this.stats=o;var l=this.levels[this.level],u=l.details,v=u.totalduration,c=void 0===a.startDTS||isNaN(a.startDTS)?a.start:a.startDTS,f=a.level,h=a.sn,i=l.audioCodec||this.config.defaultAudioCodec;this.audioCodecSwap&&(t.logger.log("swapping playlist audio codec"),void 0===i&&(i=this.lastAudioCodec),i&&(i=-1!==i.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5")),this.pendingAppending=0,t.logger.log("Demuxing "+h+" of ["+u.startSN+" ,"+u.endSN+"],level "+f+", cc "+a.cc);var d=this.demuxer;d&&d.push(n.payload,i,l.videoCodec,c,a.cc,f,h,v,a.decryptdata)}}this.fragLoadError=0}},{key:"onFragParsingInitSegment",value:function(l){if(this.state===e.PARSING){var o,a,i=l.tracks;if(a=i.audio){var n=this.levels[this.level].audioCodec,u=navigator.userAgent.toLowerCase();n&&this.audioCodecSwap&&(t.logger.log("swapping playlist audio codec"),n=-1!==n.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==a.metadata.channelCount&&-1===u.indexOf("firefox")&&(n="mp4a.40.5"),-1!==u.indexOf("android")&&(n="mp4a.40.2",t.logger.log("Android: force audio codec to"+n)),a.levelCodec=n}if(a=i.video,a&&(a.levelCodec=this.levels[this.level].videoCodec),l.unique){var s={codec:"",levelCodec:""};for(o in l.tracks)a=i[o],s.container=a.container,s.codec&&(s.codec+=",",s.levelCodec+=","),a.codec&&(s.codec+=a.codec),a.levelCodec&&(s.levelCodec+=a.levelCodec);i={audiovideo:s}}this.hls.trigger(r.default.BUFFER_CODECS,i);for(o in i){a=i[o],t.logger.log("track:"+o+",container:"+a.container+",codecs[level/parsed]=["+a.levelCodec+"/"+a.codec+"]");var d=a.initSegment;d&&(this.pendingAppending++,this.hls.trigger(r.default.BUFFER_APPENDING,{type:o,data:d}))}this.tick()}}},{key:"onFragParsingData",value:function(a){var o=this;if(this.state===e.PARSING){this.tparse2=Date.now();var n=this.levels[this.level],i=this.fragCurrent;t.logger.log("parsed "+a.type+",PTS:["+a.startPTS.toFixed(3)+","+a.endPTS.toFixed(3)+"],DTS:["+a.startDTS.toFixed(3)+"/"+a.endDTS.toFixed(3)+"],nb:"+a.nb+",dropped:"+(a.dropped||0));var l=u.default.updateFragPTSDTS(n.details,i.sn,a.startPTS,a.endPTS,a.startDTS,a.endDTS),s=this.hls;s.trigger(r.default.LEVEL_PTS_UPDATED,{details:n.details,level:this.level,drift:l}),"video"===a.type&&(i.dropped=a.dropped),[a.data1,a.data2].forEach(function(e){e&&(o.pendingAppending++,s.trigger(r.default.BUFFER_APPENDING,{type:a.type,data:e}))}),this.nextLoadPosition=a.endPTS,this.bufferRange.push({type:a.type,start:a.startPTS,end:a.endPTS,frag:i}),this.tick()}else t.logger.warn("not in PARSING state but "+this.state+", ignoring FRAG_PARSING_DATA event")}},{key:"onFragParsed",value:function(){this.state===e.PARSING&&(this.stats.tparsed=performance.now(),this.state=e.PARSED,this._checkAppendedParsed())}},{key:"onBufferAppended",value:function(){switch(this.state){case e.PARSING:case e.PARSED:this.pendingAppending--,this._checkAppendedParsed()}}},{key:"_checkAppendedParsed",value:function(){if(this.state===e.PARSED&&0===this.pendingAppending){var i=this.fragCurrent,a=this.stats;i&&(this.fragPrevious=i,a.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*a.length/(a.tbuffered-a.tfirst)),this.hls.trigger(r.default.FRAG_BUFFERED,{stats:a,frag:i}),t.logger.log("media buffered : "+this.timeRangesToString(this.media.buffered)),this.state=e.IDLE),this.tick()}}},{key:"onError",value:function(i){switch(i.details){case a.ErrorDetails.FRAG_LOAD_ERROR:case a.ErrorDetails.FRAG_LOAD_TIMEOUT:if(!i.fatal){var n=this.fragLoadError;if(n?n++:n=1,n<=this.config.fragLoadingMaxRetry||this.media&&this.isBuffered(this.media.currentTime)){this.fragLoadError=n,i.frag.loadCounter=0;var s=Math.min(Math.pow(2,n-1)*this.config.fragLoadingRetryDelay,64e3);t.logger.warn("mediaController: frag loading failed, retry in "+s+" ms"),this.retryDate=performance.now()+s,this.state=e.FRAG_LOADING_WAITING_RETRY}else t.logger.error("mediaController: "+i.details+" reaches max retry, redispatch as fatal ..."),i.fatal=!0,this.hls.trigger(r.default.ERROR,i),this.state=e.ERROR}break;case a.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case a.ErrorDetails.LEVEL_LOAD_ERROR:case a.ErrorDetails.LEVEL_LOAD_TIMEOUT:case a.ErrorDetails.KEY_LOAD_ERROR:case a.ErrorDetails.KEY_LOAD_TIMEOUT:this.state!==e.ERROR&&(this.state=i.fatal?e.ERROR:e.IDLE,t.logger.warn("mediaController: "+i.details+" while loading frag,switch to "+this.state+" state ..."));break;case a.ErrorDetails.BUFFER_FULL_ERROR:this.state!==e.PARSING&&this.state!==e.PARSED||(this.config.maxMaxBufferLength/=2,t.logger.warn("reduce max buffer length to "+this.config.maxMaxBufferLength+"s and switch to IDLE state"),this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.state=e.IDLE)}}},{key:"_checkBuffer",value:function(){var e=this.media;if(e&&e.readyState){var n=e.currentTime,u=e.buffered;if(!this.loadedmetadata&&u.length){this.loadedmetadata=!0;var i=this.startPosition;if(!n&&n!==i&&i){t.logger.log("target start position:"+i);var l=u.start(0),g=u.end(0);(l>i||i>g)&&(i=l,t.logger.log("target start position not buffered, seek to buffered.start(0) "+l)),t.logger.log("adjust currentTime from "+n+" to "+i),e.currentTime=i}}else{var d=s.default.bufferInfo(e,n,0),v=!(e.paused||e.ended||0===e.buffered.length),f=.4,h=n>e.playbackRate*this.lastCurrentTime;if(this.stalled&&h&&(this.stalled=!1,t.logger.log("playback not stuck anymore @"+n)),v&&d.len<=f&&(h?(f=0,this.seekHoleNudgeDuration=0):this.stalled?this.seekHoleNudgeDuration+=this.config.seekHoleNudgeDuration:(this.seekHoleNudgeDuration=0,t.logger.log("playback seems stuck @"+n),this.hls.trigger(r.default.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1}),this.stalled=!0),d.len<=f)){var o=d.nextStart,c=o-n;if(o&&c0){t.logger.log("adjust currentTime from "+e.currentTime+" to next buffered @ "+o+" + nudge "+this.seekHoleNudgeDuration);var p=o+this.seekHoleNudgeDuration-e.currentTime;e.currentTime=o+this.seekHoleNudgeDuration,this.hls.trigger(r.default.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,hole:p})}}}}}},{key:"onFragLoadEmergencyAborted",value:function(){this.state=e.IDLE,this.tick()}},{key:"onBufferFlushed",value:function(){var t,r,a=[];for(r=0;re;e++)r+="["+t.start(e)+","+t.end(e)+"]";return r}},{key:"currentLevel",get:function(){if(this.media){var e=this.getBufferRange(this.media.currentTime);if(e)return e.frag.level}return-1}},{key:"nextBufferRange",get:function(){return this.media?this.followingBufferRange(this.getBufferRange(this.media.currentTime)):null}},{key:"nextLevel",get:function(){var e=this.nextBufferRange;return e?e.frag.level:-1}}]),i}(l.default);o.default=f},{"../demux/demuxer":17,"../errors":21,"../event-handler":22,"../events":23,"../helper/buffer-helper":24,"../helper/level-helper":25,"../utils/binary-search":35,"../utils/logger":38}],9:[function(t,v,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(a,"__esModule",{value:!0});var c=function(){function e(a,r){for(var t=0;te;e++)c[(i[e]=e<<1^283*(e>>7))^e]=e;for(a=r=0;!h[a];a^=u||1,r=c[r]||1)for(t=r^r<<1^r<<2^r<<3^r<<4,t=t>>8^255&t^99,h[a]=t,v[t]=a,d=i[f=i[u=i[a]]],l=16843009*d^65537*f^257*u^16843008*a,s=257*i[t]^16843008*t,e=0;4>e;e++)n[e][a]=s=s<<24^s>>>8,o[e][t]=l=l<<24^l>>>8;for(e=0;5>e;e++)n[e]=n[e].slice(0),o[e]=o[e].slice(0)}},{key:"decrypt",value:function(R,p,_,b,E,m){var h,g,v,n,e=this._key[1],t=R^e[0],a=b^e[1],i=_^e[2],r=p^e[3],y=e.length/4-2,s=4,o=this._tables[1],f=o[0],d=o[1],u=o[2],l=o[3],c=o[4];for(n=0;y>n;n++)h=f[t>>>24]^d[a>>16&255]^u[i>>8&255]^l[255&r]^e[s],g=f[a>>>24]^d[i>>16&255]^u[r>>8&255]^l[255&t]^e[s+1],v=f[i>>>24]^d[r>>16&255]^u[t>>8&255]^l[255&a]^e[s+2],r=f[r>>>24]^d[t>>16&255]^u[a>>8&255]^l[255&i]^e[s+3],s+=4,t=h,a=g,i=v;for(n=0;4>n;n++)E[(3&-n)+m]=c[t>>>24]<<24^c[a>>16&255]<<16^c[i>>8&255]<<8^c[255&r]^e[s++],h=t,t=a,a=i,i=r,r=h}}]),e}();e.default=a},{}],11:[function(t,l,e){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function e(a,r){for(var t=0;t>8|e>>>24}},{key:"doDecrypt",value:function(a,g,i){var u,h,o,f,l,c,d,n,e,r=new Int32Array(a.buffer,a.byteOffset,a.byteLength>>2),p=new s.default(Array.prototype.slice.call(g)),v=new Uint8Array(a.byteLength),t=new Int32Array(v.buffer);for(u=~~i[0],h=~~i[1],o=~~i[2],f=~~i[3],e=0;ee&&(255!==t[e]||240!==(240&t[e+1]));e++);for(r.audiosamplerate||(i=o.default.getAudioConfig(this.observer,t,e,p),r.config=i.config,r.audiosamplerate=i.samplerate,r.channelCount=i.channelCount,r.codec=i.codec,r.duration=y,l.logger.log("parsed codec:"+r.codec+",rate:"+i.samplerate+",nb channel:"+i.channelCount)),c=0,g=9216e4/r.audiosamplerate;u>e+5&&(s=1&t[e+1]?7:9,n=(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5,n-=s,n>0&&u>=e+s+n);)for(f=h+c*g,v={unit:t.subarray(e+s,e+s+n),pts:f,dts:f},r.samples.push(v),r.len+=n,e+=n+s,c++;u-1>e&&(255!==t[e]||240!==(240&t[e+1]));e++);this.remuxer.remux(this._aacTrack,{samples:[]},{samples:[{pts:h,dts:h,unit:d.payload}]},{samples:[]},m)}},{key:"destroy",value:function(){}}],[{key:"probe",value:function(t){var e,r,i=new a.default(t);if(i.hasTimeStamp)for(e=i.length,r=t.length;r-1>e;e++)if(255===t[e]&&240===(240&t[e+1]))return!0;return!1}}]),e}();t.default=s},{"../demux/id3":19,"../utils/logger":38,"./adts":14}],14:[function(e,o,t){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(a,r){for(var t=0;t>>6)+1,e=(60&u[l+2])>>>2,e>d.length-1?void h.trigger(Event.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+e}):(o=(1&u[l+2])<<2,o|=(192&u[l+3])>>>6,n.logger.log("manifest codec:"+i+",ADTS data:type:"+a+",sampleingIndex:"+e+"["+d[e]+"Hz],channelConfig:"+o),-1!==f.indexOf("firefox")?e>=6?(a=5,t=new Array(4),s=e-3):(a=2,t=new Array(2),s=e):-1!==f.indexOf("android")?(a=2,t=new Array(2),s=e):(a=5,t=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&e>=6?s=e-3:((i&&-1!==i.indexOf("mp4a.40.2")&&e>=6&&1===o||!i&&1===o)&&(a=2,t=new Array(2)),s=e)),t[0]=a<<3,t[0]|=(14&e)>>1,t[1]|=(1&e)<<7,t[1]|=o<<3,5===a&&(t[1]|=(14&s)>>1,t[2]=(1&s)<<7,t[2]|=8,t[3]=0),{config:t,samplerate:d[e],channelCount:o,codec:"mp4a.40."+a})}}]),e}();t.default=s},{"../errors":21,"../utils/logger":38}],15:[function(e,y,a){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(a,"__esModule",{value:!0});var h=function(){function e(a,r){for(var t=0;t1?r-1:0),e=1;r>e;e++)i[e-1]=arguments[e];t.emit.apply(t,[a,a].concat(i))},t.off=function(i){for(var r=arguments.length,a=Array(r>1?r-1:0),e=1;r>e;e++)a[e-1]=arguments[e];t.removeListener.apply(t,[i].concat(a))},r.addEventListener("message",function(a){var e=a.data;switch(e.cmd){case"init":r.demuxer=new u.default(t,e.typeSupported);break;case"demux":r.demuxer.push(new Uint8Array(e.data),e.audioCodec,e.videoCodec,e.timeOffset,e.cc,e.level,e.sn,e.duration)}}),t.on(e.default.FRAG_PARSING_INIT_SEGMENT,function(t,e){r.postMessage({event:t,tracks:e.tracks,unique:e.unique})}),t.on(e.default.FRAG_PARSING_DATA,function(a,e){var t={event:a,type:e.type,startPTS:e.startPTS,endPTS:e.endPTS,startDTS:e.startDTS,endDTS:e.endDTS,data1:e.data1.buffer,data2:e.data2.buffer,nb:e.nb,dropped:e.dropped};r.postMessage(t,[t.data1,t.data2])}),t.on(e.default.FRAG_PARSED,function(e){r.postMessage({event:e})}),t.on(e.default.ERROR,function(e,t){r.postMessage({event:e,data:t})}),t.on(e.default.FRAG_PARSING_METADATA,function(e,t){var a={event:e,samples:t.samples};r.postMessage(a)}),t.on(e.default.FRAG_PARSING_USERDATA,function(e,t){var a={event:e,samples:t.samples};r.postMessage(a)})};a.default=o},{"../demux/demuxer-inline":15,"../events":23,events:1}],17:[function(t,p,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(a,"__esModule",{value:!0});var u=function(){function e(a,r){for(var t=0;t0&&null!=e&&null!=e.key&&"AES-128"===e.method){null==this.decrypter&&(this.decrypter=new v.default(this.hls));var u=this;this.decrypter.decrypt(t,e.key,e.iv,function(e){u.pushDecrypted(e,r,a,i,n,s,o,l)})}else this.pushDecrypted(t,r,a,i,n,s,o,l)}},{key:"onWorkerMessage",value:function(a){var t=a.data;switch(t.event){case e.default.FRAG_PARSING_INIT_SEGMENT:var r={};r.tracks=t.tracks,r.unique=t.unique,this.hls.trigger(e.default.FRAG_PARSING_INIT_SEGMENT,r);break;case e.default.FRAG_PARSING_DATA:this.hls.trigger(e.default.FRAG_PARSING_DATA,{data1:new Uint8Array(t.data1),data2:new Uint8Array(t.data2),startPTS:t.startPTS,endPTS:t.endPTS,startDTS:t.startDTS,endDTS:t.endDTS,type:t.type,nb:t.nb,dropped:t.dropped});break;case e.default.FRAG_PARSING_METADATA:this.hls.trigger(e.default.FRAG_PARSING_METADATA,{samples:t.samples});break;case e.default.FRAG_PARSING_USERDATA:this.hls.trigger(e.default.FRAG_PARSING_USERDATA,{samples:t.samples});break;default:this.hls.trigger(t.event,t.data)}}}]),r}();a.default=o},{"../crypt/decrypter":12,"../demux/demuxer-inline":15,"../demux/demuxer-worker":16,"../errors":21,"../events":23,"../utils/logger":38,webworkify:2}],18:[function(t,s,e){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function e(a,r){for(var t=0;te?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}},{key:"readBits",value:function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;return t>32&&i.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0?r<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"skipEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBoolean",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"readUShort",value:function(){return this.readBits(16)}},{key:"readUInt",value:function(){return this.readBits(32)}},{key:"skipScalingList",value:function(i){var t,a,r=8,e=8;for(t=0;i>t;t++)0!==e&&(a=this.readEG(),e=(r+a+256)%256),r=0===e?r:e}},{key:"readSPS",value:function(){var t,g,p,l,i,n,a,o,r,s=0,d=0,f=0,h=0,c=1;if(this.readUByte(),t=this.readUByte(),g=this.readBits(5),this.skipBits(3),p=this.readUByte(),this.skipUEG(),100===t||110===t||122===t||244===t||44===t||83===t||86===t||118===t||128===t){var v=this.readUEG();if(3===v&&this.skipBits(1),this.skipUEG(),this.skipUEG(),this.skipBits(1),this.readBoolean())for(o=3!==v?8:12,r=0;o>r;r++)this.readBoolean()&&(6>r?this.skipScalingList(16):this.skipScalingList(64))}this.skipUEG();var u=this.readUEG();if(0===u)this.readUEG();else if(1===u)for(this.skipBits(1),this.skipEG(),this.skipEG(),l=this.readUEG(),r=0;l>r;r++)this.skipEG();if(this.skipUEG(),this.skipBits(1),i=this.readUEG(),n=this.readUEG(),a=this.readBits(1),0===a&&this.skipBits(1),this.skipBits(1),this.readBoolean()&&(s=this.readUEG(),d=this.readUEG(),f=this.readUEG(),h=this.readUEG()),this.readBoolean()&&this.readBoolean()){var e=void 0,y=this.readUByte();switch(y){case 1:e=[1,1];break;case 2:e=[12,11];break;case 3:e=[10,11];break;case 4:e=[16,11];break;case 5:e=[40,33];break;case 6:e=[24,11];break;case 7:e=[20,11];break;case 8:e=[32,11];break;case 9:e=[80,33];break;case 10:e=[18,11];break;case 11:e=[15,11];break;case 12:e=[64,33];break;case 13:e=[160,99];break;case 14:e=[4,3];break;case 15:e=[3,2];break;case 16:e=[2,1];break;case 255:e=[this.readUByte()<<8|this.readUByte(),this.readUByte()<<8|this.readUByte()]}e&&(c=e[0]/e[1])}return{width:Math.ceil((16*(i+1)-2*s-2*d)*c),height:(2-a)*(n+1)*16-(a?2:4)*(f+h)}}},{key:"readSliceType",value:function(){return this.readUByte(),this.readUEG(),this.readUEG()}}]),e}();e.default=n},{"../utils/logger":38}],19:[function(r,s,t){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(a,r){for(var t=0;tr);return t}},{key:"_parseID3Frames",value:function(r,t,n){for(var i,s,o,l,a;n>=t+8;)switch(i=this.readUTF(r,t,4),t+=4,s=r[t++]<<24+r[t++]<<16+r[t++]<<8+r[t++],l=r[t++]<<8+r[t++],o=t,i){case"PRIV":if("com.apple.streaming.transportStreamTimestamp"===this.readUTF(r,t,44)){t+=44,t+=4;var u=1&r[t++];this._hasTimeStamp=!0,a=((r[t++]<<23)+(r[t++]<<15)+(r[t++]<<7)+r[t++])/45,u&&(a+=47721858.84),a=Math.round(a),e.logger.trace("ID3 timestamp found: "+a),this._timeStamp=a}}}},{key:"hasTimeStamp",get:function(){return this._hasTimeStamp}},{key:"timeStamp",get:function(){return this._timeStamp}},{key:"length",get:function(){return this._length}},{key:"payload",get:function(){return this._payload}}]),t}();t.default=n},{"../utils/logger":38}],20:[function(t,v,i){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var f=function(){function e(a,r){for(var t=0;tt;t+=188)if(71===a[t]){if(d=!!(64&a[t+1]),u=((31&a[t+1])<<8)+a[t+2],y=(48&a[t+3])>>4,y>1){if(i=t+5+a[t+4],i===t+188)continue}else i=t+4;if(g)if(u===h){if(d){if(s&&(this._parseAVCPES(this._parsePES(s)),b&&this._avcTrack.codec&&(-1===f||this._aacTrack.codec)))return void this.remux(a);s={data:[],size:0}}s&&(s.data.push(a.subarray(i,t+188)),s.size+=t+188-i)}else if(u===f){if(d){if(o&&(this._parseAACPES(this._parsePES(o)),b&&this._aacTrack.codec&&(-1===h||this._avcTrack.codec)))return void this.remux(a);o={data:[],size:0}}o&&(o.data.push(a.subarray(i,t+188)),o.size+=t+188-i)}else u===_&&(d&&(l&&this._parseID3PES(this._parsePES(l)),l={data:[],size:0}),l&&(l.data.push(a.subarray(i,t+188)),l.size+=t+188-i));else d&&(i+=a[i]+1),0===u?this._parsePAT(a,i):u===this._pmtId?(this._parsePMT(a,i),g=this.pmtParsed=!0,h=this._avcTrack.id,f=this._aacTrack.id,_=this._id3Track.id,v&&(e.logger.log("reparse from beginning"),v=!1,t=-188)):(e.logger.log("unknown PID found before PAT/PMT"),v=!0)}else this.observer.trigger(n.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});s&&this._parseAVCPES(this._parsePES(s)),o&&this._parseAACPES(this._parsePES(o)),l&&this._parseID3PES(this._parsePES(l)),this.remux(null)}},{key:"remux",value:function(e){this.remuxer.remux(this._aacTrack,this._avcTrack,this._id3Track,this._txtTrack,this.timeOffset,this.contiguous,e)}},{key:"destroy",value:function(){this.switchLevel(),this._initPTS=this._initDTS=void 0,this._duration=0}},{key:"_parsePAT",value:function(e,t){this._pmtId=(31&e[t+10])<<8|e[t+11]}},{key:"_parsePMT",value:function(r,t){var i,n,s,a;for(i=(15&r[t+1])<<8|r[t+2],n=t+3+i-4,s=(15&r[t+10])<<8|r[t+11],t+=12+s;n>t;){switch(a=(31&r[t+1])<<8|r[t+2],r[t]){case 15:this._aacTrack.id=a;break;case 21:this._id3Track.id=a;break;case 27:this._avcTrack.id=a;break;default:e.logger.log("unkown stream type:"+r[t])}t+=((15&r[t+3])<<8|r[t+4])+5}}},{key:"_parsePES",value:function(o){var e,n,h,d,u,l,a,r,t,f=0,s=o.data;if(e=s[0],h=(e[0]<<16)+(e[1]<<8)+e[2],1===h){for(d=(e[4]<<8)+e[5],n=e[7],192&n&&(a=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,a>4294967295&&(a-=8589934592),64&n?(r=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r>4294967295&&(r-=8589934592)):r=a),u=e[8],t=u+9,o.size-=t,l=new Uint8Array(o.size);s.length;){e=s.shift();var i=e.byteLength;if(t){if(t>i){t-=i;continue}e=e.subarray(t),i-=t,t=0}l.set(e,f),f+=i}return{data:l,pts:a,dts:r,len:d}}return null}},{key:"_parseAVCPES",value:function(a){var t,m,n,o,y=this,r=this._avcTrack,u=r.samples,p=this._parseAVCNALu(a.data),d=[],l=!1,c=!1,f=0;if(0===p.length&&u.length>0){var v=u[u.length-1],h=v.units.units[v.units.units.length-1],g=new Uint8Array(h.data.byteLength+a.data.byteLength);g.set(h.data,0),g.set(a.data,h.data.byteLength),h.data=g,v.units.length+=a.data.byteLength,r.len+=a.data.byteLength}a.data=null;var i="",E=function(){d.length&&(c===!0||r.sps&&(u.length||this.contiguous)?(m={units:{units:d,length:f},pts:a.pts,dts:a.dts,key:c},u.push(m),r.len+=f,r.nbNalu+=d.length):r.dropped++,d=[],f=0)}.bind(this);p.forEach(function(e){switch(e.type){case 1:n=!0,l&&(i+="NDR ");break;case 5:n=!0,l&&(i+="IDR "),c=!0;break;case 6:n=!0,l&&(i+="SEI "),t=new s.default(e.data),t.readUByte();var b=t.readUByte();if(4===b){var g=0;do g=t.readUByte();while(255===g);var A=t.readUByte();if(181===A){var R=t.readUShort();if(49===R){var T=t.readUInt();if(1195456820===T){var k=t.readUByte();if(3===k){var v=t.readUByte(),_=t.readUByte(),S=31&v,h=[v,_];for(o=0;S>o;o++)h.push(t.readUByte()),h.push(t.readUByte()),h.push(t.readUByte());y._txtTrack.samples.push({type:3,pts:a.pts,bytes:h})}}}}}break;case 7:if(n=!0,l&&(i+="SPS "),!r.sps){t=new s.default(e.data);var p=t.readSPS();r.width=p.width,r.height=p.height,r.sps=[e.data],r.duration=y._duration;var L=e.data.subarray(1,4),m="avc1.";for(o=0;3>o;o++){var u=L[o].toString(16);u.length<2&&(u="0"+u),m+=u}r.codec=m}break;case 8:n=!0,l&&(i+="PPS "),r.pps||(r.pps=[e.data]);break;case 9:n=!1,l&&(i+="AUD "),E();break;default:n=!1,i+="unknown NAL "+e.type+" "}n&&(d.push(e),f+=e.data.byteLength)}),(l||i.length)&&e.logger.log(i),E()}},{key:"_parseAVCNALu",value:function(r){for(var s,a,l,_,n,d,t=0,g=r.byteLength,e=this.avcNaluState,v=[];g>t;)switch(s=r[t++],e){case 0:0===s&&(e=1);break;case 1:e=0===s?2:0;break;case 2:case 3:if(0===s)e=3;else if(1===s&&g>t){if(_=31&r[t],n)l={data:r.subarray(n,t-e-1),type:d},v.push(l);else{var i=this.avcNaluState;if(i&&4-i>=t){var m=this._avcTrack,c=m.samples;if(c.length){var p=c[c.length-1],R=p.units.units,u=R[R.length-1];u.state&&(u.data=u.data.subarray(0,u.data.byteLength-i),p.units.length-=i,m.len-=i)}}if(a=t-e-1,a>0){var y=this._avcTrack,h=y.samples;if(h.length){var E=h[h.length-1],b=E.units.units,o=b[b.length-1],f=new Uint8Array(o.data.byteLength+a);f.set(o.data,0),f.set(r.subarray(0,a),o.data.byteLength),o.data=f,E.units.length+=a,y.len+=a}}}n=t,d=_,e=0}else e=0}return n&&(l={data:r.subarray(n,g),type:d,state:e},v.push(l),this.avcNaluState=e),v}},{key:"_parseAACPES",value:function(R){var l,o,p,E,t,d,f,s,_,i=this._aacTrack,a=R.data,v=R.pts,L=0,T=this._duration,A=this.audioCodec,u=this.aacOverFlow,b=this.aacLastPTS;if(u){var m=new Uint8Array(u.byteLength+a.byteLength);m.set(u,0),m.set(a,u.byteLength),a=m}for(t=L,s=a.length;s-1>t&&(255!==a[t]||240!==(240&a[t+1]));t++);if(t){var y,h;if(s-1>t?(y="AAC PES did not start with ADTS header,offset:"+t,h=!1):(y="no ADTS header found in AAC PES",h=!0),this.observer.trigger(n.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:h,reason:y}),h)return}if(i.audiosamplerate||(l=c.default.getAudioConfig(this.observer,a,t,A),i.config=l.config,i.audiosamplerate=l.samplerate,i.channelCount=l.channelCount,i.codec=l.codec,i.duration=T,e.logger.log("parsed codec:"+i.codec+",rate:"+l.samplerate+",nb channel:"+l.channelCount)),E=0,p=9216e4/i.audiosamplerate,u&&b){var g=b+p;Math.abs(g-v)>1&&(e.logger.log("AAC: align PTS for overlapping frames by "+Math.round((g-v)/90)),v=g)}for(;s>t+5&&(d=1&a[t+1]?7:9,o=(3&a[t+3])<<11|a[t+4]<<3|(224&a[t+5])>>>5,o-=d,o>0&&s>=t+d+o);)for(f=v+E*p,_={unit:a.subarray(t+d,t+d+o),pts:f,dts:f},i.samples.push(_),i.len+=o,t+=o+d,E++;s-1>t&&(255!==a[t]||240!==(240&a[t+1]));t++);u=s>t?a.subarray(t,s):null,this.aacOverFlow=u,this.aacLastPTS=f}},{key:"_parseID3PES",value:function(e){this._id3Track.samples.push(e)}}],[{key:"probe",value:function(e){return e.length>=564&&71===e[0]&&71===e[188]&&71===e[376]}}]),t}();i.default=o},{"../errors":21,"../events":23,"../utils/logger":38,"./adts":14,"./exp-golomb":18}],21:[function(t,r,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.ErrorTypes={NETWORK_ERROR:"networkError",MEDIA_ERROR:"mediaError",OTHER_ERROR:"otherError"},e.ErrorDetails={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",MANIFEST_INCOMPATIBLE_CODECS_ERROR:"manifestIncompatibleCodecsError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOOP_LOADING_ERROR:"fragLoopLoadingError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError",BUFFER_STALLED_ERROR:"bufferStalledError",BUFFER_FULL_ERROR:"bufferFullError",BUFFER_SEEK_OVER_HOLE:"bufferSeekOverHole",INTERNAL_EXCEPTION:"internalException"}},{}],22:[function(e,f,t){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},d=function(){function e(a,r){for(var t=0;t1?r-1:0),t=1;r>t;t++)a[t-1]=arguments[t];this.handledEvents=a,this.useGenericHandler=!0,this.registerListeners()}return d(e,[{key:"destroy",value:function(){this.unregisterListeners()}},{key:"isEventHandler",value:function(){return"object"===n(this.handledEvents)&&this.handledEvents.length&&"function"==typeof this.onEvent}},{key:"registerListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){if("hlsEventGeneric"===e)throw new Error("Forbidden event name: "+e);this.hls.on(e,this.onEvent)}.bind(this))}},{key:"unregisterListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){this.hls.off(e,this.onEvent)}.bind(this))}},{key:"onEvent",value:function(e,t){this.onEventGeneric(e,t)}},{key:"onEventGeneric",value:function(e,t){var a=function(t,r){var e="on"+t.replace("hls","");if("function"!=typeof this[e])throw new Error("Event "+t+" has no generic handler in this "+this.constructor.name+" class (tried "+e+")");return this[e].bind(this,r)};try{a.call(this,e,t).call()}catch(t){o.logger.error("internal error happened while processing "+e+":"+t.message),this.hls.trigger(s.default.ERROR,{type:r.ErrorTypes.OTHER_ERROR,details:r.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:e,err:t})}}}]),e}();t.default=l},{"./errors":21,"./events":23,"./utils/logger":38}],23:[function(t,e,r){"use strict";e.exports={MEDIA_ATTACHING:"hlsMediaAttaching",MEDIA_ATTACHED:"hlsMediaAttached",MEDIA_DETACHING:"hlsMediaDetaching",MEDIA_DETACHED:"hlsMediaDetached",BUFFER_RESET:"hlsBufferReset",BUFFER_CODECS:"hlsBufferCodecs",BUFFER_APPENDING:"hlsBufferAppending",BUFFER_APPENDED:"hlsBufferAppended",BUFFER_EOS:"hlsBufferEos",BUFFER_FLUSHING:"hlsBufferFlushing",BUFFER_FLUSHED:"hlsBufferFlushed",MANIFEST_LOADING:"hlsManifestLoading",MANIFEST_LOADED:"hlsManifestLoaded",MANIFEST_PARSED:"hlsManifestParsed",LEVEL_LOADING:"hlsLevelLoading",LEVEL_LOADED:"hlsLevelLoaded",LEVEL_UPDATED:"hlsLevelUpdated",LEVEL_PTS_UPDATED:"hlsLevelPtsUpdated",LEVEL_SWITCH:"hlsLevelSwitch",FRAG_LOADING:"hlsFragLoading",FRAG_LOAD_PROGRESS:"hlsFragLoadProgress",FRAG_LOAD_EMERGENCY_ABORTED:"hlsFragLoadEmergencyAborted",FRAG_LOADED:"hlsFragLoaded",FRAG_PARSING_INIT_SEGMENT:"hlsFragParsingInitSegment",FRAG_PARSING_USERDATA:"hlsFragParsingUserdata",FRAG_PARSING_METADATA:"hlsFragParsingMetadata",FRAG_PARSING_DATA:"hlsFragParsingData",FRAG_PARSED:"hlsFragParsed",FRAG_BUFFERED:"hlsFragBuffered",FRAG_CHANGED:"hlsFragChanged",FPS_DROP:"hlsFpsDrop",ERROR:"hlsError",DESTROYING:"hlsDestroying",KEY_LOADING:"hlsKeyLoading",KEY_LOADED:"hlsKeyLoaded"}},{}],24:[function(i,n,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(a,r){for(var t=0;td&&(t[u-1].end=r[e].end):t.push(r[e])}else t.push(r[e])}for(e=0,o=0,l=i=a;e=n&&f>a)l=n,i=f,o=i-a;else if(n>a+s){h=n;break}}return{len:o,start:l,end:i,nextStart:h}}}]),e}();e.default=a},{}],25:[function(r,s,t){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(a,r){for(var t=0;th)return void(a.PTSKnown=!1);for(var r=c;h>=r;r++){var s=f[u+r],n=l[r];n&&s&&(d=s.cc-n.cc,isNaN(s.startPTS)||(n.start=n.startPTS=s.startPTS,n.endPTS=s.endPTS,n.duration=s.duration,i=n))}if(d)for(e.logger.log("discontinuity sliding from playlist, take drift into account"),r=0;r=0&&ui.endSN)return 0;if(o=l-i.startSN,n=i.fragments,e=n[o],!isNaN(e.startPTS)){var f=Math.abs(e.startPTS-a);isNaN(e.deltaPTS)?e.deltaPTS=f:e.deltaPTS=Math.max(f,e.deltaPTS),a=Math.min(a,e.startPTS),s=Math.max(s,e.endPTS),d=Math.min(d,e.startDTS),u=Math.max(u,e.endDTS)}var h=a-e.start;for(e.start=e.startPTS=a,e.endPTS=s,e.startDTS=d,e.endDTS=u,e.duration=s-a,r=o;r>0;r--)t.updatePTS(n,r,r-1);for(r=o;ra?r.start=t.start+t.duration:r.start=t.start-r.duration:i>a?(t.duration=n-t.start,t.duration<0&&e.logger.error("negative duration computed for frag "+t.sn+",level "+t.level+", there should be some duration drift between playlist and fragment!")):(r.duration=t.start-n,r.duration<0&&e.logger.error("negative duration computed for frag "+r.sn+",level "+r.level+", there should be some duration drift between playlist and fragment!"))}}]),t}();t.default=n},{"../utils/logger":38}],26:[function(t,I,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var n=function(){function e(a,r){for(var t=0;t1?t-1:0),e=1;t>e;e++)i[e-1]=arguments[e];a.emit.apply(a,[r,r].concat(i))},a.off=function(i){for(var t=arguments.length,r=Array(t>1?t-1:0),e=1;t>e;e++)r[e-1]=arguments[e];a.removeListener.apply(a,[i].concat(r))},this.on=a.on.bind(a),this.off=a.off.bind(a),this.trigger=a.trigger.bind(a),this.playlistLoader=new d.default(this),this.fragmentLoader=new h.default(this),this.levelController=new R.default(this),this.abrController=new r.abrController(this),this.bufferController=new r.bufferController(this),this.capLevelController=new r.capLevelController(this),this.streamController=new r.streamController(this),this.timelineController=new r.timelineController(this),this.keyLoader=new p.default(this)}return n(t,null,[{key:"isSupported",value:function(){return window.MediaSource&&"function"==typeof window.MediaSource.isTypeSupported&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"Events",get:function(){return a.default}},{key:"ErrorTypes",get:function(){return s.ErrorTypes}},{key:"ErrorDetails",get:function(){return s.ErrorDetails}},{key:"DefaultConfig",get:function(){return t.defaultConfig||(t.defaultConfig={autoStartLoad:!0,startPosition:-1,debug:!1,capLevelToPlayerSize:!1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,maxSeekHole:2,seekHoleNudgeDuration:.01,stalledInBufferedNudgeThreshold:10,maxFragLookUpTolerance:.2,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingLoopThreshold:3,startFragPrefetch:!1,appendErrorMaxRetry:3,loader:S.default,fLoader:void 0,pLoader:void 0,abrController:v.default,bufferController:P.default,capLevelController:m.default,streamController:b.default,timelineController:T.default,enableCEA708Captions:!0,enableMP2TPassThrough:!1,abrEwmaFastLive:5,abrEwmaSlowLive:9,abrEwmaFastVoD:4,abrEwmaSlowVoD:15,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.8,abrBandWidthUpFactor:.7,maxStarvationDelay:2}),t.defaultConfig},set:function(e){t.defaultConfig=e}}]),n(t,[{key:"destroy",value:function(){e.logger.log("destroy"),this.trigger(a.default.DESTROYING),this.detachMedia(),this.playlistLoader.destroy(),this.fragmentLoader.destroy(),this.levelController.destroy(),this.abrController.destroy(),this.bufferController.destroy(),this.capLevelController.destroy(),this.streamController.destroy(),this.timelineController.destroy(),this.keyLoader.destroy(),this.url=null,this.observer.removeAllListeners()}},{key:"attachMedia",value:function(t){e.logger.log("attachMedia"),this.media=t,this.trigger(a.default.MEDIA_ATTACHING,{media:t})}},{key:"detachMedia",value:function(){e.logger.log("detachMedia"),this.trigger(a.default.MEDIA_DETACHING),this.media=null}},{key:"loadSource",value:function(t){e.logger.log("loadSource:"+t),this.url=t,this.trigger(a.default.MANIFEST_LOADING,{url:t})}},{key:"startLoad",value:function(){var t=arguments.length<=0||void 0===arguments[0]?-1:arguments[0];e.logger.log("startLoad"),this.levelController.startLoad(),this.streamController.startLoad(t)}},{key:"stopLoad",value:function(){e.logger.log("stopLoad"),this.levelController.stopLoad(),this.streamController.stopLoad()}},{key:"swapAudioCodec",value:function(){e.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}},{key:"recoverMediaError",value:function(){e.logger.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)}},{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(t){e.logger.log("set currentLevel:"+t),this.loadLevel=t,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(t){e.logger.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){e.logger.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return this.levelController.firstLevel},set:function(t){e.logger.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){e.logger.log("set startLevel:"+t),this.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this.abrController.autoLevelCapping},set:function(t){e.logger.log("set autoLevelCapping:"+t),this.abrController.autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}}]),t}();i.default=l},{"./controller/abr-controller":3,"./controller/buffer-controller":4,"./controller/cap-level-controller":5,"./controller/level-controller":7,"./controller/stream-controller":8,"./controller/timeline-controller":9,"./errors":21,"./events":23,"./loader/fragment-loader":28,"./loader/key-loader":29,"./loader/playlist-loader":30,"./utils/logger":38,"./utils/xhr-loader":40,events:1}],27:[function(e,t,r){"use strict";t.exports=e("./hls.js").default},{"./hls.js":26}],28:[function(r,c,a){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(a,"__esModule",{value:!0});var h=function(){function e(a,r){for(var t=0;te;e++)t[e]=r>>8*(15-e)&255;return t}},{key:"fragmentDecryptdataFromLevelkey",value:function(e,r){var t=e;return e&&e.method&&e.uri&&!e.iv&&(t=this.cloneObj(e),t.iv=this.createInitializationVector(r)),t}},{key:"avc1toavcoti",value:function(r){var e,t=r.split(".");return t.length>2?(e=t.shift()+".",e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).substr(-4)):e=r,e}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"parseLevelPlaylist",value:function(D,f,L){var E,e,R,l=0,o=0,t={version:null,type:null,url:f,fragments:[],live:!0,startSN:0},a={method:null,key:null,iv:null,uri:null},y=0,c=null,r=null,n=null,d=null,h=null,s=null;for(R=/(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE):(\d+))|(?:#EXT-X-(TARGETDURATION):(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT(INF):(\d+(?:\.\d+)?)(?:,(.*))?)|(?:(?!#)()(\S.+))|(?:#EXT-X-(BYTERANGE):(\d+(?:@\d+(?:\.\d+)?))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(PROGRAM-DATE-TIME):(.+))|(?:#EXT-X-(VERSION):(\d+))|(?:(#)(.*):(.*))|(?:(#)(.*)))(?:.*)\r?\n?/g;null!==(e=R.exec(D));)switch(e.shift(),e=e.filter(function(e){return void 0!==e}),e[0]){case"VERSION":t.version=parseInt(e[1]);break;case"PLAYLIST-TYPE":t.type=e[1].toUpperCase();break;case"MEDIA-SEQUENCE":l=t.startSN=parseInt(e[1]);break;case"TARGETDURATION":t.targetduration=parseFloat(e[1]);break;case"EXTM3U":break;case"ENDLIST":t.live=!1;break;case"DIS":y++;break;case"BYTERANGE":var v=e[1].split("@");s=1===v.length?h:parseInt(v[1]),h=parseInt(v[0])+s;break;case"INF":n=parseFloat(e[1]),d=e[2]?e[2]:null;break;case"":if(!isNaN(n)){var b=l++;E=this.fragmentDecryptdataFromLevelkey(a,b);var T=e[1]?this.resolve(e[1],f):null;r={url:T,duration:n,title:d,start:o,sn:b,level:L,cc:y,decryptdata:E,programDateTime:c},null!==s&&(r.byteRangeStartOffset=s,r.byteRangeEndOffset=h),t.fragments.push(r),o+=n,n=null,d=null,s=null,c=null}break;case"KEY":var A=e[1],p=new i.default(A),g=p.enumeratedString("METHOD"),m=p.URI,k=p.hexadecimalInteger("IV");g&&(a={method:null,key:null,iv:null,uri:null},m&&"AES-128"===g&&(a.method=g,a.uri=this.resolve(m,f),a.key=null,a.iv=k));break;case"START":var S=e[1],w=new i.default(S),_=w.decimalFloatingPoint("TIME-OFFSET");_&&(t.startTimeOffset=_);break;case"PROGRAM-DATE-TIME":c=new Date(Date.parse(e[1]));break;case"#":e.shift();break;default:u.logger.warn("line parsed but not handled: "+e)}return r&&!r.url&&(t.fragments.pop(),o-=r.duration),t.totalduration=o,t.endSN=l-1,t}},{key:"loadsuccess",value:function(d,a){var s,o=d.currentTarget,n=o.responseText,r=o.responseURL,l=this.id,f=this.id2,i=this.hls;if(this.loading=!1,void 0===r&&(r=this.url),a.tload=performance.now(),a.mtime=new Date(o.getResponseHeader("Last-Modified")),0===n.indexOf("#EXTM3U"))if(n.indexOf("#EXTINF:")>0){var u=this.parseLevelPlaylist(n,r,l||0);u.tload=a.tload,null===l&&i.trigger(t.default.MANIFEST_LOADED,{levels:[{url:r,details:u}],url:r,stats:a}),a.tparsed=performance.now(),i.trigger(t.default.LEVEL_LOADED,{details:u,level:l||0,id:f,stats:a})}else s=this.parseMasterPlaylist(n,r),s.length?i.trigger(t.default.MANIFEST_LOADED,{levels:s,url:r,stats:a}):i.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no level found in manifest"});else i.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(i){var r,a;null===this.id?(r=e.ErrorDetails.MANIFEST_LOAD_ERROR,a=!0):(r=e.ErrorDetails.LEVEL_LOAD_ERROR,a=!1),this.loader&&this.loader.abort(),this.loading=!1,this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:r,fatal:a,url:this.url,loader:this.loader,response:i.currentTarget,level:this.id,id:this.id2})}},{key:"loadtimeout",value:function(){var r,a;null===this.id?(r=e.ErrorDetails.MANIFEST_LOAD_TIMEOUT,a=!0):(r=e.ErrorDetails.LEVEL_LOAD_TIMEOUT,a=!1),this.loader&&this.loader.abort(),this.loading=!1,this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:r,fatal:a,url:this.url,loader:this.loader,level:this.id,id:this.id2})}}]),r}(n.default);s.default=y},{"../errors":21,"../event-handler":22,"../events":23,"../utils/attr-list":34,"../utils/logger":38,"../utils/url":39}],31:[function(i,n,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(a,r){for(var t=0;t>24&255,t[1]=e>>16&255,t[2]=e>>8&255,t[3]=255&e,t.set(i,4),r=0,e=8;n>r;r++)t.set(a[r],e),e+=a[r].byteLength;return t}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}},{key:"mdhd",value:function(t,r){return r*=t,e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"minf",value:function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))}},{key:"moof",value:function(t,r,a){return e.box(e.types.moof,e.mfhd(t),e.traf(a,r))}},{key:"moov",value:function(t){for(var r=t.length,a=[];r--;)a[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(a).concat(e.mvex(t)))}},{key:"mvex",value:function(r){for(var t=r.length,a=[];t--;)a[t]=e.trex(r[t]);return e.box.apply(null,[e.types.mvex].concat(a))}},{key:"mvhd",value:function(t,r){r*=t;var a=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,a)}},{key:"sdtp",value:function(n){var r,t,a=n.samples||[],i=new Uint8Array(4+a.length);for(t=0;t>>8&255),a.push(255&n),a=a.concat(Array.prototype.slice.call(i));for(r=0;r>>8&255),s.push(255&n),s=s.concat(Array.prototype.slice.call(i));var u=e.box(e.types.avcC,new Uint8Array([1,a[3],a[4],a[5],255,224|t.sps.length].concat(a).concat([t.pps.length]).concat(s))),o=t.width,l=t.height;return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),u,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])))}},{key:"esds",value:function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))}},{key:"mp4a",value:function(t){var r=t.audiosamplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),e.box(e.types.esds,e.esds(t)))}},{key:"stsd",value:function(t){return"audio"===t.type?e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))}},{key:"tkhd",value:function(t){var r=t.id,a=t.duration*t.timescale,i=t.width,n=t.height;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,n>>8&255,255&n,0,0]))}},{key:"traf",value:function(a,t){var i=e.sdtp(a),r=a.id;return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),e.box(e.types.tfdt,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t])),e.trun(a,i.length+16+16+8+16+8+8),i)}},{key:"trak",value:function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"trex",value:function(r){var t=r.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trun",value:function(h,o){var a,i,n,s,t,l,d=h.samples||[],r=d.length,f=12+16*r,u=new Uint8Array(f);for(o+=8+f,u.set([0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o],0),a=0;r>a;a++)i=d[a],n=i.duration,s=i.size,t=i.flags,l=i.cts,u.set([n>>>24&255,n>>>16&255,n>>>8&255,255&n,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t.isLeading<<2|t.dependsOn,t.isDependedOn<<6|t.hasRedundancy<<4|t.paddingValue<<1|t.isNonSync,61440&t.degradPrio,15&t.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*a);return e.box(e.types.trun,u)}},{key:"initSegment",value:function(a){e.types||e.init();var t,r=e.moov(a);return t=new Uint8Array(e.FTYP.byteLength+r.byteLength),t.set(e.FTYP),t.set(r,e.FTYP.byteLength),t}}]),e}();e.default=a},{}],32:[function(a,h,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var l=function(){function e(a,r){for(var t=0;tMath.pow(2,32)&&!function(){var e=function r(t,e){return e?r(e,t%e):t};a.timescale=a.audiosamplerate/e(a.audiosamplerate,1024)}(),e.logger.log("audio mp4 timescale :"+a.timescale),l.audio={container:"audio/mp4",codec:a.codec,initSegment:r.default.initSegment([a]),metadata:{channelCount:a.channelCount}},u&&(n=o=v[0].pts-f*h)),i.sps&&i.pps&&d.length&&(i.timescale=this.MP4_TIMESCALE,l.video={container:"video/mp4",codec:i.codec,initSegment:r.default.initSegment([i]),metadata:{width:i.width,height:i.height}},u&&(n=Math.min(n,d[0].pts-f*h),o=Math.min(o,d[0].dts-f*h))),Object.keys(l).length?(c.trigger(t.default.FRAG_PARSING_INIT_SEGMENT,g),this.ISGenerated=!0,u&&(this._initPTS=n,this._initDTS=o)):c.trigger(t.default.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})}},{key:"remuxVideo",value:function(a,D,w){var T,s,v,L,y,d,k,S,R,g,m,f,u,i,l,b=8,c=this.PES_TIMESCALE,h=this.PES2MP4SCALEFACTOR,o=[],A=a.samples.reduce(function(t,e){return Math.max(Math.min(t,e.pts-e.dts),-18e3)},0);for(0>A&&e.logger.warn("PTS < DTS detected in video samples, shifting DTS by "+Math.round(A/90)+" ms to overcome this issue"),d=new Uint8Array(a.len+4*a.nbNalu+8),T=new DataView(d.buffer),T.setUint32(0,d.byteLength),d.set(r.default.types.mdat,4);a.samples.length;){for(s=a.samples.shift(),L=0;s.units.units.length;)y=s.units.units.shift(),T.setUint32(b,y.data.byteLength),b+=4,d.set(y.data,b),b+=y.data.byteLength,L+=4+y.data.byteLength;if(m=s.pts-this._initDTS,f=s.dts-this._initDTS+A,f=Math.min(m,f),void 0!==g){u=this._PTSNormalize(m,g),i=this._PTSNormalize(f,g);var _=(i-g)/h;0>=_&&(e.logger.log("invalid sample duration at PTS/DTS: "+s.pts+"/"+s.dts+":"+_),_=1),v.duration=_}else{var p=void 0,n=void 0;p=w?this.nextAvcDts:D*c,u=this._PTSNormalize(m,p),i=this._PTSNormalize(f,p),n=Math.round((i-p)/90),w&&n&&(n>1?e.logger.log("AVC:"+n+" ms hole between fragments detected,filling it"):-1>n&&e.logger.log("AVC:"+-n+" ms overlapping between fragments detected"),i=p,u=Math.max(u-n,i),e.logger.log("Video/PTS/DTS adjusted: "+u+"/"+i+",delta:"+n)),S=Math.max(0,u),R=Math.max(0,i)}v={size:L,duration:0,cts:(u-i)/h,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}},l=v.flags,s.key===!0?(l.dependsOn=2,l.isNonSync=0):(l.dependsOn=1,l.isNonSync=1),o.push(v),g=i}var E=0;o.length>=2&&(E=o[o.length-2].duration,v.duration=E),this.nextAvcDts=i+E*h;var O=a.dropped;a.len=0,a.nbNalu=0,a.dropped=0,o.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(l=o[0].flags,l.dependsOn=2,l.isNonSync=0),a.samples=o,k=r.default.moof(a.sequenceNumber++,R/h,a),a.samples=[],this.observer.trigger(t.default.FRAG_PARSING_DATA,{data1:k,data2:d,startPTS:S/c,endPTS:(u+h*E)/c,startDTS:R/c,endDTS:this.nextAvcDts/c,type:"video",nb:o.length,dropped:O})}},{key:"remuxAudio",value:function(a,D,S){var k,p,n,h,d,L,T,b,u,g,R,o,i,A=8,s=this.PES_TIMESCALE,w=a.timescale,f=s/w,E=1024*a.timescale/a.audiosamplerate,m=[],_=[];for(a.samples.sort(function(e,t){return e.pts-t.pts}),_=a.samples;_.length;){if(p=_.shift(),h=p.unit,g=p.pts-this._initDTS,R=p.dts-this._initDTS,void 0!==u)o=this._PTSNormalize(g,u),i=this._PTSNormalize(R,u),n.duration=(i-u)/f,Math.abs(n.duration-E)>E/10&&e.logger.log("invalid AAC sample duration at PTS "+Math.round(g/90)+",should be 1024,found :"+Math.round(n.duration*a.audiosamplerate/a.timescale)),n.duration=E,o=i=E*f+u;else{var c=void 0,l=void 0;if(c=S?this.nextAacPts:D*s,o=this._PTSNormalize(g,c),i=this._PTSNormalize(R,c),l=Math.round(1e3*(o-c)/s),S&&l){if(l>0)e.logger.log(l+" ms hole between AAC samples detected,filling it");else if(-12>l){e.logger.log(-l+" ms overlapping between AAC samples detected, drop frame"),a.len-=h.byteLength;continue}o=i=c}if(T=Math.max(0,o),b=Math.max(0,i),!(a.len>0))return;d=new Uint8Array(a.len+8),k=new DataView(d.buffer),k.setUint32(0,d.byteLength),d.set(r.default.types.mdat,4)}d.set(h,A),A+=h.byteLength,n={size:h.byteLength,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},m.push(n),u=i}var y=0,v=m.length;v>=2&&(y=m[v-2].duration,n.duration=y),v&&(this.nextAacPts=o+f*y,a.len=0,a.samples=m,L=r.default.moof(a.sequenceNumber++,b/f,a),a.samples=[],this.observer.trigger(t.default.FRAG_PARSING_DATA,{data1:L,data2:d,startPTS:T/s,endPTS:this.nextAacPts/s,startDTS:b/s,endDTS:(i+f*y)/s,type:"audio",nb:v}))}},{key:"remuxID3",value:function(r,i){var e,n=r.samples.length;if(n){for(var a=0;n>a;a++)e=r.samples[a],e.pts=(e.pts-this._initPTS)/this.PES_TIMESCALE,e.dts=(e.dts-this._initDTS)/this.PES_TIMESCALE;this.observer.trigger(t.default.FRAG_PARSING_METADATA,{samples:r.samples})}r.samples=[],i=i}},{key:"remuxText",value:function(e,i){e.samples.sort(function(e,t){return e.pts-t.pts});var r,n=e.samples.length;if(n){for(var a=0;n>a;a++)r=e.samples[a],r.pts=(r.pts-this._initPTS)/this.PES_TIMESCALE;this.observer.trigger(t.default.FRAG_PARSING_USERDATA,{samples:e.samples})}e.samples=[],i=i}},{key:"_PTSNormalize",value:function(e,t){var r;if(void 0===t)return e;for(r=e>t?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}},{key:"passthrough",get:function(){return!1}}]),a}();i.default=d},{"../errors":21,"../events":23,"../remux/mp4-generator":31,"../utils/logger":38}],33:[function(r,l,e){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(a,r){for(var t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"hexadecimalInteger",value:function(r){if(this[r]){var e=(this[r]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var a=new Uint8Array(e.length/2),t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"decimalFloatingPoint",value:function(e){return parseFloat(this[e])}},{key:"enumeratedString",value:function(e){return this[e]}},{key:"decimalResolution",value:function(t){var e=/^(\d+)x(\d+)$/.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}}],[{key:"parseAttrList",value:function(i){for(var t,n=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,r={};null!==(t=n.exec(i));){var e=t[2],a='"';0===e.indexOf(a)&&e.lastIndexOf(a)===e.length-1&&(e=e.slice(1,-1)),r[t[1]]=e}return r}}]),e}();e.default=a},{}],35:[function(r,e,a){"use strict";var t={search:function(i,s){for(var t=0,r=i.length-1,e=null,a=null;r>=t;){e=(t+r)/2|0,a=i[e];var n=s(a);if(n>0)t=e+1;else{if(!(0>n))return a;r=e-1}}return null}};e.exports=t},{}],36:[function(i,n,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(a,r){for(var t=0;t0;)e.removeCue(e.cues[0])}},{key:"push",value:function(r,a){this.cue||this._createCue();for(var i,t,e,s,o,u=31&a[0],n=2,l=0;u>l;l++)if(i=a[n++],t=127&a[n++],e=127&a[n++],s=0!==(4&i),o=3&i,(0!==t||0!==e)&&s&&0===o){if(32&t||64&t)this.cue.text+=this._fromCharCode(t)+this._fromCharCode(e);else if((17===t||25===t)&&e>=48&&63>=e)switch(e){case 48:this.cue.text+="®";break;case 49:this.cue.text+="°";break;case 50:this.cue.text+="½";break;case 51:this.cue.text+="¿";break;case 52:this.cue.text+="™";break;case 53:this.cue.text+="¢";break;case 54:this.cue.text+="";break;case 55:this.cue.text+="£";break;case 56:this.cue.text+="♪";break;case 57:this.cue.text+=" ";break;case 58:this.cue.text+="è";break;case 59:this.cue.text+="â";break;case 60:this.cue.text+="ê";break;case 61:this.cue.text+="î";break;case 62:this.cue.text+="ô";break;case 63:this.cue.text+="û"}if((17===t||25===t)&&e>=32&&47>=e)switch(e){case 32:break;case 33:break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:break;case 42:break;case 43:break;case 44:break;case 45:break;case 46:break;case 47:}if((20===t||28===t)&&e>=32&&47>=e)switch(e){case 32:this._clearActiveCues(r);break;case 33:this.cue.text=this.cue.text.substr(0,this.cue.text.length-1);break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:this._clearActiveCues(r);break;case 42:break;case 43:break;case 44:this._clearActiveCues(r);break;case 45:break;case 46:this._text="";break;case 47:this._flipMemory(r)}if((23===t||31===t)&&e>=33&&35>=e)switch(e){case 33:break;case 34:break;case 35:}}}},{key:"_fromCharCode",value:function(e){switch(e){case 42:return"á";case 2:return"á";case 2:return"é";case 4:return"í";case 5:return"ó";case 6:return"ú";case 3:return"ç";case 4:return"÷";case 5:return"Ñ";case 6:return"ñ";case 7:return"█";default:return String.fromCharCode(e)}}},{key:"_flipMemory",value:function(e){this._clearActiveCues(e),this._flushCaptions(e)}},{key:"_flushCaptions",value:function(s){this._has708||(this._textTrack=this.media.addTextTrack("captions","English","en"),this._has708=!0);var e=!0,a=!1,i=void 0;try{for(var n,t=this.memory[Symbol.iterator]();!(e=(n=t.next()).done);e=!0){var r=n.value;r.startTime=s,this._textTrack.addCue(r),this.display.push(r)}}catch(e){a=!0,i=e}finally{try{!e&&t.return&&t.return()}finally{if(a)throw i}}this.memory=[],this.cue=null}},{key:"_clearActiveCues",value:function(n){var e=!0,r=!1,a=void 0;try{for(var i,t=this.display[Symbol.iterator]();!(e=(i=t.next()).done);e=!0){var s=i.value;s.endTime=n}}catch(e){r=!0,a=e}finally{try{!e&&t.return&&t.return()}finally{if(r)throw a}}this.display=[]}},{key:"_clearBufferedCues",value:function(){}}]),e}();e.default=a},{}],37:[function(i,n,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(a,r){for(var t=0;t "+e}function n(t){var r=window.console[t];return r?function(){for(var n=arguments.length,e=Array(n),a=0;n>a;a++)e[a]=arguments[a];e[0]&&(e[0]=i(t,e[0])),r.apply(window.console,e)}:e}function s(r){for(var a=arguments.length,i=Array(a>1?a-1:0),e=1;a>e;e++)i[e-1]=arguments[e];i.forEach(function(e){t[e]=r[e]?r[e].bind(r):n(e)})}Object.defineProperty(r,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},a={trace:e,debug:e,log:e,warn:e,info:e,error:e},t=a;r.enableLogs=function(e){if(e===!0||"object"===("undefined"==typeof e?"undefined":o(e))){s(e,"debug","log","info","warn","error");try{t.log()}catch(e){t=a}}else t=a},r.logger=t},{}],39:[function(r,t,a){"use strict";var e={buildAbsoluteURL:function(r,t){if(t=t.trim(),/^[a-z]+:/i.test(t))return t;var l=null,o=null,n=/^([^#]*)(.*)$/.exec(t);n&&(o=n[2],t=n[1]);var s=/^([^\?]*)(.*)$/.exec(t);s&&(l=s[2],t=s[1]);var f=/^([^#]*)(.*)$/.exec(r);f&&(r=f[1]);var u=/^([^\?]*)(.*)$/.exec(r);u&&(r=u[1]);var a=/^(([a-z]+:)?\/\/[a-z0-9\.\-_~]+(:[0-9]+)?)?(\/.*)$/i.exec(r);if(!a)throw new Error("Error trying to parse base URL.");var h=a[2]||"",d=a[1]||"",c=a[4],i=null;return i=/^\/\//.test(t)?h+"//"+e.buildAbsolutePath("",t.substring(2)):/^\//.test(t)?d+"/"+e.buildAbsolutePath("",t.substring(1)):e.buildAbsolutePath(d+c,t),l&&(i+=l),o&&(i+=o),i},buildAbsolutePath:function(n,s){for(var a,e,o=s,i="",t=n.replace(/[^\/]*$/,o.replace(/(\/|^)(?:\.?\/+)+/g,"$1")),r=0;e=t.indexOf("/../",r),e>-1;r=e+a)a=/^\/(?:\.\.\/)*/.exec(t.slice(e))[0].length,i=(i+t.substring(r,e)).replace(new RegExp("(?:\\/+[^\\/]*){0,"+(a-1)/3+"}$"),"/");return i+t.substr(r)}};t.exports=e},{}],40:[function(r,s,t){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(a,r){for(var t=0;t=200&&300>t?(window.clearTimeout(this.timeoutHandle),r.tload=Math.max(r.tfirst,performance.now()),this.onSuccess(a,r)):r.retry>=this.maxRetry||t>=400&&499>t?(window.clearTimeout(this.timeoutHandle),e.logger.error(t+" while loading "+this.url),this.onError(a)):(e.logger.warn(t+" while loading "+this.url+", retrying in "+this.retryDelay+"..."),this.destroy(),window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,64e3),r.retry++))}},{key:"loadtimeout",value:function(t){e.logger.warn("timeout while loading "+this.url),this.onTimeout(t,this.stats)}},{key:"loadprogress",value:function(t){var e=this.stats;0===e.tfirst&&(e.tfirst=Math.max(performance.now(),e.trequest)),e.loaded=t.loaded,this.onProgress&&this.onProgress(t,e)}}]),t}();t.default=n},{"../utils/logger":38}]},{},[27])(27)}); +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Hls=e()}}(function(){return function e(t,r,a){function i(s,o){if(!r[s]){if(!t[s]){var l="function"==typeof require&&require;if(!o&&l)return l(s,!0);if(n)return n(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var d=r[s]={exports:{}};t[s][0].call(d.exports,function(e){var r=t[s][1][e];return i(r?r:e)},d,d.exports,e,t,r,a)}return r[s].exports}for(var n="function"==typeof require&&require,s=0;s0&&this._events[e].length>r&&(this._events[e].warned=!0,"function"==typeof console.trace)),this},a.prototype.on=a.prototype.addListener,a.prototype.once=function(e,t){function r(){this.removeListener(e,r),a||(a=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var a=!1;return r.listener=t,this.on(e,r),this},a.prototype.removeListener=function(e,t){var r,a,n,o;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],n=r.length,a=-1,r===t||i(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(r)){for(o=n;o-- >0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=o;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},a.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],i(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},a.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},a.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(i(t))return 1;if(t)return t.length}return 0},a.listenerCount=function(e,t){return e.listenerCount(t)}},{}],2:[function(e,t,r){var a=arguments[3],i=arguments[4],n=arguments[5],s=JSON.stringify;t.exports=function(e){for(var t,r=Object.keys(n),o=0,l=r.length;o500*r.duration){var i=e.levels,n=Math.max(1,1e3*r.loaded/a),s=Math.max(r.loaded,Math.round(r.duration*i[r.level].bitrate/8)),o=t.currentTime,l=(s-r.loaded)/n,d=c.default.bufferInfo(t,o,e.config.maxBufferHole).end-o;if(d<2*r.duration&&l>d){var f=void 0,h=void 0;for(h=r.level-1;h>=0&&(f=r.duration*i[h].bitrate/(6.4*n),g.logger.log("fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay["+h+"] :"+l.toFixed(1)+"/"+d.toFixed(1)+"/"+f.toFixed(1)),!(f=0;l--){var u=o[l],d=u.details,f=d?d.totalduration/d.fragments.length:t,h=void 0;h=l<=e?n*r:s*r;var c=o[l].bitrate,v=c*f/h;if(g.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+l+"/"+Math.round(h)+"/"+c+"/"+f+"/"+i+"/"+v),h>c&&(!v||vthis._msDuration&&(h.logger.log("Updating mediasource duration to "+this._levelDuration),t.duration=this._levelDuration,this._msDuration=this._levelDuration)}}}},{key:"doFlush",value:function(){for(;this.flushRange.length;){var e=this.flushRange[0];if(!this.flushBuffer(e.start,e.end))return void(this._needsFlush=!0);this.flushRange.shift(),this.flushBufferCounter=0}if(0===this.flushRange.length){this._needsFlush=!1;var t=0,r=this.sourceBuffer;if(r)for(var a in r)t+=r[a].buffered.length;this.appended=t,this.hls.trigger(u.default.BUFFER_FLUSHED)}}},{key:"doAppending",value:function(){var e=this.hls,t=this.sourceBuffer,r=this.segments;if(t){if(this.media.error)return r=[],void h.logger.error("trying to append although a media error occured, flush segment and abort");for(var a in t)if(t[a].updating)return;if(r.length){var i=r.shift();try{t[i.type].appendBuffer(i.data),this.appendError=0,this.appended++}catch(t){h.logger.error("error while trying to append buffer:"+t.message),r.unshift(i);var n={type:c.ErrorTypes.MEDIA_ERROR};if(22===t.code)return this.segments=[],n.details=c.ErrorDetails.BUFFER_FULL_ERROR,void e.trigger(u.default.ERROR,n);if(this.appendError?this.appendError++:this.appendError=1,n.details=c.ErrorDetails.BUFFER_APPEND_ERROR,n.frag=this.fragCurrent,this.appendError>e.config.appendErrorMaxRetry)return h.logger.log("fail "+e.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),r=[],n.fatal=!0,void e.trigger(u.default.ERROR,n);n.fatal=!1,e.trigger(u.default.ERROR,n)}}}}},{key:"flushBuffer",value:function(e,t){var r,a,i,n,s,o;if(this.flushBufferCounter.5)return this.flushBufferCounter++,h.logger.log("flush "+l+" ["+s+","+o+"], of ["+i+","+n+"], pos:"+this.media.currentTime),r.remove(s,o),!1}else h.logger.warn("abort flushing too many retries");return h.logger.log("buffer flushed"),!0}}]),t}(f.default);r.default=v},{"../errors":21,"../event-handler":22,"../events":23,"../utils/logger":38}],5:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;rthis.autoLevelCapping&&this.hls.streamController.nextLevelSwitch(),this.autoLevelCapping=this.hls.autoLevelCapping)}}},{key:"getMaxLevel",value:function(e){var t=void 0,r=void 0,a=void 0,i=this.mediaWidth,n=this.mediaHeight,s=0,o=0;for(r=0;r<=e&&(a=this.levels[r],t=r,s=a.width,o=a.height,!(i<=s||n<=o));r++);return t}},{key:"contentScaleFactor",get:function(){var e=1;try{e=window.devicePixelRatio}catch(e){}return e}},{key:"mediaWidth",get:function(){var e=void 0;return this.media&&(e=this.media.width||this.media.clientWidth||this.media.offsetWidth,e*=this.contentScaleFactor),e}},{key:"mediaHeight",get:function(){var e=void 0;return this.media&&(e=this.media.height||this.media.clientHeight||this.media.offsetHeight,e*=this.contentScaleFactor),e}}]),t}(f.default);r.default=h},{"../event-handler":22,"../events":23}],6:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r=0&&e1e3){h.logger.log("(re)loading playlist for level "+e);var i=r.urlId;this.hls.trigger(u.default.LEVEL_LOADING,{url:r.url[i],level:e,id:i})}}else this.hls.trigger(u.default.ERROR,{type:c.ErrorTypes.OTHER_ERROR,details:c.ErrorDetails.LEVEL_SWITCH_ERROR,level:e,fatal:!1,reason:"invalid level idx"})}},{key:"onError",value:function(e){if(!e.fatal){var t=e.details,r=this.hls,a=void 0,i=void 0,n=!1;switch(t){case c.ErrorDetails.FRAG_LOAD_ERROR:case c.ErrorDetails.FRAG_LOAD_TIMEOUT:case c.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case c.ErrorDetails.KEY_LOAD_ERROR:case c.ErrorDetails.KEY_LOAD_TIMEOUT:a=e.frag.level;break;case c.ErrorDetails.LEVEL_LOAD_ERROR:case c.ErrorDetails.LEVEL_LOAD_TIMEOUT:a=e.level,n=!0}if(void 0!==a)if(i=this._levels[a],i.urlIde&&(this._level===e&&void 0!==t[e].details||this.setLevelInternal(e))}},{key:"manualLevel",get:function(){return this._manualLevel},set:function(e){this._manualLevel=e,void 0===this._startLevel&&(this._startLevel=e),e!==-1&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){return void 0===this._startLevel?this._firstLevel:this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return this._manualLevel!==-1?this._manualLevel:this.hls.abrController.nextAutoLevel},set:function(e){this.level=e,this._manualLevel===-1&&(this.hls.abrController.nextAutoLevel=e)}}]),t}(f.default);r.default=v},{"../errors":21,"../event-handler":22,"../events":23,"../utils/logger":38}],8:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r0?(v.logger.log("configure startPosition @"+r),this.lastPaused||(v.logger.log("resuming video"),t.play())):this.lastCurrentTime=this.startPosition?this.startPosition:e,this.state=this.startFragRequested?R.IDLE:R.STARTING,this.nextLoadPosition=this.startPosition=this.lastCurrentTime,this.tick()}else v.logger.warn("cannot start loading as manifest not parsed yet"),this.state=R.STOPPED}},{key:"stopLoad",value:function(){var e=this.fragCurrent;e&&(e.loader&&e.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=R.STOPPED}},{key:"tick",value:function(){this.ticks++,1===this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){var e,t,r,a=this.hls,i=a.config,n=this.media,s=n&&n.seeking;switch(this.state){case R.ERROR:case R.PAUSED:break;case R.STARTING:var o=a.startLevel;o===-1&&(o=0,this.fragBitrateTest=!0),this.level=a.nextLoadLevel=o,this.state=R.WAITING_LEVEL,this.loadedmetadata=!1;break;case R.IDLE:if(!n&&(this.startFragRequested||!i.startFragPrefetch))break;e=this.loadedmetadata?n.currentTime:this.nextLoadPosition,t=a.nextLoadLevel;var l,u=m.default.bufferInfo(n,e,i.maxBufferHole),d=u.len,h=u.end,c=this.fragPrevious;if(this.levels[t].hasOwnProperty("bitrate")?(l=Math.max(8*i.maxBufferSize/this.levels[t].bitrate,i.maxBufferLength),l=Math.min(l,i.maxMaxBufferLength)):l=i.maxBufferLength,dk&&(n.currentTime=k)}if(r.PTSKnown&&h>b)break;if(this.startFragRequested&&!r.PTSKnown){if(c){var S=c.sn+1;S>=r.startSN&&S<=r.endSN&&(A=g[S-r.startSN],v.logger.log("live playlist, switching playlist, load frag with next SN: "+A.sn))}A||(A=g[Math.min(y-1,Math.round(y/2))],v.logger.log("live playlist, switching playlist, unknown, load middle frag : "+A.sn))}}else hb-e||s)&&(e=0),A=p.default.search(g,function(t){return t.start+t.duration-e<=h?1:t.start-e>h?-1:0})):A=g[y-1]}(),A){if(E=A.start,c&&A.level===c.level&&A.sn===c.sn){if(!(A.sni.maxBufferHole&&c.dropped?(A=g[D-1],v.logger.warn("SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this"),c.loadCounter--):(A=g[D+1],v.logger.log("SN just loaded, load next one: "+A.sn)),!A)break}if(null!=A.decryptdata.uri&&null==A.decryptdata.key)v.logger.log("Loading key for "+A.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+t),this.state=R.KEY_LOADING,a.trigger(f.default.KEY_LOADING,{frag:A});else{if(v.logger.log("Loading "+A.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+t+", currentTime:"+e+",bufferEnd:"+h.toFixed(3)),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,A.loadCounter){A.loadCounter++;var O=i.fragLoadingLoopThreshold;if(A.loadCounter>O&&Math.abs(this.fragLoadIdx-A.loadIdx)=I||s)&&(v.logger.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=R.IDLE);break;case R.STOPPED:case R.FRAG_LOADING:case R.PARSING:case R.PARSED:case R.ENDED:}this._checkBuffer(),this._checkFragmentChanged()}},{key:"getBufferRange",value:function(e){var t,r,a=this.bufferRange;if(a)for(t=a.length-1;t>=0;t--)if(r=a[t],e>=r.start&&e<=r.end)return r;return null}},{key:"followingBufferRange",value:function(e){return e?this.getBufferRange(e.end+.5):null}},{key:"isBuffered",value:function(e){var t=this.media;if(t)for(var r=t.buffered,a=0;a=r.start(a)&&e<=r.end(a))return!0;return!1}},{key:"_checkFragmentChanged",value:function(){var e,t,r=this.media;if(r&&r.seeking===!1&&(t=r.currentTime,t>r.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=t),this.isBuffered(t)?e=this.getBufferRange(t):this.isBuffered(t+.1)&&(e=this.getBufferRange(t+.1)),e)){var a=e.frag;a!==this.fragPlaying&&(this.fragPlaying=a,this.hls.trigger(f.default.FRAG_CHANGED,{frag:a}))}}},{key:"immediateLevelSwitch",value:function(){if(v.logger.log("immediateLevelSwitch"),!this.immediateSwitch){this.immediateSwitch=!0;var e=this.media,t=void 0;e?(t=e.paused,e.pause()):t=!0,this.previouslyPaused=t}var r=this.fragCurrent;r&&r.loader&&r.loader.abort(),this.fragCurrent=null,this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.state=R.PAUSED,this.hls.trigger(f.default.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY})}},{key:"immediateLevelSwitchEnd",value:function(){this.immediateSwitch=!1;var e=this.media;e&&e.readyState&&(e.currentTime-=1e-4,this.previouslyPaused||e.play())}},{key:"nextLevelSwitch",value:function(){var e=this.media;if(e&&e.readyState){var t=void 0,r=void 0,a=void 0;if(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,r=this.getBufferRange(e.currentTime),r&&r.start>1&&(this.state=R.PAUSED,this.hls.trigger(f.default.BUFFER_FLUSHING,{startOffset:0,endOffset:r.start-1})),e.paused)t=0;else{var i=this.hls.nextLoadLevel,n=this.levels[i],s=this.fragLastKbps;t=s&&this.fragCurrent?this.fragCurrent.duration*n.bitrate/(1e3*s)+1:0}if(a=this.getBufferRange(e.currentTime+t),a&&(a=this.followingBufferRange(a))){var o=this.fragCurrent;o&&o.loader&&o.loader.abort(),this.fragCurrent=null,this.state=R.PAUSED,this.hls.trigger(f.default.BUFFER_FLUSHING,{startOffset:a.start,endOffset:Number.POSITIVE_INFINITY})}}}},{key:"onMediaAttached",value:function(e){var t=this.media=e.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),t.addEventListener("seeking",this.onvseeking),t.addEventListener("seeked",this.onvseeked),t.addEventListener("ended",this.onvended);var r=this.config;this.levels&&r.autoStartLoad&&this.hls.startLoad(r.startPosition)}},{key:"onMediaDetaching",value:function(){var e=this.media;e&&e.ended&&(v.logger.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var t=this.levels;t&&t.forEach(function(e){e.details&&e.details.fragments.forEach(function(e){e.loadCounter=void 0})}),e&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("seeked",this.onvseeked),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=null,this.loadedmetadata=!1,this.stopLoad()}},{key:"onMediaSeeking",value:function(){if(this.state===R.FRAG_LOADING){if(0===m.default.bufferInfo(this.media,this.media.currentTime,this.config.maxBufferHole).len){v.logger.log("seeking outside of buffer while fragment load in progress, cancel fragment load");var e=this.fragCurrent;e&&(e.loader&&e.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.state=R.IDLE}}else this.state===R.ENDED&&(this.state=R.IDLE);this.media&&(this.lastCurrentTime=this.media.currentTime),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.tick()}},{key:"onMediaSeeked",value:function(){this.tick()}},{key:"onMediaEnded",value:function(){v.logger.log("media ended"),this.startPosition=this.lastCurrentTime=0}},{key:"onManifestLoading",value:function(){v.logger.log("trigger BUFFER_RESET"),this.hls.trigger(f.default.BUFFER_RESET),this.bufferRange=[],this.stalled=!1}},{key:"onManifestParsed",value:function(e){var t,r=!1,a=!1;e.levels.forEach(function(e){t=e.audioCodec,t&&(t.indexOf("mp4a.40.2")!==-1&&(r=!0),t.indexOf("mp4a.40.5")!==-1&&(a=!0))}),this.audioCodecSwitch=r&&a,this.audioCodecSwitch&&v.logger.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=e.levels,this.startLevelLoaded=!1,this.startFragRequested=!1;var i=this.config;i.autoStartLoad&&this.hls.startLoad(i.startPosition)}},{key:"onLevelLoaded",value:function(e){var t=e.details,r=e.level,a=this.levels[r],i=t.totalduration,n=0;if(v.logger.log("level "+r+" loaded ["+t.startSN+","+t.endSN+"],duration:"+i),this.levelLastLoaded=r,t.live){var s=a.details;s?(b.default.mergeDetails(s,t),n=t.fragments[0].start,t.PTSKnown?v.logger.log("live playlist sliding:"+n.toFixed(3)):v.logger.log("live playlist - outdated PTS, unknown sliding")):(t.PTSKnown=!1,v.logger.log("live playlist - first load, unknown sliding"))}else t.PTSKnown=!1;if(a.details=t,this.hls.trigger(f.default.LEVEL_UPDATED,{details:t,level:r}),this.startFragRequested===!1){if(this.startPosition===-1){var o=t.startTimeOffset;if(isNaN(o))if(t.live){var l=void 0!==this.config.liveSyncDuration?this.config.liveSyncDuration:this.config.liveSyncDurationCount*t.targetduration;this.startPosition=Math.max(0,n+i-l)}else this.startPosition=0;else v.logger.log("start time offset found in playlist, adjust startPosition to "+o),this.startPosition=o}this.nextLoadPosition=this.startPosition}this.state===R.WAITING_LEVEL&&(this.state=R.IDLE),this.tick()}},{key:"onKeyLoaded",value:function(){this.state===R.KEY_LOADING&&(this.state=R.IDLE,this.tick())}},{key:"onFragLoaded",value:function(e){var t=this.fragCurrent,r=e.frag;if(this.state===R.FRAG_LOADING&&t&&r.level===t.level&&r.sn===t.sn){var a=e.stats;if(v.logger.log("Loaded "+t.sn+" of level "+t.level),this.fragBitrateTest=!1,r.bitrateTest===!0&&this.hls.nextLoadLevel)this.state=R.IDLE,this.startFragRequested=!1,a.tparsed=a.tbuffered=performance.now(),this.hls.trigger(f.default.FRAG_BUFFERED,{stats:e.stats,frag:t}),this.tick();else{this.state=R.PARSING,this.stats=a;var i=this.levels[this.level],n=i.details,s=n.totalduration,o=void 0===t.startDTS||isNaN(t.startDTS)?t.start:t.startDTS,l=t.level,u=t.sn,d=i.audioCodec||this.config.defaultAudioCodec;this.audioCodecSwap&&(v.logger.log("swapping playlist audio codec"),void 0===d&&(d=this.lastAudioCodec),d&&(d=d.indexOf("mp4a.40.5")!==-1?"mp4a.40.2":"mp4a.40.5")),this.pendingAppending=0,v.logger.log("Demuxing "+u+" of ["+n.startSN+" ,"+n.endSN+"],level "+l+", cc "+t.cc);var h=this.demuxer;h&&h.push(e.payload,d,i.videoCodec,o,t.cc,l,u,s,t.decryptdata)}}this.fragLoadError=0}},{key:"onFragParsingInitSegment",value:function(e){if(this.state===R.PARSING){var t,r,a=e.tracks;if(r=a.audio){var i=this.levels[this.level].audioCodec,n=navigator.userAgent.toLowerCase();i&&this.audioCodecSwap&&(v.logger.log("swapping playlist audio codec"),i=i.indexOf("mp4a.40.5")!==-1?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==r.metadata.channelCount&&n.indexOf("firefox")===-1&&(i="mp4a.40.5"),n.indexOf("android")!==-1&&(i="mp4a.40.2",v.logger.log("Android: force audio codec to"+i)),r.levelCodec=i}if(r=a.video,r&&(r.levelCodec=this.levels[this.level].videoCodec),e.unique){var s={codec:"",levelCodec:""};for(t in e.tracks)r=a[t],s.container=r.container,s.codec&&(s.codec+=",",s.levelCodec+=","),r.codec&&(s.codec+=r.codec),r.levelCodec&&(s.levelCodec+=r.levelCodec);a={audiovideo:s}}this.hls.trigger(f.default.BUFFER_CODECS,a);for(t in a){r=a[t],v.logger.log("track:"+t+",container:"+r.container+",codecs[level/parsed]=["+r.levelCodec+"/"+r.codec+"]");var o=r.initSegment;o&&(this.pendingAppending++,this.hls.trigger(f.default.BUFFER_APPENDING,{type:t,data:o}))}this.tick()}}},{key:"onFragParsingData",value:function(e){var t=this;if(this.state===R.PARSING){this.tparse2=Date.now();var r=this.levels[this.level],a=this.fragCurrent;v.logger.log("parsed "+e.type+",PTS:["+e.startPTS.toFixed(3)+","+e.endPTS.toFixed(3)+"],DTS:["+e.startDTS.toFixed(3)+"/"+e.endDTS.toFixed(3)+"],nb:"+e.nb+",dropped:"+(e.dropped||0));var i=b.default.updateFragPTSDTS(r.details,a.sn,e.startPTS,e.endPTS,e.startDTS,e.endDTS),n=this.hls;n.trigger(f.default.LEVEL_PTS_UPDATED,{details:r.details,level:this.level,drift:i}),"video"===e.type&&(a.dropped=e.dropped),[e.data1,e.data2].forEach(function(r){r&&(t.pendingAppending++,n.trigger(f.default.BUFFER_APPENDING,{type:e.type,data:r}))}),this.nextLoadPosition=e.endPTS,this.bufferRange.push({type:e.type,start:e.startPTS,end:e.endPTS,frag:a}),this.tick()}else v.logger.warn("not in PARSING state but "+this.state+", ignoring FRAG_PARSING_DATA event")}},{key:"onFragParsed",value:function(){this.state===R.PARSING&&(this.stats.tparsed=performance.now(),this.state=R.PARSED,this._checkAppendedParsed())}},{key:"onBufferAppended",value:function(){switch(this.state){case R.PARSING:case R.PARSED:this.pendingAppending--,this._checkAppendedParsed()}}},{key:"_checkAppendedParsed",value:function(){if(this.state===R.PARSED&&0===this.pendingAppending){var e=this.fragCurrent,t=this.stats;e&&(this.fragPrevious=e,t.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*t.length/(t.tbuffered-t.tfirst)),this.hls.trigger(f.default.FRAG_BUFFERED,{stats:t,frag:e}),v.logger.log("media buffered : "+this.timeRangesToString(this.media.buffered)),this.state=R.IDLE),this.tick()}}},{key:"onError",value:function(e){switch(e.details){case _.ErrorDetails.FRAG_LOAD_ERROR:case _.ErrorDetails.FRAG_LOAD_TIMEOUT:if(!e.fatal){var t=this.fragLoadError;if(t?t++:t=1,t<=this.config.fragLoadingMaxRetry||this.media&&this.isBuffered(this.media.currentTime)){this.fragLoadError=t,e.frag.loadCounter=0;var r=Math.min(Math.pow(2,t-1)*this.config.fragLoadingRetryDelay,64e3);v.logger.warn("mediaController: frag loading failed, retry in "+r+" ms"),this.retryDate=performance.now()+r,this.state=R.FRAG_LOADING_WAITING_RETRY}else v.logger.error("mediaController: "+e.details+" reaches max retry, redispatch as fatal ..."),e.fatal=!0,this.hls.trigger(f.default.ERROR,e),this.state=R.ERROR}break;case _.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case _.ErrorDetails.LEVEL_LOAD_ERROR:case _.ErrorDetails.LEVEL_LOAD_TIMEOUT:case _.ErrorDetails.KEY_LOAD_ERROR:case _.ErrorDetails.KEY_LOAD_TIMEOUT:this.state!==R.ERROR&&(this.state=e.fatal?R.ERROR:R.IDLE,v.logger.warn("mediaController: "+e.details+" while loading frag,switch to "+this.state+" state ..."));break;case _.ErrorDetails.BUFFER_FULL_ERROR:this.state!==R.PARSING&&this.state!==R.PARSED||(this.config.maxMaxBufferLength/=2,v.logger.warn("reduce max buffer length to "+this.config.maxMaxBufferLength+"s and switch to IDLE state"),this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.state=R.IDLE)}}},{key:"_checkBuffer",value:function(){var e=this.media;if(e&&e.readyState){var t=e.currentTime,r=e.buffered;if(!this.loadedmetadata&&r.length){this.loadedmetadata=!0;var a=this.startPosition;if(!t&&t!==a&&a){v.logger.log("target start position:"+a);var i=r.start(0),n=r.end(0);(an)&&(a=i,v.logger.log("target start position not buffered, seek to buffered.start(0) "+i)),v.logger.log("adjust currentTime from "+t+" to "+a),e.currentTime=a}}else{var s=m.default.bufferInfo(e,t,0),o=!(e.paused||e.ended||0===e.buffered.length),l=.4,u=t>e.playbackRate*this.lastCurrentTime;if(this.stalled&&u&&(this.stalled=!1,v.logger.log("playback not stuck anymore @"+t)),o&&s.len<=l&&(u?(l=0,this.seekHoleNudgeDuration=0):this.stalled?this.seekHoleNudgeDuration+=this.config.seekHoleNudgeDuration:(this.seekHoleNudgeDuration=0,v.logger.log("playback seems stuck @"+t),this.hls.trigger(f.default.ERROR,{type:_.ErrorTypes.MEDIA_ERROR,details:_.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1}),this.stalled=!0),s.len<=l)){var d=s.nextStart,h=d-t;if(d&&h0){v.logger.log("adjust currentTime from "+e.currentTime+" to next buffered @ "+d+" + nudge "+this.seekHoleNudgeDuration);var c=d+this.seekHoleNudgeDuration-e.currentTime;e.currentTime=d+this.seekHoleNudgeDuration,this.hls.trigger(f.default.ERROR,{type:_.ErrorTypes.MEDIA_ERROR,details:_.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,hole:c})}}}}}},{key:"onFragLoadEmergencyAborted",value:function(){this.state=R.IDLE,this.tick()}},{key:"onBufferFlushed",value:function(){var e,t,r=[];for(t=0;t>7))^e]=e;for(t=r=0;!f[t];t^=a||1,r=v[r]||1)for(s=r^r<<1^r<<2^r<<3^r<<4,s=s>>8^255&s^99,f[t]=s,h[s]=t,n=c[i=c[a=c[t]]],l=16843009*n^65537*i^257*a^16843008*t,o=257*c[s]^16843008*s,e=0;e<4;e++)u[e][t]=o=o<<24^o>>>8,d[e][s]=l=l<<24^l>>>8;for(e=0;e<5;e++)u[e]=u[e].slice(0),d[e]=d[e].slice(0)}},{key:"decrypt",value:function(e,t,r,a,i,n){var s,o,l,u,d=this._key[1],f=e^d[0],h=a^d[1],c=r^d[2],v=t^d[3],g=d.length/4-2,p=4,y=this._tables[1],m=y[0],E=y[1],b=y[2],_=y[3],R=y[4];for(u=0;u>>24]^E[h>>16&255]^b[c>>8&255]^_[255&v]^d[p],o=m[h>>>24]^E[c>>16&255]^b[v>>8&255]^_[255&f]^d[p+1],l=m[c>>>24]^E[v>>16&255]^b[f>>8&255]^_[255&h]^d[p+2],v=m[v>>>24]^E[f>>16&255]^b[h>>8&255]^_[255&c]^d[p+3],p+=4,f=s,h=o,c=l;for(u=0;u<4;u++)i[(3&-u)+n]=R[f>>>24]<<24^R[h>>16&255]<<16^R[c>>8&255]<<8^R[255&v]^d[p++],s=f,f=h,h=c,c=v,v=s}}]),e}();r.default=n},{}],11:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r>8|e>>>24}},{key:"doDecrypt",value:function(e,t,r){var a,i,n,s,l,u,d,f,h,c=new Int32Array(e.buffer,e.byteOffset,e.byteLength>>2),v=new o.default(Array.prototype.slice.call(t)),g=new Uint8Array(e.byteLength),p=new Int32Array(g.buffer);for(a=~~r[0],i=~~r[1],n=~~r[2],s=~~r[3],h=0;h>>5,h-=p,h>0&&g+p+h<=m);)for(y=R+v*c,E={unit:e.subarray(g+p,g+p+h),pts:y,dts:y},b.samples.push(E),b.len+=h,g+=h+p,v++;g>>6)+1,o=(60&t[r+2])>>>2,o>h.length-1?void e.trigger(Event.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+o}):(u=(1&t[r+2])<<2,u|=(192&t[r+3])>>>6,n.logger.log("manifest codec:"+a+",ADTS data:type:"+i+",sampleingIndex:"+o+"["+h[o]+"Hz],channelConfig:"+u),f.indexOf("firefox")!==-1?o>=6?(i=5,d=new Array(4),l=o-3):(i=2,d=new Array(2),l=o):f.indexOf("android")!==-1?(i=2,d=new Array(2),l=o):(i=5,d=new Array(4),a&&(a.indexOf("mp4a.40.29")!==-1||a.indexOf("mp4a.40.5")!==-1)||!a&&o>=6?l=o-3:((a&&a.indexOf("mp4a.40.2")!==-1&&o>=6&&1===u||!a&&1===u)&&(i=2,d=new Array(2)),l=o)),d[0]=i<<3,d[0]|=(14&o)>>1,d[1]|=(1&o)<<7,d[1]|=u<<3,5===i&&(d[1]|=(14&l)>>1,d[2]=(1&l)<<7,d[2]|=8,d[3]=0),{config:d,samplerate:h[o],channelCount:u,codec:"mp4a.40."+i})}}]),e}();r.default=o},{"../errors":21,"../utils/logger":38}],15:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r1?r-1:0),i=1;i1?r-1:0),i=1;i0&&null!=l&&null!=l.key&&"AES-128"===l.method){null==this.decrypter&&(this.decrypter=new v.default(this.hls));var u=this;this.decrypter.decrypt(e,l.key,l.iv,function(e){u.pushDecrypted(e,t,r,a,i,n,s,o)})}else this.pushDecrypted(e,t,r,a,i,n,s,o)}},{key:"onWorkerMessage",value:function(e){var t=e.data;switch(t.event){case o.default.FRAG_PARSING_INIT_SEGMENT:var r={};r.tracks=t.tracks,r.unique=t.unique,this.hls.trigger(o.default.FRAG_PARSING_INIT_SEGMENT,r);break;case o.default.FRAG_PARSING_DATA:this.hls.trigger(o.default.FRAG_PARSING_DATA,{data1:new Uint8Array(t.data1),data2:new Uint8Array(t.data2),startPTS:t.startPTS,endPTS:t.endPTS,startDTS:t.startDTS,endDTS:t.endDTS,type:t.type,nb:t.nb,dropped:t.dropped});break;case o.default.FRAG_PARSING_METADATA:this.hls.trigger(o.default.FRAG_PARSING_METADATA,{samples:t.samples});break;case o.default.FRAG_PARSING_USERDATA:this.hls.trigger(o.default.FRAG_PARSING_USERDATA,{samples:t.samples});break;default:this.hls.trigger(t.event,t.data)}}}]),t}();r.default=p},{"../crypt/decrypter":12,"../demux/demuxer-inline":15,"../demux/demuxer-worker":16,"../errors":21,"../events":23,"../utils/logger":38,webworkify:2}],18:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;re?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}},{key:"readBits",value:function(e){var t=Math.min(this.bitsAvailable,e),r=this.word>>>32-t;return e>32&&n.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0?this.word<<=t:this.bytesAvailable>0&&this.loadWord(),t=e-t,t>0?r<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"skipEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBoolean",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"readUShort",value:function(){return this.readBits(16)}},{key:"readUInt",value:function(){return this.readBits(32)}},{key:"skipScalingList",value:function(e){var t,r,a=8,i=8;for(t=0;t>4,y>1){if(m=v+5+e[v+4],m===v+188)continue}else m=v+4;if(R)if(p===A){if(g){if(l&&(this._parseAVCPES(this._parsePES(l)),b&&this._avcTrack.codec&&(T===-1||this._aacTrack.codec)))return void this.remux(e);l={data:[],size:0}}l&&(l.data.push(e.subarray(m,v+188)),l.size+=v+188-m)}else if(p===T){if(g){if(d&&(this._parseAACPES(this._parsePES(d)),b&&this._aacTrack.codec&&(A===-1||this._avcTrack.codec)))return void this.remux(e);d={data:[],size:0}}d&&(d.data.push(e.subarray(m,v+188)),d.size+=v+188-m)}else p===L&&(g&&(f&&this._parseID3PES(this._parsePES(f)),f={data:[],size:0}),f&&(f.data.push(e.subarray(m,v+188)),f.size+=v+188-m));else g&&(m+=e[m]+1),0===p?this._parsePAT(e,m):p===this._pmtId?(this._parsePMT(e,m),R=this.pmtParsed=!0,A=this._avcTrack.id,T=this._aacTrack.id,L=this._id3Track.id,_&&(h.logger.log("reparse from beginning"),_=!1,v=-188)):(h.logger.log("unknown PID found before PAT/PMT"),_=!0)}else this.observer.trigger(u.default.ERROR,{type:c.ErrorTypes.MEDIA_ERROR,details:c.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});l&&this._parseAVCPES(this._parsePES(l)),d&&this._parseAACPES(this._parsePES(d)),f&&this._parseID3PES(this._parsePES(f)),this.remux(null)}},{key:"remux",value:function(e){this.remuxer.remux(this._aacTrack,this._avcTrack,this._id3Track,this._txtTrack,this.timeOffset,this.contiguous,e)}},{key:"destroy",value:function(){this.switchLevel(),this._initPTS=this._initDTS=void 0,this._duration=0}},{key:"_parsePAT",value:function(e,t){this._pmtId=(31&e[t+10])<<8|e[t+11]}},{key:"_parsePMT",value:function(e,t){var r,a,i,n;for(r=(15&e[t+1])<<8|e[t+2],a=t+3+r-4,i=(15&e[t+10])<<8|e[t+11],t+=12+i;t4294967295&&(o-=8589934592),64&r?(l=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,l>4294967295&&(l-=8589934592)):l=o),n=t[8],u=n+9,e.size-=u,s=new Uint8Array(e.size);f.length;){t=f.shift();var h=t.byteLength;if(u){if(u>h){u-=h;continue}t=t.subarray(u),h-=u,u=0}s.set(t,d),d+=h}return{data:s,pts:o,dts:l,len:i}}return null}},{key:"_parseAVCPES",value:function(e){var t,r,a,i,n=this,s=this._avcTrack,o=s.samples,l=this._parseAVCNALu(e.data),u=[],d=!1,c=!1,v=0;if(0===l.length&&o.length>0){var g=o[o.length-1],p=g.units.units[g.units.units.length-1],y=new Uint8Array(p.data.byteLength+e.data.byteLength);y.set(p.data,0),y.set(e.data,p.data.byteLength),p.data=y,g.units.length+=e.data.byteLength,s.len+=e.data.byteLength}e.data=null;var m="",E=function(){u.length&&(c===!0||s.sps&&(o.length||this.contiguous)?(r={units:{units:u,length:v},pts:e.pts,dts:e.dts,key:c},o.push(r),s.len+=v,s.nbNalu+=u.length):s.dropped++,u=[],v=0)}.bind(this);l.forEach(function(r){switch(r.type){case 1:a=!0,d&&(m+="NDR ");break;case 5:a=!0,d&&(m+="IDR "),c=!0;break;case 6:a=!0,d&&(m+="SEI "),t=new f.default(r.data),t.readUByte();var o=t.readUByte();if(4===o){var l=0;do l=t.readUByte();while(255===l);var h=t.readUByte();if(181===h){var g=t.readUShort();if(49===g){var p=t.readUInt();if(1195456820===p){var y=t.readUByte();if(3===y){var b=t.readUByte(),_=t.readUByte(),R=31&b,A=[b,_];for(i=0;i0){var y=this._avcTrack,m=y.samples;if(m.length){var E=m[m.length-1],b=E.units.units,_=b[b.length-1],R=new Uint8Array(_.data.byteLength+r);R.set(_.data,0),R.set(e.subarray(0,r),_.data.byteLength),_.data=R,E.units.length+=r,y.len+=r}}}n=o,s=i,u=0}else u=0}return n&&(a={data:e.subarray(n,l),type:s,state:u},d.push(a),this.avcNaluState=u),d}},{key:"_parseAACPES",value:function(e){var t,r,a,i,n,s,l,d,f,v=this._aacTrack,g=e.data,p=e.pts,y=0,m=this._duration,E=this.audioCodec,b=this.aacOverFlow,_=this.aacLastPTS;if(b){var R=new Uint8Array(b.byteLength+g.byteLength);R.set(b,0),R.set(g,b.byteLength),g=R}for(n=y,d=g.length;n1&&(h.logger.log("AAC: align PTS for overlapping frames by "+Math.round((L-p)/90)),p=L)}for(;n+5>>5,r-=s,r>0&&n+s+r<=d);)for(l=p+i*a,f={unit:g.subarray(n+s,n+s+r),pts:l,dts:l},v.samples.push(f),v.len+=r,n+=r+s,i++;n=564&&71===e[0]&&71===e[188]&&71===e[376]}}]),e}();r.default=v},{"../errors":21,"../events":23,"../utils/logger":38,"./adts":14,"./exp-golomb":18}],21:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});r.ErrorTypes={NETWORK_ERROR:"networkError",MEDIA_ERROR:"mediaError",OTHER_ERROR:"otherError"},r.ErrorDetails={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",MANIFEST_INCOMPATIBLE_CODECS_ERROR:"manifestIncompatibleCodecsError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOOP_LOADING_ERROR:"fragLoopLoadingError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError",BUFFER_STALLED_ERROR:"bufferStalledError",BUFFER_FULL_ERROR:"bufferFullError",BUFFER_SEEK_OVER_HOLE:"bufferSeekOverHole",INTERNAL_EXCEPTION:"internalException"}},{}],22:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},s=function(){function e(e,t){for(var r=0;r1?r-1:0),n=1;nd&&(l[u-1].end=e[o].end):l.push(e[o])}else l.push(e[o])}for(o=0,a=0,i=n=t;o=f&&t=0&&ot.endSN)return 0;if(o=r-t.startSN,l=t.fragments,u=l[o],!isNaN(u.startPTS)){var f=Math.abs(u.startPTS-a);isNaN(u.deltaPTS)?u.deltaPTS=f:u.deltaPTS=Math.max(f,u.deltaPTS),a=Math.min(a,u.startPTS),i=Math.max(i,u.endPTS),n=Math.min(n,u.startDTS),s=Math.max(s,u.endDTS)}var h=a-u.start;for(u.start=u.startPTS=a,u.endPTS=i,u.startDTS=n,u.endDTS=s,u.duration=i-a,d=o;d>0;d--)e.updatePTS(l,d,d-1);for(d=o;dt?i.start=a.start+a.duration:i.start=a.start-i.duration:r>t?(a.duration=s-a.start,a.duration<0&&n.logger.error("negative duration computed for frag "+a.sn+",level "+a.level+", there should be some duration drift between playlist and fragment!")):(i.duration=a.start-s,i.duration<0&&n.logger.error("negative duration computed for frag "+i.sn+",level "+i.level+", there should be some duration drift between playlist and fragment!"))}}]),e}();r.default=s},{"../utils/logger":38}],26:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r1?t-1:0),a=1;a1?t-1:0),a=1;a>8*(15-r)&255;return t}},{key:"fragmentDecryptdataFromLevelkey",value:function(e,t){var r=e;return e&&e.method&&e.uri&&!e.iv&&(r=this.cloneObj(e),r.iv=this.createInitializationVector(t)),r}},{key:"avc1toavcoti",value:function(e){var t,r=e.split(".");return r.length>2?(t=r.shift()+".",t+=parseInt(r.shift()).toString(16),t+=("000"+parseInt(r.shift()).toString(16)).substr(-4)):t=e,t}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"parseLevelPlaylist",value:function(e,t,r){var a,i,n,s=0,o=0,l={version:null,type:null,url:t,fragments:[],live:!0,startSN:0},u={method:null,key:null,iv:null,uri:null},d=0,f=null,h=null,c=null,v=null,g=null,m=null;for(n=/(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE):(\d+))|(?:#EXT-X-(TARGETDURATION):(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT(INF):(\d+(?:\.\d+)?)(?:,(.*))?)|(?:(?!#)()(\S.+))|(?:#EXT-X-(BYTERANGE):(\d+(?:@\d+(?:\.\d+)?))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(PROGRAM-DATE-TIME):(.+))|(?:#EXT-X-(VERSION):(\d+))|(?:(#)(.*):(.*))|(?:(#)(.*)))(?:.*)\r?\n?/g;null!==(i=n.exec(e));)switch(i.shift(),i=i.filter(function(e){return void 0!==e}),i[0]){case"VERSION":l.version=parseInt(i[1]);break;case"PLAYLIST-TYPE":l.type=i[1].toUpperCase();break;case"MEDIA-SEQUENCE":s=l.startSN=parseInt(i[1]);break;case"TARGETDURATION":l.targetduration=parseFloat(i[1]);break;case"EXTM3U":break;case"ENDLIST":l.live=!1;break;case"DIS":d++;break;case"BYTERANGE":var E=i[1].split("@");m=1===E.length?g:parseInt(E[1]),g=parseInt(E[0])+m;break;case"INF":c=parseFloat(i[1]),v=i[2]?i[2]:null;break;case"":if(!isNaN(c)){var b=s++;a=this.fragmentDecryptdataFromLevelkey(u,b);var _=i[1]?this.resolve(i[1],t):null;h={url:_,duration:c,title:v,start:o,sn:b,level:r,cc:d,decryptdata:a,programDateTime:f},null!==m&&(h.byteRangeStartOffset=m,h.byteRangeEndOffset=g),l.fragments.push(h),o+=c,c=null,v=null,m=null,f=null}break;case"KEY":var R=i[1],A=new p.default(R),T=A.enumeratedString("METHOD"),L=A.URI,k=A.hexadecimalInteger("IV");T&&(u={method:null,key:null,iv:null,uri:null},L&&"AES-128"===T&&(u.method=T,u.uri=this.resolve(L,t),u.key=null,u.iv=k));break;case"START":var S=i[1],w=new p.default(S),D=w.decimalFloatingPoint("TIME-OFFSET");D&&(l.startTimeOffset=D);break;case"PROGRAM-DATE-TIME":f=new Date(Date.parse(i[1]));break;case"#":i.shift();break;default:y.logger.warn("line parsed but not handled: "+i)}return h&&!h.url&&(l.fragments.pop(),o-=h.duration),l.totalduration=o,l.endSN=s-1,l}},{key:"loadsuccess",value:function(e,t){var r,a=e.currentTarget,i=a.responseText,n=a.responseURL,s=this.id,o=this.id2,l=this.hls;if(this.loading=!1,void 0===n&&(n=this.url),t.tload=performance.now(),t.mtime=new Date(a.getResponseHeader("Last-Modified")),0===i.indexOf("#EXTM3U"))if(i.indexOf("#EXTINF:")>0){var d=this.parseLevelPlaylist(i,n,s||0);d.tload=t.tload,null===s&&l.trigger(u.default.MANIFEST_LOADED,{levels:[{url:n,details:d}],url:n,stats:t}),t.tparsed=performance.now(),l.trigger(u.default.LEVEL_LOADED,{details:d,level:s||0,id:o,stats:t})}else r=this.parseMasterPlaylist(i,n),r.length?l.trigger(u.default.MANIFEST_LOADED,{levels:r,url:n,stats:t}):l.trigger(u.default.ERROR,{type:h.ErrorTypes.NETWORK_ERROR,details:h.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:n,reason:"no level found in manifest"});else l.trigger(u.default.ERROR,{type:h.ErrorTypes.NETWORK_ERROR,details:h.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:n,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(e){var t,r;null===this.id?(t=h.ErrorDetails.MANIFEST_LOAD_ERROR,r=!0):(t=h.ErrorDetails.LEVEL_LOAD_ERROR,r=!1),this.loader&&this.loader.abort(),this.loading=!1,this.hls.trigger(u.default.ERROR,{type:h.ErrorTypes.NETWORK_ERROR,details:t,fatal:r,url:this.url,loader:this.loader,response:e.currentTarget,level:this.id,id:this.id2})}},{key:"loadtimeout",value:function(){var e,t;null===this.id?(e=h.ErrorDetails.MANIFEST_LOAD_TIMEOUT,t=!0):(e=h.ErrorDetails.LEVEL_LOAD_TIMEOUT,t=!1),this.loader&&this.loader.abort(),this.loading=!1,this.hls.trigger(u.default.ERROR,{type:h.ErrorTypes.NETWORK_ERROR,details:e,fatal:t,url:this.url,loader:this.loader,level:this.id,id:this.id2})}}]),t}(f.default);r.default=m},{"../errors":21,"../event-handler":22,"../events":23,"../utils/attr-list":34,"../utils/logger":38,"../utils/url":39}],31:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r>24&255,t[1]=a>>16&255,t[2]=a>>8&255,t[3]=255&a,t.set(e,4),i=0,a=8;i>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"minf",value:function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))}},{key:"moof",value:function(t,r,a){return e.box(e.types.moof,e.mfhd(t),e.traf(a,r))}},{key:"moov",value:function(t){for(var r=t.length,a=[];r--;)a[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(a).concat(e.mvex(t)))}},{key:"mvex",value:function(t){for(var r=t.length,a=[];r--;)a[r]=e.trex(t[r]);return e.box.apply(null,[e.types.mvex].concat(a))}},{key:"mvhd",value:function(t,r){r*=t;var a=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,a)}},{key:"sdtp",value:function(t){var r,a,i=t.samples||[],n=new Uint8Array(4+i.length);for(a=0;a>>8&255),n.push(255&i),n=n.concat(Array.prototype.slice.call(a));for(r=0;r>>8&255),s.push(255&i),s=s.concat(Array.prototype.slice.call(a));var o=e.box(e.types.avcC,new Uint8Array([1,n[3],n[4],n[5],255,224|t.sps.length].concat(n).concat([t.pps.length]).concat(s))),l=t.width,u=t.height;return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,u>>8&255,255&u,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])))}},{key:"esds",value:function(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))}},{key:"mp4a",value:function(t){var r=t.audiosamplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),e.box(e.types.esds,e.esds(t)))}},{key:"stsd",value:function(t){return"audio"===t.type?e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))}},{key:"tkhd",value:function(t){var r=t.id,a=t.duration*t.timescale,i=t.width,n=t.height;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,n>>8&255,255&n,0,0]))}},{key:"traf",value:function(t,r){var a=e.sdtp(t),i=t.id;return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])),e.box(e.types.tfdt,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),e.trun(t,a.length+16+16+8+16+8+8),a)}},{key:"trak",value:function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"trex",value:function(t){var r=t.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trun",value:function(t,r){var a,i,n,s,o,l,u=t.samples||[],d=u.length,f=12+16*d,h=new Uint8Array(f);for(r+=8+f,h.set([0,0,15,1,d>>>24&255,d>>>16&255,d>>>8&255,255&d,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0),a=0;a>>24&255,n>>>16&255,n>>>8&255,255&n,s>>>24&255,s>>>16&255,s>>>8&255,255&s,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|o.isNonSync,61440&o.degradPrio,15&o.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*a);return e.box(e.types.trun,h)}},{key:"initSegment",value:function(t){e.types||e.init();var r,a=e.moov(t);return r=new Uint8Array(e.FTYP.byteLength+a.byteLength),r.set(e.FTYP),r.set(a,e.FTYP.byteLength),r}}]),e}();r.default=n},{}],32:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;rMath.pow(2,32)&&!function(){var t=function e(t,r){return r?e(r,t%r):t};e.timescale=e.audiosamplerate/t(e.audiosamplerate,1024)}(),l.logger.log("audio mp4 timescale :"+e.timescale),c.audio={container:"audio/mp4",codec:e.codec,initSegment:d.default.initSegment([e]),metadata:{channelCount:e.channelCount}},g&&(a=i=s[0].pts-h*r)),t.sps&&t.pps&&u.length&&(t.timescale=this.MP4_TIMESCALE,c.video={container:"video/mp4",codec:t.codec,initSegment:d.default.initSegment([t]),metadata:{width:t.width,height:t.height}},g&&(a=Math.min(a,u[0].pts-h*r),i=Math.min(i,u[0].dts-h*r))),Object.keys(c).length?(n.trigger(o.default.FRAG_PARSING_INIT_SEGMENT,v),this.ISGenerated=!0,g&&(this._initPTS=a,this._initDTS=i)):n.trigger(o.default.ERROR,{type:f.ErrorTypes.MEDIA_ERROR,details:f.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})}},{key:"remuxVideo",value:function(e,t,r){var a,i,n,s,u,f,h,c,v,g,p,y,m,E,b,_=8,R=this.PES_TIMESCALE,A=this.PES2MP4SCALEFACTOR,T=[],L=e.samples.reduce(function(e,t){return Math.max(Math.min(e,t.pts-t.dts),-18e3)},0);for(L<0&&l.logger.warn("PTS < DTS detected in video samples, shifting DTS by "+Math.round(L/90)+" ms to overcome this issue"),f=new Uint8Array(e.len+4*e.nbNalu+8),a=new DataView(f.buffer),a.setUint32(0,f.byteLength),f.set(d.default.types.mdat,4);e.samples.length;){for(i=e.samples.shift(),s=0;i.units.units.length;)u=i.units.units.shift(),a.setUint32(_,u.data.byteLength),_+=4,f.set(u.data,_),_+=u.data.byteLength,s+=4+u.data.byteLength;if(p=i.pts-this._initDTS,y=i.dts-this._initDTS+L,y=Math.min(p,y),void 0!==g){m=this._PTSNormalize(p,g),E=this._PTSNormalize(y,g);var k=(E-g)/A;k<=0&&(l.logger.log("invalid sample duration at PTS/DTS: "+i.pts+"/"+i.dts+":"+k),k=1),n.duration=k}else{var S=void 0,w=void 0;S=r?this.nextAvcDts:t*R,m=this._PTSNormalize(p,S),E=this._PTSNormalize(y,S),w=Math.round((E-S)/90),r&&w&&(w>1?l.logger.log("AVC:"+w+" ms hole between fragments detected,filling it"):w<-1&&l.logger.log("AVC:"+-w+" ms overlapping between fragments detected"),E=S,m=Math.max(m-w,E),l.logger.log("Video/PTS/DTS adjusted: "+m+"/"+E+",delta:"+w)),c=Math.max(0,m),v=Math.max(0,E)}n={size:s,duration:0,cts:(m-E)/A,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}},b=n.flags,i.key===!0?(b.dependsOn=2,b.isNonSync=0):(b.dependsOn=1,b.isNonSync=1),T.push(n),g=E}var D=0;T.length>=2&&(D=T[T.length-2].duration,n.duration=D),this.nextAvcDts=E+D*A;var O=e.dropped;e.len=0,e.nbNalu=0,e.dropped=0,T.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(b=T[0].flags,b.dependsOn=2,b.isNonSync=0),e.samples=T,h=d.default.moof(e.sequenceNumber++,v/A,e),e.samples=[],this.observer.trigger(o.default.FRAG_PARSING_DATA,{data1:h,data2:f,startPTS:c/R,endPTS:(m+A*D)/R,startDTS:v/R,endDTS:this.nextAvcDts/R,type:"video",nb:T.length,dropped:O})}},{key:"remuxAudio",value:function(e,t,r){var a,i,n,s,u,f,h,c,v,g,p,y,m,E=8,b=this.PES_TIMESCALE,_=e.timescale,R=b/_,A=1024*e.timescale/e.audiosamplerate,T=[],L=[];for(e.samples.sort(function(e,t){return e.pts-t.pts}),L=e.samples;L.length;){if(i=L.shift(),s=i.unit,g=i.pts-this._initDTS,p=i.dts-this._initDTS,void 0!==v)y=this._PTSNormalize(g,v),m=this._PTSNormalize(p,v),n.duration=(m-v)/R,Math.abs(n.duration-A)>A/10&&l.logger.log("invalid AAC sample duration at PTS "+Math.round(g/90)+",should be 1024,found :"+Math.round(n.duration*e.audiosamplerate/e.timescale)),n.duration=A,y=m=A*R+v;else{var k=void 0,S=void 0;if(k=r?this.nextAacPts:t*b,y=this._PTSNormalize(g,k),m=this._PTSNormalize(p,k),S=Math.round(1e3*(y-k)/b),r&&S){if(S>0)l.logger.log(S+" ms hole between AAC samples detected,filling it");else if(S<-12){l.logger.log(-S+" ms overlapping between AAC samples detected, drop frame"),e.len-=s.byteLength;continue}y=m=k}if(h=Math.max(0,y),c=Math.max(0,m),!(e.len>0))return;u=new Uint8Array(e.len+8),a=new DataView(u.buffer),a.setUint32(0,u.byteLength),u.set(d.default.types.mdat,4)}u.set(s,E),E+=s.byteLength,n={size:s.byteLength,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},T.push(n),v=m}var w=0,D=T.length;D>=2&&(w=T[D-2].duration,n.duration=w),D&&(this.nextAacPts=y+R*w,e.len=0,e.samples=T,f=d.default.moof(e.sequenceNumber++,c/R,e),e.samples=[],this.observer.trigger(o.default.FRAG_PARSING_DATA,{data1:f,data2:u,startPTS:h/b,endPTS:this.nextAacPts/b,startDTS:c/b,endDTS:(m+R*w)/b,type:"audio",nb:D}))}},{key:"remuxID3",value:function(e,t){var r,a=e.samples.length;if(a){for(var i=0;i4294967296;)e+=r;return e}},{key:"passthrough",get:function(){return!1}}]),e}();r.default=h},{"../errors":21,"../events":23,"../remux/mp4-generator":31,"../utils/logger":38}],33:[function(e,t,r){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;rNumber.MAX_SAFE_INTEGER?1/0:t}},{key:"hexadecimalInteger",value:function(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var r=new Uint8Array(t.length/2),a=0;aNumber.MAX_SAFE_INTEGER?1/0:t}},{key:"decimalFloatingPoint",value:function(e){return parseFloat(this[e])}},{key:"enumeratedString",value:function(e){return this[e]}},{key:"decimalResolution",value:function(e){var t=/^(\d+)x(\d+)$/.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}}],[{key:"parseAttrList",value:function(e){for(var t,r=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,a={};null!==(t=r.exec(e));){var i=t[2],n='"';0===i.indexOf(n)&&i.lastIndexOf(n)===i.length-1&&(i=i.slice(1,-1)),a[t[1]]=i}return a}}]),e}();r.default=n},{}],35:[function(e,t,r){"use strict";var a={search:function(e,t){for(var r=0,a=e.length-1,i=null,n=null;r<=a;){i=(r+a)/2|0,n=e[i];var s=t(n);if(s>0)r=i+1;else{if(!(s<0))return n;a=i-1}}return null}};t.exports=a},{}],36:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r0;)e.removeCue(e.cues[0])}},{key:"push",value:function(e,t){this.cue||this._createCue();for(var r,a,i,n,s,o=31&t[0],l=2,u=0;u=48&&i<=63)switch(i){case 48:this.cue.text+="®";break;case 49:this.cue.text+="°";break;case 50:this.cue.text+="½";break;case 51:this.cue.text+="¿";break;case 52:this.cue.text+="™";break;case 53:this.cue.text+="¢";break;case 54:this.cue.text+="";break;case 55:this.cue.text+="£";break;case 56:this.cue.text+="♪";break;case 57:this.cue.text+=" ";break;case 58:this.cue.text+="è";break;case 59:this.cue.text+="â";break;case 60:this.cue.text+="ê";break;case 61:this.cue.text+="î";break;case 62:this.cue.text+="ô";break;case 63:this.cue.text+="û"}if((17===a||25===a)&&i>=32&&i<=47)switch(i){case 32:break;case 33:break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:break;case 42:break;case 43:break;case 44:break;case 45:break;case 46:break;case 47:}if((20===a||28===a)&&i>=32&&i<=47)switch(i){case 32:this._clearActiveCues(e);break;case 33:this.cue.text=this.cue.text.substr(0,this.cue.text.length-1);break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:this._clearActiveCues(e);break;case 42:break;case 43:break;case 44:this._clearActiveCues(e);break;case 45:break;case 46:this._text="";break;case 47:this._flipMemory(e)}if((23===a||31===a)&&i>=33&&i<=35)switch(i){case 33:break;case 34:break;case 35:}}}},{key:"_fromCharCode",value:function(e){switch(e){case 42:return"á";case 2:return"á";case 2:return"é";case 4:return"í";case 5:return"ó";case 6:return"ú";case 3:return"ç";case 4:return"÷";case 5:return"Ñ";case 6:return"ñ";case 7:return"█";default:return String.fromCharCode(e)}}},{key:"_flipMemory",value:function(e){this._clearActiveCues(e),this._flushCaptions(e)}},{key:"_flushCaptions",value:function(e){this._has708||(this._textTrack=this.media.addTextTrack("captions","English","en"),this._has708=!0);var t=!0,r=!1,a=void 0;try{for(var i,n=this.memory[Symbol.iterator]();!(t=(i=n.next()).done);t=!0){var s=i.value;s.startTime=e,this._textTrack.addCue(s),this.display.push(s)}}catch(e){r=!0,a=e}finally{try{!t&&n.return&&n.return()}finally{if(r)throw a}}this.memory=[],this.cue=null}},{key:"_clearActiveCues",value:function(e){var t=!0,r=!1,a=void 0;try{for(var i,n=this.display[Symbol.iterator]();!(t=(i=n.next()).done);t=!0){var s=i.value;s.endTime=e}}catch(e){r=!0,a=e}finally{try{!t&&n.return&&n.return()}finally{if(r)throw a}}this.display=[]}},{key:"_clearBufferedCues",value:function(){}}]),e}();r.default=n},{}],37:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r "+t}function n(e){var t=window.console[e];return t?function(){for(var r=arguments.length,a=Array(r),n=0;n1?t-1:0),a=1;a-1;o=a+r)r=/^\/(?:\.\.\/)*/.exec(s.slice(a))[0].length,n=(n+s.substring(o,a)).replace(new RegExp("(?:\\/+[^\\/]*){0,"+(r-1)/3+"}$"),"/");return n+s.substr(o)}};t.exports=a},{}],40:[function(e,t,r){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var i=function(){function e(e,t){for(var r=0;r=200&&r<300?(window.clearTimeout(this.timeoutHandle),a.tload=Math.max(a.tfirst,performance.now()),this.onSuccess(e,a)):a.retry>=this.maxRetry||r>=400&&r<499?(window.clearTimeout(this.timeoutHandle),n.logger.error(r+" while loading "+this.url),this.onError(e)):(n.logger.warn(r+" while loading "+this.url+", retrying in "+this.retryDelay+"..."),this.destroy(),window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,64e3),a.retry++))}},{key:"loadtimeout",value:function(e){n.logger.warn("timeout while loading "+this.url),this.onTimeout(e,this.stats)}},{key:"loadprogress",value:function(e){var t=this.stats;0===t.tfirst&&(t.tfirst=Math.max(performance.now(),t.trequest)),t.loaded=e.loaded,this.onProgress&&this.onProgress(e,t)}}]),e}();r.default=s},{"../utils/logger":38}]},{},[27])(27)}); diff --git a/dashboard-ui/bower_components/hls.js/package.json b/dashboard-ui/bower_components/hls.js/package.json index 852af9cf5..ed5f8d7ed 100644 --- a/dashboard-ui/bower_components/hls.js/package.json +++ b/dashboard-ui/bower_components/hls.js/package.json @@ -1,6 +1,6 @@ { "name": "hls.js", - "version": "0.5.47", + "version": "0.5.48", "license": "Apache-2.0", "description": "Media Source Extension - HLS library, by/for Dailymotion", "homepage": "https://github.com/dailymotion/hls.js", diff --git a/dashboard-ui/devices/ios/ios.css b/dashboard-ui/devices/ios/ios.css index f5611a9aa..e85e6c2a7 100644 --- a/dashboard-ui/devices/ios/ios.css +++ b/dashboard-ui/devices/ios/ios.css @@ -59,10 +59,6 @@ h1, h1 a { margin-top: 0; } -.cardImageContainer { - border-radius: 10px; -} - .sidebarLinkText { font-weight: 400 !important; } diff --git a/dashboard-ui/itemdetails.html b/dashboard-ui/itemdetails.html index 1aae70219..df7f20cd7 100644 --- a/dashboard-ui/itemdetails.html +++ b/dashboard-ui/itemdetails.html @@ -10,7 +10,6 @@

-
@@ -29,8 +28,6 @@
- -
@@ -53,27 +50,28 @@
- -
+
+ +

-
+

@@ -93,7 +91,7 @@
-
+
@@ -147,7 +145,7 @@

- +

TOMATOMETER®

@@ -160,8 +158,8 @@
-
-

+
+

${HeaderScenes}

@@ -200,7 +198,7 @@

${HeaderMediaInfo}

-
+
diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index 2e59753cb..abbb0bd0c 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -172,25 +172,7 @@ hideAll(page, 'syncLocalContainer'); } - if (item.Type == 'Program' && item.TimerId) { - hideAll(page, 'btnCancelRecording', true); - } else { - hideAll(page, 'btnCancelRecording'); - } - - if (item.Type == 'Program' && (!item.TimerId && !item.SeriesTimerId)) { - - if (canPlay) { - hideAll(page, 'btnRecord', true); - hideAll(page, 'btnFloatingRecord'); - } else { - hideAll(page, 'btnRecord'); - hideAll(page, 'btnFloatingRecord', true); - } - } else { - hideAll(page, 'btnRecord'); - hideAll(page, 'btnFloatingRecord'); - } + showRecordingFields(page, item, user); var btnPlayExternalTrailer = page.querySelectorAll('.btnPlayExternalTrailer'); for (var i = 0, length = btnPlayExternalTrailer.length; i < length; i++) { @@ -314,6 +296,31 @@ Dashboard.hideLoadingMsg(); } + function showRecordingFields(page, item, user) { + + var recordingFieldsElement = page.querySelector('.recordingFields'); + + if (item.Type == 'Program' && user.Policy.EnableLiveTvManagement) { + + if (recordingFieldsElement.innerHTML) { + //return; + } + + require(['recordingFields'], function (recordingFields) { + + var currentRecordingFields = new recordingFields({ + parent: recordingFieldsElement, + programId: item.Id, + serverId: item.ServerId + }); + recordingFieldsElement.classList.remove('hide'); + }); + } else { + recordingFieldsElement.classList.add('hide'); + recordingFieldsElement.innerHTML = ''; + } + } + function renderLinks(linksElem, item) { var links = []; @@ -1637,10 +1644,13 @@ }); }); - if (limitExceeded) { - page.querySelector('.moreScenes').classList.remove('hide'); - } else { - page.querySelector('.moreScenes').classList.add('hide'); + var moreScenesButton = page.querySelector('.moreScenes'); + if (moreScenesButton) { + if (limitExceeded) { + moreScenesButton.classList.remove('hide'); + } else { + moreScenesButton.classList.add('hide'); + } } } @@ -1865,10 +1875,13 @@ }); }); - if (limitExceeded && !enableScrollX()) { - page.querySelector('.morePeople').classList.remove('hide'); - } else { - page.querySelector('.morePeople').classList.add('hide'); + var morePeopleButton = page.querySelector('.morePeople'); + if (morePeopleButton) { + if (limitExceeded && !enableScrollX()) { + morePeopleButton.classList.remove('hide'); + } else { + morePeopleButton.classList.add('hide'); + } } } @@ -2075,16 +2088,6 @@ elems[i].addEventListener('change', onSyncLocalClick); } - elems = view.querySelectorAll('.btnRecord,.btnFloatingRecord'); - for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener('click', onRecordClick); - } - - elems = view.querySelectorAll('.btnCancelRecording'); - for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener('click', onCancelRecordingClick); - } - elems = view.querySelectorAll('.btnMoreCommands'); for (i = 0, length = elems.length; i < length; i++) { elems[i].addEventListener('click', onMoreCommandsClick);