define([
"exports",
"./../modules/loading/loading.js",
"./../modules/emby-apiclient/connectionmanager.js",
"./../modules/emby-apiclient/apiclient.js",
"./../modules/emby-apiclient/events.js",
"./../modules/common/globalize.js",
"./../modules/common/playback/playbackmanager.js",
"./../modules/appheader/appheader.js",
"./../modules/backdrop/backdrop.js",
"./../modules/common/itemhelper.js",
"./../modules/common/dataformatter.js",
"./../modules/common/itemmanager/itemmanager.js",
"./../modules/layoutmanager.js",
"./../modules/common/usersettings/usersettings.js",
"./../modules/viewmanager/baseview.js",
"./../modules/emby-elements/emby-scroller/emby-scroller.js",
"./../modules/emby-elements/emby-tabs/emby-tabs.js",
"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js",
"./../modules/emby-elements/emby-button/emby-button.js",
"./../modules/emby-elements/sync/emby-downloadbutton.js",
"./../modules/emby-elements/emby-select/emby-select.js",
"./../modules/listview/listview.js",
"./../modules/cardbuilder/cardbuilder.js",
"./../modules/itemcontextmenu.js",
"./../modules/indicators/indicators.js",
"./../modules/navdrawer/navdrawer.js",
"./../modules/common/textencoding.js",
"./../modules/dom.js",
"./../modules/approuter.js",
"./../modules/common/datetime.js",
"./../modules/mediainfo/mediainfo.js",
"./../modules/common/servicelocator.js",
"./../modules/focusmanager.js",
"./../modules/imageloader/imageloader.js",
"./../modules/multiselect/multiselect.js",
"./../modules/skinmanager.js",
"./../modules/common/input/api.js",
], function (
_exports,
_loading,
_connectionmanager,
_apiclient,
_events,
_globalize,
_playbackmanager,
_appheader,
_backdrop,
_itemhelper,
_dataformatter,
_itemmanager,
_layoutmanager,
_usersettings,
_baseview,
_embyScroller,
_embyTabs,
_embyItemscontainer,
_embyButton,
_embyDownloadbutton,
_embySelect,
_listview,
_cardbuilder,
_itemcontextmenu,
_indicators,
_navdrawer,
_textencoding,
_dom,
_approuter,
_datetime,
_mediainfo,
_servicelocator,
_focusmanager,
_imageloader,
_multiselect,
_skinmanager,
_api,
) {
Object.defineProperty(_exports, "__esModule", { value: !0 }),
(_exports.default = void 0),
require(["flexStyles", "css!item/item.css"]);
var backdropContainer = document.querySelector(".backdropContainer"),
backgroundContainer = document.querySelector(".backgroundContainer"),
skinHeader = document.querySelector(".skinHeader"),
decodingAttribute = _dom.default.supportsAsyncDecodedImages()
? ' decoding="async"'
: "";
function renderTrackSelectionsWithoutUser(page, instance, item, forceReload) {
_connectionmanager.default
.getApiClient(item.ServerId)
.getCurrentUser()
.then(function (user) {
renderTrackSelections(page, instance, item, user, forceReload);
});
}
function isMediaStreamDisplayed(stream) {
return "Data" !== stream.Type && "Attachment" !== stream.Type;
}
function renderMediaSources(page, renderAdminFields, item, mediaSources) {
for (
var groupedVersions = mediaSources.filter(function (g) {
return "Grouping" === g.Type;
}),
parentElem =
(renderAdminFields && groupedVersions.length
? page
.querySelector(".splitVersionContainer")
.classList.remove("hide")
: page
.querySelector(".splitVersionContainer")
.classList.add("hide"),
page.querySelector(".mediaSources")),
anyDisplayed = !1,
i = ((parentElem.innerHTML = ""), 0),
length = mediaSources.length;
i < length;
i++
) {
var mediaSource = mediaSources[i];
!(function (version, renderAdminFields) {
for (var i = 0, length = version.MediaStreams.length; i < length; i++)
if (isMediaStreamDisplayed(version.MediaStreams[i])) return 1;
return (
version.Container ||
(version.Formats && version.Formats.length) ||
(version.Path && "Http" !== version.Protocol && renderAdminFields) ||
!!version.Size
);
})(mediaSource, renderAdminFields) ||
((anyDisplayed = !0),
(function (parentElem, renderAdminFields, item, mediaSource, scrollX) {
var elem = document.createElement("div"),
html = (elem.classList.add("mediaSource"), ""),
renderAdminFields =
((html += scrollX
? '
'
: '
'),
mediaSource.Path &&
"Http" !== mediaSource.Protocol &&
renderAdminFields &&
(html += "
" + mediaSource.Path + "
"),
(html += '
'),
mediaSource.Container &&
(html += mediaSource.Container.toUpperCase()),
mediaSource.Size &&
(html +=
'' +
_dataformatter.default.sizeToString(mediaSource.Size) +
""),
new Date(Date.parse(item.DateCreated))),
renderAdminFields =
((html +=
'' +
_globalize.default.translate(
"AddedOnValue",
_datetime.default.toLocaleDateString(renderAdminFields) +
" " +
_datetime.default.getDisplayTime(renderAdminFields),
) +
""),
(elem.innerHTML = html =
(html = html + "
" + "
") &&
'
' +
html +
"
"),
elem.insertAdjacentHTML(
"beforeend",
scrollX
? '
'
: '
',
),
parentElem.appendChild(elem),
mediaSource.MediaStreams.filter(isMediaStreamDisplayed).map(
function (s) {
return _itemhelper.default.normalizeMediaStreamForDisplay(
item,
mediaSource,
s,
);
},
));
scrollX
? _cardbuilder.default.buildCards(renderAdminFields, {
shape: "backdrop",
overlayText: !0,
fields: ["MediaStreamInfo"],
itemsContainer: elem.querySelector(".itemsContainer"),
action: "none",
multiSelect: !1,
ratingButton: !1,
playedButton: !1,
defaultIcon: !1,
typeIndicator: !1,
playedIndicator: !1,
syncIndicator: !1,
timerIndicator: !1,
randomDefaultBackground: !1,
imageFallback: !1,
cardPadderClass: _layoutmanager.default.tv
? "mediaStreamPadder-tv"
: "mediaStreamPadder",
innerCardFooterClass: "mediaStreamInnerCardFooter",
enableUserData: !1,
draggable: !1,
enableFocusScaling: !1,
})
: _listview.default.buildItems(renderAdminFields, {
image: !1,
fields: ["MediaStreamInfo"],
itemsContainer: elem.querySelector(".itemsContainer"),
action: "none",
multiSelect: !1,
ratingButton: !1,
playedButton: !1,
defaultIcon: !1,
typeIndicator: !1,
playedIndicator: !1,
syncIndicator: !1,
timerIndicator: !1,
randomDefaultBackground: !1,
imageFallback: !1,
innerCardFooterClass: "mediaStreamInnerCardFooter",
enableUserDataButtons: !1,
draggable: !1,
itemClass: "detailsListItem",
});
})(parentElem, renderAdminFields, item, mediaSource, !0));
}
}
function isRenderingTrackSelections(item) {
return !(
!_itemhelper.default.supportsMediaSourceSelection(item) ||
-1 ===
_playbackmanager.default
.getSupportedCommands()
.indexOf("PlayMediaSource") ||
!_playbackmanager.default.canPlay(item)
);
}
function renderTrackSelections(
page,
instance,
item,
user,
forceReload,
mediaSources,
) {
var select = page.querySelector(".selectSource"),
apiClient = _connectionmanager.default.getApiClient(item);
isRenderingTrackSelections(item)
? (mediaSources
? Promise.resolve(mediaSources)
: _playbackmanager.default.getPlaybackMediaSources(item)
).then(function (mediaSources) {
var renderAdminFields = user.Policy.IsAdministrator,
renderAdminFields =
(renderMediaSources(page, renderAdminFields, item, mediaSources),
(instance._currentPlaybackMediaSources = mediaSources),
instance.trackSelectionsContainer.classList.remove("hide"),
select.value),
selectedId = mediaSources[0].Id;
(select.innerHTML = mediaSources
.map(function (v) {
var selected = v.Id === selectedId ? " selected" : "";
return (
'
"
);
})
.join("")),
1 < mediaSources.length
? (select.removeAttribute("disabled"),
page
.querySelector(".selectSourceContainer")
.classList.remove("hide"))
: (page
.querySelector(".selectSourceContainer")
.classList.add("hide"),
select.setAttribute("disabled", "disabled")),
(select.value === renderAdminFields && !forceReload) ||
(renderMediaInfo(0, page, item, mediaSources),
renderVideoSelections(page, mediaSources),
renderAudioSelections(page, mediaSources),
renderSubtitleSelections(page, mediaSources),
updateTrackSelectionsFocusState(instance, page));
})
: (renderMediaInfo(0, page, item, item.MediaSources || []),
renderMediaSources(
page,
user.Policy.IsAdministrator,
item,
item.MediaSources || [],
),
(instance._currentPlaybackMediaSources = []),
instance.trackSelectionsContainer.classList.add("hide"),
(select.innerHTML = ""),
(page.querySelector(".selectVideo").innerHTML = ""),
(page.querySelector(".selectAudio").innerHTML = ""),
(page.querySelector(".selectSubtitles").innerHTML = ""),
select.setAttribute("disabled", "disabled"),
updateTrackSelectionsFocusState(instance, page));
}
function renderVideoSelections(page, mediaSources) {
var mediaSourceId = page.querySelector(".selectSource").value,
mediaSources = mediaSources
.filter(function (m) {
return m.Id === mediaSourceId;
})[0]
.MediaStreams.filter(function (m) {
return "Video" === m.Type;
}),
select = page.querySelector(".selectVideo"),
selectedId = mediaSources.length ? mediaSources[0].Index : -1;
(select.innerHTML = mediaSources
.map(function (v) {
var selected = v.Index === selectedId ? " selected" : "",
titleParts = [],
resolutionText = _dataformatter.default.getResolutionText(v);
return (
resolutionText && titleParts.push(resolutionText),
v.Codec && titleParts.push(v.Codec.toUpperCase()),
'
"
);
})
.join("")),
select.setAttribute("disabled", "disabled"),
mediaSources.length
? page.querySelector(".selectVideoContainer").classList.remove("hide")
: page.querySelector(".selectVideoContainer").classList.add("hide");
}
function renderAudioSelections(page, mediaSources) {
var mediaSourceId = page.querySelector(".selectSource").value,
mediaSources = mediaSources.filter(function (m) {
return m.Id === mediaSourceId;
})[0],
tracks = mediaSources.MediaStreams.filter(function (m) {
return "Audio" === m.Type;
}),
select = page.querySelector(".selectAudio"),
selectedId = mediaSources.DefaultAudioStreamIndex;
(select.innerHTML = tracks
.map(function (v) {
var selected = v.Index === selectedId ? " selected" : "",
embeddedTitle =
v.Title && !(v.DisplayTitle || "").includes(v.Title)
? v.Title
: null;
return (
"
"
);
})
.join("")),
1 < tracks.length
? select.removeAttribute("disabled")
: select.setAttribute("disabled", "disabled"),
tracks.length
? page.querySelector(".selectAudioContainer").classList.remove("hide")
: page.querySelector(".selectAudioContainer").classList.add("hide");
}
function renderSubtitleSelections(page, mediaSources) {
var selected,
mediaSourceId = page.querySelector(".selectSource").value,
mediaSources = mediaSources.filter(function (m) {
return m.Id === mediaSourceId;
})[0],
tracks = mediaSources.MediaStreams.filter(function (m) {
return "Subtitle" === m.Type;
}),
select = page.querySelector(".selectSubtitles"),
selectedId =
null == mediaSources.DefaultSubtitleStreamIndex
? -1
: mediaSources.DefaultSubtitleStreamIndex;
tracks.length
? ((selected = -1 === selectedId ? " selected" : ""),
(select.innerHTML =
'
" +
tracks
.map(function (v) {
selected = v.Index === selectedId ? " selected" : "";
var embeddedTitle =
v.Title && !(v.DisplayTitle || "").includes(v.Title)
? v.Title
: null;
return (
"
"
);
})
.join("")),
select.classList.remove("noSelections"),
page
.querySelector(".selectSubtitlesContainer")
.classList.remove("hide"))
: ((select.innerHTML = ""),
select.classList.add("noSelections"),
page.querySelector(".selectSubtitlesContainer").classList.add("hide"));
}
function setButtonText(page, query, html) {
for (
var elems = page.querySelectorAll(query), i = 0, length = elems.length;
i < length;
i++
) {
elems[i].innerHTML = html;
var btn = elems[i].closest("button");
btn && ((btn.title = html), btn.setAttribute("aria-label", html));
}
}
function setResumeProgress(resumeInfoElement, item) {
var ticksLeft,
resumeInfoElement = resumeInfoElement.querySelector(".resumeProgress");
item.UserData &&
0 < item.UserData.PlaybackPositionTicks &&
item.RunTimeTicks
? ((ticksLeft = item.RunTimeTicks - item.UserData.PlaybackPositionTicks),
(ticksLeft =
'
' +
_globalize.default.translate(
"TimeRemainingValue",
_datetime.default.getHumanReadableRuntime(ticksLeft),
) +
"
"),
(resumeInfoElement.innerHTML =
_indicators.default.getProgressBarHtml(item, {
containerClass: "resumeInfoProgressBar",
animated: !0,
}) + ticksLeft),
resumeInfoElement.classList.remove("hide"))
: resumeInfoElement.classList.add("hide");
}
function reloadPlayButtons(instance, page, item, isUserDataChangeEvent) {
var now,
activeElement,
isPlayFocused,
btnPlay,
btnResume,
btnPlayTrailer,
btnShuffle,
playButtons = page.querySelectorAll(".btnPlay");
"Program" === item.Type
? ((now = new Date()) >= new Date(Date.parse(item.StartDate)) &&
now < new Date(Date.parse(item.EndDate))
? hideAll(page, playButtons, !0)
: hideAll(page, playButtons),
hideAll(page, "btnResume"),
hideAll(page, "detailResumeInfo"),
hideAll(page, "btnShuffle"),
hideAll(page, "btnQueue"),
setButtonText(
page,
".playButtonText",
_globalize.default.translate("Play"),
))
: _playbackmanager.default.canPlay(item)
? (hideAll(page, "btnPlay", !0),
(now =
item.IsFolder ||
-1 !==
["MusicAlbum", "MusicGenre", "MusicArtist"].indexOf(item.Type)),
"MusicAlbum" === item.Type && item.SupportsResume && (now = !1),
hideAll(
page,
"btnShuffle",
(now = "Season" !== item.Type && "Series" !== item.Type ? now : !1),
),
(isPlayFocused =
(activeElement = document.activeElement) &&
activeElement.classList &&
(activeElement.classList.contains("btnResume") ||
activeElement.classList.contains("btnMainPlay"))),
(btnPlay = page.querySelector(".btnPlay")),
(btnResume = page.querySelector(".btnResume")),
((btnPlayTrailer = page.querySelector(
".btnPlayTrailer-main",
)).querySelector("i").innerHTML = _itemmanager.default.getDefaultIcon({
Type: "Trailer",
MediaType: "Video",
})),
(btnShuffle = page.querySelector(".btnShuffle")),
"Series" === item.Type ||
("MusicAlbum" === item.Type && item.SupportsResume)
? (btnResume.classList.add("detailButton-primary"),
btnPlay.classList.remove(
"detailButton-primary",
"detailButton-highres3",
),
(function (instance, page) {
getNextUpItems
.call(instance, { Limit: 1, EnableTotalRecordCount: !1 })
.then(function (result) {
var resumeName,
result = result.Items[0],
resumeInfo = page.querySelector(".detailResumeInfo");
result
? (((resumeName =
resumeInfo.querySelector(".resumeName")).innerHTML =
_itemmanager.default.getDisplayName(result)),
resumeName.classList.remove("hide"),
setResumeProgress(resumeInfo, result),
result.UserData &&
0 < result.UserData.PlaybackPositionTicks
? setButtonText(
page,
".resumeButtonText",
_globalize.default.translate("Resume"),
)
: setButtonText(
page,
".resumeButtonText",
_globalize.default.translate("Play"),
),
resumeInfo.classList.remove("hide"))
: (setButtonText(
page,
".resumeButtonText",
_globalize.default.translate("Play"),
),
resumeInfo.classList.add("hide"));
});
})(instance, page),
setButtonText(
page,
".playButtonText",
_globalize.default.translate("PlayFromBeginning"),
),
btnPlay.classList.remove("detailButton-stacked"),
btnShuffle.classList.remove("detailButton-stacked"),
isTrailerButtonVisible(item)
? (btnPlayTrailer.classList.add("detailButton-stacked"),
btnResume.classList.add("detailButton-stacked"))
: (btnPlayTrailer.classList.remove("detailButton-stacked"),
btnResume.classList.remove("detailButton-stacked")),
hideAll(page, "detailResumeInfo", !0),
hideAll(page, "btnResume", !0),
hideAll(page, "btnPlay", now))
: ((instance =
item.UserData && 0 < item.UserData.PlaybackPositionTicks)
? (btnResume.classList.add(
"detailButton-primary",
"detailButton-stacked",
),
btnPlay.classList.remove(
"detailButton-primary",
"detailButton-stacked",
),
_layoutmanager.default.tv
? btnPlay.classList.remove("detailButton-highres3")
: btnPlay.classList.add("detailButton-highres3"),
btnPlayTrailer.classList.add("detailButton-stacked"),
btnShuffle.classList.remove("detailButton-stacked"),
setButtonText(
page,
".playButtonText",
_globalize.default.translate("PlayFromBeginning"),
),
hideAll(page, "detailResumeInfo", !0),
hideAll(page, "resumeName"),
setResumeProgress(
page.querySelector(".detailResumeInfo"),
item,
))
: (btnPlay.classList.add("detailButton-primary"),
btnPlay.classList.remove("detailButton-highres3"),
now
? (btnPlayTrailer.classList.remove("detailButton-stacked"),
btnResume.classList.remove("detailButton-stacked"),
btnShuffle.classList.add("detailButton-stacked"),
btnPlay.classList.add("detailButton-stacked"))
: (isTrailerButtonVisible(item)
? (btnPlay.classList.add("detailButton-stacked"),
btnResume.classList.remove("detailButton-stacked"),
btnPlayTrailer.classList.add("detailButton-stacked"))
: (btnPlay.classList.remove("detailButton-stacked"),
btnResume.classList.remove("detailButton-stacked"),
btnPlayTrailer.classList.remove(
"detailButton-stacked",
)),
btnShuffle.classList.remove("detailButton-stacked")),
setButtonText(
page,
".playButtonText",
_globalize.default.translate("Play"),
)),
hideAll(page, "detailResumeInfo", instance),
hideAll(page, "btnResume", instance)),
isUserDataChangeEvent ||
hideAll(page, "btnQueue", _playbackmanager.default.canQueue(item)),
isPlayFocused && focusMainSection.call(activeElement.parentNode))
: (hideAll(page, playButtons),
hideAll(page, "btnQueue"),
hideAll(page, "btnResume"),
hideAll(page, "detailResumeInfo"),
hideAll(page, "btnShuffle"));
}
function focusMainSection() {
for (
var btns = this.querySelectorAll(".detailButton"),
i = 0,
length = btns.length;
i < length;
i++
) {
var btn = btns[i];
if (_focusmanager.default.isCurrentlyFocusable(btn))
try {
return void _focusmanager.default.focus(btn);
} catch (err) {}
}
_focusmanager.default.autoFocus(this, { skipIfNotEnabled: !0 });
}
function setTitle(item, apiClient, enableLogo) {
(enableLogo = "TvChannel" === item.Type ? !1 : enableLogo)
? _appheader.default.setLogoTitle({
items: [item],
titleText: "",
preferredLogoImageTypes:
_skinmanager.default.getPreferredLogoImageTypes(),
})
: _appheader.default.setTitle("");
}
function getLogoPlacement(item) {
return "TvChannel" === item.Type
? null
: (("MusicAlbum" !== item.Type &&
"Audio" !== item.Type &&
"MusicVideo" !== item.Type) ||
(item.ImageTags && item.ImageTags.Logo)) &&
_usersettings.default.getEnableLogoAsTitle(
_globalize.default.getCurrentLocale(),
)
? "title"
: "float";
}
function getArtistLinksHtml(artists, serverId) {
for (var html = [], i = 0, length = artists.length; i < length; i++) {
var artist = artists[i],
href = _approuter.default.getRouteUrl(artist, {
itemType: "MusicArtist",
serverId: serverId,
});
html.push(
'
' +
_textencoding.default.htmlEncode(artist.Name) +
"",
);
}
return (html = html.join(" / "));
}
function inferContext(item) {
switch (item.Type) {
case "Series":
case "Season":
case "Episode":
return "tvshows";
case "Movie":
return "movies";
case "Game":
case "GameSystem":
return "games";
case "MusicArtist":
case "MusicAlbum":
case "Audio":
case "AudioBook":
case "MusicVideo":
return "music";
case "Program":
case "TvChannel":
case "Timer":
case "SeriesTimer":
return "livetv";
default:
return null;
}
}
function renderName(instance, item, apiClient, user, containers) {
var parentRoute,
itemForTitle = ("Timer" === item.Type && item.ProgramInfo) || item,
context = inferContext(itemForTitle),
parentNameHtml = [],
parentNameLast = !1,
hasFocusableButton = !1,
fontSize = parseFloat(
window
.getComputedStyle(document.body, null)
.getPropertyValue("font-size"),
),
fontSize = Math.round(2 * fontSize * 2.4) + Math.round(0.2 * fontSize),
apiClient =
"title" !== getLogoPlacement(itemForTitle)
? null
: (function (item, apiClient, options) {
options = options || {};
var logoTypes = _skinmanager.default.getPreferredLogoImageTypes();
return apiClient.getLogoImageUrl(item, options, logoTypes);
})(itemForTitle, apiClient, { maxHeight: Math.max(fontSize, 260) }),
fontSize = "itemLogoAsTitle",
itemNamePrimaryClass =
(_layoutmanager.default.tv && (fontSize += " itemLogoAsTitle-tv"),
"itemName-primary"),
itemPrimaryNameContainerClass = "itemPrimaryNameContainer",
html =
(itemForTitle.AlbumArtists && itemForTitle.AlbumArtists.length
? (parentNameHtml.push(
getArtistLinksHtml(
itemForTitle.AlbumArtists,
itemForTitle.ServerId,
),
),
(parentNameLast = !0))
: itemForTitle.ArtistItems &&
itemForTitle.ArtistItems.length &&
"MusicVideo" === itemForTitle.Type
? (parentNameHtml.push(
getArtistLinksHtml(
itemForTitle.ArtistItems,
itemForTitle.ServerId,
),
),
(parentNameLast = !0))
: itemForTitle.SeriesName && itemForTitle.SeriesId
? ((parentRoute = _approuter.default.getRouteUrl(
{
Id: itemForTitle.SeriesId,
Name: itemForTitle.SeriesName,
Type: "Series",
IsFolder: !0,
ServerId: itemForTitle.ServerId,
},
{ context: context },
)),
(seriesName = _textencoding.default.htmlEncode(
itemForTitle.SeriesName,
)),
apiClient
? ((itemNamePrimaryClass += " itemName-primary-logo"),
_layoutmanager.default.tv &&
(itemNamePrimaryClass += " itemName-primary-logo-tv"),
(itemPrimaryNameContainerClass +=
" itemPrimaryNameContainer-logo"),
_layoutmanager.default.tv
? (tabIndex = ' tabindex="-1"')
: (hasFocusableButton = !(tabIndex = "")),
parentNameHtml.push(
"
' +
(seriesName =
'
') +
"",
))
: ((hasFocusableButton = !0),
parentNameHtml.push(
'
' +
seriesName +
"",
)))
: itemForTitle.SeriesName
? parentNameHtml.push(
_textencoding.default.htmlEncode(itemForTitle.SeriesName),
)
: (itemForTitle.IsSeries || itemForTitle.EpisodeTitle) &&
parentNameHtml.push(
_textencoding.default.htmlEncode(itemForTitle.Name),
),
itemForTitle.Album &&
itemForTitle.AlbumId &&
("MusicVideo" === itemForTitle.Type || "Audio" === itemForTitle.Type)
? ((parentRoute = _approuter.default.getRouteUrl(
{
Id: itemForTitle.AlbumId,
Name: itemForTitle.Album,
Type: "MusicAlbum",
IsFolder: !0,
ServerId: itemForTitle.ServerId,
},
{ context: context },
)),
(hasFocusableButton = !0),
parentNameHtml.push(
'
' +
_textencoding.default.htmlEncode(itemForTitle.Album) +
"",
))
: itemForTitle.Album &&
parentNameHtml.push(
_textencoding.default.htmlEncode(itemForTitle.Album),
),
""),
tabIndex = "";
_layoutmanager.default.tv ||
(_itemmanager.default.canEdit(item, user) &&
((hasFocusableButton = !0),
(tabIndex +=
'
')),
_itemmanager.default.canEditImages(item, user) &&
((hasFocusableButton = !0),
(tabIndex +=
'
'))),
enableItemBackdropAsTopImage(itemForTitle) ||
(itemPrimaryNameContainerClass += " itemPrimaryNameContainer-centered"),
parentNameHtml.length &&
(html = parentNameLast
? '
' +
parentNameHtml.join(" - ") +
"
"
: '
' +
parentNameHtml.join(" - ") +
"
");
var seriesName =
(seriesName = _itemmanager.default.getDisplayName(itemForTitle, {
includeParentInfo: !0,
})) && _textencoding.default.htmlEncode(seriesName);
html && seriesName && !parentNameLast
? (html +=
'
' +
seriesName +
"
" +
tabIndex +
"")
: (html =
(parentNameLast ||
(apiClient &&
((seriesName =
'

'),
(itemNamePrimaryClass += " itemName-primary-logo"),
(itemPrimaryNameContainerClass +=
" itemPrimaryNameContainer-logo"),
_layoutmanager.default.tv) &&
(itemNamePrimaryClass += " itemName-primary-logo-tv")),
'
' +
seriesName +
"
" +
tabIndex +
"" +
html));
for (var i = 0, length = containers.length; i < length; i++) {
var container = containers[i],
btnEditMetadata =
(enableItemBackdropAsTopImage(itemForTitle)
? container.classList.remove("nameContainer-centered")
: container.classList.add("nameContainer-centered"),
(container.innerHTML = html),
setScopedFocus(null, container, hasFocusableButton, "nearest"),
html.length
? container.classList.remove("hide")
: container.classList.add("hide"),
container.querySelector(".btnEditMetadata")),
btnEditMetadata =
(btnEditMetadata &&
btnEditMetadata.addEventListener(
"click",
onEditMetadataClick.bind(instance),
),
container.querySelector(".btnEditImages"));
btnEditMetadata &&
btnEditMetadata.addEventListener(
"click",
onEditImagesClick.bind(instance),
);
}
}
function isTrailerButtonVisible(item) {
if (
_playbackmanager.default.getSupportedCommands().includes("PlayTrailers")
) {
if (item.LocalTrailerCount) return 1;
if (item.RemoteTrailers && item.RemoteTrailers.length) return 1;
}
}
function setTrailerButtonVisibility(page, item) {
isTrailerButtonVisible(item)
? hideAll(page, "btnPlayTrailer", !0)
: hideAll(page, "btnPlayTrailer");
}
function enableTrackList(item) {
return (
!!_layoutmanager.default.tv &&
("Playlist" === item.Type ||
("MusicAlbum" === item.Type && !item.SupportsResume))
);
}
function enableItemBackdropAsTopImage(item) {
return (
"Playlist" !== item.Type &&
"MusicAlbum" !== item.Type &&
"TvChannel" !== item.Type &&
"Audio" !== item.Type
);
}
function hideAll(page, className, show) {
for (
var elems =
"string" == typeof className
? page.querySelectorAll("." + className)
: className,
i = 0,
length = elems.length;
i < length;
i++
)
show ? elems[i].classList.remove("hide") : elems[i].classList.add("hide");
}
function getCommandOptions(view, item, user, button) {
(view = view.querySelector(".selectSource")),
(item = {
items: [item],
open: !1,
play: !1,
playFromBeginning: !0,
playAllFromHere: !1,
positionTo: button,
cancelTimer: !1,
record: !1,
deleteItem: !0,
shuffle: !0,
instantMix: !0,
user: user,
share: !0,
mediaSourceId: (view && view.value) || null,
positionY: "center",
positionX: "right",
transformOrigin: "left top",
played: !1,
favorites: !1,
navigateOnDelete: "back",
showSeries: !!_layoutmanager.default.tv,
showSeason: !0,
});
return (
_servicelocator.appHost.supports("sync") && (item.syncLocal = !1), item
);
}
function renderMediaInfo(instance, view, item, mediaSources) {
var hasFocusElements,
mediaSourceId = view.querySelector(".selectSource").value,
mediaSources = mediaSources.filter(function (m) {
return m.Id === mediaSourceId;
})[0],
mediaInfoElem = view.querySelector(".mediaInfoPrimary");
"Season" === item.Type || "SeriesTimer" === item.Type
? (mediaInfoElem.classList.add("hide"),
mediaInfoElem.classList.remove("focuscontainer-x"))
: (_mediainfo.default.fillPrimaryMediaInfo(mediaInfoElem, item, {
interactive: !0,
episodeTitle: !1,
subtitles: !1,
dateAdded: !1,
genres: !0,
context: inferContext(item),
endsAt: !0,
endsAtClass: "detailEndsAt",
bitrate: "Audio" === item.MediaType,
runtime: "Timer" !== item.Type,
mediaSource: mediaSources,
}),
(hasFocusElements = null != mediaInfoElem.querySelector("a,button")),
setScopedFocus(null, mediaInfoElem, hasFocusElements, "nearest"),
hasFocusElements
? mediaInfoElem.classList.add("focuscontainer-x")
: mediaInfoElem.classList.remove("focuscontainer-x")),
enableItemBackdropAsTopImage(item)
? mediaInfoElem.classList.remove("mediaInfo-centered", "secondaryText")
: mediaInfoElem.classList.add("mediaInfo-centered", "secondaryText"),
(mediaInfoElem = view.querySelector(".mediaInfoSecondary")),
_mediainfo.default.fillSecondaryMediaInfo(mediaInfoElem, item, {
interactive: !0,
mediaSource: mediaSources,
}),
(hasFocusElements = null != mediaInfoElem.querySelector("a,button")),
setScopedFocus(null, mediaInfoElem, hasFocusElements, "nearest"),
hasFocusElements
? mediaInfoElem.classList.add("focuscontainer-x")
: mediaInfoElem.classList.remove("focuscontainer-x"),
mediaInfoElem.innerHTML.trim()
? mediaInfoElem.classList.remove("hide")
: mediaInfoElem.classList.add("hide");
}
function renderDetails(instance, view, item, apiClient, user) {
var promises = [],
overviewElem = view.querySelector(".overview-container"),
overviewTextElem = overviewElem.querySelector(".overview-text"),
itemForDetails =
(enableTrackList(item)
? overviewTextElem.classList.add("overview-text-tracklist")
: overviewTextElem.classList.remove("overview-text-tracklist"),
("Timer" === item.Type && item.ProgramInfo) || item),
overview = itemForDetails.Overview;
overview
? ((function (elem, overview) {
var scrollHeight,
textButton,
textElement = elem.querySelector(".overview-text"),
btnReadMore = elem.querySelector(".btnReadMore");
(btnReadMore.innerHTML = _globalize.default.translate("More")),
overview
? ((textElement.innerHTML = overview),
elem.classList.remove("hide"),
(overview = textElement.offsetHeight),
(scrollHeight = textElement.scrollHeight),
(textButton = textElement.closest("button")),
overview && scrollHeight && overview < scrollHeight
? (_layoutmanager.default.tv
? (textButton.removeAttribute("disabled"),
btnReadMore.classList.add("hide"))
: (textButton.setAttribute("disabled", "disabled"),
btnReadMore.classList.remove("hide")),
setScopedFocus(null, elem, !0))
: (textButton.setAttribute("disabled", "disabled"),
btnReadMore.classList.add("hide"),
setScopedFocus(null, elem, !1)))
: (elem.classList.add("hide"), (textElement.innerHTML = ""));
})(overviewElem, overview ? _dom.default.stripScripts(overview) : ""),
"MusicAlbum" === itemForDetails.Type ||
"Playlist" === itemForDetails.Type
? overviewTextElem.classList.add("overview-twoline")
: overviewTextElem.classList.remove("overview-twoline"))
: overviewElem.classList.add("hide"),
(function (view, item) {
var directors = (item.People || []).filter(function (p) {
return "Director" === p.Type;
}),
html = directors
.map(function (p) {
return _layoutmanager.default.tv
? "
" +
_textencoding.default.htmlEncode(p.Name) +
""
: '
' +
_textencoding.default.htmlEncode(p.Name) +
"";
})
.join(", "),
elem = view.querySelector(".directors");
(elem.innerHTML =
1 < directors.length
? _globalize.default.translate("DirectorsValue", html)
: _globalize.default.translate("DirectorValue", html)),
setScopedFocus(
view,
elem,
directors.length && !_layoutmanager.default.tv,
"nearest",
),
directors.length
? elem.classList.remove("hide")
: elem.classList.add("hide");
})(view, itemForDetails),
reloadPlayButtons(instance, view, item),
(function (page, item) {
for (
var btnPlaystates = page.querySelectorAll(".btnPlaystate"),
i = 0,
length = btnPlaystates.length;
i < length;
i++
) {
var btnPlaystate = btnPlaystates[i];
_itemmanager.default.canMarkPlayed(item)
? (btnPlaystate.classList.remove("hide"),
btnPlaystate.setItem(item))
: (btnPlaystate.classList.add("hide"), btnPlaystate.setItem(null));
}
var btnUserRatings = page.querySelectorAll(".btnUserRating");
for (i = 0, length = btnUserRatings.length; i < length; i++) {
var btnUserRating = btnUserRatings[i];
_itemmanager.default.canRate(item)
? (btnUserRating.classList.remove("hide"),
btnUserRating.setItem(item))
: (btnUserRating.classList.add("hide"),
btnUserRating.setItem(null));
}
})(view, item),
setTrailerButtonVisibility(view, item),
"TvChannel" === item.Type
? hideAll(view, "btnManualRecording", !0)
: hideAll(view, "btnManualRecording"),
item.CanDelete && !item.IsFolder && "MusicArtist" !== item.Type
? hideAll(view, "btnDeleteItem", !0)
: hideAll(view, "btnDeleteItem"),
promises.push(
(function (instance, page, item, user) {
if (instance.currentRecordingFields)
return (
instance.currentRecordingFields.refresh(item), Promise.resolve()
);
return "Program" === item.Type && user.Policy.EnableLiveTvManagement
? require(["recordingFields"]).then(function (responses) {
var responses = responses[0],
recordingFieldsElement =
page.querySelector(".mainDetailButtons");
(instance.currentRecordingFields = new responses({
parent: recordingFieldsElement,
program: item,
})),
_events.default.on(
instance.currentRecordingFields,
"recordingchanged",
onRecordingChanged.bind(instance),
),
_events.default.on(
instance.currentRecordingFields,
"seriesrecordingchanged",
onRecordingChanged.bind(instance),
);
})
: Promise.resolve();
})(instance, view, item, user),
);
_itemmanager.default.getCommands(getCommandOptions(view, item, user)).length
? hideAll(view, "btnMoreCommands", !0)
: hideAll(view, "btnMoreCommands"),
"Playlist" === item.Type ||
("BoxSet" === item.Type && apiClient.isMinServerVersion("4.8.0.16"))
? hideAll(view, "btnSortItems", !0)
: hideAll(view, "btnSortItems"),
enableItemBackdropAsTopImage(itemForDetails)
? view
.querySelector(".detailTextContainerInner")
.classList.remove("detailTextContainerInner-centered")
: view
.querySelector(".detailTextContainerInner")
.classList.add("detailTextContainerInner-centered"),
enableTvDetailImageLayout(item)
? view
.querySelector(".detailTextContainer")
.classList.add("detailTextContainer-extrapadding")
: view
.querySelector(".detailTextContainer")
.classList.remove("detailTextContainer-extrapadding");
overview = view.querySelector(".tagline");
return (
itemForDetails.Taglines && itemForDetails.Taglines.length
? (overview.classList.remove("hide"),
(overview.innerHTML = _dom.default.stripScripts(
itemForDetails.Taglines[0],
)))
: overview.classList.add("hide"),
"Person" === itemForDetails.Type &&
((overviewTextElem = view.querySelector(".birthDate")),
itemForDetails.PremiereDate
? ((overviewElem = _datetime.default.toLocaleDateString(
new Date(Date.parse(itemForDetails.PremiereDate)),
{ year: "numeric", month: "long", day: "numeric" },
)),
(overviewElem =
itemForDetails.ProductionLocations &&
itemForDetails.ProductionLocations.length
? _globalize.default.translate(
"BornValueWithPlace",
overviewElem,
itemForDetails.ProductionLocations[0],
)
: _globalize.default.translate("BornValue", overviewElem)),
(overviewTextElem.innerHTML = overviewElem),
overviewTextElem.classList.remove("hide"))
: overviewTextElem.classList.add("hide"),
(instance = view.querySelector(".deathDate")),
itemForDetails.EndDate
? ((user = _datetime.default.toLocaleDateString(
new Date(Date.parse(itemForDetails.EndDate)),
{ year: "numeric", month: "long", day: "numeric" },
)),
(user = _globalize.default.translate("DiedValue", user)),
(instance.innerHTML = user),
instance.classList.remove("hide"))
: instance.classList.add("hide")),
(function (page, item) {
for (
var itemTags = page.querySelector(".itemTags"),
tagElements = [],
tags = item.TagItems || [],
i = 0,
length = tags.length;
i < length;
i++
) {
var href = _approuter.default.getRouteUrl(
{
Name: tags[i].Name,
Type: "Tag",
ServerId: item.ServerId,
Id: tags[i].Id,
},
{
itemTypes:
"Person" === item.Type || "MusicArtist" === item.Type
? item.Type
: null,
},
);
tagElements.push(
'
' +
_textencoding.default.htmlEncode(tags[i].Name) +
"",
);
}
(itemTags.innerHTML = tagElements.join("")),
tagElements.length
? page.querySelector(".tagsSection").classList.remove("hide")
: page.querySelector(".tagsSection").classList.add("hide");
})(view, item),
Promise.all(promises)
);
}
function onRecordingChanged() {
reloadItem(this, !0);
}
function renderPeopleItems(view, item, apiClient) {
view = view.querySelector(".peopleItems");
if ("Person" !== item.Type && "MusicArtist" !== item.Type)
view.classList.add("hide");
else {
view.classList.remove("hide");
for (
var sections = [],
sectionElems =
("Person" === item.Type
? (sections.push({
name: _globalize.default.translate("HeaderUpcomingOnTV"),
type: "Program",
}),
sections.push({
name: _globalize.default.translate("Movies"),
type: "Movie",
}),
sections.push({
name: _globalize.default.translate("Shows"),
type: "Series",
}),
sections.push({
name: _globalize.default.translate("Episodes"),
type: "Episode",
}),
sections.push({
name: _globalize.default.translate("Trailers"),
type: "Trailer",
}),
sections.push({
name: _globalize.default.translate("HeaderMusicVideos"),
type: "MusicVideo",
}),
sections.push({
name: _globalize.default.translate("Videos"),
type: "Video",
}))
: "MusicArtist" === item.Type &&
sections.push({
name: _globalize.default.translate("HeaderMusicVideos"),
type: "MusicVideo",
}),
(view.innerHTML = sections
.map(function (section) {
var html = "";
return (
(html +=
'
" +
"
"
);
})
.join("")),
view.querySelectorAll(".personSection")),
i = 0,
length = sectionElems.length;
i < length;
i++
)
!(function (item, element, type, apiClient) {
switch (type) {
case "Program":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "Program",
Limit: 12,
SortBy: "StartDate",
Fields: "PrimaryImageAspectRatio",
},
{
shape: "autooverflow",
fields: ["Name", "ChannelName", "AirTime"],
centerText: !0,
preferThumb: !0,
overlayText: !1,
showAirDateTime: !0,
},
apiClient,
);
break;
case "Movie":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "Movie",
Limit: 12,
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio",
},
{
shape: "autooverflow",
fields: ["Name", "ProductionYear"],
centerText: !0,
overlayText: !1,
},
apiClient,
);
break;
case "Video":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "Video",
Limit: 12,
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio",
},
{
shape: "autooverflow",
fields: ["Name", "ProductionYear"],
centerText: !0,
overlayText: !1,
},
apiClient,
);
break;
case "MusicVideo":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "MusicVideo",
Limit: 12,
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio",
},
{
shape: "autooverflow",
fields: ["Name", "ProductionYear"],
centerText: !0,
overlayPlayButton: !0,
},
apiClient,
);
break;
case "Game":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "Game",
Limit: 12,
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio",
},
{ shape: "autooverflow", fields: ["Name"], centerText: !0 },
apiClient,
);
break;
case "Trailer":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "Trailer",
Limit: 12,
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio",
},
{
shape: "autooverflow",
fields: ["Name"],
centerText: !0,
overlayPlayButton: !0,
},
apiClient,
);
break;
case "Series":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "Series",
Limit: 12,
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio",
},
{ shape: "autooverflow", fields: ["Name"], centerText: !0 },
apiClient,
);
break;
case "MusicAlbum":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "MusicAlbum",
Limit: 12,
SortBy: "ProductionYear,SortName",
SortOrder: "Descending,Ascending",
Fields: "ProductionYear,PrimaryImageAspectRatio",
},
{
shape: "autooverflow",
playFromHere: !0,
fields: ["Name", "ProductionYear"],
centerText: !0,
overlayPlayButton: !0,
},
apiClient,
);
break;
case "MusicArtist":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "MusicArtist",
Limit: 8,
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio",
},
{
shape: "autooverflow",
playFromHere: !0,
fields: ["Name"],
centerText: !0,
overlayPlayButton: !0,
},
apiClient,
);
break;
case "Episode":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "Episode",
Limit: 6,
SortBy:
"SeriesSortName,ParentIndexNumber,IndexNumber,SortName",
Fields: "PrimaryImageAspectRatio",
},
{
shape: "autooverflow",
fields: ["ParentName", "Name"],
centerText: !0,
overlayPlayButton: !0,
},
apiClient,
);
break;
case "Audio":
loadPeopleItems(
element,
item,
0,
{
IncludeItemTypes: "Audio",
SortBy: "AlbumArtist,Album,SortName",
Fields: "PrimaryImageAspectRatio",
},
{
playFromHere: !0,
fields: ["Name", "ParentName"],
action: "playallfromhere",
smallIcon: !0,
},
apiClient,
);
}
})(
item,
sectionElems[i],
sectionElems[i].getAttribute("data-type"),
apiClient,
);
}
}
function loadPeopleItems(element, item, type, query, listOptions, apiClient) {
(query.SortOrder = "Ascending"),
(query.Recursive = !0),
(query.CollapseBoxSetItems = !1),
(query.Fields = "PrimaryImageAspectRatio,ProductionYear"),
"Person" === item.Type
? (query.PersonIds = item.Id)
: "MusicArtist" === item.Type && (query.ArtistIds = item.Id),
(query.ImageTypeLimit = 1),
(query.EnableTotalRecordCount = !1),
apiClient
.getItems(apiClient.getCurrentUserId(), query)
.then(function (result) {
_cardbuilder.default.buildCards(result.Items, {
parentContainer: element,
itemsContainer: element.querySelector(".itemsContainer"),
shape: listOptions.shape,
fields: listOptions.fields,
overlayText: !1,
centerText: !0,
});
});
}
function onTrackSelectionsSubmit(e) {
return e.preventDefault(), !1;
}
function bindAll(view, selector, eventName, fn) {
for (
var elems = view.querySelectorAll(selector), i = 0, length = elems.length;
i < length;
i++
)
elems[i].addEventListener(eventName, fn);
}
function executeCommandWithCommandProcessor(command, item, options) {
require(["commandProcessor"]).then(function (responses) {
return responses[0].executeCommand(command, [item], options);
});
}
function onDataFetched(responses) {
var itemInfo = responses[0],
item = itemInfo.item,
itemInfo = itemInfo.mediaSources,
user = responses[1],
responses = _connectionmanager.default.getApiClient(item.ServerId),
view = this.view,
itemMainScrollSlider =
(("Person" === item.Type && _backdrop.default.hasBackdrop()) ||
_backdrop.default.setBackdrops([item], {
enableAnimation: !0,
enablePrimaryImageBeforeInherited:
enableTvDetailImageLayout(item) &&
"Season" !== item.Type &&
"Episode" !== item.Type,
allowPrimaryImage: enableTvDetailImageLayout(item),
}),
this.updateDrawerState(),
view.querySelector(".itemMainScrollSlider")),
detailMainContainerParent = view.querySelector(
".detailMainContainerParent",
),
itemMainScrollSlider =
(_backdrop.default.hasBackdrop()
? (_layoutmanager.default.tv
? view.classList.add(
"darkContentContainer-tv",
"darkContentContainer-item",
)
: view.classList.add("darkContentContainer-item"),
enableTvDetailImageLayout(item)
? (itemMainScrollSlider.classList.add(
"itemMainScrollSlider-fade",
),
detailMainContainerParent.classList.add(
"detailMainContainerParent-fade",
),
backgroundContainer.classList.add(
"itemBackgroundContainer-brighter",
))
: (itemMainScrollSlider.classList.remove(
"itemMainScrollSlider-fade",
),
detailMainContainerParent.classList.remove(
"detailMainContainerParent-fade",
),
backgroundContainer.classList.remove(
"itemBackgroundContainer-brighter",
)),
enableItemBackdropAsTopImage(item)
? (backdropContainer.classList.add(
"backdropContainer-preventbackdrop",
),
backgroundContainer.classList.add(
"itemBackgroundContainer",
"itemBackgroundContainer-preventbackdrop",
))
: (backdropContainer.classList.remove(
"backdropContainer-preventbackdrop",
),
backgroundContainer.classList.add("itemBackgroundContainer"),
backgroundContainer.classList.remove(
"itemBackgroundContainer-preventbackdrop",
)))
: (view.classList.remove(
"darkContentContainer-item",
"darkContentContainer-tv",
),
itemMainScrollSlider.classList.remove("itemMainScrollSlider-fade"),
detailMainContainerParent.classList.remove(
"detailMainContainerParent-fade",
),
backgroundContainer.classList.remove(
"itemBackgroundContainer-brighter",
"itemBackgroundContainer",
"itemBackgroundContainer-preventbackdrop",
),
backdropContainer.classList.remove(
"backdropContainer-preventbackdrop",
)),
(this.currentItem = item),
[]),
detailMainContainerParent =
(this.sectionsInitialized ||
((this.sectionsInitialized = !0),
(function (instance, view, item) {
var section;
"Episode" === item.Type &&
((view = view.querySelector(".moreFromSeasonItemsContainer")),
((section = view.closest(".verticalSection")).querySelector(
"h2",
).innerHTML = _globalize.default.translate(
"MoreFromValue",
item.SeasonName,
)),
(view.fetchData = function (query) {
var apiClient,
item = this.currentItem;
return item.SeasonId && item.SeriesId
? ((apiClient =
_connectionmanager.default.getApiClient(item)),
(query = Object.assign(
{
SeasonId: item.SeasonId,
UserId: apiClient.getCurrentUserId(),
Fields:
this.getRequestedItemFields() +
",PrimaryImageAspectRatio",
},
query,
)),
apiClient
.getEpisodes(item.SeriesId, query)
.then(function (result) {
return !query.StartIndex && result.Items.length < 2
? Promise.resolve({ TotalRecordCount: 0, Items: [] })
: result;
}))
: Promise.resolve({ TotalRecordCount: 0, Items: [] });
}.bind(instance)),
(view.parentContainer = section),
(view.getListOptions = getMoreFromSeasonListOptions),
(view.afterRefresh = function (totalResult) {
if (totalResult.Items.length) {
var item = this.currentItem;
if (item) {
var view = this.view;
if (view) {
var itemsContainer = view.querySelector(
".moreFromSeasonItemsContainer",
);
if (itemsContainer) {
var query,
index = itemsContainer.indexOfItemId(item.Id);
if (-1 === index)
return (
(view =
_connectionmanager.default.getApiClient(item)),
(query = {
SeasonId: item.SeasonId,
UserId: view.getCurrentUserId(),
Fields:
this.getRequestedItemFields() +
",PrimaryImageAspectRatio",
Limit: 0,
StartItemId: item.Id,
}),
view
.getEpisodes(item.SeriesId, query)
.then(function (result) {
(index = Math.max(
totalResult.TotalRecordCount -
result.TotalRecordCount,
0,
)),
itemsContainer.scrollToIndex(
Math.min(
index + 1,
totalResult.TotalRecordCount - 1,
),
{
behavior: "instant",
offset: "-padding-inline-start",
},
!1,
);
})
);
itemsContainer.scrollToIndex(
Math.min(index + 1, totalResult.TotalRecordCount - 1),
{
behavior: "instant",
offset: "-padding-inline-start",
},
!1,
);
}
}
}
}
}.bind(instance)),
view.classList.add("generalItemsContainer"));
})(this, view, item),
(function (instance, view, item) {
var section;
("MusicArtist" !== item.Type && "MusicAlbum" !== item.Type) ||
((view = view.querySelector(".moreFromArtistItemsContainer")),
(section = view.closest(".verticalSection")),
"MusicArtist" === item.Type
? (section.querySelector(".sectionTitle").innerHTML =
_globalize.default.translate("HeaderAppearsOn"))
: (section.querySelector(".sectionTitle").innerHTML =
_globalize.default.translate(
"MoreFromValue",
_textencoding.default.htmlEncode(
item.AlbumArtists[0].Name,
),
)),
(view.fetchData = function (query) {
var item = this.currentItem;
if (
"MusicAlbum" === item.Type &&
!item.AlbumArtists &&
!item.AlbumArtists.length
)
return Promise.resolve({ TotalRecordCount: 0, Items: [] });
query = Object.assign(
{
IncludeItemTypes: "MusicAlbum",
Recursive: !0,
SortBy: "ProductionYear,SortName",
SortOrder: "Descending",
Fields:
this.getRequestedItemFields() +
",PrimaryImageAspectRatio,ProductionYear",
},
query,
);
var apiClient = _connectionmanager.default.getApiClient(item);
"MusicArtist" === item.Type
? (query.ContributingArtistIds = item.Id)
: ((query.AlbumArtistIds = item.AlbumArtists[0].Id),
(query.ExcludeItemIds = item.Id));
return apiClient.getItems(apiClient.getCurrentUserId(), query);
}.bind(instance)),
(view.parentContainer = section),
(view.getListOptions = getMoreFromArtistListOptions),
view.classList.add("generalItemsContainer"));
})(this, view, item),
itemMainScrollSlider.push(
(function (instance, item) {
var section = instance.view.querySelector(".seriesItemsSection");
return "Series" === item.Type
? getSeasons
.call(instance, {
EnableUserData: !1,
EnableTotalRecordCount: !1,
EnableImages: !1,
})
.then(function (result) {
instance.seasonItems = result.Items;
item.Type;
setScopedFocus(
instance.view,
section.querySelector(".focusable"),
!0,
"nearest",
);
var itemsContainer =
section.querySelector(".itemsContainer"),
seriesDisplay =
((itemsContainer.parentContainer = section),
_usersettings.default.seriesDisplay()),
hasMultipleSeasons =
(_apiclient.default.isLocalItem(item) &&
(seriesDisplay = ""),
2 <= result.Items.length),
seriesDisplay = (instance.renderAllEpisodes =
"episodes" === seriesDisplay ||
("episodessingleseason" === seriesDisplay &&
!hasMultipleSeasons)),
renderSeasonsWithTabs =
seriesDisplay &&
hasMultipleSeasons &&
_layoutmanager.default.tv,
sectionTitleElement =
section.querySelector(".sectionTitle"),
sectionTitleElement =
((sectionTitleElement.innerHTML = seriesDisplay
? 1 === result.Items.length
? result.Items[0].Name
: _globalize.default.translate("Episodes")
: _globalize.default.translate("Seasons")),
seriesDisplay && hasMultipleSeasons
? sectionTitleElement.classList.add("hide")
: sectionTitleElement.classList.remove("hide"),
section.querySelector(".detailSelectSeason")),
detailSelectSeasonContainer = section.querySelector(
".detailSelectSeasonContainer",
),
hasMultipleSeasons =
(seriesDisplay &&
hasMultipleSeasons &&
!renderSeasonsWithTabs
? detailSelectSeasonContainer.classList.remove(
"hide",
)
: detailSelectSeasonContainer.classList.add("hide"),
section.querySelector(".seasonTabs"));
seriesDisplay
? (itemsContainer.classList.add(
"allEpisodesItemsContainer",
),
renderSeasonsWithTabs
? ((function (seasonTabsParent, items) {
var index;
items.length
? ((index = 0),
(items =
'