import { Fragment, useEffect, useState } from "@wordpress/element"; import { buildFontClasses, paginationDotType, useDeviceType } from "../../controls/controls"; import { Swiper, SwiperSlide } from "swiper/react"; import { Autoplay, EffectCoverflow, EffectCube, EffectFade, EffectFlip, FreeMode, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, } from "swiper/modules"; import { SwiperNavButton, SwiperPagination } from "../shared/templates/templates-parts/templates-parts"; import { useRef } from "@wordpress/element"; import classNames from "classnames"; import TemplateOne from "../shared/templates/templateCards/templateOne"; const Render = ({ attributes, posts, swiperKey = "", pageType = "frontend" }) => { const { // dynamicClassNames, postSliderHoverPause, carouselArrowStyle, // postSliderNavArrow, carouselPaginationStyle, carouselAutoPlay, carouselAutoPlayDelay, carouselDirection, carouselSpeed, postSliderAnimationEffect, postSliderTabKeyNav, postSliderMouseWheel, postSliderFreeScroll, postSliderHeight, // postSliderPaginationDots, postSliderLayout, postSliderSlideScroll, contentVerticalPosition, contentHorizontalPosition, infiniteLoop, imageHeight, navArrowVisibilityOnHover, catTabCategoryPosition, carouselNavArrow, carouselPaginationDot, } = attributes; const deviceType = useDeviceType(); const swiperNevNextRef = useRef(null); const swiperNevPrevRef = useRef(null); const swiperDotsRef = useRef(null); const containerRef = useRef(null); const postSliderSlidePerGroups = postSliderSlideScroll?.device?.[deviceType]; const paginationDotStyle = paginationDotType(swiperDotsRef, carouselPaginationStyle); const bgPosition = !["post-slider-layout-four", "post-slider-layout-five"].includes(postSliderLayout) ? "center" : ""; const backgroundSize = ["post-slider-layout-four", "post-slider-layout-five"].includes(postSliderLayout) ? `100% ${ imageHeight.device?.[deviceType] ? imageHeight.device?.[deviceType] + imageHeight.unit?.[deviceType] : "100%" }` : "cover"; let contentAreaPositionClassName = ""; if ( [ "post-slider-layout-one", "post-slider-layout-two", // 'post-slider-layout-three', "post-slider-layout-four", ].includes(postSliderLayout) ) { contentAreaPositionClassName = " v-" + contentVerticalPosition; } // Content Area Horizontal Position ClassName if (["post-slider-layout-four", "post-slider-layout-five"].includes(postSliderLayout)) { contentAreaPositionClassName = contentAreaPositionClassName + " h-" + contentHorizontalPosition; } const cardHeightClass = classNames(buildFontClasses("height", postSliderHeight)); const contentLeftRight = "post-slider-layout-five" === postSliderLayout ? ` content-${contentHorizontalPosition}` : ""; const [selectedPostId, setSelectedPostId] = useState(null); useEffect(() => { const handleClickOutside = (event) => { if (containerRef.current && !containerRef.current.contains(event.target)) { setSelectedPostId(null); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); return (