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

248
settings/appgeneral.html Normal file
View File

@@ -0,0 +1,248 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="auto-center fieldsets">
<p class="fieldsets-item secondaryText">${TheseSettingsApplyAppDevice}</p>
<fieldset>
<legend class="hide">${Display}</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<select class="selectLanguage autoSetting autoSave" is="emby-select" label="${LabelDisplayLanguage}" data-settingmethod="language" data-settingowner="appsettings">
<option value="">${Auto}</option>
<option value="sq">Albanian</option>
<option value="ar">Arabic</option>
<option value="bg">Bulgarian (Bulgaria)</option>
<option value="ca">Catalan</option>
<option value="zh-CN">Chinese Simplified</option>
<option value="zh-TW">Chinese Traditional</option>
<option value="zh-HK">Chinese Traditional (Hong Kong)</option>
<option value="hr">Croatian</option>
<option value="cs">Czech</option>
<option value="da">Danish</option>
<option value="nl">Dutch</option>
<option value="en-GB">English (United Kingdom)</option>
<option value="en-US">English (United States)</option>
<option value="et">Estonian</option>
<option value="fi">Finnish</option>
<option value="fr">French</option>
<option value="fr-CA">French (Canada)</option>
<option value="de">German</option>
<option value="el">Greek</option>
<option value="he">Hebrew</option>
<option value="hi">Hindi (India)</option>
<option value="hu">Hungarian</option>
<option value="id">Indonesian</option>
<option value="it">Italian</option>
<option value="ja">Japanese</option>
<option value="kk">Kazakh</option>
<option value="ko">Korean</option>
<option value="lt">Lithuanian</option>
<option value="ms">Malay</option>
<option value="nb">Norwegian Bokmål</option>
<option value="no">Norwegian</option>
<option value="fa">Persian</option>
<option value="pl">Polish</option>
<option value="pt-BR">Portuguese (Brazil)</option>
<option value="pt-PT">Portuguese (Portugal)</option>
<option value="ro">Romanian</option>
<option value="ru">Russian</option>
<option value="sk">Slovak</option>
<option value="sl">Slovenian (Slovenia)</option>
<option value="es">Spanish</option>
<option value="es-419">Spanish (Latin America)</option>
<option value="es-MX">Spanish (Mexico)</option>
<option value="es-US">Spanish (United States)</option>
<option value="sv">Swedish</option>
<option value="gsw">Swiss German</option>
<option value="tr">Turkish</option>
<option value="uk">Ukrainian</option>
<option value="vi">Vietnamese</option>
</select>
<div class="fieldDescription">
<div>${LabelDisplayLanguageHelp}</div>
<div class="learnHowToContributeContainer autoSetting-autohide hide" data-apphostsupports="externallinks,externalappinfo,targetblank">
<a is="emby-linkbutton" class="button-link" href="https://emby.media/community/index.php?/topic/5727-join-our-translation-team" target="_blank">${LearnHowYouCanContribute}</a>
</div>
</div>
</div>
<div class="selectContainer fieldset-field hide autoSetting-autohide" data-datetimesupportslocalization="true">
<select is="emby-select" class="selectDateTimeLocale autoSetting autoSave" label="${LabelDateTimeLocale}" data-settingmethod="dateTimeLocale" data-settingowner="appsettings">
<option value="">${AutoBasedOnLanguageSetting}</option>
<option value="sq">Albanian</option>
<option value="ar">Arabic</option>
<option value="bg">Bulgarian (Bulgaria)</option>
<option value="ca">Catalan</option>
<option value="zh-CN">Chinese Simplified</option>
<option value="zh-TW">Chinese Traditional</option>
<option value="zh-HK">Chinese Traditional (Hong Kong)</option>
<option value="hr">Croatian</option>
<option value="cs">Czech</option>
<option value="da">Danish</option>
<option value="nl">Dutch</option>
<option value="en-GB">English (United Kingdom)</option>
<option value="en-US">English (United States)</option>
<option value="et">Estonian</option>
<option value="fi">Finnish</option>
<option value="fr">French</option>
<option value="fr-CA">French (Canada)</option>
<option value="de">German</option>
<option value="el">Greek</option>
<option value="he">Hebrew</option>
<option value="hi">Hindi (India)</option>
<option value="hu">Hungarian</option>
<option value="id">Indonesian</option>
<option value="it">Italian</option>
<option value="ja">Japanese</option>
<option value="kk">Kazakh</option>
<option value="ko">Korean</option>
<option value="lt">Lithuanian</option>
<option value="ms">Malay</option>
<option value="nb">Norwegian Bokmål</option>
<option value="no">Norwegian</option>
<option value="fa">Persian</option>
<option value="pl">Polish</option>
<option value="pt-BR">Portuguese (Brazil)</option>
<option value="pt-PT">Portuguese (Portugal)</option>
<option value="ro">Romanian</option>
<option value="ru">Russian</option>
<option value="sk">Slovak</option>
<option value="sl">Slovenian (Slovenia)</option>
<option value="es">Spanish</option>
<option value="es-419">Spanish (Latin America)</option>
<option value="es-MX">Spanish (Mexico)</option>
<option value="es-US">Spanish (United States)</option>
<option value="sv">Swedish</option>
<option value="gsw">Swiss German</option>
<option value="tr">Turkish</option>
<option value="uk">Ukrainian</option>
<option value="vi">Vietnamese</option>
</select>
</div>
<div class="selectContainer fieldset-field fldStartupBehavior autoSetting-autohide hide" data-loggedintoconnect="false">
<select is="emby-select" class="autoSetting autoSave selectStartupBehavior" label="${StartupBehavior}" data-settingmethod="autoLogin" data-settingowner="appsettings">
</select>
</div>
<div class="toggleContainer fieldset-field hide autoSetting-autohide fldAutorun" data-apphostsupports="runatstartup">
<label>
<input type="checkbox" is="emby-toggle" class="chkRunAtStartup autoSetting autoSave" data-settingmethod="runAtStartup" data-settingowner="appsettings" />
<span>${RunAtStartup}</span>
</label>
</div>
<div class="toggleContainer fieldset-field fldDisplayMode autoSetting-autohide hide" data-apphostsupports="displaymode">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave chkTVDisplayMode" data-settingmethod="enableTVDisplayMode" data-settingowner="layoutmanager" data-changedelay="true" />
<span>${LabelTVDisplayMode}</span>
</label>
<div class="fieldDescription">${TVDisplayModeHelp}</div>
<div is="emby-premierecontainer" class="fieldDescription displayModePremiere hide" data-showifunlocked="playback,!playback-tv"></div>
</div>
<div class="selectContainer fieldset-field autoSetting-autohide hide" data-layoutmode="tv">
<select is="emby-select" class="selectFontSize autoSetting autoSave" label="${LabelTextSize}" data-settingmethod="fontSize" data-settingowner="appsettings">
<option value="-3">${ExtraSmall}</option>
<option value="-2">${Smaller}</option>
<option value="-1">${Small}</option>
<option value="">${Default}</option>
<option value="1">${Large}</option>
<option value="2">${Larger}</option>
<option value="3">${ExtraLarge}</option>
</select>
</div>
<div class="selectContainer fieldset-field fldCardSize autoSetting-autohide hide" data-cssfeatures="cssvars,min,calc">
<select is="emby-select" class="selectCardSize autoSetting autoSave" label="${LabelImageSize}" data-settingmethod="cardSize" data-settingowner="appsettings">
<option value="extrasmall">${ExtraSmall}</option>
<option value="smaller">${Smaller}</option>
<option value="small">${Small}</option>
<option value="">${Default}</option>
<option value="large">${Large}</option>
<option value="larger">${Larger}</option>
<option value="extralarge">${ExtraLarge}</option>
</select>
<div class="fieldDescription">${ImageSizeHelp}</div>
</div>
<div class="selectContainer fieldset-field hide autoSetting-autohide selectScreensaverContainer" data-apphostsupports="screensaver">
<select is="emby-select" class="selectScreensaver autoSetting autoSave" label="${LabelScreensaver}" data-settingmethod="screensaver" data-settingowner="appsettings"></select>
<div is="emby-premierecontainer" class="fieldDescription featurePremiereInfo"></div>
</div>
<div class="selectContainer fieldset-field fldSoundEffects autoSetting-autohide hide" data-apphostsupports="soundeffects" data-layoutmode="tv">
<select is="emby-select" class="selectSoundEffects autoSetting autoSave" label="${LabelSoundEffects}" data-settingmethod="soundEffects" data-settingowner="appsettings"></select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectSlidehowInterval autoSetting autoSave" label="${LabelSlideshowInterval}" data-settingmethod="slideshowIntervalMs" data-settingowner="appsettings"></select>
</div>
<div class="toggleContainer fieldset-field fldThemeSong">
<label>
<input type="checkbox" is="emby-toggle" class="chkThemeSong autoSetting autoSave" data-settingmethod="enableThemeSongs" data-settingowner="appsettings" data-triggerchange="true" />
<span>${EnableThemeSongs}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableThemeSongsHelp}</div>
</div>
<div class="inputContainer fieldset-field fldThemeSongVolume autoSetting-autohide hide" data-fieldequals=".chkThemeSong=true" data-apphostsupports="themesongvolume">
<label>
<div class="emby-slider-label-text">${ThemeSongVolume}</div>
<div class="flex flex-direction-row align-items-center">
<i class="md-icon md-icon-fill secondaryText" style="font-size:140%;">&#xe04d;</i>
<div class="sliderContainer flex-grow" style="margin: 0 .25em;">
<input is="emby-slider" type="range" step="1" min="0" max="100" value="100" class="autoSetting autoSave" data-settingmethod="themeSongVolume" data-settingowner="appsettings" />
</div>
<i class="md-icon md-icon-fill secondaryText" style="font-size:140%;">&#xe050;</i>
</div>
</label>
</div>
<div class="toggleContainer fieldset-field fldThemeVideo">
<label>
<input type="checkbox" is="emby-toggle" class="chkThemeVideo autoSetting autoSave" data-settingmethod="enableThemeVideos" data-settingowner="appsettings" data-triggerchange="true" />
<span>${EnableThemeVideos}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableThemeVideosHelp}</div>
</div>
<div class="toggleContainer fieldset-field fldRepeatThemes autoSetting-autohide hide" data-fieldequals=".chkThemeSong=true|.chkThemeVideo=true" data-anyfield="true">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave" data-settingmethod="repeatThemes" data-settingowner="appsettings" />
<span>${RepeatThemeMedia}</span>
</label>
</div>
<div class="toggleContainer fieldset-field fldBackdrops">
<label>
<input type="checkbox" is="emby-toggle" class="chkBackdrops autoSetting autoSave" data-settingmethod="enableBackdrops" data-settingowner="appsettings" />
<span>${EnableBackdrops}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableBackdropsHelp}</div>
</div>
<div class="toggleContainer fieldset-field fldRemoteControlTVMode autoSetting-autohide hide" data-apphostsupports="remotecontrol" data-layoutmode="tv">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave" data-settingmethod="enableRemoteControlInTVMode" data-settingowner="appsettings" />
<span>${LabelEnableRemoteControlTVMode}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableRemoteControlTVModeHelp}</div>
</div>
<div class="selectContainer fieldset-field autoSetting-autohide hide" data-apphostsupports="exit">
<select is="emby-select" class="autoSetting autoSave" label="${AppExitMenu}" data-settingmethod="backBehaviorOnHome" data-settingowner="appsettings">
<option value="exit">${AppExitConfirmation}</option>
<option value="menu">${SideMenu}</option>
<option value="none">${None}</option>
</select>
</div>
</div>
</fieldset>
</form>
</div>
</div>

