import browser from"./../../browser.js";import itemShortcuts from"./../../shortcuts.js";import connectionManager from"./../../emby-apiclient/connectionmanager.js";import serverNotifications from"./../../common/input/api.js";import events from"./../../emby-apiclient/events.js";import globalize from"./../../common/globalize.js";import dom from"./../../dom.js";import layoutManager from"./../../layoutmanager.js";import datetime from"./../../common/datetime.js";import focusManager from"./../../focusmanager.js";import loading from"./../../loading/loading.js";import mouseManager from"./../../input/mouse.js";import userSettings from"./../../common/usersettings/usersettings.js";import gridRowRenderer from"./gridrowrenderer.js";import"./../emby-button/emby-button.js";import"./../emby-scroller/emby-scroller.js";import"./../emby-button/paper-icon-button-light.js";import MethodTimer from"./../../common/methodtimer.js";import EmbyItemsContainer from"./../emby-itemscontainer/emby-itemscontainer.js";import inputManager from"./../../common/inputmanager.js";import playbackManager from"./../../common/playback/playbackmanager.js";require(["css!modules/emby-elements/guide/guide.css","programStyles","material-icons","flexStyles"]);let virtualChunkSize=25,cellCurationMinutes=30,cellDurationMs=60*cellCurationMinutes*1e3,msPerMinute=6e4,msPerHour=36e5,msPerDay=864e5,msPerPage=8*msPerHour,startId=Date.now();function showActionSheet(options){return Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)})}function normalizeDateToTimeslot(value,roundUp){var delta=value%cellDurationMs;return roundUp&&delta&&(value+=cellDurationMs),value-=delta}function onSettingsButtonClick(e){let instance=this;Emby.importModule("./modules/emby-elements/guide/guide-settings.js").then(function(guideSettingsDialog){guideSettingsDialog.show({categoryOptions:instance.categoryOptions,positionTo:e.target,positionY:"bottom",positionX:"after"},connectionManager.getApiClient(instance.options.serverId)).then(function(){instance.refresh()})})}function getDateMenuOptions(instance){var items=[];let start=new Date(instance._startDateMs);for(var end=new Date(instance._endDateMs),today=new Date,nowHours=today.getHours(),nowMinutes=30<=today.getMinutes()?30:0,nowHours=(start.setHours(nowHours,nowMinutes,0,0),end.setHours(0,0,0,0),start.getTime()>=end.getTime()&&end.setDate(start.getDate()+1),start=new Date(Math.max(today,start)),instance.scroller),nowMinutes=instance.scroller.getScrollWidth(),today=(nowMinutes-=getChannelCellWidth(instance),instance._startDateMs),instance=instance._endDateMs,nowHours=Math.abs(nowHours.getScrollLeft())/nowMinutes*(instance-today),date=(nowHours+=today,new Date(nowHours));start<=end;)items.push({name:datetime.toLocaleDateString(start,{weekday:"long",month:"short",day:"numeric"}),value:start.getTime().toString(),selected:date.getDate()===start.getDate()&&date.getMonth()===start.getMonth()&&date.getFullYear()===start.getFullYear()}),start.setDate(start.getDate()+1),start.setHours(0,0,0,0);return items}function onDateButtonClick(e){showActionSheet({items:getDateMenuOptions(this),positionTo:e.target,title:globalize.translate("Date"),positionY:"bottom",hasItemSelectionState:!0}).then(onSelectedDateValue.bind(this))}function scrollToTimeMs(instance,value,exactTime,autoFocus){value=parseInt(value);var startDate,endDate,date=new Date,value=(date.setTime(value),instance.scroller),scrollWidth=instance.scroller.getScrollWidth();scrollWidth&&(scrollWidth-=getChannelCellWidth(instance),startDate=instance._startDateMs,endDate=instance._endDateMs,exactTime||(exactTime=Math.abs(value.getScrollLeft())/scrollWidth*(endDate-startDate),exactTime+=startDate,exactTime=new Date(exactTime),date.setHours(exactTime.getHours(),exactTime.getMinutes()+1,0,0)),date.setTime(normalizeDateToTimeslot(date.getTime())),exactTime=Math.max(date.getTime()-startDate,0)/(endDate-startDate),value.scrollToPosition({left:exactTime*scrollWidth*value.getScrollLeftMultiplier(),behavior:"instant"}),onScroll.call(instance,{currentTarget:instance.scroller,target:instance.scroller,autoFocus:autoFocus}))}function onSelectedDateValue(value){scrollToTimeMs(this,value,!1,!0)}function onTimerCreated(e,apiClient,data){var programId=data.ProgramId,newTimerId=data.Id,cells=this.options.element.querySelectorAll('.programCell[data-id="'+programId+'"]');for(let i=0,length=cells.length;i'):programCellInner.insertAdjacentHTML("beforeend",'')),newTimerId&&cell.setAttribute("data-timerid",newTimerId)}}function onSeriesTimerCreated(e,apiClient,data){}function onTimerCancelled(e,apiClient,data){var options=this.options,data=data.Id,cells=options.element.querySelectorAll('.programCell[data-timerid="'+data+'"]');for(let i=0,length=cells.length;i=currentPositionMs&¤tPositionMs+cellDurationMs>activeElement&&(currentPositionMs=activeElement),newRowToFocus.Programs||[]);let startIndex=0;for(let i=0,length=programs.length;i'+item.Name+""}var parent=instance.options.element.querySelector(".tagFilters");parent.innerHTML=html;for(let i=0,length=selectedTagIds.length;i'),this.currentTimeIndicatorDots=this.options.element.querySelectorAll(".guide-currentTimeIndicatorDot")),this.options.element.querySelector(".guideEpg-currentTimeIndicatorDot")),listOptions=listOptions.channelCellClass||"";listOptions.includes("channelCell-wide2")?(firstChannelCell.classList.add("channelCell-wide2"),firstChannelCell.classList.remove("channelCell-wide"),settingsChannelCell.classList.add("channelCell-wide2"),settingsChannelCell.classList.remove("channelCell-wide"),elem.classList.add("guideEpg-currentTimeIndicatorDot-wide2"),elem.classList.remove("guideEpg-currentTimeIndicatorDot-wide")):listOptions.includes("channelCell-wide")?(firstChannelCell.classList.add("channelCell-wide"),firstChannelCell.classList.remove("channelCell-wide2"),settingsChannelCell.classList.add("channelCell-wide"),settingsChannelCell.classList.remove("channelCell-wide2"),elem.classList.add("guideEpg-currentTimeIndicatorDot-wide"),elem.classList.remove("guideEpg-currentTimeIndicatorDot-wide2")):(firstChannelCell.classList.remove("channelCell-wide","channelCell-wide2"),settingsChannelCell.classList.remove("channelCell-wide","channelCell-wide2"),elem.classList.remove("guideEpg-currentTimeIndicatorDot-wide","guideEpg-currentTimeIndicatorDot-wide2")),this.startCurrentTimeUpdateInterval()}function onLiveButtonClick(e){this.scrollToNow()}function removeSelectedClass(elems){for(let i=0,length=elems.length;icheck_circle')}function selectAllButtonIfNeeded(instance){instance.options.element.querySelectorAll(".emby-tab-button-active:not(.btnGuideCategory-all)").length||addSelectedClass(instance.options.element.querySelector(".btnGuideCategory-all"))}function onFilterScrollerClick(e){let needsRefresh;var btnGuideCategory=e.target.closest(".btnGuideCategory"),type=(btnGuideCategory&&((type=btnGuideCategory.getAttribute("data-type"))?btnGuideCategory.classList.contains("emby-tab-button-active")?(removeSelectedClass([btnGuideCategory]),removeItemOnce(this.categoryOptions.categories,type),selectAllButtonIfNeeded(this)):(removeSelectedClass(this.options.element.querySelectorAll(".btnGuideCategory-all")),addSelectedClass(btnGuideCategory),this.categoryOptions.categories.push(type)):(this.categoryOptions.categories=[],userSettings.set("guide-tagids",""),removeSelectedClass(this.options.element.querySelectorAll(".emby-tab-button-active:not(.btnGuideCategory-all)")),addSelectedClass(btnGuideCategory)),needsRefresh=!0),e.target.closest(".btnGuideTag"));if(type){let selectedTagIds=userSettings.get("guide-tagids")||null;selectedTagIds=selectedTagIds?selectedTagIds.split(","):[];btnGuideCategory=type.getAttribute("data-id");type.classList.contains("emby-tab-button-active")?(removeSelectedClass([type]),removeItemOnce(selectedTagIds,btnGuideCategory),selectAllButtonIfNeeded(this)):(removeSelectedClass(this.options.element.querySelectorAll(".btnGuideCategory-all")),addSelectedClass(type),selectedTagIds.push(btnGuideCategory)),userSettings.set("guide-tagids",selectedTagIds.join(",")),needsRefresh=!0}needsRefresh&&this.refresh()}function onFocusInScroller(e){var item,e=e.target;e.classList.contains("programCell")&&(item=getProgramFromProgramCell(e=e))&&events.trigger(this,"focus",[{item:item,element:e}])}function bindScrollEventOnUpgrade(instance){instance.scroller.waitForCustomElementUpgrade().then(function(){instance.scroller.addScrollEventListener(onScroll.bind(instance),{passive:!0})}),instance.headerScroller.waitForCustomElementUpgrade().then(function(){instance.headerScroller.addScrollEventListener(onHeaderScroll.bind(instance),{passive:!0})})}function getContextMenuElementFromChildNode(child){return itemShortcuts.getItemElementFromChildNode(child,!1,this)}function getScrollButtonPageSize(scrollContainerSize,scrollType){return scrollContainerSize=scrollContainerSize-getChannelCellWidth(this)-20,Math.max(scrollContainerSize,0)}function initialRender(instance){return instance.rendered?Promise.resolve():(instance.rendered=!0,require(["text!modules/emby-elements/guide/tvguide.template.html"]).then(function(responses){var context=instance.options.element,responses=(context.classList.add("tvguide"),context.insertAdjacentHTML("beforeend",globalize.translateDocument(responses[0],"sharedcomponents")),instance.firstChannelCell=context.querySelector(".firstChannelCell"),instance.settingsChannelCell=context.querySelector(".settingsChannelCell"),instance.onTimerCreatedFn=onTimerCreated.bind(instance),events.on(serverNotifications,"TimerCreated",instance.onTimerCreatedFn),instance.onSeriesTimerCreatedFn=onSeriesTimerCreated.bind(instance),events.on(serverNotifications,"SeriesTimerCreated",instance.onSeriesTimerCreatedFn),instance.onTimerCancelledFn=onTimerCancelled.bind(instance),events.on(serverNotifications,"TimerCancelled",instance.onTimerCancelledFn),instance.onSeriesTimerCancelledFn=onSeriesTimerCancelled.bind(instance),events.on(serverNotifications,"SeriesTimerCancelled",instance.onSeriesTimerCancelledFn),instance.scroller=instance.options.element.querySelector(".virtualScrollerScrollContainer"),instance.scroller.getScrollButtonPageSize=getScrollButtonPageSize.bind(instance),instance.headerScroller=instance.options.element.querySelector(".headerScroller"),instance.uniqueId=startId,instance.scrollSliderUniqueClass="epgScrollSlider"+startId,instance.scroller.classList.add("epgVirtualScrollerScrollContainer-both"),bindScrollEventOnUpgrade(instance),context.querySelector(".itemsContainer"));responses.fetchData=instance.getItems.bind(instance),responses.afterRefresh=afterRefresh.bind(instance),responses.virtualChunkSize=virtualChunkSize,responses.getListOptions=instance.getListOptions.bind(instance),instance.itemsContainer=responses,instance.boundFocusableElements=getFocusableElementsInRow.bind(instance),responses.updateVirtualElement=updateVirtualElement.bind(instance),responses.onRecycleElement=onRecycleElement.bind(instance),responses.getContextMenuElementFromChildNode=getContextMenuElementFromChildNode.bind(responses),instance.channelCellResizeObserver=new ResizeObserver(onChannelCellResize.bind(instance),{}),instance.channelCellResizeObserver.observe(instance.firstChannelCell),instance.channelCellResizeObserver.observe(instance.scroller);let i,length;var settingsButtons=context.querySelectorAll(".btnGuideViewSettings");for(instance.settingsButtons=settingsButtons,i=0,length=settingsButtons.length;i')+getDisplayTime(startDate)+"",startDate.setTime(startDate.getTime()+cellDurationMs);return html}function renderWidthCss(instance){var numCells=Math.ceil((instance._endDateMs-instance._startDateMs)/cellDurationMs);let html=` .epgScrollSlider { width: `+32*numCells+`ch; } @media all and (min-width: 80em) { .epgScrollSlider { width: `+40*numCells+`ch; } } @media all and (min-width: 120em) { .epgScrollSlider { width: `+50*numCells+`ch; } } @media all and (orientation: portrait) { .epgScrollSlider { width: calc(`+numCells+` * min(50ch, 34vw)); } } .epgScrollSlider-tv { width: `+19*numCells+`vw; } `,elem=(console.log("rendering guide width css"),html=html.replaceAll("epgScrollSlider",instance.scrollSliderUniqueClass),document.querySelector("."+instance.styleElementUniqueClass));elem?elem.innerHTML=html:((elem=document.createElement("style")).innerHTML=html,document.head.appendChild(elem))}function onGetGuideInfo(guideInfo){var guideInfo=Date.parse(guideInfo.EndDate),startDate=(loading.show(),this._startDateMs=normalizeDateToTimeslot(Date.now())),guideInfo=this._endDateMs=normalizeDateToTimeslot(guideInfo,!0),guideInfo=(renderWidthCss(this),this.scroller.notifyResized(),this.options.element.querySelector(".timeslotHeaders").innerHTML=getTimeslotHeadersHtml(startDate,guideInfo),this.currentPositionMs?null:startDate);return this.updateDateButtonText(guideInfo,Math.abs(this.scroller.getScrollLeft())),refreshTagFilters(this),this.itemsContainer.virtualScroller?.resetAll(),this.itemsContainer.resume({refresh:!0}).then(function(){loading.hide()})}let dateLocalOptions={weekday:"short",month:"short",day:"numeric"};function hideOrShow(elem,hide){!0===elem._showing?hide&&(elem.classList.add("hide"),elem._showing=!1):hide||(elem.classList.remove("hide"),elem._showing=!0)}function isInCurrentFocusScope(instance){return!focusManager.hasExclusiveFocusScope()}Guide.prototype.updateCurrentPositionIfNeeded=function(){var now,currentPositionMs=this.currentPositionMs;currentPositionMs&&(console.log("currentPositionMs: "+currentPositionMs),currentPositionMs=normalizeDateToTimeslot(currentPositionMs),console.log("currentPositionMs normalized: "+currentPositionMs),now=Date.now(),console.log("now: "+now),currentPositionMs<=now&&nowcellDurationMs?hideOrShow(scrollWidth,!1):hideOrShow(scrollWidth,!0),userSettings.guideChannelStyle();userSettings.showChannelNumberInGuide(),!1===this.options.dateButton?this.dateButtons[0].classList.add("hide"):this.dateButtons[0].classList.remove("hide")};let minIdleTime=6e4;function onCurrentTimeUpdate(){var dots=this.currentTimeIndicatorDots,startDateMs=this._startDateMs,endDate=this._endDateMs;let pct;var now=Date.now(),showIndicator=0<=(pct=startDateMs&&endDate?(now-startDateMs)/(endDate-startDateMs)*100:-100)&&pct<=100,displayTime=(pct=pct.toFixed(2)+"%",getDisplayTime(new Date(now)));for(let i=0,length=dots.length;i