EmbyCrackedClient/web/modules/dialog/dialog.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
9.4 KiB
JavaScript

import layoutManager from"./../layoutmanager.js";import globalize from"./../common/globalize.js";import appRouter from"./../approuter.js";import dialogHelper from"./../dialoghelper/dialoghelper.js";import dom from"./../dom.js";import inputManager from"./../common/inputmanager.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import imageLoader from"./../common/imagehelper.js";import itemManager from"./../common/itemmanager/itemmanager.js";import"./../emby-elements/emby-button/emby-button.js";import"./../emby-elements/emby-scroller/emby-scroller.js";import"./../emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";function onInputCommand(e){var command=e.detail.command;if("up"===command)this.querySelector(".emby-scroller").scrollBackwards(),e.preventDefault();else if("down"===command){let scroller=this.querySelector(".emby-scroller");scroller.scrollForwards(),e.preventDefault()}}function addDirectionalScrolling(dlg){inputManager.on(dlg,onInputCommand.bind(dlg))}function wrapTextWithButtonIfNeeded(text,enableScrollWithDirectionButtons){return enableScrollWithDirectionButtons&&(text='<button type="button" is="emby-button" class="button-link text-align-start button-link-no-focus-bg dialog-btn-textscroll" style="font-weight:normal;color:inherit!important;transform:none!important;text-decoration:none!important;background:none!important;">'+text,text+="</button>"),text}function getTextLinkButton(item){var href=appRouter.getRouteUrl(item);return'<a is="emby-linkbutton" class="button-link noautofocus" data-href="'+href+'" href="'+href+'" style="max-width:100%;overflow:hidden;">'+item.Name+"</a>"}function getItemPreviewHtml(options,item){let html="";html+='<div class="dialogItemPreview flex flex-direction-row align-items-center">';var apiClient=connectionManager.getApiClient(item),imageUrlInfo=imageLoader.getImageUrl(item,apiClient,{height:60,width:200}),imageUrl=imageUrlInfo.imgUrl;let imgClass="";var shape,round="MusicArtist"===item.Type,lines=(html=imageUrl?(imgClass+=" dialogItemPreviewImage-bg",imageUrlInfo=imageUrlInfo.aspect||1,shape=imageLoader.getShapeFromAspect(imageUrlInfo),imgClass+=" dialogItemPreviewImage-bg-"+shape,round&&"square"===shape&&(imgClass+=" dialogItemPreviewImage-round"),html+('<div class="'+imgClass.trim())+'" style="aspect-ratio:'+imageUrlInfo+";background-image:url("+imageUrl+');"></div>'):(imgClass+=" dialogItemPreviewImage-iconcontainer",round&&(imgClass+=" dialogItemPreviewImage-round"),(html=(html=html+('<div class="'+imgClass.trim())+'"><i class="dialogItemPreviewImage-icon md-icon autortl">')+itemManager.getDefaultIcon(item))+"</i></div>"),html+='<div class="dialogItemPreviewContent">',[]),imageUrlInfo=(item.SeriesName?item.SeriesId?lines.push(getTextLinkButton({Type:"Series",Id:item.SeriesId,Name:item.SeriesName,IsFolder:!0,ServerId:item.ServerId})):lines.push(item.SeriesName):"Program"===item.Type&&lines.push(item.Name),lines.push(itemManager.getDisplayName(item,{})),"Server"===item.Type&&(apiClient&&apiClient.serverVersion()&&lines.push(apiClient.serverVersion()),apiClient)&&apiClient.serverAddress()&&lines.push(apiClient.serverAddress()),"User"===item.Type&&options.showServerName&&(shape=apiClient.serverName())&&lines.push(shape),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?imageUrlInfo.push(getTextLinkButton({Type:"Photo"===item.MediaType?"PhotoAlbum":"MusicAlbum",Id:item.AlbumId,Name:item.Album,ServerId:item.ServerId})):item.Album&&imageUrlInfo.push(item.Album),item.ProductionYear&&"Episode"!==item.Type&&imageUrlInfo.push(item.ProductionYear),imageUrlInfo.length&&lines.push(imageUrlInfo.join(" &middot; "));for(let i=0,length=Math.min(lines.length,3);i<length;i++)html=1<=i?(html+='<div class="dialogItemPreviewText secondaryText">')+lines[i]+"</div>":(html+='<div class="dialogItemPreviewText">')+lines[i]+"</div>";return html=html+"</div>"+"</div>"}function showDialog(options,template){var dialogOptions={removeOnClose:!0,scrollY:!1,lowResAutoHeight:!0},enableTvLayout=layoutManager.tv;enableTvLayout&&(dialogOptions.size="fullscreen");let dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog","justify-content-center"),options.dialogType&&dlg.classList.add(options.dialogType+"Dialog");var optionButtons=options.buttons||[],dialogOptions=enableTvLayout&&0===optionButtons.length,template=(dialogOptions&&(template=template.replace('data-focusscroll="true"','data-focusscroll="false"')),dlg.innerHTML=globalize.translateHtml(template,"sharedcomponents"),dlg.querySelector(".formDialogContent")),enableTvLayout=(template.classList.add("no-grow"),enableTvLayout?template.style["max-height"]="60%":dom.allowBackdropFilter()&&dlg.classList.add("dialog-blur"),dlg.querySelector(".formDialogHeaderTitle")),template=dlg.querySelector(".formDialogHeader"),enableTvLayout=(options.item?(template.insertAdjacentHTML("afterbegin",getItemPreviewHtml(options,options.item)),template.classList.remove("justify-content-center"),template.classList.add("padded-left","padded-right","dialogHeader-withpreview","dialog-content-centered"),enableTvLayout.classList.add("hide")):options.title?enableTvLayout.innerHTML=options.title||"":(enableTvLayout.classList.add("hide"),template.style.height="auto"),dlg.querySelector(".dialogContentInner"));let isDialogContentCentered;if(!1!==options.centerText&&(enableTvLayout.style.textAlign="center",isDialogContentCentered=!0),layoutManager.tv||optionButtons.length||dlg.classList.add("dialog-largefont"),options.html)enableTvLayout.innerHTML=wrapTextWithButtonIfNeeded(options.html,dialogOptions);else if(options.preFormattedText)enableTvLayout.innerHTML=wrapTextWithButtonIfNeeded('<pre class="text-align-start" style="font-size:inherit;margin:0;">'+options.preFormattedText+"</pre>",dialogOptions);else if(options.code)enableTvLayout.innerHTML=wrapTextWithButtonIfNeeded('<div class="text-align-start"><code class="text-align-start" style="font-size:inherit;margin:0;">'+options.code+"</code></div>",dialogOptions);else if(options.text){let textContainer=enableTvLayout;isDialogContentCentered&&(enableTvLayout.innerHTML='<span style="display:inline-block;" class="text-align-start"></span>',textContainer=enableTvLayout.querySelector("span")),textContainer.innerText=wrapTextWithButtonIfNeeded((options.text||"").replaceAll("<br/>","\n"),dialogOptions)}else enableTvLayout.classList.add("hide");let i,length,html="",hasDescriptions=!1;for(i=0,length=optionButtons.length;i<length;i++){var item=optionButtons[i];let buttonClass="btnOption raised formDialogFooterItem formDialogFooterItem-autosize";item.type&&(buttonClass+=" button-"+item.type),item.description&&(hasDescriptions=!0),html+=item.href?'<a is="emby-linkbutton" target="_blank" href="'+item.href+'" class="'+buttonClass+'" data-id="'+item.id+'">'+item.name+"</a>":'<button is="emby-button" type="button" class="'+buttonClass+'" data-id="'+item.id+'"><span>'+item.name+"</span></button>",item.description&&(html+='<div class="formDialogFooterItem formDialogFooterItem-autosize fieldDescription" style="margin-top:.25em!important;margin-bottom:1.25em!important;">'+item.description+"</div>")}template=dlg.querySelector(".formDialogFooter");(template.innerHTML=html)||(template.classList.add("hide"),(enableTvLayout=dlg.querySelector(".scrollSlider")).style["padding-bottom"]="2em",options.item&&(enableTvLayout.style["padding-top"]="0"),layoutManager.tv?dlg.querySelector(".formDialogHeader").insertAdjacentHTML("afterbegin",'<button type="button" is="emby-dialogclosebutton" class="dialog-dialog-close" closetype="done"></button>'):dlg.querySelector(".formDialogHeader").insertAdjacentHTML("afterbegin",'<button type="button" is="emby-dialogclosebutton" class="dialog-dialog-close dialog-dialog-close-reducefont" closetype="done"></button>')),hasDescriptions&&dlg.querySelector(".formDialogFooter").classList.add("formDialogFooter-vertical");let dialogResult;function onButtonClick(){dialogResult=this.getAttribute("data-id"),dialogHelper.close(dlg)}var buttons=dlg.querySelectorAll(".btnOption");for(i=0,length=buttons.length;i<length;i++)buttons[i].addEventListener("click",onButtonClick);dialogOptions&&addDirectionalScrolling(dlg);let timeout;return options.timeout&&(timeout=setTimeout(function(){dialogResult="_timeout",dialogHelper.close(dlg)},options.timeout)),dialogHelper.open(dlg).then(function(){return timeout&&clearTimeout(timeout),dialogResult||Promise.reject()})}require(["material-icons","formDialogStyle","flexStyles","css!modules/dialog/dialog.css"]);let uiDependencies=["material-icons","emby-button","paper-icon-button-light","formDialogStyle","flexStyles","emby-scroller"];export default function(text,title){let options;options="string"==typeof text?{title:title,text:text}:text;title=uiDependencies;let deps;return title.length?(deps=title.slice(0),uiDependencies=[]):deps=[],deps.unshift("text!modules/dialog/dialog.template.html"),require(deps).then(function(responses){return window.dispatchEvent(new CustomEvent("userprompt",{detail:{promptType:options.dialogType},bubbles:!0,cancelable:!1})),showDialog(options,responses[0])})}