{"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":["/home/sonia/VisualStudioCode/Poryecto-Propio/Proyecto-React-Firebase/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"}