1
settings/appgeneral.js Normal file

File diff suppressed because one or more lines are too long

184
settings/appplayback.html Normal file
View File

@@ -0,0 +1,184 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="auto-center fieldsets">
<p class="fieldsets-item secondaryText">${TheseSettingsApplyAppDevice}</p>
<fieldset class="videoQualitySection">
<legend>
${Video}
</legend>
<div class="fieldset-fields">
<div class="selectContainer fldVideoInNetworkQuality hide fieldset-field">
<select is="emby-select" class="selectVideoInNetworkQuality autoSetting autoSave" label="${LabelHomeNetworkQuality}" data-settingmethod="selectVideoInNetworkQuality" data-settingowner="appsettings"></select>
</div>
<div class="selectContainer fldVideoInternetQuality hide fieldset-field">
<select is="emby-select" class="selectVideoInternetQuality autoSetting autoSave" label="${LabelInternetQuality}" data-settingmethod="selectVideoInternetQuality" data-settingowner="appsettings"></select>
</div>
<div class="selectContainer fldVideoCellularQuality hide fieldset-field">
<select is="emby-select" class="selectVideoCellularQuality autoSetting autoSave" label="${LabelCellularQuality}" data-settingmethod="selectVideoCellularQuality" data-settingowner="appsettings"></select>
</div>
<div class="selectContainer fldChromecastQuality hide autoSetting-autohide fieldset-field" data-apphostsupports="chromecast">
<select is="emby-select" class="selectChromecastVideoQuality autoSetting autoSave" label="${LabelMaxChromecastBitrate}" data-settingmethod="maxChromecastBitrate" data-settingowner="appsettings"></select>
</div>
<div class="selectContainer hide autoSetting-autohide fieldset-field" data-apphostsupports="backgroundvideo" data-layoutmode="!tv">
<select is="emby-select" class="selectBackgroundVideo autoSetting autoSave" label="${LabelBackgroundVideoPlayback}" data-settingmethod="backgroundVideo" data-settingowner="appsettings">
<option value="on">${AlwaysOn}</option>
<option value="external" class="hide autoSetting-autohide" data-apphostsupports="backgroundvideoexternalspeakers">${HeadphonesOrExternalSpeakersConnected}</option>
<option value="">${Off}</option>
</select>
<div class="fieldDescription">${BackgroundVideoPlaybackHelp}</div>
</div>
<div class="toggleContainer hide autoSetting-autohide fieldset-field" data-apphostsupports="forcetranscodingforformats">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave" data-settingmethod="allowDirectStreamLiveTV" data-settingowner="appsettings" />
<span>${PreferDirectStreamLiveTV}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${PreferDirectStreamLiveTVHelp}</div>
</div>
</div>
</fieldset>
<fieldset class="audioSection hide">
<legend>
${Audio}
</legend>
<div class="fieldset-fields">
<div class="selectContainer fldAudioInternetQuality hide fieldset-field">
<select is="emby-select" class="selectMusicInternetQuality autoSetting autoSave" label="${LabelInternetQuality}" data-settingmethod="selectMusicInternetQuality" data-settingowner="appsettings"></select>
</div>
<div class="selectContainer musicCellularQualitySection hide fieldset-field">
<select is="emby-select" class="selectMusicCellularQuality autoSetting autoSave" label="${LabelCellularQuality}" data-settingmethod="selectMusicCellularQuality" data-settingowner="appsettings"></select>
</div>
<div class="toggleContainer hide autoSetting-autohide fieldset-field" data-apphostsupports="convertunsupportedsurroundaudio">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave" data-settingmethod="convertUnsupportedSurroundAudio" data-settingowner="appsettings" />
<span>${ConvertUnsupportedAudio}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${ConvertUnsupportedAudioHelp}</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>
${Advanced}
</legend>
<div class="fieldset-fields">
<div class="toggleContainer cinemaModeOptions fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnableCinemaMode autoSetting autoSave" data-settingmethod="enableCinemaMode" data-settingowner="appsettings" />
<span>${EnableCinemaMode}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${CinemaModeConfigurationHelp}</div>
</div>
<div class="toggleContainer fldEnableResolutionSwitch hide autoSetting-autohide fieldset-field" data-apphostsupports="changerefreshrate">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnableResolutionSwitch autoSetting autoSave" data-settingmethod="enableResolutionSwitching" data-settingowner="appsettings" />
<span>${EnableResolutionSwitching}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableResolutionSwitchingHelp}</div>
</div>
<div class="toggleContainer fldEnableRefreshRate hide autoSetting-autohide fieldset-field" data-apphostsupports="changerefreshrate">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnableRefreshRate autoSetting autoSave" data-settingmethod="enableRefreshRateSwitching" data-settingowner="appsettings" />
<span>${EnableDisplayRefreshRateSwitching}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableDisplayRefreshRateSwitchingHelp}</div>
</div>
<div class="toggleContainer fldExternalPlayer hide autoSetting-autohide fieldset-field" data-apphostsupports="externalplayerintent">
<label>
<input type="checkbox" is="emby-toggle" class="chkExternalVideoPlayer autoSetting autoSave" data-settingmethod="enableSystemExternalPlayers" data-settingowner="appsettings" />
<span>${EnableExternalVideoPlayers}</span>
</label>
<div class="fieldDescription toggleFieldDescription">
<div class="labelNativeExternalPlayers">${EnableExternalVideoPlayersHelp}</div>
</div>
</div>
<div class="selectContainer fldVideoUnderUI fieldset-field">
<select is="emby-select" class="selectVideoUnderUI autoSetting autoSave" label="${LabelVideoBackBehavior}" data-settingmethod="enableVideoUnderUI" data-settingowner="appsettings" data-triggerchange="true">
<option value="stop">${Stop}</option>
<option value="play">${KeepPlayingInBackground}</option>
</select>
</div>
<div class="selectContainer hide autoSetting-autohide fieldset-field" data-layoutmode="tv" data-fieldequals=".selectVideoUnderUI=stop">
<select is="emby-select" class="selectHideMediaTransport autoSetting autoSave" label="${LabelHideMediaTransportButtons}" data-settingmethod="hideMediaTransportButtons" data-settingowner="appsettings">
<option value="auto">${Auto}</option>
<option value="true">${Yes}</option>
<option value="false">${No}</option>
</select>
<div class="fieldDescription">${HideMediaTransportButtonsHelp}</div>
</div>
<div class="selectContainer fldOrientationLock hide fieldset-field">
<select is="emby-select" class="selectOrientationLock autoSetting autoSave" label="${LabelScreenOrientationDuringVideo}" data-settingmethod="videoOrientation" data-settingowner="appsettings">
<option value="auto">${Auto}</option>
<option value="landscape">${LockToLandscape}</option>
<option value="device">${UseDeviceSetting}</option>
</select>
</div>
<div class="selectContainer hide autoSetting-autohide fieldset-field" data-layoutmode="tv">
<select is="emby-select" class="autoSetting autoSave" label="${LabelVideoPlayerLongPressAction}" data-settingmethod="videoPlayerLongPressAction" data-settingowner="appsettings">
<option value="">${None}</option>
<option value="audio">${Audio}</option>
<option value="subtitles">${Subtitles}</option>
<option value="playbackspeed">${PlaybackSpeed}</option>
<option value="settings">${Settings}</option>
<option value="togglestats">${StatsForNerds}</option>
</select>
<div class="fieldDescription">${VideoPlayerLongPressActionHelp}</div>
</div>
</div>
</fieldset>
<fieldset class="hide autoSetting-autohide" data-apphostsupports="forcetranscodingforformats">
<legend>
${HeaderForceConversionForFormats}
</legend>
<p class="legendDescription">
${ForceConversionForFormatsHelp}
</p>
<div class="fieldset-fields fieldset-fields-listitems">
<div class="fieldset-fields fieldset-fields-listitems fieldset-fields-nested autoSetting autoSave toggleList" data-settingmethod="forceTranscodingForContainers" data-settingowner="appsettings">
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" data-id="avi" />
<span>AVI</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" data-id="mpegts" />
<span>MPEGTS</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" data-id="mpeg" />
<span>MPEG</span>
</label>
</div>
<div class="fieldset-fields fieldset-fields-listitems fieldset-fields-nested autoSetting autoSave toggleList" data-settingmethod="forceTranscodingForVideoCodecs" data-settingowner="appsettings">
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" data-id="av1" />
<span>AV1</span>
</label>
</div>
<div class="fieldset-fields fieldset-fields-listitems fieldset-fields-nested autoSetting autoSave toggleList" data-settingmethod="forceTranscodingForVideoCodecs" data-settingowner="appsettings">
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" data-id="vc1" />
<span>VC1</span>
</label>
</div>
</div>
</fieldset>
</form>
</div>
</div>

1
settings/appplayback.js Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,39 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="userProfileSettingsForm auto-center">
<div style="margin:1em 0;">
<div is="emby-premierecontainer" class="premiereInfo"></div>
</div>
<div style="margin: 2em 0;" class="progressContainer hide">
<div class="secondaryText progressDescription" style="margin:0 0 .5em;"></div>
<div class="itemProgressBar"><div class="itemProgressBarForeground" style="width:50%;"></div></div>
</div>
<div style="margin: 1.5em 0;">
<h3 class="checkboxListLabel">${UploadToFollowingServers}</h3>
<div class="checkboxList uploadServerList autoSetting autoSave" data-settingmethod="cameraUploadServers" data-settingowner="appsettings" data-triggerchange="true">
</div>
</div>
<label class="toggleContainer">
<input type="checkbox" is="emby-toggle" class="chkWifi autoSetting autoSave" data-settingmethod="cameraUploadOnlyOnWifi" data-settingowner="appsettings" />
<span>${UploadOnlyOnWifi}</span>
</label>
<div class="fldUploadFolders hide" style="margin: 1.5em 0;">
<h3 class="checkboxListLabel">${HeaderFoldersToUpload}</h3>
<div class="uploadFolderList checkboxList autoSetting autoSave" data-settingmethod="cameraUploadFolders" data-settingowner="appsettings">
</div>
</div>
<p class="secondaryText">${CameraUploadMustBeGranted}</p>
</form>
</div>
</div>

