/home/bdqbpbxa/dev-subdomains/precisai-dev.goodface.com.ua/wp-content/themes/precisai/js/slider.js
window.addEventListener('load', function() {
if(document.querySelectorAll('.meet-writing-assistant-slider').length) {
const splideMeetWriting = new Splide( '.meet-writing-assistant-slider', {
type: 'loop',
perPage: 5,
perMove: 1,
arrows: false,
pagination: false,
focus: 0,
// padding: { left: '0', right: '150px' },
gap: 24,
breakpoints: {
1500: {
perPage: 5,
},
1200: {
gap: 16,
},
1048: {
perPage: 3,
// padding: { left: '0', right: '100px' },
},
768: {
perPage: 2,
// padding: { left: '0', right: '60px' },
},
}
} );
const currNumSlide = document.querySelector( '.my-carousel-progress__count' );
const barsplideMeetWriting = splideMeetWriting.root.querySelector( '.my-carousel-progress-bar' );
const textBlocks = document.querySelectorAll('.meet-writing-assistant-text');
const slideBlocks = document.querySelectorAll('.meet-writing-assistant-slider__item');
let changeTextBlock = false;
splideMeetWriting.on( 'mounted move', function () {
const endSplideMeetWriting = splideMeetWriting.Components.Controller.getEnd() + 1;
const rateSplideMeetWriting = Math.min( ( splideMeetWriting.index + 1 ) / endSplideMeetWriting, 1 );
const widthActiveBarElem = 100 / endSplideMeetWriting;
if(!changeTextBlock) {
changeTextBlock = true;
return;
}
removeAllActive();
showActiveTextBlock(splideMeetWriting.index);
removeNoActiveClassItem();
let activeElemNumText = (splideMeetWriting.index + 1);
if(activeElemNumText < 9) {
activeElemNumText = '0' + (splideMeetWriting.index + 1);
}
currNumSlide.innerHTML = activeElemNumText;
changeTextBlock = true;
// console.log(String( 100 * rateSplideMeetWriting ) + '%')
barsplideMeetWriting.style.width = widthActiveBarElem + '%';
barsplideMeetWriting.style.left = String( 100 * rateSplideMeetWriting - widthActiveBarElem) + '%';
} );
function removeNoActiveClassItem() {
slideBlocks.forEach(function (slideBlock) {
slideBlock.classList.remove('--no-active');
});
}
function removeAllActive() {
textBlocks.forEach(function (textBlock) {
textBlock.classList.remove('--active');
});
}
function showActiveTextBlock(activeElemNum) {
if(!document.querySelectorAll(`.meet-writing-assistant-text[data-text-slide="${activeElemNum}"]`).length) return;
const activeElem = document.querySelector(`.meet-writing-assistant-text[data-text-slide="${activeElemNum}"]`);
activeElem.classList.add('--active');
}
splideMeetWriting.mount();
splideMeetWriting.on('click touchend', slide => {
splideMeetWriting.go(slide.index);
});
}
// if(document.querySelectorAll('.track-user-activity-slider').length) {
// const splideTrackUserActivity = new Splide( '.track-user-activity-slider', {
// // type: 'loop',
// type: 'slide',
// perPage: 1,
// perMove: 1,
// arrows: false,
// pagination: false,
// direction: 'ttb',
// // heightRatio : 700px,
// height: 560,
// // wheel: true,
// focus: 0,
// gap: 24,
// breakpoints: {
// 1400: {
// height: 480,
// },
// 1024: {
// direction: 'ltr',
// height: '100%',
// },
// 768: {
// },
// 540: {
//
// }
// }
// } );
//
// // const barSplideTrackUserActivity = document.querySelector( '.track-user-activity__progress-bar' );
// // splideTrackUserActivity.on( 'mounted move', function () {
// // const endSplideTrackUserActivity = splideTrackUserActivity.Components.Controller.getEnd() + 1;
// // const rateSplideTrackUserActivity = Math.min( ( splideTrackUserActivity.index + 1 ) / endSplideTrackUserActivity, 1 );
// // barSplideTrackUserActivity.style.height = String( 100 * rateSplideTrackUserActivity ) + '%';
// // } );
// //
// splideTrackUserActivity.mount();
// }
if(document.querySelectorAll('.reviews-slider').length) {
const splideReviewSlider = new Splide( '.reviews-slider', {
type: 'loop',
perPage: 1,
perMove: 1,
pagination: false,
focus: 0,
gap: 24,
breakpoints: {
}
} );
const ActiveSlideSplideReviewSliders = document.querySelectorAll( '.reviews-slider__count--active-slide' );
splideReviewSlider.on( 'mounted move', function () {
const indexSplideReviewSlider = splideReviewSlider.index + 1;
ActiveSlideSplideReviewSliders.forEach(function (currentActiveSlide) {
currentActiveSlide.innerHTML = indexSplideReviewSlider;
});
} );
splideReviewSlider.mount();
}
if(document.querySelectorAll('.latest-articles-splide').length) {
const splideLatestArticles = new Splide( '.latest-articles-splide', {
type : 'loop',
perPage : 3,
arrows: true,
pagination: false,
gap: 16,
breakpoints: {
1023: {
perPage: 2,
},
768: {
perPage: 1,
},
540: {
perPage: 1,
}
}
} );
splideLatestArticles.mount();
}
if (document.querySelectorAll('.try-slider').length) {
const trySlider = new Splide('.try-slider', {
type: 'loop',
perPage: 3,
perMove: 1,
start: 1,
arrows: false,
pagination: false,
flickPower: 50,
flickMaxPages: 1,
autoplay: true,
interval: 8000,
breakpoints: {
1920: { perPage: 2, padding: { left: '200px', right: '' } },
1601: { padding: { left: '60px', right: '' } },
1441: { padding: { left: '50px', right: '' } },
1025: { padding: { left: '40px', right: '' } },
1023: { perPage: 2 },
768: { perPage: 2, padding: { left: '30px', right: '' } },
767: {
perPage: 1,
padding: { left: '45px', right: '45px' }
}
}
});
trySlider.mount();
const paginationContainer = document.createElement('div');
paginationContainer.classList.add('custom-splide-pagination', 'jc-c');
Array.from({ length: trySlider.length }).forEach((_, i) => {
const dot = document.createElement('button');
dot.classList.add('custom-dot');
dot.dataset.index = i;
dot.addEventListener('click', () => trySlider.go(i));
paginationContainer.appendChild(dot);
});
document.querySelector('.try-slider').after(paginationContainer);
function alignTitle(paddingLeft) {
const container = document.querySelector('.try-main-h1__container');
container.classList.add('container--fluid');
container.style.paddingLeft = `${paddingLeft}px`;
}
function removeAlignTitle() {
const container = document.querySelector('.try-main-h1__container');
container.classList.remove('container--fluid');
container.style.paddingLeft = `revert-layer`;
}
function alignPagination() {
const slideWidth = document.querySelector('.splide__slide')?.offsetWidth || 0;
const windowWidth = window.innerWidth;
const paddingMap = [
{ max: 1024, value: 0 },
{ max: 1441, value: 50 },
{ max: 1601, value: 60 },
{ max: 1920, value: 200 }
];
if (windowWidth <= 1921 && windowWidth > 1025) {
const paddingLeft = paddingMap.find(p => windowWidth <= p.max)?.value || 0;
const paginationWidth = paginationContainer.offsetWidth || 0;
const paddingOffset = 16;
paginationContainer.classList.remove('jc-c');
paginationContainer.style.marginLeft = `${paddingLeft + slideWidth / 2 - paddingOffset * 2}px`;
alignTitle(paddingLeft + paddingOffset);
} else {
paginationContainer.classList.add('jc-c');
paginationContainer.style.marginLeft = `0px`;
removeAlignTitle();
}
}
function throttle(func, limit) {
let lastFunc;
let lastRan;
return function () {
const context = this, args = arguments;
if (!lastRan) {
func.apply(context, args);
lastRan = Date.now();
} else {
clearTimeout(lastFunc);
lastFunc = setTimeout(function () {
if ((Date.now() - lastRan) >= limit) {
func.apply(context, args);
lastRan = Date.now();
}
}, limit - (Date.now() - lastRan));
}
};
}
const throttledResize = throttle(alignPagination, 200);
window.addEventListener('resize', throttledResize);
alignPagination();
trySlider.on('moved', () => {
const activeIndex = trySlider.index % trySlider.length;
document.querySelectorAll('.custom-dot').forEach((dot, index) => {
dot.classList.toggle('is-active', index === activeIndex);
});
updateFormData(true);
});
document.querySelectorAll('.custom-dot')[trySlider.index]?.classList.add('is-active');
function updateFormData (setCurrentField) {
const initCardNameField = document.querySelector('input[name="try-form-init-name"]');
const currentCardNameField = document.querySelector('input[name="try-form-current-name"]');
const currentSlideSelector = document.querySelector('.try-slider .is-active.is-visible');
const slideName = currentSlideSelector.getAttribute('data-slide-name');
if(initCardNameField.value === "") initCardNameField.value = slideName;
if(setCurrentField) currentCardNameField.value = slideName;
}
updateFormData();
trySlider.on('click touchend', slide => {
trySlider.go(slide.index);
});
}
})