This commit is contained in:
root
2023-08-31 15:30:17 +02:00
commit dea16b40a8
833 changed files with 142024 additions and 0 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.alphanumeric-shortcut{position:fixed;bottom:5%;right:5%;inset-inline-start:initial;inset-inline-end:5%;z-index:9999999;font-size:500%;padding:0 .5em .1em;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;border-radius:.3em;border:0!important}

View File

@@ -0,0 +1 @@
define(["exports","./../dom.js","./../focusmanager.js","./../dialoghelper/dialoghelper.js"],function(_exports,_dom,_focusmanager,_dialoghelper){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!modules/alphanumericshortcuts/alphanumericshortcuts.css"]);var inputDisplayElement,alpanumericShortcutTimeout,currentDisplayText="";function clearAlphaNumericShortcutTimeout(){alpanumericShortcutTimeout&&(clearTimeout(alpanumericShortcutTimeout),alpanumericShortcutTimeout=null)}function resetAlphaNumericShortcutTimeout(instance){clearAlphaNumericShortcutTimeout(),alpanumericShortcutTimeout=setTimeout(function(){var value=currentDisplayText;currentDisplayText="",inputDisplayElement.innerHTML="",inputDisplayElement.classList.add("hide"),clearAlphaNumericShortcutTimeout(),function(instance,value){instance.onAlphaNumericValueEntered&&instance.onAlphaNumericValueEntered(value)}(this,value)}.bind(instance),2e3)}function onAlphanumericKeyPress(instance,e,chr){3<=currentDisplayText.length||(inputDisplayElement||((inputDisplayElement=document.createElement("div")).classList.add("alphanumeric-shortcut","hide","dialog"),_dom.default.allowBackdropFilter()&&inputDisplayElement.classList.add("dialog-blur"),document.body.appendChild(inputDisplayElement)),currentDisplayText+=chr,inputDisplayElement.innerHTML=currentDisplayText,inputDisplayElement.classList.remove("hide"),resetAlphaNumericShortcutTimeout(instance))}function AlphaNumericShortcuts(options){(this.options=options).focusScope=_focusmanager.default.getCurrentScope(),this.keyDownHandler=this.onKeyDown.bind(this),this.addEventListeners()}AlphaNumericShortcuts.prototype.onKeyDown=function(e){var options,tagName;e.ctrlKey||e.shiftKey||e.altKey||(options=this.options)&&options.focusScope===_focusmanager.default.getCurrentScope()&&"INPUT"!==(tagName=e.target.tagName)&&"TEXTAREA"!==tagName&&(e=(tagName=e.key)?tagName.match(/^[0-9a-zA-Z]+$/):null)&&1===(e=e.toString().toUpperCase()).length&&(options.itemsContainer,onAlphanumericKeyPress(this,0,e))},AlphaNumericShortcuts.prototype.addEventListeners=function(){var keyDownHandler;!this._eventHandlersBound&&(this._eventHandlersBound=!0,keyDownHandler=this.keyDownHandler)&&_dom.default.addEventListener(window,"keydown",keyDownHandler,{passive:!0})},AlphaNumericShortcuts.prototype.removeEventListeners=function(){this._eventHandlersBound=null;var keyDownHandler=this.keyDownHandler;keyDownHandler&&_dom.default.removeEventListener(window,"keydown",keyDownHandler,{passive:!0})},AlphaNumericShortcuts.prototype.pause=function(){this.removeEventListeners()},AlphaNumericShortcuts.prototype.resume=function(){this.addEventListeners()},AlphaNumericShortcuts.prototype.destroy=function(){this.removeEventListeners(),this.keyDownHandler=null,this.options=null},_exports.default=AlphaNumericShortcuts});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.alphaPicker{text-align:center;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-self:center;align-self:center}.alphaPicker-fixed{position:fixed;top:9em;top:calc(9em + env(safe-area-inset-top,0));top:var(--header-height);bottom:4.25em;bottom:calc(4.25em + env(safe-area-inset-bottom,0));z-index:1;-webkit-justify-content:center;justify-content:center}.alphaPickerRow{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-grow:1;flex-grow:1}.alphaPickerRow-vertical{-webkit-column-count:1;column-count:1;-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-direction:column;flex-direction:column;font-size:90%;font-size:clamp(80%, 1rem, 88%);contain:layout style paint}.alphaPickerButton{border:0!important;cursor:pointer;outline:0!important;vertical-align:middle;font-family:inherit;font-size:inherit;min-width:initial;margin:0;padding:.1em .5em;width:auto;border-radius:.42em;-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:1;flex-grow:1}.alphaPickerButton:focus::before{left:-.1em!important;right:-.1em!important}.alphaPicker:not(:focus-within) .alphaPickerButton-current{color:inherit!important;font-weight:700!important}.alphaPicker-vertical{line-height:1}.alphaPickerButton-vertical{width:2.75ch;padding:0;display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;text-align:center;-webkit-column-break-inside:avoid;break-inside:avoid;max-height:1.6em;contain:strict}.alphaPicker-vertical.alphaPicker-tv{font-size:88%}.alphaPickerButtonIcon{font-size:140%!important}.alphaPicker-fixed-left{left:0;inset-inline-start:0;inset-inline-end:initial}.alphaPicker-fixed-right{right:0;inset-inline-start:initial;inset-inline-end:0}@media all and (pointer:fine){.alphaPicker-fixed-right{right:1.8ch;inset-inline-start:initial;inset-inline-end:1.8ch}}@media all and (min-width:62.5em){.alphaPickerButton-vertical{width:3.8ch}}@media all and (min-width:80em){.alphaPicker-fixed-right{right:3.2ch;inset-inline-start:initial;inset-inline-end:3.2ch}}@media all and (min-height:80em){.alphaPickerButton-vertical{max-height:2em}}.alphaPickerButton-vertical.alphaPickerButton-tv{width:3.2ch}.alphaPicker-fixed-left.alphaPicker-tv{left:1.51ch;inset-inline-start:1.51ch;inset-inline-end:initial}.alphaPicker-fixed-right.alphaPicker-tv{right:1.51ch;inset-inline-start:initial;inset-inline-end:1.51ch}@media not all and (min-height:29em){.alphaPicker-fixed{display:none!important}}

View File

@@ -0,0 +1 @@
.appfooter{position:fixed;left:0;right:0;bottom:0;inset-inline-start:0;inset-inline-end:0;z-index:1098;contain:layout style;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;padding-bottom:0;border-top:1px solid transparent;bottom:-1px!important}.appfooter-withContent{padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0);padding-bottom:env(safe-area-inset-bottom,0)}@media not all and (min-width:50em){.appfooter-withContent50w{padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0);padding-bottom:env(safe-area-inset-bottom,0)}}

View File

