@gem-sdk/components 19.0.0-staging.49 → 19.0.0-staging.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react"),t=require("@gem-sdk/core"),n=require("./useTrackPreviewPause.js");exports.useCarousel=(r,s,a,i)=>{let l;let{builderProps:u,moveToIdx:o,styles:c,setting:p,isHiddenArrowWhenDisabled:d=!0,elmRef:f,isEnableCheckHasScrollableContent:m,isDisableResetSlide:y,onClickArrow:g,onHandleChangeSlideByInteraction:v,onChangeActive:k}=r,[S,h]=e.useState(!0),[V,b]=e.useState(!0),[B,R]=e.useState(!1),[P,w]=e.useState(!0),[T,E]=e.useState(!1),{loop:N,navigationEnable:x={desktop:!0},navigationStyle:C}=p??{},[M,O]=e.useState(i),[I,L]=e.useState(p?.defaultCurrentSlider??0),{isFirstPreviewClicked:z}=n.default(p?.runPreview),D=e.useRef(),A=e.useRef(o??0),F=t.useCurrentDevice(),q=t.useEditorMode(),{onListener:$,saveToElementInteractionData:H,getInteractionPreviousData:j,trigger:U}=t.useInteraction(),W=e.useMemo(()=>t.getResponsiveValueByScreen(N,F,!1),[N,F]),G=e.useCallback(()=>{if(!p?.slidesToShow)return null;let e={};return t.DEVICES.forEach(n=>{let r=t.getResponsiveValueByScreen(p?.slidesToShow,n);e[n]=r?"auto"===r?4:Math.floor(r):0}),e},[p?.slidesToShow]),J=e.useCallback(()=>{if(!p?.slidesToShow)return null;let e={};return t.DEVICES.forEach(n=>{let r=t.getResponsiveValueByScreen(p?.slidesToShow,n);e[n]=r?"auto"===r?4:r:0}),e},[p?.slidesToShow]),K=e.useMemo(()=>{let e=J();if(e)return e;let n={};return t.DEVICES.forEach(e=>{let r=t.getResponsiveValueByScreen(p?.sneakPeak,e),s=r?"center"===t.getResponsiveValueByScreen(p?.sneakPeakType,e)?t.getResponsiveValueByScreen(p?.sneakPeakOffsetCenter,e)??0:t.getResponsiveValueByScreen(p?.sneakPeakOffsetForward,e)??0:0,a="center"===t.getResponsiveValueByScreen(p?.sneakPeakType,e)?-2:-1,i=t.getResponsiveValueByScreen(p?.itemNumber,e);n[e]="number"==typeof i?i+s/100*a:"auto"}),n},[J,p?.itemNumber,p?.sneakPeak,p?.sneakPeakOffsetCenter,p?.sneakPeakOffsetForward,p?.sneakPeakType]),Q=e.useMemo(()=>{let e=t.getResponsiveValueByScreen(K,F),n=t.getResponsiveValueByScreen(N,F,!1);return n&&Number(e??0)>i||!n&&Number(e??0)>=i},[K,F,N,i]),X=e.useMemo(()=>{let e=t.getResponsiveValueByScreen(x,F),n=t.getResponsiveValueByScreen(C,F);return e&&"none"!==n},[x,F,C]),Y=e.useMemo(()=>!!a&&S&&!Q,[a,S,Q]),Z=e.useMemo(()=>{let e=G();return e||p?.itemNumber},[G,p?.itemNumber]),_=e.useCallback(e=>{let n="center"===t.getResponsiveValueByScreen(p?.sneakPeakType,e)?2:1;return"number"==typeof t.getResponsiveValueByScreen(Z,e,4)?t.getResponsiveValueByScreen(Z,e,4)-n:void 0},[p?.sneakPeakType,Z]),ee=()=>{let e="auto"===t.getResponsiveValueByScreen(K,F,1)?1:t.getResponsiveValueByScreen(K,F,1);return e??1},et=e.useCallback(()=>{let e=t.getResponsiveValueByScreen(K,F,1),n=_(F)??1,r=t.getResponsiveValueByScreen(p?.sneakPeak,F,!1);return Array.from({length:Math.max(W?i:r?Math.min(i-n+1,i):"auto"===e?0:Math.ceil(i/Number(e)),0)},(e,t)=>t)},[i,K,F,_,p?.sneakPeak,W]),en=e=>{let t=e*ee();return t>=M-ee()&&(t=M-ee()),t},er=e=>{let n="edit"===q?{[e]:!1}:p?.enableDrag;return t.getResponsiveValueByScreen(n,e)};e.useImperativeHandle(s,()=>({nextSlideInteraction:ei,previousSlideInteraction:el,moveToSlideInteraction:eu,getSwiper:()=>a}));let es=e=>{a?.slideTo(e),v&&v(e)},ea=(e,t)=>{let{key:n,data:r,isRollback:s,element:i}=e,l=Math.max(a?.activeIndex??0,0);if(s&&void 0===r)return;if(s){if("specific"===t){let{previousData:e}=j(i,n);es(Number(e))}else es("next"===t?l-1:l+1);return}let u="specific"===t?Math.max(A.current,0):l;H(i,n,u.toString());let o="specific"===t?Number(r):"next"===t?l+1:l-1;es(o)},ei=e=>{ea(e,"next")},el=e=>{ea(e,"previous")},eu=e=>{ea(e,"specific")},eo=ee(),ec=e.useMemo(()=>!!M&&a&&t.getResponsiveValueByScreen(p?.dot,F)&&!Q&&i>1,[M,a,p?.dot,F,Q,i]),ep=t.getResponsiveValueByScreen(p?.vertical,F,!1)?"vertical":"horizontal",ed=e.useMemo(()=>t.getResponsiveValueByScreen(p?.sneakPeak,F,!1)&&"center"===t.getResponsiveValueByScreen(p?.sneakPeakType,F)&&"number"==typeof t.getResponsiveValueByScreen(p?.itemNumber,F)&&Number(t.getResponsiveValueByScreen(p?.itemNumber,F))>1,[p?.sneakPeak,p?.sneakPeakType,p?.itemNumber,F]),ef=e=>{let{swiperWidth:t,slidesPerView:n,itemNumberByDevice:r,centeredSlides:s}=e;if(!s||!r)return 0;let a=t/n,i=(Number(r)-2)/2-1;return-(a/2+i*a)},em=e.useMemo(()=>{let e=t.getResponsiveValueByScreen(N,F,!1),n=a?.width??0,r={0:"mobile",768:"tablet",1025:"desktop"},s=Number(Object.entries(r).find(([,e])=>e===F)?.[0]??1025),i=Object.entries(r).reduce((e,[r,s])=>{if(!e)return;let a=Number(r),i=t.getResponsiveValueByScreen(p?.sneakPeak,s,!1),l=i&&"center"===t.getResponsiveValueByScreen(p?.sneakPeakType,s),u=t.getResponsiveValueByScreen(p?.itemNumber,s),c=er(s),d=ef({swiperWidth:n,slidesPerView:eo,itemNumberByDevice:u,centeredSlides:l}),f=p?.initialSlide||o||0;return e[a]={allowTouchMove:c,slidesOffsetBefore:d,slidesOffsetAfter:d,initialSlide:f,centeredSlides:l},e},{}),l=t.getResponsiveValueByScreen(p?.sneakPeak,F,!1)&&"center"===t.getResponsiveValueByScreen(p?.sneakPeakType,F)&&"number"==typeof t.getResponsiveValueByScreen(p?.itemNumber,F)&&Number(t.getResponsiveValueByScreen(p?.itemNumber,F))>1;return{speed:c?.playSpeed??500,dir:p?.rtl?"rtl":"ltr",spaceBetween:t.getResponsiveValueByScreen(c?.spacing,F)||0,loop:e,slidesPerView:"auto"===t.getResponsiveValueByScreen(K,F,1)?"auto":eo,direction:ep,breakpoints:i,isSneakPeekCenter:l,slidesOffsetBefore:i?.[s]?.slidesOffsetBefore,thumbs:{slideThumbActiveClass:"gem-slider-item-active"},loopPreventsSliding:!1,touchStartPreventDefault:!1,autoplay:!!p?.autoplay&&{delay:(p?.autoplayTimeout??1)*1e3,pauseOnMouseEnter:p?.pauseOnHover,stopOnLastSlide:!e}}},[p?.autoplay,c?.playSpeed,p?.rtl,c?.spacing,F,N,eo,p?.sneakPeakType,p?.pauseOnHover,p?.autoplayTimeout,a?.width,M]),ey=t.getResponsiveValueByScreen(p?.sneakPeak,F),eg=e.useCallback(e=>{let n=a&&a.params?.slidesPerView,r=n?a?.slidesPerViewDynamic():1;if(e<=1)return!1;let s="auto"===em.slidesPerView?r:em.slidesPerView;if(!W||e<Number(s)||!S)return!1;let i=t.getResponsiveValueByScreen(p?.sneakPeak,F,!1),l=i&&"center"===t.getResponsiveValueByScreen(p?.sneakPeakType,F),u=Number.isNaN(Number(s))?1:Math.ceil(Number(s));l&&u%2==0&&(u+=1);let o=l?Math.max(1,Math.ceil(u/2)):1;return e<u+o},[a,em.slidesPerView,W,S,p?.sneakPeak,p?.sneakPeakType,F]);e.useEffect(()=>{let e=`[data-id="${u?.uid}"]`;$({event:"gp:change-next-slide",selector:e,elementRef:D},e=>{let{data:t,isRollback:n,uniqueStorageKey:r}=e||{};ei({element:D.current,data:t,isRollback:n,key:r})}),$({event:"gp:change-previous-slide",selector:e,elementRef:D},e=>{let{data:t,isRollback:n,uniqueStorageKey:r}=e||{};el({element:D.current,data:t,isRollback:n,key:r})}),$({event:"gp:change-image-step",selector:e,elementRef:D},e=>{let{data:t,isRollback:n,uniqueStorageKey:r}=e||{};eu({element:D.current,data:t,isRollback:n,key:r})}),$({event:"gp:change-index-slide",selector:e},t=>{let n=document.querySelector(e),{data:r,isRollback:s,uniqueStorageKey:a}=t||{};eu({element:n,data:r,isRollback:s,key:a})})},[]),e.useEffect(()=>{O(i)},[i]);let ev=e.useCallback(()=>{y||(L(0),b(!0),R(!1),w(!0),E(!1))},[y]);e.useEffect(()=>{if("number"==typeof o){if(A.current=o,a?.params?.loop){a?.slideToLoop(o);return}a?.slideTo(o)}},[a,o,d]);let ek=e.useCallback(()=>{let e=t.getResponsiveValueByScreen(p?.loop,F,!1);if(!a||!ed||e)return;let n=et().length;if(!n)return;let r=a.snapIndex>=n-1;a.isEnd=r,a.allowSlideNext=!r},[a,p?.loop,F,ed,et]);return e.useEffect(()=>{if(!a)return;let e=()=>{O(a.slides.length),ek(),w(a.isBeginning),E(a.isEnd)},t=()=>{k&&k(a.realIndex)},n=()=>{L(a.realIndex),b(a?.translate===0),R(a?.translate<=a?.maxTranslate())};return a.on("transitionEnd",n),a.on("slideChange",e),a.on("slideChangeTransitionStart",t),()=>{a?.off("slideChange",e),a?.off("slideChangeTransitionStart",t),a?.off("transitionEnd",n)}},[em.loop,a,ek]),e.useEffect(()=>{if(!a)return;let e=ed?et().length:0;e>0&&a.snapIndex>=e&&a.slideTo(e-1,0),ek(),w(a.isBeginning),E(a.isEnd)},[Q,a,K,ed,et,ek]),e.useEffect(()=>{a?.wrapperEl&&(a.wrapperEl.style.transitionTimingFunction=p?.animationMode??"ease")},[a,p?.animationMode]),e.useEffect(()=>{if(a&&a.autoplay){let e="edit"===q?!!z&&p?.runPreview&&p?.autoplay:p?.autoplay;e?a.autoplay.start():a.autoplay.stop()}},[a,p?.autoplay,q,z,p?.runPreview]),e.useEffect(()=>{let e=e=>{if(u?.uid!==e?.detail.componentUid)return;let t=e?.detail.index||0;a?.slideToLoop(t)};return window.addEventListener("move-to-idx",e),()=>window.removeEventListener("move-to-idx",e)},[a,u?.uid]),e.useEffect(()=>{if(!a)return;let e=a.el;e?.classList?.remove("swiper-horizontal","swiper-vertical");let n=t.getResponsiveValueByScreen(p?.vertical,F)?"swiper-vertical":"swiper-horizontal";e?.classList?.add(n),a?.slides?.forEach(e=>{e.style.width="",e.style.height=""}),a?.update(),a?.wrapperEl&&a.width&&a.wrapperEl.style.setProperty("width",`${a.width}px`)},[F,p?.vertical,a,a?.params,c?.sizeSetting,C]),e.useEffect(()=>{let e;let t=a?.el;if(!t||"undefined"==typeof ResizeObserver)return;let n=new ResizeObserver(()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{!a.destroyed&&(a.update(),a.wrapperEl&&a.width&&a.wrapperEl.style.setProperty("width",`${a.width}px`))})});return n.observe(t),()=>{cancelAnimationFrame(e),n.disconnect()}},[a]),e.useEffect(()=>{if(!a||!m)return;let e=()=>{let e=a?.slides?.slice(0,i)||[],t=Number(em?.spaceBetween||0),n=e.reduce((e,t)=>e+t.offsetHeight,0)+t*(e.length-1),r=e.reduce((e,t)=>e+t.offsetWidth,0)+t*(e.length-1),s=a.params?.direction==="horizontal"?r>(a.width||0):n>(a.height||0);h(s)};return e(),a.on("resize",e),a.on("update",e),a.on("slidesLengthChange",e),a.on("orientationchange",e),()=>{a.off("resize",e),a.off("update",e),a.off("slidesLengthChange",e),a.off("orientationchange",e)}},[a]),{isInfinity:W,sliderSettings:em,totalSlideItem:M,currentSlide:I,localRef:D,isRenderDots:ec,isNavigationEnabled:X,isNavigationVisible:Y,isScrollToStart:V,isScrollToEnd:B,handleDotClick:(e,n)=>{let r=p?.sneakPeak?.[F]?e:n?e:en(e);if(n){if(i<eo){a?.slideTo(r);return}if(a?.realIndex===r)return;if(r===Number(a?.realIndex)+1||0===r&&a?.realIndex===i-1)return a?.slideNext();if(r===Number(a?.realIndex)-1||r===i-1&&a?.realIndex===0)return a?.slidePrev();let e=t.getResponsiveValueByScreen(p?.sneakPeak,F,!1)&&"center"===t.getResponsiveValueByScreen(p?.sneakPeakType,F)&&"number"==typeof t.getResponsiveValueByScreen(p?.itemNumber,F)&&Number(t.getResponsiveValueByScreen(p?.itemNumber,F))%2==0;e?a?.slideToLoopCenterSneakPeek(r):a?.slideToLoop(r)}else a?.slideTo(r);A.current=r},getItemsPerPage:ee,handleNextAndPrevSlide:e=>{"next"===e?a?.slideNext():a?.slidePrev(),g&&(l&&clearTimeout(l),l=setTimeout(()=>g&&g(),500))},dispatchEventSelectSlide:e=>{U({event:"gp:rollback:select-slide",selector:`[data-id="${u?.uid}"]`,element:f?.current}),U({event:"gp:select-slide",selector:`[data-id="${u?.uid}"]`,data:e,element:f?.current})},getNumberOfFullWidthShow:_,shouldDuplicateSlides:eg,isHideNavigation:Q,sneakPeak:ey,swiperIsBeginning:P,swiperIsEnd:T,handleSwiperReset:ev}};
|
|
1
|
+
"use strict";var e=require("react"),t=require("@gem-sdk/core"),n=require("./useTrackPreviewPause.js");exports.useCarousel=(r,s,a,i)=>{let l;let{builderProps:u,moveToIdx:o,styles:p,setting:c,isHiddenArrowWhenDisabled:d=!0,elmRef:f,isEnableCheckHasScrollableContent:m,isDisableResetSlide:y,onClickArrow:g,onHandleChangeSlideByInteraction:v,onChangeActive:k}=r,[S,h]=e.useState(!0),[V,B]=e.useState(!0),[R,b]=e.useState(!1),[P,w]=e.useState(!0),[T,E]=e.useState(!1),{loop:N,navigationEnable:x={desktop:!0},navigationStyle:C}=c??{},[M,I]=e.useState(i),[O,L]=e.useState(c?.defaultCurrentSlider??0),{isFirstPreviewClicked:z}=n.default(c?.runPreview),D=e.useRef(),A=e.useRef(o??0),F=t.useCurrentDevice(),q=t.useEditorMode(),{onListener:$,saveToElementInteractionData:H,getInteractionPreviousData:j,trigger:U}=t.useInteraction(),W=e.useMemo(()=>t.getResponsiveValueByScreen(N,F,!1),[N,F]),G=e.useCallback(()=>{if(!c?.slidesToShow)return null;let e={};return t.DEVICES.forEach(n=>{let r=t.getResponsiveValueByScreen(c?.slidesToShow,n);e[n]=r?"auto"===r?4:Math.floor(r):0}),e},[c?.slidesToShow]),J=e.useCallback(()=>{if(!c?.slidesToShow)return null;let e={};return t.DEVICES.forEach(n=>{let r=t.getResponsiveValueByScreen(c?.slidesToShow,n);e[n]=r?"auto"===r?4:r:0}),e},[c?.slidesToShow]),K=e.useMemo(()=>{let e=J();if(e)return e;let n={};return t.DEVICES.forEach(e=>{let r=t.getResponsiveValueByScreen(c?.sneakPeak,e),s=r?"center"===t.getResponsiveValueByScreen(c?.sneakPeakType,e)?t.getResponsiveValueByScreen(c?.sneakPeakOffsetCenter,e)??0:t.getResponsiveValueByScreen(c?.sneakPeakOffsetForward,e)??0:0,a="center"===t.getResponsiveValueByScreen(c?.sneakPeakType,e)?-2:-1,i=t.getResponsiveValueByScreen(c?.itemNumber,e);n[e]="number"==typeof i?i+s/100*a:"auto"}),n},[J,c?.itemNumber,c?.sneakPeak,c?.sneakPeakOffsetCenter,c?.sneakPeakOffsetForward,c?.sneakPeakType]),Q=e.useMemo(()=>{let e=t.getResponsiveValueByScreen(K,F),n=t.getResponsiveValueByScreen(N,F,!1);return n&&Number(e??0)>i||!n&&Number(e??0)>=i},[K,F,N,i]),X=e.useMemo(()=>{let e=t.getResponsiveValueByScreen(x,F),n=t.getResponsiveValueByScreen(C,F);return e&&"none"!==n},[x,F,C]),Y=e.useMemo(()=>!!a&&S&&!Q,[a,S,Q]),Z=e.useMemo(()=>{let e=G();return e||c?.itemNumber},[G,c?.itemNumber]),_=e.useCallback(e=>{let n="center"===t.getResponsiveValueByScreen(c?.sneakPeakType,e)?2:1;return"number"==typeof t.getResponsiveValueByScreen(Z,e,4)?t.getResponsiveValueByScreen(Z,e,4)-n:void 0},[c?.sneakPeakType,Z]),ee=()=>{let e="auto"===t.getResponsiveValueByScreen(K,F,1)?1:t.getResponsiveValueByScreen(K,F,1);return e??1},et=e.useCallback(()=>{let e=t.getResponsiveValueByScreen(K,F,1),n=_(F)??1,r=t.getResponsiveValueByScreen(c?.sneakPeak,F,!1);return Array.from({length:Math.max(W?i:r?Math.min(i-n+1,i):"auto"===e?0:Math.ceil(i/Number(e)),0)},(e,t)=>t)},[i,K,F,_,c?.sneakPeak,W]),en=e=>{let t=e*ee();return t>=M-ee()&&(t=M-ee()),t},er=e=>{let n="edit"===q?{[e]:!1}:c?.enableDrag;return t.getResponsiveValueByScreen(n,e)};e.useImperativeHandle(s,()=>({nextSlideInteraction:ei,previousSlideInteraction:el,moveToSlideInteraction:eu,getSwiper:()=>a}));let es=e=>{a?.slideTo(e),v&&v(e)},ea=(e,t)=>{let{key:n,data:r,isRollback:s,element:i}=e,l=Math.max(a?.activeIndex??0,0);if(s&&void 0===r)return;if(s){if("specific"===t){let{previousData:e}=j(i,n);es(Number(e))}else es("next"===t?l-1:l+1);return}let u="specific"===t?Math.max(A.current,0):l;H(i,n,u.toString());let o="specific"===t?Number(r):"next"===t?l+1:l-1;es(o)},ei=e=>{ea(e,"next")},el=e=>{ea(e,"previous")},eu=e=>{ea(e,"specific")},eo=ee(),ep=e.useMemo(()=>!!M&&a&&t.getResponsiveValueByScreen(c?.dot,F)&&!Q&&i>1,[M,a,c?.dot,F,Q,i]),ec=t.getResponsiveValueByScreen(c?.vertical,F,!1)?"vertical":"horizontal",ed=e.useMemo(()=>t.getResponsiveValueByScreen(c?.sneakPeak,F,!1)&&"center"===t.getResponsiveValueByScreen(c?.sneakPeakType,F)&&"number"==typeof t.getResponsiveValueByScreen(c?.itemNumber,F)&&Number(t.getResponsiveValueByScreen(c?.itemNumber,F))>1,[c?.sneakPeak,c?.sneakPeakType,c?.itemNumber,F]),ef=e=>{let{swiperWidth:t,slidesPerView:n,itemNumberByDevice:r,centeredSlides:s}=e;if(!s||!r)return 0;let a=t/n,i=(Number(r)-2)/2-1;return-(a/2+i*a)},em=e.useMemo(()=>{let e=t.getResponsiveValueByScreen(N,F,!1),n=a?.width??0,r={0:"mobile",768:"tablet",1025:"desktop"},s=Number(Object.entries(r).find(([,e])=>e===F)?.[0]??1025),i=Object.entries(r).reduce((e,[r,s])=>{if(!e)return;let a=Number(r),i=t.getResponsiveValueByScreen(c?.sneakPeak,s,!1),l=i&&"center"===t.getResponsiveValueByScreen(c?.sneakPeakType,s),u=t.getResponsiveValueByScreen(c?.itemNumber,s),p=er(s),d=ef({swiperWidth:n,slidesPerView:eo,itemNumberByDevice:u,centeredSlides:l}),f=c?.initialSlide||o||0;return e[a]={allowTouchMove:p,slidesOffsetBefore:d,slidesOffsetAfter:d,initialSlide:f,centeredSlides:l},e},{}),l=t.getResponsiveValueByScreen(c?.sneakPeak,F,!1)&&"center"===t.getResponsiveValueByScreen(c?.sneakPeakType,F)&&"number"==typeof t.getResponsiveValueByScreen(c?.itemNumber,F)&&Number(t.getResponsiveValueByScreen(c?.itemNumber,F))>1;return{speed:p?.playSpeed??500,dir:c?.rtl?"rtl":"ltr",spaceBetween:t.getResponsiveValueByScreen(p?.spacing,F)||0,loop:e,slidesPerView:"auto"===t.getResponsiveValueByScreen(K,F,1)?"auto":eo,direction:ec,breakpoints:i,isSneakPeekCenter:l,slidesOffsetBefore:i?.[s]?.slidesOffsetBefore,thumbs:{slideThumbActiveClass:"gem-slider-item-active"},loopPreventsSliding:!1,touchStartPreventDefault:!1,autoplay:!!c?.autoplay&&{delay:(c?.autoplayTimeout??1)*1e3,pauseOnMouseEnter:c?.pauseOnHover,stopOnLastSlide:!e}}},[c?.autoplay,p?.playSpeed,c?.rtl,p?.spacing,F,N,eo,c?.sneakPeakType,c?.pauseOnHover,c?.autoplayTimeout,a?.width,M]),ey=t.getResponsiveValueByScreen(c?.sneakPeak,F),eg=e.useCallback(e=>{let n=a&&a.params?.slidesPerView,r=n?a?.slidesPerViewDynamic():1;if(e<=1)return!1;let s="auto"===em.slidesPerView?r:em.slidesPerView;if(!W||e<Number(s)||!S)return!1;let i=t.getResponsiveValueByScreen(c?.sneakPeak,F,!1),l=i&&"center"===t.getResponsiveValueByScreen(c?.sneakPeakType,F),u=Number.isNaN(Number(s))?1:Math.ceil(Number(s));l&&u%2==0&&(u+=1);let o=l?Math.max(1,Math.ceil(u/2)):1;return e<u+o},[a,em.slidesPerView,W,S,c?.sneakPeak,c?.sneakPeakType,F]);e.useEffect(()=>{let e=`[data-id="${u?.uid}"]`;$({event:"gp:change-next-slide",selector:e,elementRef:D},e=>{let{data:t,isRollback:n,uniqueStorageKey:r}=e||{};ei({element:D.current,data:t,isRollback:n,key:r})}),$({event:"gp:change-previous-slide",selector:e,elementRef:D},e=>{let{data:t,isRollback:n,uniqueStorageKey:r}=e||{};el({element:D.current,data:t,isRollback:n,key:r})}),$({event:"gp:change-image-step",selector:e,elementRef:D},e=>{let{data:t,isRollback:n,uniqueStorageKey:r}=e||{};eu({element:D.current,data:t,isRollback:n,key:r})}),$({event:"gp:change-index-slide",selector:e},t=>{let n=document.querySelector(e),{data:r,isRollback:s,uniqueStorageKey:a}=t||{};eu({element:n,data:r,isRollback:s,key:a})})},[]),e.useEffect(()=>{I(i)},[i]);let ev=e.useCallback(()=>{y||(L(0),B(!0),b(!1),w(!0),E(!1))},[y]);e.useEffect(()=>{if("number"==typeof o){if(A.current=o,a?.params?.loop){a?.slideToLoop(o);return}a?.slideTo(o)}},[a,o,d]);let ek=e.useCallback(()=>{let e=t.getResponsiveValueByScreen(c?.loop,F,!1);if(!a||!ed||e)return;let n=et().length;if(!n)return;let r=a.snapIndex>=n-1;a.isEnd=r,a.allowSlideNext=!r},[a,c?.loop,F,ed,et]);return e.useEffect(()=>{if(!a)return;let e=()=>{I(a.slides.length),ek(),w(a.isBeginning),E(a.isEnd)},n=()=>{k&&k(a.realIndex)},r=()=>{let e=t.getResponsiveValueByScreen(c?.sneakPeak,F,!1)&&"center"!==t.getResponsiveValueByScreen(c?.sneakPeakType,F);L(!W&&e?a.snapIndex:a.realIndex),w(a.isBeginning),E(a.isEnd),B(a?.translate===0),b(a?.translate<=a?.maxTranslate())};return a.on("transitionEnd",r),a.on("slideChange",e),a.on("slideChangeTransitionStart",n),()=>{a?.off("slideChange",e),a?.off("slideChangeTransitionStart",n),a?.off("transitionEnd",r)}},[em.loop,a,ek,W,F,c?.sneakPeak,c?.sneakPeakType]),e.useEffect(()=>{if(!a)return;let e=ed?et().length:0;e>0&&a.snapIndex>=e&&a.slideTo(e-1,0),ek(),w(a.isBeginning),E(a.isEnd)},[Q,a,K,ed,et,ek]),e.useEffect(()=>{a?.wrapperEl&&(a.wrapperEl.style.transitionTimingFunction=c?.animationMode??"ease")},[a,c?.animationMode]),e.useEffect(()=>{if(a&&a.autoplay){let e="edit"===q?!!z&&c?.runPreview&&c?.autoplay:c?.autoplay;e?a.autoplay.start():a.autoplay.stop()}},[a,c?.autoplay,q,z,c?.runPreview]),e.useEffect(()=>{let e=e=>{if(u?.uid!==e?.detail.componentUid)return;let t=e?.detail.index||0;a?.slideToLoop(t)};return window.addEventListener("move-to-idx",e),()=>window.removeEventListener("move-to-idx",e)},[a,u?.uid]),e.useEffect(()=>{if(!a)return;let e=a.el;e?.classList?.remove("swiper-horizontal","swiper-vertical");let n=t.getResponsiveValueByScreen(c?.vertical,F)?"swiper-vertical":"swiper-horizontal";e?.classList?.add(n),a?.slides?.forEach(e=>{e.style.width="",e.style.height=""}),a?.update(),a?.wrapperEl&&a.width&&a.wrapperEl.style.setProperty("width",`${a.width}px`)},[F,c?.vertical,a,a?.params,p?.sizeSetting,C]),e.useEffect(()=>{let e;let t=a?.el;if(!t||"undefined"==typeof ResizeObserver)return;let n=new ResizeObserver(()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{!a.destroyed&&(a.update(),a.wrapperEl&&a.width&&a.wrapperEl.style.setProperty("width",`${a.width}px`))})});return n.observe(t),()=>{cancelAnimationFrame(e),n.disconnect()}},[a]),e.useEffect(()=>{if(!a||!m)return;let e=()=>{let e=a?.slides?.slice(0,i)||[],t=Number(em?.spaceBetween||0),n=e.reduce((e,t)=>e+t.offsetHeight,0)+t*(e.length-1),r=e.reduce((e,t)=>e+t.offsetWidth,0)+t*(e.length-1),s=a.params?.direction==="horizontal"?r>(a.width||0):n>(a.height||0);h(s)};return e(),a.on("resize",e),a.on("update",e),a.on("slidesLengthChange",e),a.on("orientationchange",e),()=>{a.off("resize",e),a.off("update",e),a.off("slidesLengthChange",e),a.off("orientationchange",e)}},[a]),{isInfinity:W,sliderSettings:em,totalSlideItem:M,currentSlide:O,localRef:D,isRenderDots:ep,isNavigationEnabled:X,isNavigationVisible:Y,isScrollToStart:V,isScrollToEnd:R,handleDotClick:(e,n)=>{let r=c?.sneakPeak?.[F]?e:n?e:en(e);if(n){if(i<eo){a?.slideTo(r);return}if(a?.realIndex===r)return;if(r===Number(a?.realIndex)+1||0===r&&a?.realIndex===i-1)return a?.slideNext();if(r===Number(a?.realIndex)-1||r===i-1&&a?.realIndex===0)return a?.slidePrev();let e=t.getResponsiveValueByScreen(c?.sneakPeak,F,!1)&&"center"===t.getResponsiveValueByScreen(c?.sneakPeakType,F)&&"number"==typeof t.getResponsiveValueByScreen(c?.itemNumber,F)&&Number(t.getResponsiveValueByScreen(c?.itemNumber,F))%2==0;e?a?.slideToLoopCenterSneakPeek(r):a?.slideToLoop(r)}else a?.slideTo(r);A.current=r},getItemsPerPage:ee,handleNextAndPrevSlide:e=>{"next"===e?a?.slideNext():a?.slidePrev(),g&&(l&&clearTimeout(l),l=setTimeout(()=>g&&g(),500))},dispatchEventSelectSlide:e=>{U({event:"gp:rollback:select-slide",selector:`[data-id="${u?.uid}"]`,element:f?.current}),U({event:"gp:select-slide",selector:`[data-id="${u?.uid}"]`,data:e,element:f?.current})},getNumberOfFullWidthShow:_,shouldDuplicateSlides:eg,isHideNavigation:Q,sneakPeak:ey,swiperIsBeginning:P,swiperIsEnd:T,handleSwiperReset:ev}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useState as e,useRef as t,useMemo as r,useCallback as n,useImperativeHandle as i,useEffect as a}from"react";import{useCurrentDevice as l,useEditorMode as s,useInteraction as o,getResponsiveValueByScreen as u,DEVICES as d}from"@gem-sdk/core";import p from"./useTrackPreviewPause.js";let m=(m,f,c,k)=>{let h;let{builderProps:P,moveToIdx:y,styles:b,setting:w,isHiddenArrowWhenDisabled:g=!0,elmRef:v,isEnableCheckHasScrollableContent:T,isDisableResetSlide:N,onClickArrow:x,onHandleChangeSlideByInteraction:S,onChangeActive:E}=m,[O,C]=e(!0),[M,
|
|
1
|
+
import{useState as e,useRef as t,useMemo as r,useCallback as n,useImperativeHandle as i,useEffect as a}from"react";import{useCurrentDevice as l,useEditorMode as s,useInteraction as o,getResponsiveValueByScreen as u,DEVICES as d}from"@gem-sdk/core";import p from"./useTrackPreviewPause.js";let m=(m,f,c,k)=>{let h;let{builderProps:P,moveToIdx:y,styles:b,setting:w,isHiddenArrowWhenDisabled:g=!0,elmRef:v,isEnableCheckHasScrollableContent:T,isDisableResetSlide:N,onClickArrow:x,onHandleChangeSlideByInteraction:S,onChangeActive:E}=m,[O,C]=e(!0),[M,I]=e(!0),[L,z]=e(!1),[B,A]=e(!0),[F,V]=e(!1),{loop:R,navigationEnable:$={desktop:!0},navigationStyle:D}=w??{},[j,H]=e(k),[q,U]=e(w?.defaultCurrentSlider??0),{isFirstPreviewClicked:W}=p(w?.runPreview),G=t(),J=t(y??0),K=l(),Q=s(),{onListener:X,saveToElementInteractionData:Y,getInteractionPreviousData:Z,trigger:_}=o(),ee=r(()=>u(R,K,!1),[R,K]),et=n(()=>{if(!w?.slidesToShow)return null;let e={};return d.forEach(t=>{let r=u(w?.slidesToShow,t);e[t]=r?"auto"===r?4:Math.floor(r):0}),e},[w?.slidesToShow]),er=n(()=>{if(!w?.slidesToShow)return null;let e={};return d.forEach(t=>{let r=u(w?.slidesToShow,t);e[t]=r?"auto"===r?4:r:0}),e},[w?.slidesToShow]),en=r(()=>{let e=er();if(e)return e;let t={};return d.forEach(e=>{let r=u(w?.sneakPeak,e),n=r?"center"===u(w?.sneakPeakType,e)?u(w?.sneakPeakOffsetCenter,e)??0:u(w?.sneakPeakOffsetForward,e)??0:0,i="center"===u(w?.sneakPeakType,e)?-2:-1,a=u(w?.itemNumber,e);t[e]="number"==typeof a?a+n/100*i:"auto"}),t},[er,w?.itemNumber,w?.sneakPeak,w?.sneakPeakOffsetCenter,w?.sneakPeakOffsetForward,w?.sneakPeakType]),ei=r(()=>{let e=u(en,K),t=u(R,K,!1);return t&&Number(e??0)>k||!t&&Number(e??0)>=k},[en,K,R,k]),ea=r(()=>{let e=u($,K),t=u(D,K);return e&&"none"!==t},[$,K,D]),el=r(()=>!!c&&O&&!ei,[c,O,ei]),es=r(()=>{let e=et();return e||w?.itemNumber},[et,w?.itemNumber]),eo=n(e=>{let t="center"===u(w?.sneakPeakType,e)?2:1;return"number"==typeof u(es,e,4)?u(es,e,4)-t:void 0},[w?.sneakPeakType,es]),eu=()=>{let e="auto"===u(en,K,1)?1:u(en,K,1);return e??1},ed=n(()=>{let e=u(en,K,1),t=eo(K)??1,r=u(w?.sneakPeak,K,!1);return Array.from({length:Math.max(ee?k:r?Math.min(k-t+1,k):"auto"===e?0:Math.ceil(k/Number(e)),0)},(e,t)=>t)},[k,en,K,eo,w?.sneakPeak,ee]),ep=e=>{let t=e*eu();return t>=j-eu()&&(t=j-eu()),t},em=e=>{let t="edit"===Q?{[e]:!1}:w?.enableDrag;return u(t,e)};i(f,()=>({nextSlideInteraction:ek,previousSlideInteraction:eh,moveToSlideInteraction:eP,getSwiper:()=>c}));let ef=e=>{c?.slideTo(e),S&&S(e)},ec=(e,t)=>{let{key:r,data:n,isRollback:i,element:a}=e,l=Math.max(c?.activeIndex??0,0);if(i&&void 0===n)return;if(i){if("specific"===t){let{previousData:e}=Z(a,r);ef(Number(e))}else ef("next"===t?l-1:l+1);return}let s="specific"===t?Math.max(J.current,0):l;Y(a,r,s.toString());let o="specific"===t?Number(n):"next"===t?l+1:l-1;ef(o)},ek=e=>{ec(e,"next")},eh=e=>{ec(e,"previous")},eP=e=>{ec(e,"specific")},ey=eu(),eb=r(()=>!!j&&c&&u(w?.dot,K)&&!ei&&k>1,[j,c,w?.dot,K,ei,k]),ew=u(w?.vertical,K,!1)?"vertical":"horizontal",eg=r(()=>u(w?.sneakPeak,K,!1)&&"center"===u(w?.sneakPeakType,K)&&"number"==typeof u(w?.itemNumber,K)&&Number(u(w?.itemNumber,K))>1,[w?.sneakPeak,w?.sneakPeakType,w?.itemNumber,K]),ev=e=>{let{swiperWidth:t,slidesPerView:r,itemNumberByDevice:n,centeredSlides:i}=e;if(!i||!n)return 0;let a=t/r,l=(Number(n)-2)/2-1;return-(a/2+l*a)},eT=r(()=>{let e=u(R,K,!1),t=c?.width??0,r={0:"mobile",768:"tablet",1025:"desktop"},n=Number(Object.entries(r).find(([,e])=>e===K)?.[0]??1025),i=Object.entries(r).reduce((e,[r,n])=>{if(!e)return;let i=Number(r),a=u(w?.sneakPeak,n,!1),l=a&&"center"===u(w?.sneakPeakType,n),s=u(w?.itemNumber,n),o=em(n),d=ev({swiperWidth:t,slidesPerView:ey,itemNumberByDevice:s,centeredSlides:l}),p=w?.initialSlide||y||0;return e[i]={allowTouchMove:o,slidesOffsetBefore:d,slidesOffsetAfter:d,initialSlide:p,centeredSlides:l},e},{}),a=u(w?.sneakPeak,K,!1)&&"center"===u(w?.sneakPeakType,K)&&"number"==typeof u(w?.itemNumber,K)&&Number(u(w?.itemNumber,K))>1;return{speed:b?.playSpeed??500,dir:w?.rtl?"rtl":"ltr",spaceBetween:u(b?.spacing,K)||0,loop:e,slidesPerView:"auto"===u(en,K,1)?"auto":ey,direction:ew,breakpoints:i,isSneakPeekCenter:a,slidesOffsetBefore:i?.[n]?.slidesOffsetBefore,thumbs:{slideThumbActiveClass:"gem-slider-item-active"},loopPreventsSliding:!1,touchStartPreventDefault:!1,autoplay:!!w?.autoplay&&{delay:(w?.autoplayTimeout??1)*1e3,pauseOnMouseEnter:w?.pauseOnHover,stopOnLastSlide:!e}}},[w?.autoplay,b?.playSpeed,w?.rtl,b?.spacing,K,R,ey,w?.sneakPeakType,w?.pauseOnHover,w?.autoplayTimeout,c?.width,j]),eN=u(w?.sneakPeak,K),ex=n(e=>{let t=c&&c.params?.slidesPerView,r=t?c?.slidesPerViewDynamic():1;if(e<=1)return!1;let n="auto"===eT.slidesPerView?r:eT.slidesPerView;if(!ee||e<Number(n)||!O)return!1;let i=u(w?.sneakPeak,K,!1),a=i&&"center"===u(w?.sneakPeakType,K),l=Number.isNaN(Number(n))?1:Math.ceil(Number(n));a&&l%2==0&&(l+=1);let s=a?Math.max(1,Math.ceil(l/2)):1;return e<l+s},[c,eT.slidesPerView,ee,O,w?.sneakPeak,w?.sneakPeakType,K]);a(()=>{let e=`[data-id="${P?.uid}"]`;X({event:"gp:change-next-slide",selector:e,elementRef:G},e=>{let{data:t,isRollback:r,uniqueStorageKey:n}=e||{};ek({element:G.current,data:t,isRollback:r,key:n})}),X({event:"gp:change-previous-slide",selector:e,elementRef:G},e=>{let{data:t,isRollback:r,uniqueStorageKey:n}=e||{};eh({element:G.current,data:t,isRollback:r,key:n})}),X({event:"gp:change-image-step",selector:e,elementRef:G},e=>{let{data:t,isRollback:r,uniqueStorageKey:n}=e||{};eP({element:G.current,data:t,isRollback:r,key:n})}),X({event:"gp:change-index-slide",selector:e},t=>{let r=document.querySelector(e),{data:n,isRollback:i,uniqueStorageKey:a}=t||{};eP({element:r,data:n,isRollback:i,key:a})})},[]),a(()=>{H(k)},[k]);let eS=n(()=>{N||(U(0),I(!0),z(!1),A(!0),V(!1))},[N]);a(()=>{if("number"==typeof y){if(J.current=y,c?.params?.loop){c?.slideToLoop(y);return}c?.slideTo(y)}},[c,y,g]);let eE=n(()=>{let e=u(w?.loop,K,!1);if(!c||!eg||e)return;let t=ed().length;if(!t)return;let r=c.snapIndex>=t-1;c.isEnd=r,c.allowSlideNext=!r},[c,w?.loop,K,eg,ed]);return a(()=>{if(!c)return;let e=()=>{H(c.slides.length),eE(),A(c.isBeginning),V(c.isEnd)},t=()=>{E&&E(c.realIndex)},r=()=>{let e=u(w?.sneakPeak,K,!1)&&"center"!==u(w?.sneakPeakType,K);U(!ee&&e?c.snapIndex:c.realIndex),A(c.isBeginning),V(c.isEnd),I(c?.translate===0),z(c?.translate<=c?.maxTranslate())};return c.on("transitionEnd",r),c.on("slideChange",e),c.on("slideChangeTransitionStart",t),()=>{c?.off("slideChange",e),c?.off("slideChangeTransitionStart",t),c?.off("transitionEnd",r)}},[eT.loop,c,eE,ee,K,w?.sneakPeak,w?.sneakPeakType]),a(()=>{if(!c)return;let e=eg?ed().length:0;e>0&&c.snapIndex>=e&&c.slideTo(e-1,0),eE(),A(c.isBeginning),V(c.isEnd)},[ei,c,en,eg,ed,eE]),a(()=>{c?.wrapperEl&&(c.wrapperEl.style.transitionTimingFunction=w?.animationMode??"ease")},[c,w?.animationMode]),a(()=>{if(c&&c.autoplay){let e="edit"===Q?!!W&&w?.runPreview&&w?.autoplay:w?.autoplay;e?c.autoplay.start():c.autoplay.stop()}},[c,w?.autoplay,Q,W,w?.runPreview]),a(()=>{let e=e=>{if(P?.uid!==e?.detail.componentUid)return;let t=e?.detail.index||0;c?.slideToLoop(t)};return window.addEventListener("move-to-idx",e),()=>window.removeEventListener("move-to-idx",e)},[c,P?.uid]),a(()=>{if(!c)return;let e=c.el;e?.classList?.remove("swiper-horizontal","swiper-vertical");let t=u(w?.vertical,K)?"swiper-vertical":"swiper-horizontal";e?.classList?.add(t),c?.slides?.forEach(e=>{e.style.width="",e.style.height=""}),c?.update(),c?.wrapperEl&&c.width&&c.wrapperEl.style.setProperty("width",`${c.width}px`)},[K,w?.vertical,c,c?.params,b?.sizeSetting,D]),a(()=>{let e;let t=c?.el;if(!t||"undefined"==typeof ResizeObserver)return;let r=new ResizeObserver(()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{!c.destroyed&&(c.update(),c.wrapperEl&&c.width&&c.wrapperEl.style.setProperty("width",`${c.width}px`))})});return r.observe(t),()=>{cancelAnimationFrame(e),r.disconnect()}},[c]),a(()=>{if(!c||!T)return;let e=()=>{let e=c?.slides?.slice(0,k)||[],t=Number(eT?.spaceBetween||0),r=e.reduce((e,t)=>e+t.offsetHeight,0)+t*(e.length-1),n=e.reduce((e,t)=>e+t.offsetWidth,0)+t*(e.length-1),i=c.params?.direction==="horizontal"?n>(c.width||0):r>(c.height||0);C(i)};return e(),c.on("resize",e),c.on("update",e),c.on("slidesLengthChange",e),c.on("orientationchange",e),()=>{c.off("resize",e),c.off("update",e),c.off("slidesLengthChange",e),c.off("orientationchange",e)}},[c]),{isInfinity:ee,sliderSettings:eT,totalSlideItem:j,currentSlide:q,localRef:G,isRenderDots:eb,isNavigationEnabled:ea,isNavigationVisible:el,isScrollToStart:M,isScrollToEnd:L,handleDotClick:(e,t)=>{let r=w?.sneakPeak?.[K]?e:t?e:ep(e);if(t){if(k<ey){c?.slideTo(r);return}if(c?.realIndex===r)return;if(r===Number(c?.realIndex)+1||0===r&&c?.realIndex===k-1)return c?.slideNext();if(r===Number(c?.realIndex)-1||r===k-1&&c?.realIndex===0)return c?.slidePrev();let e=u(w?.sneakPeak,K,!1)&&"center"===u(w?.sneakPeakType,K)&&"number"==typeof u(w?.itemNumber,K)&&Number(u(w?.itemNumber,K))%2==0;e?c?.slideToLoopCenterSneakPeek(r):c?.slideToLoop(r)}else c?.slideTo(r);J.current=r},getItemsPerPage:eu,handleNextAndPrevSlide:e=>{"next"===e?c?.slideNext():c?.slidePrev(),x&&(h&&clearTimeout(h),h=setTimeout(()=>x&&x(),500))},dispatchEventSelectSlide:e=>{_({event:"gp:rollback:select-slide",selector:`[data-id="${P?.uid}"]`,element:v?.current}),_({event:"gp:select-slide",selector:`[data-id="${P?.uid}"]`,data:e,element:v?.current})},getNumberOfFullWidthShow:eo,shouldDuplicateSlides:ex,isHideNavigation:ei,sneakPeak:eN,swiperIsBeginning:B,swiperIsEnd:F,handleSwiperReset:eS}};export{m as useCarousel};
|