initTinySlider() {
/**
* Content carousel with extensive options to control behaviour and appearance
* @requires https://github.com/ganlanyuan/tiny-slider
*/
let forEach = function forEach(array, callback, scope) {
for (let i = 0; i < array.length; i++) {
callback.call(scope, i, array[i]); // passes back stuff we need
}
}; // Carousel initialisation
let carousels = document.querySelectorAll('.tns-carousel .tns-carousel-inner:not(.tns-slider)');
let carousels1 = document.querySelectorAll('.preview-slider');
forEach(carousels1, (index, value) => {
let defaults = {
mode: 'gallery',
container: value,
controlsText: ['<span class="gm-angle-left"></span>', '<span class="gm-angle-right"></span>'],
navPosition: 'bottom',
mouseDrag: true,
speed: 500,
lazyload: true,
autoplayHoverPause: true,
autoplayButtonOutput: false,
controls: false,
navAsThumbnails: false,
center: true,
responsive: {
900: {
controls: false
}
}
};
let userOptions;
if (value.dataset.carouselOptions != undefined) {
userOptions = JSON.parse(value.dataset.carouselOptions);
}
let options = Object.assign({}, defaults, userOptions);
let carousel1 = tns(options);
const sectorWith = value.offsetWidth / value.dataset.count; // ширина сектора в зависимости от количества cлайдов
let positionX = 0; // координата по горизонтали относительно элемента
let sector = 1; // текущий слайд
value.addEventListener("mousemove", (e) => {
let x = e.clientX;
let rect = e.target.getBoundingClientRect();
let offsetX = x - rect.left; // текущая координата по горизонтали
let currentSector = Math.floor(offsetX / sectorWith);
if (currentSector !== sector) {
sector = currentSector;
carousel1.goTo(currentSector);
}
});
});
forEach(carousels, (index, value) => {
let defaults = {
mode: 'gallery',
container: value,
controlsText: ['<span class="gm-angle-left"></span>', '<span class="gm-angle-right"></span>'],
navPosition: 'bottom',
mouseDrag: true,
speed: 500,
lazyload: true,
autoplayHoverPause: true,
autoplayButtonOutput: false,
controls: false,
navAsThumbnails: false,
center: true,
responsive: {
900: {
controls: false
}
}
};
let userOptions;
if (value.dataset.carouselOptions != undefined) {
userOptions = JSON.parse(value.dataset.carouselOptions);
}
let options = Object.assign({}, defaults, userOptions);
let carousel = tns(options);
});
},