@@ -0,0 +1 @@
define(["exports","./../dom.js"],function(_exports,_dom){function AppFooter(){var elem;this.element=((elem=document.createElement("div")).classList.add("appfooter"),_dom.default.allowBackdropFilter()&&elem.classList.add("appfooter-withbackdropfilter"),document.body.appendChild(elem),elem)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!modules/appfooter/appfooter.css"]),AppFooter.prototype.add=function(elem){"string"==typeof elem?this.element.insertAdjacentHTML("beforeend",elem):this.element.appendChild(elem)},AppFooter.prototype.insert=function(elem){var thisElement=this.element;"string"==typeof elem?thisElement.insertAdjacentHTML("afterbegin",elem):thisElement.insertBefore(elem,thisElement.firstChild)},AppFooter.prototype.setWithContent=function(withContent){var thisElement=this.element;withContent?thisElement.classList.add("appfooter-withContent"):thisElement.classList.remove("appfooter-withContent")},AppFooter.prototype.setWithContent50w=function(withContent){var thisElement=this.element;withContent?thisElement.classList.add("appfooter-withContent50w"):thisElement.classList.remove("appfooter-withContent50w")},AppFooter.prototype.destroy=function(){this.element=null};var _default=new AppFooter;_exports.default=_default});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var skinHeaderElement=document.querySelector(".skinHeader");function AppHeaderContent(){}AppHeaderContent.prototype.ensureSizeObserver=function(){this.resizeObserver||(this.resizeObserver=new ResizeObserver(function(){this._headerHeight=null}.bind(this),{}),this.resizeObserver.observe(skinHeaderElement))},AppHeaderContent.prototype.getHeight=function(){var height=this._headerHeight;return null==height&&(height=skinHeaderElement.offsetHeight,console.log("header height : "+height),height&&(this._headerHeight=height),this.ensureSizeObserver()),height};var _default=new AppHeaderContent;_exports.default=_default});

1
modules/approuter.js Normal file

File diff suppressed because one or more lines are too long

1
modules/autobackdrops.js Normal file
View File

@@ -0,0 +1 @@
define(["./layoutmanager.js","./backdrop/backdrop.js","./common/usersettings/usersettings.js","./emby-apiclient/connectionmanager.js"],function(_layoutmanager,_backdrop,_usersettings,_connectionmanager){function showBackdrop(view,type,parentId){var apiClient=_connectionmanager.default.currentApiClient();apiClient&&(view.backdropItems?_backdrop.default.setBackdrops(view.backdropItems):function(apiClient,types,parentId){return types={SortBy:"Random",Limit:20,Recursive:!0,IncludeItemTypes:types,ImageTypes:"Backdrop",ParentId:parentId,EnableTotalRecordCount:!1,ImageTypeLimit:1,EnableImageTypes:"Backdrop"},apiClient.getItems(apiClient.getCurrentUserId(),types)}(apiClient,type,parentId).then(function(result){result.Items.length?(result=result.Items,view.backdropItems=result,_backdrop.default.setBackdrops(result)):_backdrop.default.clear()}))}document.addEventListener("viewshow",function(e){var detail=e.detail,backdropItemTypes=detail.backdropItemTypes;backdropItemTypes&&!_layoutmanager.default.tv&&_usersettings.default.enableBackdrops()&&(detail=(detail=detail.params)?detail.parentId:null,showBackdrop(e.target,backdropItemTypes,detail))}),document.addEventListener("viewdestroy",function(e){e=e.target;e.backdropItems&&(e.backdropItems=null)})});

1
modules/babelhelpers.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.backdropContainer{contain:style size;position:fixed;top:0;left:0;right:0;bottom:0;inset-inline-start:0;inset-inline-end:0;z-index:-1;touch-action:none}.backdropImage{background-repeat:no-repeat;background-position:center center;background-size:cover;position:absolute;top:0;bottom:0;left:0;right:0;inset-inline-start:0;inset-inline-end:0;contain:layout style paint;object-fit:cover;object-position:center center;width:100%;height:100%;content-visibility:auto;background-color:#000}.backdropImage-contain{background-size:contain;object-fit:contain}.backdropImageFadeIn{-webkit-animation:backdrop-fadein .8s ease-out normal;animation:backdrop-fadein .8s ease-out normal}@-webkit-keyframes backdrop-fadein{from{opacity:0}to{opacity:1}}@keyframes backdrop-fadein{from{opacity:0}to{opacity:1}}

View File

@@ -0,0 +1 @@
define(["exports","./../emby-apiclient/connectionmanager.js"],function(_exports,_connectionmanager){function BackdropScreenSaver(){this.name="Backdrop Screen Saver",this.type="screensaver",this.id="backdropscreensaver",this.supportsAnonymous=!1}function getItems(query){query=Object.assign({ImageTypes:"Backdrop",EnableImageTypes:"Backdrop",IncludeItemTypes:"Movie,Series,MusicArtist,Game",SortBy:"Random",Recursive:!0,ImageTypeLimit:1,Fields:"ProductionYear"},query);var apiClient=_connectionmanager.default.currentApiClient();return apiClient.getItems(apiClient.getCurrentUserId(),query)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,BackdropScreenSaver.prototype.show=function(){var instance;this.currentSlideshow||(instance=this,require(["slideshow"],function(slideshow){instance.currentSlideshow||((slideshow=new slideshow({showTitle:!0,cover:!0,getItems:getItems,cardFields:["Name","ProductionYear"],interactive:!1,autoplay:!0})).show(),instance.currentSlideshow=slideshow)}))},BackdropScreenSaver.prototype.hide=function(){var currentSlideshow=this.currentSlideshow;currentSlideshow&&(currentSlideshow.hide(),this.currentSlideshow=null)},_exports.default=BackdropScreenSaver});

View File

@@ -0,0 +1 @@
define(["exports","./../emby-apiclient/connectionmanager.js","./../common/servicelocator.js","./../layoutmanager.js","./../common/globalize.js","./../approuter.js","./../actionsheet/actionsheet.js","./../common/itemmanager/itemmanager.js"],function(_exports,_connectionmanager,_servicelocator,_layoutmanager,_globalize,_approuter,_actionsheet,_itemmanager){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_exports.default=function(options){var apiClient=_connectionmanager.default.currentApiClient();return function(apiClient){return apiClient?apiClient.getCurrentUser():Promise.resolve(null)}(apiClient).then(function(user){return _actionsheet.default.show({items:function(apiClient,user){var items=[];return items.push({name:_globalize.default.translate("HeaderAppSettings"),id:"settings",icon:"&#xE8B8;",secondaryText:_servicelocator.appHost.appName()+" "+_servicelocator.appHost.appVersion()}),user&&user.Policy.IsAdministrator&&_approuter.default.getRouteInfo(_approuter.default.getRouteUrl("manageserver"))&&items.push({name:_globalize.default.translate("ManageEmbyServer"),id:"manageserver",icon:"dashboard"}),_servicelocator.appHost.supports("multiserver")&&items.push({name:_globalize.default.translate("HeaderChangeServer"),id:"selectserver",icon:_itemmanager.default.getDefaultIcon({Type:"Server"})}),apiClient&&!_connectionmanager.default.isLoggedIntoConnect()&&items.push({name:_globalize.default.translate("HeaderChangeUser"),id:"changeuser",icon:_itemmanager.default.getDefaultIcon({Type:"User"})}),_layoutmanager.default.tv&&_servicelocator.appHost.supports("exit")&&items.push({name:_globalize.default.translate("Exit"),id:"exit",icon:"&#xE879;"}),_servicelocator.appHost.supports("sleep")&&items.push({name:_globalize.default.translate("Sleep"),id:"sleep",icon:"&#xE426;"}),items.push({name:_globalize.default.translate("HeaderSignOut"),id:"logout",icon:"&#xE879;"}),_servicelocator.appHost.supports("shutdown")&&items.push({name:_globalize.default.translate("Shutdown"),id:"shutdown",icon:"&#xE8AC;"}),_servicelocator.appHost.supports("restart")&&items.push({name:_globalize.default.translate("Restart"),id:"restart",icon:"&#xE5D5;"}),items}(apiClient,user),positionTo:options.positionTo,positionY:options.positionY,positionX:options.positionX,transformOrigin:options.transformOrigin,item:user,showServerName:!0,hasItemIcon:!0}).then(function(id){switch(id){case"logout":_approuter.default.logout(apiClient);break;case"changeuser":_approuter.default.showServerLogin(apiClient);break;case"home":_approuter.default.goHome();break;case"exit":_servicelocator.appHost.exit();break;case"sleep":_servicelocator.appHost.sleep();break;case"shutdown":_servicelocator.appHost.shutdown();break;case"restart":_servicelocator.appHost.restart();break;case"settings":_approuter.default.showSettings();break;case"manageserver":_approuter.default.show(_approuter.default.getRouteUrl("manageserver"));break;case"selectserver":_approuter.default.showSelectServer();break;default:return Promise.reject()}return Promise.resolve()})})}});

1
modules/browser.js Normal file
View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var userAgent=navigator.userAgent,match=(ua=(ua=userAgent).toLowerCase(),match=/(edge)[ \/]([\w.]+)/.exec(ua)||/(opera)[ \/]([\w.]+)/.exec(ua)||/(opr)[ \/]([\w.]+)/.exec(ua)||/(chrome)[ \/]([\w.]+)/.exec(ua)||/(safari)[ \/]([\w.]+)/.exec(ua)||/(firefox)[ \/]([\w.]+)/.exec(ua)||[],ua=/(ipad)/.exec(ua)||/(iphone)/.exec(ua)||/(android)/.exec(ua)||[],"edge"===(match=match[1]||"")&&(ua=[""]),{browser:match="opr"===match?"opera":match,platform:ua[0]||""}),ua={},match=(match.browser&&(ua[match.browser]=!0),match.platform&&(ua[match.platform]=!0),userAgent.toLowerCase()),match=(ua.chrome||ua.edge||ua.opera||!match.includes("webkit")||(ua.safari=!0),match.includes("playstation")&&(ua.playstation=!0,ua.tv=!0,match.includes("playstation 4"))&&(ua.ps4=!0),ua.xboxOne=function(userAgentLower){return!!userAgentLower.includes("xbox")||!("undefined"==typeof Windows||!Windows.System)&&"Windows.Xbox"===Windows.System.Profile.AnalyticsInfo.versionInfo.deviceFamily}(match),ua.tizen=match.includes("tizen")||null!=globalThis.tizen,ua.web0s=match.includes("Web0S".toLowerCase()),ua.netcast=match.includes("netcast"),ua.electron=match.includes("electron"),ua.windows=match.includes("windows"),ua.tizen&&(ua.sdkVersion=function(){var v;if("undefined"!=typeof tizen&&tizen.systeminfo)return v=tizen.systeminfo.getCapability("http://tizen.org/feature/platform.version"),parseFloat(v)}()),ua.tv=function(userAgent){return!!((userAgent=userAgent.toLowerCase()).includes("tv")||userAgent.includes("viera")||userAgent.includes("web0s")||userAgent.includes("zidoo"))}(userAgent),(ua.tv&&match.includes("opr/")||globalThis.location&&(globalThis.location.href||"").toString().toLowerCase().includes("operatv"))&&(ua.tv=!0,ua.operaTv=!0),(ua.xboxOne||ua.playstation||ua.tizen||ua.netcast||ua.web0s||ua.operaTv||match.includes("smarthub"))&&(ua.tv=!0),ua.iOS=ua.ipad||ua.iphone||ua.ipod,ua.iOS||(ua.osx=match.includes("mac os x")),ua.chromecast=ua.chrome&&match.includes("crkey"),!function(browser,userAgent){var userAgentData=navigator.userAgentData;if(userAgentData||(userAgentData={},navigator.userAgentData=userAgentData),null==userAgentData.mobile)try{userAgentData.mobile=function(userAgent){var lower=userAgent.toLowerCase();if(lower.includes("android tv"))return!1;for(var terms=["mobi","ipad","iphone","ipod","silk","kindle fire","opera mini"],i=0,length=terms.length;i<length;i++)if(lower.includes(terms[i]))return!0;return"undefined"!=typeof document&&"ontouchstart"in document.documentElement}(userAgent)}catch(err){console.log("error setting userAgentData.mobile: "+err)}!function(userAgentData,browser){var brands=userAgentData.brands;if(brands||(userAgentData.brands=brands=[]),!brands.length){userAgentData=browser.chrome?"Chrome":browser.edge?"Edge":browser.firefox?"Firefox":browser.opera?"Opera":browser.safari?"Safari":"Web Browser";try{brands.push({brand:userAgentData})}catch(err){console.log("error adding brands: "+err)}if(browser.chrome||browser.opera)try{brands.push({brand:"Chromium"})}catch(err){console.log("error adding brands: "+err)}}}(userAgentData,browser),userAgentData.getHighEntropyValues||(userAgentData.getHighEntropyValues=function(){var info={};return this.android?info.platform="Android":this.iOS?info.platform="iOS":this.ipad?info.platform="iPadOS":this.osx?info.platform="macOS":this.xboxOne?info.platform="Xbox One":this.windows?info.platform="Windows":this.playstation?info.platform="PlayStation":this.web0s||this.netcast?info.platform="LG TV":this.tizen?info.platform="Samsung TV":this.operaTv&&(info.platform="Opera TV"),Promise.resolve(info)}.bind(browser))}(ua,userAgent),ua);_exports.default=match});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports","./../emby-apiclient/connectionmanager.js","./../emby-apiclient/events.js","./../common/servicelocator.js"],function(_exports,_connectionmanager,_events,_servicelocator){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var protocols="(?:(?:http|https|rtsp|ftp):\\/\\/)",linkRegExp=RegExp("(?:(?:(?:http|https|rtsp|ftp):\\/\\/)?(?:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,64}(?:\\:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,25})?\\@)?(?:((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?|(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])))(?:\\:\\d{1,5})?(?:\\/(?:(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2})|(?:[\\;\\?\\:\\.\\!\\'\\(\\)\\,\\=]+(?=(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2}))))*|\\b|$)","gi"),protocolRegExp=RegExp("^"+protocols,"i");var LinkParser={parse:function(text){for(var links=[],match=linkRegExp.exec(text);match;){var txt=match[0],pos=match.index,len=txt.length,url=function(url){return url=url.match(protocolRegExp)?url:"http://"+url}(text);links.push({pos:pos,text:txt,len:len,url:url}),match=linkRegExp.exec(text)}return links}},cache={};function clearCache(){cache={}}function addToCache(key,value){cache[key]={value:value,time:Date.now()}}_events.default.on(_connectionmanager.default,"localusersignedin",clearCache),_events.default.on(_connectionmanager.default,"localusersignedout",clearCache),_exports.default={getServerAddress:function(apiClient){var serverAddress=apiClient.serverAddress();if(!(address=(address=serverAddress).toLowerCase()).includes("127.0.0.1")&&!address.includes("localhost")){if(function(address){return 1===LinkParser.parse(address).length}(serverAddress))return Promise.resolve(serverAddress);if(serverAddress.toLowerCase().startsWith("https:")&&_servicelocator.appHost.supports("multiserver"))return Promise.resolve(serverAddress)}var address=function(key){key=cache[key];if(key&&Date.now()-key.time<18e4)return key.value;return null}(serverAddress);return address?Promise.resolve(address):apiClient.getEndpointInfo().then(function(endpoint){return endpoint.IsInNetwork?apiClient.getPublicSystemInfo().then(function(info){return info.LocalAddress?(addToCache(serverAddress,info.LocalAddress),info.LocalAddress):(addToCache(serverAddress,serverAddress),serverAddress)}):(addToCache(serverAddress,serverAddress),serverAddress)})}}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports","./../emby-apiclient/events.js","./servicelocator.js"],function(_exports,_events,_servicelocator){function getKey(name,userId){return name=userId?userId+"-"+name:name}function AppSettings(){}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,AppSettings.prototype.enableAutoLogin=function(val){return null!=val&&this.set("enableAutoLogin",val.toString()),"false"!==this.get("enableAutoLogin")},AppSettings.prototype.enableAutomaticBitrateDetection=function(isInNetwork,mediaType,val){var key="enableautobitratebitrate-"+mediaType+"-"+isInNetwork;return null!=val&&this.set(key,(val=isInNetwork&&"Audio"===mediaType?!0:val).toString()),!(!isInNetwork||"Audio"!==mediaType)||"false"!==this.get(key)},AppSettings.prototype.maxStreamingBitrate=function(isInNetwork,mediaType,val){var key="maxbitrate-"+mediaType+"-"+isInNetwork;return null==val||isInNetwork&&"Audio"===mediaType||this.set(key,val),isInNetwork&&"Audio"===mediaType?15e7:parseInt(this.get(key)||"0")||15e5},AppSettings.prototype.maxStaticMusicBitrate=function(val){void 0!==val&&this.set("maxStaticMusicBitrate",val);return parseInt(this.get("maxStaticMusicBitrate")||32e4.toString())||32e4},AppSettings.prototype.maxChromecastBitrate=function(val){return null!=val&&this.set("chromecastBitrate1",val),(val=this.get("chromecastBitrate1"))?parseInt(val):null},AppSettings.prototype.introSkipDisplayCount=function(val){return null!=val&&this.set("introSkipDisplayCount",val),(val=this.get("introSkipDisplayCount"))?parseInt(val):0},AppSettings.prototype.syncOnlyOnWifi=function(val){return null!=val&&this.set("syncOnlyOnWifi",val.toString()),"false"!==this.get("syncOnlyOnWifi")},AppSettings.prototype.cameraUploadOnlyOnWifi=function(val){return null!=val&&this.set("cameraUploadOnlyOnWifi",val.toString()),"false"!==this.get("cameraUploadOnlyOnWifi")},AppSettings.prototype.syncWhenRoaming=function(val){return null!=val&&this.set("syncWhenRoaming",val.toString()),"false"!==this.get("syncWhenRoaming")},AppSettings.prototype.syncPath=function(val){return null!=val&&this.set("syncPath",val),this.get("syncPath")},AppSettings.prototype.cameraUploadFolders=function(val){return null!=val&&this.set("cameraUploadFolders",val.join("||")),(val=this.get("cameraUploadFolders"))?val.split("||"):[]},AppSettings.prototype.cameraUploadServers=function(val){return null!=val&&this.set("cameraUploadServers",val.join(",")),(val=this.get("cameraUploadServers"))?val.split(","):[]},AppSettings.prototype.runAtStartup=function(val){return null!=val&&this.set("runatstartup",val.toString()),"true"===this.get("runatstartup")},AppSettings.prototype.enableRefreshRateSwitching=function(val){return null!=val&&this.set("enableRefreshRateSwitching",val.toString()),"true"===this.get("enableRefreshRateSwitching")},AppSettings.prototype.enableResolutionSwitching=function(val){return null!=val&&this.set("enableResolutionSwitching",val.toString()),"true"===this.get("enableResolutionSwitching")},AppSettings.prototype.backgroundVideo=function(val){return null!=val&&this.set("backgroundVideo",val),this.get("backgroundVideo")},AppSettings.prototype.preferredVideoPlayer=function(val){return null!=val&&this.set("preferredVideoPlayer",val),this.get("preferredVideoPlayer")},AppSettings.prototype.set=function(name,value,userId){var currentValue=this.get(name,userId);_servicelocator.appStorage.setItem(getKey(name,userId),value),currentValue!==value&&_events.default.trigger(this,"change",[name,value])},AppSettings.prototype.get=function(name,userId){return _servicelocator.appStorage.getItem(getKey(name,userId))},AppSettings.prototype.enableSystemExternalPlayers=function(val){return null!=val&&this.set("enableSystemExternalPlayers",val.toString()),"true"===this.get("enableSystemExternalPlayers")};var _default=new AppSettings;_exports.default=_default});

View File

@@ -0,0 +1 @@
define(["exports","./globalize.js"],function(_exports,_globalize){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var units=[["year",31536e6],["month",2592e6],["week",6048e5],["day",864e5],["hour",36e5],["minute",6e4],["second",1e3]];function numberToString(value,maximumFractionDigits){try{return new Intl.NumberFormat(_globalize.default.getCurrentLocales(),{style:"decimal",maximumFractionDigits:null==maximumFractionDigits?1:maximumFractionDigits}).format(value)}catch(err){return console.log("Error in NumberFormat: "+err),value}}var humaneDateFn=window.Intl&&window.Intl.RelativeTimeFormat?function(date_str,isPastEvent){for(var unit,date_str=new Date(Date.parse(date_str)).getTime()-Date.now(),elapsedMsAbs=Math.abs(date_str),i=0,length=units.length;i<length&&!(elapsedMsAbs>=(unit=units[i])[1]);i++);return date_str=Math.round(date_str/unit[1]),!1!==isPastEvent&&-1<(date_str=Math.min(date_str,1))&&(date_str=-1,unit=units[units.length-1]),new Intl.RelativeTimeFormat(_globalize.default.getCurrentLocales()).format(date_str,unit[0])}:function(date_str){var format,time_formats=[[90,"a minute"],[3600,"minutes",60],[5400,"an hour"],[86400,"hours",3600],[129600,"a day"],[604800,"days",86400],[907200,"a week"],[2628e3,"weeks",604800],[3942e3,"a month"],[31536e3,"months",2628e3],[47304e3,"a year"],[31536e5,"years",31536e3]],seconds=(new Date-new Date(Date.parse(date_str)))/1e3,i=0;for(seconds<0&&(seconds=Math.abs(seconds));null!=(format=time_formats[i++]);)if(seconds<format[0])return 2===format.length?format[1]+" ago":Math.round(seconds/format[2])+" "+format[1]+" ago";return 47304e5<seconds?Math.round(seconds/47304e5)+" centuries ago":date_str};_exports.default={formatRelativeTime:humaneDateFn,bitrateToString:function(value){return 1e3<(value/=1e3)?numberToString(value/=1e3,0)+" mbps":numberToString(parseInt(value))+" kbps"},sizeToString:function(size){var gb=1073741824;return gb<=size?numberToString(size/gb,1)+" GB":numberToString(size/1048576,1)+" MB"},numberToString:numberToString,getResolutionText:function(item){var width,height;return"Video"!==item.MediaType?item.Width&&item.Height?item.Width+"x"+item.Height:null:(width=item.Width,height=item.Height,width&&height?3800<=width||2e3<=height?"4K":2500<=width||1400<=height?item.IsInterlaced?"1440i":"1440p":1800<=width||1e3<=height?item.IsInterlaced?"1080i":"1080p":1200<=width||700<=height?item.IsInterlaced?"720i":"720p":700<=width||400<=height?item.IsInterlaced?"480i":"480p":"SD":null)}}});

View File

@@ -0,0 +1 @@
define(["exports","./globalize.js"],function(_exports,_globalize){function getDisplayRunningTime(ticks){var parts=[],hours=ticks/36e9,minutes=((hours=Math.floor(hours))&&parts.push(hours),(ticks-=36e9*hours)/6e8),hours=(ticks-=6e8*(minutes=Math.floor(minutes)),parts.push(minutes=minutes<10&&hours?"0"+minutes:minutes),ticks/1e7),hours=Math.floor(hours);return parts.push(hours=hours<10?"0"+hours:hours),parts.join(":")}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var toLocaleTimeStringSupportsLocales=function(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}();function toLocaleTimeString(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=_globalize.default.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleTimeString(currentLocale,options)}return date.toLocaleTimeString()}_exports.default={parseISO8601Date:function(s){return new Date(Date.parse(s))},getDisplayRunningTime:getDisplayRunningTime,toLocaleDateString:function(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=_globalize.default.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleDateString(currentLocale,options)}return 1===(currentLocale=function(options){var i,list=[];for(i in options)list.push({name:i,value:options[i]});return list}(options)).length&&"weekday"===currentLocale[0].name?(options=[],"long"===currentLocale[0].value?(options[0]="Sunday",options[1]="Monday",options[2]="Tuesday",options[3]="Wednesday",options[4]="Thursday",options[5]="Friday",options[6]="Saturday"):(options[0]="Sun",options[1]="Mon",options[2]="Tue",options[3]="Wed",options[4]="Thu",options[5]="Fri",options[6]="Sat"),options[date.getDay()]):date.toLocaleDateString()},toLocaleString:function(date,options){if(!date)throw new Error("date cannot be null");if(options=options||{},toLocaleTimeStringSupportsLocales){var currentLocale=_globalize.default.getCurrentDateTimeLocale();if(currentLocale)return date.toLocaleString(currentLocale,options)}return date.toLocaleString()},getDisplayTime:function(date){if(!date)throw new Error("date cannot be null");if("string"===(typeof date).toString().toLowerCase())try{date=new Date(Date.parse(date))}catch(err){return date}var time,suffix,timeLower;return toLocaleTimeStringSupportsLocales?toLocaleTimeString(date,{hour:"numeric",minute:"2-digit"}):((timeLower=(time=toLocaleTimeString(date)).toLowerCase()).includes("am")||timeLower.includes("pm")?(time=timeLower,timeLower=date.getHours()%12,suffix=11<date.getHours()?"pm":"am",time=(timeLower=timeLower||12)+(timeLower=":"+(timeLower=(timeLower=date.getMinutes())<10?"0"+timeLower:timeLower))+suffix):2<(date=time.split(":")).length&&(date.length=2,time=date.join(":")),time)},isRelativeDay:function(date,offsetInDays){var yesterday;if(date)return offsetInDays=(yesterday=new Date).getDate()+offsetInDays,yesterday.setDate(offsetInDays),date.getFullYear()===yesterday.getFullYear()&&date.getMonth()===yesterday.getMonth()&&date.getDate()===offsetInDays;throw new Error("date cannot be null")},toLocaleTimeString:toLocaleTimeString,supportsLocalization:function(){return toLocaleTimeStringSupportsLocales},getHumanReadableRuntime:function(ticks){try{var days=Math.trunc(ticks/864e9),hours=Math.trunc(ticks%864e9/36e9),mins=Math.trunc(ticks%36e9/6e8),parts=[];return(days&&parts.push(days+"d"),hours&&parts.push(hours+"h"),mins&&parts.push(mins+"m"),parts.length)?parts.join(" "):getDisplayRunningTime(ticks)}catch(err){return getDisplayRunningTime(ticks)}}}});

View File

@@ -0,0 +1 @@
define(["exports","./../globalize.js","./../../dialog/dialog.js"],function(_exports,_globalize,_dialog){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=function(text,title){title="string"==typeof text?{title:title,text:text}:text;text=[];!1!==title.confirmButton&&text.push({name:title.confirmText||_globalize.default.translate("ButtonGotIt"),id:"ok",type:"submit",href:title.confirmHref});return title.buttons=text,title.dialogType="alert",(0,_dialog.default)(title).then(function(result){return"ok"===result?Promise.resolve():Promise.reject()})}});

View File

@@ -0,0 +1 @@
define(["exports","./../globalize.js","./../../dialog/dialog.js"],function(_exports,_globalize,_dialog){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=function(text,title){var options;options="string"==typeof text?{title:title,text:text}:text;title=[];title.push({name:options.cancelText||_globalize.default.translate("Cancel"),id:"cancel",type:"cancel"===options.primary?"submit":"cancel"}),title.push({name:options.confirmText||_globalize.default.translate("ButtonOk"),id:"ok",type:"cancel"===options.primary?"cancel":"submit"}),"cancel"!==options.primary&&title.reverse();return options.buttons=title,options.dialogType="confirm",(0,_dialog.default)(options).then(function(result){return"ok"===result?Promise.resolve():options.cancelResult?Promise.reject(options.cancelResult):Promise.reject()})}});

View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_exports.default={fileExists:function(path){return Promise.reject()},directoryExists:function(path){return Promise.reject()}}});

View File

@@ -0,0 +1 @@
define(["exports","./../emby-apiclient/events.js","./../emby-apiclient/connectionmanager.js","./usersettings/usersettings.js"],function(_exports,_events,_connectionmanager,_usersettings){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var currentCulture,currentDateTimeCulture,currentLocales,cacheParam,allTranslations={},allStrings={},rtlLocales=["ar","he","fa","ur","ug"],arabicLocales=["ar","fa","ur","ug"];function getCurrentLocale(){return currentCulture}function updateCurrentCulture(){var culture,dateTimeCulture;try{culture=_usersettings.default.language()}catch(err){}culture=culture||function(){var culture="undefined"==typeof document?null:document.documentElement.getAttribute("data-culture");return culture||navigator.language||navigator.userLanguage||(navigator.languages&&navigator.languages.length?navigator.languages[0]:"en-us")}(),"undefined"!=typeof document&&CSS.supports("text-align","start")&&CSS.supports("inset-inline-start","0")&&(document.dir=rtlLocales.includes((culture||"").toLowerCase())?"rtl":"ltr",arabicLocales.includes((culture||"").toLowerCase())?document.documentElement.classList.add("rtl-arabic"):document.documentElement.classList.remove("rtl-arabic")),currentCulture=normalizeLocaleName(culture),currentLocales=[currentCulture];try{dateTimeCulture=_usersettings.default.dateTimeLocale()}catch(err){}currentDateTimeCulture=dateTimeCulture?normalizeLocaleName(dateTimeCulture):currentCulture,function(culture){for(var i in allTranslations)ensureTranslation(allTranslations[i],culture)}(currentCulture),_connectionmanager.default.setCurrentLocale(currentCulture)}function ensureTranslation(translationInfo,culture){return translationInfo.dictionaries[culture]?Promise.resolve():function(translations,lang){lang=normalizeLocaleName(lang);var filtered=translations.filter(function(t){return normalizeLocaleName(t.lang)===lang});filtered.length||(filtered=translations.filter(function(t){return"en-us"===normalizeLocaleName(t.lang)}));if(!filtered.length)return Promise.resolve();translations=filtered[0].path;cacheParam&&(translations=(translations+=-1===translations.indexOf("?")?"?":"&")+cacheParam);return("undefined"==typeof XMLHttpRequest?function(url){return fetch(url).then(function(response){return response.json()})}:function(url){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.onload=function(e){this.status<400?resolve(JSON.parse(this.response)):resolve()},xhr.onerror=function(){resolve()},xhr.send()})})(translations)}(translationInfo.translations,culture).then(function(dictionary){translationInfo.dictionaries[culture]=!0,dictionary&&(allStrings[culture]?allStrings[culture]=Object.assign(dictionary,allStrings[culture]||{}):allStrings[culture]=dictionary)})}function normalizeLocaleName(culture){var parts=(culture=culture.replace("_","-")).split("-"),parts=(culture=2===parts.length&&parts[0].toLowerCase()===parts[1].toLowerCase()?parts[0].toLowerCase():culture).toLowerCase();return"ca-es"===parts?"ca":"sv-se"===parts?"sv":parts}function register(options){allTranslations[options.name]={translations:options.strings||options.translations,dictionaries:{}}}function translateKey(key){var dictionary=allStrings[currentCulture];if(dictionary){dictionary=dictionary[key];if(dictionary)return dictionary}return key}function translate(key){for(var val=translateKey(key),i=1;i<arguments.length;i++)val=val.replaceAll("{"+(i-1)+"}",arguments[i]);return val}function translateHtml(html){var endIndex,startIndex=html.indexOf("${");return-1===startIndex||-1===(endIndex=html.indexOf("}",startIndex+=2))?html:(endIndex=translateKey(startIndex=html.substring(startIndex,endIndex)),translateHtml(html=html.replace("${"+startIndex+"}",endIndex)))}updateCurrentCulture(),_events.default.on(_connectionmanager.default,"localusersignedin",updateCurrentCulture),_events.default.on(_usersettings.default,"change",function(e,name){"language"!==name&&"datetimelocale"!==name||updateCurrentCulture()}),_exports.default={getString:translate,translate:translate,translateDocument:translateHtml,translateHtml:translateHtml,loadStrings:function(options){var locale=currentCulture;return"string"==typeof options?ensureTranslation(allTranslations[options],locale):(register(options),ensureTranslation(allTranslations[options.name],locale))},getCurrentLocale:getCurrentLocale,getCurrentDateTimeLocale:function(){return currentDateTimeCulture},getCurrentLocales:function(){return currentLocales},register:register,setCacheParam:function(value){cacheParam=value}}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports","./itemmanager/itemmanager.js"],function(_exports,_itemmanager){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_exports.default={getDisplayName:function(item,options){return _itemmanager.default.getDisplayName(item,options)},supportsAddingToCollection:function(item,user){return _itemmanager.default.canAddToCollection(item,user)},supportsAddingToPlaylist:function(item){return _itemmanager.default.canAddToPlaylist(item)},canDelete:function(item,user){return _itemmanager.default.canDelete(item,user)},canEdit:function(item,user){return _itemmanager.default.canEdit(item,user)},canEditImages:function(item,user){return _itemmanager.default.canEditImages(item,user)},enableDateAddedDisplay:function(item){var itemType=item.Type;return!item.IsFolder&&item.MediaType&&"Program"!==itemType&&"TvChannel"!==itemType&&"Trailer"!==itemType},canMarkPlayed:function(item){return _itemmanager.default.canMarkPlayed(item)},canRate:function(item){return _itemmanager.default.canRate(item)},canConvert:function(item,user){return _itemmanager.default.canConvert(item,user)},canRefreshMetadata:function(item,user){return _itemmanager.default.canRefreshMetadata(item,user)},supportsMediaSourceSelection:function(item){return"Video"===item.MediaType&&"TvChannel"!==item.Type&&!(!item.MediaSources||1===item.MediaSources.length&&"Placeholder"===item.MediaSources[0].Type)},supportsSimilarItems:function(item){switch(item.Type){case"Movie":case"Trailer":case"Series":case"Program":case"Recording":case"Game":case"MusicAlbum":case"MusicArtist":case"MusicVideo":return!0;case"Timer":return null!=item.ProgramId;default:return!1}},supportsSimilarItemsOnLiveTV:function(item,apiClient){switch(item.Type){case"Movie":case"Trailer":case"Series":return!0;default:return!1}},supportsExtras:function(item){if(item.IsFolder)return!1;switch(item.Type){case"TvChannel":case"Program":return!1}return"Video"===item.MediaType},normalizeMediaStreamForDisplay:function(item,mediaSource,stream){return"Subtitle"===(stream=Object.assign({},stream)).Type&&"Audio"===item.MediaType&&(stream.SubtitleType="Lyrics"),"MediaStream"!==stream.Type&&(stream.StreamType=stream.Type,stream.Type="MediaStream"),stream.ServerId=item.ServerId,stream.ItemId=item.Id,stream.MediaSourceId=mediaSource.Id,stream}}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports","./servicelocator.js","./../emby-apiclient/events.js"],function(_exports,_servicelocator,_events){function onInterval(){this._lastInterval=Date.now();var options=this.options;options&&options.onInterval()}function MethodTimer(options){this.options=options,this.boundOnAppResume=function(){var options,started=this.isStarted();this.stopInterval(),started&&((started=this._lastInterval)&&(options=this.options)&&started+options.timeoutMs<=Date.now()&&onInterval.call(this),this.startInterval())}.bind(this),this.boundOnInterval=onInterval.bind(this),_events.default.on(_servicelocator.appHost,"resume",this.boundOnAppResume),this.startInterval()}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,MethodTimer.prototype.stopInterval=function(){this._interval&&(("interval"===this._intervalType?clearInterval:clearTimeout)(this._interval),this._interval=null,this._intervalType=null)},MethodTimer.prototype.startInterval=function(){this._lastInterval=Date.now(),"interval"===this.options.type?(this._interval=setInterval(this.boundOnInterval,this.options.timeoutMs),this._intervalType="interval"):this._interval=setTimeout(this.boundOnInterval,this.options.timeoutMs)},MethodTimer.prototype.isStarted=function(){return null!=this._interval},MethodTimer.prototype.destroy=function(){this.options=null,this.boundOnAppResume&&(_events.default.off(_servicelocator.appHost,"resume",this.boundOnAppResume),this.boundOnAppResume=null),this.stopInterval(),this.boundOnInterval=null,this._lastInterval=null},_exports.default=MethodTimer});

