{"version":3,"sources":["webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useUpdateEffect.js","webpack://gatsby-starter-default/./node_modules/@restart/hooks/esm/useTimeout.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/CarouselCaption.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/CarouselItem.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/ElementChildren.js","webpack://gatsby-starter-default/./node_modules/react-bootstrap/esm/Carousel.js","webpack://gatsby-starter-default/./src/components/Carousel/index.tsx","webpack://gatsby-starter-default/./src/components/PriceCard/utils.ts","webpack://gatsby-starter-default/./src/components/PriceCard/index.tsx","webpack://gatsby-starter-default/./src/components/PriceSwitch/index.tsx"],"names":["fn","deps","isFirst","useRef","useEffect","current","MAX_DELAY_MS","Math","pow","setChainedTimeout","handleRef","timeoutAtMs","delayMs","Date","now","setTimeout","useTimeout","isMounted","useMounted","useWillUnmount","clearTimeout","useMemo","clear","set","CarouselItem","_ref","ref","_ref$as","as","Component","bsPrefix","children","className","props","finalClassName","displayName","map","func","index","child","propTypes","slide","fade","controls","indicators","activeIndex","onSelect","onSlide","onSlid","interval","keyboard","pause","wrap","touch","prevIcon","prevLabel","nextIcon","nextLabel","defaultProps","defaultActiveIndex","CarouselFunc","uncontrolledProps","_useUncontrolled","_useUncontrolled$as","onKeyDown","onMouseOver","onMouseOut","onTouchStart","onTouchMove","onTouchEnd","prefix","nextDirectionRef","_useState","useState","direction","setDirection","_useState2","paused","setPaused","_useState3","isSliding","setIsSliding","_useState4","renderedActiveIndex","setRenderedActiveIndex","activeChildInterval","numChildren","forEach","activeChildIntervalRef","useCommittedRef","prev","useCallback","event","nextActiveIndex","next","useEventCallback","elementRef","useImperativeHandle","element","nextWhenVisible","document","hidden","style","parentNode","elementStyle","getComputedStyle","display","visibility","isVisible","slideDirection","orderClassName","directionalClassName","handleEnter","node","triggerBrowserReflow","handleEntered","handleKeyDown","test","target","tagName","key","preventDefault","handleMouseOver","handleMouseOut","touchStartXRef","touchDeltaXRef","touchUnpauseTimeout","handleTouchStart","touches","clientX","handleTouchMove","length","handleTouchEnd","touchDeltaX","abs","undefined","shouldPlay","intervalHandleRef","_activeChildIntervalR","window","setInterval","visibilityState","clearInterval","indicatorOnClicks","Array","from","_","_child","onClick","isActive","Transition","in","onEnter","onEntered","addEndListener","transitionEndListener","status","SafeAnchor","Carousel","Caption","CarouselCaption","Item","header","controllerImgRight","controllerImgLeft","React","setActive","handleSwitch","ControllerLeft","ControllerRight","defaultSlideIndex","slides","priceFormat","currency","price","floatingDigits","Intl","NumberFormat","navigator","language","useGrouping","minimumFractionDigits","maximumFractionDigits","format","PriceCard","variant","packageSize","onActionBtnClick","customActionBtn","shine","lessonPrice","location","LocationContext","currencyRate","CurrencyContext","isSsr","DynamicContentOverlay","currencyCode","Button","size","cx","PriceSwitch","handleClick","e","currentTarget","getAttribute","parseInt","data-index","active"],"mappings":"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","file":"350cb3245cc5127ca3bbfbb87d9d1b5aaaa085cd-29d89e970497864ce82b.js","sourcesContent":["import { useEffect, useRef } from 'react';\n/**\n * Runs an effect only when the dependencies have changed, skipping the\n * initial \"on mount\" run. Caution, if the dependency list never changes,\n * the effect is **never run**\n *\n * ```ts\n * const ref = useRef(null);\n *\n * // focuses an element only if the focus changes, and not on mount\n * useUpdateEffect(() => {\n * const element = ref.current?.children[focusedIdx] as HTMLElement\n *\n * element?.focus()\n *\n * }, [focusedIndex])\n * ```\n * @param effect An effect to run on mount\n *\n * @category effects\n */\n\nfunction useUpdateEffect(fn, deps) {\n var isFirst = useRef(true);\n useEffect(function () {\n if (isFirst.current) {\n isFirst.current = false;\n return;\n }\n\n return fn();\n }, deps);\n}\n\nexport default useUpdateEffect;","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\n\nvar MAX_DELAY_MS = Math.pow(2, 31) - 1;\n\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n var delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(function () {\n return setChainedTimeout(handleRef, fn, timeoutAtMs);\n }, MAX_DELAY_MS);\n}\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n *
\n * {hello ?

Hello

: null}\n *
\n * );\n * ```\n */\n\n\nexport default function useTimeout() {\n var isMounted = useMounted(); // types are confused between node and web here IDK\n\n var handleRef = useRef();\n useWillUnmount(function () {\n return clearTimeout(handleRef.current);\n });\n return useMemo(function () {\n var clear = function clear() {\n return clearTimeout(handleRef.current);\n };\n\n function set(fn, delayMs) {\n if (delayMs === void 0) {\n delayMs = 0;\n }\n\n if (!isMounted()) return;\n clear();\n\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n\n return {\n set: set,\n clear: clear\n };\n }, []);\n}","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('carousel-caption');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nvar CarouselItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'div' : _ref$as,\n bsPrefix = _ref.bsPrefix,\n children = _ref.children,\n className = _ref.className,\n props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"bsPrefix\", \"children\", \"className\"]);\n\n var finalClassName = classNames(className, useBootstrapPrefix(bsPrefix, 'carousel-item'));\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n className: finalClassName\n }), children);\n});\nCarouselItem.displayName = 'CarouselItem';\nexport default CarouselItem;","import React from 'react';\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n var index = 0;\n return React.Children.map(children, function (child) {\n return /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child;\n });\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n var index = 0;\n React.Children.forEach(children, function (child) {\n if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n });\n}\n\nexport { map, forEach };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useUpdateEffect from '@restart/hooks/useUpdateEffect';\nimport useCommittedRef from '@restart/hooks/useCommittedRef';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport classNames from 'classnames';\nimport Transition from 'react-transition-group/Transition';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport CarouselCaption from './CarouselCaption';\nimport CarouselItem from './CarouselItem';\nimport { map, forEach } from './ElementChildren';\nimport SafeAnchor from './SafeAnchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nvar SWIPE_THRESHOLD = 40;\nvar propTypes = {\n /**\n * @default 'carousel'\n */\n bsPrefix: PropTypes.string,\n as: PropTypes.elementType,\n\n /**\n * Enables animation on the Carousel as it transitions between slides.\n */\n slide: PropTypes.bool,\n\n /** Animates slides with a crossfade animation instead of the default slide animation */\n fade: PropTypes.bool,\n\n /**\n * Show the Carousel previous and next arrows for changing the current slide\n */\n controls: PropTypes.bool,\n\n /**\n * Show a set of slide position indicators\n */\n indicators: PropTypes.bool,\n\n /**\n * Controls the current visible slide\n *\n * @controllable onSelect\n */\n activeIndex: PropTypes.number,\n\n /**\n * Callback fired when the active item changes.\n *\n * ```js\n * (eventKey: number, event: Object | null) => void\n * ```\n *\n * @controllable activeIndex\n */\n onSelect: PropTypes.func,\n\n /**\n * Callback fired when a slide transition starts.\n *\n * ```js\n * (eventKey: number, direction: 'left' | 'right') => void\n */\n onSlide: PropTypes.func,\n\n /**\n * Callback fired when a slide transition ends.\n *\n * ```js\n * (eventKey: number, direction: 'left' | 'right') => void\n */\n onSlid: PropTypes.func,\n\n /**\n * The amount of time to delay between automatically cycling an item. If `null`, carousel will not automatically cycle.\n */\n interval: PropTypes.number,\n\n /** Whether the carousel should react to keyboard events. */\n keyboard: PropTypes.bool,\n\n /**\n * If set to `\"hover\"`, pauses the cycling of the carousel on `mouseenter` and resumes the cycling of the carousel on `mouseleave`. If set to `false`, hovering over the carousel won't pause it.\n *\n * On touch-enabled devices, when set to `\"hover\"`, cycling will pause on `touchend` (once the user finished interacting with the carousel) for two intervals, before automatically resuming. Note that this is in addition to the above mouse behavior.\n */\n pause: PropTypes.oneOf(['hover', false]),\n\n /** Whether the carousel should cycle continuously or have hard stops. */\n wrap: PropTypes.bool,\n\n /**\n * Whether the carousel should support left/right swipe interactions on touchscreen devices.\n */\n touch: PropTypes.bool,\n\n /** Override the default button icon for the \"previous\" control */\n prevIcon: PropTypes.node,\n\n /**\n * Label shown to screen readers only, can be used to show the previous element\n * in the carousel.\n * Set to null to deactivate.\n */\n prevLabel: PropTypes.string,\n\n /** Override the default button icon for the \"next\" control */\n nextIcon: PropTypes.node,\n\n /**\n * Label shown to screen readers only, can be used to show the next element\n * in the carousel.\n * Set to null to deactivate.\n */\n nextLabel: PropTypes.string\n};\nvar defaultProps = {\n slide: true,\n fade: false,\n controls: true,\n indicators: true,\n defaultActiveIndex: 0,\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n wrap: true,\n touch: true,\n prevIcon: /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\",\n className: \"carousel-control-prev-icon\"\n }),\n prevLabel: 'Previous',\n nextIcon: /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\",\n className: \"carousel-control-next-icon\"\n }),\n nextLabel: 'Next'\n};\n\nfunction isVisible(element) {\n if (!element || !element.style || !element.parentNode || !element.parentNode.style) {\n return false;\n }\n\n var elementStyle = getComputedStyle(element);\n return elementStyle.display !== 'none' && elementStyle.visibility !== 'hidden' && getComputedStyle(element.parentNode).display !== 'none';\n}\n\nfunction CarouselFunc(uncontrolledProps, ref) {\n var _useUncontrolled = useUncontrolled(uncontrolledProps, {\n activeIndex: 'onSelect'\n }),\n _useUncontrolled$as = _useUncontrolled.as,\n Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,\n bsPrefix = _useUncontrolled.bsPrefix,\n slide = _useUncontrolled.slide,\n fade = _useUncontrolled.fade,\n controls = _useUncontrolled.controls,\n indicators = _useUncontrolled.indicators,\n activeIndex = _useUncontrolled.activeIndex,\n onSelect = _useUncontrolled.onSelect,\n onSlide = _useUncontrolled.onSlide,\n onSlid = _useUncontrolled.onSlid,\n interval = _useUncontrolled.interval,\n keyboard = _useUncontrolled.keyboard,\n onKeyDown = _useUncontrolled.onKeyDown,\n pause = _useUncontrolled.pause,\n onMouseOver = _useUncontrolled.onMouseOver,\n onMouseOut = _useUncontrolled.onMouseOut,\n wrap = _useUncontrolled.wrap,\n touch = _useUncontrolled.touch,\n onTouchStart = _useUncontrolled.onTouchStart,\n onTouchMove = _useUncontrolled.onTouchMove,\n onTouchEnd = _useUncontrolled.onTouchEnd,\n prevIcon = _useUncontrolled.prevIcon,\n prevLabel = _useUncontrolled.prevLabel,\n nextIcon = _useUncontrolled.nextIcon,\n nextLabel = _useUncontrolled.nextLabel,\n className = _useUncontrolled.className,\n children = _useUncontrolled.children,\n props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"slide\", \"fade\", \"controls\", \"indicators\", \"activeIndex\", \"onSelect\", \"onSlide\", \"onSlid\", \"interval\", \"keyboard\", \"onKeyDown\", \"pause\", \"onMouseOver\", \"onMouseOut\", \"wrap\", \"touch\", \"onTouchStart\", \"onTouchMove\", \"onTouchEnd\", \"prevIcon\", \"prevLabel\", \"nextIcon\", \"nextLabel\", \"className\", \"children\"]);\n\n var prefix = useBootstrapPrefix(bsPrefix, 'carousel');\n var nextDirectionRef = useRef(null);\n\n var _useState = useState('next'),\n direction = _useState[0],\n setDirection = _useState[1];\n\n var _useState2 = useState(false),\n paused = _useState2[0],\n setPaused = _useState2[1];\n\n var _useState3 = useState(false),\n isSliding = _useState3[0],\n setIsSliding = _useState3[1];\n\n var _useState4 = useState(activeIndex || 0),\n renderedActiveIndex = _useState4[0],\n setRenderedActiveIndex = _useState4[1];\n\n if (!isSliding && activeIndex !== renderedActiveIndex) {\n if (nextDirectionRef.current) {\n setDirection(nextDirectionRef.current);\n } else {\n setDirection((activeIndex || 0) > renderedActiveIndex ? 'next' : 'prev');\n }\n\n if (slide) {\n setIsSliding(true);\n }\n\n setRenderedActiveIndex(activeIndex || 0);\n }\n\n useEffect(function () {\n if (nextDirectionRef.current) {\n nextDirectionRef.current = null;\n }\n });\n var numChildren = 0;\n var activeChildInterval; // Iterate to grab all of the children's interval values\n // (and count them, too)\n\n forEach(children, function (child, index) {\n ++numChildren;\n\n if (index === activeIndex) {\n activeChildInterval = child.props.interval;\n }\n });\n var activeChildIntervalRef = useCommittedRef(activeChildInterval);\n var prev = useCallback(function (event) {\n if (isSliding) {\n return;\n }\n\n var nextActiveIndex = renderedActiveIndex - 1;\n\n if (nextActiveIndex < 0) {\n if (!wrap) {\n return;\n }\n\n nextActiveIndex = numChildren - 1;\n }\n\n nextDirectionRef.current = 'prev';\n\n if (onSelect) {\n onSelect(nextActiveIndex, event);\n }\n }, [isSliding, renderedActiveIndex, onSelect, wrap, numChildren]); // This is used in the setInterval, so it should not invalidate.\n\n var next = useEventCallback(function (event) {\n if (isSliding) {\n return;\n }\n\n var nextActiveIndex = renderedActiveIndex + 1;\n\n if (nextActiveIndex >= numChildren) {\n if (!wrap) {\n return;\n }\n\n nextActiveIndex = 0;\n }\n\n nextDirectionRef.current = 'next';\n\n if (onSelect) {\n onSelect(nextActiveIndex, event);\n }\n });\n var elementRef = useRef();\n useImperativeHandle(ref, function () {\n return {\n element: elementRef.current,\n prev: prev,\n next: next\n };\n }); // This is used in the setInterval, so it should not invalidate.\n\n var nextWhenVisible = useEventCallback(function () {\n if (!document.hidden && isVisible(elementRef.current)) {\n next();\n }\n });\n var slideDirection = direction === 'next' ? 'left' : 'right';\n useUpdateEffect(function () {\n if (slide) {\n // These callbacks will be handled by the callbacks.\n return;\n }\n\n if (onSlide) {\n onSlide(renderedActiveIndex, slideDirection);\n }\n\n if (onSlid) {\n onSlid(renderedActiveIndex, slideDirection);\n }\n }, [renderedActiveIndex]);\n var orderClassName = prefix + \"-item-\" + direction;\n var directionalClassName = prefix + \"-item-\" + slideDirection;\n var handleEnter = useCallback(function (node) {\n triggerBrowserReflow(node);\n\n if (onSlide) {\n onSlide(renderedActiveIndex, slideDirection);\n }\n }, [onSlide, renderedActiveIndex, slideDirection]);\n var handleEntered = useCallback(function () {\n setIsSliding(false);\n\n if (onSlid) {\n onSlid(renderedActiveIndex, slideDirection);\n }\n }, [onSlid, renderedActiveIndex, slideDirection]);\n var handleKeyDown = useCallback(function (event) {\n if (keyboard && !/input|textarea/i.test(event.target.tagName)) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n prev(event);\n return;\n\n case 'ArrowRight':\n event.preventDefault();\n next(event);\n return;\n\n default:\n }\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n }, [keyboard, onKeyDown, prev, next]);\n var handleMouseOver = useCallback(function (event) {\n if (pause === 'hover') {\n setPaused(true);\n }\n\n if (onMouseOver) {\n onMouseOver(event);\n }\n }, [pause, onMouseOver]);\n var handleMouseOut = useCallback(function (event) {\n setPaused(false);\n\n if (onMouseOut) {\n onMouseOut(event);\n }\n }, [onMouseOut]);\n var touchStartXRef = useRef(0);\n var touchDeltaXRef = useRef(0);\n var touchUnpauseTimeout = useTimeout();\n var handleTouchStart = useCallback(function (event) {\n touchStartXRef.current = event.touches[0].clientX;\n touchDeltaXRef.current = 0;\n\n if (pause === 'hover') {\n setPaused(true);\n }\n\n if (onTouchStart) {\n onTouchStart(event);\n }\n }, [pause, onTouchStart]);\n var handleTouchMove = useCallback(function (event) {\n if (event.touches && event.touches.length > 1) {\n touchDeltaXRef.current = 0;\n } else {\n touchDeltaXRef.current = event.touches[0].clientX - touchStartXRef.current;\n }\n\n if (onTouchMove) {\n onTouchMove(event);\n }\n }, [onTouchMove]);\n var handleTouchEnd = useCallback(function (event) {\n if (touch) {\n var touchDeltaX = touchDeltaXRef.current;\n\n if (Math.abs(touchDeltaX) > SWIPE_THRESHOLD) {\n if (touchDeltaX > 0) {\n prev(event);\n } else {\n next(event);\n }\n }\n }\n\n if (pause === 'hover') {\n touchUnpauseTimeout.set(function () {\n setPaused(false);\n }, interval || undefined);\n }\n\n if (onTouchEnd) {\n onTouchEnd(event);\n }\n }, [touch, pause, prev, next, touchUnpauseTimeout, interval, onTouchEnd]);\n var shouldPlay = interval != null && !paused && !isSliding;\n var intervalHandleRef = useRef();\n useEffect(function () {\n var _ref, _activeChildIntervalR;\n\n if (!shouldPlay) {\n return undefined;\n }\n\n intervalHandleRef.current = window.setInterval(document.visibilityState ? nextWhenVisible : next, (_ref = (_activeChildIntervalR = activeChildIntervalRef.current) != null ? _activeChildIntervalR : interval) != null ? _ref : undefined);\n return function () {\n if (intervalHandleRef.current !== null) {\n clearInterval(intervalHandleRef.current);\n }\n };\n }, [shouldPlay, next, activeChildIntervalRef, interval, nextWhenVisible]);\n var indicatorOnClicks = useMemo(function () {\n return indicators && Array.from({\n length: numChildren\n }, function (_, index) {\n return function (event) {\n if (onSelect) {\n onSelect(index, event);\n }\n };\n });\n }, [indicators, numChildren, onSelect]);\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: elementRef\n }, props, {\n onKeyDown: handleKeyDown,\n onMouseOver: handleMouseOver,\n onMouseOut: handleMouseOut,\n onTouchStart: handleTouchStart,\n onTouchMove: handleTouchMove,\n onTouchEnd: handleTouchEnd,\n className: classNames(className, prefix, slide && 'slide', fade && prefix + \"-fade\")\n }), indicators && /*#__PURE__*/React.createElement(\"ol\", {\n className: prefix + \"-indicators\"\n }, map(children, function (_child, index) {\n return /*#__PURE__*/React.createElement(\"li\", {\n key: index,\n className: index === renderedActiveIndex ? 'active' : undefined,\n onClick: indicatorOnClicks ? indicatorOnClicks[index] : undefined\n });\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: prefix + \"-inner\"\n }, map(children, function (child, index) {\n var isActive = index === renderedActiveIndex;\n return slide ? /*#__PURE__*/React.createElement(Transition, {\n in: isActive,\n onEnter: isActive ? handleEnter : undefined,\n onEntered: isActive ? handleEntered : undefined,\n addEndListener: transitionEndListener\n }, function (status) {\n return /*#__PURE__*/React.cloneElement(child, {\n className: classNames(child.props.className, isActive && status !== 'entered' && orderClassName, (status === 'entered' || status === 'exiting') && 'active', (status === 'entering' || status === 'exiting') && directionalClassName)\n });\n }) : /*#__PURE__*/React.cloneElement(child, {\n className: classNames(child.props.className, isActive && 'active')\n });\n })), controls && /*#__PURE__*/React.createElement(React.Fragment, null, (wrap || activeIndex !== 0) && /*#__PURE__*/React.createElement(SafeAnchor, {\n className: prefix + \"-control-prev\",\n onClick: prev\n }, prevIcon, prevLabel && /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\"\n }, prevLabel)), (wrap || activeIndex !== numChildren - 1) && /*#__PURE__*/React.createElement(SafeAnchor, {\n className: prefix + \"-control-next\",\n onClick: next\n }, nextIcon, nextLabel && /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only\"\n }, nextLabel))));\n}\n\nvar Carousel = /*#__PURE__*/React.forwardRef(CarouselFunc);\nCarousel.displayName = 'Carousel';\nCarousel.propTypes = propTypes;\nCarousel.defaultProps = defaultProps;\nCarousel.Caption = CarouselCaption;\nCarousel.Item = CarouselItem;\nexport default Carousel;","import React from 'react';\nimport BootstrapCarousel from 'react-bootstrap/Carousel';\n\ninterface IProps {\n defaultActiveIndex: number;\n header: (activeIndex: number, handleSwitch: (index: number) => void) => void;\n children: React.ReactNode[];\n controllerImgRight: React.ElementType;\n controllerImgLeft: React.ElementType;\n className?: string;\n}\n\nexport const Carousel = ({\n defaultActiveIndex,\n header,\n children,\n controllerImgRight,\n controllerImgLeft,\n className,\n}: IProps) => {\n const [activeIndex, setActive] = React.useState(defaultActiveIndex);\n const handleSwitch = React.useCallback((index) => {\n setActive(index);\n }, []);\n\n const ControllerLeft = controllerImgLeft;\n const ControllerRight = controllerImgRight;\n\n return (\n <>\n {header && header(activeIndex, handleSwitch)}\n }\n prevIcon={}\n nextLabel={null}\n prevLabel={null}\n onSelect={setActive}\n activeIndex={activeIndex}\n >\n {React.Children.map(children, (child, index) => (\n {child}\n ))}\n \n \n );\n};\n\nCarousel.defaultProps = {\n defaultSlideIndex: 0,\n slides: 0,\n header: null,\n};\n","export const priceFormat = (\n currency: string,\n price: number,\n floatingDigits: number,\n) =>\n new Intl.NumberFormat(navigator.language, {\n currency,\n style: 'currency',\n useGrouping: false,\n minimumFractionDigits: 0,\n maximumFractionDigits: floatingDigits,\n }).format(price);\n","import React from 'react';\nimport Button from 'react-bootstrap/Button';\nimport { isSsr } from 'utils/isSsr';\nimport cx from 'classnames';\nimport { DynamicContentOverlay } from 'components/DynamicContentOverlay';\nimport { LocationContext } from 'containers/Location/LocationContext';\nimport { CurrencyContext } from 'containers/Currency/CurrencyContext';\nimport { priceFormat } from './utils';\nimport './styles.scss';\n\ninterface IProps {\n variant: 'primary' | 'secondary' | 'danger';\n price: number;\n currency: string;\n packageSize: number;\n onActionBtnClick?: () => void;\n customActionBtn?: React.ReactNode;\n shine?: boolean;\n}\n\nexport const PriceCard = ({\n variant,\n price,\n currency,\n packageSize,\n onActionBtnClick,\n customActionBtn,\n shine,\n}: IProps) => {\n const lessonPrice = price / packageSize;\n const location = React.useContext(LocationContext);\n const currencyRate = React.useContext(CurrencyContext);\n\n return (\n
\n
\n {packageSize} {packageSize > 4 ? ' уроков' : 'урока'}\n
\n
\n {!isSsr && priceFormat(currency, price, 2)}\n
\n
\n {!isSsr && (\n <>\n {priceFormat(currency, lessonPrice, 2)} за урок\n \n )}\n
\n {currencyRate && (\n \n
\n примерно{' '}\n {priceFormat(location.currencyCode, price * currencyRate, 0)}\n
\n
\n )}\n {customActionBtn || (\n \n Записаться\n \n )}\n
\n );\n};\n","import React, { SyntheticEvent } from 'react';\nimport cx from 'classnames';\nimport './styles.scss';\n\ninterface IProps {\n activeIndex: number;\n onClick: (index: number) => void;\n}\n\nexport const PriceSwitch = ({ activeIndex, onClick }: IProps) => {\n const handleClick = React.useCallback(\n (e: SyntheticEvent) => {\n const index = e.currentTarget.getAttribute('data-index') as string;\n onClick(parseInt(index, 10));\n },\n [],\n );\n\n return (\n
\n \n Индивидуально-групповое\n
\n 60 минут\n \n \n Индивидуально-групповое\n
\n 120 минут\n \n \n Индивидуальное\n
\n 60 минут\n \n
\n );\n};\n"],"sourceRoot":""}