((t,o)=>{if(!t)return;const i=(null===(o=globalThis._googlesitekit)||void 0===o?void 0:o.wcdata)||{},e=i.currency,l=i.products,n=i.purchase,a=i.add_to_cart,c=i.eventsToTrack,r=null==c?void 0:c.includes("add_to_cart"),d=null==c?void 0:c.includes("purchase");if(a&&r){var s,u;const t=h(a.price,e,a);null===(s=globalThis._googlesitekit)||void 0===s||null===(u=s.gtagEvent)||void 0===u||u.call(s,"add_to_cart",t)}if(n&&d){var g,_,p;const t=n.id,o=n.totals,i=n.items,e=n.user_data,l=h(o.total_price,o.currency_code,i,t,o.shipping_total,o.tax_total);null!==(g=globalThis._googlesitekit)&&void 0!==g&&g.gtagUserData&&e&&(l.user_data=e),null===(_=globalThis._googlesitekit)||void 0===_||null===(p=_.gtagEvent)||void 0===p||p.call(_,"purchase",l)}const v=t("body");function h(t,o,i){let e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;const a={value:m(t),currency:o,items:[],googlesitekit_event_provider:"woocommerce"};if(e&&(a.transaction_id=e),"number"==typeof l&&(a.shipping=l),"number"==typeof n&&(a.tax=n),i&&i.length)for(const t of i)a.items.push(f(t));else i&&i.id&&(a.items=[f(i)]);return a}function f(t){const o=t.id,i=t.name,e=t.price,l=t.variation,n=t.quantity,a=t.categories,c={item_id:o,item_name:i,price:m(e)};if(n&&(c.quantity=n),l&&(c.item_variant=l),a&&null!=a&&a.length){let t=1;for(const o of a)c[t>1?"item_category".concat(t):"item_category"]=o.name,t++}return c}function m(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return parseInt(t,10)/10**o}r&&(v.on("added_to_cart",(t,o,i,n)=>{var a,c;if(null==n||!n.jquery)return;const r=parseInt(n.data("product_id"),10);if(!r)return;const d=(null==l?void 0:l.find(t=>(null==t?void 0:t.id)===r))||{},s=h(d.price,e,d);null===(a=globalThis._googlesitekit)||void 0===a||null===(c=a.gtagEvent)||void 0===c||c.call(a,"add_to_cart",s)}),t(".products-block-post-template .product, .wc-block-product-template .product").each(function(){const o=t(this),i=parseInt(o.find("[data-product_id]").attr("data-product_id"),10);i&&o.on("click",o=>{var n,a;const c=t(o.target).closest(".wc-block-components-product-button [data-product_id]");if(!c.length||!c.hasClass("add_to_cart_button")||c.hasClass("product_type_variable"))return;const r=(null==l?void 0:l.find(t=>(null==t?void 0:t.id)===i))||{},d=h(r.price,e,r);null===(n=globalThis._googlesitekit)||void 0===n||null===(a=n.gtagEvent)||void 0===a||a.call(n,"add_to_cart",d)})}))})(globalThis.jQuery);
document.addEventListener("DOMContentLoaded", function (){
const categories=sliderData.categories||[];
const categorySlider=document.getElementById("categorySlider");
const prevButton=document.querySelector(".nav-button.prev");
const nextButton=document.querySelector(".nav-button.next");
let currentIndex=0;
const urlParams=new URLSearchParams(window.location.search);
const listingTypeFromUrl=urlParams.get('_listing_type');
if(listingTypeFromUrl){
const matchingListingType=categories.find((cat)=> cat.type==='listing_type'&&cat.slug===listingTypeFromUrl
);
if(matchingListingType){
currentIndex=categories.indexOf(matchingListingType);
}}else if(sliderData.currentCategory){
const currentCategory=categories.find((cat)=> cat.slug===sliderData.currentCategory
);
if(currentCategory){
currentIndex=categories.indexOf(currentCategory);
}}
categories.forEach((category, index)=> {
const categoryItem=document.createElement("div");
categoryItem.className="category-item" + (index===currentIndex ? " active":"");
categoryItem.setAttribute("data-id", category.id);
categoryItem.setAttribute("data-slug", category.slug);
if(category.type==='listing_type'){
categoryItem.setAttribute("data-type", "listing_type");
}
categoryItem.innerHTML=`
<div class="icon-container">${category.icon}</div>
<div class="category-name">${category.name}</div>
`;
if(index===currentIndex){
categoryItem.classList.add("active");
}else{
categoryItem.classList.remove("active");
}
categoryItem.addEventListener("click", function (e){
e.preventDefault();
e.stopPropagation();
document.querySelectorAll(".category-item").forEach((item)=> {
item.classList.remove("active");
});
this.classList.add("active");
const label=this.querySelector(".category-name");
if(label){
const pageTitle=document.querySelector(".page-title");
if(pageTitle){
pageTitle.textContent=label.textContent;
}}
const categoryId=this.getAttribute("data-id");
const categorySlug=this.getAttribute("data-slug");
const isListingType=this.getAttribute("data-type")==='listing_type';
const isAllOption=categorySlug==='all';
const isMixedTaxonomy=categorySlug&&categorySlug.includes(':');
const hasListingTypes=categories.some(cat=> cat.type==='listing_type');
const shouldHandleAsListingType=isListingType||(isAllOption&&hasListingTypes)||isMixedTaxonomy;
if(shouldHandleAsListingType){
console.log('Taking listing types path for:', categorySlug, {isListingType, isAllOption, hasListingTypes, isMixedTaxonomy});
var drilldownId="listeo-drilldown-listing-types";
if(window.ListeoDrilldown&&window.ListeoDrilldown[drilldownId]){
document.querySelectorAll('#listeo_core-search-form input[name="drilldown-listing-types[]"]').forEach(function(input){
input.remove();
});
var drilldown=window.ListeoDrilldown[drilldownId];
if(drilldown.selectedItems){
drilldown.selectedItems=[];
}
document.querySelectorAll("#" + drilldownId + " .menu-item.selected").forEach(function(item){
item.classList.remove("selected");
});
}
let listingTypeSelect=document.getElementById("listing_type") ||
document.getElementById("_listing_type") ||
document.querySelector("select[name='_listing_type']") ||
document.querySelector("select[name='listing_type']");
if(listingTypeSelect){
listingTypeSelect.value=isAllOption ? '':categorySlug;
const event=new Event("change", { bubbles: true });
listingTypeSelect.dispatchEvent(event);
if(typeof jQuery!=="undefined"&&typeof jQuery.fn.selectpicker==="function"){
jQuery(listingTypeSelect).selectpicker("refresh");
}}else{
const resultsContainer =
document.querySelector(".listeo-listings") ||
document.querySelector("#listeo-listings-container") ||
document.querySelector(".listings-container") ||
document.querySelector("[data-results-container]") ||
document.querySelector(".search-results");
if(resultsContainer&&typeof jQuery!=='undefined'){
const form=document.querySelector('#listeo_core-search-form');
if(form){
let hiddenInput;
let fieldName;
if(isMixedTaxonomy){
fieldName='drilldown-listing-types[]';
hiddenInput=form.querySelector('input[name="drilldown-listing-types[]"]');
}else{
fieldName='_listing_type';
hiddenInput=form.querySelector('input[name="_listing_type"]');
}
if(!hiddenInput){
hiddenInput=document.createElement("input");
hiddenInput.type="hidden";
hiddenInput.name=fieldName;
form.appendChild(hiddenInput);
}
hiddenInput.disabled=false;
hiddenInput.removeAttribute("disabled");
hiddenInput.value=isAllOption ? '':categorySlug;
var target=jQuery("#listeo-listings-container");
target.triggerHandler("update_results", [1, false]);
}}
}
if(document.getElementById("listeo-drilldown-listing-types")){
const drilldown=window.ListeoDrilldown["listeo-drilldown-listing-types"];
if(drilldown){
if(isAllOption){
console.log('Resetting listing type drilldown for All option');
if(typeof drilldown.reset==='function'){
drilldown.reset();
}else if(typeof drilldown.selectListingType==='function'){
drilldown.selectListingType('');
}}else if(categorySlug){
drilldown.selectListingType(categorySlug);
}}
}
if(listingTypeSelect){
listingTypeSelect.addEventListener("change", function (){
const sliderItems=document.querySelectorAll(".category-item.active"
);
sliderItems.forEach((item)=> item.classList.remove("active"));
});
}}else{
var drilldownId="listeo-drilldown-tax-listing_category";
if(window.ListeoDrilldown&&window.ListeoDrilldown[drilldownId]){
var drilldown=window.ListeoDrilldown[drilldownId];
document.querySelectorAll('#listeo_core-search-form input[name="tax-listing_category[]"]').forEach(function(input){
input.remove();
});
if(drilldown.selectedItems){
drilldown.selectedItems=[];
}
document.querySelectorAll(".drilldown-menu#" + drilldownId + " .menu-item.selected").forEach(function(item){
item.classList.remove("selected");
});
}
const select=document.getElementById("tax-listing_category");
if(select){
select.value=isAllOption ? '':categorySlug;
if(typeof bootstrap!=="undefined" &&
typeof bootstrap.Select!=="undefined"
){
bootstrap.Select.refresh();
}else if(typeof jQuery!=="undefined" &&
typeof jQuery.fn.selectpicker==="function"
){
jQuery(select).selectpicker("refresh");
}
const event=new Event("change", { bubbles: true });
select.dispatchEvent(event);
select.addEventListener("change", function (){
const sliderItems=document.querySelectorAll(".category-item.active"
);
sliderItems.forEach((item)=> item.classList.remove("active"));
});
}else{
const resultsContainer =
document.querySelector(".listeo-listings") ||
document.querySelector("#listeo-listings-container") ||
document.querySelector(".listings-container") ||
document.querySelector("[data-results-container]") ||
document.querySelector(".search-results");
if(resultsContainer&&typeof jQuery!=='undefined'){
const form=document.querySelector('#listeo_core-search-form');
if(form){
let hiddenInput;
let fieldName;
if(categorySlug&&categorySlug.includes(':')){
fieldName='drilldown-listing-types[]';
hiddenInput=form.querySelector('input[name="drilldown-listing-types[]"]');
}else{
fieldName='tax-listing_category';
hiddenInput=form.querySelector('input[name="tax-listing_category"]');
}
if(!hiddenInput){
hiddenInput=document.createElement("input");
hiddenInput.type="hidden";
hiddenInput.name=fieldName;
form.appendChild(hiddenInput);
}
hiddenInput.disabled=false;
hiddenInput.removeAttribute("disabled");
hiddenInput.value=isAllOption ? '':categorySlug;
var target=jQuery("#listeo-listings-container");
target.triggerHandler("update_results", [1, false]);
}}
}
if((categorySlug&&!categorySlug.includes(':'))||isAllOption){
const possibleTaxonomies=['listing_category', 'service_category', 'event_category', 'rental_category', 'classifieds_category', 'region', 'listing_feature'];
for (const taxonomy of possibleTaxonomies){
const drilldownId=`listeo-drilldown-tax-${taxonomy}`;
const drilldownElement=document.getElementById(drilldownId);
if(drilldownElement&&window.ListeoDrilldown&&window.ListeoDrilldown[drilldownId]){
const drilldown=window.ListeoDrilldown[drilldownId];
if(isAllOption){
console.log('Resetting category drilldown for All option:', drilldownId);
if(typeof drilldown.reset==='function'){
drilldown.reset();
}else if(typeof drilldown.selectById==='function'){
drilldown.selectById('');
}}else if(categoryId){
drilldown.selectById(categoryId);
}
if(!isAllOption){
break;
}}
}}
}});
let touchStartTime=0;
let touchStartX=0;
let touchStartY=0;
categoryItem.addEventListener("touchstart", function (e){
touchStartTime=Date.now();
touchStartX=e.touches[0].clientX;
touchStartY=e.touches[0].clientY;
});
categoryItem.addEventListener("touchend", function (e){
const touchEndTime=Date.now();
const touchDuration=touchEndTime - touchStartTime;
const touchEndX=e.changedTouches[0].clientX;
const touchEndY=e.changedTouches[0].clientY;
const deltaX=Math.abs(touchEndX - touchStartX);
const deltaY=Math.abs(touchEndY - touchStartY);
if(touchDuration < 300&&deltaX < 10&&deltaY < 10){
e.stopPropagation();
}});
categorySlider.appendChild(categoryItem);
});
let currentScrollPosition=0;
let maxScrollPosition=0;
let containerWidth=0;
let totalContentWidth=0;
let scrollStep=0;
function calculateDimensions(){
const items=categorySlider.querySelectorAll('.category-item');
if(items.length===0) return;
containerWidth=categorySlider.parentElement.clientWidth - 80;
totalContentWidth=0;
items.forEach(item=> {
const itemRect=item.getBoundingClientRect();
const itemStyle=window.getComputedStyle(item);
const marginLeft=parseFloat(itemStyle.marginLeft);
const marginRight=parseFloat(itemStyle.marginRight);
totalContentWidth +=itemRect.width + marginLeft + marginRight;
});
maxScrollPosition=Math.max(0, totalContentWidth - containerWidth);
scrollStep=containerWidth * 0.6;
}
function updateSliderPosition(){
categorySlider.style.transform=`translateX(-${currentScrollPosition}px)`;
updateNavigationButtons();
}
function updateNavigationButtons(){
if(currentScrollPosition <=0){
prevButton.classList.add("hidden");
}else{
prevButton.classList.remove("hidden");
}
const items=categorySlider.querySelectorAll('.category-item');
if(items.length > 0){
const lastItem=items[items.length - 1];
const sliderRect=categorySlider.parentElement.getBoundingClientRect();
const lastItemRect=lastItem.getBoundingClientRect();
const distanceToEnd=lastItemRect.right - (sliderRect.right - 40);
if(distanceToEnd <=5){
nextButton.classList.add("hidden");
}else{
nextButton.classList.remove("hidden");
}}else{
if(currentScrollPosition >=maxScrollPosition){
nextButton.classList.add("hidden");
}else{
nextButton.classList.remove("hidden");
}}
}
prevButton.addEventListener("click", function (){
if(currentScrollPosition > 0){
currentScrollPosition=Math.max(0, currentScrollPosition - scrollStep);
updateSliderPosition();
nextButton.classList.remove("hidden");
}});
nextButton.addEventListener("click", function (){
if(currentScrollPosition < maxScrollPosition){
currentScrollPosition=Math.min(maxScrollPosition, currentScrollPosition + scrollStep);
updateSliderPosition();
if(currentScrollPosition >=maxScrollPosition){
nextButton.classList.add("hidden");
}}
});
window.addEventListener("resize", function (){
calculateDimensions();
currentScrollPosition=Math.min(currentScrollPosition, maxScrollPosition);
updateSliderPosition();
});
calculateDimensions();
updateSliderPosition();
let startX=0;
let endX=0;
categorySlider.addEventListener("touchstart", function (e){
startX=e.touches[0].clientX;
});
categorySlider.addEventListener("touchmove", function (e){
endX=e.touches[0].clientX;
});
categorySlider.addEventListener("touchend", function (e){
const deltaX=endX - startX;
if(deltaX > 50&&currentScrollPosition > 0){
currentScrollPosition=Math.max(0, currentScrollPosition - scrollStep);
updateSliderPosition();
nextButton.classList.remove("hidden");
}
if(deltaX < -50&&currentScrollPosition < maxScrollPosition){
currentScrollPosition=Math.min(maxScrollPosition, currentScrollPosition + scrollStep);
updateSliderPosition();
if(currentScrollPosition >=maxScrollPosition){
nextButton.classList.add("hidden");
}}
startX=0;
endX=0;
});
});