View File

@@ -0,0 +1 @@
define(["exports","./../servicelocator.js","./../usersettings/usersettings.js"],function(_exports,_servicelocator,_usersettings){function getResolvedPromise(){return Promise.resolve()}function showMessage(text,userSettingsKey,appHostFeature){var dayNum,options;return _servicelocator.appHost.supports(appHostFeature)||(userSettingsKey+=(appHostFeature=new Date).getFullYear()+"-w"+(appHostFeature=appHostFeature,dayNum=(appHostFeature=new Date(Date.UTC(appHostFeature.getFullYear(),appHostFeature.getMonth(),appHostFeature.getDate()))).getUTCDay()||7,appHostFeature.setUTCDate(appHostFeature.getUTCDate()+4-dayNum),dayNum=new Date(Date.UTC(appHostFeature.getUTCFullYear(),0,1)),Math.ceil(((appHostFeature-dayNum)/864e5+1)/7)),"1"===_usersettings.default.get(userSettingsKey,!1))?Promise.resolve():(_usersettings.default.set(userSettingsKey,"1",!1),options=text,Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)}).catch(getResolvedPromise))}function ExpirementalPlaybackWarnings(){this.name="Experimental playback warnings",this.type="preplayintercept",this.id="expirementalplaybackwarnings"}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,ExpirementalPlaybackWarnings.prototype.intercept=function(options){options=options.item;return options?"iso"===options.Container||"blurayiso"===options.Container||"dvdiso"===options.Container?showMessage("Playback of ISO files in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native ISO support.","isoexpirementalinfo","nativeisoplayback"):"bluray"===options.Container?showMessage("Playback of Bluray folders in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native Bluray folder support.","blurayexpirementalinfo","nativeblurayplayback"):"dvd"===options.Container?showMessage("Playback of Dvd folders in this app is experimental. Some titles may not work at all. For a better experience, consider converting to mkv video files, or use an Emby app with native Dvd folder support.","dvdexpirementalinfo","nativedvdplayback"):Promise.resolve():Promise.resolve()},_exports.default=ExpirementalPlaybackWarnings});

