(function () {
var SELECTOR = '.jet-listing-grid--2247'; // the swiper-WRAPPER class
var MAX_TRIES = 40;
var INTERVAL = 250;
var LOG = '[vino-spacer]';
var tries = 0;
function ready(fn) {
if (document.readyState === 'loading') {
console.log(LOG, 'document still loading — waiting for DOMContentLoaded');
document.addEventListener('DOMContentLoaded', fn);
} else {
console.log(LOG, 'document already ready (' + document.readyState + ')');
fn();
}
}
function addSpacer() {
tries++;
var wrappers = document.querySelectorAll(SELECTOR);
console.log(LOG, 'attempt', tries, '— wrappers matched:', wrappers.length);
var pending = false;
wrappers.forEach(function (wrapper, i) {
var host = wrapper.closest('.swiper'); // walk UP to the swiper container
var sw = host && host.swiper;
if (!host) {
console.warn(LOG, 'wrapper #' + i, 'has no .swiper ancestor — carousel disabled?');
return;
}
if (!sw) {
console.log(LOG, 'wrapper #' + i, 'found, Swiper not initialised yet — retrying');
pending = true;
return;
}
if (host.dataset.spacerAdded) {
console.log(LOG, 'wrapper #' + i, 'already has spacer — skipping');
return;
}
console.log(LOG, 'wrapper #' + i, 'ready. slides before:', sw.slides.length,
'| loop:', sw.params.loop);
host.dataset.spacerAdded = '1';
sw.appendSlide(
'
'
);
sw.update();
console.log(LOG, 'wrapper #' + i, 'spacer appended. slides after:', sw.slides.length);
});
if (!wrappers.length) pending = true;
if (pending) {
if (tries < MAX_TRIES) {
setTimeout(addSpacer, INTERVAL);
} else {
console.error(LOG, 'gave up after', tries, 'attempts');
}
} else {
console.log(LOG, 'done ✓');
}
}
ready(function () {
console.log(LOG, 'DOM ready — starting spacer routine');
addSpacer();
});
})();
(function () {
if (window.vinoTitleEq) return;
window.vinoTitleEq = true;
var SEL = '.jet-listing-grid__item .vino-title .elementor-heading-title';
var PROP = '--vino-title-h';
var raf;
function equalize() {
var items = document.querySelectorAll(SEL);
if (!items.length) return;
// release the locked height so we measure natural content height
document.documentElement.style.setProperty(PROP, '0px');
var max = 0;
for (var i = 0; i max) max = h;
}
document.documentElement.style.setProperty(PROP, Math.ceil(max) + 'px');
}
function schedule() {
cancelAnimationFrame(raf);
raf = requestAnimationFrame(equalize);
}
document.addEventListener('DOMContentLoaded', schedule);
window.addEventListener('load', schedule);
window.addEventListener('resize', schedule);
window.addEventListener('orientationchange', schedule);
// webfonts change metrics after first paint
if (document.fonts && document.fonts.ready) document.fonts.ready.then(schedule);
// Swiper loop clones + JetEngine ajax re-renders
var grid = document.querySelector('.jet-listing-grid__items');
if (grid && window.MutationObserver) {
new MutationObserver(schedule).observe(grid, { childList: true, subtree: true });
}
if (window.jQuery) {
jQuery(window).on('elementor/frontend/init', schedule);
jQuery(document).on('jet-filter-content-rendered jet-engine-request-calendar', schedule);
}
})();
(function () {
if (window.vinoTitleEq) return;
window.vinoTitleEq = true;
var SEL = '.jet-listing-grid__item .vino-title .elementor-heading-title';
var PROP = '--vino-title-h';
var raf;
function equalize() {
var items = document.querySelectorAll(SEL);
if (!items.length) return;
// release the locked height so we measure natural content height
document.documentElement.style.setProperty(PROP, '0px');
var max = 0;
for (var i = 0; i max) max = h;
}
document.documentElement.style.setProperty(PROP, Math.ceil(max) + 'px');
}
function schedule() {
cancelAnimationFrame(raf);
raf = requestAnimationFrame(equalize);
}
document.addEventListener('DOMContentLoaded', schedule);
window.addEventListener('load', schedule);
window.addEventListener('resize', schedule);
window.addEventListener('orientationchange', schedule);
// webfonts change metrics after first paint
if (document.fonts && document.fonts.ready) document.fonts.ready.then(schedule);
// Swiper loop clones + JetEngine ajax re-renders
var grid = document.querySelector('.jet-listing-grid__items');
if (grid && window.MutationObserver) {
new MutationObserver(schedule).observe(grid, { childList: true, subtree: true });
}
if (window.jQuery) {
jQuery(window).on('elementor/frontend/init', schedule);
jQuery(document).on('jet-filter-content-rendered jet-engine-request-calendar', schedule);
}
})();