1
settings/cameraupload.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/viewmanager/basesettingsview.js","./../modules/common/globalize.js","./../modules/emby-elements/emby-scroller/emby-scroller.js","./../modules/emby-elements/emby-select/emby-select.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-button/paper-icon-button-light.js","./../modules/emby-elements/emby-input/emby-input.js","./../modules/emby-elements/emby-toggle/emby-toggle.js","./../modules/emby-elements/emby-premierecontainer/emby-premierecontainer.js","./../modules/emby-apiclient/events.js","./../modules/emby-apiclient/connectionmanager.js","./../modules/common/servicelocator.js","./../modules/common/textencoding.js"],function(_exports,_basesettingsview,_globalize,_embyScroller,_embySelect,_embyButton,_paperIconButtonLight,_embyInput,_embyToggle,_embyPremierecontainer,_events,_connectionmanager,_servicelocator,_textencoding){function loadForm(page){return page.querySelector(".uploadServerList").innerHTML=_connectionmanager.default.getSavedServers().map(function(s){return'<label class="toggleContainer toggleContainer-listItem"><input type="checkbox" is="emby-toggle" class="chkUploadServer" data-id="'+s.Id+'"/><span>'+_textencoding.default.htmlEncode(s.Name)+"</span></label>"}).join(""),_servicelocator.cameraUpload.getAvailableFolders().then(function(allFolders){!function(page,folders){page.querySelector(".uploadFolderList").innerHTML=folders.map(function(s){return'<label class="toggleContainer toggleContainer-listItem"><input type="checkbox" is="emby-toggle" class="chkUploadFolder" data-id="'+s.Id+'"/><span>'+_textencoding.default.htmlEncode(s.Name)+"</span></label>"}).join("")}(page,allFolders)})}function View(view,params){_basesettingsview.default.apply(this,arguments),this.progressContainer=view.querySelector(".progressContainer"),this.itemProgressBarForeground=view.querySelector(".itemProgressBarForeground"),this.progressDescription=view.querySelector(".progressDescription"),view.querySelector(".premiereInfo").innerHTML=_globalize.default.translate("FeatureRequiresEmbyPremiere",'<a href="https://emby.media/premiere" data-preset="premiereinfo" is="emby-linkbutton" type="button" class="button-link">',"</a>"),view.querySelector(".uploadServerList").addEventListener("change",function(e){var page;return(page=view).querySelector(".chkUploadServer:checked")?page.querySelector(".fldUploadFolders").classList.remove("hide"):page.querySelector(".fldUploadFolders").classList.add("hide"),e.preventDefault(),!1}),view.querySelector("form").addEventListener("submit",function(e){return e.preventDefault(),!1}),this.boundOnUploadProgress=function(e,progressInfo){var numItems=progressInfo.numItems||0,numItemsComplete=progressInfo.numItemsComplete||0,progressInfo=progressInfo.totalPercentComplete||0;this.itemProgressBarForeground.style.width=progressInfo+"%",this.progressDescription.innerHTML=_globalize.default.translate("UploadingNumItems",numItemsComplete+1,numItems),numItems&&progressInfo<100?this.progressContainer.classList.remove("hide"):this.progressContainer.classList.add("hide")}.bind(this)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(View.prototype,_basesettingsview.default.prototype),View.prototype.onResume=function(options){_basesettingsview.default.prototype.onResume.apply(this,arguments),_events.default.on(_servicelocator.cameraUpload,"progress",this.boundOnUploadProgress),_servicelocator.cameraUpload.setProgressUpdatesEnabled(!0),_servicelocator.cameraUpload.start()},View.prototype.loadSettingsInternal=function(){var instance=this;return loadForm(this.view).then(function(){instance.loadAutoSettings()})},View.prototype.onPause=function(){_basesettingsview.default.prototype.onPause.apply(this,arguments),this.boundOnUploadProgress&&_events.default.off(_servicelocator.cameraUpload,"progress",this.boundOnUploadProgress),_servicelocator.cameraUpload.setProgressUpdatesEnabled(!1),_servicelocator.cameraUpload.start()},View.prototype.destroy=function(){_basesettingsview.default.prototype.destroy.apply(this,arguments),this.boundOnUploadProgress&&(_events.default.off(_servicelocator.cameraUpload,"progress",this.boundOnUploadProgress),this.boundOnUploadProgress=null),this.progressContainer=null,this.itemProgressBarForeground=null,this.progressDescription=null};_exports.default=View});

154
settings/display.html Normal file
View File

