first commit

This commit is contained in:
2026-02-09 10:48:21 +01:00
commit 15f28c0dd6
848 changed files with 107188 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

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}}function getRawResolutionText(item){return item.Width&&item.Height?item.Width+"x"+item.Height:null}_exports.default={formatRelativeTime:function(date,isPastEvent){for(var unit,date=(date="string"==typeof date?new Date(Date.parse(date)):date).getTime()-Date.now(),elapsedMsAbs=Math.abs(date),i=0,length=units.length;i<length&&!(elapsedMsAbs>=(unit=units[i])[1]);i++);return date=Math.round(date/unit[1]),!1!==isPastEvent&&-1<(date=Math.min(date,1))&&(date=-1,unit=units[units.length-1]),new Intl.RelativeTimeFormat(_globalize.default.getCurrentLocales(),{numeric:"always",style:"long"}).format(date,unit[0])},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 videoStream,width,height;return"Video"===item.MediaType&&(videoStream=function(item){for(var _,mediaStreams=(null==(_=(item.MediaSources||[])[0])?void 0:_.MediaStreams)||item.MediaStreams||[],i=0,length=mediaStreams.length;i<length;i++){var mediaStream=mediaStreams[i];if("Video"===mediaStream.Type)return mediaStream}return null}(item))?(width=videoStream.Width,height=videoStream.Height,width&&height?3800<=width||2e3<=height?"4K":2500<=width||1400<=height?videoStream.IsInterlaced?"1440i":"1440p":1800<=width||1e3<=height?videoStream.IsInterlaced?"1080i":"1080p":1200<=width||700<=height?videoStream.IsInterlaced?"720i":"720p":700<=width||400<=height?videoStream.IsInterlaced?"480i":"480p":"SD":null):getRawResolutionText(item)}}});

View File