View File

@@ -0,0 +1 @@
define(["exports","./../globalize.js","./../../emby-apiclient/connectionmanager.js"],function(_exports,_globalize,_connectionmanager){function showErrorMessage(){return options=_globalize.default.translate("MessagePlayAccessRestricted"),Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)}).then(function(){return Promise.reject()});var options}function PlayAccessValidation(){this.name="Playback validation",this.type="preplayintercept",this.id="playaccessvalidation",this.order=-2}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,PlayAccessValidation.prototype.intercept=function(options){var item=options.item;return(item=item&&item.ServerId)?_connectionmanager.default.getApiClient(item).getCurrentUser().then(function(user){return user.Policy.EnableMediaPlayback?Promise.resolve():options.fullscreen?showErrorMessage():Promise.reject()}):Promise.resolve()},_exports.default=PlayAccessValidation});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports","./playbackmanager.js","./../../emby-apiclient/apiclient.js"],function(_exports,_playbackmanager,_apiclient){function validatePlayback(options){var feature="playback";if("playback"===(feature=!options.item||"TvChannel"!==options.item.Type&&"Recording"!==options.item.Type?feature:"livetv")){var player=_playbackmanager.default.getCurrentPlayer();if(player&&!player.isLocalPlayer)return Promise.resolve()}return new Promise(function(resolve,reject){require(["registrationServices"],function(registrationServices){registrationServices.validateFeature(feature,options).then(function(result){result&&result.enableTimeLimit&&(stopAutoStopTimer(),autoStopTimeout=setTimeout(onAutoStopTimeout,63e3)),resolve()},reject)})})}var autoStopTimeout;function onAutoStopTimeout(){stopAutoStopTimer(),_playbackmanager.default.stop()}function stopAutoStopTimer(){autoStopTimeout&&(clearTimeout(autoStopTimeout),autoStopTimeout=null)}function PlaybackValidation(){this.name="Playback validation",this.type="preplayintercept",this.id="playbackvalidation",this.order=-1}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,PlaybackValidation.prototype.intercept=function(options){return!options.fullscreen||options.item&&_apiclient.default.isLocalItem(options.item)?Promise.resolve():validatePlayback(options)},_exports.default=PlaybackValidation});

