{"version":3,"file":"746.reviews.js","mappings":"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","sources":["webpack://my-app/./src/components/carousel/utils/clones.ts","webpack://my-app/./src/components/carousel/utils/elementWidth.ts","webpack://my-app/./src/components/carousel/utils/common.ts","webpack://my-app/./src/components/carousel/utils/throttle.ts","webpack://my-app/./src/components/carousel/types.ts","webpack://my-app/./src/components/carousel/Dots.tsx","webpack://my-app/./src/components/carousel/utils/dots.ts","webpack://my-app/./src/components/carousel/Arrows.tsx","webpack://my-app/./src/components/carousel/CarouselItems.tsx","webpack://my-app/./src/components/carousel/Carousel.tsx","webpack://my-app/./src/components/carousel/utils/next.ts","webpack://my-app/./src/components/carousel/utils/previous.ts","webpack://my-app/./src/components/carousel/utils/mouseOrTouchMove.ts","webpack://my-app/./src/components/carousel/index.tsx","webpack://my-app/./node_modules/react-multi-carousel/lib/styles.css?39cb","webpack://my-app/./src/components/reviews-carousel/reviews-carousel.styles.ts","webpack://my-app/./src/components/reviews-carousel/reviews-carousel.component.tsx","webpack://my-app/./node_modules/react-multi-carousel/lib/styles.css","webpack://my-app/./node_modules/css-loader/dist/runtime/getUrl.js"],"sourcesContent":["import { CarouselInternalState, CarouselProps } from \"../types\";\n\n/*\ngetOriginalCounterPart gets the index of the original children.\nFor example, we have an array [clones, originalChildren, clones];\nBefore making the clones, an item's index is 0, but after the clone,\nthe index is different it could be 4, because we added clones to the array after \"componentDidMount\".\nAnd this function gets the \"index\" of the item after the clones.\n*/\nfunction getOriginalCounterPart(\n index: number,\n {\n slidesToShow,\n currentSlide\n }: { slidesToShow: number; currentSlide: number; totalItems: number },\n childrenArr: any[]\n): number {\n // this function is only used for \"infinite and showDots are true\";\n if (childrenArr.length > slidesToShow * 2) {\n const originalCouterPart = index + slidesToShow * 2;\n return originalCouterPart;\n } else {\n if (currentSlide >= childrenArr.length) {\n return childrenArr.length + index;\n } else {\n return index;\n }\n }\n}\n/*\nA slide can have many clones, this produces a hash table structure for us to know\nWhat is the clone of a particular slide and where it is. Note: a slide can have multiple clones.\nThis is based on the getclones method below.\n*/\ninterface Table {\n [key: number]: number;\n}\nfunction getOriginalIndexLookupTableByClones(\n slidesToShow: number,\n childrenArr: any[]\n): Table {\n if (childrenArr.length > slidesToShow * 2) {\n const table: Table = {};\n const firstBeginningOfClones = childrenArr.length - slidesToShow * 2;\n const firstEndOfClones = childrenArr.length - firstBeginningOfClones;\n let firstCount = firstBeginningOfClones;\n for (let i = 0; i < firstEndOfClones; i++) {\n table[i] = firstCount;\n firstCount++;\n }\n const secondBeginningOfClones = childrenArr.length + firstEndOfClones;\n const secondEndOfClones =\n secondBeginningOfClones + childrenArr.slice(0, slidesToShow * 2).length;\n let secondCount = 0;\n for (let i = secondBeginningOfClones; i <= secondEndOfClones; i++) {\n table[i] = secondCount;\n secondCount++;\n }\n const originalStart = firstEndOfClones;\n const originalEnd = secondBeginningOfClones;\n let originalCounter = 0;\n for (let i = originalStart; i < originalEnd; i++) {\n table[i] = originalCounter;\n originalCounter++;\n }\n return table;\n } else {\n const table: Table = {};\n const totalSlides = childrenArr.length * 3; // the origianl children array gets clone 3 times.\n let count = 0;\n for (let i = 0; i < totalSlides; i++) {\n table[i] = count;\n count++;\n if (count === childrenArr.length) {\n count = 0;\n }\n }\n return table;\n }\n}\n\n/*\nThe current setting is if the length of the carousel item is larger than \"slidesToShow * 2\",\nthen we clone \"slidesToShow * 2\" amount of beginning and end items.\n\nOtherwise, it means we only have a few items. Then we clone it 3 times.\n*/\nfunction getClones(slidesToShow: number, childrenArr: any[]) {\n if (childrenArr.length < slidesToShow) {\n return childrenArr;\n }\n if (childrenArr.length > slidesToShow * 2) {\n return [\n ...childrenArr.slice(\n childrenArr.length - slidesToShow * 2,\n childrenArr.length\n ),\n ...childrenArr,\n ...childrenArr.slice(0, slidesToShow * 2)\n ];\n }\n return [...childrenArr, ...childrenArr, ...childrenArr];\n}\n\nfunction getInitialSlideInInfiniteMode(\n slidesToShow: number,\n childrenArr: any[]\n) {\n if (childrenArr.length > slidesToShow * 2) {\n return slidesToShow * 2;\n } else {\n return childrenArr.length;\n }\n}\n\n/*\nWhen the user sees the clones, we need to reset the position, and cancel the animation so that it\ncreates the infinite effects.\n\nThe if else statement here is based on the getClones method. Because it decides how many items we are cloning.\n*/\nfunction checkClonesPosition(\n { currentSlide, slidesToShow, itemWidth, totalItems }: CarouselInternalState,\n childrenArr: any[],\n props: CarouselProps\n): {\n isReachingTheEnd: boolean;\n isReachingTheStart: boolean;\n nextSlide: number;\n nextPosition: number;\n} {\n // the one is here for pre-swtiching the position just right before we are one more slide away from the end.\n // this gives us enough time to pre-clone the carousel items.\n let nextSlide = 0;\n let nextPosition = 0;\n let isReachingTheEnd;\n let isReachingTheStart = currentSlide === 0;\n const originalFirstSlide =\n childrenArr.length - (childrenArr.length - slidesToShow * 2);\n if (childrenArr.length < slidesToShow) {\n nextSlide = 0;\n nextPosition = 0;\n isReachingTheEnd = false;\n isReachingTheStart = false;\n } else if (childrenArr.length > slidesToShow * 2) {\n isReachingTheEnd = currentSlide >= originalFirstSlide + childrenArr.length;\n if (isReachingTheEnd) {\n nextSlide = currentSlide - childrenArr.length;\n nextPosition = -(itemWidth * nextSlide);\n }\n if (isReachingTheStart) {\n nextSlide = originalFirstSlide + (childrenArr.length - slidesToShow * 2);\n nextPosition = -(itemWidth * nextSlide);\n }\n } else {\n isReachingTheEnd = currentSlide >= childrenArr.length * 2;\n if (isReachingTheEnd) {\n nextSlide = currentSlide - childrenArr.length;\n nextPosition = -(itemWidth * nextSlide);\n }\n if (isReachingTheStart) {\n if (props.showDots) {\n nextSlide = childrenArr.length;\n nextPosition = -(itemWidth * nextSlide);\n } else {\n nextSlide = totalItems / 3;\n nextPosition = -(itemWidth * nextSlide);\n }\n }\n }\n return {\n isReachingTheEnd,\n isReachingTheStart,\n nextSlide,\n nextPosition\n };\n}\n\nexport {\n getOriginalCounterPart,\n getOriginalIndexLookupTableByClones,\n getClones,\n checkClonesPosition,\n getInitialSlideInInfiniteMode\n};\n","import { ResponsiveType, CarouselProps } from \"../types\";\n\nlet hasWarnAboutTypo = false;\n\nfunction getPartialVisibilityGutter(\n responsive: ResponsiveType,\n partialVisible?: boolean,\n serverSideDeviceType?: string | undefined,\n clientSideDeviceType?: string | undefined\n): number | undefined {\n let gutter: number | undefined = 0;\n const deviceType = clientSideDeviceType || serverSideDeviceType;\n if (partialVisible && deviceType) {\n if (\n !hasWarnAboutTypo &&\n process.env.NODE_ENV !== \"production\" &&\n responsive[deviceType].paritialVisibilityGutter\n ) {\n hasWarnAboutTypo = true;\n console.warn(\n \"You appear to be using paritialVisibilityGutter instead of partialVisibilityGutter which will be moved to partialVisibilityGutter in the future completely\"\n );\n }\n gutter =\n responsive[deviceType].partialVisibilityGutter ||\n responsive[deviceType].paritialVisibilityGutter;\n // back-ward compatible, because previously there has been a typo\n // remove in the future\n }\n return gutter;\n}\n\nfunction getWidthFromDeviceType(\n deviceType: string,\n responsive: ResponsiveType\n): number | string | undefined {\n let itemWidth;\n if (responsive[deviceType]) {\n const { items } = responsive[deviceType];\n itemWidth = (100 / items).toFixed(1);\n }\n return itemWidth;\n}\n\nfunction getItemClientSideWidth(\n props: CarouselProps,\n slidesToShow: number,\n containerWidth: number,\n gutter?: number\n): number {\n if (gutter && props.partialVisible && props.centerMode) {\n return Math.round((containerWidth - gutter * 2) / slidesToShow);\n }\n\n if (gutter && props.partialVisible) {\n return Math.round((containerWidth - gutter) / slidesToShow);\n }\n\n if (props.centerMode) {\n return Math.round(containerWidth / (slidesToShow + 1));\n }\n\n return Math.round(containerWidth / slidesToShow);\n}\n\nexport {\n getWidthFromDeviceType,\n getPartialVisibilityGutter,\n getItemClientSideWidth\n};\n","import { getPartialVisibilityGutter, getWidthFromDeviceType } from './elementWidth';\nimport { CarouselInternalState, CarouselProps } from '../types';\n\nfunction notEnoughChildren(state: CarouselInternalState): boolean {\n const { slidesToShow, totalItems } = state;\n return totalItems < slidesToShow;\n}\n\nfunction getInitialState(\n state: CarouselInternalState,\n props: CarouselProps\n): {\n shouldRenderOnSSR: boolean;\n flexBisis: number | string | undefined;\n domFullyLoaded: boolean;\n partialVisibilityGutter: number | undefined;\n shouldRenderAtAll: boolean;\n} {\n const { domLoaded, slidesToShow, containerWidth, itemWidth } = state;\n // old wrongly spelt partialVisbile prop kept to not make changes breaking\n const { deviceType, responsive, ssr, partialVisbile, partialVisible } = props;\n let flexBisis: number | string | undefined;\n const domFullyLoaded = Boolean(domLoaded && slidesToShow && containerWidth && itemWidth);\n if (ssr && deviceType && !domFullyLoaded) {\n flexBisis = getWidthFromDeviceType(deviceType, responsive);\n }\n const shouldRenderOnSSR = Boolean(ssr && deviceType && !domFullyLoaded && flexBisis);\n const partialVisibilityGutter = getPartialVisibilityGutter(\n responsive,\n partialVisbile || partialVisible,\n deviceType,\n state.deviceType\n );\n const shouldRenderAtAll = shouldRenderOnSSR || domFullyLoaded;\n return {\n shouldRenderOnSSR,\n flexBisis,\n domFullyLoaded,\n partialVisibilityGutter,\n shouldRenderAtAll,\n };\n}\n\nfunction getIfSlideIsVisbile(index: number, state: CarouselInternalState): boolean {\n const { currentSlide, slidesToShow } = state;\n return index >= currentSlide && index < currentSlide + slidesToShow;\n}\n\nfunction getTransformForCenterMode(\n state: CarouselInternalState,\n props: CarouselProps,\n transformPlaceHolder?: number,\n partialVisibilityGutter?: number\n) {\n const transform = transformPlaceHolder || state.transform;\n if ((!props.infinite && state.currentSlide === 0) || notEnoughChildren(state)) {\n return transform;\n } else {\n if (partialVisibilityGutter) {\n return transform + partialVisibilityGutter;\n }\n return transform + state.itemWidth / 2;\n }\n}\n\nfunction isInLeftEnd({ currentSlide }: CarouselInternalState): boolean {\n return !(currentSlide > 0);\n}\n\nfunction isInRightEnd({ currentSlide, totalItems, slidesToShow }: CarouselInternalState): boolean {\n return !(currentSlide + slidesToShow < totalItems);\n}\n\nfunction getTransformForPartialVsibile(\n state: CarouselInternalState,\n partialVisibilityGutter = 0,\n props: CarouselProps,\n transformPlaceHolder?: number\n) {\n const { slidesToShow } = state;\n const isRightEndReach = isInRightEnd(state);\n const shouldRemoveRightGutter = !props.infinite && isRightEndReach;\n const baseTransform = transformPlaceHolder || state.transform;\n if (notEnoughChildren(state)) {\n return baseTransform;\n }\n const transform = baseTransform - (props.centerMode ? partialVisibilityGutter : 0);\n if (shouldRemoveRightGutter) {\n const remainingWidth = state.containerWidth - (state.itemWidth - partialVisibilityGutter) * slidesToShow;\n return transform + remainingWidth;\n }\n return transform;\n}\n\nexport function parsePosition(props: CarouselProps, position: number) {\n return props.rtl ? -1 * position : position;\n}\n\nfunction getTransform(state: CarouselInternalState, props: CarouselProps, transformPlaceHolder?: number) {\n // old wrongly spelt partialVisbile prop kept to not make changes breaking\n const { partialVisbile, partialVisible, responsive, deviceType, centerMode } = props;\n const transform = transformPlaceHolder || state.transform;\n const partialVisibilityGutter = getPartialVisibilityGutter(\n responsive,\n partialVisbile || partialVisible,\n deviceType,\n state.deviceType\n );\n const currentTransform =\n (partialVisible || partialVisbile) && !centerMode\n ? getTransformForPartialVsibile(state, partialVisibilityGutter, props, transformPlaceHolder)\n : centerMode\n ? getTransformForCenterMode(state, props, transformPlaceHolder, partialVisibilityGutter)\n : transform;\n return parsePosition(props, currentTransform);\n}\n\nfunction getSlidesToSlide(state: CarouselInternalState, props: CarouselProps): number {\n const { domLoaded, slidesToShow, containerWidth, itemWidth } = state;\n const { deviceType, responsive } = props;\n let slidesToScroll = props.slidesToSlide || 1;\n const domFullyLoaded = Boolean(domLoaded && slidesToShow && containerWidth && itemWidth);\n const ssr = props.ssr && props.deviceType && !domFullyLoaded;\n if (ssr) {\n Object.keys(responsive).forEach((device) => {\n const { slidesToSlide } = responsive[device];\n if (deviceType === device && slidesToSlide) {\n slidesToScroll = slidesToSlide;\n }\n });\n }\n if (domFullyLoaded) {\n slidesToScroll = props.slidesToSlide || state.slidesToShow;\n }\n return slidesToScroll;\n}\n\nexport {\n isInLeftEnd,\n isInRightEnd,\n getInitialState,\n getIfSlideIsVisbile,\n getTransformForCenterMode,\n getTransformForPartialVsibile,\n notEnoughChildren,\n getSlidesToSlide,\n getTransform,\n};\n","const throttle = (\n func: () => void,\n limit: number,\n setIsInThrottle?: (value?: boolean) => void\n): (() => void) => {\n let inThrottle: boolean;\n return function() {\n const args = arguments;\n const context = this;\n if (!inThrottle) {\n func.apply(context, args);\n inThrottle = true;\n if (typeof setIsInThrottle === \"function\") {\n setIsInThrottle(true);\n }\n setTimeout(() => {\n inThrottle = false;\n if (typeof setIsInThrottle === \"function\") {\n setIsInThrottle(false);\n }\n }, limit);\n }\n };\n};\n\nexport default throttle;\n","import * as React from \"react\";\nexport interface ResponsiveType {\n [key: string]: {\n breakpoint: { max: number; min: number };\n items: number;\n partialVisibilityGutter?: number; // back-ward compatible, because previously there has been a typo\n paritialVisibilityGutter?: number;\n slidesToSlide?: number;\n };\n}\nexport function isMouseMoveEvent(\n e: React.MouseEvent | React.TouchEvent\n): e is React.MouseEvent {\n return \"clientX\" && \"clientY\" in e;\n}\nexport interface CarouselProps {\n responsive: ResponsiveType;\n deviceType?: string;\n ssr?: boolean;\n slidesToSlide?: number;\n draggable?: boolean;\n arrows?: boolean; // show or hide arrows.\n renderArrowsWhenDisabled?: boolean; // Allow for the arrows to have a disabled attribute instead of not showing them\n swipeable?: boolean;\n removeArrowOnDeviceType?: string | Array;\n children: any;\n customLeftArrow?: React.ReactElement | null;\n customRightArrow?: React.ReactElement | null;\n customDot?: React.ReactElement | null;\n customButtonGroup?: React.ReactElement | null;\n infinite?: boolean;\n minimumTouchDrag?: number; // default 50px. The amount of distance to drag / swipe in order to move to the next slide.\n afterChange?: (previousSlide: number, state: StateCallBack) => void; // Change callback after sliding everytime. `(previousSlide, currentState) => ...`\n beforeChange?: (nextSlide: number, state: StateCallBack) => void; // Change callback before sliding everytime. `(previousSlide, currentState) => ...`\n sliderClass?: string; // Use this to style your own track list.\n itemClass?: string; // Use this to style your own Carousel item. For example add padding-left and padding-right\n itemAriaLabel?: string; // Use this to add your own Carousel item aria-label.if it is not defined the child aria label will be applied if the child dont have one than a default empty string will be applied\n containerClass?: string; // Use this to style the whole container. For example add padding to allow the \"dots\" or \"arrows\" to go to other places without being overflown.\n className?: string; // Use this to style the whole container with styled-components\n dotListClass?: string; // Use this to style the dot list.\n keyBoardControl?: boolean;\n centerMode?: boolean; // show previous and next set of items partially\n autoPlay?: boolean;\n autoPlaySpeed?: number; // default 3000ms\n showDots?: boolean;\n renderDotsOutside?: boolean; // show dots outside of the container for custom styling.\n renderButtonGroupOutside?: boolean; // show buttonGroup outside of the container for custom styling.\n // Show next/previous item partially\n // partialVisible has to be used in conjunction with the responsive props, details are in documentation.\n // it shows the next set of items partially, different from centerMode as it shows both.\n partialVisible?: boolean;\n partialVisbile?: boolean; // old typo - deprecated (will be remove in 3.0)\n customTransition?: string;\n transitionDuration?: number;\n // if you are using customTransition, make sure to put the duration here.\n // for example, customTransition=\"all .5\" then put transitionDuration as 500.\n // this is needed for the resizing to work.\n focusOnSelect?: boolean;\n additionalTransfrom?: number; // this is only used if you want to add additional transfrom to the current transform\n pauseOnHover?: boolean;\n shouldResetAutoplay?: boolean;\n rewind?: boolean;\n rewindWithAnimation?: boolean;\n rtl?: boolean;\n}\n\nexport type StateCallBack = CarouselInternalState;\n\nexport type Direction = \"left\" | \"right\" | \"\" | undefined;\nexport type SkipCallbackOptions =\n | boolean\n | { skipBeforeChange?: boolean; skipAfterChange?: boolean };\nexport interface ButtonGroupProps {\n previous?: () => void;\n next?: () => void;\n goToSlide?: (index: number, skipCallbacks?: SkipCallbackOptions) => void;\n carouselState?: StateCallBack;\n}\nexport interface ArrowProps {\n onClick?: () => void;\n carouselState?: StateCallBack;\n}\nexport interface DotProps {\n index?: number;\n active?: boolean;\n onClick?: () => void;\n carouselState?: StateCallBack;\n}\n\nexport interface CarouselInternalState {\n itemWidth: number;\n containerWidth: number;\n slidesToShow: number;\n currentSlide: number;\n totalItems: number;\n domLoaded: boolean;\n deviceType?: string;\n transform: number;\n}\n\nexport default class Carousel extends React.Component {\n previous: (slidesHavePassed: number) => void;\n next: (slidesHavePassed: number) => void;\n goToSlide: (slide: number, skipCallbacks?: SkipCallbackOptions) => void;\n state: CarouselInternalState;\n setClones: (\n slidesToShow: number,\n itemWidth?: number,\n forResizing?: boolean\n ) => void; // reset carousel in infinite mode.\n setItemsToShow: (shouldCorrectItemPosition?: boolean) => void; // reset carousel in non-infinite mode.\n correctClonesPosition: ({ domLoaded }: { domLoaded: boolean }) => void;\n onMove: boolean;\n direction: Direction;\n containerRef: React.RefObject;\n}\n","import * as React from \"react\";\n\nimport {\n CarouselInternalState,\n CarouselProps,\n StateCallBack,\n SkipCallbackOptions\n} from \"./types\";\nimport {getInitialSlideInInfiniteMode, getOriginalIndexLookupTableByClones} from \"./utils/clones\";\nimport { getLookupTableForNextSlides } from \"./utils/dots\";\nimport { getSlidesToSlide, notEnoughChildren } from \"./utils/common\";\n\ninterface DotsTypes {\n props: CarouselProps;\n state: CarouselInternalState;\n goToSlide: (index: number, skipCallbacks?: SkipCallbackOptions) => void;\n getState: () => StateCallBack;\n}\n\nconst MAX_DOTS_COUNT = 11\nconst Dots = ({\n props,\n state,\n goToSlide,\n getState\n}: DotsTypes): React.ReactElement | null => {\n const { showDots, customDot, dotListClass, infinite, children } = props;\n if (!showDots || notEnoughChildren(state)) {\n return null;\n }\n const { currentSlide, slidesToShow } = state;\n const slidesToSlide = getSlidesToSlide(state, props);\n const childrenArr = React.Children.toArray(children);\n let numberOfDotsToShow: number;\n if (!infinite) {\n numberOfDotsToShow =\n Math.ceil((childrenArr.length - slidesToShow) / slidesToSlide!) + 1;\n } else {\n numberOfDotsToShow = Math.ceil(childrenArr.length / slidesToSlide!);\n }\n const nextSlidesTable = getLookupTableForNextSlides(\n numberOfDotsToShow,\n state,\n props,\n childrenArr\n );\n const lookupTable = getOriginalIndexLookupTableByClones(\n slidesToShow,\n childrenArr\n );\n const currentSlides = lookupTable[currentSlide];\n const isMaxExceeded = childrenArr.length > MAX_DOTS_COUNT\n\n // const childrenArr = React.Children.toArray(props.children);\n const initialSlide = getInitialSlideInInfiniteMode(\n slidesToShow || state.slidesToShow,\n childrenArr\n );\n const threshold = 5\n const endThreshold = 6\n const isMiddleValue = currentSlide > initialSlide + threshold;\n const isEnd = (currentSlide - initialSlide) > (childrenArr.length - endThreshold)\n const endShift = childrenArr.length - (currentSlide - initialSlide) - endThreshold\n return (\n
    \n
    \n {Array(numberOfDotsToShow)\n .fill(0)\n .map((_, index: number) => {\n let isActive;\n let nextSlide: number;\n if (!infinite) {\n const maximumNextSlide = childrenArr.length - slidesToShow;\n const possibileNextSlides = index * slidesToSlide!;\n const isAboutToOverSlide = possibileNextSlides > maximumNextSlide;\n nextSlide = isAboutToOverSlide\n ? maximumNextSlide\n : possibileNextSlides;\n isActive =\n nextSlide === currentSlide ||\n (currentSlide > nextSlide &&\n currentSlide < nextSlide + slidesToSlide! &&\n currentSlide < childrenArr.length - slidesToShow);\n } else {\n nextSlide = nextSlidesTable[index];\n const cloneIndex = lookupTable[nextSlide];\n isActive =\n currentSlides === cloneIndex ||\n (currentSlides >= cloneIndex &&\n currentSlides < cloneIndex + slidesToSlide!);\n }\n if (customDot) {\n return React.cloneElement(customDot, {\n index,\n active: isActive,\n key: index,\n onClick: () => goToSlide(nextSlide),\n carouselState: getState()\n });\n }\n return (\n \n goToSlide(nextSlide)}\n />\n \n );\n })}\n
    \n
\n );\n};\n\nexport default Dots;\n","import { getOriginalCounterPart } from \"./clones\";\nimport { CarouselInternalState, CarouselProps } from \"../types\";\nimport { getSlidesToSlide } from \"./common\";\n\ninterface NextSlidesTable {\n [key: number]: number;\n}\n\n/*\nThis produce a list of possibile slides that dot can go to next;\n*/\nfunction getLookupTableForNextSlides(\n numberOfDotsToShow: number,\n state: CarouselInternalState,\n props: CarouselProps,\n childrenArr: any[]\n): NextSlidesTable {\n const table: NextSlidesTable = {};\n const slidesToSlide = getSlidesToSlide(state, props);\n Array(numberOfDotsToShow)\n .fill(0)\n .forEach((_, i) => {\n const nextSlide = getOriginalCounterPart(i, state, childrenArr);\n if (i === 0) {\n table[0] = nextSlide;\n } else {\n const prevIndex = i - 1;\n const now = table[prevIndex] + slidesToSlide!;\n table[i] = now;\n }\n });\n return table;\n}\n\nexport { getLookupTableForNextSlides };\n","import * as React from \"react\";\n\nimport { StateCallBack } from \"./types\";\n\ninterface LeftArrowProps {\n customLeftArrow?: React.ReactElement | null;\n getState: () => StateCallBack;\n previous: () => void;\n disabled?: boolean;\n rtl?: boolean;\n}\ninterface RightArrowProps {\n customRightArrow?: React.ReactElement | null;\n getState: () => StateCallBack;\n next: () => void;\n disabled?: boolean;\n rtl?: boolean;\n}\n\nconst LeftArrow = ({\n customLeftArrow,\n getState,\n previous,\n disabled,\n rtl\n}: LeftArrowProps): React.ReactElement => {\n if (customLeftArrow) {\n return React.cloneElement(customLeftArrow, {\n onClick: () => previous(),\n carouselState: getState(),\n disabled: disabled,\n rtl: rtl\n });\n }\n const rtlClassName = rtl ? \"rtl\" : \"\";\n\n return (\n previous()}\n type=\"button\"\n disabled={disabled}\n />\n );\n};\nconst RightArrow = ({\n customRightArrow,\n getState,\n next,\n disabled,\n rtl\n}: RightArrowProps): React.ReactElement => {\n if (customRightArrow) {\n return React.cloneElement(customRightArrow, {\n onClick: () => next(),\n carouselState: getState(),\n disabled: disabled,\n rtl: rtl\n });\n }\n const rtlClassName = rtl ? \"rtl\" : \"\";\n\n return (\n next()}\n type=\"button\"\n disabled={disabled}\n />\n );\n};\n\nexport { LeftArrow, RightArrow };\n","import * as React from \"react\";\n\nimport {\n CarouselInternalState,\n CarouselProps,\n SkipCallbackOptions\n} from \"./types\";\nimport { getInitialState, getIfSlideIsVisbile } from \"./utils\";\n\ninterface CarouselItemsProps {\n props: CarouselProps;\n state: CarouselInternalState;\n clones: any[];\n notEnoughChildren: boolean;\n goToSlide: (index: number, skipCallbacks?: SkipCallbackOptions) => void;\n}\n\nconst CarouselItems = ({\n props,\n state,\n goToSlide,\n clones,\n notEnoughChildren\n}: CarouselItemsProps) => {\n const { itemWidth } = state;\n const {\n children,\n infinite,\n itemClass,\n itemAriaLabel,\n partialVisbile,\n partialVisible\n } = props;\n const {\n flexBisis,\n shouldRenderOnSSR,\n domFullyLoaded,\n shouldRenderAtAll\n } = getInitialState(state, props);\n if (!shouldRenderAtAll) {\n return null;\n }\n if (partialVisbile) {\n console.warn(\n 'WARNING: Please correct props name: \"partialVisible\" as old typo will be removed in future versions!'\n );\n }\n\n return (\n <>\n {(infinite ? clones : React.Children.toArray(children)).map(\n (child, index) => {\n return (\n {\n if (props.focusOnSelect) {\n goToSlide(index);\n }\n }}\n aria-hidden={getIfSlideIsVisbile(index, state) ? \"false\" : \"true\"}\n aria-label={\n itemAriaLabel\n ? itemAriaLabel\n : child.props.ariaLabel\n ? child.props.ariaLabel\n : null\n }\n style={{\n flex: shouldRenderOnSSR ? `1 0 ${flexBisis}%` : \"auto\",\n position: \"relative\",\n width: domFullyLoaded ? `${itemWidth}px` : \"auto\"\n }}\n className={`react-multi-carousel-item ${\n getIfSlideIsVisbile(index, state)\n ? \"react-multi-carousel-item--active\"\n : \"\"\n } ${itemClass}`}\n >\n {child}\n \n );\n }\n )}\n \n );\n};\n\nexport default CarouselItems;\n","import * as React from 'react';\n\nimport {\n throttle,\n getClones,\n checkClonesPosition, // handle when there are clones appear on the screen, only apply to infinite mode.\n getInitialState,\n throwError,\n getItemClientSideWidth,\n populateNextSlides,\n populatePreviousSlides,\n populateSlidesOnMouseTouchMove,\n isInLeftEnd,\n isInRightEnd,\n getInitialSlideInInfiniteMode,\n notEnoughChildren,\n} from './utils';\nimport { CarouselInternalState, CarouselProps, StateCallBack, Direction, isMouseMoveEvent, SkipCallbackOptions } from './types';\nimport Dots from './Dots';\nimport { LeftArrow, RightArrow } from './Arrows';\nimport CarouselItems from './CarouselItems';\nimport { getTransform, parsePosition } from './utils/common';\n\nconst defaultTransitionDuration = 400;\nconst defaultTransition = 'transform 400ms ease-in-out';\nclass Carousel extends React.Component {\n public static defaultProps = {\n slidesToSlide: 1,\n infinite: false,\n draggable: true,\n swipeable: true,\n arrows: true,\n renderArrowsWhenDisabled: false,\n containerClass: '',\n sliderClass: '',\n itemClass: '',\n keyBoardControl: true,\n autoPlaySpeed: 3000,\n showDots: false,\n renderDotsOutside: false,\n renderButtonGroupOutside: false,\n minimumTouchDrag: 80,\n className: '',\n dotListClass: '',\n focusOnSelect: false,\n centerMode: false,\n additionalTransfrom: 0,\n pauseOnHover: true,\n shouldResetAutoplay: true,\n rewind: false,\n rtl: false,\n rewindWithAnimation: false,\n };\n private readonly containerRef: React.RefObject;\n private readonly listRef: React.RefObject;\n public onMove: boolean;\n public initialX: number;\n public lastX: number;\n public isAnimationAllowed: boolean;\n public direction: Direction;\n public autoPlay?: any;\n public isInThrottle?: boolean;\n public initialY: number;\n private transformPlaceHolder: number;\n private itemsToShowTimeout: any;\n static clonesTimeout: any;\n static isInThrottleTimeout: any;\n static transformTimeout: any;\n static afterChangeTimeout: any;\n static afterChangeTimeout2: any;\n static afterChangeTimeout3: any;\n\n constructor(props: CarouselProps) {\n super(props);\n this.containerRef = React.createRef();\n this.listRef = React.createRef();\n this.state = {\n itemWidth: 0,\n slidesToShow: 0,\n currentSlide: 0,\n totalItems: React.Children.count(props.children),\n deviceType: '',\n domLoaded: false,\n transform: 0,\n containerWidth: 0,\n };\n this.onResize = this.onResize.bind(this);\n this.handleDown = this.handleDown.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleOut = this.handleOut.bind(this);\n this.onKeyUp = this.onKeyUp.bind(this);\n this.handleEnter = this.handleEnter.bind(this);\n this.setIsInThrottle = this.setIsInThrottle.bind(this);\n this.next = throttle(this.next.bind(this), props.transitionDuration || defaultTransitionDuration, this.setIsInThrottle);\n this.previous = throttle(\n this.previous.bind(this),\n props.transitionDuration || defaultTransitionDuration,\n this.setIsInThrottle\n );\n this.goToSlide = throttle(\n // @ts-ignore\n this.goToSlide.bind(this),\n props.transitionDuration || defaultTransitionDuration,\n this.setIsInThrottle\n );\n this.onMove = false;\n this.initialX = 0;\n this.lastX = 0;\n this.isAnimationAllowed = false;\n this.direction = '';\n this.initialY = 0;\n this.isInThrottle = false;\n this.transformPlaceHolder = 0;\n }\n // we only use this when infinite mode is off\n public resetTotalItems(): void {\n const totalItems = React.Children.count(this.props.children);\n const currentSlide = notEnoughChildren(this.state)\n ? 0\n : // this ensures that if the currentSlide before change in childrenCount is more than new childrenCount; we will set it to new childrenCount\n Math.max(0, Math.min(this.state.currentSlide, totalItems));\n this.setState(\n {\n totalItems,\n currentSlide,\n },\n () => {\n this.setContainerAndItemWidth(this.state.slidesToShow, true);\n }\n );\n }\n public setIsInThrottle(isInThrottle = false): void {\n this.isInThrottle = isInThrottle;\n }\n public setTransformDirectly(position: number, withAnimation?: boolean) {\n const { additionalTransfrom } = this.props;\n this.transformPlaceHolder = position;\n const currentTransform = getTransform(this.state, this.props, this.transformPlaceHolder);\n if (this.listRef && this.listRef.current) {\n this.setAnimationDirectly(withAnimation);\n this.listRef.current.style.transform = `translate3d(${currentTransform + additionalTransfrom!}px,0,0)`;\n }\n }\n public setAnimationDirectly(animationAllowed?: boolean) {\n if (this.listRef && this.listRef.current) {\n if (animationAllowed) {\n this.listRef.current.style.transition = this.props.customTransition || defaultTransition;\n } else {\n this.listRef.current.style.transition = 'none';\n }\n }\n }\n public componentDidMount(): void {\n this.setState({ domLoaded: true });\n this.setItemsToShow();\n window.addEventListener('resize', this.onResize as React.EventHandler);\n this.onResize(true);\n if (this.props.keyBoardControl) {\n window.addEventListener('keyup', this.onKeyUp as React.EventHandler);\n }\n if (this.props.autoPlay) {\n this.autoPlay = setInterval(this.next, this.props.autoPlaySpeed);\n }\n }\n\n /*\nWe only want to set the clones on the client-side cause it relies on getting the width of the carousel items.\n*/\n public setClones(slidesToShow: number, itemWidth?: number, forResizing?: boolean, resetCurrentSlide = false): void {\n // if forResizing is true, means we are on client-side.\n // if forResizing is false, means we are on server-side.\n // because the first time we set the clones, we change the position of all carousel items when entering client-side from server-side.\n // but still, we want to maintain the same position as it was on the server-side which is translateX(0) by getting the couter part of the original first slide.\n this.isAnimationAllowed = false;\n const childrenArr = React.Children.toArray(this.props.children);\n const initialSlide = getInitialSlideInInfiniteMode(slidesToShow || this.state.slidesToShow, childrenArr);\n const clones = getClones(this.state.slidesToShow, childrenArr);\n const currentSlide = childrenArr.length < this.state.slidesToShow ? 0 : this.state.currentSlide;\n this.setState(\n {\n totalItems: clones.length,\n currentSlide: forResizing && !resetCurrentSlide ? currentSlide : initialSlide,\n },\n () => {\n this.correctItemsPosition(itemWidth || this.state.itemWidth);\n }\n );\n }\n public setItemsToShow(shouldCorrectItemPosition?: boolean, resetCurrentSlide?: boolean): void {\n const { responsive } = this.props;\n Object.keys(responsive).forEach((item) => {\n const { breakpoint, items } = responsive[item];\n const { max, min } = breakpoint;\n\n const widths = [window.innerWidth, this.containerRef.current.clientWidth];\n\n /*if (window.screen && window.screen.width) {\n widths.push(window.screen.width);\n}*/\n\n const screenWidth = Math.min(...widths);\n\n if (screenWidth >= min && screenWidth <= max) {\n // @ts-ignore\n this.state.deviceType = item;\n this.setState({ slidesToShow: items, deviceType: item });\n this.setContainerAndItemWidth(items, shouldCorrectItemPosition, resetCurrentSlide);\n\n const [carouselList] = Array.from(\n document.getElementsByClassName('react-multi-carousel-list')\n ) as HTMLDivElement[];\n if (carouselList) {\n const totalItems = React.Children.count(this.props.children);\n if (totalItems < items) {\n carouselList.style.justifyContent = 'center';\n } else {\n carouselList.style.justifyContent = 'unset';\n }\n }\n }\n });\n }\n // this is for resizing only or the first time when we entered client-side from server-side.\n public setContainerAndItemWidth(\n slidesToShow: number,\n shouldCorrectItemPosition?: boolean,\n resetCurrentSlide?: boolean\n ): void {\n if (this.containerRef && this.containerRef.current) {\n const containerWidth = this.containerRef.current.offsetWidth;\n const { partialVisibilityGutter } = getInitialState(this.state, this.props);\n const itemWidth: number = getItemClientSideWidth(this.props, slidesToShow, containerWidth, partialVisibilityGutter);\n this.setState(\n {\n containerWidth,\n itemWidth,\n },\n () => {\n if (this.props.infinite) {\n this.setClones(slidesToShow, itemWidth, shouldCorrectItemPosition, resetCurrentSlide);\n }\n }\n );\n if (shouldCorrectItemPosition) {\n this.correctItemsPosition(itemWidth);\n }\n }\n }\n public correctItemsPosition(itemWidth: number, isAnimationAllowed?: boolean, setToDomDirectly?: boolean): void {\n /*\nFor swipe, drag and resizing, they changed the position of the carousel, but the position are not always correct.\nHence, this is to make sure our items are in the correct place.\n*/\n if (isAnimationAllowed) {\n this.isAnimationAllowed = true;\n }\n if (!isAnimationAllowed && this.isAnimationAllowed) {\n this.isAnimationAllowed = false;\n }\n const nextTransform = this.state.totalItems < this.state.slidesToShow ? 0 : -(itemWidth * this.state.currentSlide);\n if (setToDomDirectly) {\n this.setTransformDirectly(nextTransform, true);\n }\n this.setState({\n transform: nextTransform,\n });\n }\n public onResize(value?: React.KeyboardEvent | boolean): void {\n // value here can be html event or a boolean.\n // if its in infinite mode, we want to keep the current slide index no matter what.\n // if its not infinite mode, keeping the current slide index has already been taken care of\n const { infinite } = this.props;\n let shouldCorrectItemPosition;\n if (!infinite) {\n shouldCorrectItemPosition = false;\n } else {\n if (typeof value === 'boolean' && value) {\n shouldCorrectItemPosition = false;\n } else {\n shouldCorrectItemPosition = true;\n }\n }\n this.setItemsToShow(shouldCorrectItemPosition);\n }\n public componentDidUpdate(\n { keyBoardControl, autoPlay, children }: CarouselProps,\n { containerWidth, domLoaded, currentSlide }: CarouselInternalState\n ): void {\n if (this.containerRef && this.containerRef.current && this.containerRef.current.offsetWidth !== containerWidth) {\n // this is for handling resizing only.\n if (this.itemsToShowTimeout) {\n clearTimeout(this.itemsToShowTimeout);\n }\n this.itemsToShowTimeout = setTimeout(() => {\n this.setItemsToShow(true);\n }, this.props.transitionDuration || defaultTransitionDuration);\n }\n if (keyBoardControl && !this.props.keyBoardControl) {\n window.removeEventListener('keyup', this.onKeyUp as React.EventHandler);\n }\n if (!keyBoardControl && this.props.keyBoardControl) {\n window.addEventListener('keyup', this.onKeyUp as React.EventHandler);\n }\n if (autoPlay && !this.props.autoPlay && this.autoPlay) {\n clearInterval(this.autoPlay);\n this.autoPlay = undefined;\n }\n if (!autoPlay && this.props.autoPlay && !this.autoPlay) {\n this.autoPlay = setInterval(this.next, this.props.autoPlaySpeed);\n }\n if (children.length !== this.props.children.length) {\n // this is for handling changing children only.\n Carousel.clonesTimeout = setTimeout(() => {\n if (this.props.infinite) {\n this.setClones(this.state.slidesToShow, this.state.itemWidth, true, true);\n } else {\n this.resetTotalItems();\n }\n }, this.props.transitionDuration || defaultTransitionDuration);\n } else if (this.props.infinite && this.state.currentSlide !== currentSlide) {\n // this is to quickly cancel the animation and move the items position to create the infinite effects.\n this.correctClonesPosition({ domLoaded });\n }\n if (this.transformPlaceHolder !== this.state.transform) {\n this.transformPlaceHolder = this.state.transform;\n }\n /*\n If we reach the last slide of a non-infinite carousel we can rewind the carousel\n if opted in to autoPlay (lightweight infinite mode alternative).\n*/\n if (this.props.autoPlay && this.props.rewind) {\n if (!this.props.infinite && isInRightEnd(this.state)) {\n const rewindBuffer = this.props.transitionDuration || defaultTransitionDuration;\n Carousel.isInThrottleTimeout = setTimeout(() => {\n this.setIsInThrottle(false);\n this.resetAutoplayInterval();\n this.goToSlide(0, undefined, !!this.props.rewindWithAnimation);\n }, rewindBuffer + this.props.autoPlaySpeed!);\n }\n }\n }\n public correctClonesPosition({\n domLoaded, // this domLoaded comes from previous state, only use to tell if we are on client-side or server-side because this functin relies the dom.\n }: {\n domLoaded?: boolean;\n }): void {\n const childrenArr = React.Children.toArray(this.props.children);\n const { isReachingTheEnd, isReachingTheStart, nextSlide, nextPosition } = checkClonesPosition(\n this.state,\n childrenArr,\n this.props\n );\n if (\n // this is to prevent this gets called on the server-side.\n this.state.domLoaded &&\n domLoaded\n ) {\n if (isReachingTheEnd || isReachingTheStart) {\n this.isAnimationAllowed = false;\n Carousel.transformTimeout = setTimeout(() => {\n this.setState({\n transform: nextPosition,\n currentSlide: nextSlide,\n });\n }, this.props.transitionDuration || defaultTransitionDuration);\n }\n }\n }\n public next(slidesHavePassed = 0): void {\n const { afterChange, beforeChange } = this.props;\n if (notEnoughChildren(this.state)) {\n return;\n }\n /*\ntwo cases:\n1. We are not over-sliding.\n2. We are sliding over to what we have, that means nextslides > this.props.children.length. (does not apply to the inifnite mode)\n*/\n const { nextSlides, nextPosition } = populateNextSlides(this.state, this.props, slidesHavePassed);\n const previousSlide = this.state.currentSlide;\n if (nextSlides === undefined || nextPosition === undefined) {\n // they can be 0.\n return;\n }\n if (typeof beforeChange === 'function') {\n beforeChange(nextSlides, this.getState());\n }\n this.isAnimationAllowed = true;\n this.props.shouldResetAutoplay && this.resetAutoplayInterval();\n this.setState(\n {\n transform: nextPosition,\n currentSlide: nextSlides,\n },\n () => {\n if (typeof afterChange === 'function') {\n Carousel.afterChangeTimeout = setTimeout(() => {\n afterChange(previousSlide, this.getState());\n }, this.props.transitionDuration || defaultTransitionDuration);\n }\n }\n );\n }\n public previous(slidesHavePassed = 0): void {\n const { afterChange, beforeChange } = this.props;\n if (notEnoughChildren(this.state)) {\n return;\n }\n const { nextSlides, nextPosition } = populatePreviousSlides(this.state, this.props, slidesHavePassed);\n if (nextSlides === undefined || nextPosition === undefined) {\n // they can be 0, which goes back to the first slide.\n return;\n }\n const previousSlide = this.state.currentSlide;\n if (typeof beforeChange === 'function') {\n beforeChange(nextSlides, this.getState());\n }\n this.isAnimationAllowed = true;\n this.props.shouldResetAutoplay && this.resetAutoplayInterval();\n this.setState(\n {\n transform: nextPosition,\n currentSlide: nextSlides,\n },\n () => {\n if (typeof afterChange === 'function') {\n Carousel.afterChangeTimeout2 = setTimeout(() => {\n afterChange(previousSlide, this.getState());\n }, this.props.transitionDuration || defaultTransitionDuration);\n }\n }\n );\n }\n resetAutoplayInterval() {\n if (this.props.autoPlay) {\n clearInterval(this.autoPlay);\n this.autoPlay = setInterval(this.next, this.props.autoPlaySpeed);\n }\n }\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.onResize as React.EventHandler);\n if (this.props.keyBoardControl) {\n window.removeEventListener('keyup', this.onKeyUp as React.EventHandler);\n }\n if (this.props.autoPlay && this.autoPlay) {\n clearInterval(this.autoPlay);\n this.autoPlay = undefined;\n }\n if (this.itemsToShowTimeout) {\n clearTimeout(this.itemsToShowTimeout);\n }\n\n Carousel.clonesTimeout && clearTimeout(Carousel.clonesTimeout);\n Carousel.isInThrottleTimeout && clearTimeout(Carousel.isInThrottleTimeout);\n Carousel.transformTimeout && clearTimeout(Carousel.transformTimeout);\n Carousel.afterChangeTimeout && clearTimeout(Carousel.afterChangeTimeout);\n Carousel.afterChangeTimeout2 && clearTimeout(Carousel.afterChangeTimeout2);\n Carousel.afterChangeTimeout3 && clearTimeout(Carousel.afterChangeTimeout3);\n }\n public resetMoveStatus(): void {\n this.onMove = false;\n this.initialX = 0;\n this.lastX = 0;\n this.direction = '';\n this.initialY = 0;\n }\n\n public getCords({ clientX, clientY }: { clientX: number; clientY: number }) {\n return {\n clientX: parsePosition(this.props, clientX),\n clientY: parsePosition(this.props, clientY),\n };\n }\n\n public handleDown(e: React.MouseEvent | React.TouchEvent): void {\n if (\n (!isMouseMoveEvent(e) && !this.props.swipeable) ||\n (isMouseMoveEvent(e) && !this.props.draggable) ||\n this.isInThrottle\n ) {\n return;\n }\n const { clientX, clientY } = this.getCords(isMouseMoveEvent(e) ? e : e.touches[0]);\n this.onMove = true;\n this.initialX = clientX;\n this.initialY = clientY;\n this.lastX = clientX;\n this.isAnimationAllowed = false;\n }\n public handleMove(e: React.MouseEvent | React.TouchEvent): void {\n if (\n (!isMouseMoveEvent(e) && !this.props.swipeable) ||\n (isMouseMoveEvent(e) && !this.props.draggable) ||\n notEnoughChildren(this.state)\n ) {\n return;\n }\n const { clientX, clientY } = this.getCords(isMouseMoveEvent(e) ? e : e.touches[0]);\n const diffX = this.initialX - clientX;\n const diffY = this.initialY - clientY;\n if (this.onMove) {\n if (!(Math.abs(diffX) > Math.abs(diffY))) {\n // prevent swiping up and down moves the carousel.\n return;\n }\n const { direction, nextPosition, canContinue } = populateSlidesOnMouseTouchMove(\n this.state,\n this.props,\n this.initialX,\n this.lastX,\n clientX,\n this.transformPlaceHolder\n );\n if (direction) {\n this.direction = direction;\n if (canContinue && nextPosition !== undefined) {\n // nextPosition can be 0;\n this.setTransformDirectly(nextPosition);\n }\n }\n this.lastX = clientX;\n }\n }\n public handleOut(e: React.MouseEvent | React.TouchEvent): void {\n if (this.props.autoPlay && !this.autoPlay) {\n this.autoPlay = setInterval(this.next, this.props.autoPlaySpeed);\n }\n const shouldDisableOnMobile = e.type === 'touchend' && !this.props.swipeable;\n const shouldDisableOnDesktop = (e.type === 'mouseleave' || e.type === 'mouseup') && !this.props.draggable;\n if (shouldDisableOnMobile || shouldDisableOnDesktop) {\n return;\n }\n if (this.onMove) {\n this.setAnimationDirectly(true);\n if (this.direction === 'right') {\n const canGoNext = this.initialX - this.lastX >= this.props.minimumTouchDrag!;\n if (canGoNext) {\n const slidesHavePassed = Math.round((this.initialX - this.lastX) / this.state.itemWidth);\n this.next(slidesHavePassed);\n } else {\n this.correctItemsPosition(this.state.itemWidth, true, true);\n }\n }\n if (this.direction === 'left') {\n const canGoNext = this.lastX - this.initialX > this.props.minimumTouchDrag!;\n if (canGoNext) {\n const slidesHavePassed = Math.round((this.lastX - this.initialX) / this.state.itemWidth);\n this.previous(slidesHavePassed);\n } else {\n this.correctItemsPosition(this.state.itemWidth, true, true);\n }\n }\n this.resetMoveStatus();\n }\n }\n private isInViewport(el: HTMLInputElement) {\n const { top = 0, left = 0, bottom = 0, right = 0 } = el.getBoundingClientRect();\n return (\n top >= 0 &&\n left >= 0 &&\n bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n\n private isChildOfCarousel(el: EventTarget) {\n if (el instanceof Element && this.listRef && this.listRef.current) {\n return this.listRef.current.contains(el);\n }\n return false;\n }\n\n public onKeyUp(e: React.KeyboardEvent): void {\n const { target, keyCode } = e;\n switch (keyCode) {\n case 37:\n if (this.isChildOfCarousel(target)) return this.previous();\n break;\n case 39:\n if (this.isChildOfCarousel(target)) return this.next();\n break;\n case 9:\n if (this.isChildOfCarousel(target) && target instanceof HTMLInputElement && this.isInViewport(target)) {\n return this.next();\n }\n break;\n }\n }\n public handleEnter(e: React.MouseEvent): void {\n if (isMouseMoveEvent(e) && this.autoPlay && this.props.autoPlay && this.props.pauseOnHover) {\n clearInterval(this.autoPlay);\n this.autoPlay = undefined;\n }\n }\n public goToSlide(slide: number, skipCallbacks?: SkipCallbackOptions, animationAllowed = true): void {\n if (this.isInThrottle) {\n return;\n }\n const { itemWidth } = this.state;\n const { afterChange, beforeChange } = this.props;\n const previousSlide = this.state.currentSlide;\n if (\n typeof beforeChange === 'function' &&\n (!skipCallbacks || (typeof skipCallbacks === 'object' && !skipCallbacks.skipBeforeChange))\n ) {\n beforeChange(slide, this.getState());\n }\n this.isAnimationAllowed = animationAllowed;\n this.props.shouldResetAutoplay && this.resetAutoplayInterval();\n this.setState(\n {\n currentSlide: slide,\n transform: -(itemWidth * slide),\n },\n () => {\n if (this.props.infinite) {\n this.correctClonesPosition({ domLoaded: true });\n }\n if (\n typeof afterChange === 'function' &&\n (!skipCallbacks || (typeof skipCallbacks === 'object' && !skipCallbacks.skipAfterChange))\n ) {\n Carousel.afterChangeTimeout3 = setTimeout(() => {\n afterChange(previousSlide, this.getState());\n }, this.props.transitionDuration || defaultTransitionDuration);\n }\n }\n );\n }\n public getState(): StateCallBack {\n return this.state;\n }\n public renderLeftArrow(disbaled: boolean): React.ReactNode {\n const { customLeftArrow, rtl } = this.props;\n return (\n this.getState()}\n previous={this.previous}\n disabled={disbaled}\n rtl={rtl}\n />\n );\n }\n public renderRightArrow(disbaled: boolean): React.ReactNode {\n const { customRightArrow, rtl } = this.props;\n return (\n this.getState()}\n next={this.next}\n disabled={disbaled}\n rtl={rtl}\n />\n );\n }\n public renderButtonGroups(): React.ReactElement | null {\n const { customButtonGroup } = this.props;\n if (customButtonGroup) {\n return React.cloneElement(customButtonGroup, {\n previous: () => this.previous(),\n next: () => this.next(),\n goToSlide: (slideIndex: number, skipCallbacks?: SkipCallbackOptions) => this.goToSlide(slideIndex, skipCallbacks),\n carouselState: this.getState(),\n });\n }\n return null;\n }\n public renderDotsList(): React.ReactElement | null {\n return this.getState()} />;\n }\n public renderCarouselItems() {\n let clones = [];\n if (this.props.infinite) {\n const childrenArr = React.Children.toArray(this.props.children);\n clones = getClones(this.state.slidesToShow, childrenArr);\n }\n return (\n \n );\n }\n\n public render(): React.ReactNode {\n const {\n deviceType,\n arrows,\n renderArrowsWhenDisabled,\n removeArrowOnDeviceType,\n infinite,\n containerClass,\n sliderClass,\n customTransition,\n additionalTransfrom,\n renderDotsOutside,\n renderButtonGroupOutside,\n className,\n rtl,\n } = this.props;\n if (process.env.NODE_ENV !== 'production') {\n throwError(this.state, this.props);\n }\n const { shouldRenderOnSSR, shouldRenderAtAll } = getInitialState(this.state, this.props);\n const isLeftEndReach = isInLeftEnd(this.state);\n const isRightEndReach = isInRightEnd(this.state);\n const shouldShowArrows =\n arrows &&\n !(\n removeArrowOnDeviceType &&\n ((deviceType && removeArrowOnDeviceType.indexOf(deviceType) > -1) ||\n (this.state.deviceType && removeArrowOnDeviceType.indexOf(this.state.deviceType) > -1))\n ) &&\n !notEnoughChildren(this.state) &&\n shouldRenderAtAll;\n const disableLeftArrow = !infinite && isLeftEndReach;\n const disableRightArrow = !infinite && isRightEndReach;\n\n // this lib supports showing next set of items partially as well as center mode which shows both.\n const currentTransform = getTransform(this.state, this.props);\n return (\n <>\n \n \n {this.renderCarouselItems()}\n \n {shouldShowArrows &&\n (!disableLeftArrow || renderArrowsWhenDisabled) &&\n this.renderLeftArrow(disableLeftArrow)}\n {shouldShowArrows &&\n (!disableRightArrow || renderArrowsWhenDisabled) &&\n this.renderRightArrow(disableRightArrow)}\n {shouldRenderAtAll && !renderButtonGroupOutside && this.renderButtonGroups()}\n {shouldRenderAtAll && !renderDotsOutside && this.renderDotsList()}\n \n {shouldRenderAtAll && renderDotsOutside && this.renderDotsList()}\n {shouldRenderAtAll && renderButtonGroupOutside && this.renderButtonGroups()}\n \n );\n }\n}\nexport default Carousel;\n","import { CarouselInternalState, CarouselProps } from \"../types\";\nimport { getSlidesToSlide } from \"./common\";\n\n/*\ntwo cases:\n1. We are not over-sliding.\n2. We are sliding over to what we have, that means nextslides > this.props.children.length. (does not apply to the inifnite mode)\n*/\nfunction populateNextSlides(\n state: CarouselInternalState,\n props: CarouselProps,\n slidesHavePassed = 0\n): {\n nextSlides: number | undefined;\n nextPosition: number | undefined;\n} {\n const { slidesToShow, currentSlide, itemWidth, totalItems } = state;\n const slidesToSlide = getSlidesToSlide(state, props);\n let nextSlides;\n let nextPosition;\n // possibile next number of slides that don't go over what we have, this doesn't apply to the infinite mode.\n // because for inifnite mode this will never happen.\n const nextMaximumSlides =\n currentSlide +\n 1 +\n slidesHavePassed +\n slidesToShow +\n (slidesHavePassed > 0 ? 0 : slidesToSlide!);\n if (nextMaximumSlides <= totalItems) {\n // It means if we have next slides go back to on the right-hand side.\n nextSlides =\n currentSlide +\n slidesHavePassed +\n (slidesHavePassed > 0 ? 0 : slidesToSlide!);\n nextPosition = -(itemWidth * nextSlides);\n } else if (\n nextMaximumSlides > totalItems &&\n currentSlide !== totalItems - slidesToShow\n ) {\n // This is to prevent oversliding\n // This is not for inifinite mode as for inifinite mode is never over-sliding.\n nextSlides = totalItems - slidesToShow;\n nextPosition = -(itemWidth * nextSlides);\n } else {\n nextSlides = undefined;\n nextPosition = undefined;\n }\n return {\n nextSlides,\n nextPosition\n };\n}\n\nexport { populateNextSlides };\n","import * as React from \"react\";\nimport { CarouselInternalState, CarouselProps } from \"../types\";\nimport { getSlidesToSlide } from \"./common\";\nimport { isInRightEnd } from \"./common\";\n/*\ntwo cases:\n1. We are not over-sliding.\n2. We are sliding over to what we have, that means nextslides < this.props.children.length. (does not apply to the inifnite mode)\n*/\nfunction populatePreviousSlides(\n state: CarouselInternalState,\n props: CarouselProps,\n slidesHavePassed = 0\n): {\n nextSlides: number | undefined;\n nextPosition: number | undefined;\n} {\n const { currentSlide, itemWidth, slidesToShow } = state;\n const { children, showDots, infinite } = props;\n const slidesToSlide = getSlidesToSlide(state, props);\n let nextSlides;\n let nextPosition;\n const nextMaximumSlides =\n currentSlide -\n slidesHavePassed -\n (slidesHavePassed > 0 ? 0 : slidesToSlide!);\n const childrenArr = React.Children.toArray(children);\n const additionalSlides = (childrenArr.length - slidesToShow) % slidesToSlide!;\n if (nextMaximumSlides >= 0) {\n // It means if we have next slides go back to on the left-hand side.\n nextSlides = nextMaximumSlides;\n if (showDots && !infinite && additionalSlides > 0 && isInRightEnd(state)) {\n nextSlides = currentSlide - additionalSlides;\n }\n nextPosition = -(itemWidth * nextSlides);\n } else if (nextMaximumSlides < 0 && currentSlide !== 0) {\n // prevent oversliding.\n // it means the user has almost scrolling over to what we have.\n // if true, then we go back to the first slide.\n // this is not for infinite mode as infinite mode always has items to go back to.\n nextSlides = 0;\n nextPosition = 0;\n } else {\n nextSlides = undefined;\n nextPosition = undefined;\n }\n return {\n nextSlides,\n nextPosition\n };\n}\n\nexport { populatePreviousSlides };\n","import { CarouselInternalState, CarouselProps, Direction } from \"../types\";\n\n// this is to get the values for handling onTouchMove / onMouseMove;\nfunction populateSlidesOnMouseTouchMove(\n state: CarouselInternalState,\n props: CarouselProps,\n initialX: number,\n lastX: number,\n clientX: number,\n transformPlaceHolder: number\n): {\n direction?: Direction;\n nextPosition: number | undefined;\n canContinue: boolean;\n} {\n const { itemWidth, slidesToShow, totalItems, currentSlide } = state;\n const { infinite } = props;\n let canContinue = false; // it will be true if we have slides to slide to.\n let direction: Direction; // either 'left' or 'right'\n let nextPosition;\n // making sure we have items to slide back to, prevent oversliding.\n const slidesHavePassedRight = Math.round((initialX - lastX) / itemWidth);\n const slidesHavePassedLeft = Math.round((lastX - initialX) / itemWidth);\n const isMovingRight = initialX > clientX;\n const isMovingLeft = clientX > initialX;\n if (isMovingRight) {\n const isAboutToOverSlide = !(slidesHavePassedRight <= slidesToShow);\n if (!isAboutToOverSlide) {\n direction = \"right\";\n const translateXLimit = Math.abs(\n -(itemWidth * (totalItems - slidesToShow))\n );\n const nextTranslate = transformPlaceHolder - (lastX - clientX);\n const isLastSlide = currentSlide === totalItems - slidesToShow;\n if (\n Math.abs(nextTranslate) <= translateXLimit ||\n (isLastSlide && infinite)\n ) {\n nextPosition = nextTranslate;\n canContinue = true;\n }\n }\n }\n if (isMovingLeft) {\n const isAboutToOverSlide = !(slidesHavePassedLeft <= slidesToShow);\n if (!isAboutToOverSlide) {\n direction = \"left\";\n const nextTranslate = transformPlaceHolder + (clientX - lastX);\n const isFirstSlide = currentSlide === 0;\n if (nextTranslate <= 0 || (isFirstSlide && infinite)) {\n canContinue = true;\n nextPosition = nextTranslate;\n }\n }\n }\n return {\n direction,\n nextPosition,\n canContinue\n };\n}\n\nexport { populateSlidesOnMouseTouchMove };\n","import Carousel from \"./Carousel\";\n\nexport default Carousel;\n","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./styles.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./styles.css\";\n export default content && content.locals ? content.locals : undefined;\n","import styled from 'styled-components';\nimport { defaultAccentColor } from '../../constants';\nimport { VideoReviewContainer } from '../review-card/review-card.styles';\n\nexport const Root = styled.div<{ $accentColor?: string }>`\n padding-bottom: 3px;\n position: relative;\n width: 100%;\n height: fit-content;\n\n .react-multi-carousel-dot-list {\n justify-content: center !important;\n left: 0;\n padding: 0 16px;\n }\n\n .react-multi-carousel-dot {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 1 auto;\n\n button {\n border: none;\n background: ${({ theme }) => theme.colors.navigationDot};\n }\n\n &:first-child,\n &:last-child {\n padding: 1px;\n button {\n width: 10px;\n height: 10px;\n }\n }\n }\n\n .react-multi-carousel-dot--active {\n button {\n background: ${({ theme }) => theme.colors.navigationDotActive};\n }\n }\n\n .react-multi-carousel-item {\n padding-bottom: 15px;\n\n div {\n transition: 0.4s opacity ease-in-out;\n opacity: 0;\n }\n\n &--active {\n div {\n opacity: 1;\n }\n }\n }\n\n .carousel-translate-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n transition: transform 0.25s linear;\n width: 100%;\n transform: none !important;\n border-radius: 32px;\n overflow: hidden !important;\n }\n\n .carousel-translate-wrapper button {\n width: 100% !important;\n border-radius: 0 !important;\n margin: 0 !important;\n height: 2px !important;\n padding: 7px 0;\n position: relative;\n background: unset;\n }\n\n .carousel-translate-wrapper button::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 2px;\n top: 50%;\n transform: translateY(-50%);\n\n background: ${({ theme }) => theme.colors.carouselSwitcherBg};\n transition: background 0.25s ease-out;\n }\n\n .react-multi-carousel-dot--active button::after {\n background: ${({ $accentColor }) => $accentColor || defaultAccentColor};\n transition: background 0.25s ease-out;\n }\n\n .react-multi-carousel-dot button:hover:active {\n background: unset;\n }\n\n .react-multi-carousel-dot:first-child {\n padding: 0;\n }\n\n .react-multi-carousel-dot:last-child {\n padding: 0;\n }\n\n .react-multi-carousel-item div {\n opacity: 1;\n transition: none;\n }\n\n .react-multi-carousel-list {\n mask-image: linear-gradient(90deg, transparent, red 10%, red 90%, transparent);\n width: 100%;\n }\n\n @media screen and (min-width: 1536px) {\n #widget-root .react-multi-carousel-list {\n mask-image: linear-gradient(90deg, transparent, red 5%, red 95%, transparent);\n }\n }\n\n ${VideoReviewContainer} {\n position: absolute;\n top: 0;\n left: 0;\n video {\n min-height: unset;\n }\n }\n`;\n\nexport const ChevronButton = styled.div<{ $right?: boolean }>`\n width: 40px;\n height: 40px;\n cursor: pointer;\n position: absolute;\n top: 50%;\n transform: translateY(-50%) translateY(-15px) ${({ $right }) => ($right ? 'scaleX(-1)' : '')};\n z-index: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: 999px;\n background: ${({ theme }) => theme.colors.chevronBackground};\n backdrop-filter: blur(10px);\n\n ${({ $right }) => ($right ? 'right: 8px' : 'left:8px')};\n\n @media screen and (max-width: 700px) {\n ${({ $right }) => ($right ? 'right: 5px' : 'left:5px')};\n }\n\n transition: all 0.15s;\n\n &:hover {\n opacity: 0.6;\n }\n`;\n","import React, { useEffect } from 'react';\nimport Carousel from '../carousel';\nimport 'react-multi-carousel/lib/styles.css';\nimport { ReviewCard } from '../review-card/review-card.component';\nimport { ChevronButton, Root } from './reviews-carousel.styles';\nimport { ReviewType } from '../../types/review.type';\n\nconst partialVisibilityGutter = 80;\nlet loaded = false;\n\nexport const ReviewsCarouselComponent = ({\n items,\n autoplay,\n accentColor,\n aiHighlight,\n isProPlan,\n isWidget,\n waitUntilPageLoad,\n}: {\n items?: ReviewType[];\n autoplay: boolean;\n accentColor?: string;\n aiHighlight?: boolean;\n isProPlan?: boolean;\n isWidget?: boolean;\n waitUntilPageLoad?: boolean;\n}) => {\n const [hovered, setIsHovered] = React.useState(false);\n const [isPageLoaded, setIsPageLoaded] = React.useState(loaded);\n\n useEffect(() => {\n if (waitUntilPageLoad && !loaded) {\n window.addEventListener('load', () => {\n setIsPageLoaded(true);\n loaded = true;\n });\n } else {\n setIsPageLoaded(true);\n }\n }, []);\n\n return (\n setIsHovered(true)} onMouseLeave={() => setIsHovered(false)}>\n 8 ? 5000 : 3000}\n infinite\n responsive={responsive}\n renderButtonGroupOutside\n customButtonGroup={}\n arrows={false}\n showDots\n renderDotsOutside\n centerMode\n partialVisible\n slidesToSlide={items?.length > 8 ? null : 1}\n beforeChange={() => {\n document.dispatchEvent(new Event('hr-carousel-change'));\n }}\n >\n {items\n ? items.map((el, index) => (\n \n ))\n : [\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ]}\n \n \n );\n};\n\nconst responsive = {\n xxLarge: {\n breakpoint: {\n max: 100000,\n min: 2200,\n },\n items: 6,\n partialVisibilityGutter,\n },\n xLarge: {\n breakpoint: {\n max: 2200,\n min: 1900,\n },\n items: 5,\n partialVisibilityGutter,\n },\n large: {\n breakpoint: {\n max: 1900,\n min: 1400,\n },\n items: 4,\n partialVisibilityGutter,\n },\n desktop: {\n breakpoint: {\n max: 1400,\n min: 1024,\n },\n items: 3,\n partialVisibilityGutter,\n },\n tablet: {\n breakpoint: {\n max: 1024,\n min: 700,\n },\n items: 2,\n partialVisibilityGutter: 60,\n },\n mobile: {\n breakpoint: {\n max: 700,\n min: 0,\n },\n items: 1,\n partialVisibilityGutter: 40,\n },\n};\n\nconst ButtonGroup = ({ next, previous }: { next?: () => void; previous?: () => void }) => {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ReviewsCarouselComponent;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./revicons.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./revicons.ttf\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"./revicons.eot\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@font-face{font-family:\"revicons\";fallback:fallback;src:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format('woff'),url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format('ttf'),url(${___CSS_LOADER_URL_REPLACEMENT_2___}) format('ttf')}.react-multi-carousel-list{display:flex;align-items:center;overflow:hidden;position:relative}.react-multi-carousel-track{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;position:relative;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform,transition}.react-multiple-carousel__arrow{position:absolute;outline:0;transition:all .5s;border-radius:35px;z-index:1000;border:0;background:rgba(0,0,0,0.5);min-width:43px;min-height:43px;opacity:1;cursor:pointer}.react-multiple-carousel__arrow:hover{background:rgba(0,0,0,0.8)}.react-multiple-carousel__arrow::before{font-size:20px;color:#fff;display:block;font-family:revicons;text-align:center;z-index:2;position:relative}.react-multiple-carousel__arrow:disabled{cursor:default;background:rgba(0,0,0,0.5)}.react-multiple-carousel__arrow--left{left:calc(4% + 1px)}.react-multiple-carousel__arrow--left::before{content:\"\\\\e824\"}.react-multiple-carousel__arrow--right{right:calc(4% + 1px)}.react-multiple-carousel__arrow--right::before{content:\"\\\\e825\"}.react-multi-carousel-dot-list{position:absolute;bottom:0;display:flex;left:0;right:0;justify-content:center;margin:auto;padding:0;margin:0;list-style:none;text-align:center}.react-multi-carousel-dot button{display:inline-block;width:12px;height:12px;border-radius:50%;opacity:1;padding:5px 5px 5px 5px;box-shadow:none;transition:background .5s;border-width:2px;border-style:solid;border-color:grey;padding:0;margin:0;margin-right:6px;outline:0;cursor:pointer}.react-multi-carousel-dot button:hover:active{background:#080808}.react-multi-carousel-dot--active button{background:#080808}.react-multi-carousel-item{transform-style:preserve-3d;backface-visibility:hidden}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.react-multi-carousel-item{flex-shrink:0 !important}.react-multi-carousel-track{overflow:visible !important}}[dir='rtl'].react-multi-carousel-list{direction:rtl}.rtl.react-multiple-carousel__arrow--right{right:auto;left:calc(4% + 1px)}.rtl.react-multiple-carousel__arrow--right::before{content:\"\\\\e824\"}.rtl.react-multiple-carousel__arrow--left{left:auto;right:calc(4% + 1px)}.rtl.react-multiple-carousel__arrow--left::before{content:\"\\\\e825\"}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/react-multi-carousel/lib/styles.css\"],\"names\":[],\"mappings\":\"AAAA,WAAW,sBAAsB,CAAC,iBAAiB,CAAC,sKAAiH,CAAC,2BAA2B,YAAY,CAAC,kBAAkB,CAAC,eAAe,CAAC,iBAAiB,CAAC,4BAA4B,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,gCAAgC,CAAC,gCAAgC,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,cAAc,CAAC,sCAAsC,0BAA0B,CAAC,wCAAwC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,CAAC,yCAAyC,cAAc,CAAC,0BAA0B,CAAC,sCAAsC,mBAAmB,CAAC,8CAA8C,eAAe,CAAC,uCAAuC,oBAAoB,CAAC,+CAA+C,eAAe,CAAC,+BAA+B,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,iCAAiC,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,uBAAuB,CAAC,eAAe,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,cAAc,CAAC,8CAA8C,kBAAkB,CAAC,yCAAyC,kBAAkB,CAAC,2BAA2B,2BAA2B,CAAC,0BAA0B,CAAC,mEAAmE,2BAA2B,wBAAwB,CAAC,4BAA4B,2BAA2B,CAAC,CAAC,sCAAsC,aAAa,CAAC,2CAA2C,UAAU,CAAC,mBAAmB,CAAC,mDAAmD,eAAe,CAAC,0CAA0C,SAAS,CAAC,oBAAoB,CAAC,kDAAkD,eAAe\",\"sourcesContent\":[\"@font-face{font-family:\\\"revicons\\\";fallback:fallback;src:url(\\\"./revicons.woff\\\") format('woff'),url(\\\"./revicons.ttf\\\") format('ttf'),url(\\\"./revicons.eot\\\") format('ttf')}.react-multi-carousel-list{display:flex;align-items:center;overflow:hidden;position:relative}.react-multi-carousel-track{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;position:relative;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform,transition}.react-multiple-carousel__arrow{position:absolute;outline:0;transition:all .5s;border-radius:35px;z-index:1000;border:0;background:rgba(0,0,0,0.5);min-width:43px;min-height:43px;opacity:1;cursor:pointer}.react-multiple-carousel__arrow:hover{background:rgba(0,0,0,0.8)}.react-multiple-carousel__arrow::before{font-size:20px;color:#fff;display:block;font-family:revicons;text-align:center;z-index:2;position:relative}.react-multiple-carousel__arrow:disabled{cursor:default;background:rgba(0,0,0,0.5)}.react-multiple-carousel__arrow--left{left:calc(4% + 1px)}.react-multiple-carousel__arrow--left::before{content:\\\"\\\\e824\\\"}.react-multiple-carousel__arrow--right{right:calc(4% + 1px)}.react-multiple-carousel__arrow--right::before{content:\\\"\\\\e825\\\"}.react-multi-carousel-dot-list{position:absolute;bottom:0;display:flex;left:0;right:0;justify-content:center;margin:auto;padding:0;margin:0;list-style:none;text-align:center}.react-multi-carousel-dot button{display:inline-block;width:12px;height:12px;border-radius:50%;opacity:1;padding:5px 5px 5px 5px;box-shadow:none;transition:background .5s;border-width:2px;border-style:solid;border-color:grey;padding:0;margin:0;margin-right:6px;outline:0;cursor:pointer}.react-multi-carousel-dot button:hover:active{background:#080808}.react-multi-carousel-dot--active button{background:#080808}.react-multi-carousel-item{transform-style:preserve-3d;backface-visibility:hidden}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.react-multi-carousel-item{flex-shrink:0 !important}.react-multi-carousel-track{overflow:visible !important}}[dir='rtl'].react-multi-carousel-list{direction:rtl}.rtl.react-multiple-carousel__arrow--right{right:auto;left:calc(4% + 1px)}.rtl.react-multiple-carousel__arrow--right::before{content:\\\"\\\\e824\\\"}.rtl.react-multiple-carousel__arrow--left{left:auto;right:calc(4% + 1px)}.rtl.react-multiple-carousel__arrow--left::before{content:\\\"\\\\e825\\\"}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};"],"names":["getClones","slidesToShow","childrenArr","length","slice","getInitialSlideInInfiniteMode","getPartialVisibilityGutter","responsive","partialVisible","serverSideDeviceType","clientSideDeviceType","gutter","deviceType","partialVisibilityGutter","paritialVisibilityGutter","notEnoughChildren","state","totalItems","getInitialState","props","domLoaded","containerWidth","itemWidth","ssr","partialVisbile","flexBisis","domFullyLoaded","Boolean","items","toFixed","getWidthFromDeviceType","shouldRenderOnSSR","shouldRenderAtAll","getIfSlideIsVisbile","index","currentSlide","isInRightEnd","_ref2","parsePosition","position","rtl","getTransform","transformPlaceHolder","centerMode","transform","currentTransform","infinite","getTransformForCenterMode","arguments","undefined","isRightEndReach","shouldRemoveRightGutter","baseTransform","getTransformForPartialVsibile","getSlidesToSlide","slidesToScroll","slidesToSlide","Object","keys","forEach","device","throttle","func","limit","setIsInThrottle","inThrottle","args","context","this","apply","setTimeout","isMouseMoveEvent","e","React","_ref","goToSlide","getState","showDots","customDot","dotListClass","children","toArray","numberOfDotsToShow","Math","ceil","nextSlidesTable","table","Array","fill","_","i","nextSlide","getOriginalCounterPart","now","getLookupTableForNextSlides","lookupTable","firstBeginningOfClones","firstEndOfClones","firstCount","secondBeginningOfClones","secondEndOfClones","secondCount","originalEnd","originalCounter","totalSlides","count","getOriginalIndexLookupTableByClones","currentSlides","isMaxExceeded","initialSlide","isMiddleValue","isEnd","endShift","className","concat","style","justifyContent","overflow","map","isActive","cloneIndex","maximumNextSlide","possibileNextSlides","active","key","onClick","carouselState","LeftArrow","customLeftArrow","previous","disabled","rtlClassName","type","RightArrow","customRightArrow","next","clones","itemClass","itemAriaLabel","console","warn","child","focusOnSelect","ariaLabel","flex","width","defaultTransitionDuration","defaultTransition","Carousel","constructor","super","containerRef","listRef","onResize","bind","handleDown","handleMove","handleOut","onKeyUp","handleEnter","transitionDuration","onMove","initialX","lastX","isAnimationAllowed","direction","initialY","isInThrottle","resetTotalItems","max","min","setState","setContainerAndItemWidth","setTransformDirectly","withAnimation","additionalTransfrom","current","setAnimationDirectly","animationAllowed","transition","customTransition","componentDidMount","setItemsToShow","window","addEventListener","keyBoardControl","autoPlay","setInterval","autoPlaySpeed","setClones","forResizing","resetCurrentSlide","correctItemsPosition","shouldCorrectItemPosition","item","breakpoint","widths","innerWidth","clientWidth","screenWidth","carouselList","from","document","getElementsByClassName","offsetWidth","round","getItemClientSideWidth","setToDomDirectly","nextTransform","value","componentDidUpdate","itemsToShowTimeout","clearTimeout","removeEventListener","clearInterval","clonesTimeout","correctClonesPosition","rewind","rewindBuffer","isInThrottleTimeout","resetAutoplayInterval","rewindWithAnimation","_ref3","isReachingTheEnd","isReachingTheStart","nextPosition","originalFirstSlide","checkClonesPosition","transformTimeout","slidesHavePassed","afterChange","beforeChange","nextSlides","nextMaximumSlides","populateNextSlides","previousSlide","shouldResetAutoplay","afterChangeTimeout","additionalSlides","populatePreviousSlides","afterChangeTimeout2","componentWillUnmount","afterChangeTimeout3","resetMoveStatus","getCords","_ref4","clientX","clientY","swipeable","draggable","touches","diffX","diffY","abs","canContinue","slidesHavePassedRight","slidesHavePassedLeft","isMovingLeft","translateXLimit","nextTranslate","isLastSlide","populateSlidesOnMouseTouchMove","shouldDisableOnMobile","shouldDisableOnDesktop","minimumTouchDrag","isInViewport","el","top","left","bottom","right","getBoundingClientRect","innerHeight","documentElement","clientHeight","isChildOfCarousel","Element","contains","target","keyCode","HTMLInputElement","pauseOnHover","slide","skipCallbacks","skipBeforeChange","skipAfterChange","renderLeftArrow","disbaled","renderRightArrow","renderButtonGroups","customButtonGroup","slideIndex","renderDotsList","Dots","renderCarouselItems","CarouselItems","render","arrows","renderArrowsWhenDisabled","removeArrowOnDeviceType","containerClass","sliderClass","renderDotsOutside","renderButtonGroupOutside","isLeftEndReach","isInLeftEnd","shouldShowArrows","indexOf","disableLeftArrow","disableRightArrow","dir","ref","onMouseMove","onMouseDown","onMouseUp","onMouseEnter","onMouseLeave","onTouchStart","onTouchMove","onTouchEnd","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","Root","styled","div","withConfig","displayName","componentId","theme","colors","navigationDot","navigationDotActive","carouselSwitcherBg","$accentColor","defaultAccentColor","VideoReviewContainer","ChevronButton","_ref5","$right","_ref6","chevronBackground","_ref7","_ref8","loaded","ReviewsCarouselComponent","autoplay","accentColor","aiHighlight","isProPlan","isWidget","waitUntilPageLoad","hovered","setIsHovered","isPageLoaded","setIsPageLoaded","useEffect","ButtonGroup","dispatchEvent","Event","ReviewCard","xxLarge","xLarge","large","desktop","tablet","mobile","xmlns","height","viewBox","d","stroke","strokeWidth","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","push","module","id","exports","url","String","__esModule","default","test","hash","needQuotes","replace"],"sourceRoot":""}