@@ -0,0 +1 @@
define(["exports","./globalize.js"],function(_exports,_globalize){function getDisplayRunningTime(ticks){var duration={},hours=ticks/36e9,hours=((hours=Math.floor(hours))&&(duration.hours=hours),(ticks-=36e9*hours)/6e8),hours=(ticks-=6e8*(hours=Math.floor(hours)),duration.minutes=hours,ticks/1e7),hours=Math.floor(hours);duration.seconds=hours;ticks=getDurationFormatter(_globalize.default.getCurrentLocale(),{style:"digital",fractionalDigits:0,hoursDisplay:"auto",minutesDisplay:"always",secondsDisplay:"always",millisecondsDisplay:"auto",microsecondsDisplay:"auto",nanosecondsDisplay:"auto"}).format(duration);return ticks=ticks.startsWith("0")?ticks.substring(1):ticks}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}(),dateTimeFormatters={};function getDateTimeFormatter(locale,options){var key=locale||"und",formatter=(key=(key=(key=(key=(key=(key=(key=(key=(key+=options.weekday||"null")+(options.year||"null"))+(options.month||"null"))+(options.day||"null"))+(options.hour||"null"))+(options.minute||"null"))+(options.second||"null"))+(options.dateStyle||"null"))+(options.timeStyle||"null"),dateTimeFormatters[key]);return formatter||(console.log("creating DateTimeFormat for "+locale+", with options: "+JSON.stringify(options)),formatter=new Intl.DateTimeFormat(locale,options),dateTimeFormatters[key]=formatter),formatter}var durationFormatters={};function getDurationFormatter(locale,options){var key=locale||"und",formatter=(key=(key=(key=(key=(key=(key=(key=(key+=options.style||"style")+(options.fractionalDigits||"fractionalDigits"))+(options.hoursDisplay||"hoursDisplay"))+(options.minutesDisplay||"minutesDisplay"))+(options.secondsDisplay||"secondsDisplay"))+(options.millisecondsDisplay||"millisecondsDisplay"))+(options.microsecondsDisplay||"microsecondsDisplay"))+(options.nanosecondsDisplay||"nanosecondsDisplay"),durationFormatters[key]);return formatter||(console.log("creating DurationFormat for "+locale+", with options: "+JSON.stringify(options)),formatter=new Intl.DurationFormat(locale,options),durationFormatters[key]=formatter),formatter}function toLocaleTimeString(date,options){if(date)return options=options||{},getDateTimeFormatter(_globalize.default.getCurrentDateTimeLocale(),options).format(date);throw new Error("date cannot be null")}_exports.default={parseISO8601Date:function(s){return new Date(Date.parse(s))},getDisplayRunningTime:getDisplayRunningTime,toLocaleDateString:function(date,options){if(date)return options=options||{},getDateTimeFormatter(_globalize.default.getCurrentDateTimeLocale(),options).format(date);throw new Error("date cannot be null")},toLocaleString:function(date,options){if(date)return options=options||{dateStyle:"short",timeStyle:"short"},getDateTimeFormatter(_globalize.default.getCurrentDateTimeLocale(),options).format(date);throw new Error("date cannot be null")},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){var days=Math.trunc(ticks/864e9),hours=Math.trunc(ticks%864e9/36e9),minutes=Math.trunc(ticks%36e9/6e8),duration={},hasValue=!1;return days&&(duration.days=days,hasValue=!0),hours&&(duration.hours=hours,hasValue=!0),minutes&&(duration.minutes=minutes,hasValue=!0),hasValue?getDurationFormatter(_globalize.default.getCurrentLocale(),{style:"narrow"}).format(duration):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",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?null:"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","./appsettings.js"],function(_exports,_events,_connectionmanager,_appsettings){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 normalizeNavigatorLanguage(lang){return lang=lang&&lang.split("@")[0]}function updateCurrentCulture(){var dir,dateTimeCulture,culture=_appsettings.default.language()||function(){var culture="undefined"==typeof document?null:document.documentElement.getAttribute("data-culture");return culture||(navigator.language?normalizeNavigatorLanguage(navigator.language):navigator.userLanguage?normalizeNavigatorLanguage(navigator.userLanguage):navigator.languages&&navigator.languages.length?normalizeNavigatorLanguage(navigator.languages[0]):"en-us")}();"undefined"!=typeof document&&CSS.supports("text-align","start")&&CSS.supports("inset-inline-start","0")&&(dir=rtlLocales.includes((culture||"").toLowerCase())?"rtl":"ltr","rtl"==(document.dir=dir)?document.documentElement.classList.add("rtl"):document.documentElement.classList.remove("rtl"),arabicLocales.includes((culture||"").toLowerCase())?document.documentElement.classList.add("rtl-arabic"):document.documentElement.classList.remove("rtl-arabic")),currentCulture=normalizeLocaleName(culture),currentLocales=[currentCulture];try{dateTimeCulture=_appsettings.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(_appsettings.default,"change",function(e,name){switch(name){case"language":case"datetimelocale":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

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)},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){switch(item.Type){case"Movie":case"Trailer":case"Video":case"Episode":case"MusicVideo":case"TvChannel":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

View File

@@ -0,0 +1 @@
define(["exports","./baseitemcontroller.js","./../globalize.js"],function(_exports,_baseitemcontroller,_globalize){function GenericItemController(){_baseitemcontroller.default.apply(this,arguments)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(GenericItemController.prototype,_baseitemcontroller.default.prototype),GenericItemController.prototype.getTypeNames=function(){return["GenericListItem"]},GenericItemController.prototype.getDisplayName=function(item,options){return item.Name},GenericItemController.prototype.isSingleItemFetchRequired=function(typeName){return!1},GenericItemController.prototype.getDefaultIcon=function(item){return item.Icon||"folder"},GenericItemController.prototype.canDelete=function(item,user){return!0===item.CanDelete},GenericItemController.prototype.getDeleteCommand=function(items){var cmd=_baseitemcontroller.default.prototype.getDeleteCommand.apply(this,arguments),item=items[0];return"remove"===(null==item?void 0:item.DeleteType)&&(cmd.name=_globalize.default.translate("Remove"),cmd.icon="remove_circle"),cmd},GenericItemController.prototype.enableLibraryItemDeleteConfirmation=function(){return!1},GenericItemController.prototype.canRefreshMetadata=function(item,user){return!1},GenericItemController.prototype.getNameSortOption=function(itemType){return null},GenericItemController.prototype.canAddToPlaylist=function(item){return!1},GenericItemController.prototype.canAddToCollection=function(item,user){return!1},GenericItemController.prototype.canConvert=function(item,user){return!1},GenericItemController.prototype.canEdit=function(items,user){return 1===items.length&&!0===items[0].CanEdit},GenericItemController.prototype.canRate=function(item){return!1},GenericItemController.prototype.canMarkPlayed=function(item){return!1},GenericItemController.prototype.canEditImages=function(item,user){return!1},GenericItemController.prototype.canEditSubtitles=function(item,user){return!1},GenericItemController.prototype.editItems=function(items,options){return Promise.reject("nocommands")},GenericItemController.prototype.enableDeleteConfirmation=function(options){return!!this.getDeleteMessages(options.items[0])},GenericItemController.prototype.showDeleteConfirmation=function(options){return this.enableDeleteConfirmation(options)?_baseitemcontroller.default.prototype.showDeleteConfirmation.apply(this,arguments):Promise.resolve()},GenericItemController.prototype.isDeletePrimaryCommand=function(itemType){return!0},GenericItemController.prototype.getDeleteMessages=function(item){return"remove"===item.DeleteType?{single:{text:_globalize.default.translate("ConfirmRemoveItem"),title:_globalize.default.translate("Remove"),confirmText:_globalize.default.translate("Remove")},plural:{text:_globalize.default.translate("ConfirmRemoveItem"),title:_globalize.default.translate("Remove"),confirmText:_globalize.default.translate("Remove")}}:{single:{text:_globalize.default.translate("DeleteDeviceConfirmation"),title:_globalize.default.translate("HeaderDeleteItem")},plural:{text:_globalize.default.translate("DeleteDeviceConfirmation"),title:_globalize.default.translate("HeaderDeleteItems")}}},GenericItemController.prototype.deleteItemsInternal=function(options){return Promise.reject("nocommands")},GenericItemController.prototype.getCommands=function(options){return _baseitemcontroller.default.prototype.getCommands.apply(this,arguments)},GenericItemController.prototype.executeCommand=function(command,items,options){return _baseitemcontroller.default.prototype.executeCommand.apply(this,arguments)},GenericItemController.prototype.resolveField=function(item,field){return _baseitemcontroller.default.prototype.resolveField.apply(this,arguments)},GenericItemController.prototype.canReorder=function(item,user){return item.CanReorder},GenericItemController.prototype.canMoveUp=function(item,user){return!!this.canReorder(item,user)&&item.CanMoveUp},GenericItemController.prototype.canMoveDown=function(item,user){return!!this.canReorder(item,user)&&item.CanMoveDown},GenericItemController.prototype.moveInOrder=function(items,options){return Promise.reject()};_exports.default=GenericItemController});

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});

View File

@@ -0,0 +1 @@
define(["exports","./playbackmanager.js","./../globalize.js","./../../emby-apiclient/connectionmanager.js"],function(_exports,_playbackmanager,_globalize,_connectionmanager){function promptUserToPlayActiveRecording(timer,displayItem,options){var items=[];return items.push({name:_globalize.default.translate("PlayFromLivePosition"),id:"playlive",icon:"&#xe037;"}),items.push({name:_globalize.default.translate("PlayFromStartOfRecording"),id:"playrecording",icon:"&#xe037;"}),function(options){return Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)})}({items:items,item:displayItem,text:_globalize.default.translate("ThisChannelIsActivelyRecording"),hasItemIcon:!0,longPreview:!0}).then(function(result){return"playrecording"===result?function(timer,options){return _connectionmanager.default.getApiClient(timer).getLiveTvRecordings({TimerId:timer.Id,IsInProgress:!0}).then(function(result){result=result.Items.filter(function(i){return i.TimerId===timer.Id})[0];return result?_playbackmanager.default.play({items:[result]}):_playbackmanager.default.play(options)})}(timer,options):"playlive"===result?_playbackmanager.default.play(options):options.cancelResult?Promise.reject(options.cancelResult):Promise.reject()})}function playChannelWithTimerId(displayItem,timerId,options){return _connectionmanager.default.getApiClient(displayItem).getLiveTvTimer(timerId).then(function(timer){return function(timer,displayItem,options){var now=Date.now();return now>=Date.parse(timer.StartDate)&&now<Date.parse(timer.EndDate)?promptUserToPlayActiveRecording(timer,displayItem,options):_playbackmanager.default.play(options)}(timer,displayItem,options)})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;_exports.default={play:function(options){var _options$items;if(1===(null==(_options$items=options.items)?void 0:_options$items.length)){var item=options.items[0];switch(item.Type){case"TvChannel":return function(item,options){var _item$CurrentProgram=null==(_item$CurrentProgram=item.CurrentProgram)?void 0:_item$CurrentProgram.TimerId;return _item$CurrentProgram?playChannelWithTimerId(item.CurrentProgram||item,_item$CurrentProgram,options):_playbackmanager.default.play(options)}(item,options);case"Program":return function(item,options){var timerId=item.TimerId;return timerId?playChannelWithTimerId(item,timerId,options):_playbackmanager.default.play(options)}(item,options)}}return _playbackmanager.default.play(options)}}});

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 function(feature,options){return Emby.importModule("./modules/registrationservices/registrationservices.js").then(function(registrationServices){return registrationServices.validateFeature(feature,options)})}(feature,options).then(function(result){result&&result.enableTimeLimit&&(stopAutoStopTimer(),autoStopTimeout=setTimeout(onAutoStopTimeout,63e3))})}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});