View File

@@ -0,0 +1 @@
define(["exports","./../globalize.js","./../../dialog/dialog.js","./playbackmanager.js"],function(_exports,_globalize,_dialog,_playbackmanager){function PlayQueueConfirmation(){this.name="Play Queue Confirmation",this.type="preplayintercept",this.id="playqueueconfirmation"}function showConfirmation(playOptions){var player=_playbackmanager.default.getCurrentPlayer(),options={text:_globalize.default.translate("AfterThisPlaysConfirmation")},items=[];return items.push({name:_globalize.default.translate("Keep"),id:"keep",type:"submit"}),items.push({name:_globalize.default.translate("Clear"),id:"clear"}),items.push({name:_globalize.default.translate("Cancel"),id:"cancel",type:"cancel"}),options.buttons=items,(0,_dialog.default)(options).then(function(result){return"cancel"===result?Promise.reject():"keep"===result?function(options,player){var currentPlaylistIndex=_playbackmanager.default.getCurrentPlaylistIndex(player);return-1===currentPlaylistIndex?Promise.resolve():_playbackmanager.default.getPlaylist({StartIndex:currentPlaylistIndex},player).then(function(result){var items=options.items,result=result.Items;if(!result.length)return Promise.resolve();items.push.apply(items,babelHelpers.toConsumableArray(result))})}(playOptions,player):Promise.resolve()})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,PlayQueueConfirmation.prototype.intercept=function(options){var item=options.item;if(item&&"play"===options.command&&"Audio"===options.mediaType&&_playbackmanager.default.isPlayingAudio()&&options.fullscreen){item=_playbackmanager.default.getCurrentPlaylistLength();if(1<item)return showConfirmation(options)}return Promise.resolve()},_exports.default=PlayQueueConfirmation});

View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var currentId=0;function addUniquePlaylistItemId(item){item.PlaylistItemId||(item.PlaylistItemId="playlistItem"+currentId,currentId++)}function PlayQueueManager(){this._playlist=[],this._repeatMode="RepeatNone"}PlayQueueManager.prototype.getPlaylistResult=function(options){options&&(startIndex=options.StartIndex,limit=options.Limit);var startIndex,limit,options=this._playlist,total=options.length,options=options.slice(startIndex||0);return limit&&options.length>limit&&(options.length=limit),{Items:options,TotalRecordCount:total}},PlayQueueManager.prototype.getPlaylist=function(){return this._playlist.slice(0)},PlayQueueManager.prototype.setPlaylist=function(items){for(var i=0,length=(items=items.slice(0)).length;i<length;i++)addUniquePlaylistItemId(items[i]);this._currentPlaylistItemId=null,this._currentPlaylistIndex=-1,this._playlist=items,this._repeatMode="RepeatNone"},PlayQueueManager.prototype.queue=function(items){for(var i=0,length=items.length;i<length;i++)addUniquePlaylistItemId(items[i]),this._playlist.push(items[i])},PlayQueueManager.prototype.queueNext=function(items){for(var i=0,length=items.length;i<length;i++)addUniquePlaylistItemId(items[i]);var destArray,arrayToInsert,args,currentIndex=this.getCurrentPlaylistIndex();-1===currentIndex?currentIndex=this._playlist.length:currentIndex++,destArray=this._playlist,currentIndex=currentIndex,arrayToInsert=items,(args=[]).push(currentIndex),args.push(0),args=args.concat(arrayToInsert),destArray.splice.apply(destArray,args)},PlayQueueManager.prototype.getCurrentPlaylistLength=function(){return this._playlist.length},PlayQueueManager.prototype.getCurrentPlaylistIndex=function(){return this._currentPlaylistIndex},PlayQueueManager.prototype.getCurrentItem=function(){var index=this._currentPlaylistIndex;return-1===index?null:this._playlist[index]},PlayQueueManager.prototype.getCurrentPlaylistItemId=function(){return this._currentPlaylistItemId},PlayQueueManager.prototype.setPlaylistState=function(playlistItemId,playlistIndex){this._currentPlaylistItemId=playlistItemId,null==playlistIndex?this.refreshPlaylistIndex(playlistItemId):this._currentPlaylistIndex=playlistIndex},PlayQueueManager.prototype.refreshPlaylistIndex=function(playlistItemId){this._currentPlaylistIndex=function(playlistItemId,list){for(var i=0,length=list.length;i<length;i++)if(list[i].PlaylistItemId===playlistItemId)return i;return-1}(playlistItemId||this._currentPlaylistItemId,this._playlist)},PlayQueueManager.prototype.setPlaylistIndex=function(playlistIndex){playlistIndex<0?this.setPlaylistState(null):this.setPlaylistState(this._playlist[playlistIndex].PlaylistItemId)},PlayQueueManager.prototype.removeFromPlaylist=function(playlistItemIds){var currentPlaylistItemId,playlist=this.getPlaylist();return playlist.length<=playlistItemIds.length?{result:"empty"}:(currentPlaylistItemId=this.getCurrentPlaylistItemId(),currentPlaylistItemId=-1!==playlistItemIds.indexOf(currentPlaylistItemId),this._playlist=playlist.filter(function(item){return!playlistItemIds.includes(item.PlaylistItemId)}),this.refreshPlaylistIndex(),{result:"removed",isCurrentIndex:currentPlaylistItemId})},PlayQueueManager.prototype.movePlaylistItem=function(playlistItemId,newIndex){for(var oldIndex,from,playlist=this.getPlaylist(),i=0,length=playlist.length;i<length;i++)if(playlist[i].PlaylistItemId===playlistItemId){oldIndex=i;break}if(-1===oldIndex||oldIndex===newIndex)return{result:"noop"};if(newIndex>=playlist.length)throw new Error("newIndex out of bounds");return from=oldIndex,playlist.splice(newIndex,0,playlist.splice(from,1)[0]),this._playlist=playlist,this.refreshPlaylistIndex(),{result:"moved",playlistItemId:playlistItemId,oldIndex:oldIndex,newIndex:newIndex}},PlayQueueManager.prototype.reset=function(){this._playlist=[],this._currentPlaylistItemId=null,this._currentPlaylistIndex=-1,this._repeatMode="RepeatNone"},PlayQueueManager.prototype.setRepeatMode=function(value){this._repeatMode=value},PlayQueueManager.prototype.getRepeatMode=function(){return this._repeatMode},PlayQueueManager.prototype.getNextItemInfo=function(){var newIndex,playlist=this.getPlaylist(),playlistLength=playlist.length;switch(this.getRepeatMode()){case"RepeatOne":newIndex=this.getCurrentPlaylistIndex();break;case"RepeatAll":playlistLength<=(newIndex=this.getCurrentPlaylistIndex()+1)&&(newIndex=0);break;default:newIndex=this.getCurrentPlaylistIndex()+1}return!(newIndex<0||playlistLength<=newIndex)&&(playlist=playlist[newIndex])?{item:playlist,index:newIndex}:null},_exports.default=PlayQueueManager});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var queryString={parse:function(str){return"string"==typeof str&&(str=str.trim().replace(/^(\?|#|&)/,""))?str.split("&").reduce(function(ret,param){var param=param.replace(/\+/g," ").split("="),key=param[0],param=param[1],key=decodeURIComponent(key),param=void 0===param?null:decodeURIComponent(param);return Object.hasOwn(ret,key)?Array.isArray(ret[key])?ret[key].push(param):ret[key]=[ret[key],param]:ret[key]=param,ret},{}):{}},paramsToString:function(params){var key,values=[];for(key in params){var value=params[key];null!=value&&""!==value&&values.push("".concat(encodeURIComponent(key),"=").concat(encodeURIComponent(value)))}return values.join("&")}};_exports.default=queryString});

View File

@@ -0,0 +1 @@
define(["exports","./../emby-apiclient/connectionmanager.js","./../loading/loading.js","./globalize.js","./itemmanager/itemmanager.js"],function(_exports,_connectionmanager,_loading,_globalize,_itemmanager){function showToast(options){Emby.importModule("./modules/toast/toast.js").then(function(toast){return toast(options)})}function changeRecordingToSeries(apiClient,timerId,programId,confirmTimerCancellation){return _loading.default.show(),apiClient.getItem(apiClient.getCurrentUserId(),programId).then(function(item){return item.IsSeries?apiClient.getNewLiveTvTimerDefaults({programId:programId}).then(function(timerDefaults){return apiClient.createLiveTvSeriesTimer(timerDefaults).then(function(){_loading.default.hide(),showToast(_globalize.default.translate("SeriesRecordingScheduled"))})}):cancelTimer(apiClient,timerId,confirmTimerCancellation).then(function(result){return _loading.default.hide(),Promise.resolve(result)})})}function cancelTimer(apiClient,timerId,confirm){return _itemmanager.default.deleteItems({items:[{Id:timerId,ServerId:apiClient.serverId(),Type:"Timer"}],confirm:!0===confirm,navigate:!1})}function createRecording(apiClient,programId,isSeries){return _loading.default.show(),apiClient.getNewLiveTvTimerDefaults({programId:programId}).then(function(item){return(isSeries?apiClient.createLiveTvSeriesTimer(item):apiClient.createLiveTvTimer(item)).then(function(){_loading.default.hide(),showToast(_globalize.default.translate("RecordingScheduled"))})})}function showMultiCancellationPrompt(serverId,programId,timerId,timerStatus,seriesTimerId){var options,items=[];return items.push({name:_globalize.default.translate("HeaderKeepRecording"),id:"cancel",type:"submit"}),items.push("InProgress"===timerStatus?{name:_globalize.default.translate("HeaderStopRecording"),id:"canceltimer",type:"cancel"}:{name:_globalize.default.translate("HeaderCancelRecording"),id:"canceltimer",type:"cancel"}),items.push({name:_globalize.default.translate("HeaderCancelSeries"),id:"cancelseriestimer",type:"cancel"}),options={text:_globalize.default.translate("MessageConfirmRecordingCancellation"),buttons:items},Emby.importModule("./modules/dialog/dialog.js").then(function(dialog){return dialog(options)}).then(function(result){var apiClient=_connectionmanager.default.getApiClient(serverId);return"canceltimer"===result?(_loading.default.show(),cancelTimer(apiClient,timerId,!0)):"cancelseriestimer"===result?(_loading.default.show(),apiClient.cancelLiveTvSeriesTimer(seriesTimerId).then(function(){showToast(_globalize.default.translate("SeriesCancelled")),_loading.default.hide()})):Promise.resolve()})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_exports.default={cancelTimer:cancelTimer,createRecording:createRecording,changeRecordingToSeries:changeRecordingToSeries,toggleRecording:function(serverId,programId,timerId,timerStatus,seriesTimerId){var apiClient=_connectionmanager.default.getApiClient(serverId),hasTimer=timerId&&"Cancelled"!==timerStatus;return seriesTimerId&&hasTimer?showMultiCancellationPrompt(serverId,0,timerId,timerStatus,seriesTimerId):hasTimer&&programId?changeRecordingToSeries(apiClient,timerId,programId,!0):programId?createRecording(apiClient,programId):Promise.reject()}}});

View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){var appStorage,appHost,fullscreenManager,shell,iapManager,wakeOnLan,serverDiscovery,fileRepository,itemRepository,transferManager,userActionRepository,localSync,cameraUpload,apiClientFactory;Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.iapManager=_exports.fullscreenManager=_exports.fileRepository=_exports.cameraUpload=_exports.appStorage=_exports.appHost=_exports.apiClientFactory=void 0,_exports.initialize=function(services){services.appStorage&&(_exports.appStorage=appStorage=services.appStorage);services.appHost&&(_exports.appHost=appHost=services.appHost);services.fullscreenManager&&(_exports.fullscreenManager=fullscreenManager=services.fullscreenManager);services.shell&&(_exports.shell=shell=services.shell);services.iapManager&&(_exports.iapManager=iapManager=services.iapManager);services.wakeOnLan&&(_exports.wakeOnLan=wakeOnLan=services.wakeOnLan);services.serverDiscovery&&(_exports.serverDiscovery=serverDiscovery=services.serverDiscovery);services.fileRepository&&(_exports.fileRepository=fileRepository=services.fileRepository);services.itemRepository&&(_exports.itemRepository=itemRepository=services.itemRepository);services.transferManager&&(_exports.transferManager=transferManager=services.transferManager);services.userActionRepository&&(_exports.userActionRepository=userActionRepository=services.userActionRepository);services.localSync&&(_exports.localSync=localSync=services.localSync);services.cameraUpload&&(_exports.cameraUpload=cameraUpload=services.cameraUpload);services.apiClientFactory&&(_exports.apiClientFactory=apiClientFactory=services.apiClientFactory)},_exports.wakeOnLan=_exports.userActionRepository=_exports.transferManager=_exports.shell=_exports.serverDiscovery=_exports.localSync=_exports.itemRepository=void 0,_exports.appStorage=appStorage,_exports.appHost=appHost,_exports.fullscreenManager=fullscreenManager,_exports.shell=shell,_exports.iapManager=iapManager,_exports.wakeOnLan=wakeOnLan,_exports.serverDiscovery=serverDiscovery,_exports.fileRepository=fileRepository,_exports.itemRepository=itemRepository,_exports.transferManager=transferManager,_exports.userActionRepository=userActionRepository,_exports.localSync=localSync,_exports.cameraUpload=cameraUpload,_exports.apiClientFactory=apiClientFactory});

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){function getTextStyles(settings){var list=[],multiplier={smaller:.5,small:.7,medium:1,large:1.3,larger:1.72,extralarge:2}[settings.textSize||"medium"],multiplier=(1!==multiplier&&list.push({name:"font-size",value:multiplier+"em"}),settings.verticalPosition||"10");switch(list.push({name:"verticalPosition",value:multiplier}),settings.dropShadow||""){case"raised":list.push({name:"text-shadow",value:"-1px -1px white, 0px -1px white, -1px 0px white, 1px 1px black, 0px 1px black, 1px 0px black"});break;case"depressed":list.push({name:"text-shadow",value:"1px 1px white, 0px 1px white, 1px 0px white, -1px -1px black, 0px -1px black, -1px 0px black"});break;case"uniform":list.push({name:"text-shadow",value:"-1px 0px #000000, 0px 1px #000000, 1px 0px #000000, 0px -1px #000000"});break;case"none":list.push({name:"text-shadow",value:"none"});break;default:list.push({name:"text-shadow",value:"#000000 0 0 .5em"})}multiplier=function(hex,alpha){if("transparent"===hex)return hex;if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex))return hex="0x"+(hex=3===(hex=hex.substring(1).split("")).length?[hex[0],hex[0],hex[1],hex[1],hex[2],hex[2]]:hex).join(""),alpha=Math.min(1,alpha),alpha=Math.max(0,alpha),"rgba("+[hex>>16&255,hex>>8&255,255&hex].join(",")+","+alpha+")";throw new Error("Bad Hex")}(settings.textBackground,parseFloat(settings.textBackgroundOpacity)),multiplier&&list.push({name:"background-color",value:multiplier}),multiplier=settings.textColor||"#ffffff";return multiplier&&list.push({name:"color",value:multiplier}),list.push({name:"font-family",value:"inherit"}),list}function convertStyleListToObject(list){for(var obj={},i=0,length=list.length;i<length;i++)obj[function(name){switch(name){case"background-color":return"backgroundColor";case"text-shadow":return"textShadow";case"font-family":return"fontFamily";case"font-size":return"fontSize";default:return name}}(list[i].name)]=list[i].value;return obj}function getStyles(settings,options){return{text:getTextStyles(settings),window:[]}}function applyStyleList(styles,elem){for(var i=0,length=styles.length;i<length;i++){var style=styles[i];elem.style[style.name]=style.value}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_exports.default={getStyles:getStyles,applyStyles:function(elements,appearanceSettings,options){appearanceSettings=getStyles(appearanceSettings),elements.text&&applyStyleList(appearanceSettings.text,elements.text),elements.window&&applyStyleList(appearanceSettings.window,elements.window)},getStyleObjects:function(settings,options){return{text:convertStyleListToObject((settings=getStyles(settings)).text),window:convertStyleListToObject(settings.window)}}}});

View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){var tempDiv;Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_exports.default={htmlEncode:function(value){var div=tempDiv;if(!div){var doc="undefined"==typeof document?null:document;if(!doc)return value;div=doc.createElement("div"),tempDiv=div}return div.textContent=value,div.innerHTML}}});

View File

@@ -0,0 +1 @@
define(["exports","./usersettingsbuilder.js"],function(_exports,_usersettingsbuilder){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;_usersettingsbuilder=new _usersettingsbuilder.default;_exports.default=_usersettingsbuilder});

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More