+
-
-
-
-
${HeaderAdditionalParts}
-
-
diff --git a/modules/actionsheet/actionsheet.js b/modules/actionsheet/actionsheet.js
index dc6d247..691b9f1 100644
--- a/modules/actionsheet/actionsheet.js
+++ b/modules/actionsheet/actionsheet.js
@@ -1 +1,815 @@
-define(["exports","./../emby-apiclient/connectionmanager.js","./../dom.js","./../common/globalize.js","./../layoutmanager.js","./../common/itemmanager/itemmanager.js","./../imageloader/imageloader.js","./../dialoghelper/dialoghelper.js","./../emby-elements/emby-button/emby-button.js","./../emby-elements/emby-scroller/emby-scroller.js","./../emby-elements/emby-itemscontainer/emby-itemscontainer.js","./../approuter.js","./../focusmanager.js","./../listview/listview.js","./../shortcuts.js","./../browser.js","./../common/textencoding.js"],function(_exports,_connectionmanager,_dom,_globalize,_layoutmanager,_itemmanager,_imageloader,_dialoghelper,_embyButton,_embyScroller,_embyItemscontainer,_approuter,_focusmanager,_listview,_shortcuts,_browser,_textencoding){function onCancelClick(e){_dialoghelper.default.close(this.closest(".actionSheet"))}function getTextLinkButton(item){var href=_approuter.default.getRouteUrl(item);return'
'+_textencoding.default.htmlEncode(item.Name)+""}function onItemsContainerUpgraded(){return this.querySelector(".itemsContainer").resume({refresh:!0})}function refreshItemsContainer(){var itemsContainer=this.querySelector(".itemsContainer");return itemsContainer.resume?onItemsContainerUpgraded.call(this):function(instance,itemsContainer){return new Promise(function(resolve,reject){_dom.default.addEventListener(itemsContainer,"upgraded",function(){onItemsContainerUpgraded.call(instance).then(resolve,reject)},{once:!0})})}(this,itemsContainer)}function getListViewItemFromInputItem(option,options){var isSelected,item={Name:option.Name||option.name||option.textContent||option.innerText,ServerId:option.ServerId||null,MediaType:option.MediaType||null,IsFolder:option.IsFolder,Type:option.Type,Overview:option.Overview,PrimaryImageAspectRatio:option.PrimaryImageAspectRatio,RunTimeTicks:option.RunTimeTicks,IndexNumber:option.IndexNumber,IndexNumberEnd:option.IndexNumberEnd,SupportsResume:option.SupportsResume,ParentIndexNumber:option.ParentIndexNumber,ProductionYear:option.ProductionYear,PremiereDate:option.PremiereDate,SeriesName:option.SeriesName,NameSubtitle:option.nameSubtitle,Artists:option.Artists,ArtistItems:option.ArtistItems,AlbumArtists:option.AlbumArtists,Composers:option.Composers,AlbumArtist:option.AlbumArtist,Album:option.Album,AlbumId:option.AlbumId,SeriesId:option.SeriesId,SeasonId:option.SeasonId,SeasonName:option.SeasonName,ImageTags:option.ImageTags,BackdropImageTags:option.BackdropImageTags,PrimaryImageTag:option.PrimaryImageTag,AlbumPrimaryImageTag:option.AlbumPrimaryImageTag,SeriesPrimaryImageTag:option.SeriesPrimaryImageTag,ParentThumbItemId:option.ParentThumbItemId,ParentThumbImageTag:option.ParentThumbImageTag,ParentLogoItemId:option.ParentLogoItemId,ParentLogoImageTag:option.ParentLogoImageTag,ParentBackdropItemId:option.ParentBackdropItemId,ParentBackdropImageTags:option.ParentBackdropImageTags,hasDivider:option.dividerAfter};return options.idProperty&&null!=option[options.idProperty]?item.Id=option[options.idProperty]:null!=option.Id?item.Id=option.Id:null!=option.id&&""!==option.id?item.Id=option.id:null!=option.value?item.Id=option.value:item.Id=option.Name||option.name,options.multiple?(isSelected=options.emptyValueSetEqualsAll&&!options.selectedValuesClone.length||options.selectedValuesClone.includes(item.Id),item.Selected=isSelected):item.Selected=option.selected||option.Selected||options.selectedValuesClone.includes(item.Id),item.Icon=option.icon||option.Icon||(item.Selected&&options.hasItemSelectionState?"":null),item.iconClass=option.iconClass,item.asideText=option.asideText,item.asideIcon=option.asideIcon,item.ShortOverview=option.secondaryText||option.title,item.hideWithFinePointer=option.hideWithFinePointer,item}function getItemsFn(options){return function(query){if(query=query||{},options.getItems)return function(options,query){return options.getItems(query).then(function(result){for(var items=result.Items,i=0,length=items.length;i
query.length&&(items.length=Math.min(items.length,query.length)),Promise.resolve({Items:items,TotalRecordCount:totalRecordCount})}}function getListOptions(){return{renderer:_listview.default,options:function(options){var listItemBodyClass,iconClass,asideTextClass,menuItemClass="actionSheetMenuItem",fields=(options.menuItemClass&&(menuItemClass+=" "+options.menuItemClass),options.iconRight&&(menuItemClass+=" actionSheetMenuItem-iconright"),options.multiple?listItemBodyClass="actionsheetListItemBody-multiple":(_layoutmanager.default.tv&&(menuItemClass+=" actionSheetMenuItem-tv"),options.hasItemIcon||options.hasItemSelectionState||(menuItemClass+=" actionSheetMenuItem-noicon"),listItemBodyClass="actionsheetListItemBody",options.iconRight&&(listItemBodyClass+=" actionsheetListItemBody-iconright"),iconClass="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent md-icon",asideTextClass="actionSheetItemAsideText"),options.fields),overviewLines=2,fields=(fields||(fields=["Name"],options.showNameSubtitle&&fields.push("NameSubtitle"),options.multiple||fields.push("ShortOverview"),options.showOverview&&(fields.push("Overview"),overviewLines=3)),options.multiple&&fields.unshift("ItemCheckbox"),{action:options.multiple?"togglecheckbox":"custom",fields:fields,draggable:!1,multiSelect:!1,contextMenu:!1,hoverPlayButton:!1,itemClass:menuItemClass,listItemBodyClassName:listItemBodyClass,iconClass:iconClass,listItemBodyTextClass:"actionSheetItemText",fillEmptyTextlines:!1,enableDefaultIcon:!0===options.enableDefaultIcon,highlight:options.highlight,border:options.border,artist:options.artist,asideTextClass:asideTextClass,asideIconClass:((asideTextClass||"")+" actionSheetItemAsideIcon").trim(),image:!options.multiple&&(!0===options.hasItemIcon||!0===options.hasItemImage||!0===options.hasItemSelectionState),checkboxAction:"toggleitemselected",enableUserDataButtons:!1,moreButton:!1,mediaInfo:!1,textLinks:!1,enableSideMediaInfo:!1,overviewLines:overviewLines,iconSpacing:!0}),menuItemClass="actionSheetItemImageContainer";return options.useListViewSizing||(menuItemClass+=" actionSheetItemImageContainer-customsize",!1!==options.useCustomImageContainerWidth&&(menuItemClass+=" actionSheetItemImageContainer-customwidth")),(options.hasItemSelectionState||options.hasItemIcon)&&(menuItemClass+=" actionSheetItemImageContainer-transparent"),fields.imageContainerClass=menuItemClass,fields}(this),virtualScrollLayout:"vertical-list"}}function callUpdateElement(itemsContainer,options){for(var items=itemsContainer.querySelectorAll(itemsContainer.getItemSelector()),i=0,length=items.length;i':useVirtualScroller&&(dialogOptions+='');(!options.title||options.hasItemIcon||options.hasItemImage||options.hasItemSelectionState)&&!isFullscreen||dlg.classList.add("actionsheet-centered");for(var selectNoneText,previewHtml="",headerClass=(options.item&&(previewHtml=function(options,item){var html="",apiClient=(html+='',_connectionmanager.default.getApiClient(item)),imageUrl=(imageUrlInfo=_imageloader.default.getImageUrl(item,apiClient,{height:60,width:200})).imgUrl,imgClass="",round="MusicArtist"===item.Type,html=imageUrl?(imageUrlInfo=imageUrlInfo.aspect||1,imgClass=(imgClass+=" actionsheetItemPreviewImage-bg")+" actionsheetItemPreviewImage-bg-"+(shape=_imageloader.default.getShapeFromAspect(imageUrlInfo)),round&&"square"===shape&&(imgClass+=" actionsheetItemPreviewImage-round"),html+('
'):(imgClass+=" actionsheetItemPreviewImage-iconcontainer",round&&(imgClass+=" actionsheetItemPreviewImage-round"),(html=html+('
')+_itemmanager.default.getDefaultIcon(item)+"
"),lines=(html+='
',[]),shape=(item.SeriesName?item.SeriesId?lines.push(getTextLinkButton({Type:"Series",Id:item.SeriesId,Name:item.SeriesName,IsFolder:!0,ServerId:item.ServerId})):lines.push(_textencoding.default.htmlEncode(item.SeriesName||"")):"Program"===item.Type&&lines.push(_textencoding.default.htmlEncode(item.Name||"")),_textencoding.default.htmlEncode(_itemmanager.default.getDisplayName(item,{})||"")),imageUrlInfo='
'+shape+"
",round=("Audio"!==item.MediaType||_layoutmanager.default.tv||!1===options.linkToItem||(imageUrlInfo+='
'),lines.push(imageUrlInfo),"Server"===item.Type&&(apiClient&&apiClient.serverVersion()&&lines.push(apiClient.serverVersion()),apiClient)&&apiClient.serverAddress()&&lines.push(apiClient.serverAddress()),"User"===item.Type&&options.showServerName&&(imageUrl=apiClient.serverName())&&lines.push(_textencoding.default.htmlEncode(imageUrl)),item.IsFolder&&item.AlbumArtists&&item.AlbumArtists.length?lines.push(getTextLinkButton({Type:"MusicArtist",Id:item.AlbumArtists[0].Id,Name:item.AlbumArtists[0].Name,ServerId:item.ServerId})):item.ArtistItems&&item.ArtistItems.length?lines.push(getTextLinkButton({Type:"MusicArtist",Id:item.ArtistItems[0].Id,Name:item.ArtistItems[0].Name,ServerId:item.ServerId})):item.AlbumArtists&&item.AlbumArtists.length&&lines.push(getTextLinkButton({Type:"MusicArtist",Id:item.AlbumArtists[0].Id,Name:item.AlbumArtists[0].Name,ServerId:item.ServerId})),[]);item.Album&&item.AlbumId?round.push(getTextLinkButton({Type:"Photo"===item.MediaType?"PhotoAlbum":"MusicAlbum",Id:item.AlbumId,Name:item.Album,ServerId:item.ServerId})):item.Album&&round.push('
'+_textencoding.default.htmlEncode(item.Album)+"
"),item.ProductionYear&&"Episode"!==item.Type&&round.push('
'+item.ProductionYear+"
"),round.length&&lines.push(round.join(""));for(var i=0,length=Math.min(lines.length,3);i
')+lines[i]+"":(html+='
')+lines[i]+"
";return html=html+"
"+""}(options,options.item)),_layoutmanager.default.tv||(dialogOptions+=previewHtml),options.title&&(headerClass="actionSheetTitle",options.hideTitleWhenNotFullscreen&&!isFullscreen&&(headerClass+=" actionSheetTitle-hideNonFullscreen"),dialogOptions=(dialogOptions+='"),options.text&&(dialogOptions=(dialogOptions+='
')+options.text+"
"),"actionSheetScroller focuscontainer-x"),scrollSliderClass=(isFullscreen?(headerClass+=" actionSheetScroller-fullscreen",useVirtualScroller&&(headerClass+=" actionSheetScroller-fullscreen-virtual")):(useVirtualScroller&&(headerClass+=" flex-grow"),options.paddedScroller&&(headerClass+=" actionSheetScroller-padded")),_layoutmanager.default.tv&&(headerClass+=" actionSheetScroller-focusscale"),(options.title||options.text)&&(headerClass+=" actionSheetScroller-withheader")," actionsheetScrollSlider scrollSlider flex flex-direction-column itemsContainer"),isFullscreen=(isFullscreen||options.multiple&&!useVirtualScroller||!1!==options.highlight||options.paddedScroller||(useVirtualScroller?headerClass+=" actionsheetScrollSlider-bottompadded":scrollSliderClass+=" actionsheetScrollSlider-bottompadded"),options.multiple&&(scrollSliderClass+=" actionsheet-scrollSlider-multiple",_layoutmanager.default.tv)&&(scrollSliderClass+=" actionsheet-scrollSlider-multiple-tv"),""),btnCloseActionSheets=(useVirtualScroller&&(isFullscreen+=' data-virtualscrolllayout="vertical-grid"'),dialogOptions=(dialogOptions=dialogOptions+('",options.bottomText&&(dialogOptions=(dialogOptions+='
')+options.bottomText+"
"),options.multiple&&useVirtualScroller&&(dialogOptions+='
',headerClass="btnActionSheetSelectNone",options.selectAllOnSelectNone?(selectNoneText=_globalize.default.translate("SelectAll"),headerClass+=" dlg-close"):selectNoneText=_globalize.default.translate("SelectNone"),dialogOptions=dialogOptions+'
"),dlg.innerHTML=dialogOptions,dlg.querySelectorAll(".btnCloseActionSheet")),i=0,length=btnCloseActionSheets.length;i
' +
+ _textencoding.default.htmlEncode(item.Name) +
+ ""
+ );
+ }
+ function onItemsContainerUpgraded() {
+ return this.querySelector(".itemsContainer").resume({ refresh: !0 });
+ }
+ function refreshItemsContainer() {
+ var itemsContainer = this.querySelector(".itemsContainer");
+ return itemsContainer.resume
+ ? onItemsContainerUpgraded.call(this)
+ : (function (instance, itemsContainer) {
+ return new Promise(function (resolve, reject) {
+ _dom.default.addEventListener(
+ itemsContainer,
+ "upgraded",
+ function () {
+ onItemsContainerUpgraded.call(instance).then(resolve, reject);
+ },
+ { once: !0 },
+ );
+ });
+ })(this, itemsContainer);
+ }
+ function getListViewItemFromInputItem(option, options) {
+ var isSelected,
+ item = {
+ Name:
+ option.Name || option.name || option.textContent || option.innerText,
+ ServerId: option.ServerId || null,
+ MediaType: option.MediaType || null,
+ IsFolder: option.IsFolder,
+ Type: option.Type,
+ Overview: option.Overview,
+ PrimaryImageAspectRatio: option.PrimaryImageAspectRatio,
+ RunTimeTicks: option.RunTimeTicks,
+ IndexNumber: option.IndexNumber,
+ IndexNumberEnd: option.IndexNumberEnd,
+ SupportsResume: option.SupportsResume,
+ ParentIndexNumber: option.ParentIndexNumber,
+ ProductionYear: option.ProductionYear,
+ PremiereDate: option.PremiereDate,
+ SeriesName: option.SeriesName,
+ NameSubtitle: option.nameSubtitle,
+ Artists: option.Artists,
+ ArtistItems: option.ArtistItems,
+ AlbumArtists: option.AlbumArtists,
+ Composers: option.Composers,
+ AlbumArtist: option.AlbumArtist,
+ Album: option.Album,
+ AlbumId: option.AlbumId,
+ SeriesId: option.SeriesId,
+ SeasonId: option.SeasonId,
+ SeasonName: option.SeasonName,
+ ImageTags: option.ImageTags,
+ BackdropImageTags: option.BackdropImageTags,
+ PrimaryImageTag: option.PrimaryImageTag,
+ AlbumPrimaryImageTag: option.AlbumPrimaryImageTag,
+ SeriesPrimaryImageTag: option.SeriesPrimaryImageTag,
+ ParentThumbItemId: option.ParentThumbItemId,
+ ParentThumbImageTag: option.ParentThumbImageTag,
+ ParentLogoItemId: option.ParentLogoItemId,
+ ParentLogoImageTag: option.ParentLogoImageTag,
+ ParentBackdropItemId: option.ParentBackdropItemId,
+ ParentBackdropImageTags: option.ParentBackdropImageTags,
+ hasDivider: option.dividerAfter,
+ };
+ return (
+ options.idProperty && null != option[options.idProperty]
+ ? (item.Id = option[options.idProperty])
+ : null != option.Id
+ ? (item.Id = option.Id)
+ : null != option.id && "" !== option.id
+ ? (item.Id = option.id)
+ : null != option.value
+ ? (item.Id = option.value)
+ : (item.Id = option.Name || option.name),
+ options.multiple
+ ? ((isSelected =
+ (options.emptyValueSetEqualsAll &&
+ !options.selectedValuesClone.length) ||
+ options.selectedValuesClone.includes(item.Id)),
+ (item.Selected = isSelected))
+ : (item.Selected =
+ option.selected ||
+ option.Selected ||
+ options.selectedValuesClone.includes(item.Id)),
+ (item.Icon =
+ option.icon ||
+ option.Icon ||
+ (item.Selected && options.hasItemSelectionState ? "" : null)),
+ (item.iconClass = option.iconClass),
+ (item.asideText = option.asideText),
+ (item.asideIcon = option.asideIcon),
+ (item.ShortOverview = option.secondaryText || option.title),
+ (item.hideWithFinePointer = option.hideWithFinePointer),
+ item
+ );
+ }
+ function getItemsFn(options) {
+ return function (query) {
+ if (((query = query || {}), options.getItems))
+ return (function (options, query) {
+ return options.getItems(query).then(function (result) {
+ for (
+ var items = result.Items, i = 0, length = items.length;
+ i < length;
+ i++
+ )
+ items[i] = getListViewItemFromInputItem(items[i], options);
+ return result;
+ });
+ })(options, query);
+ for (
+ var inputItems = options.items || [],
+ items = [],
+ i = 0,
+ length = inputItems.length;
+ i < length;
+ i++
+ ) {
+ var item = getListViewItemFromInputItem(inputItems[i], options);
+ items.push(item);
+ }
+ var totalRecordCount = items.length,
+ items = items.slice(query.StartIndex || 0);
+ return (
+ null != query.length &&
+ items.length > query.length &&
+ (items.length = Math.min(items.length, query.length)),
+ Promise.resolve({ Items: items, TotalRecordCount: totalRecordCount })
+ );
+ };
+ }
+ function getListOptions() {
+ return {
+ renderer: _listview.default,
+ options: (function (options) {
+ var listItemBodyClass,
+ iconClass,
+ asideTextClass,
+ menuItemClass = "actionSheetMenuItem",
+ fields =
+ (options.menuItemClass &&
+ (menuItemClass += " " + options.menuItemClass),
+ options.iconRight &&
+ (menuItemClass += " actionSheetMenuItem-iconright"),
+ options.multiple
+ ? (listItemBodyClass = "actionsheetListItemBody-multiple")
+ : (_layoutmanager.default.tv &&
+ (menuItemClass += " actionSheetMenuItem-tv"),
+ options.hasItemIcon ||
+ options.hasItemSelectionState ||
+ (menuItemClass += " actionSheetMenuItem-noicon"),
+ (listItemBodyClass = "actionsheetListItemBody"),
+ options.iconRight &&
+ (listItemBodyClass += " actionsheetListItemBody-iconright"),
+ (iconClass =
+ "actionsheetMenuItemIcon listItemIcon listItemIcon-transparent md-icon"),
+ (asideTextClass = "actionSheetItemAsideText")),
+ options.fields),
+ overviewLines = 2,
+ fields =
+ (fields ||
+ ((fields = ["Name"]),
+ options.showNameSubtitle && fields.push("NameSubtitle"),
+ options.multiple || fields.push("ShortOverview"),
+ options.showOverview &&
+ (fields.push("Overview"), (overviewLines = 3))),
+ options.multiple && fields.unshift("ItemCheckbox"),
+ {
+ action: options.multiple ? "togglecheckbox" : "custom",
+ fields: fields,
+ draggable: !1,
+ multiSelect: !1,
+ contextMenu: !1,
+ hoverPlayButton: !1,
+ itemClass: menuItemClass,
+ listItemBodyClassName: listItemBodyClass,
+ iconClass: iconClass,
+ listItemBodyTextClass: "actionSheetItemText",
+ fillEmptyTextlines: !1,
+ enableDefaultIcon: !0 === options.enableDefaultIcon,
+ highlight: options.highlight,
+ border: options.border,
+ artist: options.artist,
+ asideTextClass: asideTextClass,
+ asideIconClass: (
+ (asideTextClass || "") + " actionSheetItemAsideIcon"
+ ).trim(),
+ image:
+ !options.multiple &&
+ (!0 === options.hasItemIcon ||
+ !0 === options.hasItemImage ||
+ !0 === options.hasItemSelectionState),
+ checkboxAction: "toggleitemselected",
+ enableUserDataButtons: !1,
+ moreButton: !1,
+ mediaInfo: !1,
+ textLinks: !1,
+ enableSideMediaInfo: !1,
+ overviewLines: overviewLines,
+ iconSpacing: !0,
+ }),
+ menuItemClass = "actionSheetItemImageContainer";
+ return (
+ options.useListViewSizing ||
+ ((menuItemClass += " actionSheetItemImageContainer-customsize"),
+ !1 !== options.useCustomImageContainerWidth &&
+ (menuItemClass += " actionSheetItemImageContainer-customwidth")),
+ (options.hasItemSelectionState || options.hasItemIcon) &&
+ (menuItemClass += " actionSheetItemImageContainer-transparent"),
+ (fields.imageContainerClass = menuItemClass),
+ fields
+ );
+ })(this),
+ virtualScrollLayout: "vertical-list",
+ };
+ }
+ function callUpdateElement(itemsContainer, options) {
+ for (
+ var items = itemsContainer.querySelectorAll(
+ itemsContainer.getItemSelector(),
+ ),
+ i = 0,
+ length = items.length;
+ i < length;
+ i++
+ ) {
+ var elem = items[i];
+ !(function (element, item, options) {
+ var classList;
+ element &&
+ (classList = element.classList) &&
+ (item && item.Selected
+ ? classList.add("autofocus")
+ : classList.remove("autofocus"),
+ item && item.hideWithFinePointer
+ ? classList.add("actionSheetMenuItem-hiddenfinepointer")
+ : classList.remove("actionSheetMenuItem-hiddenfinepointer"),
+ !1 === options.highlight) &&
+ ((classList = element.querySelector(".listItem-content").classList),
+ item && item.hasDivider
+ ? classList.add("listItem-border")
+ : classList.remove("listItem-border"));
+ })(elem, itemsContainer.getItemFromElement(elem), options);
+ }
+ }
+ function ActionSheet() {}
+ Object.defineProperty(_exports, "__esModule", { value: !0 }),
+ (_exports.default = void 0),
+ require(["css!modules/actionsheet/actionsheet.css", "material-icons"]),
+ (ActionSheet.prototype.show = function (options) {
+ _layoutmanager.default.tv ||
+ _browser.default.iOS ||
+ _browser.default.osx ||
+ (options.highlight = !1);
+ var dialogOptions = {
+ removeOnClose: !0,
+ enableHistory: options.enableHistory,
+ autoFocus: !1,
+ refocus: options.refocus,
+ autoCenter: !1,
+ transparentBackground: !0,
+ positionTo: options.positionTo,
+ positionX: options.positionX,
+ positionY: options.positionY,
+ transformOrigin: options.transformOrigin,
+ preventOverflow: options.preventOverflow,
+ minWidthToElement: options.minWidthToElement,
+ positionClientX: options.positionClientX,
+ positionClientY: options.positionClientY,
+ offsetLeft: options.offsetLeft,
+ offsetTop: options.offsetTop,
+ blurBackground: options.blurBackground,
+ setCurrentFocusScope: options.setCurrentFocusScope,
+ setDialogSize: !1,
+ },
+ useVirtualScroller =
+ null != options.getItems && options.enableVirtualScroller,
+ isFullscreen =
+ (useVirtualScroller && (dialogOptions.fixedSize = !0),
+ _layoutmanager.default.tv && !1 !== options.autoTvLayout
+ ? (dialogOptions.size = "fullscreen")
+ : (dialogOptions.modal = !1),
+ "fullscreen" === dialogOptions.size),
+ dlg =
+ (options.hasItemImage &&
+ ((options.paddedScroller = !0), (options.useListViewSizing = !0)),
+ isFullscreen || (options.paddedScroller = !0),
+ _dialoghelper.default.createDialog(dialogOptions)),
+ instance = this,
+ dialogOptions =
+ ((instance.dlg = dlg).classList.add("actionSheet"),
+ _layoutmanager.default.tv &&
+ dlg.classList.add("actionSheet-focusscale"),
+ (_layoutmanager.default.tv ||
+ isFullscreen ||
+ options.hasItemSelectionState) &&
+ (dlg.classList.add("dlg-autofocus"),
+ _layoutmanager.default.tv || options.hasItemSelectionState) &&
+ dlg.classList.add("dlg-autofocus-force"),
+ isFullscreen ||
+ (useVirtualScroller &&
+ dlg.classList.add(
+ "actionSheet-virtualscroll",
+ "dialog-fullscreen-lowres",
+ ),
+ _layoutmanager.default.tv ||
+ (dlg.classList.add(
+ "actionSheet-automobile",
+ "actionSheet-largefont",
+ ),
+ options.multiple && dlg.classList.add("actionSheet-smallfont")),
+ !1 !== options.blur &&
+ _dom.default.allowBackdropFilter() &&
+ dlg.classList.add("dialog-blur")),
+ options.dialogClass && dlg.classList.add(options.dialogClass),
+ "");
+ !options.hasItemIcon ||
+ options.hasItemAsideIcon ||
+ options.hasItemAsideText ||
+ !1 === options.iconRight ||
+ (options.iconRight = !0),
+ options.iconRight &&
+ !isFullscreen &&
+ (options.useCustomImageContainerWidth = !1),
+ isFullscreen
+ ? (dialogOptions +=
+ '')
+ : useVirtualScroller &&
+ (dialogOptions +=
+ '');
+ ((!options.title ||
+ options.hasItemIcon ||
+ options.hasItemImage ||
+ options.hasItemSelectionState) &&
+ !isFullscreen) ||
+ dlg.classList.add("actionsheet-centered");
+ for (
+ var selectNoneText,
+ previewHtml = "",
+ headerClass =
+ (options.item &&
+ (previewHtml = (function (options, item) {
+ var html = "",
+ apiClient =
+ ((html +=
+ ''),
+ _connectionmanager.default.getApiClient(item)),
+ imageUrl = (imageUrlInfo = _imageloader.default.getImageUrl(
+ item,
+ apiClient,
+ { height: 60, width: 200 },
+ )).imgUrl,
+ imgClass = "",
+ round = "MusicArtist" === item.Type,
+ html = imageUrl
+ ? ((imageUrlInfo = imageUrlInfo.aspect || 1),
+ (imgClass =
+ (imgClass += " actionsheetItemPreviewImage-bg") +
+ " actionsheetItemPreviewImage-bg-" +
+ (shape =
+ _imageloader.default.getShapeFromAspect(
+ imageUrlInfo,
+ ))),
+ round &&
+ "square" === shape &&
+ (imgClass += " actionsheetItemPreviewImage-round"),
+ html +
+ ('
')
+ : ((imgClass +=
+ " actionsheetItemPreviewImage-iconcontainer"),
+ round &&
+ (imgClass += " actionsheetItemPreviewImage-round"),
+ (html =
+ html +
+ ('
') +
+ _itemmanager.default.getDefaultIcon(item) +
+ "
"),
+ lines =
+ ((html += '
'),
+ []),
+ shape =
+ (item.SeriesName
+ ? item.SeriesId
+ ? lines.push(
+ getTextLinkButton({
+ Type: "Series",
+ Id: item.SeriesId,
+ Name: item.SeriesName,
+ IsFolder: !0,
+ ServerId: item.ServerId,
+ }),
+ )
+ : lines.push(
+ _textencoding.default.htmlEncode(
+ item.SeriesName || "",
+ ),
+ )
+ : "Program" === item.Type &&
+ lines.push(
+ _textencoding.default.htmlEncode(item.Name || ""),
+ ),
+ _textencoding.default.htmlEncode(
+ _itemmanager.default.getDisplayName(item, {}) || "",
+ )),
+ imageUrlInfo =
+ '
' +
+ shape +
+ "
",
+ round =
+ ("Audio" !== item.MediaType ||
+ _layoutmanager.default.tv ||
+ !1 === options.linkToItem ||
+ (imageUrlInfo +=
+ '
'),
+ lines.push(imageUrlInfo),
+ "Server" === item.Type &&
+ (apiClient &&
+ apiClient.serverVersion() &&
+ lines.push(apiClient.serverVersion()),
+ apiClient) &&
+ apiClient.serverAddress() &&
+ lines.push(apiClient.serverAddress()),
+ "User" === item.Type &&
+ options.showServerName &&
+ (imageUrl = apiClient.serverName()) &&
+ lines.push(_textencoding.default.htmlEncode(imageUrl)),
+ item.IsFolder &&
+ item.AlbumArtists &&
+ item.AlbumArtists.length
+ ? lines.push(
+ getTextLinkButton({
+ Type: "MusicArtist",
+ Id: item.AlbumArtists[0].Id,
+ Name: item.AlbumArtists[0].Name,
+ ServerId: item.ServerId,
+ }),
+ )
+ : item.ArtistItems && item.ArtistItems.length
+ ? lines.push(
+ getTextLinkButton({
+ Type: "MusicArtist",
+ Id: item.ArtistItems[0].Id,
+ Name: item.ArtistItems[0].Name,
+ ServerId: item.ServerId,
+ }),
+ )
+ : item.AlbumArtists &&
+ item.AlbumArtists.length &&
+ lines.push(
+ getTextLinkButton({
+ Type: "MusicArtist",
+ Id: item.AlbumArtists[0].Id,
+ Name: item.AlbumArtists[0].Name,
+ ServerId: item.ServerId,
+ }),
+ ),
+ []);
+ item.Album && item.AlbumId
+ ? round.push(
+ getTextLinkButton({
+ Type:
+ "Photo" === item.MediaType
+ ? "PhotoAlbum"
+ : "MusicAlbum",
+ Id: item.AlbumId,
+ Name: item.Album,
+ ServerId: item.ServerId,
+ }),
+ )
+ : item.Album &&
+ round.push(
+ '
' +
+ _textencoding.default.htmlEncode(item.Album) +
+ "
",
+ ),
+ item.ProductionYear &&
+ "Episode" !== item.Type &&
+ round.push(
+ '
' +
+ item.ProductionYear +
+ "
",
+ ),
+ round.length && lines.push(round.join(""));
+ for (
+ var i = 0, length = Math.min(lines.length, 3);
+ i < length;
+ i++
+ )
+ html =
+ 1 <= i
+ ? (html +=
+ '
') +
+ lines[i] +
+ "
"
+ : (html +=
+ '
') +
+ lines[i] +
+ "
";
+ return (html = html + "
" + "
");
+ })(options, options.item)),
+ _layoutmanager.default.tv || (dialogOptions += previewHtml),
+ options.title &&
+ ((headerClass = "actionSheetTitle"),
+ options.hideTitleWhenNotFullscreen &&
+ !isFullscreen &&
+ (headerClass += " actionSheetTitle-hideNonFullscreen"),
+ (dialogOptions =
+ (dialogOptions += '")),
+ options.text &&
+ (dialogOptions =
+ (dialogOptions += '') +
+ options.text +
+ "
"),
+ "actionSheetScroller focuscontainer-x"),
+ scrollSliderClass =
+ (isFullscreen
+ ? ((headerClass += " actionSheetScroller-fullscreen"),
+ useVirtualScroller &&
+ (headerClass += " actionSheetScroller-fullscreen-virtual"))
+ : (useVirtualScroller && (headerClass += " flex-grow"),
+ options.paddedScroller &&
+ (headerClass += " actionSheetScroller-padded")),
+ _layoutmanager.default.tv &&
+ (headerClass += " actionSheetScroller-focusscale"),
+ (options.title || options.text) &&
+ (headerClass += " actionSheetScroller-withheader"),
+ " actionsheetScrollSlider scrollSlider flex flex-direction-column itemsContainer"),
+ isFullscreen =
+ (isFullscreen ||
+ (options.multiple && !useVirtualScroller) ||
+ !1 !== options.highlight ||
+ options.paddedScroller ||
+ (useVirtualScroller
+ ? (headerClass += " actionsheetScrollSlider-bottompadded")
+ : (scrollSliderClass +=
+ " actionsheetScrollSlider-bottompadded")),
+ options.multiple &&
+ ((scrollSliderClass += " actionsheet-scrollSlider-multiple"),
+ _layoutmanager.default.tv) &&
+ (scrollSliderClass += " actionsheet-scrollSlider-multiple-tv"),
+ ""),
+ btnCloseActionSheets =
+ (useVirtualScroller &&
+ (isFullscreen += ' data-virtualscrolllayout="vertical-grid"'),
+ (dialogOptions =
+ (dialogOptions =
+ dialogOptions +
+ ('"),
+ options.bottomText &&
+ (dialogOptions =
+ (dialogOptions +=
+ '') +
+ options.bottomText +
+ "
"),
+ options.multiple &&
+ useVirtualScroller &&
+ ((dialogOptions +=
+ ''),
+ (headerClass = "btnActionSheetSelectNone"),
+ options.selectAllOnSelectNone
+ ? ((selectNoneText = _globalize.default.translate("SelectAll")),
+ (headerClass += " dlg-close"))
+ : (selectNoneText = _globalize.default.translate("SelectNone")),
+ (dialogOptions =
+ dialogOptions +
+ '
")),
+ (dlg.innerHTML = dialogOptions),
+ dlg.querySelectorAll(".btnCloseActionSheet")),
+ i = 0,
+ length = btnCloseActionSheets.length;
+ i < length;
+ i++
+ )
+ btnCloseActionSheets[i].addEventListener("click", onCancelClick);
+ scrollSliderClass = dlg.querySelector(".btnActionSheetSelectNone");
+ return (
+ scrollSliderClass &&
+ scrollSliderClass.addEventListener("click", function () {
+ (options.selectedValuesClone = []),
+ this.classList.contains("dlg-close")
+ ? _dialoghelper.default.close(dlg)
+ : dlg.querySelector(".itemsContainer").refreshItems();
+ }),
+ new Promise(function (resolve, reject) {
+ var selectedItem, isResolved;
+ options.selectedValuesClone = (options.selectedValues || []).slice(0);
+ var itemsContainer = dlg.querySelector(".itemsContainer"),
+ openPromise =
+ (itemsContainer.addEventListener("action-null", function (e) {
+ var _selectedItem2;
+ options.multiple ||
+ ((e = e.detail.item),
+ (selectedItem = e),
+ (e = options.resolveWithSelectedItem
+ ? selectedItem
+ : null == (e = selectedItem)
+ ? void 0
+ : e.Id),
+ !options.resolveOnClick ||
+ (options.resolveOnClick.indexOf &&
+ -1 ===
+ options.resolveOnClick.indexOf(
+ null == (_selectedItem2 = selectedItem)
+ ? void 0
+ : _selectedItem2.Id,
+ )) ||
+ (resolve(e), (isResolved = !0)),
+ _dialoghelper.default.close(dlg));
+ }),
+ (itemsContainer.fetchData = getItemsFn(options)),
+ (itemsContainer.getListOptions = getListOptions.bind(options)),
+ itemsContainer.addEventListener("change", function (e) {
+ var arr,
+ value,
+ e = e.target.closest("input"),
+ itemValue = _shortcuts.default.getItemFromChildNode(
+ e,
+ null,
+ this,
+ ).Id;
+ (arr = options.selectedValuesClone),
+ (value = itemValue),
+ -1 < (value = arr.indexOf(value)) && arr.splice(value, 1),
+ e.checked && options.selectedValuesClone.push(itemValue);
+ }),
+ (itemsContainer.afterRefresh = function () {
+ itemsContainer.virtualScroller ||
+ callUpdateElement(itemsContainer, options),
+ _layoutmanager.default.tv &&
+ itemsContainer.insertAdjacentHTML(
+ "afterbegin",
+ previewHtml,
+ );
+ }),
+ new Promise(function (resolve, reject) {
+ dlg.addEventListener("opened", resolve);
+ })),
+ closePromise = _dialoghelper.default.open(dlg);
+ (useVirtualScroller
+ ? Promise.resolve()
+ : refreshItemsContainer.call(dlg)
+ )
+ .then(function () {
+ var timeout, refreshPromise;
+ return (
+ (dlg.dialogOptions.setDialogSize = !0),
+ _dialoghelper.default.positionDialog(dlg),
+ options.timeout &&
+ (timeout = setTimeout(function () {
+ _dialoghelper.default.close(dlg);
+ }, options.timeout)),
+ useVirtualScroller &&
+ (refreshPromise = refreshItemsContainer.call(dlg)),
+ openPromise.then(function () {
+ return (
+ (refreshPromise || Promise.resolve()).then(
+ function () {
+ var skipIfNotEnabled;
+ this.classList.contains("dlg-autofocus") &&
+ ((skipIfNotEnabled = !this.classList.contains(
+ "dlg-autofocus-force",
+ )),
+ _focusmanager.default.autoFocus(
+ this.querySelector(".itemsContainer"),
+ { skipIfNotEnabled: skipIfNotEnabled },
+ ) ||
+ (skipIfNotEnabled &&
+ !_focusmanager.default.isAutoFocusEnabled()) ||
+ _focusmanager.default.autoFocus(this, {
+ skipIfNotEnabled: skipIfNotEnabled,
+ }));
+ }.bind(dlg),
+ ),
+ itemsContainer.virtualScroller &&
+ itemsContainer.virtualScroller.onResized(),
+ closePromise.then(function () {
+ var _selectedItem3;
+ if (
+ ((instance.dlg = null),
+ timeout && (clearTimeout(timeout), (timeout = null)),
+ !isResolved)
+ )
+ return null !=
+ (_selectedItem3 = options.multiple
+ ? options.selectedValuesClone
+ : options.resolveWithSelectedItem
+ ? selectedItem
+ : null == (_selectedItem3 = selectedItem)
+ ? void 0
+ : _selectedItem3.Id)
+ ? (options.callback &&
+ options.callback(_selectedItem3),
+ _selectedItem3)
+ : Promise.reject();
+ })
+ );
+ })
+ );
+ })
+ .then(resolve, reject);
+ })
+ );
+ }),
+ (ActionSheet.prototype.refreshItems = function () {
+ var _this$dlg =
+ null == (_this$dlg = this.dlg)
+ ? void 0
+ : _this$dlg.querySelector(".itemsContainer");
+ _this$dlg && _this$dlg.refreshItems();
+ }),
+ (ActionSheet.prototype.isShowing = function () {
+ return null != this.dlg;
+ }),
+ (ActionSheet.prototype.autoFocus = function (options) {
+ console.log("focusing actionsheet"),
+ _focusmanager.default.autoFocus(this.dlg, options);
+ }),
+ (ActionSheet.prototype.close = function () {
+ var dlg = this.dlg;
+ dlg && _dialoghelper.default.close(dlg);
+ }),
+ (ActionSheet.prototype.destroy = function () {
+ this.dlg = null;
+ }),
+ (_exports.default = {
+ show: function (options) {
+ var actionSheet = new ActionSheet();
+ return actionSheet.show(options).then(
+ function (result) {
+ return actionSheet.destroy(), Promise.resolve(result);
+ },
+ function (result) {
+ return actionSheet.destroy(), Promise.reject(result);
+ },
+ );
+ },
+ constructor: ActionSheet,
+ });
+});
diff --git a/modules/commandprocessor.js b/modules/commandprocessor.js
index 5784aa8..6d29212 100644
--- a/modules/commandprocessor.js
+++ b/modules/commandprocessor.js
@@ -1 +1,921 @@
-define(["exports","./dom.js","./common/globalize.js","./loading/loading.js","./approuter.js","./common/appsettings.js","./common/playback/playbackmanager.js","./emby-apiclient/connectionmanager.js","./common/itemmanager/itemmanager.js","./formhelper.js"],function(_exports,_dom,_globalize,_loading,_approuter,_appsettings,_playbackmanager,_connectionmanager,_itemmanager,_formhelper){function showPrompt(options){return Emby.importModule("./modules/prompt/prompt.js").then(function(prompt){return prompt(options)})}function showAlertAndResolve(options){return function(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}(options).catch(function(){return Promise.resolve()})}function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function downloadItems(items,options){var apiClient=_connectionmanager.default.getApiClient(items[0]);if(options=options||{},"RemoteSubtitle"===items[0].Type)return function(item,apiClient){return _loading.default.show(),apiClient.downloadSubtitles(item.ItemId,item.MediaSourceId,item.Id).then(function(result){return _loading.default.hide(),showToast(_globalize.default.translate("SubtitlesDownloaded")),result},_formhelper.default.handleErrorResponse)}(items[0],apiClient);for(var urls,downloadUrls=[],i=0,length=items.length;i"}function showLyrics(item){var apiClient=_connectionmanager.default.getApiClient(item);return apiClient.getItem(apiClient.getCurrentUserId(),item.Id).then(function(item){var mediaSource=item.MediaSources[0],stream=function(item,mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type&&s.Index===item.DefaultSubtitleStreamIndex})[0]||mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type})[0]}(item,mediaSource);return apiClient.getJSON(apiClient.getUrl("Items/"+item.Id+"/"+mediaSource.Id+"/Subtitles/"+stream.Index+"/Stream.js")).then(function(result){return showAlertAndResolve({html:result.TrackEvents.map(getLyricsTrackEventHtml).join(""),confirmButton:!1,title:_itemmanager.default.getDisplayName(item),centerText:!1,confirmText:_globalize.default.translate("Close"),item:item})})})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_exports.default={executeCommand:function(command,items,options){var apiClient,virtualFolder,button,item=items[0];if("open"===command||"link"===command){if("photo"!==item.MediaType)return showItem(item,options);command="play"}if("download"===command)return downloadItems(items,options);if("identify"===command)return function(item){return require(["itemIdentifier"]).then(function(responses){return responses[0].show(item)})}(item);if("resetmetadata"===command)return function(items){return require(["itemIdentifier"]).then(function(responses){return responses[0].resetMetadata(items)})}(items);if("preview"===command)return function(item){var apiClient=_connectionmanager.default.getApiClient(item),url="RemoteSubtitle"===item.Type?apiClient.getUrl("Providers/Subtitles/Subtitles/"+item.Id):apiClient.getUrl("Videos/"+item.ItemId+"/"+item.MediaSourceId+"/Subtitles/"+item.Index+"/Stream."+item.Codec);return apiClient.getText(url).then(function(result){return showAlertAndResolve({preFormattedText:_dom.default.stripScripts(result),confirmButton:!1,title:_globalize.default.translate("Subtitles"),item:item})})}(item);if("removefromresume"===command)return removeFromResume(items);if("removefromnextup"===command)return removeFromResume(items);if("playtrailer"===command)return function(item){var apiClient=_connectionmanager.default.getApiClient(item);return apiClient.getLocalTrailers(apiClient.getCurrentUserId(),item.Id).then(function(trailers){_playbackmanager.default.play({items:trailers})})}(item);if("connecttoserver"===command)return function(item){return"AddServer"===item.Type||"Downloads"===item.Type?_approuter.default.showItem(item):"EmbyConnect"===item.Type?_approuter.default.showConnectLogin():(_loading.default.show(),item=_connectionmanager.default.getServerInfo(item.Id)||item,_connectionmanager.default.connectToServer(item,{enableAutoLogin:_appsettings.default.enableAutoLogin()}).then(function(result){return _approuter.default.handleConnectionResult(result)}))}(item);if("setplaylistindex"===command)return _playbackmanager.default.setCurrentPlaylistItem(item.PlaylistItemId);if("multiselect"===command)return function(options){return options.positionTo.closest(".itemsContainer").showMultiSelect(options.positionTo,!0),Promise.resolve()}(options);if("wakeserver"===command)return wakeServer(_connectionmanager.default.getApiClient(item));switch(command){case"delete":case"canceltimer":case"cancelseriestimer":return _itemmanager.default.deleteItems({items:items,navigate:options.navigateOnDelete||!1,positionTo:options.positionTo});case"edit":return function(items,options){var item=items[0];return"Device"===item.Type||"User"===item.Type||"ActiveSession"===item.Type||"SeriesTimer"===item.Type||"Timer"===item.Type||"LiveTVTunerDevice"===item.Type||"LiveTVGuideSource"===item.Type?showItem(item,options):_itemmanager.default.editItems(items,options)}(items,options);case"editimages":return function(item){return require(["imageEditor"]).then(function(responses){return responses[0].show({itemId:item.Id,serverId:item.ServerId})})}(item);case"instantmix":return _playbackmanager.default.instantMix(item);case"shuffle":return _playbackmanager.default.shuffle(item);case"playallfromhere":return playAllFromHere(options.itemElement,item.ServerId);case"queueallfromhere":return playAllFromHere(options.itemElement,item.ServerId,!0);case"play":return play(items,!0);case"playfrombeginning":return play(items,!1);case"resume":case"playpause":return play(items,!0);case"queue":return play(items,!1,!0);case"queuenext":return play(items,!1,!0,!0);case"artist":return _approuter.default.showItem(item.ArtistItems[0].Id,item.ServerId),Promise.resolve();case"album":return _approuter.default.showItem(item.AlbumId,item.ServerId),Promise.resolve();case"series":return _approuter.default.showItem(item.SeriesId,item.ServerId),Promise.resolve();case"season":return _approuter.default.showItem(item.SeasonId,item.ServerId),Promise.resolve();case"overview":return showAlertAndResolve(_dom.default.stripScripts(item.Overview||""));case"programlink":var program=item.CurrentProgram||item;return program.ServerId||(program.ServerId=item.ServerId),showItem(program,options);case"addtoplaylist":return _itemmanager.default.addToPlaylist(items,options);case"addtocollection":return _itemmanager.default.addToCollection(items,options);case"markplayed":return function(items){var apiClient=_connectionmanager.default.getApiClient(items[0]);return apiClient.markPlayed(apiClient.getCurrentUserId(),items.map(mapToId))}(items);case"markunplayed":return function(items){var apiClient=_connectionmanager.default.getApiClient(items[0]);return apiClient.markUnplayed(apiClient.getCurrentUserId(),items.map(mapToId))}(items);case"favorite":return markFavorite(items,!0);case"unfavorite":return markFavorite(items,!1);case"searchimageproviders":return function(item){return require(["imageDownloader"]).then(function(responses){return(new responses[0]).show({item:item.OwnerItem,imageType:item.ImageType})})}(item);case"addimage":return function(item){return require(["imageUploader"]).then(function(responses){return responses[0].show({imageType:item.ImageType,item:item.OwnerItem})})}(item);case"moveimageleft":return moveImage(item,0,item.ImageIndex-1);case"moveimageright":return moveImage(item,0,item.ImageIndex+1);case"addimagefromurl":return function(item){return showPrompt({title:_globalize.default.translate(item.ImageTag?"HeaderSetImageFromUrl":"HeaderAddImageFromUrl"),label:_globalize.default.translate("LabelUrl")}).then(function(url){return _connectionmanager.default.getApiClient(item).updateItemImageFromUrl(item.Id,item.ImageType,item.ImageIndex,url).catch(_formhelper.default.handleErrorResponse)})}(item);case"togglechanneldisabled":return function(item,options){var apiClient;return options.eventType&&"change"===options.eventType?(options=options.eventTarget.checked,apiClient=_connectionmanager.default.getApiClient(item),_loading.default.show(),apiClient.setChannelDisabled(item,!options).then(function(updatedChannel){_loading.default.hide()})):Promise.resolve()}(item,options);case"toggleitemselected":return function(item,options){var checked;return options.eventType&&"change"===options.eventType&&(checked=options.eventTarget.checked,item.Selected=checked,checked=options.itemElement)&&(options=checked.closest(".itemsContainer"))&&-1!==(checked=options.indexOfElement(checked))&&options.onItemUpdated(checked,item),Promise.resolve()}(item,options);case"togglecheckbox":return function(options){return(options=options.itemElement.querySelector(".chkItemCheckbox")).checked=!options.checked,options.dispatchEvent(new CustomEvent("change",{cancelable:!0,bubbles:!0})),Promise.resolve()}(options);case"movechannelup":return moveChannel(item,0,item.SortIndexNumber-1);case"movechanneldown":return moveChannel(item,0,item.SortIndexNumber+1);case"copytoclipboard":return function(item){return navigator.clipboard.writeText(item.AccessToken)}(item);case"share":return shareItems(items);case"seektoposition":return function(item){return"LyricsLine"===item.Type&&null==item.StartPositionTicks?Promise.resolve():_playbackmanager.default.seek(item.StartPositionTicks||0)}(item);case"sync":return function(items){return require(["syncDialog"]).then(function(responses){return responses[0].showMenu({items:items,mode:"sync"})})}(items);case"synclocal":return function(items){return require(["syncDialog"]).then(function(responses){return responses[0].showMenu({items:items,mode:"download"})})}(items);case"convert":return function(items){return require(["syncDialog"]).then(function(responses){return responses[0].showMenu({items:items,mode:"convert"})})}(items);case"editsubtitles":return editSubtitles(item,options);case"changelibrarycontenttype":return _connectionmanager.default.getApiClient(item),options.positionTo,showAlertAndResolve({title:_globalize.default.translate("HeaderChangeFolderType"),text:_globalize.default.translate("HeaderChangeFolderTypeHelp")});case"renamelibrary":return apiClient=_connectionmanager.default.getApiClient(item),virtualFolder=item,button=options.positionTo,showPrompt({label:_globalize.default.translate("LabelNewName"),confirmText:_globalize.default.translate("ButtonRename"),value:virtualFolder.Name}).then(function(newName){var refreshAfterChange;if(newName&&newName!==virtualFolder.Name)return refreshAfterChange="true"===button.closest(".page").getAttribute("data-refreshlibrary"),apiClient.renameVirtualFolder(virtualFolder,newName,refreshAfterChange)});case"refresh":return _itemmanager.default.refreshMetadata(items,options);case"scan":return _itemmanager.default.scanLibraryFiles(items,options);case"removefromplayqueue":return _itemmanager.default.removeFromPlayQueue(items,options);case"removefromplaylist":return _connectionmanager.default.getApiClient(item).removeItemsFromPlaylist(item.PlaylistId,items);case"removefromcollection":return _connectionmanager.default.getApiClient(item).removeItemsFromCollection(item.CollectionId,items);case"session_stop":return _connectionmanager.default.getApiClient(item).sendPlayStateCommand(item.Id,"Stop");case"session_playpause":return _connectionmanager.default.getApiClient(item).sendPlayStateCommand(item.Id,"PlayPause");case"session_sendmessage":return function(item){return showPrompt({title:_globalize.default.translate("HeaderSendMessage"),label:_globalize.default.translate("LabelMessageText"),confirmText:_globalize.default.translate("ButtonSend")}).then(function(text){return text?_connectionmanager.default.getApiClient(item).sendMessageCommand(item.Id,{Text:text,TimeoutMs:5e3}):Promise.reject()})}(item);case"session_shownowplayingitem":return item.NowPlayingItem?showItem(item.NowPlayingItem,options):Promise.reject();case"serverinfo":return function(item){var apiClient=_connectionmanager.default.getApiClient(item),html="";return html+='',apiClient.serverVersion()&&(html=(html+='
'+_globalize.default.translate("Version")+"
")+"
"+apiClient.serverVersion()+"
"),item.LastConnectionMode?html+='
'+_globalize.default.translate("HeaderLastConnectedTo")+"
":html+='
'+_globalize.default.translate("HeaderServerAddress")+"
",html+="
"+apiClient.serverAddress()+"
",item.RemoteAddress&&(html=(html+='
'+_globalize.default.translate("RemoteWAN")+"
")+"
"+item.RemoteAddress+"
"),showAlertAndResolve({title:item.Name,html:html+="
",centerText:!1})}(item);case"record":return record(item,options);case"lyrics":return showLyrics(item);case"manageaccess":return function(item){return require(["ItemAccessDialog"]).then(function(responses){return(new responses[0]).show({item:item})})}(item);case"makepublic":return function(item){return showConfirm({title:_globalize.default.translate("HeaderMakePublic"),text:_globalize.default.translate("MakePublicConfirmation"),confirmText:_globalize.default.translate("HeaderMakePublic"),primary:"cancel"}).then(function(){return _connectionmanager.default.getApiClient(item).makePublic(item.Id).then(function(result){return showToast(_globalize.default.translate("MakingPublic")),Promise.resolve(result)})})}(item);case"makeprivate":return function(item){return showConfirm({title:_globalize.default.translate("HeaderMakePrivate"),text:_globalize.default.translate("MakePrivateConfirmation"),confirmText:_globalize.default.translate("HeaderMakePrivate"),primary:"cancel"}).then(function(){return _connectionmanager.default.getApiClient(item).makePrivate(item.Id).then(function(result){return showToast(_globalize.default.translate("MakingPrivate")),Promise.resolve(result)})})}(item);case"none":return Promise.resolve();case"mergeversions":return _itemmanager.default.groupVersions(items,options);default:return _itemmanager.default.executeCommand(command,items,options)}}}});
\ No newline at end of file
+define([
+ "exports",
+ "./dom.js",
+ "./common/globalize.js",
+ "./loading/loading.js",
+ "./approuter.js",
+ "./common/appsettings.js",
+ "./common/playback/playbackmanager.js",
+ "./emby-apiclient/connectionmanager.js",
+ "./common/itemmanager/itemmanager.js",
+ "./formhelper.js",
+], function (
+ _exports,
+ _dom,
+ _globalize,
+ _loading,
+ _approuter,
+ _appsettings,
+ _playbackmanager,
+ _connectionmanager,
+ _itemmanager,
+ _formhelper,
+) {
+ function showPrompt(options) {
+ return Emby.importModule("./modules/prompt/prompt.js").then(
+ function (prompt) {
+ return prompt(options);
+ },
+ );
+ }
+ function showAlertAndResolve(options) {
+ return (function (options) {
+ return Emby.importModule("./modules/common/dialogs/alert.js").then(
+ function (alert) {
+ return alert(options);
+ },
+ );
+ })(options).catch(function () {
+ return Promise.resolve();
+ });
+ }
+ function showConfirm(options) {
+ return Emby.importModule("./modules/common/dialogs/confirm.js").then(
+ function (confirm) {
+ return confirm(options);
+ },
+ );
+ }
+ function downloadItems(items, options) {
+ var apiClient = _connectionmanager.default.getApiClient(items[0]);
+ if (((options = options || {}), "RemoteSubtitle" === items[0].Type))
+ return (function (item, apiClient) {
+ return (
+ _loading.default.show(),
+ apiClient
+ .downloadSubtitles(item.ItemId, item.MediaSourceId, item.Id)
+ .then(function (result) {
+ return (
+ _loading.default.hide(),
+ showToast(_globalize.default.translate("SubtitlesDownloaded")),
+ result
+ );
+ }, _formhelper.default.handleErrorResponse)
+ );
+ })(items[0], apiClient);
+ for (
+ var urls, downloadUrls = [], i = 0, length = items.length;
+ i < length;
+ i++
+ ) {
+ var url,
+ item = items[i];
+ "Log" === item.Type
+ ? downloadUrls.push(
+ apiClient.getLogDownloadUrl({
+ Name: item.Name,
+ Sanitize: options.Sanitize,
+ SetFilename: !0,
+ }),
+ )
+ : "MediaStream" === item.Type && "Subtitle" === item.StreamType
+ ? ((url =
+ "Videos/" +
+ item.ItemId +
+ "/" +
+ item.MediaSourceId +
+ "/Subtitles/" +
+ item.Index +
+ "/Stream." +
+ item.Codec),
+ downloadUrls.push(apiClient.getUrl(url, { SetFilename: !0 })))
+ : ((url = options.mediaSourceId),
+ (item = apiClient.getItemDownloadUrl(item.Id, url)),
+ downloadUrls.push(item));
+ }
+ return (
+ (urls = downloadUrls),
+ require(["multi-download"]).then(function (responses) {
+ (0, responses[0])(urls);
+ })
+ );
+ }
+ function removeFromResume(items) {
+ var item = items[0],
+ confirmHeader =
+ "Audio" === item.MediaType
+ ? _globalize.default.translate("HeaderRemoveFromContinueListening")
+ : _globalize.default.translate("HeaderRemoveFromContinueWatching"),
+ apiClient = _connectionmanager.default.getApiClient(item);
+ return showConfirm({
+ title: confirmHeader,
+ text:
+ "Audio" === item.MediaType
+ ? _globalize.default.translate("RemoveThisTitleFromContinueListening")
+ : _globalize.default.translate("RemoveThisTitleFromContinueWatching"),
+ confirmText: _globalize.default.translate("Remove"),
+ primary: "cancel",
+ }).then(function () {
+ return apiClient.updateHideFromResume(items.map(mapToId), !0);
+ });
+ }
+ function mapToId(i) {
+ return i.Id;
+ }
+ function markFavorite(items, isFavorite) {
+ var apiClient = _connectionmanager.default.getApiClient(items[0]);
+ return apiClient.updateFavoriteStatus(
+ apiClient.getCurrentUserId(),
+ items.map(mapToId),
+ isFavorite,
+ );
+ }
+ function afterWakeAttempt() {
+ var timeMs,
+ apiClient = this;
+ return (
+ (timeMs = 12e3),
+ new Promise(function (resolve, reject) {
+ setTimeout(resolve, timeMs);
+ }).then(function () {
+ return apiClient.getPublicSystemInfo();
+ })
+ );
+ }
+ function wakeServer(apiClient) {
+ return require(["loadingDialog"]).then(function (responses) {
+ var responses = new responses[0]({
+ title: _globalize.default.translate("HeaderWakeServer"),
+ text: _globalize.default.translate("AttemptingWakeServer"),
+ }),
+ showDialogPromise = responses.show(),
+ responses = { dlg: responses, showDialogPromise: showDialogPromise },
+ showDialogPromise = afterWakeAttempt.bind(apiClient);
+ return apiClient
+ .wakeOnLan()
+ .then(showDialogPromise, showDialogPromise)
+ .then(
+ function () {
+ var promise = this.showDialogPromise.then(function () {
+ return showAlertAndResolve({
+ text: _globalize.default.translate("WakeServerSuccess"),
+ title: _globalize.default.translate("HeaderWakeServer"),
+ });
+ }),
+ dlg = this.dlg;
+ return dlg.hide(), dlg.destroy(), promise;
+ }.bind(responses),
+ function () {
+ var promise = this.showDialogPromise.then(function () {
+ return showAlertAndResolve({
+ text: _globalize.default.translate("WakeServerError"),
+ title: _globalize.default.translate("HeaderWakeServer"),
+ });
+ }),
+ dlg = this.dlg;
+ return dlg.hide(), dlg.destroy(), promise;
+ }.bind(responses),
+ );
+ });
+ }
+ function playAllFromHere(itemElement, serverId, queue) {
+ var fetchAll,
+ itemsContainer = itemElement.closest(".itemsContainer"),
+ startIndex = itemsContainer.indexOfElement(itemElement);
+ if (itemsContainer && itemsContainer.fetchData)
+ return (
+ (limit = 1e3),
+ queue || (limit += startIndex || 0),
+ (limit = (fetchAll = !queue && startIndex < limit)
+ ? { Limit: limit }
+ : { StartIndex: startIndex, Limit: limit }),
+ itemsContainer.fetchData(limit).then(function (result) {
+ return queue
+ ? _playbackmanager.default.queue({ items: result.Items || result })
+ : _playbackmanager.default.play({
+ items: result.Items || result,
+ startIndex: fetchAll ? startIndex : null,
+ });
+ })
+ );
+ for (
+ var itemsContainer = itemElement.parentNode,
+ limit = itemElement.classList.length
+ ? "." + itemElement.classList[0]
+ : "",
+ cards = itemsContainer.querySelectorAll(limit + "[data-id]"),
+ ids = [],
+ foundCard = !1,
+ i = 0,
+ length = cards.length;
+ i < length;
+ i++
+ )
+ cards[i] === itemElement && ((foundCard = !0), (startIndex = i)),
+ (!foundCard && queue) || ids.push(cards[i].getAttribute("data-id"));
+ return ids.length
+ ? queue
+ ? _playbackmanager.default.queue({ ids: ids, serverId: serverId })
+ : _playbackmanager.default.play({
+ ids: ids,
+ serverId: serverId,
+ startIndex: startIndex,
+ })
+ : void 0;
+ }
+ function showToast(options) {
+ Emby.importModule("./modules/toast/toast.js").then(function (toast) {
+ return toast(options);
+ });
+ }
+ function notifyAddedToPlayQueue() {
+ return (
+ showToast({
+ text: _globalize.default.translate("HeaderAddedToPlayQueue"),
+ icon: "",
+ }),
+ Promise.resolve()
+ );
+ }
+ function notifyPlayingNext() {
+ return (
+ showToast({
+ text: _globalize.default.translate("HeaderPlayingNext"),
+ icon: "",
+ }),
+ Promise.resolve()
+ );
+ }
+ function play(items, resume, queue, queueNext) {
+ var method = queue ? (queueNext ? "queueNext" : "queue") : "play",
+ item = items[0],
+ resume = {
+ startPositionTicks: !1 === resume ? 0 : item.StartPositionTicks,
+ },
+ item =
+ (null != item.ChapterIndex
+ ? ((resume.ids = [item.Id]), (resume.serverId = item.ServerId))
+ : ((resume.items = items), (resume.autoplay = 1 < items.length)),
+ _playbackmanager.default[method](resume));
+ return (
+ queueNext
+ ? (item = item.then(notifyPlayingNext))
+ : queue && (item = item.then(notifyAddedToPlayQueue)),
+ item
+ );
+ }
+ function showItem(item, options) {
+ var itemsContainer;
+ return (
+ options &&
+ !options.parentId &&
+ (options.itemElement || options.positionTo) &&
+ (itemsContainer = (options.itemElement || options.positionTo).closest(
+ ".itemsContainer",
+ )) &&
+ (options.parentId =
+ itemsContainer.getAttribute("data-parentid") || null),
+ _approuter.default.showItem(item, options)
+ );
+ }
+ function moveImage(item, options, newIndex) {
+ return _connectionmanager.default
+ .getApiClient(item)
+ .updateItemImageIndex(item.Id, item.ImageType, item.ImageIndex, newIndex)
+ .catch(_formhelper.default.handleErrorResponse);
+ }
+ function moveChannel(item, options, newIndex) {
+ return _connectionmanager.default
+ .getApiClient(item)
+ .setChannelSortIndex(item, newIndex);
+ }
+ function record(item, options) {
+ return "TvChannel" === item.Type
+ ? (function (item, options) {
+ return require(["channelRecordingCreator"]).then(
+ function (responses) {
+ return responses[0].createRecordingForChannel(item, options);
+ },
+ );
+ })(item, options)
+ : (function (item) {
+ var type = item.Type,
+ id = item.Id,
+ serverId = item.ServerId,
+ timerId = "Timer" === type ? item.Id : item.TimerId,
+ seriesTimerId = item.SeriesTimerId,
+ programId = "Program" === type ? id : item.ProgramId,
+ status = item.Status;
+ return programId || timerId || seriesTimerId
+ ? require(["recordingHelper"]).then(function (responses) {
+ return responses[0].toggleRecording(
+ serverId,
+ "Program" === type ? id : null,
+ timerId,
+ status,
+ seriesTimerId,
+ );
+ })
+ : Promise.resolve();
+ })(item);
+ }
+ function editSubtitles(item, options) {
+ return require(["subtitleEditor"]).then(function (responses) {
+ return responses[0].show({
+ item: item,
+ mediaSource: (function (mediaSources, mediaSourceId) {
+ for (var i = 0, length = mediaSources.length; i < length; i++)
+ if (mediaSources[i].Id === mediaSourceId) return mediaSources[i];
+ return mediaSources[0];
+ })(item.MediaSources, options.mediaSourceId),
+ });
+ });
+ }
+ function shareItems(items) {
+ var title,
+ items = items[0],
+ shareTitle = _itemmanager.default.getDisplayName(items),
+ shareText = shareTitle,
+ apiClient =
+ (items.Overview && (shareText += " - " + items.Overview),
+ _connectionmanager.default.getApiClient(items));
+ if ("Photo" === items.Type) {
+ var shareUrl = apiClient.getImageUrl(items.Id, {
+ type: "Primary",
+ tag: null == (items = items.ImageTags) ? void 0 : items.Primary,
+ format: "png",
+ });
+ if ("android" !== globalThis.appMode && "ios" !== globalThis.appMode)
+ return (
+ (title = shareTitle),
+ fetch(shareUrl, { credentials: "same-origin" })
+ .then(function (r) {
+ return r.blob();
+ })
+ .then(function (blob) {
+ blob = new File([blob], "image.png", { type: "image/png" });
+ return navigator.share({ files: [blob], title: title });
+ })
+ );
+ } else {
+ items =
+ null == (items = apiClient.serverInfo()) ? void 0 : items.RemoteAddress;
+ shareUrl = apiClient.getUrl("share", {}, items).replace("/share", "");
+ }
+ return navigator.share({
+ title: shareTitle,
+ text: shareText,
+ url: shareUrl,
+ });
+ }
+ function getLyricsTrackEventHtml(item, index) {
+ var html = '';
+ return html + item.Text + "
";
+ }
+ function showLyrics(item) {
+ var apiClient = _connectionmanager.default.getApiClient(item);
+ return apiClient
+ .getItem(apiClient.getCurrentUserId(), item.Id)
+ .then(function (item) {
+ var mediaSource = item.MediaSources[0],
+ stream = (function (item, mediaSource) {
+ return (
+ mediaSource.MediaStreams.filter(function (s) {
+ return (
+ "Subtitle" === s.Type &&
+ s.Index === item.DefaultSubtitleStreamIndex
+ );
+ })[0] ||
+ mediaSource.MediaStreams.filter(function (s) {
+ return "Subtitle" === s.Type;
+ })[0]
+ );
+ })(item, mediaSource);
+ return apiClient
+ .getJSON(
+ apiClient.getUrl(
+ "Items/" +
+ item.Id +
+ "/" +
+ mediaSource.Id +
+ "/Subtitles/" +
+ stream.Index +
+ "/Stream.js",
+ ),
+ )
+ .then(function (result) {
+ return showAlertAndResolve({
+ html: result.TrackEvents.map(getLyricsTrackEventHtml).join(""),
+ confirmButton: !1,
+ title: _itemmanager.default.getDisplayName(item),
+ centerText: !1,
+ confirmText: _globalize.default.translate("Close"),
+ item: item,
+ });
+ });
+ });
+ }
+ Object.defineProperty(_exports, "__esModule", { value: !0 }),
+ (_exports.default = void 0),
+ (_exports.default = {
+ executeCommand: function (command, items, options) {
+ var apiClient,
+ virtualFolder,
+ button,
+ item = items[0];
+ if ("open" === command || "link" === command) {
+ if ("photo" !== item.MediaType) return showItem(item, options);
+ command = "play";
+ }
+ if ("download" === command) return downloadItems(items, options);
+ if ("identify" === command)
+ return (function (item) {
+ return require(["itemIdentifier"]).then(function (responses) {
+ return responses[0].show(item);
+ });
+ })(item);
+ if ("resetmetadata" === command)
+ return (function (items) {
+ return require(["itemIdentifier"]).then(function (responses) {
+ return responses[0].resetMetadata(items);
+ });
+ })(items);
+ if ("preview" === command)
+ return (function (item) {
+ var apiClient = _connectionmanager.default.getApiClient(item),
+ url =
+ "RemoteSubtitle" === item.Type
+ ? apiClient.getUrl("Providers/Subtitles/Subtitles/" + item.Id)
+ : apiClient.getUrl(
+ "Videos/" +
+ item.ItemId +
+ "/" +
+ item.MediaSourceId +
+ "/Subtitles/" +
+ item.Index +
+ "/Stream." +
+ item.Codec,
+ );
+ return apiClient.getText(url).then(function (result) {
+ return showAlertAndResolve({
+ preFormattedText: _dom.default.stripScripts(result),
+ confirmButton: !1,
+ title: _globalize.default.translate("Subtitles"),
+ item: item,
+ });
+ });
+ })(item);
+ if ("removefromresume" === command) return removeFromResume(items);
+ if ("removefromnextup" === command) return removeFromResume(items);
+ if ("playtrailer" === command)
+ return (function (item) {
+ var apiClient = _connectionmanager.default.getApiClient(item);
+ return apiClient
+ .getLocalTrailers(apiClient.getCurrentUserId(), item.Id)
+ .then(function (trailers) {
+ _playbackmanager.default.play({ items: trailers });
+ });
+ })(item);
+ if ("connecttoserver" === command)
+ return (function (item) {
+ return "AddServer" === item.Type || "Downloads" === item.Type
+ ? _approuter.default.showItem(item)
+ : "EmbyConnect" === item.Type
+ ? _approuter.default.showConnectLogin()
+ : (_loading.default.show(),
+ (item =
+ _connectionmanager.default.getServerInfo(item.Id) || item),
+ _connectionmanager.default
+ .connectToServer(item, {
+ enableAutoLogin: _appsettings.default.enableAutoLogin(),
+ })
+ .then(function (result) {
+ return _approuter.default.handleConnectionResult(result);
+ }));
+ })(item);
+ if ("setplaylistindex" === command)
+ return _playbackmanager.default.setCurrentPlaylistItem(
+ item.PlaylistItemId,
+ );
+ if ("multiselect" === command)
+ return (function (options) {
+ return (
+ options.positionTo
+ .closest(".itemsContainer")
+ .showMultiSelect(options.positionTo, !0),
+ Promise.resolve()
+ );
+ })(options);
+ if ("wakeserver" === command)
+ return wakeServer(_connectionmanager.default.getApiClient(item));
+ switch (command) {
+ case "delete":
+ case "canceltimer":
+ case "cancelseriestimer":
+ return _itemmanager.default.deleteItems({
+ items: items,
+ navigate: options.navigateOnDelete || !1,
+ positionTo: options.positionTo,
+ });
+ case "edit":
+ return (function (items, options) {
+ var item = items[0];
+ return "Device" === item.Type ||
+ "User" === item.Type ||
+ "ActiveSession" === item.Type ||
+ "SeriesTimer" === item.Type ||
+ "Timer" === item.Type ||
+ "LiveTVTunerDevice" === item.Type ||
+ "LiveTVGuideSource" === item.Type
+ ? showItem(item, options)
+ : _itemmanager.default.editItems(items, options);
+ })(items, options);
+ case "editimages":
+ return (function (item) {
+ return require(["imageEditor"]).then(function (responses) {
+ return responses[0].show({
+ itemId: item.Id,
+ serverId: item.ServerId,
+ });
+ });
+ })(item);
+ case "instantmix":
+ return _playbackmanager.default.instantMix(item);
+ case "shuffle":
+ return _playbackmanager.default.shuffle(item);
+ case "playallfromhere":
+ return playAllFromHere(options.itemElement, item.ServerId);
+ case "queueallfromhere":
+ return playAllFromHere(options.itemElement, item.ServerId, !0);
+ case "play":
+ return play(items, !0);
+ case "playfrombeginning":
+ return play(items, !1);
+ case "resume":
+ case "playpause":
+ return play(items, !0);
+ case "queue":
+ return play(items, !1, !0);
+ case "queuenext":
+ return play(items, !1, !0, !0);
+ case "artist":
+ return (
+ _approuter.default.showItem(
+ item.ArtistItems[0].Id,
+ item.ServerId,
+ ),
+ Promise.resolve()
+ );
+ case "album":
+ return (
+ _approuter.default.showItem(item.AlbumId, item.ServerId),
+ Promise.resolve()
+ );
+ case "series":
+ return (
+ _approuter.default.showItem(item.SeriesId, item.ServerId),
+ Promise.resolve()
+ );
+ case "season":
+ return (
+ _approuter.default.showItem(item.SeasonId, item.ServerId),
+ Promise.resolve()
+ );
+ case "overview":
+ return showAlertAndResolve(
+ _dom.default.stripScripts(item.Overview || ""),
+ );
+ case "programlink":
+ var program = item.CurrentProgram || item;
+ return (
+ program.ServerId || (program.ServerId = item.ServerId),
+ showItem(program, options)
+ );
+ case "addtoplaylist":
+ return _itemmanager.default.addToPlaylist(items, options);
+ case "addtocollection":
+ return _itemmanager.default.addToCollection(items, options);
+ case "markplayed":
+ return (function (items) {
+ var apiClient = _connectionmanager.default.getApiClient(items[0]);
+ return apiClient.markPlayed(
+ apiClient.getCurrentUserId(),
+ items.map(mapToId),
+ );
+ })(items);
+ case "markunplayed":
+ return (function (items) {
+ var apiClient = _connectionmanager.default.getApiClient(items[0]);
+ return apiClient.markUnplayed(
+ apiClient.getCurrentUserId(),
+ items.map(mapToId),
+ );
+ })(items);
+ case "favorite":
+ return markFavorite(items, !0);
+ case "unfavorite":
+ return markFavorite(items, !1);
+ case "searchimageproviders":
+ return (function (item) {
+ return require(["imageDownloader"]).then(function (responses) {
+ return new responses[0]().show({
+ item: item.OwnerItem,
+ imageType: item.ImageType,
+ });
+ });
+ })(item);
+ case "addimage":
+ return (function (item) {
+ return require(["imageUploader"]).then(function (responses) {
+ return responses[0].show({
+ imageType: item.ImageType,
+ item: item.OwnerItem,
+ });
+ });
+ })(item);
+ case "moveimageleft":
+ return moveImage(item, 0, item.ImageIndex - 1);
+ case "moveimageright":
+ return moveImage(item, 0, item.ImageIndex + 1);
+ case "addimagefromurl":
+ return (function (item) {
+ return showPrompt({
+ title: _globalize.default.translate(
+ item.ImageTag
+ ? "HeaderSetImageFromUrl"
+ : "HeaderAddImageFromUrl",
+ ),
+ label: _globalize.default.translate("LabelUrl"),
+ }).then(function (url) {
+ return _connectionmanager.default
+ .getApiClient(item)
+ .updateItemImageFromUrl(
+ item.Id,
+ item.ImageType,
+ item.ImageIndex,
+ url,
+ )
+ .catch(_formhelper.default.handleErrorResponse);
+ });
+ })(item);
+ case "togglechanneldisabled":
+ return (function (item, options) {
+ var apiClient;
+ return options.eventType && "change" === options.eventType
+ ? ((options = options.eventTarget.checked),
+ (apiClient = _connectionmanager.default.getApiClient(item)),
+ _loading.default.show(),
+ apiClient
+ .setChannelDisabled(item, !options)
+ .then(function (updatedChannel) {
+ _loading.default.hide();
+ }))
+ : Promise.resolve();
+ })(item, options);
+ case "toggleitemselected":
+ return (function (item, options) {
+ var checked;
+ return (
+ options.eventType &&
+ "change" === options.eventType &&
+ ((checked = options.eventTarget.checked),
+ (item.Selected = checked),
+ (checked = options.itemElement)) &&
+ (options = checked.closest(".itemsContainer")) &&
+ -1 !== (checked = options.indexOfElement(checked)) &&
+ options.onItemUpdated(checked, item),
+ Promise.resolve()
+ );
+ })(item, options);
+ case "togglecheckbox":
+ return (function (options) {
+ return (
+ ((options =
+ options.itemElement.querySelector(
+ ".chkItemCheckbox",
+ )).checked = !options.checked),
+ options.dispatchEvent(
+ new CustomEvent("change", { cancelable: !0, bubbles: !0 }),
+ ),
+ Promise.resolve()
+ );
+ })(options);
+ case "movechannelup":
+ return moveChannel(item, 0, item.SortIndexNumber - 1);
+ case "movechanneldown":
+ return moveChannel(item, 0, item.SortIndexNumber + 1);
+ case "copytoclipboard":
+ return (function (item) {
+ return navigator.clipboard.writeText(item.AccessToken);
+ })(item);
+ case "share":
+ return shareItems(items);
+ case "seektoposition":
+ return (function (item) {
+ return "LyricsLine" === item.Type &&
+ null == item.StartPositionTicks
+ ? Promise.resolve()
+ : _playbackmanager.default.seek(item.StartPositionTicks || 0);
+ })(item);
+ case "sync":
+ return (function (items) {
+ return require(["syncDialog"]).then(function (responses) {
+ return responses[0].showMenu({ items: items, mode: "sync" });
+ });
+ })(items);
+ case "synclocal":
+ return (function (items) {
+ return require(["syncDialog"]).then(function (responses) {
+ return responses[0].showMenu({
+ items: items,
+ mode: "download",
+ });
+ });
+ })(items);
+ case "convert":
+ return (function (items) {
+ return require(["syncDialog"]).then(function (responses) {
+ return responses[0].showMenu({ items: items, mode: "convert" });
+ });
+ })(items);
+ case "editsubtitles":
+ return editSubtitles(item, options);
+ case "changelibrarycontenttype":
+ return (
+ _connectionmanager.default.getApiClient(item),
+ options.positionTo,
+ showAlertAndResolve({
+ title: _globalize.default.translate("HeaderChangeFolderType"),
+ text: _globalize.default.translate(
+ "HeaderChangeFolderTypeHelp",
+ ),
+ })
+ );
+ case "renamelibrary":
+ return (
+ (apiClient = _connectionmanager.default.getApiClient(item)),
+ (virtualFolder = item),
+ (button = options.positionTo),
+ showPrompt({
+ label: _globalize.default.translate("LabelNewName"),
+ confirmText: _globalize.default.translate("ButtonRename"),
+ value: virtualFolder.Name,
+ }).then(function (newName) {
+ var refreshAfterChange;
+ if (newName && newName !== virtualFolder.Name)
+ return (
+ (refreshAfterChange =
+ "true" ===
+ button
+ .closest(".page")
+ .getAttribute("data-refreshlibrary")),
+ apiClient.renameVirtualFolder(
+ virtualFolder,
+ newName,
+ refreshAfterChange,
+ )
+ );
+ })
+ );
+ case "refresh":
+ return _itemmanager.default.refreshMetadata(items, options);
+ case "scan":
+ return _itemmanager.default.scanLibraryFiles(items, options);
+ case "removefromplayqueue":
+ return _itemmanager.default.removeFromPlayQueue(items, options);
+ case "removefromplaylist":
+ return _connectionmanager.default
+ .getApiClient(item)
+ .removeItemsFromPlaylist(item.PlaylistId, items);
+ case "removefromcollection":
+ return _connectionmanager.default
+ .getApiClient(item)
+ .removeItemsFromCollection(item.CollectionId, items);
+ case "session_stop":
+ return _connectionmanager.default
+ .getApiClient(item)
+ .sendPlayStateCommand(item.Id, "Stop");
+ case "session_playpause":
+ return _connectionmanager.default
+ .getApiClient(item)
+ .sendPlayStateCommand(item.Id, "PlayPause");
+ case "session_sendmessage":
+ return (function (item) {
+ return showPrompt({
+ title: _globalize.default.translate("HeaderSendMessage"),
+ label: _globalize.default.translate("LabelMessageText"),
+ confirmText: _globalize.default.translate("ButtonSend"),
+ }).then(function (text) {
+ return text
+ ? _connectionmanager.default
+ .getApiClient(item)
+ .sendMessageCommand(item.Id, {
+ Text: text,
+ TimeoutMs: 5e3,
+ })
+ : Promise.reject();
+ });
+ })(item);
+ case "session_shownowplayingitem":
+ return item.NowPlayingItem
+ ? showItem(item.NowPlayingItem, options)
+ : Promise.reject();
+ case "serverinfo":
+ return (function (item) {
+ var apiClient = _connectionmanager.default.getApiClient(item),
+ html = "";
+ return (
+ (html += ''),
+ apiClient.serverVersion() &&
+ (html =
+ (html +=
+ '
' +
+ _globalize.default.translate("Version") +
+ "
") +
+ "
" +
+ apiClient.serverVersion() +
+ "
"),
+ item.LastConnectionMode
+ ? (html +=
+ '
' +
+ _globalize.default.translate("HeaderLastConnectedTo") +
+ "
")
+ : (html +=
+ '
' +
+ _globalize.default.translate("HeaderServerAddress") +
+ "
"),
+ (html += "
" + apiClient.serverAddress() + "
"),
+ item.RemoteAddress &&
+ (html =
+ (html +=
+ '
' +
+ _globalize.default.translate("RemoteWAN") +
+ "
") +
+ "
" +
+ item.RemoteAddress +
+ "
"),
+ showAlertAndResolve({
+ title: item.Name,
+ html: (html += "
"),
+ centerText: !1,
+ })
+ );
+ })(item);
+ case "record":
+ return record(item, options);
+ case "lyrics":
+ return showLyrics(item);
+ case "manageaccess":
+ return (function (item) {
+ return require(["ItemAccessDialog"]).then(function (responses) {
+ return new responses[0]().show({ item: item });
+ });
+ })(item);
+ case "makepublic":
+ return (function (item) {
+ return showConfirm({
+ title: _globalize.default.translate("HeaderMakePublic"),
+ text: _globalize.default.translate("MakePublicConfirmation"),
+ confirmText: _globalize.default.translate("HeaderMakePublic"),
+ primary: "cancel",
+ }).then(function () {
+ return _connectionmanager.default
+ .getApiClient(item)
+ .makePublic(item.Id)
+ .then(function (result) {
+ return (
+ showToast(_globalize.default.translate("MakingPublic")),
+ Promise.resolve(result)
+ );
+ });
+ });
+ })(item);
+ case "makeprivate":
+ return (function (item) {
+ return showConfirm({
+ title: _globalize.default.translate("HeaderMakePrivate"),
+ text: _globalize.default.translate("MakePrivateConfirmation"),
+ confirmText: _globalize.default.translate("HeaderMakePrivate"),
+ primary: "cancel",
+ }).then(function () {
+ return _connectionmanager.default
+ .getApiClient(item)
+ .makePrivate(item.Id)
+ .then(function (result) {
+ return (
+ showToast(_globalize.default.translate("MakingPrivate")),
+ Promise.resolve(result)
+ );
+ });
+ });
+ })(item);
+ case "none":
+ return Promise.resolve();
+ case "mergeversions":
+ return _itemmanager.default.groupVersions(items, options);
+ default:
+ return _itemmanager.default.executeCommand(command, items, options);
+ }
+ },
+ });
+});
diff --git a/modules/multidownload.js b/modules/multidownload.js
index 00c766e..736d321 100644
--- a/modules/multidownload.js
+++ b/modules/multidownload.js
@@ -1 +1,25 @@
-define(["exports"],function(_exports){function download(url){var a=document.createElement("a");a.download="",a.href=url,a.dispatchEvent(new MouseEvent("click"))}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=function(urls){if(!urls)throw new Error("`urls` required");var delay=0;urls.forEach(function(url){if(!function(url){var a=document.createElement("a");return a.href=url,location.hostname===a.hostname&&location.protocol===a.protocol}(url))return setTimeout(download.bind(null,url),100*++delay);download(url)})}});
\ No newline at end of file
+define(["exports"], function (_exports) {
+ function download(url) {
+ var a = document.createElement("a");
+ (a.download = ""), (a.href = url), a.dispatchEvent(new MouseEvent("click"));
+ }
+ Object.defineProperty(_exports, "__esModule", { value: !0 }),
+ (_exports.default = function (urls) {
+ if (!urls) throw new Error("`urls` required");
+ var delay = 0;
+ urls.forEach(function (url) {
+ if (
+ !(function (url) {
+ var a = document.createElement("a");
+ return (
+ (a.href = url),
+ location.hostname === a.hostname &&
+ location.protocol === a.protocol
+ );
+ })(url)
+ )
+ return setTimeout(download.bind(null, url), 100 * ++delay);
+ download(url);
+ });
+ });
+});