File diff suppressed because one or more lines are too long

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});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports","./../globalize.js","./../../actionsheet/actionsheet.js","./playbackmanager.js","./../dataformatter.js"],function(_exports,_globalize,_actionsheet,_playbackmanager,_dataformatter){function showToast(options){Emby.importModule("./modules/toast/toast.js").then(function(toast){return toast(options)})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;_exports.default={show:function(options){for(var player=options.player,menuItems=[],currentMode=_playbackmanager.default.getSleepTimerMode(player),now=(currentMode&&"None"!==currentMode&&menuItems.push({name:_globalize.default.translate("TurnOffTimer"),id:"stoptimer"}),menuItems.push({name:_globalize.default.translate("AfterCurrentItem"),id:"afteritem"}),Date.now()),increments=[3e5,6e5,9e5,12e5,18e5,27e5,36e5,72e5,108e5,144e5],i=0,length=increments.length;i<length;i++){var time=now+increments[i],date=new Date(time);menuItems.push({name:_dataformatter.default.formatRelativeTime(date,!1),id:time})}return _actionsheet.default.show({items:menuItems,positionTo:options.positionTo,positionX:options.positionX,positionY:options.positionY,transformOrigin:options.transformOrigin,noTextWrap:options.noTextWrap,title:_globalize.default.translate("HeaderStopPlayback"),hasItemSelectionState:!1}).then(function(result){switch(result){case"afteritem":_playbackmanager.default.setSleepTimer({sleepTimerMode:"AfterItem"},player),showToast({text:_globalize.default.translate("SleepTimerIsSet"),icon:"&#xe5ca;"});break;case"stoptimer":_playbackmanager.default.setSleepTimer({sleepTimerMode:"None"},player),showToast({text:_globalize.default.translate("SleepTimerIsOff"),icon:"&#xe426;"});break;default:var _time=parseInt(result);_time&&!isNaN(_time)&&(_playbackmanager.default.setSleepTimer({sleepTimerMode:"AtTime",sleepTimerEndTime:new Date(_time)},player),showToast({text:_globalize.default.translate("SleepTimerIsSet"),icon:"&#xe425;"}))}})}}});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports"],function(_exports){function supportsConnectionTypeDetection(){if("undefined"!=typeof navigator){var connection=navigator.connection;if(connection){var connectionType=connection.type;if(connectionType||void 0!==connectionType)return!0;connectionType=connection.effectiveType;if("slow-2g"===connectionType||"2g"===connectionType||"3g"===connectionType)return!0}}return!1}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;_exports.default={supportsConnectionTypeDetection:supportsConnectionTypeDetection,getDefaultQuality:function(networkType){switch(networkType){case"wan":return function(){if("undefined"!=typeof navigator){var connection=navigator.connection;if(connection){var downlink=connection.downlink;if(downlink&&0<downlink&&downlink<Number.POSITIVE_INFINITY)return downlink=downlink*1e6*.7,downlink=parseInt(downlink);if((downlink=connection.downlinkMax)&&0<downlink&&downlink<Number.POSITIVE_INFINITY)return downlink=downlink*1e6*.7,downlink=parseInt(downlink)}}return null}()||(supportsConnectionTypeDetection()?12e6:4000002);case"cellular":return 1000001;default:return 2e8}}}});

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;_exports.default={paramsToString:function(params){var key,urlSearchParams=new URLSearchParams;for(key in params){var value=params[key];null!=value&&""!==value&&urlSearchParams.set(key,value)}return urlSearchParams.toString()}}});

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","./../loading/loading.js","./globalize.js"],function(_exports,_loading,_globalize){function ResponseHelper(){}function showAlertAndReject(options,response){function onDone(){return Promise.reject(response)}return function(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}(options).then(onDone,onDone)}function getErrorObject(response,msg,errorTitle,options){return errorTitle||!1!==(null==options?void 0:options.enableDefaultTitle)&&(errorTitle=_globalize.default.translate("Error")),"string"==typeof response&&msg.push(response),{title:errorTitle,text:msg.join("\n\n")||_globalize.default.translate("DefaultErrorMessage"),html:msg.join("<br/><br/>")||_globalize.default.translate("DefaultErrorMessage"),response:response,centerText:msg.length<2}}function getErrorInfo(response,options){var _response$headers,errorCode=response.errorCode||response,errorTitle=response.errorTitle;switch(errorCode){case"noitems":return Promise.resolve({text:_globalize.default.translate("NoSelectedItemsSupportOperation"),response:response});case"nocommands":return Promise.resolve({text:_globalize.default.translate("NoOperationsForSelectedItems"),response:response});case"RateLimitExceeded":return Promise.resolve({title:errorTitle||_globalize.default.translate("HeaderPlaybackError"),text:_globalize.default.translate("RateLimitExceeded"),response:response});case"NoPlayableItems":case"NoCompatibleStream":case"PlaceHolder":return Promise.resolve({title:errorTitle||_globalize.default.translate("HeaderPlaybackError"),text:_globalize.default.translate("PlaybackError"+errorCode),response:response})}errorTitle||401===response.status&&(errorTitle=_globalize.default.translate("HeaderSignInError"));var msg=[];return response.json&&"application/json"===(null==(_response$headers=response.headers)?void 0:_response$headers.get("Content-Type"))?response.json().then(function(responseInfo){return responseInfo.Message&&msg.push(responseInfo.Message),responseInfo.Title&&(errorTitle=responseInfo.Title),getErrorObject(response,msg,errorTitle,options)}):response.text?response.text().then(function(responseText){return responseText&&msg.push(responseText),getErrorObject(response,msg,errorTitle,options)}):Promise.resolve(getErrorObject(response,msg,errorTitle,options))}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,ResponseHelper.prototype.handleConfigurationSavedResponse=function(response){var options;return _loading.default.hide(),options=_globalize.default.translate("SettingsSaved"),Emby.importModule("./modules/toast/toast.js").then(function(toast){toast(options)}),Promise.resolve(response)},ResponseHelper.prototype.getErrorInfo=getErrorInfo,ResponseHelper.prototype.handleErrorResponse=function(response){return _loading.default.hide(),console.error(response||"Error",new Error),getErrorInfo(response).then(function(errorInfo){return showAlertAndReject(errorInfo)})};_exports.default=new ResponseHelper});

