Version 5.0.14

This commit is contained in:
Neo committed 2025-12-19 19:17:57 -08:00
1 parent 5efe744c5f
commit dbd774b30c
364 files changed
+7048 -1377

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.report',{initialize:function(){this.on(document,'submitDialog','[data-role="warnUserDialog"]',this.dialogSubmitted);this.on('menuItemSelected',this.menuItemSelected);},menuItemSelected:function(e,data=e.detail){data.originalEvent.preventDefault();var link=$(data.menuElem).find('[data-ipsMenuValue="'+data.selectedItemID+'"] a');var langString=(data.selectedItemID=='spamFlagButton')?ips.getString('confirmFlagAsSpammer'):ips.getString('confirmUnFlagAsSpammer');var descString=(data.selectedItemID=='spamUnFlagButton')?ips.getString('confirmUnFlagAsSpammerDesc'):'';var self=this;if(data.selectedItemID=='spamFlagButton'||data.selectedItemID=='spamUnFlagButton'){ips.ui.alert.show({type:'confirm',message:langString,subText:descString,callbacks:{ok:function(){self._startLoading();ips.getAjax()(link.attr('href'),{bypassRedirect:true}).done(function(response){self._refreshPanel();});},}});}},dialogSubmitted:function(e,data){this._startLoading();this._refreshPanel();},_startLoading:function(){this.scope.find('[data-role="authorPanel"]').css('height',this.scope.find('[data-role="authorPanel"]').height()+'px').addClass('ipsLoading').find('*').hide();},_refreshPanel:function(){var self=this;ips.getAjax()(window.location,{bypassRedirect:true}).done(function(response){self.scope.find('[data-role="authorPanel"]').css('height','auto').removeClass('ipsLoading').html(response);});}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.approveQueue',{initialize:function(){this.on('click','[data-action="approvalQueueAction"]',this.doConfirm);},doConfirm:function(e,data){e.preventDefault();var self=this;var action=$(e.currentTarget).attr('data-type');if(action!=='delete'){self.doAction(e,data);return;}
var alert={type:'confirm',icon:'warn',message:ips.getString('generic_confirm'),subText:'',callbacks:{ok:function(){self.doAction(e,data);},no:function(){return;}}};ips.ui.alert.show(alert);},doAction:function(e,data){e.preventDefault();var element=$(e.target).closest('a');ips.getAjax()($(element).attr('href')+'&_fromApproval=1',{bypassRedirect:true}).done(function(){ips.getAjax()(ips.getSetting('baseURL')+'?app=core&module=modcp&controller=modcp&tab=approval&action=getCount').done(function(response){$('#elModCPApprovalCount').html(response.count);$(element).parents('[data-role="approvalItem"]').slideUp("slow",function(){$(this).remove();});}).fail(function(failresponse){window.location=ips.getSetting('baseURL')+'?app=core&module=modcp&controller=modcp&tab=approval';});}).fail(function(){window.location=$(e.currentTarget).attr('href');});}});}(jQuery,_));;
var alert={type:'confirm',icon:'warn',message:ips.getString('generic_confirm'),subText:'',callbacks:{ok:function(){self.doAction(e,data);},no:function(){return;}}};ips.ui.alert.show(alert);},doAction:function(e,data){e.preventDefault();var element=$(e.target).closest('a');ips.getAjax()($(element).attr('href')+'&_fromApproval=1',{bypassRedirect:true}).done(function(){ips.getAjax()(ips.getSetting('baseURL')+'?app=core&module=modcp&controller=modcp&tab=approval&action=getCount').done(function(response){$('#elModCPApprovalCount').html(response.total);$(element).parents('[data-role="approvalItem"]').slideUp("slow",function(){$(this).remove();});}).fail(function(failresponse){window.location=ips.getSetting('baseURL')+'?app=core&module=modcp&controller=modcp&tab=approval';});}).fail(function(){window.location=$(e.currentTarget).attr('href');});}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.reportToggle',{initialize:function(){this.on('click','[data-action="_ipsMenu_ping"]',this.reportToggleClicked);},reportToggleClicked:function(e){e.preventDefault();var elem=$(e.currentTarget);var reportId=this.scope.find('[data-reportId]').attr('data-reportId');var newStatus=$(elem).closest('[data-ipsMenuValue]').attr('data-ipsMenuValue');var newStatusText=$(elem).find('[data-role="ipsMenu_selectedText"]').text();if($(elem).attr('data-showconfirm')!==undefined){if($(elem).attr('data-hasNotifications')>0){var dialogRef=ips.ui.dialog.create({title:ips.getString('report_status_change_confirm',{newstatus:newStatusText}),size:'narrow',url:'?app=core&module=modcp&controller=modcp&tab=reports&action=reportCenterConfirmModal&id='+reportId+'&status='+newStatus,forceReload:true});dialogRef.show();}else{ips.ui.alert.show({type:'confirm',title:ips.getString('report_status_change_confirm',{newstatus:newStatusText}),icon:'fa fa-question-circle',buttons:{ok:ips.getString('ok'),cancel:ips.getString('cancel')},callbacks:{ok:function(){$(elem).attr('data-action','ipsMenu_ping');$(elem)[0].dispatchEvent(new Event("click",{bubbles:true}));},}});}}else{$(elem).attr('data-action','ipsMenu_ping');$(elem)[0].dispatchEvent(new Event("click",{bubbles:true}));}}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.warnForm',{pointsEdited:false,expirationEdited:false,editorSetTo:'',initialize(){this.on('change','[name="warn_reason"]',this.changeReason);this.on('change','[name="warn_points"]',this.changePoints);this.on('change','[name="warn_remove"],[name="warn_remove_time"]',e=>{this.expirationEdited=true;});this.on('editorWidgetInitialized',this.editorInitialized);},editorInitialized(e,data){if(data.id==='warn_member_note'){$('[name="warn_reason"]').change();const editor=ips.ui.editorv5.getObj($('textarea[name="warn_member_note"]').closest('[data-ipsEditorv5]'));this.editorSetTo=editor.getInstance().getHTML();}},async changeReason(e){const response=await ips.fetch(ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=warnings&do=reasonAjax&id='+$(e.target).val())
if(!this.pointsEdited||!response.points_override){const pointsNow=parseInt(this.scope.find('[name="warn_points"]').val());this.scope.find('[name="warn_points"]').val(response.points).prop('disabled',parseInt(response.points_override)===0);if(pointsNow!==response.points){this.scope.find('[name="warn_points"]').change();}
+2 -2
View File
@@ -21,8 +21,8 @@ for(var i=0;i<data['group'].length;i++){params.push('group['+data['group'][i]+']
_.each(data,function(val,key){if(!key.startsWith('core_pfield')||val===0||val===''){return;}
params.push(key+'='+val);});}else{_.each(['item','author','search_min_replies','search_min_views','search_min_comments','search_min_reviews'],function(val){if(!_.isUndefined(data[val])&&data[val]!==''&&parseInt(data[val])!==0){if(val==='author'){params.push(val+'='+encodeURIComponent(data[val]));return;}
params.push(val+'='+data[val]);}});if(!_.isUndefined(data['tags'])){params.push('tags='+encodeURIComponent(data['tags'].replace(/\n/g,',')));}
if(!_.isUndefined(data['nodes'])){params.push('nodes='+data['nodes'].replace(/\n/g,','));}
else if(!_.isUndefined(data[data['type']+'_node'])){params.push('nodes='+data[data['type']+'_node']);}
if(!_.isUndefined(data[data['type']+'_node'])){params.push('nodes='+data[data['type']+'_node']);}
else if(!_.isUndefined(data['nodes'])){params.push('nodes='+data['nodes'].replace(/\n/g,','));}
if(!_.isUndefined(data['club[]'])){if(_.isArray(data['club[]'])){params.push('club='+data['club[]'].filter(function(v){return v!=='__EMPTY';}));}else if(data['club[]'].replace('__EMPTY','')){params.push('club='+data['club[]'].replace('__EMPTY',''));}}
if(!_.isUndefined(data['eitherTermsOrTags'])){if(!_.isUndefined(data['q'])&&data['q'].trim()!==''&&!_.isUndefined(data['tags'])&&data['tags'].trim()!==''){params.push('eitherTermsOrTags='+data['eitherTermsOrTags']);}}
if(!_.isUndefined(data['search_and_or'])&&(data['search_and_or']==='or'||data['search_and_or']==='and')){params.push('search_and_or='+data['search_and_or']);}
+90 -85
View File
@@ -130,27 +130,25 @@ ips.templates.set('core.iconpicker.selectedicon',`\
`)
ips.templates.set('tableOfContents.linkOptions',`\
<span class="ipsTableOfContents__linkOptions">
<span class="ipsBox ipsBox--cmsTableOfContents">
<a href="#{{id}}" class="ipsButton ipsButton--icon" data-role="link" aria-label="{{#lang}}table_of_contents_link{{/lang}}" data-ipstooltip title="{{#lang}}table_of_contents_link{{/lang}}" >
<i class="fa-solid fa-link"></i>
</a>
{{#canEdit}}
<button class="ipsButton ipsButton--icon ipsButton--primary" data-ipstooltip title="{{#lang}}table_of_contents_add{{/lang}}" data-role="add" aria-label="{{#lang}}table_of_contents_add{{/lang}}" >
<i class="fa-solid fa-plus"></i>
</button>
<span class="ipsTableOfContents__incrementOptions">
<button class="ipsButton ipsButton--text ipsButton--icon" data-ipstooltip title="{{#lang}}table_of_contents_decrement{{/lang}}" data-role="decrement" aria-label="{{#lang}}table_of_contents_decrement{{/lang}}" >
<i class="fa-solid fa-outdent"></i>
</button>
<button class="ipsButton ipsButton--text ipsButton--icon" data-ipstooltip title="{{#lang}}table_of_contents_increment{{/lang}}" data-role="increment" aria-label="{{#lang}}table_of_contents_increment{{/lang}}" >
<i class="fa-solid fa-indent"></i>
</button>
</span>
<button class="ipsButton ipsButton--text ipsButton--icon ipsButton--negative" data-ipstooltip title="{{#lang}}table_of_contents_remove{{/lang}}" data-role="remove" aria-label="{{#lang}}table_of_contents_remove{{/lang}}" >
<i class="fa-solid fa-times"></i>
</button>
{{/canEdit}}
</span>
<a href="#{{id}}" class="ipsButton ipsButton--text" data-role="link" aria-label="{{#lang}}table_of_contents_link{{/lang}}" data-ipstooltip title="{{#lang}}table_of_contents_link{{/lang}}" >
<i class="fa-solid fa-link"></i>
</a>
{{#canEdit}}
<button type="button" class="ipsButton ipsButton--primary" data-ipstooltip title="{{#lang}}table_of_contents_add{{/lang}}" data-role="add" aria-label="{{#lang}}table_of_contents_add{{/lang}}" >
<i class="fa-solid fa-plus"></i>
</button>
<span class="ipsTableOfContents__incrementOptions">
<button type="button" class="ipsButton ipsButton--text" data-ipstooltip title="{{#lang}}table_of_contents_decrement{{/lang}}" data-role="decrement" aria-label="{{#lang}}table_of_contents_decrement{{/lang}}" >
<i class="fa-solid fa-outdent"></i>
</button>
<button type="button" class="ipsButton ipsButton--text" data-ipstooltip title="{{#lang}}table_of_contents_increment{{/lang}}" data-role="increment" aria-label="{{#lang}}table_of_contents_increment{{/lang}}" >
<i class="fa-solid fa-indent"></i>
</button>
</span>
<button type="button" class="ipsButton ipsButton--negative" data-ipstooltip title="{{#lang}}table_of_contents_remove{{/lang}}" data-role="remove" aria-label="{{#lang}}table_of_contents_remove{{/lang}}" >
<i class="fa-solid fa-times"></i>
</button>
{{/canEdit}}
</span>
`);ips.templates.set('ips.ui.controls.cannot_load',`
<div class="{{{classList}}} ipsControls__fail-message">{{message}}</div>
@@ -337,41 +335,26 @@ if(overflowRegex.test(style.overflow+style.overflowY+style.overflowX)){return pa
return document.body;}
init();return{destruct};}
ips.ui.registerWidget('selectTree',ips.ui.selectTree,['placeholder','multiple','selected','url','searchable']);return{respond:respond,destruct:destruct};});}(jQuery,_));;
;(function($,_){"use strict";ips.createModule('ips.ui.tabbar',function(){const defaults={itemSelector:'.ipsTabs__tab',activeClass:false,loadingClass:'ipsLoading ipsTabs_loadingContent',panelClass:'ipsTabs__panel',updateURL:true,updateTitle:false,disableNav:false};ips.ui.registerWidget('tabbar',ips.ui.tabbar,['contentArea','itemSelector','activeClass','loadingClass','disableNav','panelClass','updateURL','updateTitle']);return{respond(elem,options){if(!$(elem).data('_tabbar')){$(elem).data('_tabbar',tabBarObj(elem,_.defaults(options,defaults)));}}};});function tabBarObj(elem,options){const rawElem=$(elem).get(0);const tabs=$(elem).find(options.itemSelector);let barId=rawElem.id;let active;let ajaxObj;function init(){if(!barId){barId=$(rawElem).identify().attr('id');}
if(!options.contentArea||!$(options.contentArea).length){options.contentArea='#'+$(rawElem).next().identify().attr('id');}
if(!tabs.length){Debug.warn("No tabs found in tab bar"+barId);return;}
active=_getActiveTab();_initializeActive();$(elem).on('click',options.itemSelector,_handleTabClick);let tabbar=elem[0],tablist=tabbar.querySelector('[role="tablist"]'),scrollers=tabbar.querySelector('[data-role="tabScrollers"]');if(scrollers){scrollers.addEventListener("click",e=>_handleScrollerClick(e,tablist));let scrollerObserver=new IntersectionObserver(tabs=>tabs.forEach(tab=>tabbar.querySelector(`[data-direction="${tab.target.matches(':first-child') ? 'prev' : 'next'}"]`).hidden=tab.intersectionRatio>.99),{root:tablist,threshold:0.99});tablist.querySelectorAll(':scope > :first-child, :scope > :last-child').forEach(el=>{scrollerObserver.observe(el)});}}
function _handleScrollerClick(e,tablist){let direction=e.target.closest('button').getAttribute("data-direction"),currentScroll=tablist.scrollLeft,listWidth=tablist.offsetWidth/2;if(direction==="prev"){listWidth=-listWidth;}
tablist.scrollTo({left:currentScroll+listWidth,behavior:"smooth"})}
function _handleTabClick(e){if(options.disableNav){return;}
e.preventDefault();if($(this).attr('aria-selected')==='true'){return;}
let thisId=$(this).identify().attr('id'),thisContent=$('#'+$(this).attr('aria-controls'));if(!thisContent.length){thisContent=$('#'+thisId+'_panel');}
if(!thisContent.length){thisContent=_createTabPanel(thisId);_loadContent(this,thisContent).done(()=>_switchTab(thisId)).fail(()=>Debug.log('failed'));}else{_hideAllPanels();_switchTab(thisId);}
_updateURL(thisId);}
function _switchTab(tabId){_hideAllPanels();const thisContent=$('#'+tabId+'_panel'),thisContentParent=document.querySelector(elem[0].getAttribute("data-ipstabbar-contentarea"));thisContent.removeAttr('hidden');$(elem).trigger('tabShown',{barID:barId,tabID:tabId,tab:active,panel:thisContent});$(document).trigger('contentChange',[thisContent]);if(elem[0].matches(".ipsTabs--sticky")&&thisContentParent&&window.scrollY>thisContentParent.offsetTop){thisContentParent.scrollIntoView({behavior:"smooth"});}
active=$('#'+tabId);_makeTabActive(active);$(elem).trigger('tabChanged',{barID:barId,tabID:tabId,tab:active,panel:thisContent});}
function _updateURL(tabId){if(!options.updateURL){return;}
const tabLink=$(`#${tabId}`);const href=tabLink.attr('href');const title=(options.updateTitle&&tabLink.attr('title'))?tabLink.attr('title'):document.title;if(!_.isEmpty(href)&&!href.startsWith('#')){ips.utils.history.replaceState({},'ips.ui.tabbar',href);document.title=title
ips.utils.analytics.trackPageView(href);}}
function _getActiveTab(){const activeTab=elem.find('[aria-selected="true"]');if(activeTab.length){return activeTab.get(0);}
return $(elem).find(options.itemSelector).first();}
function _initializeActive(){const activeId=$(active).identify().attr('id');if(!$('#'+activeId+'_panel').length){if($(options.contentArea).children().length){$(options.contentArea).wrapInner(_createTabPanel(activeId,true));_switchTab(activeId);}else{var newPanel=_createTabPanel(activeId);_loadContent(active,newPanel).done(function(){_switchTab(activeId);});}}else{_switchTab(activeId);}}
function _makeTabActive(activeTab){$(elem).find(options.itemSelector).attr('aria-selected','false');if(options.activeClass){$(elem).find(options.itemSelector).removeClass(options.activeClass);}
$(activeTab).attr('aria-selected','true');if(options.activeClass){$(activeTab).addClass(options.activeClass);}}
function _loadContent(tab,container){let url;const deferred=$.Deferred();_hideAllPanels();if($(tab).attr('data-tabURL')){url=$(tab).attr('data-tabURL');}else{url=$(tab).attr('href');}
$(options.contentArea).addClass(options.loadingClass);ajaxObj=ips.getAjax();ajaxObj(url).done(response=>{$(container).html(response);deferred.resolve();}).fail(()=>window.location=$(tab).attr('href')).always(()=>$(options.contentArea).removeClass(options.loadingClass));return deferred.promise();}
function _hideAllPanels(){$(options.contentArea).find('> .'+options.panelClass).attr('hidden','');}
function _createTabPanel(tabId,noAppend=false){const newPanel=$('<div/>').attr({'id':tabId+'_panel'}).addClass(options.panelClass).attr({'role':'tabpanel'}).attr({'aria-labelledby':tabId});if(!noAppend){$(options.contentArea).append(newPanel);}
return newPanel;}
init();return{init};}}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.createModule('ips.ui.spoiler',function(){function respond(elem,options,e){elem.contents().hide();const details=document.createElement('details');for(const attr of[...$(elem).get(0).getAttributeNames()]){try{details.setAttribute(attr,$(elem).get(0).getAttribute(attr));}catch(e){Debug.warn(e);}}
$(elem).get(0).after(details);elem.hide();for(const child of[...$(elem).get(0).childNodes]){details.appendChild(child);}
elem=$(details);var existingHeader=elem.children('.ipsSpoiler_header');var header=ips.templates.render('core.editor.spoilerHeader');if(existingHeader.length){existingHeader.replaceWith(header);}else{elem.prepend(header);}
elem.find('> .ipsSpoiler_header').on('click',_toggleSpoiler);}
function _toggleSpoiler(e){var header=$(e.currentTarget);var target=$(e.target);var spoiler=$(e.target).closest('[data-ipsSpoiler]');if(target.is('a:not( [data-action="toggleSpoiler"] )')||(target.closest('a').length&&!target.closest('a').is('[data-action="toggleSpoiler"]'))){return;}
e.preventDefault();if(header.hasClass('ipsSpoiler_closed')){spoiler.attr('open','');ips.utils.anim.go('fadeIn',header.siblings());header.removeClass('ipsSpoiler_closed').addClass('ipsSpoiler_open').find('span').text(ips.getString('spoilerClickToHide'));$(document).trigger('contentChange',[spoiler]);}else{spoiler.attr('open',null);header.siblings().hide();header.removeClass('ipsSpoiler_open').addClass('ipsSpoiler_closed').find('span').text(ips.getString('spoilerClickToReveal'));}
e.stopPropagation();}
ips.ui.registerWidget('spoiler',ips.ui.spoiler);return{respond:respond}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.createModule('ips.ui.stack',function(){var defaults={sortable:true,itemTemplate:'core.forms.stack'};var respond=function(elem,options){if(!$(elem).data('_stack')){$(elem).data('_stack',stackObj(elem,_.defaults(options,defaults)));}};ips.ui.registerWidget('stack',ips.ui.stack,['sortable','maxItems','itemTemplate']);return{respond:respond};});var stackObj=function(elem,options){var stack=null;var currentIndex=0;var init=function(){if(!elem.attr('data-initiated')){stack=elem.find('[data-role="stack"]');currentIndex=_getItemCount();if(options.maxItems&&currentIndex>=options.maxItems){elem.find('[data-action="stackAdd"]').hide();}
elem.on('click','[data-action="stackAdd"]',_addItem);elem.on('click','[data-action="stackDelete"]',_deleteItem);elem.on('keydown','[data-role="stackItem"] input[type="text"]',_keyDown);if(options.sortable){ips.loader.get(['core/interface/jquery/jquery-ui.js']).then(function(){stack.sortable({handle:'[data-action="stackDrag"]'});});}
elem.attr('data-initiated','true');$(elem).trigger('stackInitialized',{count:_getItemCount()});}},_keyDown=function(e){if(e.keyCode==ips.ui.key.ENTER){e.preventDefault();_addItem(null,$(e.currentTarget).closest('[data-role="stackItem"]'));}},_addItem=function(e,after){if(e){e.preventDefault();}
if(options.maxItems&&_getItemCount()>=options.maxItems){return;}
currentIndex++;var field=stack.find('[data-ipsStack-wrapper]').first().html().replace(/(name=['"][a-zA-Z0-9\-_]+?)\[([^\]]+?)?\]/g,'$1['+currentIndex+']').replace(/data-ipsFormData=['"](.+?)['"]/ig,'').replace(/id=['"](.+?)['"]/g,'id="$1_'+currentIndex+'"').replace(/data-toggles=['"](.+?)['"]/g,function(match,p1){var pieces=p1.split(',');var newPieces=[];_.each(pieces,function(val){if(val.match(/_[0-9]+$/g)){newPieces.push(val+'_'+currentIndex);}else{newPieces.push(val);}});return'data-toggles="'+newPieces.join(',')+'"';});field=field.replace(/\<input(.+?)value=['"](.*?)['"](.*?)\>/g,'<input$1value=""$3>');if(stack.find('select').length){field=field.replace(/\<option(.+?)selected(?:=['"]selected["'])?(.*?)\>/g,'<option$1$2>');}
var html=ips.templates.render(options.itemTemplate,{field:field});if(after){after.after(html).next('[data-role="stackItem"]').find('input,textarea').focus();}else{stack.append(html).find('[data-role="stackItem"] input,[data-role="stackItem"] textarea').last().focus();}
if(options.maxItems&&_getItemCount()>=options.maxItems){elem.find('[data-action="stackAdd"]').hide();}
$(document).trigger('contentChange',[elem]);$(elem).trigger('stackRowAdded',{count:_getItemCount()});},_deleteItem=function(e){e.preventDefault();var row=$(e.currentTarget).closest('[data-role="stackItem"]');if(_getItemCount()===1){row.find('input,textarea').val('');row.find("option:selected").removeAttr("selected");return;}
ips.utils.anim.go('fadeOutDown',row).done(function(){row.hide();setTimeout(function(){row.remove();if(options.maxItems&&_getItemCount()<options.maxItems){elem.find('[data-action="stackAdd"]').show();}},100);});},_getItemCount=function(){return stack.find('[data-role="stackItem"]').length;};init();};}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.createModule('ips.ui.sideMenu',function(){var defaults={type:'radio',responsive:true,group:false};var respond=function(elem,options){if(!$(elem).data('_sidemenu')){$(elem).data('_sidemenu',sideMenuObj(elem,_.defaults(options,defaults)));}};ips.ui.registerWidget('sideMenu',ips.ui.sideMenu,['responsive','type','group']);var sideMenuObj=function(elem,options){var init=function(){if(options.responsive&&ips.utils.responsive.enabled()){$(elem).on('click','[data-action="openSideMenu"]',_toggleSideMenu);}
$(elem).on('click','.ipsSideMenu_item',_clickEvent);$(elem).on('selectItem.sideMenu',_selectItem);},_clickEvent=function(e){_doSelectItem($(e.currentTarget),e);_toggleSideMenu();},_selectItem=function(e,data){_doSelectItem(elem.find('[data-ipsMenuValue="'+data.value+'"]'),e);},_doSelectItem=function(item,e){if((_.isUndefined(item.attr('data-ipsMenuValue'))&&!item.find('input[type="radio"], input[type="checkbox"]').length)||!item.length){return;}
if(e){e.preventDefault();}
if(item.hasClass('ipsSideMenu_itemDisabled')){return;}
var workingItems;if(!options.group){workingItems=$(elem).find('.ipsSideMenu_item');}else{workingItems=item.closest('.ipsSideMenu__list').find('.ipsSideMenu_item');}
if(options.type==='check'){item=$(item).get(0);item.classList[item.classList.contains('ipsSideMenu_itemActive')?'remove':'add']('ipsSideMenu_itemActive');item.querySelectorAll('input[type="radio"], input[type="checkbox"]').forEach(input=>{input.checked=!input.checked;input.dispatchEvent(new CustomEvent('change',{bubbles:true}));});}else{const items=[...workingItems]
items.forEach(item=>{item.classList.remove('ipsSideMenu_itemActive')
item.querySelectorAll('input[type="radio"], input[type="checkbox"]').forEach(input=>{if(input.checked){input.checked=false;input.dispatchEvent(new CustomEvent('change',{bubbles:true}))}});});item=$(item).get(0);item.classList.add('ipsSideMenu_itemActive')
item.querySelectorAll('input[type="radio"], input[type="checkbox"]').forEach(input=>{if(!input.checked){input.checked=true;input.dispatchEvent(new CustomEvent("change",{bubbles:true}));}});}
var selectedItems=[];workingItems.filter('.ipsSideMenu_itemActive').each(function(){selectedItems.push($(this).attr('data-ipsMenuValue'));});$(elem).trigger('itemClicked.sideMenu',{id:$(elem).identify().attr('id'),menuElem:$(elem),selectedElem:$(item),selectedItemID:$(item).attr('data-ipsMenuValue'),selectedItems:selectedItems});},_toggleSideMenu=function(e){if(e){e.preventDefault();}
$(elem).toggleClass('ipsSideMenu_open');$(elem).find('.ipsSideMenu__view').each(function(){this.scrollIntoView({behavior:"smooth"})});};init();return{};};return{respond};});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.createModule('ips.ui.wizard',function(){var respond=function(elem,options,e){elem.on('click','[data-action="wizardLink"]',_.bind(refresh,e,elem));elem.on('submit','form',_.bind(refresh,e,elem));};var refresh=function(elem,e){var target=$(e.currentTarget);_showLoading(elem);if(target.is('form')){if(target.attr('data-bypassAjax')){return true;}
e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();var data=target.serialize()+'&_wizardHeight='+elem.find('[data-role="loading"]').outerHeight();if(e.originalEvent&&e.originalEvent.submitter&&e.originalEvent.submitter.name&&e.originalEvent.submitter.value){data+='&'+e.originalEvent.submitter.name+'='+e.originalEvent.submitter.value;}
ips.getAjax()(target.attr('action'),{data:data,type:'post'}).done(function(response){_insertHtml(response,elem);}).fail(function(response,textStatus,errorThrown){target.attr('data-bypassAjax',true);target.submit();})}else{e.preventDefault();ips.getAjax()(target.attr('href')).done(function(response){_insertHtml(response,elem);});}},_insertHtml=function(response,elem){if(_.isObject(response)&&response.redirect){window.location=response.redirect;return;}
@@ -899,7 +882,8 @@ const time=config.autoSaveKey?ips.utils.db.get('editorSave',config.autoSaveKey)?
instance.on('focus',()=>$(elem).trigger('editor.focused',{elem}));instance.on('blur',()=>$(elem).trigger('editor.blurred',{elem}));if(Debug.isEnabled()){instance.on('contentError',(...args)=>{const err=new Error("Failed to insert content using current editor schema");console.warn(err);console.log(args);})}}}
function getTextarea(){return $(elem).find('textarea:not(.tiptap *)').get(0);}
function getInstanceHTML(){if(!instance)return"";const html=instance.getHTML?.();if(typeof html!=='string'||html==='<p></p>'){return"";}
return html;}
const parserDoc=(new DOMParser()).parseFromString(`<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body>${html}</body></html>`,'text/html');let boxContentElement;while((boxContentElement=parserDoc.querySelector('i-richtext-box-content'))&&boxContentElement instanceof Element){boxContentElement.before(...boxContentElement.childNodes);boxContentElement.remove();}
return parserDoc.body.innerHTML.trim();}
const fillTextarea=_.debounce(function(){const textarea=getTextarea();if(textarea&&instance){textarea.innerHTML="";textarea.appendChild(document.createTextNode(getInstanceHTML()))}},10);function clearTextarea(){const textarea=getTextarea();if(textarea){textarea.innerHTML='';textarea.append(document.createTextNode(originalContent))}}
async function init(callback){if(options.minimized){$(elem).find('.ipsComposeArea_dummy').show().on('focus click',function(){$(this).off('focus click');unminimize(function(){focus();});}).end().find('[data-role="mainEditorArea"]').hide().closest('.ipsComposeArea').addClass('ipsComposeArea_minimized').find('[data-ipsEditor-toolList]').attr('hidden',true);$(document).on('initializeEditor',_initializeEditor);hiddenAtStart=true;minimized=true;setTimeout(()=>whenLoaded(false),3000);}else{const mainEditorArea=$(elem).get(0).querySelector('[data-role="mainEditorArea"]')
mainEditorArea?.classList.add('ipsLoading');await fillTiptapInstance();mainEditorArea?.classList.remove('ipsLoading');instance.commands.fireVisibilityChange(true)}
@@ -943,11 +927,13 @@ element.closest('.ipsComposeArea')?.querySelectorAll('[data-ipseditor-toollist]'
$(elem).find('.ipsComposeArea_dummy').on('focus click',function(){$(this).off('focus click');unminimize(function(){focus();});})
instance?.commands.fireVisibilityChange(false)
minimized=true;}}
function insertQuotes(quotes){let isAutoSave=false,draftContent='';const _doInsert=function(){if(!instance)return;let toInsert="";for(const data of quotes){const html=data.quoteHtml.replace(/data-ipsLightbox(-group)?="([\w]+)?"/ig,'').trim();const quote=$(ips.templates.render('core.editor.quote',{citeurl:data.citeurl||'',citation:ips.utils.getCitation(data),contents:html}));for(let attr of['timestamp','userid','username','contentapp','contenttype','contentclass','contentid','contentcommentid']){if(data[attr]){quote.attr('data-ipsQuote-'+attr,data[attr]);}}
function insertQuotes(quotes){let isAutoSave=false,draftContent='',_minimized=minimized;const _doInsert=function(){if(!instance)return;let toInsert="";for(const data of quotes){const html=data.quoteHtml.replace(/data-ipsLightbox(-group)?="([\w]+)?"/ig,'').trim();const quote=$(ips.templates.render('core.editor.quote',{citeurl:data.citeurl||'',citation:ips.utils.getCitation(data),contents:html}));for(let attr of['timestamp','userid','username','contentapp','contenttype','contentclass','contentid','contentcommentid']){if(data[attr]){quote.attr('data-ipsQuote-'+attr,data[attr]);}}
toInsert+=quote.get(0).outerHTML}
if(!toInsert){return;}
if(isAutoSave&&draftContent){instance.chain().setContent(draftContent,false).focus().run();setTimeout(()=>{instance.chain().insertContent(toInsert+"<p></p>",{parseOptions:{preserveWhitespace:false}}).setMeta('preventUpdate',true).showMessage('autosave').focus().run();},10);return;}
instance.chain().insertContent(toInsert+"<p></p>",{parseOptions:{preserveWhitespace:false}}).focus().run();};if(minimized){const draft=options.autoSaveKey&&ips.utils.db.get('editorSave',options.autoSaveKey);if(typeof draft?.content==='string'&&draft.time&&(Date.now()/1000-86400*3)<parseInt(draft.time)&&!instance){draftContent=draft.content;isAutoSave=true;}
if(isAutoSave&&draftContent){instance.chain().setContent(draftContent,false).focus().run();setTimeout(()=>{let pos
instance.chain().command(({tr})=>pos=tr.doc.resolve(0).end()).insertContentAt(pos,toInsert+"<p></p>",{parseOptions:{preserveWhitespace:false}}).setMeta('preventUpdate',true).showMessage('autosave').focus().command(({chain,tr})=>chain().setTextSelection(tr.doc.resolve(0).end()-1)).run();},10);return;}else if(_minimized){let to,from;instance.chain().command(({tr})=>{to=tr.doc.resolve(0).end();from=to;if(tr.doc.lastChild?.inlineContent&&![...tr.doc.lastChild.children].some(desc=>desc.nodeSize)){from=tr.doc.resolve(0).posAtIndex(tr.doc.childCount-1);}
return true;}).insertContentAt(to,"<p></p>").setTextSelection(to+1).focus().run();instance.chain().insertContentAt({from,to},toInsert,{parseOptions:{preserveWhitespace:false},updateSelection:false}).focus().run();return;}
instance.chain().insertContent(toInsert+(instance.state.selection.empty&&instance.state.selection.$from.nodeAfter?"":"<p></p>"),{parseOptions:{preserveWhitespace:false}}).focus().run();};if(minimized){const draft=options.autoSaveKey&&ips.utils.db.get('editorSave',options.autoSaveKey);if(typeof draft?.content==='string'&&draft.time&&(Date.now()/1000-86400*3)<parseInt(draft.time)&&!instance){draftContent=draft.content;isAutoSave=true;}
unminimize(function(){_doInsert();});}else{_doInsert();}}
function insertHtml(html){instance.chain().insertContent(html,{parseOptions:{preserveWhitespace:false}}).focus().run();}
function reset(){instance.chain().setContent(originalContent||'<p></p>',{emitUpdate:true}).clearAutosave().run();$(elem).find('[data-ipsUploader]').trigger('resetUploader');if(options.minimized&&options.minimizeAfterReset){minimize();}
@@ -1075,12 +1061,12 @@ if(offTimeout){clearTimeout(offTimeout);}
if(ajaxObj&&_.isFunction(ajaxObj.abort)){ajaxObj.abort();}
_removeLoadingWidget();_hideCard();},_documentClick=function(e){if(!$(card).is(':visible')){return;}
if(e.target!=elem&&!$.contains(elem,e.target)&&e.target!=card.get(0)&&!$.contains(card.get(0),e.target)){_hideCard();$(document).off('click.'+elemID);}},_startShow=function(){if(card&&card.length&&_.isElement(card.get(0))){_positionCard();working=false;return;}
if(options.content&&$(options.content).length){_buildLocalContent();_buildCard();_positionCard();working=false;}else{_buildRemoteContent().done(function(){_buildCard();_positionCard(true);}).fail(function(){}).always(function(){working=false;});}},_hideCard=function(){ips.utils.anim.go('fadeOut',card);},_positionCard=function(showImmediate){if(!card.length){Debug.warn("_positionCard called before a card element exists");return;}
if(options.content&&$(options.content).length){_buildLocalContent();_buildCard();_positionCard();working=false;}else{_buildRemoteContent().done(function(){_buildCard();_positionCard();}).fail(function(){}).always(function(){working=false;});}},_hideCard=function(){card[0].hidePopover();},_positionCard=function(){if(!card.length){Debug.warn("_positionCard called before a card element exists");return;}
if(!target.is(':visible')){Debug.info("Can't show hovercard when target isn't visible");return;}
card.css({left:'auto',top:'auto',position:'static'});if(card.attr('data-originalWidth')){card.css({width:card.attr('data-originalWidth')+'px'});}
var elemPos=ips.utils.position.getElemPosition(target);var tooWide=false;var elemHeight=$(target).height();var elemWidth=$(target).width();var actualWidth=$(card).width();var actualHeight=$(card).height();var win=$(window);var positionInfo={trigger:elem,target:card,above:true,stemOffset:{left:20,top:0}};var location=ips.utils.position.positionElem(positionInfo);card.css({left:location.left+'px',top:location.top+'px',position:(location.fixed)?'fixed':'absolute',zIndex:ips.ui.zIndex()});var newElemPosition=ips.utils.position.getElemPosition(card);if((actualWidth>$(document).width())||newElemPosition.viewportOffset.left<-20){options.noStem=true;card.attr('data-originalWidth',actualWidth).css({left:'10px',width:($(document).width()-20)+'px'});var newLocation=ips.utils.position.positionElem(positionInfo);card.css({top:newLocation.top+'px'});}
card.css({left:'auto',top:'auto'});if(card.attr('data-originalWidth')){card.css({width:card.attr('data-originalWidth')+'px'});}
var elemPos=ips.utils.position.getElemPosition(target);var tooWide=false;var elemHeight=$(target).height();var elemWidth=$(target).width();var actualWidth=$(card).width();var actualHeight=$(card).height();var win=$(window);var positionInfo={trigger:elem,target:card,above:true,stemOffset:{left:20,top:0}};var location=ips.utils.position.positionElem(positionInfo);card.css({left:location.left+'px',top:location.top+'px'});var newElemPosition=ips.utils.position.getElemPosition(card);if((actualWidth>$(document).width())||newElemPosition.viewportOffset.left<-20){options.noStem=true;card.attr('data-originalWidth',actualWidth).css({left:'10px',width:($(document).width()-20)+'px'});var newLocation=ips.utils.position.positionElem(positionInfo);card.css({top:newLocation.top+'px'});}
card.find('.ipsHovercard_stem').remove();_.each(['Top','Bottom','Left','Right'],function(type){card.removeClass('ipsHovercard_stem'+type);});var stem=$('<span/>').addClass('ipsHovercard_stem');card.append(stem).addClass(options.className+'_stem'+(location.location.vertical.charAt(0).toUpperCase()+location.location.vertical.slice(1)));if(tooWide){stem.css({left:(elemPos.viewportOffset.left-10)+'px'});}else{card.addClass(options.className+'_stem'+(location.location.horizontal.charAt(0).toUpperCase()+location.location.horizontal.slice(1)));}
if(showImmediate){card.show();}else{ips.utils.anim.go('fadeIn',card);}},_buildCard=function(){var cardId=$(elem).identify().attr('id')+'_hovercard',actualWidth=options.width||300;card=$('<div/>');card.attr({id:cardId}).addClass(options.className).css({width:actualWidth+'px',zIndex:ips.ui.zIndex()});if(_.isString(content)){card.append($('<div/>').html(content));}else{card.append(content.show());}
card[0].showPopover();},_buildCard=function(){var cardId=$(elem).identify().attr('id')+'_hovercard',actualWidth=options.width||300;card=$('<div/>');card.attr("popover","manual").attr({id:cardId}).addClass(options.className).css({width:actualWidth+'px'});if(_.isString(content)){card.append($('<div/>').html(content));}else{card.append(content.show());}
ips.getContainer().append(card);if(!options.onClick){card.on('mouseenter',_cardMouseOver).on('mouseleave',_cardMouseOut);}
$(document).trigger('contentChange',[card]);},_buildLocalContent=function(){content=$(options.content);},_buildRemoteContent=function(){var deferred=$.Deferred();if(!elem.href){deferred.reject();return deferred.promise();}
if(options.cache&&ips.ui.hovercard.getCache(elem.href)){content=ips.ui.hovercard.getCache(elem.href);deferred.resolve();return deferred.promise();}
@@ -1090,6 +1076,10 @@ _removeLoadingWidget();deferred.reject();}else{if(status!='abort'){content=$('<d
loading=$('<div/>').addClass('ipsHovercard_loading').html(ips.templates.render('core.hovercard.loading'));ips.getContainer().append(loading);var loadingDims={width:loading.width(),height:loading.height()};loading.hide();var elemPos=ips.utils.position.getElemPosition(target),dimsToUse=(elemPos.fixed)?'fixedPos':'absPos';loading.css({left:elemPos[dimsToUse].left+'px',top:(elemPos[dimsToUse].top-loadingDims.height-10)+'px',position:(elemPos.fixed)?'fixed':'absolute',zIndex:"50000"});ips.utils.anim.go('fadeIn',loading);},_removeLoadingWidget=function(){if(loading&&loading.length){loading.remove();}},_mouseOut=function(){clearTimeout(onTimeout);if(ajaxObj){ajaxObj.abort();}
_removeLoadingWidget();if(card&&card.is(':visible')){offTimeout=setTimeout(_hideCard,options.timeout*1000);}
$(elem).off('.hovercard',_mouseOut);},_cardMouseOver=function(){clearTimeout(offTimeout);},_cardMouseOut=function(){clearTimeout(offTimeout);offTimeout=setTimeout(_hideCard,options.timeout*1000);};init();return{init:init,destruct:destruct,start:start};};}(jQuery,_));;
;(function($,_){"use strict";ips.createModule('ips.ui.iframelySizing',function(){let loaded=false;function loadIframelyAdHoc(root){if(loaded){return;}
const iframelyCDN=ips.getSetting('iframely_custom_cdn')||"iframe.ly";if(!(root||document).querySelector(`[data-iframely-url], iframe[src*='${iframelyCDN}']`)){return;}
let iframely=window.iframely=window.iframely||{};loaded=true;if(iframely.load){iframely.load();}else{ips.loader.get(["//cdn.iframe.ly/embed.js"]).then(()=>{Debug.log('Iframely embed.js loaded.');});}}
return{loadIframelyAdHoc,init(){loadIframelyAdHoc(document.body);if(!loaded){const contentChange=(elem)=>{$(elem).each(function(){if(this instanceof Element){loadIframelyAdHoc(this);}});if(loaded){$(document).off('contentChange',contentChange);}};$(document).on('contentChange',contentChange);}}}})})(jQuery,_);;
;(function($,_,undefined){"use strict";ips.createModule('ips.ui.infiniteScroll',function(){var defaults={distance:50,loadingTpl:'core.infScroll.loading',scrollScope:window,pageParam:'page',pageBreakTpl:'core.infScroll.pageBreak',totalPages:null,disableIn:'phone'};var respond=function(elem,options){if(!$(elem).data('_infinite')){$(elem).data('_infinite',infiniteScrollObj(elem,_.defaults(options,defaults)));}},getObj=function(elem){if($(elem).data('_infinite')){return $(elem).data('_infinite');}
return undefined;};ips.ui.registerWidget('infScroll',ips.ui.infiniteScroll,['container','scrollScope','distance','url','pageParam','loadingTpl','pageBreakTpl','disableIn']);var infiniteScrollObj=function(elem,options){var state='ready',scrollScope=null,container=null,ajaxObj=null,currentPage=1;var init=function(){container=$(options.container);scrollScope=$(options.scrollScope);scrollScope.on('scroll',_scrollEvent);options.disableIn=options.disableIn.split(',');if(_.isString(options.distance)&&options.distance.indexOf('%')!==-1){var percent=parseInt(options.distance);options.distance=(scrollScope.height()/100)*percent;}
if(options.totalPages==null){options.totalPages=_getTotalPages();}
@@ -1218,7 +1208,7 @@ return imageCollection[curPos-1];},_getNextImage=function(){var curPos=_.indexOf
return imageCollection[curPos+1];},_rotateImage=function(e){e.preventDefault();var visibleImage=$('img.ipsLightbox_image:visible');var url=$(e.currentTarget).attr('href')+'&current='+$(visibleImage).attr('data-rotate');ips.getAjax()(url,{showLoading:true}).done(function(response){$('img[data-fileId="'+response.fileId+'"]').each(function(){$(visibleImage).attr('data-rotate',response.rotate);_applyRotation(this,response.rotate);if(response.saved==1){$(document).trigger('imageRotated',response);}});ips.ui.flashMsg.show(response.message);}).fail(function(){window.location=url;});},_applyRotation=function(elem,angle){$(elem).css({'transform':'rotate('+angle+'deg)'});if(angle=='90'||angle=='-90'){var panelHeight=$(elem).parents('.ipsLightbox_imagePanel').height();$(elem).css({'max-width':(panelHeight-20).toString()+'px'});}},close=function(e){if(e){e.preventDefault();e.stopPropagation();}
$(document).off('imageUpdated',_updateImage);$(document).off('imageLoading',_mainImageLoading);modal.hide();pieces.lightbox.hide();},_show=function(){ips.utils.anim.go('fadeIn fast',modal);ips.utils.anim.go('fadeIn fast',pieces.lightbox);},_buildWrapper=function(){pieces={lightbox:$('<div/>').addClass(options.className).css({zIndex:ips.ui.zIndex()}),imagePanel:$('<div/>').addClass(options.className+'_imagePanel'),commentsPanel:$('<div/>').addClass(options.className+'_commentsPanel').html('').hide(),toolsPanel:$('<div/>').addClass(options.className+'_toolsPanel').html('').hide(),next:$('<a/>').addClass(options.className+'_next').html("<i class='fa-solid fa-angle-right'></i>"),prev:$('<a/>').addClass(options.className+'_prev').html("<i class='fa-solid fa-angle-left'></i>"),close:$('<a/>').addClass(options.className+'_close').html("&times;"),fullSize:$('<a/>').attr('href','#').attr('target','_blank').addClass(options.className+'_fullSize'),metaPanel:$('<div/>').addClass(options.className+'_meta').hide()};pieces.lightbox.append(pieces.imagePanel.append(pieces.next).append(pieces.prev).append(pieces.fullSize)).append(pieces.metaPanel).append(pieces.commentsPanel).append(pieces.toolsPanel).append(pieces.close);$('body').append(pieces.lightbox);},_getAllImages=function(){if(options.group){var images=$('[data-ipslightbox-group="'+options.group+'"]');}else{var images=$(elem);}
$.each(images,function(i,thisElem){imageCollection.push(_returnImageData(thisElem));});},_returnImageData=function(thisElem){var origImage,largeImage;if(thisElem.tagName!='IMG'){origImage=$(thisElem).find('img').attr('src');}else{origImage=$(thisElem).attr('src');}
if($(thisElem).attr('data-fullURL')){largeImage=$(thisElem).attr('data-fullURL');}else if(thisElem.tagName=='A'&&$(thisElem).attr('href')){largeImage=$(thisElem).attr('href');}
if($(thisElem).attr('data-fullURL')){largeImage=$(thisElem).attr('data-fullURL');}else if($(thisElem).is(':is(a, i-lightbox)')&&$(thisElem).attr('href')){largeImage=$(thisElem).attr('href');}
return{elem:thisElem,originalImage:origImage,largeImage:largeImage||origImage,meta:$(thisElem).attr('data-ipsLightbox-meta'),commentsURL:$(thisElem).attr('data-ipsLightbox-commentsURL')};},_buildModal=function(){modal=ips.ui.getModal();modal.css({zIndex:ips.ui.zIndex()});};init();return{destruct:destruct};};}(jQuery,_));;
;(function($,_){ips.createModule('ips.ui.map',function(){const defaults={zoom:2,maxZoom:16,markers:'[]',contentUrl:null};function _mapbox(elem,options){$('head').append("<link rel='stylesheet' type='text/css' media='all' href='https://api.mapbox.com/mapbox.js/v3.3.1/mapbox.css'><link href='https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css' rel='stylesheet' /><link href='https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css' rel='stylesheet' />");function handlePopup(e){const popup=e.target.getPopup();const clubID=e.target.options.clubID;ips.getAjax()(options.contentUrl+clubID).done(response=>{popup.setContent(response);popup.update();});}
ips.loader.get(['https://api.mapbox.com/mapbox.js/v3.3.1/mapbox.js']).then(function(){ips.loader.get(['https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js']).then(function(){L.mapbox.accessToken=ips.getSetting('mapApiKey');const map=L.mapbox.map(elem.get(0)).setView([45,0],options.zoom).addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11'));const cluster=new L.MarkerClusterGroup();map.addLayer(cluster);const markers=$.parseJSON(options.markers);for(const id in markers){const marker=L.marker([markers[id].lat,markers[id].long],{icon:L.mapbox.marker.icon({'marker-color':'#0000ff'}),clubID:id,title:markers[id].title,draggable:false});cluster.addLayer(marker);if(options.contentUrl){marker.bindPopup(ips.getString('loading'));marker.on('click',handlePopup);}}
@@ -1349,17 +1339,6 @@ _hideTruncate(elem,_.defaults(options,defaults));}}
if(options.deferred){TRUNCATE_CALLBACK_MAP.set(el,collapseIfNeeded);return;}
collapseIfNeeded();},_hideTruncate=function(elem,options){if(elem.attr('data-truncated')){return;}
var showMore=ips.templates.render('core.truncate.expand',{text:options.expandText});$(elem).after(showMore);var expander=elem.next("[data-action='expandTruncate']");elem.attr('data-truncated',true);expander.on('click',function(e){elem.attr('data-truncate-expanded',true);expander.remove();});};ips.ui.registerWidget('truncate',ips.ui.truncate,['expandText','deferred']);return{respond:respond};});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.createModule('ips.ui.sideMenu',function(){var defaults={type:'radio',responsive:true,group:false};var respond=function(elem,options){if(!$(elem).data('_sidemenu')){$(elem).data('_sidemenu',sideMenuObj(elem,_.defaults(options,defaults)));}};ips.ui.registerWidget('sideMenu',ips.ui.sideMenu,['responsive','type','group']);var sideMenuObj=function(elem,options){var init=function(){if(options.responsive&&ips.utils.responsive.enabled()){$(elem).on('click','[data-action="openSideMenu"]',_toggleSideMenu);}
$(elem).on('click','.ipsSideMenu_item',_clickEvent);$(elem).on('selectItem.sideMenu',_selectItem);},_clickEvent=function(e){_doSelectItem($(e.currentTarget),e);_toggleSideMenu();},_selectItem=function(e,data){_doSelectItem(elem.find('[data-ipsMenuValue="'+data.value+'"]'),e);},_doSelectItem=function(item,e){if((_.isUndefined(item.attr('data-ipsMenuValue'))&&!item.find('input[type="radio"], input[type="checkbox"]').length)||!item.length){return;}
if(e){e.preventDefault();}
if(item.hasClass('ipsSideMenu_itemDisabled')){return;}
var workingItems;if(!options.group){workingItems=$(elem).find('.ipsSideMenu_item');}else{workingItems=item.closest('.ipsSideMenu__list').find('.ipsSideMenu_item');}
if(options.type==='check'){item=$(item).get(0);item.classList[item.classList.contains('ipsSideMenu_itemActive')?'remove':'add']('ipsSideMenu_itemActive');item.querySelectorAll('input[type="radio"], input[type="checkbox"]').forEach(input=>{input.checked=!input.checked;input.dispatchEvent(new CustomEvent('change',{bubbles:true}));});}else{const items=[...workingItems]
items.forEach(item=>{item.classList.remove('ipsSideMenu_itemActive')
item.querySelectorAll('input[type="radio"], input[type="checkbox"]').forEach(input=>{if(input.checked){input.checked=false;input.dispatchEvent(new CustomEvent('change',{bubbles:true}))}});});item=$(item).get(0);item.classList.add('ipsSideMenu_itemActive')
item.querySelectorAll('input[type="radio"], input[type="checkbox"]').forEach(input=>{if(!input.checked){input.checked=true;input.dispatchEvent(new CustomEvent("change",{bubbles:true}));}});}
var selectedItems=[];workingItems.filter('.ipsSideMenu_itemActive').each(function(){selectedItems.push($(this).attr('data-ipsMenuValue'));});$(elem).trigger('itemClicked.sideMenu',{id:$(elem).identify().attr('id'),menuElem:$(elem),selectedElem:$(item),selectedItemID:$(item).attr('data-ipsMenuValue'),selectedItems:selectedItems});},_toggleSideMenu=function(e){if(e){e.preventDefault();}
$(elem).toggleClass('ipsSideMenu_open');$(elem).find('.ipsSideMenu__view').each(function(){this.scrollIntoView({behavior:"smooth"})});};init();return{};};return{respond};});}(jQuery,_));;
;(function($,_,undefined){"use strict";const endCachingDebounced=_.throttle((elem)=>{ips.utils.position.endCaching(elem);},100,{leading:false});ips.createModule('ips.ui.tooltip',function(){let _tooltip=null,_timer=[],_currentElem=null,_showTimeout,_visible=false,_lastOptions={},_mo=new MutationObserver(_.throttle(()=>{if(_currentElem&&_tooltip&&_visible&&!_lastOptions.ajax){let mutations=[];if(_currentElem.getAttribute('title')){mutations.push(()=>_currentElem.removeAttribute("_title"));}
const content=_getContent($(_currentElem),_lastOptions);if(_lastOptions.safe){mutations.push(()=>_tooltip.html(content));}else{mutations.push(()=>_tooltip.text(content));}
if(mutations.length){requestAnimationFrame(()=>mutations.forEach(mutation=>mutation()));}}},30));let _frame;const _ro=new ResizeObserver((entries)=>{const tooltipEntry=entries.find(entry=>entry.target===$(_tooltip).get(0));const tooltipHeight=tooltipEntry?.borderBoxSize[0]?.blockSize||0;const tooltipWidth=tooltipEntry?.borderBoxSize[0]?.inlineSize||0;const tooltipEl=$(_tooltip).get(0);const docBox=document.body.getBoundingClientRect();const mutations=[];for(const entry of entries){if(entry.target===$(_tooltip).get(0)){continue;}
@@ -1384,15 +1363,14 @@ function _getContent(elem,options){elem=$(elem);if(elem.data('_tooltip')){return
else if(options.label){if(options.json){return $.parseJSON(options.label).join("<br>");}else{return options.label;}}else if(elem.attr('aria-label')){return elem.attr('aria-label');}else if(elem.attr('_title')){return elem.attr('_title');}else if(elem.attr('title')){return elem.attr('title');}}
function _createTooltipElement(){var tooltip=ips.templates.render('core.tooltip',{id:'ipsTooltip'});ips.getContainer().append(tooltip);_tooltip=$('#ipsTooltip');}
ips.ui.registerWidget('tooltip',ips.ui.tooltip,['label','extraClass','safe','json','ajax'],{lazyLoad:true,lazyEvents:'mouseenter mouseleave focus blur'});return{respond};});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.createModule('ips.ui.stack',function(){var defaults={sortable:true,itemTemplate:'core.forms.stack'};var respond=function(elem,options){if(!$(elem).data('_stack')){$(elem).data('_stack',stackObj(elem,_.defaults(options,defaults)));}};ips.ui.registerWidget('stack',ips.ui.stack,['sortable','maxItems','itemTemplate']);return{respond:respond};});var stackObj=function(elem,options){var stack=null;var currentIndex=0;var init=function(){if(!elem.attr('data-initiated')){stack=elem.find('[data-role="stack"]');currentIndex=_getItemCount();if(options.maxItems&&currentIndex>=options.maxItems){elem.find('[data-action="stackAdd"]').hide();}
elem.on('click','[data-action="stackAdd"]',_addItem);elem.on('click','[data-action="stackDelete"]',_deleteItem);elem.on('keydown','[data-role="stackItem"] input[type="text"]',_keyDown);if(options.sortable){ips.loader.get(['core/interface/jquery/jquery-ui.js']).then(function(){stack.sortable({handle:'[data-action="stackDrag"]'});});}
elem.attr('data-initiated','true');$(elem).trigger('stackInitialized',{count:_getItemCount()});}},_keyDown=function(e){if(e.keyCode==ips.ui.key.ENTER){e.preventDefault();_addItem(null,$(e.currentTarget).closest('[data-role="stackItem"]'));}},_addItem=function(e,after){if(e){e.preventDefault();}
if(options.maxItems&&_getItemCount()>=options.maxItems){return;}
currentIndex++;var field=stack.find('[data-ipsStack-wrapper]').first().html().replace(/(name=['"][a-zA-Z0-9\-_]+?)\[([^\]]+?)?\]/g,'$1['+currentIndex+']').replace(/data-ipsFormData=['"](.+?)['"]/ig,'').replace(/id=['"](.+?)['"]/g,'id="$1_'+currentIndex+'"').replace(/data-toggles=['"](.+?)['"]/g,function(match,p1){var pieces=p1.split(',');var newPieces=[];_.each(pieces,function(val){if(val.match(/_[0-9]+$/g)){newPieces.push(val+'_'+currentIndex);}else{newPieces.push(val);}});return'data-toggles="'+newPieces.join(',')+'"';});field=field.replace(/\<input(.+?)value=['"](.*?)['"](.*?)\>/g,'<input$1value=""$3>');if(stack.find('select').length){field=field.replace(/\<option(.+?)selected(?:=['"]selected["'])?(.*?)\>/g,'<option$1$2>');}
var html=ips.templates.render(options.itemTemplate,{field:field});if(after){after.after(html).next('[data-role="stackItem"]').find('input,textarea').focus();}else{stack.append(html).find('[data-role="stackItem"] input,[data-role="stackItem"] textarea').last().focus();}
if(options.maxItems&&_getItemCount()>=options.maxItems){elem.find('[data-action="stackAdd"]').hide();}
$(document).trigger('contentChange',[elem]);$(elem).trigger('stackRowAdded',{count:_getItemCount()});},_deleteItem=function(e){e.preventDefault();var row=$(e.currentTarget).closest('[data-role="stackItem"]');if(_getItemCount()===1){row.find('input,textarea').val('');row.find("option:selected").removeAttr("selected");return;}
ips.utils.anim.go('fadeOutDown',row).done(function(){row.hide();setTimeout(function(){row.remove();if(options.maxItems&&_getItemCount()<options.maxItems){elem.find('[data-action="stackAdd"]').show();}},100);});},_getItemCount=function(){return stack.find('[data-role="stackItem"]').length;};init();};}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.createModule('ips.ui.spoiler',function(){function respond(elem,options,e){elem.contents().hide();const details=document.createElement('details');for(const attr of[...$(elem).get(0).getAttributeNames()]){try{details.setAttribute(attr,$(elem).get(0).getAttribute(attr));}catch(e){Debug.warn(e);}}
$(elem).get(0).after(details);elem.hide();for(const child of[...$(elem).get(0).childNodes]){details.appendChild(child);}
elem=$(details);var existingHeader=elem.children('.ipsSpoiler_header');var header=ips.templates.render('core.editor.spoilerHeader');if(existingHeader.length){existingHeader.replaceWith(header);}else{elem.prepend(header);}
elem.find('> .ipsSpoiler_header').on('click',_toggleSpoiler);}
function _toggleSpoiler(e){var header=$(e.currentTarget);var target=$(e.target);var spoiler=$(e.target).closest('[data-ipsSpoiler]');if(target.is('a:not( [data-action="toggleSpoiler"] )')||(target.closest('a').length&&!target.closest('a').is('[data-action="toggleSpoiler"]'))){return;}
e.preventDefault();if(header.hasClass('ipsSpoiler_closed')){spoiler.attr('open','');ips.utils.anim.go('fadeIn',header.siblings());header.removeClass('ipsSpoiler_closed').addClass('ipsSpoiler_open').find('span').text(ips.getString('spoilerClickToHide'));$(document).trigger('contentChange',[spoiler]);}else{spoiler.attr('open',null);header.siblings().hide();header.removeClass('ipsSpoiler_open').addClass('ipsSpoiler_closed').find('span').text(ips.getString('spoilerClickToReveal'));}
e.stopPropagation();}
ips.ui.registerWidget('spoiler',ips.ui.spoiler);return{respond:respond}});}(jQuery,_));;
;(($,_)=>{"use strict";const defaults={currentitems:[],canEdit:false}
const _globalExclude=()=>`:not(.ipsTableOfContents *, .ipsEdited, aside *, #elPostFeed [data-ips-hook="postWrapper"] :not([data-first-post] *))`;const _pagebuilderContainer=()=>`:is([data-blockid*="app_cms_Wysiwyg"], [data-blockid*="app_cms_Codemirror"], [data-pageid] [data-widgetarea*="col"] [data-blockid]) > .ipsWidget__content`
const _rootTocTextNodes=()=>`:is(p,h1,h2,h3,h4,h5,h6)`;const _doubleNestedTocTextNodes=()=>`:is(details, .ipsRichTextBox) > :is(summary, .ipsRichTextBox__title)`
@@ -1615,6 +1593,33 @@ lastItems=options.currentitems;TableOfContents.setItems(options.currentitems)}ca
TableOfContents.instanceMap.set(realElem,new TableOfContents(realElem,options))}
return TableOfContents.instanceMap.get(realElem)},refreshElems(){if(Array.isArray(lastItems)||lastItems===null){TableOfContents.setItems(lastItems,true);}},getInstance(elem){if(TableOfContents.instanceMap.has($(elem).get(0))){return TableOfContents.instanceMap.get($(elem).get(0))}
return null;},createSelector(elem){return TableOfContents.createSelector(elem)},getOptions(){return TableOfContents.options},getContext(){return TableOfContents.getContentContext()}}})})(jQuery,_);
;(function($,_){"use strict";ips.createModule('ips.ui.tabbar',function(){const defaults={itemSelector:'.ipsTabs__tab',activeClass:false,loadingClass:'ipsLoading ipsTabs_loadingContent',panelClass:'ipsTabs__panel',updateURL:true,updateTitle:false,disableNav:false};ips.ui.registerWidget('tabbar',ips.ui.tabbar,['contentArea','itemSelector','activeClass','loadingClass','disableNav','panelClass','updateURL','updateTitle']);return{respond(elem,options){if(!$(elem).data('_tabbar')){$(elem).data('_tabbar',tabBarObj(elem,_.defaults(options,defaults)));}}};});function tabBarObj(elem,options){const rawElem=$(elem).get(0);const tabs=$(elem).find(options.itemSelector);let barId=rawElem.id;let active;let ajaxObj;function init(){if(!barId){barId=$(rawElem).identify().attr('id');}
if(!options.contentArea||!$(options.contentArea).length){options.contentArea='#'+$(rawElem).next().identify().attr('id');}
if(!tabs.length){Debug.warn("No tabs found in tab bar"+barId);return;}
active=_getActiveTab();_initializeActive();$(elem).on('click',options.itemSelector,_handleTabClick);let tabbar=elem[0],tablist=tabbar.querySelector('[role="tablist"]'),scrollers=tabbar.querySelector('[data-role="tabScrollers"]');if(scrollers){scrollers.addEventListener("click",e=>_handleScrollerClick(e,tablist));let scrollerObserver=new IntersectionObserver(tabs=>tabs.forEach(tab=>tabbar.querySelector(`[data-direction="${tab.target.matches(':first-child') ? 'prev' : 'next'}"]`).hidden=tab.intersectionRatio>.99),{root:tablist,threshold:0.99});tablist.querySelectorAll(':scope > :first-child, :scope > :last-child').forEach(el=>{scrollerObserver.observe(el)});}}
function _handleScrollerClick(e,tablist){let direction=e.target.closest('button').getAttribute("data-direction"),currentScroll=tablist.scrollLeft,listWidth=tablist.offsetWidth/2;if(direction==="prev"){listWidth=-listWidth;}
tablist.scrollTo({left:currentScroll+listWidth,behavior:"smooth"})}
function _handleTabClick(e){if(options.disableNav){return;}
e.preventDefault();if($(this).attr('aria-selected')==='true'){return;}
let thisId=$(this).identify().attr('id'),thisContent=$('#'+$(this).attr('aria-controls'));if(!thisContent.length){thisContent=$('#'+thisId+'_panel');}
if(!thisContent.length){thisContent=_createTabPanel(thisId);_loadContent(this,thisContent).done(()=>_switchTab(thisId)).fail(()=>Debug.log('failed'));}else{_hideAllPanels();_switchTab(thisId);}
_updateURL(thisId);}
function _switchTab(tabId){_hideAllPanels();const thisContent=$('#'+tabId+'_panel'),thisContentParent=document.querySelector(elem[0].getAttribute("data-ipstabbar-contentarea"));thisContent.removeAttr('hidden');$(elem).trigger('tabShown',{barID:barId,tabID:tabId,tab:active,panel:thisContent});$(document).trigger('contentChange',[thisContent]);if(elem[0].matches(".ipsTabs--sticky")&&thisContentParent&&window.scrollY>thisContentParent.offsetTop){thisContentParent.scrollIntoView({behavior:"smooth"});}
active=$('#'+tabId);_makeTabActive(active);$(elem).trigger('tabChanged',{barID:barId,tabID:tabId,tab:active,panel:thisContent});}
function _updateURL(tabId){if(!options.updateURL){return;}
const tabLink=$(`#${tabId}`);const href=tabLink.attr('href');const title=(options.updateTitle&&tabLink.attr('title'))?tabLink.attr('title'):document.title;if(!_.isEmpty(href)&&!href.startsWith('#')){ips.utils.history.replaceState({},'ips.ui.tabbar',href);document.title=title
ips.utils.analytics.trackPageView(href);}}
function _getActiveTab(){const activeTab=elem.find('[aria-selected="true"]');if(activeTab.length){return activeTab.get(0);}
return $(elem).find(options.itemSelector).first();}
function _initializeActive(){const activeId=$(active).identify().attr('id');if(!$('#'+activeId+'_panel').length){if($(options.contentArea).children().length){$(options.contentArea).wrapInner(_createTabPanel(activeId,true));_switchTab(activeId);}else{var newPanel=_createTabPanel(activeId);_loadContent(active,newPanel).done(function(){_switchTab(activeId);});}}else{_switchTab(activeId);}}
function _makeTabActive(activeTab){$(elem).find(options.itemSelector).attr('aria-selected','false');if(options.activeClass){$(elem).find(options.itemSelector).removeClass(options.activeClass);}
$(activeTab).attr('aria-selected','true');if(options.activeClass){$(activeTab).addClass(options.activeClass);}}
function _loadContent(tab,container){let url;const deferred=$.Deferred();_hideAllPanels();if($(tab).attr('data-tabURL')){url=$(tab).attr('data-tabURL');}else{url=$(tab).attr('href');}
$(options.contentArea).addClass(options.loadingClass);ajaxObj=ips.getAjax();ajaxObj(url).done(response=>{$(container).html(response);deferred.resolve();}).fail(()=>window.location=$(tab).attr('href')).always(()=>$(options.contentArea).removeClass(options.loadingClass));return deferred.promise();}
function _hideAllPanels(){$(options.contentArea).find('> .'+options.panelClass).attr('hidden','');}
function _createTabPanel(tabId,noAppend=false){const newPanel=$('<div/>').attr({'id':tabId+'_panel'}).addClass(options.panelClass).attr({'role':'tabpanel'}).attr({'aria-labelledby':tabId});if(!noAppend){$(options.contentArea).append(newPanel);}
return newPanel;}
init();return{init};}}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.createModule('ips.utils',function(options){var argsToArray=function(obj){return Array.prototype.slice.call(obj);},uppercaseFirst=function(fromString){return fromString.charAt(0).toUpperCase()+fromString.slice(1);},getIDsFromList=function(list){if(!list){return'';}
if(!_.isArray(list)){list=list.toString().split(',');}
list=_.compact(list);if(!list.length){return false;}