{"ast":null,"code":"import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport CarouselItem from './CarouselItem';\nimport { mapToCssModules } from './utils';\nvar SWIPE_THRESHOLD = 40;\n\nvar Carousel = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Carousel, _React$Component);\n\n function Carousel(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.handleKeyPress = _this.handleKeyPress.bind(_assertThisInitialized(_this));\n _this.renderItems = _this.renderItems.bind(_assertThisInitialized(_this));\n _this.hoverStart = _this.hoverStart.bind(_assertThisInitialized(_this));\n _this.hoverEnd = _this.hoverEnd.bind(_assertThisInitialized(_this));\n _this.handleTouchStart = _this.handleTouchStart.bind(_assertThisInitialized(_this));\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_assertThisInitialized(_this));\n _this.touchStartX = 0;\n _this.touchStartY = 0;\n _this.state = {\n activeIndex: _this.props.activeIndex,\n direction: 'right',\n indicatorClicked: false\n };\n return _this;\n }\n\n var _proto = Carousel.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n direction: this.state.direction\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Set up the cycle\n if (this.props.ride === 'carousel') {\n this.setInterval();\n } // TODO: move this to the specific carousel like bootstrap. Currently it will trigger ALL carousels on the page.\n\n\n document.addEventListener('keyup', this.handleKeyPress);\n };\n\n Carousel.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var newState = null;\n var activeIndex = prevState.activeIndex,\n direction = prevState.direction,\n indicatorClicked = prevState.indicatorClicked;\n\n if (nextProps.activeIndex !== activeIndex) {\n // Calculate the direction to turn\n if (nextProps.activeIndex === activeIndex + 1) {\n direction = 'right';\n } else if (nextProps.activeIndex === activeIndex - 1) {\n direction = 'left';\n } else if (nextProps.activeIndex < activeIndex) {\n direction = indicatorClicked ? 'left' : 'right';\n } else if (nextProps.activeIndex !== activeIndex) {\n direction = indicatorClicked ? 'right' : 'left';\n }\n\n newState = {\n activeIndex: nextProps.activeIndex,\n direction: direction,\n indicatorClicked: false\n };\n }\n\n return newState;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.activeIndex === this.state.activeIndex) return;\n this.setInterval(this.props);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.clearInterval();\n document.removeEventListener('keyup', this.handleKeyPress);\n };\n\n _proto.setInterval = function (_setInterval) {\n function setInterval() {\n return _setInterval.apply(this, arguments);\n }\n\n setInterval.toString = function () {\n return _setInterval.toString();\n };\n\n return setInterval;\n }(function (props) {\n if (props === void 0) {\n props = this.props;\n } // make sure not to have multiple intervals going...\n\n\n this.clearInterval();\n\n if (props.interval) {\n this.cycleInterval = setInterval(function () {\n props.next();\n }, parseInt(props.interval, 10));\n }\n });\n\n _proto.clearInterval = function (_clearInterval) {\n function clearInterval() {\n return _clearInterval.apply(this, arguments);\n }\n\n clearInterval.toString = function () {\n return _clearInterval.toString();\n };\n\n return clearInterval;\n }(function () {\n clearInterval(this.cycleInterval);\n });\n\n _proto.hoverStart = function hoverStart() {\n if (this.props.pause === 'hover') {\n this.clearInterval();\n }\n\n if (this.props.mouseEnter) {\n var _this$props;\n\n (_this$props = this.props).mouseEnter.apply(_this$props, arguments);\n }\n };\n\n _proto.hoverEnd = function hoverEnd() {\n if (this.props.pause === 'hover') {\n this.setInterval();\n }\n\n if (this.props.mouseLeave) {\n var _this$props2;\n\n (_this$props2 = this.props).mouseLeave.apply(_this$props2, arguments);\n }\n };\n\n _proto.handleKeyPress = function handleKeyPress(evt) {\n if (this.props.keyboard) {\n if (evt.keyCode === 37) {\n this.props.previous();\n } else if (evt.keyCode === 39) {\n this.props.next();\n }\n }\n };\n\n _proto.handleTouchStart = function handleTouchStart(e) {\n if (!this.props.enableTouch) {\n return;\n }\n\n this.touchStartX = e.changedTouches[0].screenX;\n this.touchStartY = e.changedTouches[0].screenY;\n };\n\n _proto.handleTouchEnd = function handleTouchEnd(e) {\n if (!this.props.enableTouch) {\n return;\n }\n\n var currentX = e.changedTouches[0].screenX;\n var currentY = e.changedTouches[0].screenY;\n var diffX = Math.abs(this.touchStartX - currentX);\n var diffY = Math.abs(this.touchStartY - currentY); // Don't swipe if Y-movement is bigger than X-movement\n\n if (diffX < diffY) {\n return;\n }\n\n if (diffX < SWIPE_THRESHOLD) {\n return;\n }\n\n if (currentX < this.touchStartX) {\n this.props.next();\n } else {\n this.props.previous();\n }\n };\n\n _proto.renderItems = function renderItems(carouselItems, className) {\n var _this2 = this;\n\n var slide = this.props.slide;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, carouselItems.map(function (item, index) {\n var isIn = index === _this2.state.activeIndex;\n return /*#__PURE__*/React.cloneElement(item, {\n in: isIn,\n slide: slide\n });\n }));\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n cssModule = _this$props3.cssModule,\n slide = _this$props3.slide,\n className = _this$props3.className;\n var outerClasses = mapToCssModules(classNames(className, 'carousel', slide && 'slide'), cssModule);\n var innerClasses = mapToCssModules(classNames('carousel-inner'), cssModule); // filter out booleans, null, or undefined\n\n var children = this.props.children.filter(function (child) {\n return child !== null && child !== undefined && typeof child !== 'boolean';\n });\n var slidesOnly = children.every(function (child) {\n return child.type === CarouselItem;\n }); // Rendering only slides\n\n if (slidesOnly) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd\n }, this.renderItems(children, innerClasses));\n } // Rendering slides and controls\n\n\n if (children[0] instanceof Array) {\n var _carouselItems = children[0];\n var _controlLeft = children[1];\n var _controlRight = children[2];\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd\n }, this.renderItems(_carouselItems, innerClasses), _controlLeft, _controlRight);\n } // Rendering indicators, slides and controls\n\n\n var indicators = children[0];\n\n var wrappedOnClick = function wrappedOnClick(e) {\n if (typeof indicators.props.onClickHandler === 'function') {\n _this3.setState({\n indicatorClicked: true\n }, function () {\n return indicators.props.onClickHandler(e);\n });\n }\n };\n\n var wrappedIndicators = /*#__PURE__*/React.cloneElement(indicators, {\n onClickHandler: wrappedOnClick\n });\n var carouselItems = children[1];\n var controlLeft = children[2];\n var controlRight = children[3];\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n }, wrappedIndicators, this.renderItems(carouselItems, innerClasses), controlLeft, controlRight);\n };\n\n return Carousel;\n}(React.Component);\n\nCarousel.propTypes = {\n // the current active slide of the carousel\n activeIndex: PropTypes.number,\n // a function which should advance the carousel to the next slide (via activeIndex)\n next: PropTypes.func.isRequired,\n // a function which should advance the carousel to the previous slide (via activeIndex)\n previous: PropTypes.func.isRequired,\n // controls if the left and right arrow keys should control the carousel\n keyboard: PropTypes.bool,\n\n /* If set to \"hover\", pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on\n * mouseleave. If set to false, hovering over the carousel won't pause it. (default: \"hover\")\n */\n pause: PropTypes.oneOf(['hover', false]),\n // Autoplays the carousel after the user manually cycles the first item. If \"carousel\", autoplays the carousel on load.\n // This is how bootstrap defines it... I would prefer a bool named autoplay or something...\n ride: PropTypes.oneOf(['carousel']),\n // the interval at which the carousel automatically cycles (default: 5000)\n // eslint-disable-next-line react/no-unused-prop-types\n interval: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.bool]),\n children: PropTypes.array,\n // called when the mouse enters the Carousel\n mouseEnter: PropTypes.func,\n // called when the mouse exits the Carousel\n mouseLeave: PropTypes.func,\n // controls whether the slide animation on the Carousel works or not\n slide: PropTypes.bool,\n cssModule: PropTypes.object,\n className: PropTypes.string,\n enableTouch: PropTypes.bool\n};\nCarousel.defaultProps = {\n interval: 5000,\n pause: 'hover',\n keyboard: true,\n slide: true,\n enableTouch: true\n};\nCarousel.childContextTypes = {\n direction: PropTypes.string\n};\nexport default Carousel;","map":{"version":3,"sources":["/app/node_modules/reactstrap/es/Carousel.js"],"names":["_assertThisInitialized","_inheritsLoose","React","PropTypes","classNames","CarouselItem","mapToCssModules","SWIPE_THRESHOLD","Carousel","_React$Component","props","_this","call","handleKeyPress","bind","renderItems","hoverStart","hoverEnd","handleTouchStart","handleTouchEnd","touchStartX","touchStartY","state","activeIndex","direction","indicatorClicked","_proto","prototype","getChildContext","componentDidMount","ride","setInterval","document","addEventListener","getDerivedStateFromProps","nextProps","prevState","newState","componentDidUpdate","prevProps","componentWillUnmount","clearInterval","removeEventListener","_setInterval","apply","arguments","toString","interval","cycleInterval","next","parseInt","_clearInterval","pause","mouseEnter","_this$props","mouseLeave","_this$props2","evt","keyboard","keyCode","previous","e","enableTouch","changedTouches","screenX","screenY","currentX","currentY","diffX","Math","abs","diffY","carouselItems","className","_this2","slide","createElement","map","item","index","isIn","cloneElement","in","render","_this3","_this$props3","cssModule","outerClasses","innerClasses","children","filter","child","undefined","slidesOnly","every","type","onMouseEnter","onMouseLeave","Array","_carouselItems","_controlLeft","_controlRight","indicators","wrappedOnClick","onClickHandler","setState","wrappedIndicators","controlLeft","controlRight","onTouchStart","onTouchEnd","Component","propTypes","number","func","isRequired","bool","oneOf","oneOfType","string","array","object","defaultProps","childContextTypes"],"mappings":"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","sourcesContent":["import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport CarouselItem from './CarouselItem';\nimport { mapToCssModules } from './utils';\nvar SWIPE_THRESHOLD = 40;\n\nvar Carousel = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Carousel, _React$Component);\n\n function Carousel(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.handleKeyPress = _this.handleKeyPress.bind(_assertThisInitialized(_this));\n _this.renderItems = _this.renderItems.bind(_assertThisInitialized(_this));\n _this.hoverStart = _this.hoverStart.bind(_assertThisInitialized(_this));\n _this.hoverEnd = _this.hoverEnd.bind(_assertThisInitialized(_this));\n _this.handleTouchStart = _this.handleTouchStart.bind(_assertThisInitialized(_this));\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_assertThisInitialized(_this));\n _this.touchStartX = 0;\n _this.touchStartY = 0;\n _this.state = {\n activeIndex: _this.props.activeIndex,\n direction: 'right',\n indicatorClicked: false\n };\n return _this;\n }\n\n var _proto = Carousel.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n direction: this.state.direction\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Set up the cycle\n if (this.props.ride === 'carousel') {\n this.setInterval();\n } // TODO: move this to the specific carousel like bootstrap. Currently it will trigger ALL carousels on the page.\n\n\n document.addEventListener('keyup', this.handleKeyPress);\n };\n\n Carousel.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var newState = null;\n var activeIndex = prevState.activeIndex,\n direction = prevState.direction,\n indicatorClicked = prevState.indicatorClicked;\n\n if (nextProps.activeIndex !== activeIndex) {\n // Calculate the direction to turn\n if (nextProps.activeIndex === activeIndex + 1) {\n direction = 'right';\n } else if (nextProps.activeIndex === activeIndex - 1) {\n direction = 'left';\n } else if (nextProps.activeIndex < activeIndex) {\n direction = indicatorClicked ? 'left' : 'right';\n } else if (nextProps.activeIndex !== activeIndex) {\n direction = indicatorClicked ? 'right' : 'left';\n }\n\n newState = {\n activeIndex: nextProps.activeIndex,\n direction: direction,\n indicatorClicked: false\n };\n }\n\n return newState;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.activeIndex === this.state.activeIndex) return;\n this.setInterval(this.props);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.clearInterval();\n document.removeEventListener('keyup', this.handleKeyPress);\n };\n\n _proto.setInterval = function (_setInterval) {\n function setInterval() {\n return _setInterval.apply(this, arguments);\n }\n\n setInterval.toString = function () {\n return _setInterval.toString();\n };\n\n return setInterval;\n }(function (props) {\n if (props === void 0) {\n props = this.props;\n }\n\n // make sure not to have multiple intervals going...\n this.clearInterval();\n\n if (props.interval) {\n this.cycleInterval = setInterval(function () {\n props.next();\n }, parseInt(props.interval, 10));\n }\n });\n\n _proto.clearInterval = function (_clearInterval) {\n function clearInterval() {\n return _clearInterval.apply(this, arguments);\n }\n\n clearInterval.toString = function () {\n return _clearInterval.toString();\n };\n\n return clearInterval;\n }(function () {\n clearInterval(this.cycleInterval);\n });\n\n _proto.hoverStart = function hoverStart() {\n if (this.props.pause === 'hover') {\n this.clearInterval();\n }\n\n if (this.props.mouseEnter) {\n var _this$props;\n\n (_this$props = this.props).mouseEnter.apply(_this$props, arguments);\n }\n };\n\n _proto.hoverEnd = function hoverEnd() {\n if (this.props.pause === 'hover') {\n this.setInterval();\n }\n\n if (this.props.mouseLeave) {\n var _this$props2;\n\n (_this$props2 = this.props).mouseLeave.apply(_this$props2, arguments);\n }\n };\n\n _proto.handleKeyPress = function handleKeyPress(evt) {\n if (this.props.keyboard) {\n if (evt.keyCode === 37) {\n this.props.previous();\n } else if (evt.keyCode === 39) {\n this.props.next();\n }\n }\n };\n\n _proto.handleTouchStart = function handleTouchStart(e) {\n if (!this.props.enableTouch) {\n return;\n }\n\n this.touchStartX = e.changedTouches[0].screenX;\n this.touchStartY = e.changedTouches[0].screenY;\n };\n\n _proto.handleTouchEnd = function handleTouchEnd(e) {\n if (!this.props.enableTouch) {\n return;\n }\n\n var currentX = e.changedTouches[0].screenX;\n var currentY = e.changedTouches[0].screenY;\n var diffX = Math.abs(this.touchStartX - currentX);\n var diffY = Math.abs(this.touchStartY - currentY); // Don't swipe if Y-movement is bigger than X-movement\n\n if (diffX < diffY) {\n return;\n }\n\n if (diffX < SWIPE_THRESHOLD) {\n return;\n }\n\n if (currentX < this.touchStartX) {\n this.props.next();\n } else {\n this.props.previous();\n }\n };\n\n _proto.renderItems = function renderItems(carouselItems, className) {\n var _this2 = this;\n\n var slide = this.props.slide;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, carouselItems.map(function (item, index) {\n var isIn = index === _this2.state.activeIndex;\n return /*#__PURE__*/React.cloneElement(item, {\n in: isIn,\n slide: slide\n });\n }));\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n cssModule = _this$props3.cssModule,\n slide = _this$props3.slide,\n className = _this$props3.className;\n var outerClasses = mapToCssModules(classNames(className, 'carousel', slide && 'slide'), cssModule);\n var innerClasses = mapToCssModules(classNames('carousel-inner'), cssModule); // filter out booleans, null, or undefined\n\n var children = this.props.children.filter(function (child) {\n return child !== null && child !== undefined && typeof child !== 'boolean';\n });\n var slidesOnly = children.every(function (child) {\n return child.type === CarouselItem;\n }); // Rendering only slides\n\n if (slidesOnly) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd\n }, this.renderItems(children, innerClasses));\n } // Rendering slides and controls\n\n\n if (children[0] instanceof Array) {\n var _carouselItems = children[0];\n var _controlLeft = children[1];\n var _controlRight = children[2];\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd\n }, this.renderItems(_carouselItems, innerClasses), _controlLeft, _controlRight);\n } // Rendering indicators, slides and controls\n\n\n var indicators = children[0];\n\n var wrappedOnClick = function wrappedOnClick(e) {\n if (typeof indicators.props.onClickHandler === 'function') {\n _this3.setState({\n indicatorClicked: true\n }, function () {\n return indicators.props.onClickHandler(e);\n });\n }\n };\n\n var wrappedIndicators = /*#__PURE__*/React.cloneElement(indicators, {\n onClickHandler: wrappedOnClick\n });\n var carouselItems = children[1];\n var controlLeft = children[2];\n var controlRight = children[3];\n return /*#__PURE__*/React.createElement(\"div\", {\n className: outerClasses,\n onMouseEnter: this.hoverStart,\n onMouseLeave: this.hoverEnd,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n }, wrappedIndicators, this.renderItems(carouselItems, innerClasses), controlLeft, controlRight);\n };\n\n return Carousel;\n}(React.Component);\n\nCarousel.propTypes = {\n // the current active slide of the carousel\n activeIndex: PropTypes.number,\n // a function which should advance the carousel to the next slide (via activeIndex)\n next: PropTypes.func.isRequired,\n // a function which should advance the carousel to the previous slide (via activeIndex)\n previous: PropTypes.func.isRequired,\n // controls if the left and right arrow keys should control the carousel\n keyboard: PropTypes.bool,\n\n /* If set to \"hover\", pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on\n * mouseleave. If set to false, hovering over the carousel won't pause it. (default: \"hover\")\n */\n pause: PropTypes.oneOf(['hover', false]),\n // Autoplays the carousel after the user manually cycles the first item. If \"carousel\", autoplays the carousel on load.\n // This is how bootstrap defines it... I would prefer a bool named autoplay or something...\n ride: PropTypes.oneOf(['carousel']),\n // the interval at which the carousel automatically cycles (default: 5000)\n // eslint-disable-next-line react/no-unused-prop-types\n interval: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.bool]),\n children: PropTypes.array,\n // called when the mouse enters the Carousel\n mouseEnter: PropTypes.func,\n // called when the mouse exits the Carousel\n mouseLeave: PropTypes.func,\n // controls whether the slide animation on the Carousel works or not\n slide: PropTypes.bool,\n cssModule: PropTypes.object,\n className: PropTypes.string,\n enableTouch: PropTypes.bool\n};\nCarousel.defaultProps = {\n interval: 5000,\n pause: 'hover',\n keyboard: true,\n slide: true,\n enableTouch: true\n};\nCarousel.childContextTypes = {\n direction: PropTypes.string\n};\nexport default Carousel;"]},"metadata":{},"sourceType":"module"}