UNPKG

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