You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

139 lines
5.1 KiB

  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = void 0;
  5. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
  6. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  7. var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
  8. var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
  9. var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
  10. var _react = _interopRequireDefault(require("react"));
  11. var _propTypes = _interopRequireDefault(require("prop-types"));
  12. var _classnames = _interopRequireDefault(require("classnames"));
  13. var _reactTransitionGroup = require("react-transition-group");
  14. var _utils = require("./utils");
  15. var CarouselItem =
  16. /*#__PURE__*/
  17. function (_React$Component) {
  18. (0, _inheritsLoose2.default)(CarouselItem, _React$Component);
  19. function CarouselItem(props) {
  20. var _this;
  21. _this = _React$Component.call(this, props) || this;
  22. _this.state = {
  23. startAnimation: false
  24. };
  25. _this.onEnter = _this.onEnter.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
  26. _this.onEntering = _this.onEntering.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
  27. _this.onExit = _this.onExit.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
  28. _this.onExiting = _this.onExiting.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
  29. _this.onExited = _this.onExited.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
  30. return _this;
  31. }
  32. var _proto = CarouselItem.prototype;
  33. _proto.onEnter = function onEnter(node, isAppearing) {
  34. this.setState({
  35. startAnimation: false
  36. });
  37. this.props.onEnter(node, isAppearing);
  38. };
  39. _proto.onEntering = function onEntering(node, isAppearing) {
  40. // getting this variable triggers a reflow
  41. var offsetHeight = node.offsetHeight;
  42. this.setState({
  43. startAnimation: true
  44. });
  45. this.props.onEntering(node, isAppearing);
  46. return offsetHeight;
  47. };
  48. _proto.onExit = function onExit(node) {
  49. this.setState({
  50. startAnimation: false
  51. });
  52. this.props.onExit(node);
  53. };
  54. _proto.onExiting = function onExiting(node) {
  55. this.setState({
  56. startAnimation: true
  57. });
  58. node.dispatchEvent(new CustomEvent('slide.bs.carousel'));
  59. this.props.onExiting(node);
  60. };
  61. _proto.onExited = function onExited(node) {
  62. node.dispatchEvent(new CustomEvent('slid.bs.carousel'));
  63. this.props.onExited(node);
  64. };
  65. _proto.render = function render() {
  66. var _this2 = this;
  67. var _this$props = this.props,
  68. isIn = _this$props.in,
  69. children = _this$props.children,
  70. cssModule = _this$props.cssModule,
  71. slide = _this$props.slide,
  72. Tag = _this$props.tag,
  73. className = _this$props.className,
  74. transitionProps = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["in", "children", "cssModule", "slide", "tag", "className"]);
  75. return _react.default.createElement(_reactTransitionGroup.Transition, (0, _extends2.default)({}, transitionProps, {
  76. enter: slide,
  77. exit: slide,
  78. in: isIn,
  79. onEnter: this.onEnter,
  80. onEntering: this.onEntering,
  81. onExit: this.onExit,
  82. onExiting: this.onExiting,
  83. onExited: this.onExited
  84. }), function (status) {
  85. var direction = _this2.context.direction;
  86. var isActive = status === _utils.TransitionStatuses.ENTERED || status === _utils.TransitionStatuses.EXITING;
  87. var directionClassName = (status === _utils.TransitionStatuses.ENTERING || status === _utils.TransitionStatuses.EXITING) && _this2.state.startAnimation && (direction === 'right' ? 'carousel-item-left' : 'carousel-item-right');
  88. var orderClassName = status === _utils.TransitionStatuses.ENTERING && (direction === 'right' ? 'carousel-item-next' : 'carousel-item-prev');
  89. var itemClasses = (0, _utils.mapToCssModules)((0, _classnames.default)(className, 'carousel-item', isActive && 'active', directionClassName, orderClassName), cssModule);
  90. return _react.default.createElement(Tag, {
  91. className: itemClasses
  92. }, children);
  93. });
  94. };
  95. return CarouselItem;
  96. }(_react.default.Component);
  97. CarouselItem.propTypes = (0, _objectSpread2.default)({}, _reactTransitionGroup.Transition.propTypes, {
  98. tag: _utils.tagPropType,
  99. in: _propTypes.default.bool,
  100. cssModule: _propTypes.default.object,
  101. children: _propTypes.default.node,
  102. slide: _propTypes.default.bool,
  103. className: _propTypes.default.string
  104. });
  105. CarouselItem.defaultProps = (0, _objectSpread2.default)({}, _reactTransitionGroup.Transition.defaultProps, {
  106. tag: 'div',
  107. timeout: _utils.TransitionTimeouts.Carousel,
  108. slide: true
  109. });
  110. CarouselItem.contextTypes = {
  111. direction: _propTypes.default.string
  112. };
  113. var _default = CarouselItem;
  114. exports.default = _default;