Files
Futontime_UI/modules/imageeditor/imageeditor.js
2026-02-09 10:48:21 +01:00

1 line
9.2 KiB
JavaScript

define(["exports","./../emby-apiclient/connectionmanager.js","./../dom.js","./../common/globalize.js","./../layoutmanager.js","./../loading/loading.js","./../dialoghelper/dialoghelper.js","./../cardbuilder/cardbuilder.js","./../focusmanager.js","./../common/servicelocator.js","./../emby-elements/emby-button/emby-button.js","./../emby-elements/emby-scroller/emby-scroller.js","./../emby-elements/emby-button/paper-icon-button-light.js","./../emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js"],function(_exports,_connectionmanager,_dom,_globalize,_layoutmanager,_loading,_dialoghelper,_cardbuilder,_focusmanager,_servicelocator,_embyButton,_embyScroller,_paperIconButtonLight,_embyDialogclosebutton){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["formDialogStyle","css!modules/imageeditor/imageeditor.css"]);var currentItemId,currentServerId,hasChanges=!1;function getItemInfo(){_loading.default.show();var apiClient=_connectionmanager.default.getApiClient(currentServerId);return apiClient.getItem(apiClient.getCurrentUserId(),currentItemId,{ExcludeFields:"Chapters,MediaSources,MediaStreams,People,Overview,Subviews"}).then(function(item){return apiClient.getItemImageInfos(currentItemId).then(function(imageInfos){return apiClient.getRemoteImageProviders({itemId:currentItemId}).then(function(providers){providers={item:item,imageInfos:imageInfos,providers:providers};return _loading.default.hide(),providers})})})}function addListeners(container,className,eventName,fn){container.addEventListener(eventName,function(e){var elem=e.target.closest("."+className);elem&&fn.call(elem,e)})}function getImageUrl(item,apiClient,type,index,options){return(options=options||{}).type=type,options.index=index,index="Backdrop"===type?(options.tag=item.BackdropImageTags[index],item.Id||item.ItemId):"Primary"===type?(options.tag=item.PrimaryImageTag||item.ImageTags[type],item.PrimaryImageItemId||item.Id||item.ItemId):(options.tag=item.ImageTags[type],item.Id||item.ItemId),options.tag?apiClient.getImageUrl(index,options):null}function setImageProperties(image,itemInfo,apiClient){var item=itemInfo.item;image.Type="ItemImage",image.ServerId=item.ServerId,image.Id=item.Id+"_ItemImage_"+image.imageType+"_"+(image.ImageIndex||0),image.ItemId=item.Id,image.OwnerItem=item,image.Providers=itemInfo.providers,image.Name=_globalize.default.translate(image.ImageType),"Backdrop"===image.ImageType?image.ImageUrl=getImageUrl(item,apiClient,image.ImageType,image.ImageIndex):(image.ImageTags={},image.ImageTags[image.ImageType]=item.ImageTags?item.ImageTags[image.ImageType]:null,"Primary"!==image.ImageType||image.ImageTags[image.ImageType]?image.ImageTags[image.ImageType]&&(image.ImageUrl=getImageUrl(item,apiClient,image.ImageType)):(image.PrimaryImageTag=item.PrimaryImageTag,image.PrimaryImageItemId=item.PrimaryImageItemId),image.ImageTag=image.ImageTags[image.ImageType],"Primary"===image.ImageType&&"TvChannel"===itemInfo.item.Type&&(image.Name=_globalize.default.translate("LogoDark")))}function getStandardImages(){return getItemInfo().then(function(itemInfo){for(var item=itemInfo.item,imageInfos=itemInfo.imageInfos,types=["Primary"],apiClient=(("TvChannel"!==item.Type||item.ImageTags&&item.ImageTags.Logo)&&types.push("Logo"),_connectionmanager.default.getApiClient(item)),result=("TvChannel"===item.Type&&(types.push("LogoLight"),types.push("LogoLightColor")),types.push("Thumb"),types.push("Banner"),types.push("Disc"),types.push("Art"),"Game"===item.Type&&types.push("Box"),[]),i=0,length=types.length;i<length;i++){var imageInfo=function(images,type){for(var i=0,length=images.length;i<length;i++){var image=images[i];if(image.ImageType===type)return image}return null}(imageInfos,types[i])||{ImageType:types[i]};setImageProperties(imageInfo,itemInfo,apiClient),result.push(imageInfo)}return{Items:result,TotalRecordCount:result.length}})}function getBackdropImages(){return getItemInfo().then(function(itemInfo){for(var item=itemInfo.item,imageInfos=itemInfo.imageInfos.filter(function(t){return"Backdrop"===t.ImageType}),result=[],backdropImageTags=item.BackdropImageTags||[],apiClient=_connectionmanager.default.getApiClient(item),i=0,length=imageInfos.length;i<length;i++){var imageInfo=imageInfos[i];imageInfo.ImageTag=backdropImageTags[i],imageInfo.ImageIndex=i,imageInfo.TotalImages=imageInfos.length,setImageProperties(imageInfo,itemInfo,apiClient),result.push(imageInfo)}return{Items:result,TotalRecordCount:result.length}})}function getStandardImagesListOptions(){var fields=["ItemImageName"];return fields.push("Resolution"),_layoutmanager.default.tv||fields.push("ImageEditorStandardButtons"),{renderer:_cardbuilder.default,options:{fields:fields,shape:"backdrop",multiSelect:!1,defaultBackground:!0,cardLayout:!0,cardClass:"imageEditorCard",cardDefaultTextClass:"imageEditorCardDefaultText",action:_layoutmanager.default.tv?"menu":"none",addImageSizeToUrl:!0,textLinks:!1,cardFooterAside:!1,draggable:!1,playQueueIndicator:!1},virtualScrollLayout:"vertical-grid",playQueueIndicator:!1}}function getBackdropImagesListOptions(items){var fields=[],items=(fields.push("FilenameOrName"),fields.push("Resolution"),_layoutmanager.default.tv||fields.push("ImageEditorBackdropButtons"),1<items.length);return{renderer:_cardbuilder.default,options:{fields:fields,shape:"backdrop",multiSelect:!1,cardClass:"imageEditorCard",cardDefaultTextClass:"imageEditorCardDefaultText",defaultBackground:!0,cardLayout:!0,imageFallback:!1,action:_layoutmanager.default.tv?"menu":"none",addImageSizeToUrl:!0,textLinks:!1,cardFooterAside:!1,dragReorder:items,draggable:items,playQueueIndicator:!1},virtualScrollLayout:"vertical-grid"}}function refreshItemContainers(context){var standardImagesItemsContainer=context.querySelector(".images"),backdropImagesItemsContainer=context.querySelector(".backdrops"),promises=[];promises.push(standardImagesItemsContainer.resume({refresh:!0})),promises.push(backdropImagesItemsContainer.resume({refresh:!0})),Promise.all(promises).then(function(){_focusmanager.default.autoFocus(context,{skipIfNotEnabled:!0})})}function onItemChanged(context){refreshItemContainers(context)}function onAddButtonClick(e){var imageType=this.getAttribute("data-imagetype");Emby.importModule("./modules/imageuploader/imageuploader.js").then(function(imageUploader){getItemInfo().then(function(itemInfo){imageUploader.show({imageType:imageType,item:itemInfo.item}).then(function(hasChanged){hasChanged&&(hasChanges=!0,onItemChanged(e.target.closest(".formDialog")))})})})}function initEditor(context,options,itemInfo){addListeners(context,"btnBrowseAllImages","click",function(){!function(context,imageType){Emby.importModule("./modules/imagedownloader/imagedownloader.js").then(function(ImageDownloader){getItemInfo().then(function(itemInfo){(new ImageDownloader).show({item:itemInfo.item,imageType:imageType}).then(function(){hasChanges=!0,onItemChanged(context)})})})}(context,this.getAttribute("data-imagetype"))}),addListeners(context,"btnAddImage","click",onAddButtonClick);var standardImagesItemsContainer=context.querySelector(".images"),standardImagesItemsContainer=(standardImagesItemsContainer.fetchData=getStandardImages,standardImagesItemsContainer.getListOptions=getStandardImagesListOptions,standardImagesItemsContainer.monitorItems=[itemInfo.item.Id],standardImagesItemsContainer.setAttribute("data-monitorids",itemInfo.item.Id),context.querySelector(".backdrops"));standardImagesItemsContainer.fetchData=getBackdropImages,standardImagesItemsContainer.getListOptions=getBackdropImagesListOptions,standardImagesItemsContainer.setAttribute("data-monitorids",itemInfo.item.Id),_servicelocator.appHost.supports("fileinput")?context.querySelector(".btnAddImage").classList.remove("hide"):context.querySelector(".btnAddImage").classList.add("hide"),itemInfo.providers.length?context.querySelector(".btnBrowseAllImages").classList.remove("hide"):context.querySelector(".btnBrowseAllImages").classList.add("hide"),"TvChannel"===itemInfo.item.Type?context.querySelector(".tvChannelHelp").classList.remove("hide"):context.querySelector(".tvChannelHelp").classList.add("hide")}function onItemsContainerUpgraded(){refreshItemContainers(this)}function onOpened(){var standardImagesItemsContainer=this.querySelector(".images");standardImagesItemsContainer.resume?refreshItemContainers(this):_dom.default.addEventListener(standardImagesItemsContainer,"upgraded",onItemsContainerUpgraded,{once:!0})}_exports.default={show:function(options){return hasChanges=!1,function(options){return currentItemId=options.itemId,currentServerId=options.serverId,_loading.default.show(),Promise.all([require(["text!modules/imageeditor/imageeditor.template.html"]),getItemInfo()]).then(function(responses){var template=responses[0][0],responses=responses[1],dialogOptions={removeOnClose:!0,scrollY:!1},dialogOptions=(_layoutmanager.default.tv?dialogOptions.size="fullscreen":dialogOptions.size="fullscreen-border",_dialoghelper.default.createDialog(dialogOptions));return dialogOptions.classList.add("formDialog"),dialogOptions.innerHTML=_globalize.default.translateDocument(template,"sharedcomponents"),initEditor(dialogOptions,0,responses),dialogOptions.addEventListener("opened",onOpened),_dialoghelper.default.open(dialogOptions).then(function(){return currentServerId=currentItemId=null,_loading.default.hide(),hasChanges?Promise.resolve():Promise.reject()})})}(options)}}});