View File

@@ -0,0 +1 @@
define(["exports","./dialogs/confirm.js","./globalize.js"],function(_exports,_confirm,_globalize){function formatTextWithDisruptions(text,disruptions){return text=disruptions.length?(text=(text+="\n\n")+_globalize.default.translate("FollowingActivityWillBeDisrupted")+"\n\n")+disruptions.map(function(i){return"- "+i}).join("\n"):text}function formatHtmlWithDisruptions(text,disruptions){return disruptions.length?(text=(text+="<p>")+_globalize.default.translate("FollowingActivityWillBeDisrupted")+"</p><ul>")+disruptions.map(function(i){return"<li>"+i+"</li>"}).join("")+"</ul>":null}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;_exports.default={confirmRestartOrShutdown:function(options){return function(options){return options=[(options=options.apiClient).getSessions({IsPlaying:!0}),options.getLiveTvRecordings({IsInProgress:!0})],Promise.all(options).then(function(responses){var sessions=responses[0],responses=responses[1].Items,list=[];return 1===sessions.length?list.push(_globalize.default.translate("OneActivePlaybackSession")):sessions.length&&list.push(_globalize.default.translate("NumActivePlaybackSessions",sessions.length)),1===responses.length?list.push(_globalize.default.translate("OneActiveRecording")):responses.length&&list.push(_globalize.default.translate("NumActiveRecordings",responses.length)),list})}(options).then(function(disruptions){return("shutdown"===options.type?function(disruptions){return(0,_confirm.default)({title:_globalize.default.translate("Shutdown"),text:formatTextWithDisruptions(_globalize.default.translate("MessageConfirmShutdown"),disruptions),html:formatHtmlWithDisruptions(_globalize.default.translate("MessageConfirmShutdown"),disruptions),confirmText:_globalize.default.translate("Shutdown"),primary:"cancel",centerText:0===disruptions.length})}:function(disruptions){return(0,_confirm.default)({title:_globalize.default.translate("Restart"),text:formatTextWithDisruptions(_globalize.default.translate("MessageConfirmRestart"),disruptions),html:formatHtmlWithDisruptions(_globalize.default.translate("MessageConfirmRestart"),disruptions),confirmText:_globalize.default.translate("Restart"),primary:"cancel",centerText:0===disruptions.length})})(disruptions)})}}});

