ips.templates.set('livetopics.attendee_list',`
<div id="elLiveTopicAttendeeList" class="ipsPadding">
    <ul class="ipsLiveTopic__attendee-list">
        {{{attendees}}}
    </ul>
</div>
`);ips.templates.set('livetopics.attendee_card',`
<li>
    <a href="{{{member_link}}}" rel="nofollow" target="_blank" data-ipshover data-ipshover-width="370" data-ipshover-target="{{{member_link}}}?do=hovercard" class="ipsUserPhoto ipsUserPhoto_medium" data-ipsTooltip title="{{{name}}}">
        <img src="{{{photo}}}" alt="" />
    </a>
    <h4>
        <a href="{{{member_link}}}" rel="nofollow" target="_blank" data-ipshover data-ipshover-width="370" data-ipshover-target="{{{member_link}}}?do=hovercard" title="Go to {{{name}}}'s profile" class="ipsType_break" style="color: rgb( var(--theme-link) );">
            {{{name}}}
        </a>
    </h4>
</li>
`);ips.templates.set('livetopics.video_time_selector_caption',`
<div class="ipsLiveTopic__video_time_selector ipsBox ipsPadding ipsMargin_top:half">
    <h3 class="ipsMargin_top:none">{{{prompt_message}}}</h3>
    <div>
        <button class="ipsButton ipsButton_positive ipsMargin_right:half" data-role="accept_button"><i class="fa fa-check"></i> Use current player time</button>
        <button class="ipsButton ipsButton_negative" data-role="cancel_button"><i class="fa fa-times"></i> Cancel</button>
    </div>
</div>
`);;
(function($,_,undefined){ips.controller.register('cloud.front.attendeeList',{open:false,container:null,dialog:null,attendeeList:{},count:1,initialize:function(){this.on(document,"socket.livetopic:attendee_list_updated",this.handleAttendeeList);this.setup();},setup:function(){this.container=this.scope.find(`div[data-role="attendee-container"]`);$(this.container).html(this.getAttendeeList());$(this.container).hide();this.dialog=ips.ui.dialog.create({title:ips.getString('livetopics_attendee_list'),content:this.container,size:'medium'});this.on('click','[data-role="attendee_toggler"]',function(){this.show();});},hide:function(){$(this.container).hide();this.open=false;},show:function(){if(this.dialog){this.open=true;$(this.container).show();this.dialog.show();this.dialog.updateContent(this.getAttendeeList());}},handleAttendeeList(data,payload){try{let changed=false;let newAttendeeData={};for(let[id,{name,photo}]of Object.entries(payload.message.attendees)){id=Number(id);newAttendeeData[id]={name,photo};if(!(id in this.attendeeList)||this.attendeeList[id].name!==name||this.attendeeList[id].photo!==photo){changed=true;}}
if('total_connected'in payload.message&&payload.message.total_connected!==this.count){this.count=payload.message.total_connected;changed=true;}
if(!changed){for(const id of Object.keys(this.attendeeList)){if(!(id in newAttendeeData)){changed=true;break;}}}
this.attendeeList=newAttendeeData;if(changed){this.updateAttendeeCount();if(this.open){this.dialog?.updateContent(this.getAttendeeList());}}}catch(e){Debug.error(e);}},getAttendeeCard(id,data){return ips.templates.render('livetopics.attendee_card',{name:data.name,photo:data.photo,member_link:`${window.ipsSettings?.baseURL.replace(/^(.*?)\/+$/, '$1')}/profile/${id}-${data.name?.replaceAll(/[^a-z0-9_]+/ig, '') || 'member'}`})},getAttendeeList(){const attendeeCards=Object.entries(this.attendeeList).map(([id,data])=>this.getAttendeeCard(id,data));return ips.templates.render('livetopics.attendee_list',{attendees:attendeeCards.join('')});},updateAttendeeCount(){this.scope.find('[data-role="attendee_count"]').text(this.count)}})})(jQuery,_);
(function($,_,undefined){"use strict";ips.controller.register("cloud.front.livetopicCommunity",{baseUrl:null,settings:{},initialize:function(){this.baseUrl=this.scope.attr('data-baseUrl');this.settings=$.parseJSON(this.scope.attr('data-settings'));this.on('click','[data-action="liveTopicStart"]',this.start);this.on('click','[data-action="liveTopicClaim"]',this.claim);this.on('click','[data-action="liveTopicEnd"]',this.end);this.on(document,'submitDialog','[data-role="liveTopicClaimDialog"]',this.claimDialogSubmitted);this.on(document,'submitDialog','[data-role="liveTopicChangeApproval"]',this.approvalDialogSubmitted);this.on(document,'submitDialog','[data-role="liveTopicChangeVideo"]',this.videoDialogSubmitted);this.on('click',this.keepInView);this.on('click','#elLiveTopicFull',this.toggleFullScreen);this.on(document,"socket.livetopic_embed_change",this.updateVideoEmbed);this.on('menuItemSelected',this.menuSelected);if(this.settings.hasStartMessage&&!this.isHost()&&this.settings.in_session){this.showStartMessage();}
this.attendeeSetup();this.initCountdown();},keepInView:function(ev){let deviceSize=getComputedStyle(document.documentElement).getPropertyValue('--device-size'),scrollTo=document.querySelector('.ipsLiveTopicGrid--active');if(deviceSize==='large'){scrollTo?.scrollIntoView?.({behavior:'smooth'});}},toggleFullScreen:function(ev){let fullClass='ipsLiveTopic-is-fullscreen',button=ev.currentTarget;document.documentElement.classList.toggle(fullClass);if(document.documentElement.classList.contains(fullClass)){button.classList.remove('ipsButton_light');button.classList.add('ipsButton_primary');}else{button.classList.remove('ipsButton_primary');button.classList.add('ipsButton_light');}},showStartMessage:function(){let dialog=ips.ui.dialog.create({content:$('#elStartMessage').html(),title:$('#elStartMessage').attr('data-title'),modal:true});dialog.show();},attendeeSetup:function(){if(this.settings.show_attendees=='off'){$('#elLiveTopic_attendee_list').hide();}
if(this.settings.show_attendees=='hosts'){if(!this.isHost()){$('#elLiveTopic_attendee_list').hide();}}},isHost:function(){let hosts=[this.settings.host];if(this.settings.other_hosts.length){hosts.push(...this.settings.other_hosts);}
if(hosts.includes(this.settings.memberId)){return true;}
return false;},showError:function(message){Debug.log(message);ips.ui.alert.show({type:'alert',icon:'warning',focus:'ok',message:ips.getString(data.response.error.replace('livetopic_error_',''))});},updateVideoEmbed:function(e,data){if(data?.payload?.has_embed&&data?.payload?.embed_html){this.scope.find('.ipsLiveTopicEmbed').html(data.payload.embed_html).removeClass('ipsHide');$('#el_LiveTopicWrapper').addClass('ipsLiveTopicGrid--with-video');}else{this.scope.find('.ipsLiveTopicEmbed').html('').addClass('ipsHide');$('#el_LiveTopicWrapper').removeClass('ipsLiveTopicGrid--with-video');}},videoDialogSubmitted:function(e,data){if(data.response.error){this.showError(data.response.error);return;}},approvalDialogSubmitted:function(e,data){if(data.response.error){this.showError(data.response.error);return;}},claimDialogSubmitted:function(e,data){const _self=this;if(data.response.error){this.showError(data.response.error);return;}else{ips.getAjax()(this.baseUrl,{data:{do:'getHostNames',}}).done(function(response){_self.scope.find('[data-role="hostNames"]').html(response);});}},initCountdown:function(){const _self=this;const wrapper=this.scope.find('[data-action="updateTime"]');function updateClock(){const t=_self._getTimeRemaining(wrapper.attr('data-time'));if(t.days==0&&t.hours==0){wrapper.find('span').html(ips.getString('cloud_livetopic_starting_in',{time:t.minutes}));}
if(t.total<=0){clearInterval(timeinterval);wrapper.find('span').html(ips.getString('cloud_livetopic_starting_soon'));}}
updateClock();const timeinterval=setInterval(updateClock,1000);},menuSelected:function(event,data){if(data.originalEvent){data.originalEvent.preventDefault();}
switch($(data.originalEvent.target).attr('data-action')){case'liveTopicEnd':this.end(event);break;case'liveTopicStart':this.start(event);break;}},_getTimeRemaining:function(endtime){const total=Date.parse(endtime)-Date.parse(new Date());const seconds=Math.floor((total/1000)%60);const minutes=Math.floor((total/1000/60)%60);const hours=Math.floor((total/(1000*60*60))%24);const days=Math.floor(total/(1000*60*60*24));return{total,days,hours,minutes,seconds};},claim:function(e){const _self=this;ips.ui.alert.show({type:'confirm',icon:'warning',focus:'cancel',message:ips.getString('cloud_livetopic_claim'),callbacks:{ok:function(){_self.start(e);},cancel:function(){}}});},start:function(e){e.preventDefault();var _self=this;ips.getAjax()(this.baseUrl,{data:{do:'start',}}).done(function(response){Debug.log(response);}).fail(function(response){Debug.log(response.responseJSON.message);ips.ui.alert.show({type:'alert',message:response.responseJSON.message+"<br><br>"+ips.getString('cloud_could_not_start_live_topic'),icon:'warn'});});},end:function(e){e.preventDefault();var _self=this;ips.ui.alert.show({type:'confirm',icon:'warning',focus:'cancel',message:ips.getString('cloud_livetopic_end_confirm'),callbacks:{ok:function(){ips.getAjax()(_self.baseUrl,{data:{do:'end',}}).done(function(response){Debug.log(response);}).fail(function(response){Debug.log(response.responseText);ips.ui.alert.show({type:'alert',message:response.responseJSON.message+"<br><br>"+ips.getString('cloud_could_not_end_live_topic'),icon:'warn'});});},cancel:function(){}}});}});})(jQuery,_);;
(function($,_,undefined){"use strict";ips.controller.register("cloud.front.livetopicStatusListener",{initialize:function(){this.on(document,"socket.livetopic:started",()=>window.location.reload());this.on(document,"socket.livetopic:ended",()=>window.location.reload());}});})(jQuery,_);
(function($,_,undefined){"use strict";ips.controller.register("cloud.front.notification",{dialog:null,liveTopicId:0,closedLiveTopicDialogIds:[],initialize:function(){this.liveTopicId=this.scope.attr('data-ipsLiveId');$(document).on('hideDialog',_.bind(this.dialogClosed,this));var show=true;if(!_.isUndefined(ips.utils.cookie.get('lt_notify_closedIds'))){this.closedLiveTopicDialogIds=ips.utils.cookie.get('lt_notify_closedIds').split(',');if(_.size(this.closedLiveTopicDialogIds)&&this.closedLiveTopicDialogIds.indexOf(this.liveTopicId)!=-1){show=false;}}
if(show){this.closedLiveTopicDialogIds.push(this.liveTopicId);this.dialog=ips.ui.dialog.create({content:'#elLiveTopicReminderContent',title:ips.getString('livetopics_event_notification'),size:'narrow',modal:false}).show();this.scope.closest('.ipsDialog').find('.ipsDialog_title').html('<div class="ipsLiveTopic__pulse"></div>'+ips.getString('livetopics_event_notification'));}else{$('#elLiveTopicReminderContent').hide();}},dialogClosed:function(e){ips.utils.cookie.set('lt_notify_closedIds',_.uniq(_.values(this.closedLiveTopicDialogIds)).join(','),true);}});})(jQuery,_);;