EmbyCrackedClient/web/modules/listview/listview.js

1 line
40 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import dom from"./../dom.js";import browser from"./../browser.js";import layoutManager from"./../layoutmanager.js";import globalize from"./../common/globalize.js";import datetime from"./../common/datetime.js";import textEncoding from"./../common/textencoding.js";import mediaInfo from"./../mediainfo/mediainfo.js";import indicators from"./../indicators/indicators.js";import focusManager from"./../focusmanager.js";import itemManager from"./../common/itemmanager/itemmanager.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import imageLoader from"./../common/imagehelper.js";import lazyImageLoader from"./../lazyloader/lazyimageloader.js";import itemShortcuts from"./../shortcuts.js";import playbackManager from"./../common/playback/playbackmanager.js";import EmbyRatingButton from"./../emby-elements/userdatabuttons/emby-ratingbutton.js";import EmbyPlaystateButton from"./../emby-elements/userdatabuttons/emby-playstatebutton.js";import dataFormatter from"./../common/dataformatter.js";import"./../emby-elements/emby-button/emby-button.js";require(["css!modules/listview/listview.css"]);let supportsNativeLazyLoading="loading"in HTMLImageElement.prototype,supportsAsyncDecodedImages=dom.supportsAsyncDecodedImages(),decodingAttribute=supportsAsyncDecodedImages?' decoding="async"':"",supportsObjectFit=CSS.supports("object-fit","contain")&&!browser.edge,enableFocusTransfrom=dom.allowFocusScaling(),supportsCssVariables=CSS.supports("color","var(--fake-var)"),secondaryTextClass=supportsCssVariables?"secondaryText":"",DownloadIcon="&#xe5db;",embyCheckboxLoaded;function loadEmbyCheckbox(){embyCheckboxLoaded||(embyCheckboxLoaded=!0,Emby.importModule("./modules/emby-elements/emby-checkbox/emby-checkbox.js"))}function getIndex(item,options){return"disc"!==options.index||null==(options=item.ParentIndexNumber)?"":globalize.translate("ValueDiscNumber",options)}function getTextLinesHtml(textlines,options){let html="",isFirst=!0,listItemBodyTextTagName=options.listItemBodyTextTagName;var cssClass=options.listItemBodyTextClass;for(let i=0,length=textlines.length;i<length;i++){var text=textlines[i];text&&(isFirst?(html+="<"+listItemBodyTextTagName+' class="'+cssClass+'">',isFirst=!1,listItemBodyTextTagName="div"):html+='<div class="'+cssClass+" "+options.listItemBodyTextSecondaryClass+'">',html=(html+=text)+("</"+listItemBodyTextTagName)+">")}return html}function getId(item){return item.Id}function getTextActionButton(options,item,text,serverId,parentId,isSameItemAsCard){if(text=text||itemManager.getDisplayName(item),layoutManager.tv)return textEncoding.htmlEncode(text);if(!1===options.textLinks)return textEncoding.htmlEncode(text);if(!item.Id&&!isSameItemAsCard)return textEncoding.htmlEncode(text);text=textEncoding.htmlEncode(text);let dataAttributes;dataAttributes=isSameItemAsCard?"":itemShortcuts.getShortcutAttributesHtml(item,{serverId:serverId,parentId:parentId});item=!options.draggable||isSameItemAsCard?"":' draggable="true"',serverId='<button title="'+text+'" title="'+text+'" '+dataAttributes+' type="button"'+item+' class="itemAction textActionButton listItem-textActionButton emby-button button-link" data-action="link">';return serverId+text+"</button>"}function isUsingLiveTvNaming(itemType){return"Program"===itemType||"Timer"===itemType||"Recording"===itemType}function getAirTimeText(item,showAirDateTime,showAirEndTime){let airTimeText="";if(item.StartDate)try{var date=new Date(Date.parse(item.StartDate));showAirDateTime&&(airTimeText+=datetime.toLocaleDateString(date,{weekday:"short",month:"short",day:"numeric"})+" "),airTimeText+=datetime.getDisplayTime(date),item.EndDate&&showAirEndTime&&(date=new Date(Date.parse(item.EndDate)),airTimeText+=" &ndash; "+datetime.getDisplayTime(date))}catch(e){console.log("Error parsing date: "+item.StartDate)}return airTimeText}function mapArtistsToTextButtons(item,artistItems,options){return artistItems.map(function(a){return a.Type="MusicArtist",a.IsFolder=!0,getTextActionButton(options,a,null,item.ServerId)}).join(", ")}function getMdIconClass(icon){switch(icon){case"&#xe88a;":cas