View File

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

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

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=(list.push({name:"font-size",value:multiplier+"em"}),settings.positionBottom||"10"),multiplier=(list.push({name:"positionBottom",value:multiplier}),settings.positionTop||"5");switch(list.push({name:"positionTop",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 .25em"})}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){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var tempDiv,doc="undefined"==typeof document?null:document;_exports.default={htmlEncode:function(value){var div=tempDiv;if(!div){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;_exports.default=new _usersettingsbuilder.default});

View File

@@ -0,0 +1,456 @@
define([
"exports",
"./../appsettings.js",
"./../../emby-apiclient/events.js",
], function (_exports, _appsettings, _events) {
function UserSettings() {}
function getHomeSection(instance, index) {
instance =
instance.get("homesection" + index) ||
instance.getDefaultHomeScreenSection(index);
return (instance =
"librarytiles" !== instance &&
"smalllibrarytiles-automobile" !== instance &&
"librarytiles-automobile" !== instance
? instance
: "smalllibrarytiles");
}
(Object.defineProperty(_exports, "__esModule", { value: !0 }),
(_exports.default = void 0),
(UserSettings.prototype.setUserInfo = function (userId, apiClient) {
var self;
return (
this.saveTimeout && clearTimeout(this.saveTimeout),
(this.currentUserId = userId),
(this.currentApiClient = apiClient),
(this.supportsPartialSave =
null == apiClient
? void 0v
: apiClient.isMinServerVersion("4.9.0.23")),
userId
? ((self = this),
apiClient.getDisplayPreferences(userId).then(function (result) {
((self.displayPrefs = result),
_events.default.trigger(self, "load"));
}))
: ((this.displayPrefs = null), Promise.resolve())
);
}),
(UserSettings.prototype.getData = function () {
return this.displayPrefs;
}),
(UserSettings.prototype.importFrom = function (instance) {
this.displayPrefs = instance.getData();
}),
(UserSettings.prototype.set = function (name, value, enableOnServer) {
var currentValue,
userId = this.currentUserId;
if (userId)
return (
(currentValue = this.get(name, enableOnServer)),
(userId = _appsettings.default.set(
name,
(value = null == value ? null : value),
userId,
)),
!1 !== enableOnServer &&
this.displayPrefs &&
((enableOnServer = null == value ? value : value.toString()),
(this.displayPrefs[name] = enableOnServer),
(function (instance, name, value) {
var obj;
instance.supportsPartialSave
? (((obj = {})[name] = value),
instance.currentApiClient.updatePartialDisplayPreferences(
obj,
instance.currentUserId,
))
: (instance.saveTimeout && clearTimeout(instance.saveTimeout),
(instance.saveTimeout = setTimeout(
function () {
((this.saveTimeout = null),
this.currentApiClient.updateDisplayPreferences(
this.displayPrefs,
this.currentUserId,
));
}.bind(instance),
50,
)));
})(this, name, enableOnServer)),
currentValue !== value &&
_events.default.trigger(this, "change", [name, value]),
userId
);
throw new Error("userId cannot be null");
}),
(UserSettings.prototype.remove = function (name, enableOnServer) {
return this.set(name, null, enableOnServer);
}),
(UserSettings.prototype.get = function (name, enableOnServer) {
var userId = this.currentUserId;
return userId
? !1 !== enableOnServer && this.displayPrefs
? this.displayPrefs[name]
: _appsettings.default.get(name, userId)
: null;
}),
(UserSettings.prototype.serverConfig = function (config) {
var apiClient = this.currentApiClient;
return config
? apiClient.updateUserConfiguration(this.currentUserId, config)
: apiClient.getUser(this.currentUserId).then(function (user) {
return user.Configuration;
});
}),
(UserSettings.prototype.enableNextVideoInfoOverlay = function (val) {
return null != val
? this.set("enableNextVideoInfoOverlay", val.toString())
: "false" !== (val = this.get("enableNextVideoInfoOverlay"));
}),
(UserSettings.prototype.getEnableLogoAsTitle = function (displayLanguage) {
var val = this.get("enableLogoAsTitle");
return val
? "true" === val
: displayLanguage && displayLanguage.toLowerCase().startsWith("en");
}),
(UserSettings.prototype.hideEpisodeSpoilerInfo = function (val) {
return null != val
? this.set("hideEpisodeSpoilerInfo", val.toString(), !0)
: "true" === (val = this.get("hideEpisodeSpoilerInfo", !0));
}),
(UserSettings.prototype.setEnableLogoAsTitle = function (val) {
return this.set("enableLogoAsTitle", val.toString());
}),
(UserSettings.prototype.groupCollectionItems = function (val) {
return null != val
? this.set("groupCollectionItems", val.toString(), !0)
: "false" !== (val = this.get("groupCollectionItems", !0));
}),
(UserSettings.prototype.enableAutoFolderJumpThrough = function (val) {
return null != val
? this.set("enableAutoFolderJumpThrough", val.toString(), !0)
: "false" !== (val = this.get("enableAutoFolderJumpThrough", !0));
}),
(UserSettings.prototype.enableHomescreenFocusPreviews = function (val) {
return null != val
? this.set("enableHomescreenFocusPreviews", val.toString(), !0)
: "true" === (val = this.get("enableHomescreenFocusPreviews", !0));
}),
(UserSettings.prototype.genreLimitForListsOnDetails = function (val) {
return null != val
? this.set("genreLimitForListsOnDetails", val.toString(), !0)
: parseInt(this.get("genreLimitForListsOnDetails", !0) || "3");
}),
(UserSettings.prototype.genreLimitOnDetails = function (val) {
return null != val
? this.set("genreLimitOnDetails", val.toString(), !0)
: parseInt(this.get("genreLimitOnDetails", !0) || "1");
}),
(UserSettings.prototype.showDetailPoster = function (isTvLayout, val) {
var key = "showDetailPoster" + (isTvLayout ? "tv" : "");
if (null != val) return this.set(key, val.toString(), !0);
switch ((val = this.get(key, !0))) {
case "true":
return !0;
case "false":
return !1;
default:
return !isTvLayout;
}
}),
(UserSettings.prototype.showEndsAtOnDetails = function (val) {
return null != val
? this.set("showEndsAtOnDetails", val.toString(), !0)
: "false" !== (val = this.get("showEndsAtOnDetails", !0));
}),
(UserSettings.prototype.enableRatingInfoOnPlaybackStart = function (val) {
return null != val
? this.set("enableRatingInfoOnPlaybackStart", val.toString(), !0)
: "false" !== (val = this.get("enableRatingInfoOnPlaybackStart", !0));
}),
(UserSettings.prototype.skipBackLength = function (val) {
return null != val
? this.set("skipBackLength", val.toString())
: parseInt(this.get("skipBackLength") || "10000");
}),
(UserSettings.prototype.skipForwardLength = function (val) {
return null != val
? this.set("skipForwardLength", val.toString())
: parseInt(this.get("skipForwardLength") || "10000");
}),
(UserSettings.prototype.settingsTheme = function (val) {
return null != val
? this.set("settingsTheme", val, !1)
: this.get("settingsTheme", !1);
}),
(UserSettings.prototype.theme = function (val) {
return null != val
? this.set("appTheme", val, !1)
: this.get("appTheme", !1) || null;
}),
(UserSettings.prototype.accentColor = function (val) {
return null != val
? this.set("accentColor", val, !0)
: this.get("accentColor", !0) || "blue";
}),
(UserSettings.prototype.useSystemAccentColor = function (val) {
return null != val
? this.set("useSystemAccentColor", val.toString(), !1)
: "true" === this.get("useSystemAccentColor", !1);
}),
(UserSettings.prototype.osdContentSection = function (type, val) {
return null != val
? this.set("osdcontentsection-" + type, val, !1)
: this.get("osdcontentsection-" + type, !1);
}),
(UserSettings.prototype.drawerStyle = function (val) {
return null != val
? this.set("drawerstyle", val, !1)
: this.get("drawerstyle", !1) || "closed";
}),
(UserSettings.prototype.settingsDrawerStyle = function (val) {
return null != val
? this.set("settingsdrawerstyle", val, !1)
: this.get("settingsdrawerstyle", !1) || "closed";
}),
(UserSettings.prototype.videoScreenUpAction = function (val) {
return null != val
? this.set("videoScreenUpAction", val, !0)
: this.get("videoScreenUpAction", !0);
}),
(UserSettings.prototype.nowPlayingAudioBackgroundStyle = function (val) {
return null != val
? this.set("nowPlayingAudioBackgroundStyle", val, !0)
: this.get("nowPlayingAudioBackgroundStyle", !0) || "blur";
}),
(UserSettings.prototype.nowPlayingVideoBackgroundStyle = function (val) {
return null != val
? this.set("nowPlayingVideoBackgroundStyle", val, !0)
: this.get("nowPlayingVideoBackgroundStyle", !0) || "backdrop";
}),
(UserSettings.prototype.stillWatchingTimeMs = function (val) {
return null != val
? this.set("stillwatchingms", val, !0)
: parseInt(this.get("stillwatchingms", !0) || "14400000");
}),
(UserSettings.prototype.tvHome = function (val) {
return null != val
? this.set("tvhome", val, !0)
: this.get("tvhome", !0) || "vertical";
}),
(UserSettings.prototype.tvScrollDirection = function (val) {
return null != val
? this.set("tvScrollDirection", val, !0)
: this.get("tvScrollDirection", !0) || "vertical";
}),
(UserSettings.prototype.itemSortBy = function (itemId, val) {
itemId = "sortitems-" + itemId + "-by";
return null != val
? this.set(itemId, val, !1)
: this.get(itemId, !1) || "";
}),
(UserSettings.prototype.itemSortOrder = function (itemId, val) {
itemId = "sortitems-" + itemId + "-order";
return null != val
? this.set(itemId, val, !1)
: this.get(itemId, !1) || "Ascending";
}),
(UserSettings.prototype.enableStillWatching = function (val) {
return null != val
? this.stillWatchingTimeMs(val ? 144e5 : 0)
: 0 < this.stillWatchingTimeMs();
}),
(UserSettings.prototype.getSubtitleAppearanceSettings = function (key) {
key = key || "localplayersubtitleappearance3";
key = JSON.parse(this.get(key, !1) || "{}");
return (
key.dropShadow || (key.dropShadow = "dropshadow"),
key.textBackground || (key.textBackground = "transparent"),
key.textBackgroundOpacity || (key.textBackgroundOpacity = "1"),
key.textColor || (key.textColor = "#ffffff"),
null == key.positionBottom && (key.positionBottom = "10"),
null == key.positionTop && (key.positionTop = "5"),
key
);
}),
(UserSettings.prototype.setSubtitleAppearanceSettings = function (
value,
key,
) {
return this.set(
(key = key || "localplayersubtitleappearance3"),
JSON.stringify(value),
!1,
);
}),
(UserSettings.prototype.setFilter = function (key, value, enableOnServer) {
return this.set(key, value, !0 === enableOnServer);
}),
(UserSettings.prototype.getFilter = function (key, enableOnServer) {
key = this.get(key, !0 === enableOnServer);
return "null" === key || "" === key ? null : key;
}),
(UserSettings.prototype.getDefaultHomeScreenSection = function (index) {
switch (index) {
case 0:
return "smalllibrarytiles";
case 1:
return "resume";
case 2:
return "resumeaudio";
case 3:
return "livetv";
case 4:
return "none";
case 5:
return "latestmedia";
default:
return "none";
}
}),
(UserSettings.prototype.homeSection0 = function (val) {
return null != val
? this.set("homesection0", val.toString(), !0)
: getHomeSection(this, 0);
}),
(UserSettings.prototype.homeSection1 = function (val) {
return null != val
? this.set("homesection1", val.toString(), !0)
: getHomeSection(this, 1);
}),
(UserSettings.prototype.homeSection2 = function (val) {
return null != val
? this.set("homesection2", val.toString(), !0)
: getHomeSection(this, 2);
}),
(UserSettings.prototype.homeSection3 = function (val) {
return null != val
? this.set("homesection3", val.toString(), !0)
: getHomeSection(this, 3);
}),
(UserSettings.prototype.homeSection4 = function (val) {
return null != val
? this.set("homesection4", val.toString(), !0)
: getHomeSection(this, 4);
}),
(UserSettings.prototype.homeSection5 = function (val) {
return null != val
? this.set("homesection5", val.toString(), !0)
: getHomeSection(this, 5);
}),
(UserSettings.prototype.homeSection6 = function (val) {
return null != val
? this.set("homesection6", val.toString(), !0)
: getHomeSection(this, 6);
}),
(UserSettings.prototype.getHomeScreenSections = function () {
for (var sections = [], i = 0; i < 7; i++) {
var section = getHomeSection(this, i);
"none" !== section && sections.push(section);
}
return sections;
}),
(UserSettings.prototype.guideChannelStyle = function (val) {
return null != val
? this.set("guideChannelStyle", val.toString(), !0)
: this.get("guideChannelStyle", !0) || "image";
}),
(UserSettings.prototype.showChannelNumberInGuide = function (val) {
return null != val
? this.set("showChannelNumberInGuide", val.toString(), !0)
: "false" !== this.get("showChannelNumberInGuide", !0);
}),
(UserSettings.prototype.showFullMediaInfoOnDetailScreen = function (val) {
return null != val
? this.set("showFullMediaInfoOnDetailScreen", val.toString(), !0)
: "false" !== this.get("showFullMediaInfoOnDetailScreen", !0);
}),
(UserSettings.prototype.seriesDisplay = function (val) {
return null != val
? this.set("seriesDisplay", val.toString(), !0)
: this.get("seriesDisplay", !0) || "episodes";
}),
(UserSettings.prototype.getLiveTvChannelSortSettingsKey = function () {
return "livetv-channelorder";
}),
(UserSettings.prototype.getLiveTvChannelSortOrders = function (globalize) {
for (
var selectedOrder,
sortBy = [],
currentOrder =
(sortBy.push({
name: globalize.translate("HeaderDefaultChannelOrder"),
value: "DefaultChannelOrder",
defaultSortOrder: "Ascending",
menuSortKey: "0",
}),
sortBy.push({
name: globalize.translate("ChannelNumber"),
value: "ChannelNumber,SortName",
defaultSortOrder: "Ascending",
}),
sortBy.push({
name: globalize.translate("DatePlayed"),
value: "DatePlayed,ChannelNumber,SortName",
defaultSortOrder: "Descending",
}),
sortBy.push({
name: globalize.translate("Title"),
value: "SortName",
defaultSortOrder: "Ascending",
}),
sortBy.push({
name: globalize.translate("HeaderFavoritesThenByDefault"),
value: "IsFavorite,DefaultChannelOrder",
defaultSortOrder: "Ascending",
}),
sortBy.push({
name: globalize.translate("HeaderFavoritesThenByChannelNumber"),
value: "IsFavorite,ChannelNumber,SortName",
defaultSortOrder: "Ascending",
}),
sortBy.push({
name: globalize.translate("HeaderFavoritesThenByTitle"),
value: "IsFavorite,SortName",
defaultSortOrder: "Ascending",
}),
this.getFilter(this.getLiveTvChannelSortSettingsKey(), !0)),
i = 0,
length = sortBy.length;
i < length;
i++
) {
var order = sortBy[i];
if (order.value === currentOrder) {
selectedOrder = order;
break;
}
}
return (
((selectedOrder = selectedOrder || sortBy[0]).selected = !0),
sortBy
);
}),
(UserSettings.prototype.addLiveTvChannelSortingToQuery = function (
query,
globalize,
) {
for (
var selectedOrder,
orders = this.getLiveTvChannelSortOrders(globalize),
i = 0,
length = orders.length;
i < length;
i++
) {
var order = orders[i];
if (order.selected) {
selectedOrder = order;
break;
}
}
((query.SortBy = selectedOrder.value),
(query.SortOrder = selectedOrder.defaultSortOrder));
}));
_exports.default = UserSettings;
});