/* eslint-disable import/no-unresolved */
import { useEffect, useRef, useState } from "@wordpress/element";
import { Swiper, SwiperSlide } from "swiper/react";
import { buildFontClasses, useDeviceType } from "../../controls/controls";
import {
Autoplay,
EffectCoverflow,
EffectCube,
EffectFade,
EffectFlip,
FreeMode,
Grid,
Keyboard,
Mousewheel,
Navigation,
Pagination,
Scrollbar,
Thumbs,
Controller,
} from "swiper/modules";
import TemplateOne from "../shared/templates/templateCards/templateOne";
import { SwiperNavButton } from "../shared/templates/templates-parts/templates-parts";
import "swiper/css";
import "swiper/css/navigation";
import "swiper/css/pagination";
import "swiper/css/free-mode";
import "swiper/css/autoplay";
import "swiper/css/effect-flip";
import "swiper/css/thumbs";
import "swiper/css/controller";
import classNames from "classnames";
import ThumbsTemplate from "../shared/templates/templateCards/thumbsTemplate";
import { ProTopBar } from "../shared/helpFn";
const Render = ({ posts, attributes, pageType = "frontend" }) => {
const {
dynamicClassNames,
carouselPauseOnHover,
carouselArrowStyle,
// thumbnailTwoNavArrow,
carouselAutoPlay,
carouselAutoPlayDelay,
carouselDirection,
carouselSpeed,
thumbnailTwoSlideToScroll,
thumbnailTwoAnimationEffect,
thumbnailTwoTabKeyNavigation,
thumbnailTwoMouseWheelControl,
thumbnailTwoAdaptiveHeight,
thumbnailTwoFreeScrollMode,
thumbnailSliderTwoLayout,
contentVerticalPosition,
thumbnailTwoPosition,
currentScreen,
infiniteLoop,
navArrowVisibilityOnHover,
thumbnailItemsToShow,
thumbnailSliderTwoHeight,
thumbnailTwoItemsHeight,
thumbnailProgressPosition,
blockLayoutName,
thumbnailTwoAlignment,
catTabCategoryPosition,
carouselNavArrow,
blockName,
} = attributes;
const [thumbsSwiper, setThumbsSwiper] = useState(null);
const [mainSwiper, setMainSwiper] = useState(null);
const isInitialize = useRef(false);
const swiperNevNextRef = useRef(null);
const swiperNevPrevRef = useRef(null);
const containerRef = useRef(null);
const [selectedPostId, setSelectedPostId] = useState(null);
const deviceType = useDeviceType();
const thumbnailsSlidePerGroups = thumbnailTwoSlideToScroll?.device?.[deviceType];
const bgPosition = "center";
const backgroundSize = "cover";
// const { Desktop: desktopScroll, Tablet: tabletScroll, Mobile: mobileScroll } = thumbnailTwoSlideToScroll.device;
const cardHeightClass = classNames(buildFontClasses("height", thumbnailSliderTwoHeight));
// const thumbsHeight = ["thumbnail-slider-two-layout-four", "thumbnail-slider-two-layout-five"].includes(
// blockLayoutName
// )
// ? "auto"
// : thumbnailTwoItemsHeight.device[currentScreen] + thumbnailTwoItemsHeight.unit[currentScreen];
const thumbnailItemsPerSlide = thumbnailItemsToShow.device?.[deviceType];
const thumbPosts = [...posts, ...posts.slice(0, thumbnailItemsPerSlide)];
const thumbsGap = (layout) => {
const thumbsConfig = {
"thumbnail-slider-two-layout-one": 0,
"thumbnail-slider-two-layout-two": 48,
"thumbnail-slider-two-layout-three": 20,
"thumbnail-slider-two-layout-four": 12,
"thumbnail-slider-two-layout-five": 24,
};
return thumbsConfig[layout];
};
const handleMainSlideChange = (swiper) => {
if (thumbnailSliderTwoLayout !== "thumbnail-slider-two-layout-three") {
return;
}
if (!thumbsSwiper || thumbsSwiper.destroyed) {
return;
}
const realIndex = swiper.realIndex;
let thumbIndex;
// if ( realIndex > posts?.length - (thumbnailItemsPerSlide + 1) ) {
if (realIndex > posts?.length - 1) {
thumbIndex = 1;
} else {
thumbIndex = realIndex + 1;
}
if (thumbsSwiper.activeIndex !== thumbIndex) {
thumbsSwiper.slideTo(thumbIndex);
}
};
const thumbnailsContentItem = ["thumbnail-slider-two-layout-one", "thumbnail-slider-two-layout-two"].includes(
thumbnailSliderTwoLayout
)
? ["title"]
: ["image", "taxonomy", "title"];
useEffect(() => {
if (thumbnailSliderTwoLayout === "thumbnail-slider-two-layout-three") {
if (thumbsSwiper && !isInitialize.current) {
thumbsSwiper.slideTo(1, 0);
isInitialize.current = true;
}
}
}, [thumbsSwiper, thumbnailSliderTwoLayout, deviceType]);
useEffect(() => {
if (thumbnailSliderTwoLayout === "thumbnail-slider-two-layout-three") {
if (mainSwiper?.controller && thumbsSwiper) {
mainSwiper.controller.control = thumbsSwiper;
}
}
}, [mainSwiper?.controller, thumbsSwiper, thumbnailSliderTwoLayout, deviceType]);
useEffect(() => {
if (mainSwiper && !mainSwiper.destroyed) {
handleMainSlideChange(mainSwiper);
}
}, [mainSwiper]);
useEffect(() => {
const handleClickOutside = (event) => {
if (containerRef.current && !containerRef.current.contains(event.target)) {
setSelectedPostId(null);
}
};
document.addEventListener("mousedown", handleClickOutside);
return () => document.removeEventListener("mousedown", handleClickOutside);
}, []);
return (
<>