@@ -0,0 +1,154 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="auto-center padded-top fieldsets">
<fieldset>
<legend class="hide">${Settings}</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<select class="selectTheme autoSetting autoSave" is="emby-select" label="${LabelTheme}" data-settingmethod="theme" data-settingowner="usersettings"></select>
<button is="emby-button" type="button" class="raised btnThemeSettings hide">
<span>${ThemeSettings}</span>
</button>
<div is="emby-premierecontainer" class="fieldDescription featurePremiereInfo"></div>
</div>
<div class="selectContainer fieldset-field fldSettingsTheme">
<select class="selectSettingsTheme autoSetting autoSave" is="emby-select" label="${LabelSettingsTheme}" data-settingmethod="settingsTheme" data-settingowner="usersettings"></select>
<button is="emby-button" type="button" class="raised btnThemeSettings hide">
<span>${ThemeSettings}</span>
</button>
<div is="emby-premierecontainer" class="fieldDescription featurePremiereInfo"></div>
</div>
<div class="selectContainer fieldset-field autoSetting-autohide fldAccentColor hide" data-cssfeatures="cssvars">
<select class="selectAccentColor autoSetting autoSave" is="emby-select" label="${LabelThemeAccentColor}" data-settingmethod="accentColor" data-settingowner="usersettings">
<option value="emby">Emby</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
<option value="pink">Pink</option>
<option value="purple">Purple</option>
<option value="red">Red</option>
</select>
<div class="fieldDescription">${ThemeAccentColorDescription}</div>
<div is="emby-premierecontainer" class="fieldDescription featurePremiereInfo"></div>
</div>
<div class="selectContainer fieldset-field fldNowPlayingAudioBackground">
<select is="emby-select" class="selectNowPlayingAudioBackground autoSetting autoSave" label="${LabelNowPlayingAudioBackgroundStyle}" data-settingmethod="nowPlayingAudioBackgroundStyle" data-settingowner="usersettings">
<option value="backdrop">${Backdrop}</option>
<option value="blur">${PrimaryImageBlur}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectSeriesDisplay autoSetting autoSave" label="${PreferredShowDisplay}" data-settingmethod="seriesDisplay" data-settingowner="usersettings">
<option value="episodes">${ShowAllEpisodesAllSeasons}</option>
<option value="episodessingleseason">${ShowAllEpisodesSingleSeason}</option>
<option value="seasons">${ShowSeasonFolders}</option>
</select>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave" data-settingmethod="enableAutoFolderJumpThrough" data-settingowner="usersettings" />
<span>${AutoOpenSingleItemsFolders}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${AutoOpenSingleItemsFoldersHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave" data-settingmethod="hideEpisodeSpoilerInfo" data-settingowner="usersettings" />
<span>${HideEpisodeSpoilerInfo}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${HideEpisodeSpoilerInfoHelp}</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>${HidePlayedMediaFrom}</legend>
<div class="imageSelections fieldset-fields fieldset-fields-listitems">
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="chkHidePlayedFromLatest autoSetting autoSave" data-settingfield="HidePlayedInLatest" data-settingowner="userconfiguration" />
<span>${HeaderLatestMedia}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field autoSetting-autohide hide" data-minserverversion="4.8.0.48">
<input type="checkbox" is="emby-toggle" class="chkHidePlayedMoreLikeThis autoSetting autoSave" data-settingfield="HidePlayedInMoreLikeThis" data-settingowner="userconfiguration" />
<span>${HeaderMoreLikeThis}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field autoSetting-autohide hide" data-minserverversion="4.8.0.48">
<input type="checkbox" is="emby-toggle" class="chkHidePlayedSuggestions autoSetting autoSave" data-settingfield="HidePlayedInSuggestions" data-settingowner="userconfiguration" />
<span>${Suggestions}</span>
</label>
</div>
</fieldset>
<fieldset>
<legend>${DetailScreenOptions}</legend>
<div class="fieldset-fields">
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkLogoImages autoSetting autoSave" data-settingmethod="setEnableLogoAsTitle" data-getsettingmethod="getEnableLogoAsTitle" data-settingowner="usersettings" />
<span>${EnableLogoImagesAsTitle}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableLogoImagesAsTitleHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave" data-settingmethod="showDetailPoster" data-settingowner="usersettings" />
<span>${ShowPosterOnDetails}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${ShowPosterOnDetailsHelp}</div>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="autoSetting autoSave" label="${LabelGenreDisplayLimit}" data-settingmethod="genreLimitOnDetails" data-settingowner="usersettings">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<div class="fieldDescription">${GenreDisplayLimitHelp}</div>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="autoSetting autoSave" label="${LabelGenreDisplayLimitForLists}" data-settingmethod="genreLimitForListsOnDetails" data-settingowner="usersettings">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<div class="fieldDescription">${GenreDisplayLimitForListsHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="autoSetting autoSave" data-settingmethod="showFullMediaInfoOnDetailScreen" data-settingowner="usersettings" />
<span>${ShowMediaInfoOnDetailScreens}</span>
</label>
</div>
</div>
</fieldset>
</form>
</div>
</div>

1
settings/display.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/viewmanager/basesettingsview.js","./../modules/common/globalize.js","./../modules/emby-elements/emby-input/emby-input.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-select/emby-select.js","./../modules/emby-elements/emby-scroller/emby-scroller.js","./../modules/emby-elements/emby-slider/emby-slider.js","./../modules/emby-elements/emby-toggle/emby-toggle.js","./../modules/emby-elements/emby-premierecontainer/emby-premierecontainer.js","./../modules/skinmanager.js","./../modules/common/servicelocator.js","./../modules/emby-apiclient/events.js"],function(_exports,_basesettingsview,_globalize,_embyInput,_embyButton,_embySelect,_embyScroller,_embySlider,_embyToggle,_embyPremierecontainer,_skinmanager,_servicelocator,_events){function fillThemes(select,isSettings){for(var mainThemeValue,themes=_skinmanager.default.getThemes(),defaultFound=!1,i=0,length=themes.length;i<length;i++){var theme=themes[i],value=theme.id;(theme.isDefault&&!isSettings||theme.isSettingsDefault&&isSettings)&&(defaultFound=!(value="")),theme.value=value}isSettings&&(mainThemeValue=isSettings&&!defaultFound?"":"maintheme",(themes=themes.filter(function(e){return!e.skipForSettingsthemes})).unshift({name:_globalize.default.translate("SameAsMainTheme"),id:"maintheme",value:mainThemeValue,isSettingsDefault:_servicelocator.appHost.supports("multiserver")})),select.innerHTML=themes.map(function(t){return'<option value="'+t.value+'">'+t.name+"</option>"}).join("")}function showHideThemeSettingsButton(btnThemeSettings){var controller=_skinmanager.default.getCurrentThemeController();null!=controller&&controller.hasSettings&&controller.hasSettings()?btnThemeSettings.classList.remove("hide"):btnThemeSettings.classList.add("hide")}function showThemeSettings(){var controller=_skinmanager.default.getCurrentThemeController();null!=controller&&controller.hasSettings&&controller.hasSettings()&&controller.showSettings()}function View(view,params){_basesettingsview.default.apply(this,arguments),view.querySelector("form").addEventListener("submit",function(e){return e.preventDefault(),!1}.bind(this));for(var elem,key,featurePremiereInfo=view.querySelectorAll(".featurePremiereInfo"),i=0,length=featurePremiereInfo.length;i<length;i++)elem=featurePremiereInfo[i],key="FeatureRequiresEmbyPremiere",_servicelocator.appHost.supports("externallinks")&&_servicelocator.appHost.supports("externalpremium")?elem.innerHTML=_globalize.default.translate(key,'<a is="emby-linkbutton" href="https://emby.media/premiere" data-preset="premiereinfo" target="_blank" class="button-link">',"</a>"):elem.innerHTML=_globalize.default.translate(key,"","");var selectTheme=view.querySelector(".selectTheme"),selectSettingsTheme=view.querySelector(".selectSettingsTheme"),btnThemeSettings=view.querySelector(".btnThemeSettings");btnThemeSettings.addEventListener("click",showThemeSettings),fillThemes(selectTheme),fillThemes(selectSettingsTheme,!0),showHideThemeSettingsButton(btnThemeSettings),this.boundonThemeLoaded=function(){showHideThemeSettingsButton(this.view.querySelector(".btnThemeSettings"))}.bind(this),_events.default.on(_skinmanager.default,"themeloaded",this.boundonThemeLoaded)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(View.prototype,_basesettingsview.default.prototype),View.prototype.loadSettingsInternal=function(){return this.loadAutoSettings()},View.prototype.getUserConfigurationUserId=function(){return this.params.userId||this.getApiClient().getCurrentUserId()},View.prototype.destroy=function(){_basesettingsview.default.prototype.destroy.apply(this,arguments),this.boundonThemeLoaded&&(_events.default.off(_skinmanager.default,"themeloaded",this.boundonThemeLoaded),this.boundonThemeLoaded=null)};_exports.default=View});

View File

@@ -0,0 +1,9 @@
<div class="view flex flex-direction-column withTabs">
<div class="tabContent tabContent-positioned flex flex-grow" data-index="0">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="1">
</div>
</div>

View File

@@ -0,0 +1 @@
define(["exports","./../../modules/common/globalize.js","./../../modules/tabbedview/tabbedview.js"],function(_exports,_globalize,_tabbedview){function SyncView(view,params){_tabbedview.default.apply(this,arguments)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(SyncView.prototype,_tabbedview.default.prototype),SyncView.prototype.getTabs=function(){return[{name:_globalize.default.translate("Settings"),id:"settings"},{name:_globalize.default.translate("HeaderManageDownloads"),id:"managedownloads"}]},SyncView.prototype.loadTabController=function(id){return"managedownloads"!==id?Emby.importModule("./settings/download/"+id+"tab.js"):Emby.importModule("./server/sync/activitytab.js")},SyncView.prototype.getTabControllerOptions=function(id){var options=_tabbedview.default.prototype.getTabControllerOptions.apply(this,arguments);return options.mode="download",options.localDownload=!0,options.userId=this.getApiClient().getCurrentUserId(),options};_exports.default=SyncView});

View File

@@ -0,0 +1,47 @@
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" data-navcommands="card" data-forcescrollbar="true" class="scrollFrameY flex flex-grow" data-bindheader="true">
<div class="scrollSlider flex-grow padded-top-page padded-left padded-right">
<form class="auto-center padded-top">
<div style="margin: 2em 0;" class="progressContainer hide">
<div class="secondaryText progressDescription" style="margin:0 0 .5em;"></div>
<div class="itemProgressBar"><div class="itemProgressBarForeground" style="width:50%;"></div></div>
</div>
<div class="inputContainer fldCustomSyncPath hide">
<div class="flex align-items-center">
<div class="flex-grow">
<input is="emby-input" class="txtSyncPath" label="${LabelDownloadLocation}" autocomplete="off" readonly />
</div>
<button type="button" is="paper-icon-button-light" title="${BrowseForFolder}" aria-label="${BrowseForFolder}" class="emby-input-iconbutton btnSelectSyncPath"><i class="md-icon">search</i></button>
</div>
</div>
<div class="selectContainer fldSyncLocation hide">
<div class="flex align-items-center">
<div class="flex-grow">
<select is="emby-select" label="${LabelDownloadLocation}" class="selectSyncLocation"></select>
</div>
<button type="button" is="paper-icon-button-light" title="${BrowseForFolder}" aria-label="${BrowseForFolder}" class="emby-input-iconbutton btnSelectPickerSyncPath hide"><i class="md-icon">search</i></button>
</div>
</div>
<div class="selectContainer">
<select is="emby-select" class="selectAudioBitrate autoSetting autoSave" data-settingmethod="maxStaticMusicBitrate" data-settingowner="appsettings" label="${LabelMusicDownloadQuality}">
<option value="10000000">${Unlimited}</option>
<option value="512000">512K</option>
<option value="320000">320K</option>
<option value="256000">256K</option>
<option value="192000">192K</option>
<option value="128000">128K</option>
<option value="64000">64K</option>
</select>
<div class="fieldDescription">${MusicDownloadQualityHelp}</div>
</div>
<label class="toggleContainer">
<input type="checkbox" is="emby-toggle" class="chkWifi autoSetting autoSave" data-settingmethod="syncOnlyOnWifi" data-settingowner="appsettings" />
<span>${DownloadOnlyOnWifi}</span>
</label>
</form>
</div>
</div>

File diff suppressed because one or more lines are too long

157
settings/homescreen.html Normal file
View File

@@ -0,0 +1,157 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="auto-center padded-top fieldsets">
<fieldset>
<legend class="hide">${Settings}</legend>
<div class="fieldset-fields">
<div class="selectContainer hide autoSetting-autohide hide fieldset-field" data-layoutmode="tv">
<select is="emby-select" class="selectTVHomeScreen autoSetting autoSave" label="${LabelTVHomeScreen}" data-settingmethod="tvHome" data-settingowner="usersettings" data-triggerchange="true">
<option value="horizontal">${Horizontal}</option>
<option value="vertical">${Vertical}</option>
</select>
<div class="fieldDescription">Changes take effect after signing out or restarting the app.</div>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectHomeSection0 autoSetting autoSave" label="LabelHomeScreenSectionValue" data-labelformatargs="1" data-settingmethod="homeSection0" data-settingowner="usersettings">
<option value="smalllibrarytiles">${HeaderMyMedia}</option>
<option value="librarybuttons">${HeaderMyMediaSmall}</option>
<option value="activerecordings">${HeaderActiveRecordings}</option>
<option value="resume">${HeaderContinueWatching}</option>
<option value="resumeaudio">${HeaderContinueListening}</option>
<option value="latestmedia">${HeaderLatestMedia}</option>
<option value="nextup">${HeaderNextUp}</option>
<option value="livetv">${LiveTV}</option>
<option value="collections">${Collections}</option>
<option value="playlists">${Playlists}</option>
<option value="latestmoviereleases">${RecentlyReleasedMovies}</option>
<option value="none">${None}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectHomeSection1 autoSetting autoSave" label="LabelHomeScreenSectionValue" data-labelformatargs="2" data-settingmethod="homeSection1" data-settingowner="usersettings">
<option value="smalllibrarytiles">${HeaderMyMedia}</option>
<option value="librarybuttons">${HeaderMyMediaSmall}</option>
<option value="activerecordings">${HeaderActiveRecordings}</option>
<option value="resume">${HeaderContinueWatching}</option>
<option value="resumeaudio">${HeaderContinueListening}</option>
<option value="latestmedia">${HeaderLatestMedia}</option>
<option value="nextup">${HeaderNextUp}</option>
<option value="livetv">${LiveTV}</option>
<option value="collections">${Collections}</option>
<option value="playlists">${Playlists}</option>
<option value="latestmoviereleases">${RecentlyReleasedMovies}</option>
<option value="none">${None}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectHomeSection2 autoSetting autoSave" label="LabelHomeScreenSectionValue" data-labelformatargs="3" data-settingmethod="homeSection2" data-settingowner="usersettings">
<option value="smalllibrarytiles">${HeaderMyMedia}</option>
<option value="librarybuttons">${HeaderMyMediaSmall}</option>
<option value="activerecordings">${HeaderActiveRecordings}</option>
<option value="resume">${HeaderContinueWatching}</option>
<option value="resumeaudio">${HeaderContinueListening}</option>
<option value="latestmedia">${HeaderLatestMedia}</option>
<option value="nextup">${HeaderNextUp}</option>
<option value="livetv">${LiveTV}</option>
<option value="collections">${Collections}</option>
<option value="playlists">${Playlists}</option>
<option value="latestmoviereleases">${RecentlyReleasedMovies}</option>
<option value="none">${None}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectHomeSection3 autoSetting autoSave" label="LabelHomeScreenSectionValue" data-labelformatargs="4" data-settingmethod="homeSection3" data-settingowner="usersettings">
<option value="smalllibrarytiles">${HeaderMyMedia}</option>
<option value="librarybuttons">${HeaderMyMediaSmall}</option>
<option value="activerecordings">${HeaderActiveRecordings}</option>
<option value="resume">${HeaderContinueWatching}</option>
<option value="resumeaudio">${HeaderContinueListening}</option>
<option value="latestmedia">${HeaderLatestMedia}</option>
<option value="nextup">${HeaderNextUp}</option>
<option value="livetv">${LiveTV}</option>
<option value="collections">${Collections}</option>
<option value="playlists">${Playlists}</option>
<option value="latestmoviereleases">${RecentlyReleasedMovies}</option>
<option value="none">${None}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectHomeSection4 autoSetting autoSave" label="LabelHomeScreenSectionValue" data-labelformatargs="5" data-settingmethod="homeSection4" data-settingowner="usersettings">
<option value="smalllibrarytiles">${HeaderMyMedia}</option>
<option value="librarybuttons">${HeaderMyMediaSmall}</option>
<option value="activerecordings">${HeaderActiveRecordings}</option>
<option value="resume">${HeaderContinueWatching}</option>
<option value="resumeaudio">${HeaderContinueListening}</option>
<option value="latestmedia">${HeaderLatestMedia}</option>
<option value="nextup">${HeaderNextUp}</option>
<option value="livetv">${LiveTV}</option>
<option value="collections">${Collections}</option>
<option value="playlists">${Playlists}</option>
<option value="latestmoviereleases">${RecentlyReleasedMovies}</option>
<option value="none">${None}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectHomeSection5 autoSetting autoSave" label="LabelHomeScreenSectionValue" data-labelformatargs="6" data-settingmethod="homeSection5" data-settingowner="usersettings">
<option value="smalllibrarytiles">${HeaderMyMedia}</option>
<option value="librarybuttons">${HeaderMyMediaSmall}</option>
<option value="activerecordings">${HeaderActiveRecordings}</option>
<option value="resume">${HeaderContinueWatching}</option>
<option value="resumeaudio">${HeaderContinueListening}</option>
<option value="latestmedia">${HeaderLatestMedia}</option>
<option value="nextup">${HeaderNextUp}</option>
<option value="livetv">${LiveTV}</option>
<option value="collections">${Collections}</option>
<option value="playlists">${Playlists}</option>
<option value="latestmoviereleases">${RecentlyReleasedMovies}</option>
<option value="none">${None}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectHomeSection6 autoSetting autoSave" label="LabelHomeScreenSectionValue" data-labelformatargs="7" data-settingmethod="homeSection6" data-settingowner="usersettings">
<option value="smalllibrarytiles">${HeaderMyMedia}</option>
<option value="librarybuttons">${HeaderMyMediaSmall}</option>
<option value="activerecordings">${HeaderActiveRecordings}</option>
<option value="resume">${HeaderContinueWatching}</option>
<option value="resumeaudio">${HeaderContinueListening}</option>
<option value="latestmedia">${HeaderLatestMedia}</option>
<option value="nextup">${HeaderNextUp}</option>
<option value="livetv">${LiveTV}</option>
<option value="collections">${Collections}</option>
<option value="playlists">${Playlists}</option>
<option value="latestmoviereleases">${RecentlyReleasedMovies}</option>
<option value="none">${None}</option>
</select>
</div>
<div class="toggleContainer fieldset-field fldHomeFocusPreviews autoSetting-autohide hide" data-layoutmode="tv" data-fieldequals=".selectTVHomeScreen=vertical">
<label>
<input type="checkbox" is="emby-toggle" class="chkHomeFocusPreviews autoSetting autoSave" data-settingmethod="enableHomescreenFocusPreviews" data-settingowner="usersettings" />
<span>${EnableHomeScreenFocusPreview}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableHomeScreenFocusPreviewHelp}</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>
${HeaderLibraryOrder}
</legend>
<div class="viewOrderList itemsContainer vertical-list fieldset-fields fieldset-fields-fieldmargins" is="emby-itemscontainer">
</div>
</fieldset>
<div class="perLibrarySettings fieldsets">
</div>
</form>
</div>
</div>

1
settings/homescreen.js Normal file

File diff suppressed because one or more lines are too long

90
settings/keyboard.html Normal file
View File

@@ -0,0 +1,90 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<div class="readOnlyContent auto-center verticalSections">
<div class="verticalSection">
<div class="sectionTitleContainer">
<h3 class="sectionTitle"><a is="emby-linkbutton" class="button-link button-link-color-inherit" href="#">${Navigation}</a></h3>
</div>
<ul style="margin:0;">
<li>alt-left: navigate back</li>
<li>alt-b: navigate back</li>
<li>alt-right: navigate forward</li>
<li>page-up: scroll up in list</li>
<li>page-down: scroll down in list</li>
<li>end: scroll to end of list</li>
<li>home: return to app home screen</li>
<li>control-t: Navigate to Live TV</li>
<li>control-g: Navigate to Live TV Guide</li>
<li>control-r: Record - works when highlighting a program or on program detail screen</li>
<li>control-o: Navigate to Recorded TV</li>
<li>control-d: show menu or info for selected content (if available)</li>
</ul>
</div>
<div class="verticalSection">
<div class="sectionTitleContainer">
<h3 class="sectionTitle"><a is="emby-linkbutton" class="button-link button-link-color-inherit" href="#">${HeaderVideoPlayback}</a></h3>
</div>
<ul style="margin:0;">
<li>spacebar: toggle play/pause</li>
<li>control-shift-a: cycle through audio tracks</li>
<li>control-u: cycle through subtitle tracks</li>
<li>control-p: toggle play/pause</li>
<li>control-shift-p: play selected media</li>
<li>control-shift-s: stop</li>
<li>control-shift-f: skip forward</li>
<li>control-f: next chapter or track</li>
<li>control-shift-b: skip backward</li>
<li>control-b: previous chapter or track</li>
<li>left: rewind, if on-screen display is not showing</li>
<li>right: fast-forward, if on-screen display is not showing</li>
<li>Shift+Left arrow: rewind</li>
<li>Shift+Right arrow: fast-forward</li>
<li>F8: toggle mute</li>
<li>M: toggle mute</li>
<li>F9: volume down</li>
<li>F10: volume up</li>
<li>F: toggle full-screen</li>
<li>PageUp: Next chapter in video</li>
<li>PageDown: Previous chapter in video</li>
<li>Channel up: +, Next channel (or next track if not playing live tv)</li>
<li>Channel down: -, Previous channel (or previous track if not playing live tv)</li>
</ul>
</div>
<div class="verticalSection">
<div class="sectionTitleContainer">
<h3 class="sectionTitle"><a is="emby-linkbutton" class="button-link button-link-color-inherit" href="#">${HeaderSpecialKeys}</a></h3>
</div>
<p class="secondaryText">${FollowingSpecialKeys}</p>
<ul style="margin:0;">
<li>search/find: launch app search function</li>
<li>${Favorites}</li>
<li>${Home}</li>
<li>menu/info: show menu or info for selected content (if available)</li>
<li>${Back}</li>
<li>toggle mute</li>
<li>volume up</li>
<li>volume down</li>
<li>channel up</li>
<li>channel down</li>
<li>next track</li>
<li>previous track</li>
<li>${Pause}</li>
<li>${Play}</li>
<li>${FastForward}</li>
<li>${Rewind}</li>
<li>${Record}</li>
<li>${Stop}</li>
</ul>
</div>
</div>
</div>
</div>

1
settings/keyboard.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/viewmanager/basesettingsview.js","./../modules/emby-elements/emby-button/emby-button.js"],function(_exports,_basesettingsview,_embyButton){function View(view,params){_basesettingsview.default.apply(this,arguments)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(View.prototype,_basesettingsview.default.prototype);_exports.default=View});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,43 @@
<div class="formDialogHeader">
<button type="button" is="emby-dialogclosebutton"></button>
<h3 class="formDialogHeaderTitle"></h3>
</div>
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" class="formDialogContent">
<div class="scrollSlider">
<form class="dialogContentInner dialog-content-centered padded-left padded-right padded-bottom-page">
<div class="entryFormElements">
</div>
<button is="emby-button" type="button" class="raised btnSendTest raised flex-grow justify-content-center block">
<i class="md-icon button-icon button-icon-left">send</i>
<span>${SendTestNotification}</span>
</button>
<div style="margin:2em 0;">
<h3 class="checkboxListLabel">${Events}</h3>
<div class="checkboxList eventList"></div>
</div>
<div class="selectContainer fldSelectUser hide" style="margin-top:1em;">
<select is="emby-select" class="selectUser" label="${LimitUserEventsTo}" multiple></select>
</div>
<div class="selectContainer" style="margin-top:1em;">
<select is="emby-select" class="selectLibrary" label="${LimitLibraryEventsTo}" multiple></select>
</div>
<div class="selectContainer fldDevices hide" style="margin-top:1em;">
<select is="emby-select" class="selectDevices" label="${LimitDeviceEventsTo}" multiple></select>
</div>
<div class="formDialogFooter">
<button is="emby-button" type="submit" class="raised btnSubmit block formDialogFooterItem button-submit">
${Save}
</button>
</div>
</form>
</div>
</div>

File diff suppressed because one or more lines are too long

103
settings/playback.html Normal file
View File

@@ -0,0 +1,103 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="auto-center fieldsets">
<fieldset>
<legend>
${Audio}
</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectAudioLanguage autoSetting autoSave" data-refreshitemsonchange="true" data-reordering="true" data-joindelimiter="," multiple label="${LabelAudioLanguagePreference}" data-settingfield="AudioLanguagePreference" data-settingowner="userconfiguration"></select>
</div>
<label class="toggleContainer fieldset-field">
<input type="checkbox" is="emby-toggle" class="chkPlayDefaultAudioTrack autoSetting autoSave" data-settingfield="PlayDefaultAudioTrack" data-settingowner="userconfiguration" />
<span>${LabelPlayDefaultAudioTrack}</span>
</label>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkRememberAudioTracks autoSetting autoSave" data-settingfield="RememberAudioSelections" data-settingowner="userconfiguration" />
<span>${RememberSelectedAudioTracks}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${RememberSelectedAudioTracksHelp}</div>
<div class="fieldDescription toggleFieldDescription fldClearTrackSelections">
<button is="emby-button" type="button" class="button-link btnClearTrackSelections" data-mode="audio">
<i class="md-icon button-icon button-icon-left">&#xe0b8;</i>
<span>${ClearSavedTrackSelections}</span>
</button>
</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>
${Advanced}
</legend>
<div class="fieldset-fields">
<div class="toggleContainer fldEpisodeAutoPlay fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkEpisodeAutoPlay autoSetting autoSave" data-settingfield="EnableNextEpisodeAutoPlay" data-settingowner="userconfiguration" />
<span>${PlayNextEpisodeAutomatically}</span>
</label>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnableNextVideoOverlay autoSetting autoSave" data-settingmethod="enableNextVideoInfoOverlay" data-settingowner="usersettings" />
<span>${ShowUpNextPreview}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${ShowUpNextPreviewHelp}</div>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectSkipForwardLength autoSetting autoSave" label="${LabelSkipForwardLength}" data-settingmethod="skipForwardLength" data-settingowner="usersettings"></select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectSkipBackLength autoSetting autoSave" label="${LabelSkipBackLength}" data-settingmethod="skipBackLength" data-settingowner="usersettings"></select>
</div>
<div class="selectContainer fldResumeRewind fieldset-field">
<select is="emby-select" class="selectResumeRewind autoSetting autoSave" label="${LabelResumeRewindSeconds}" data-settingfield="ResumeRewindSeconds" data-settingowner="userconfiguration">
</select>
<div class="fieldDescription">${ResumeRewindSecondsHelp}</div>
</div>
<div class="selectContainer fldIntroSkip fieldset-field">
<select is="emby-select" class="selectIntroSkip autoSetting autoSave" label="${LabelIntroSkipMode}" data-settingfield="IntroSkipMode" data-settingowner="userconfiguration">
<option value="None">${Off}</option>
<option value="ShowButton">${ShowSkipIntroButton}</option>
<option value="AutoSkip">${AutoSkipIntro}</option>
</select>
<div class="fieldDescription">${IntroSkipModeHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkStillWatching autoSetting autoSave" data-settingmethod="enableStillWatching" data-settingowner="usersettings" />
<span>${PromptStillWatching}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${PreventPlaybackContinuing}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkRatingOnPlaybackStart autoSetting autoSave" data-settingmethod="enableRatingInfoOnPlaybackStart" data-settingowner="usersettings" />
<span>${DisplayRatingInformationOnVideoPlaybackStart}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${DisplayRatingInformationOnVideoPlaybackStartHelp}</div>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="autoSetting autoSave" label="${LabelVideoScreenUpAction}" data-settingmethod="videoScreenUpAction" data-settingowner="usersettings">
<option value="">${ShowOnScreenControls}</option>
<option data-description="${ChaptersGuideHelp}" value="chapters">${ChaptersGuide}</option>
</select>
<div class="fieldDescription">${VideoScreenUpActionHelp}</div>
</div>
</div>
</fieldset>
</form>
</div>
</div>

1
settings/playback.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/viewmanager/basesettingsview.js","./../modules/loading/loading.js","./../modules/common/globalize.js","./../modules/emby-elements/emby-scroller/emby-scroller.js","./../modules/emby-elements/emby-select/emby-select.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-input/emby-input.js","./../modules/emby-elements/emby-toggle/emby-toggle.js"],function(_exports,_basesettingsview,_loading,_globalize,_embyScroller,_embySelect,_embyButton,_embyInput,_embyToggle){function fillSkipLengths(select){var formatter=new Intl.DurationFormat(_globalize.default.getCurrentLocales(),{style:"long"});select.innerHTML=[5,10,15,20,25,30].map(function(option){return{name:formatter.format({seconds:option}),value:1e3*option}}).map(function(o){return'<option value="'+o.value+'">'+o.name+"</option>"}).join("")}function onTrackSelectionsCleared(){_loading.default.hide()}function onClearSavedTrackSelectionsClick(e){var options,instance=this,mode=e.target.closest("button").getAttribute("data-mode");return options={title:_globalize.default.translate("HeaderClearTrackSelections"),text:_globalize.default.translate("QuestionClearSavedTracks"),confirmText:_globalize.default.translate("HeaderClearTrackSelections"),primary:"cancel"},Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)}).then(function(){return _loading.default.show(),instance.getApiClient().clearUserTrackSelections(instance.getUserConfigurationUserId(),mode).then(onTrackSelectionsCleared,onTrackSelectionsCleared)})}function View(view,params){var select,formatter;_basesettingsview.default.apply(this,arguments),view.querySelector("form").addEventListener("submit",function(e){return e.preventDefault(),!1}.bind(this)),view.querySelector(".btnClearTrackSelections").addEventListener("click",onClearSavedTrackSelectionsClick.bind(this)),select=view.querySelector(".selectResumeRewind"),formatter=new Intl.DurationFormat(_globalize.default.getCurrentLocales(),{style:"long"}),select.innerHTML=[0,5,10,15,20].map(function(option){return{name:formatter.format({seconds:option}),value:option}}).map(function(o){return'<option value="'+o.value+'">'+o.name+"</option>"}).join(""),fillSkipLengths(view.querySelector(".selectSkipForwardLength")),fillSkipLengths(view.querySelector(".selectSkipBackLength")),view.querySelector(".selectAudioLanguage").getItems=function(query){var instance=this;return instance.getApiClient().getCultures().then(function(cultures){var selectedValues=instance.view.querySelector(".selectAudioLanguage").values;Array.isArray(selectedValues)||(selectedValues=null!=selectedValues&&selectedValues.split?selectedValues.split(","):[]);(items=cultures.map(function(c){return{Name:c.DisplayName,Id:c.TwoLetterISOLanguageName,Type:"GenericListItem",CanReorder:-1!==selectedValues.indexOf(c.TwoLetterISOLanguageName)&&1<selectedValues.length}})).sort(function(a,b){a=selectedValues.indexOf(a.Id),b=selectedValues.indexOf(b.Id);return(a=a<0?items.length:a)===(b=b<0?items.length:b)?0:a<b?-1:1});var cultures=items.length,items=items.slice(query.StartIndex||0);return null!=query.Limit&&items.length>query.Limit&&(items.length=Math.min(items.length,query.Limit)),{TotalRecordCount:cultures,Items:items}})}.bind(this)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(View.prototype,_basesettingsview.default.prototype),View.prototype.loadSettingsInternal=function(){return this.loadAutoSettings()},View.prototype.getUserConfigurationUserId=function(){return this.params.userId||this.getApiClient().getCurrentUserId()};_exports.default=View});

1
settings/profile.css Normal file
View File

@@ -0,0 +1 @@
.imageDropZone{border:.2em dashed currentcolor;border-radius:.6em;text-align:center;position:relative;height:12em;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}

125
settings/profile.html Normal file
View File

@@ -0,0 +1,125 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<div class="readOnlyContent padded-top auto-center flex align-items-center">
<div class="fldImage"></div>
<div>
<h2 class="username" style="margin: 0 0 .5em;"></h2>
<button is="emby-button" type="button" class="raised hide btnDeleteImage" style="margin:0;">
<span>${HeaderDeleteImage}</span>
</button>
</div>
</div>
<form class="newImageForm userProfileSettingsForm hide auto-center" style="margin-top:2em;">
<div class="flex align-items-center" style="margin:1.5em 0;">
<h2 style="margin:0;">${HeaderUploadNewImage}</h2>
<button is="emby-button" type="button" class="fab btnBrowse" style="margin:0 1em;" title="${Browse}" aria-label="${Browse}">
<i class="md-icon fab-icon">folder</i>
</button>
</div>
<div class="fldNewImage">
<div class="userImageDropZone imageDropZone fieldDescription">
<output class="userImageOutput flex align-items-center justify-content-center" style="position: absolute;top:0;left:0;right:0;bottom:0;width:100%;"></output>
<label>
<input type="file" accept="image/*" class="uploadUserImage emby-file-input" name="uploadUserImage" style="position: absolute;top:0;left:0;right:0;bottom:0;width:100%;" />
<div>${LabelDropImageHere}</div>
</label>
</div>
</div>
<div class="fldUpload hide" style="margin-top:1em;">
<button is="emby-button" type="submit" class="raised button-submit block">${Upload}</button>
</div>
</form>
<form class="updatePasswordForm passwordSection userProfileSettingsForm hide auto-center padded-top fieldsets" style="margin-top: 1em;">
<fieldset>
<legend>
${Password}
</legend>
<div class="fieldset-fields">
<div class="fldCurrentPassword inputContainer hide fieldset-field">
<input is="emby-input" type="password" class="txtCurrentPassword" label="${LabelCurrentPassword}" autocomplete="off" />
</div>
<div class="inputContainer fieldset-field">
<input is="emby-input" type="password" class="txtNewPassword" label="${LabelNewPassword}" autocomplete="off" required />
</div>
<div class="inputContainer fieldset-field">
<input is="emby-input" type="password" class="txtNewPasswordConfirm" label="${LabelNewPasswordConfirm}" autocomplete="off" required />
</div>
</div>
<div class="fieldset-actions">
<button is="emby-button" type="submit" class="raised button-submit block"><span>${SavePassword}</span></button>
<button is="emby-button" type="button" class="btnResetPassword raised button-cancel block hide">
<span>${HeaderRemovePassword}</span>
</button>
</div>
</fieldset>
</form>
<form class="profilePinForm userProfileSettingsForm hide auto-center padded-top fieldsets" style="margin-top: 1em;">
<fieldset>
<legend>
${TitleProfilePin}
</legend>
<div class="fieldset-fields">
<p class="legendDescription fieldset-field">
${ProfilePinDescription}
</p>
<div class="inputContainer fieldset-field">
<input is="emby-input" type="text" class="txtProfilePin" label="${TitleProfilePin}" autocomplete="off" minlength="4" maxlength="4" size="4" pattern="\d{4,4}" inputmode="numeric" />
<div class="fieldDescription pinFieldDescription"></div>
</div>
</div>
<div class="fieldset-actions">
<button is="emby-button" type="submit" class="raised button-submit block"><span>${SaveProfilePin}</span></button>
</div>
</fieldset>
</form>
<form class="localAccessForm localAccessSection auto-center hide fieldsets" style="margin-top: 3em;">
<fieldset>
<legend>
${HeaderLocalNetworkAccess}
</legend>
<div class="fieldset-fields">
<div class="selectContainer fldInNetworkPasswordMode fieldset-field">
<select is="emby-select" class="selectInNetworkPasswordMode" label="${LabelLocalNetworkPasswordMode}">
<option value="password">${RequirePasswordInLocalNetwork}</option>
<option value="nopassword">${NoPasswordInLocalNetwork}</option>
<option value="pin">${PinCodeInLocalNetwork}</option>
</select>
<div class="fieldDescription">${LocalNetworkPasswordModeHelp}</div>
</div>
<div class="inputContainer fldInNetworkPassword fieldset-field hide">
<input placeholder="*****" is="emby-input" type="number" class="txtInNetworkPassword" label="${LabelLocalNetworkPinCode}" autocomplete="off" pattern="[0-9]*" step="1" maxlength="5" />
</div>
<div class="fieldset-field">
<button is="emby-button" type="submit" class="raised button-submit block">
<span>${Save}</span>
</button>
</div>
</div>
</fieldset>
</form>
</div>
</div>

1
settings/profile.js Normal file

File diff suppressed because one or more lines are too long

1
settings/settings.css Normal file
View File

@@ -0,0 +1 @@
.settingsDescriptionContainer{width:52%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center}.settingsDescriptionContent{padding-top:1em}.settingsDescriptionContent-logo{width:20em;height:20em;background-size:contain;border-width:.7em;border-style:solid;border-radius:100em;padding:1em}

14
settings/settings.html Normal file
View File

@@ -0,0 +1,14 @@
<div class="view flex flex-direction-row">
<div is="emby-scroller" class="flex flex-direction-column scrollFrameY flex-grow viewScroller" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="center" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-right padded-top-page padded-bottom-page settingsContainer">
<div class="readOnlyContent settingsContentContainer" style="margin: 0 auto;">
<div class="dynamicRoutes focuscontainer-x">
</div>
</div>
</div>
</div>
</div>

1
settings/settings.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/viewmanager/baseview.js","./../modules/emby-apiclient/connectionmanager.js","./../modules/loading/loading.js","./../modules/common/servicelocator.js","./../modules/focusmanager.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-scroller/emby-scroller.js","./../modules/navdrawer/navdrawercontent.js","./../modules/layoutmanager.js"],function(_exports,_baseview,_connectionmanager,_loading,_servicelocator,_focusmanager,_embyButton,_embyScroller,_navdrawercontent,_layoutmanager){function renderSettings(instance,params){var apiClient=params.serverId?_connectionmanager.default.getApiClient(params.serverId):_connectionmanager.default.currentApiClient();apiClient.getUser(params.userId||apiClient.getCurrentUserId()).then(function(user){return apiClient.getCurrentUser().then(function(loggedInUser){return function(instance,apiClient,user,loggedInUser){var mobileBorders=!_layoutmanager.default.tv,options={apiClient:apiClient,user:user,loggedInUser:loggedInUser,userImage:!0,selectServer:!0,signOut:!0,itemClass:"navMenuOption-settings"+(mobileBorders?" navMenuOption-settings-hidelastborder":""),itemsContainerClass:mobileBorders?" navDrawerItemsContainer-shaded defaultCardBackground":null,home:!1,search:!1,collapsible:!1,header:!1,border:!1,highlight:mobileBorders,allowBorderXOffset:!0,asideIcon:!0,contextMenu:!1,listItemBodyClass:"settingsMenuListItemBody"+(_layoutmanager.default.tv?"":" settingsMenuListItemBody-extrapadding"),itemBackground:_layoutmanager.default.tv,headerClass:"navMenuHeader-settings"};return _navdrawercontent.default.getSettingsDrawerHtml(options).then(function(html){var routesElem=instance.view.querySelector(".dynamicRoutes");return mobileBorders&&routesElem.classList.add("padded-left","padded-right"),routesElem.innerHTML=html,_navdrawercontent.default.initItemsContainers(routesElem,options).then(function(){var serverElem,autoFocusElem=routesElem;"server"===instance.params.start&&(serverElem=routesElem.querySelector('div[data-section="server"]'))&&(autoFocusElem=serverElem),setTimeout(function(){_focusmanager.default.autoFocus(autoFocusElem,{skipIfNotEnabled:!0})},100)})})}(instance,apiClient,user,loggedInUser)})})}function View(view,params){_baseview.default.apply(this,arguments);var appInfoText=_servicelocator.appHost.appName()+" "+_servicelocator.appHost.appVersion();_layoutmanager.default.tv&&(!function(view){view.insertAdjacentHTML("afterbegin",'<div class="settingsDescriptionContainer padded-top-page padded-left padded-right"><div class="padded-left padded-right flex-grow flex-direction-column flex justify-content-flex-start align-items-center settingsDescriptionContent"><svg class="settingsDescriptionContent-logo"\n width="200mm"\n height="200mm"\n viewBox="0 0 200 200"\n version="1.1"\n enable-background="new"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n xmlns:cc="http://creativecommons.org/ns#"\n xmlns:dc="http://purl.org/dc/elements/1.1/">\n <defs />\n <metadata>\n <rdf:RDF>\n <cc:Work\n rdf:about="">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n style="display:inline;opacity:1"\n transform="translate(0,-97)">\n <path\n d="M 91.599577 97.595313 L 39.096838 150.09753 L 47.497359 158.49806 L 0.59479574 205.40062 L 53.097534 257.90336 L 61.498055 249.50284 L 108.40062 296.4054 L 164.4034 240.4021 L 156.00288 232.00158 L 199.40488 188.59958 L 146.90266 136.09684 L 138.50162 144.49788 L 91.599577 97.595313 z M 76.911068 159.30782 L 109.77314 178.28083 L 142.63522 197.25383 L 109.77314 216.22683 L 76.911068 235.19983 L 76.911068 197.25383 L 76.911068 159.30782 z "\n class="logo-shape" />\n </g>\n <g />\n</svg><div class="settingsDescriptionContent-description secondaryText" style="margin-top:1em;"></div></div></div>')}(view),view.querySelector(".settingsDescriptionContent-description").innerHTML=appInfoText)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!settings/settings.css"]),Object.assign(View.prototype,_baseview.default.prototype),View.prototype.onResume=function(options){_baseview.default.prototype.onResume.apply(this,arguments),_loading.default.hide(),options.refresh&&renderSettings(this,this.params)};_exports.default=View});

BIN
settings/subspreview.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -0,0 +1 @@
define(["exports","./../modules/common/globalize.js","./../modules/common/subtitleappearancehelper.js","./../modules/emby-apiclient/events.js","./../modules/emby-elements/emby-select/emby-select.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-input/emby-input.js","./../modules/emby-elements/emby-toggle/emby-toggle.js"],function(_exports,_globalize,_subtitleappearancehelper,_events,_embySelect,_embyButton,_embyInput,_embyToggle){function numberToPercentString(value){try{return new Intl.NumberFormat(_globalize.default.getCurrentLocales(),{style:"percent"}).format(value/100)}catch(err){return console.log("Error in NumberFormat: "+err),value+"%"}}function onUserSettingsChange(e,name){var appearanceSettings;"localplayersubtitleappearance3"===name&&(name={window:(name=this.view).querySelector(".subtitleappearance-preview-window"),text:name.querySelector(".subtitleappearance-preview-text")},appearanceSettings=this.options.settingsContainer.getNamedSettingsOwner("usersettings").getSubtitleAppearanceSettings(),_subtitleappearancehelper.default.applyStyles(name,appearanceSettings))}function SubtitleAppearanceEditor(options){this.options=options}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!settings/subtitles.css"]),SubtitleAppearanceEditor.prototype.embed=function(context,position){var instance=this;return require(["text!./settings/subtitleappearanceeditor.template.html"]).then(function(responses){context.insertAdjacentHTML(position,_globalize.default.translateDocument(responses[0])),context=context.parentNode.querySelector(".fieldsetSubtitleAppearance");var options,responses=(instance.view=context).querySelector(".selectVerticalPosition");responses=responses,(options=[{name:numberToPercentString(90),value:90},{name:numberToPercentString(80),value:80},{name:numberToPercentString(70),value:70},{name:numberToPercentString(60),value:60},{name:numberToPercentString(50),value:50},{name:numberToPercentString(40),value:40},{name:numberToPercentString(30),value:30},{name:numberToPercentString(20),value:20},{name:numberToPercentString(10),value:10},{name:_globalize.default.translate("Bottom"),value:0}]).reverse(),responses.innerHTML=options.map(function(o){return'<option value="'+o.value+'">'+o.name+"</option>"}).join(""),context.addEventListener("change",function(e){onUserSettingsChange.call(this,{},"localplayersubtitleappearance3");var form=e.target.closest(".fieldsetSubtitleAppearance");(e=e.target.closest(".selectBackgroundColor"))&&("transparent"===e.value?form.querySelector(".fldBackgroundOpacity").classList.add("hide"):form.querySelector(".fldBackgroundOpacity").classList.remove("hide"))}.bind(instance)),!1!==instance.options.preview&&context.querySelector(".previewContainer").classList.remove("hide"),!1!==instance.options.title&&context.querySelector(".appearanceTitle").classList.remove("hide")})},SubtitleAppearanceEditor.prototype.bindEvents=function(){this.boundOnUserSettingsChange||(this.boundOnUserSettingsChange=onUserSettingsChange.bind(this),_events.default.on(this.options.settingsContainer.getNamedSettingsOwner("usersettings"),"change",this.boundOnUserSettingsChange))},SubtitleAppearanceEditor.prototype.destroy=function(){var boundOnUserSettingsChange=this.boundOnUserSettingsChange;boundOnUserSettingsChange&&(_events.default.off(this.options.settingsContainer.getNamedSettingsOwner("usersettings"),"change",boundOnUserSettingsChange),this.boundOnUserSettingsChange=null),this.options=null,this.view=null};_exports.default=SubtitleAppearanceEditor});

View File

@@ -0,0 +1,142 @@
<fieldset class="fieldsetSubtitleAppearance">
<legend class="appearanceTitle hide">${HeaderSubtitleAppearance}</legend>
<div class="fieldset-fields">
<div style="margin-bottom:1.5em;" class="fieldset-field previewContainer hide">
<div class="subtitleappearance-preview flex align-items-center justify-content-center" style="border: .08em solid gray; color: black; border-radius:.24em; padding:1em; height: 3em;">
<div class="subtitleappearance-preview-window flex align-items-center justify-content-center" style="width: 90%; padding: .25em;">
<div class="subtitleappearance-preview-text flex align-items-center justify-content-center">
${TheseSettingsAffectSubtitlesOnThisDevice}
</div>
</div>
</div>
<div class="fieldDescription">${SubtitleAppearanceSettingsDisclaimer}</div>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectTextSize autoSetting autoSave" label="${LabelTextSize}" data-settingfield="textSize" data-settingowner="subtitleappearancesettings" data-triggerchange="true">
<option value="smaller">${Smaller}</option>
<option value="small">${Small}</option>
<option value="">${Normal}</option>
<option value="large">${Large}</option>
<option value="larger">${Larger}</option>
<option value="extralarge">${ExtraLarge}</option>
</select>
</div>
<div class="selectContainer hide fieldset-field">
<select is="emby-select" class="selectVerticalPosition autoSetting autoSave" label="${LabelVerticalPositionFromBottom}" data-settingfield="verticalPosition" data-settingowner="subtitleappearancesettings">
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="inputTextColor autoSetting autoSave" label="${LabelTextColor}" data-settingfield="textColor" data-settingowner="subtitleappearancesettings">
<option value="#000000">${Black}</option>
<option value="#0000FF">${Blue}</option>
<option value="#00FFFF">${Cyan}</option>
<option value="#808080">${DarkGray}</option>
<option value="#696969">${DimGray}</option>
<option value="#A9A9A9">${Gray}</option>
<option value="#008000">${Green}</option>
<option value="#D3D3D3">${LightGray}</option>
<option value="#00FF00">${Lime}</option>
<option value="#FF00FF">${Magenta}</option>
<option value="#FFA500">${Orange}</option>
<option value="#FFC0CB">${Pink}</option>
<option value="#FF0000">${Red}</option>
<option value="#C0C0C0">${Silver}</option>
<option value="#FFFF00">${Yellow}</option>
<option value="#ffffff">${White}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectDropShadow autoSetting autoSave" label="${LabelDropShadow}" data-settingfield="dropShadow" data-settingowner="subtitleappearancesettings">
<option value="none">${None}</option>
<option value="raised">${Raised}</option>
<option value="depressed">${Depressed}</option>
<option value="uniform">${Uniform}</option>
<option value="dropshadow">${DropShadow}</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectBackgroundColor autoSetting autoSave" label="${LabelBackgroundColor}" data-settingfield="textBackground" data-settingowner="subtitleappearancesettings" data-triggerchange="true">
<option value="#000000">${Black}</option>
<option value="#0000FF">${Blue}</option>
<option value="#00FFFF">${Cyan}</option>
<option value="#808080">${DarkGray}</option>
<option value="#696969">${DimGray}</option>
<option value="#A9A9A9">${Gray}</option>
<option value="#008000">${Green}</option>
<option value="#D3D3D3">${LightGray}</option>
<option value="#00FF00">${Lime}</option>
<option value="#FF00FF">${Magenta}</option>
<option value="#FFA500">${Orange}</option>
<option value="#FFC0CB">${Pink}</option>
<option value="#FF0000">${Red}</option>
<option value="#C0C0C0">${Silver}</option>
<option value="transparent">${Transparent}</option>
<option value="#FFFF00">${Yellow}</option>
<option value="#ffffff">${White}</option>
</select>
</div>
<div class="selectContainer fldBackgroundOpacity hide fieldset-field">
<select is="emby-select" class="selectBackgroundOpacity autoSetting autoSave" label="${LabelBackgroundOpacity}" data-settingfield="textBackgroundOpacity" data-settingowner="subtitleappearancesettings">
<option value=".1">10%</option>
<option value=".2">20%</option>
<option value=".25">25%</option>
<option value=".3">30%</option>
<option value=".4">40%</option>
<option value=".50">50%</option>
<option value=".6">60%</option>
<option value=".7">70%</option>
<option value=".75">75%</option>
<option value=".8">80%</option>
<option value=".9">90%</option>
<option value="1">100%</option>
</select>
</div>
</div>
</fieldset>
<fieldset class="autoSetting-autohide hide" data-cssfeatures="cssvars" data-childfieldsvisible="true">
<legend>${HeaderSubtitlePosition}</legend>
<div class="fieldset-fields">
<div class="selectContainer autoSetting-autohide hide fieldset-field" data-cssfeatures="cssvars" data-apphostsupports="subtitlepositionbottom">
<select is="emby-select" class="autoSetting autoSave" label="${BottomEdgePosition}" data-settingfield="positionBottom" data-settingowner="subtitleappearancesettings">
<option value="0">0%</option>
<option value="5">5%</option>
<option value="10">10%</option>
<option value="15">15%</option>
<option value="20">20%</option>
<option value="25">25%</option>
<option value="30">30%</option>
<option value="35">35%</option>
<option value="40">40%</option>
<option value="45">45%</option>
<option value="50">50%</option>
<option value="55">55%</option>
<option value="60">60%</option>
</select>
<div class="fieldDescription">${VerticalPositionFromBottomScreen}</div>
</div>
<div class="selectContainer autoSetting-autohide hide fieldset-field" data-cssfeatures="cssvars" data-apphostsupports="subtitlepositiontop">
<select is="emby-select" class="autoSetting autoSave" label="${TopEdgePosition}" data-settingfield="positionTop" data-settingowner="subtitleappearancesettings">
<option value="0">0%</option>
<option value="5">5%</option>
<option value="10">10%</option>
<option value="15">15%</option>
<option value="20">20%</option>
<option value="25">25%</option>
<option value="30">30%</option>
</select>
<div class="fieldDescription">${TopEdgePositionHelp}</div>
</div>
</div>
</fieldset>

1
settings/subtitles.css Normal file
View File

@@ -0,0 +1 @@
.subtitleappearance-preview{background:#6a96bd url(subspreview.webp) no-repeat center center;background-size:cover}

38
settings/subtitles.html Normal file
View File

@@ -0,0 +1,38 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="auto-center fieldsets">
<fieldset class="fieldsetSubtitles">
<legend class="hide">${Subtitles}</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectSubtitleLanguage autoSetting autoSave" data-refreshitemsonchange="true" data-reordering="true" data-joindelimiter="," multiple label="${LabelPreferredSubtitleLanguage}" data-settingfield="SubtitleLanguagePreference" data-settingowner="userconfiguration"></select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectSubtitlePlaybackMode autoSetting autoSave emby-select-dynamicfielddescription" data-menu="custom" label="${LabelSubtitlePlaybackMode}" data-settingfield="SubtitleMode" data-settingowner="userconfiguration" data-triggerchange="true">
</select>
<div class="fieldDescription dynamicFieldDescription hide"></div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkRememberSubtitles autoSetting autoSave" data-settingfield="RememberSubtitleSelections" data-settingowner="userconfiguration" />
<span>${RememberSelectedSubtitleTracks}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${RememberSelectedSubtitleTracksHelp}</div>
<div class="fieldDescription toggleFieldDescription fldClearTrackSelections">
<button is="emby-button" type="button" class="button-link btnClearTrackSelections" data-mode="subtitles">
<i class="md-icon button-icon button-icon-left">&#xe0b8;</i>
<span>${ClearSavedTrackSelections}</span>
</button>
</div>
</div>
</div>
</fieldset>
</form>
</div>
</div>

1
settings/subtitles.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/viewmanager/basesettingsview.js","./../modules/loading/loading.js","./../modules/common/globalize.js","./../modules/emby-elements/emby-scroller/emby-scroller.js","./../modules/emby-elements/emby-select/emby-select.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-input/emby-input.js","./../modules/emby-elements/emby-toggle/emby-toggle.js","./subtitleappearanceeditor.js"],function(_exports,_basesettingsview,_loading,_globalize,_embyScroller,_embySelect,_embyButton,_embyInput,_embyToggle,_subtitleappearanceeditor){function onTrackSelectionsCleared(){_loading.default.hide()}function onClearSavedTrackSelectionsClick(e){var options,instance=this,mode=e.target.closest("button").getAttribute("data-mode");return options={title:_globalize.default.translate("HeaderClearTrackSelections"),text:_globalize.default.translate("QuestionClearSavedTracks"),confirmText:_globalize.default.translate("HeaderClearTrackSelections"),primary:"cancel"},Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)}).then(function(){_loading.default.show();var userId=instance.getUserConfigurationUserId();return instance.getApiClient().clearUserTrackSelections(userId,mode).then(onTrackSelectionsCleared,onTrackSelectionsCleared)})}function View(view,params){_basesettingsview.default.apply(this,arguments),function(view,apiClient){var html="",html=(html=(html+='<option value="Default" data-description="'+_globalize.default.translate("DefaultSubtitlesHelp")+'">'+_globalize.default.translate("Default")+"</option>")+('<option value="Smart" data-description="'+_globalize.default.translate("SmartSubtitlesHelp")+'">'+_globalize.default.translate("Smart")+"</option>"))+('<option value="OnlyForced" data-description="'+_globalize.default.translate("OnlyForcedSubtitlesHelp")+'">'+_globalize.default.translate("OnlyForcedSubtitles")+"</option>");apiClient.isMinServerVersion("4.8.0.67")&&(html+='<option value="HearingImpaired" data-description="'+_globalize.default.translate("AutoSelectHearingImpairedHelp")+'">'+_globalize.default.translate("HearingImpaired")+"</option>"),html=(html+='<option value="Always" data-description="'+_globalize.default.translate("AlwaysPlaySubtitlesHelp")+'">'+_globalize.default.translate("AlwaysPlaySubtitles")+"</option>")+'<option value="None" data-description="'+_globalize.default.translate("NoSubtitlesHelp")+'">'+_globalize.default.translate("NoSubtitles")+"</option>",view.querySelector(".selectSubtitlePlaybackMode").innerHTML=html}(view,this.getApiClient()),view.querySelector("form").addEventListener("submit",function(e){return e.preventDefault(),!1}.bind(this)),view.querySelector(".btnClearTrackSelections").addEventListener("click",onClearSavedTrackSelectionsClick.bind(this)),view.querySelector(".selectSubtitleLanguage").getItems=function(query){var instance=this;return this.getApiClient().getCultures().then(function(cultures){var selectedValues=instance.view.querySelector(".selectSubtitleLanguage").values;Array.isArray(selectedValues)||(selectedValues=null!=selectedValues&&selectedValues.split?selectedValues.split(","):[]);(items=cultures.map(function(c){return{Name:c.DisplayName,Id:c.TwoLetterISOLanguageName,Type:"GenericListItem",CanReorder:-1!==selectedValues.indexOf(c.TwoLetterISOLanguageName)&&1<selectedValues.length}})).sort(function(a,b){a=selectedValues.indexOf(a.Id),b=selectedValues.indexOf(b.Id);return(a=a<0?items.length:a)===(b=b<0?items.length:b)?0:a<b?-1:1});var cultures=items.length,items=items.slice(query.StartIndex||0);return null!=query.Limit&&items.length>query.Limit&&(items.length=Math.min(items.length,query.Limit)),{TotalRecordCount:cultures,Items:items}})}.bind(this)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(View.prototype,_basesettingsview.default.prototype),View.prototype.loadSettingsInternal=function(){var instance=this;return function(instance){var context=instance.view,subtitleAppearanceEditor=new _subtitleappearanceeditor.default({settingsContainer:instance});return(instance.subtitleAppearanceEditor=subtitleAppearanceEditor).embed(context.querySelector(".fieldsetSubtitles"),"afterend").then(function(){_loading.default.hide()})}(instance).then(function(){return instance.loadAutoSettings().then(function(){instance.subtitleAppearanceEditor.bindEvents()})})},View.prototype.getUserConfigurationUserId=function(){return this.params.userId||this.getApiClient().getCurrentUserId()},View.prototype.destroy=function(){_basesettingsview.default.prototype.destroy.apply(this,arguments);var subtitleAppearanceEditor=this.subtitleAppearanceEditor;subtitleAppearanceEditor&&(subtitleAppearanceEditor.destroy(),this.subtitleAppearanceEditor=null)};_exports.default=View});

View File

@@ -0,0 +1 @@
define(["exports","./../modules/common/itemmanager/itemmanager.js","./../modules/common/itemmanager/genericitemcontroller.js","./../modules/emby-apiclient/connectionmanager.js","./../modules/common/globalize.js","./notificationeditor.js","./../modules/common/pluginmanager.js"],function(_exports,_itemmanager,_genericitemcontroller,_connectionmanager,_globalize,_notificationeditor,_pluginmanager){function UserNotificationController(){_genericitemcontroller.default.apply(this,arguments)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(UserNotificationController.prototype,_genericitemcontroller.default.prototype),UserNotificationController.prototype.getTypeNames=function(){return["UserNotification"]},UserNotificationController.prototype.getDisplayName=function(item,options){return item.FriendlyName||item.ServiceName},UserNotificationController.prototype.getDefaultIcon=function(item){return"&#xe7f4;"},UserNotificationController.prototype.canDelete=function(item,user){return!0},UserNotificationController.prototype.canEdit=function(items,user){return 1===items.length},UserNotificationController.prototype.isDeletePrimaryCommand=function(itemType){return!0},UserNotificationController.prototype.getDeleteMessages=function(){return{single:{text:"DeleteNotificationConfirmation",title:_globalize.default.translate("DeleteNotification"),confirmText:_globalize.default.translate("Delete")},plural:{text:"DeleteNotificationConfirmation",title:_globalize.default.translate("DeleteNotification"),confirmText:_globalize.default.translate("Delete")}}},UserNotificationController.prototype.deleteItemsInternal=function(options){var item=options.items[0];return _connectionmanager.default.getApiClient(item).deleteUserNotifications(options.items)},UserNotificationController.prototype.editItems=function(items,options){var item=items[0],apiClient=_connectionmanager.default.getApiClient(item);return apiClient.getNotificationTypes({userId:item.UserId}).then(function(allEventTypes){return require([(url=item.SetupModuleUrl,_pluginmanager.default.getConfigurationResourceUrl(url))]).then(function(responses){responses=responses[0],responses=responses.setFormValues?responses:new responses({apiClient:apiClient});return(new _notificationeditor.default).show({entry:item,apiClient:apiClient,eventTypes:allEventTypes,entryFormEditor:responses,userId:item.UserId})});var url})};var instance=new UserNotificationController;_itemmanager.default.registerItemController(instance),_exports.default=instance});

File diff suppressed because one or more lines are too long