Initial commit
This commit is contained in:
416
node_modules/react-bootstrap/lib/Carousel.js
generated
vendored
Normal file
416
node_modules/react-bootstrap/lib/Carousel.js
generated
vendored
Normal file
@@ -0,0 +1,416 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = require("@babel/runtime-corejs2/helpers/interopRequireWildcard");
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.default = void 0;
|
||||
|
||||
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
|
||||
|
||||
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutPropertiesLoose"));
|
||||
|
||||
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inheritsLoose"));
|
||||
|
||||
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
||||
|
||||
var _classnames = _interopRequireDefault(require("classnames"));
|
||||
|
||||
var _react = _interopRequireWildcard(require("react"));
|
||||
|
||||
var _propTypes = _interopRequireDefault(require("prop-types"));
|
||||
|
||||
var _CarouselCaption = _interopRequireDefault(require("./CarouselCaption"));
|
||||
|
||||
var _CarouselItem = _interopRequireDefault(require("./CarouselItem"));
|
||||
|
||||
var _Glyphicon = _interopRequireDefault(require("./Glyphicon"));
|
||||
|
||||
var _SafeAnchor = _interopRequireDefault(require("./SafeAnchor"));
|
||||
|
||||
var _bootstrapUtils = require("./utils/bootstrapUtils");
|
||||
|
||||
var _ValidComponentChildren = _interopRequireDefault(require("./utils/ValidComponentChildren"));
|
||||
|
||||
// TODO: `slide` should be `animate`.
|
||||
// TODO: Use uncontrollable.
|
||||
var propTypes = {
|
||||
slide: _propTypes.default.bool,
|
||||
indicators: _propTypes.default.bool,
|
||||
|
||||
/**
|
||||
* The amount of time to delay between automatically cycling an item.
|
||||
* If `null`, carousel will not automatically cycle.
|
||||
*/
|
||||
interval: _propTypes.default.number,
|
||||
controls: _propTypes.default.bool,
|
||||
pauseOnHover: _propTypes.default.bool,
|
||||
wrap: _propTypes.default.bool,
|
||||
|
||||
/**
|
||||
* Callback fired when the active item changes.
|
||||
*
|
||||
* ```js
|
||||
* (eventKey: any, ?event: Object) => any
|
||||
* ```
|
||||
*
|
||||
* If this callback takes two or more arguments, the second argument will
|
||||
* be a persisted event object with `direction` set to the direction of the
|
||||
* transition.
|
||||
*/
|
||||
onSelect: _propTypes.default.func,
|
||||
onSlideEnd: _propTypes.default.func,
|
||||
activeIndex: _propTypes.default.number,
|
||||
defaultActiveIndex: _propTypes.default.number,
|
||||
direction: _propTypes.default.oneOf(['prev', 'next']),
|
||||
prevIcon: _propTypes.default.node,
|
||||
|
||||
/**
|
||||
* Label shown to screen readers only, can be used to show the previous element
|
||||
* in the carousel.
|
||||
* Set to null to deactivate.
|
||||
*/
|
||||
prevLabel: _propTypes.default.string,
|
||||
nextIcon: _propTypes.default.node,
|
||||
|
||||
/**
|
||||
* Label shown to screen readers only, can be used to show the next element
|
||||
* in the carousel.
|
||||
* Set to null to deactivate.
|
||||
*/
|
||||
nextLabel: _propTypes.default.string
|
||||
};
|
||||
var defaultProps = {
|
||||
slide: true,
|
||||
interval: 5000,
|
||||
pauseOnHover: true,
|
||||
wrap: true,
|
||||
indicators: true,
|
||||
controls: true,
|
||||
prevIcon: _react.default.createElement(_Glyphicon.default, {
|
||||
glyph: "chevron-left"
|
||||
}),
|
||||
prevLabel: 'Previous',
|
||||
nextIcon: _react.default.createElement(_Glyphicon.default, {
|
||||
glyph: "chevron-right"
|
||||
}),
|
||||
nextLabel: 'Next'
|
||||
};
|
||||
|
||||
var Carousel =
|
||||
/*#__PURE__*/
|
||||
function (_React$Component) {
|
||||
(0, _inheritsLoose2.default)(Carousel, _React$Component);
|
||||
|
||||
function Carousel(props, context) {
|
||||
var _this;
|
||||
|
||||
_this = _React$Component.call(this, props, context) || this;
|
||||
_this.handleMouseOver = _this.handleMouseOver.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
||||
_this.handleMouseOut = _this.handleMouseOut.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
||||
_this.handlePrev = _this.handlePrev.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
||||
_this.handleNext = _this.handleNext.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
||||
_this.handleItemAnimateOutEnd = _this.handleItemAnimateOutEnd.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
|
||||
var defaultActiveIndex = props.defaultActiveIndex;
|
||||
_this.state = {
|
||||
activeIndex: defaultActiveIndex != null ? defaultActiveIndex : 0,
|
||||
previousActiveIndex: null,
|
||||
direction: null
|
||||
};
|
||||
_this.isUnmounted = false;
|
||||
return _this;
|
||||
}
|
||||
|
||||
var _proto = Carousel.prototype;
|
||||
|
||||
_proto.componentDidMount = function componentDidMount() {
|
||||
this.waitForNext();
|
||||
};
|
||||
|
||||
_proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
||||
var activeIndex = this.getActiveIndex();
|
||||
|
||||
if (nextProps.activeIndex != null && nextProps.activeIndex !== activeIndex) {
|
||||
clearTimeout(this.timeout);
|
||||
this.setState({
|
||||
previousActiveIndex: activeIndex,
|
||||
direction: nextProps.direction != null ? nextProps.direction : this.getDirection(activeIndex, nextProps.activeIndex)
|
||||
});
|
||||
}
|
||||
|
||||
if (nextProps.activeIndex == null && this.state.activeIndex >= nextProps.children.length) {
|
||||
this.setState({
|
||||
activeIndex: 0,
|
||||
previousActiveIndex: null,
|
||||
direction: null
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
_proto.componentWillUnmount = function componentWillUnmount() {
|
||||
clearTimeout(this.timeout);
|
||||
this.isUnmounted = true;
|
||||
};
|
||||
|
||||
_proto.getActiveIndex = function getActiveIndex() {
|
||||
var activeIndexProp = this.props.activeIndex;
|
||||
return activeIndexProp != null ? activeIndexProp : this.state.activeIndex;
|
||||
};
|
||||
|
||||
_proto.getDirection = function getDirection(prevIndex, index) {
|
||||
if (prevIndex === index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return prevIndex > index ? 'prev' : 'next';
|
||||
};
|
||||
|
||||
_proto.handleItemAnimateOutEnd = function handleItemAnimateOutEnd() {
|
||||
var _this2 = this;
|
||||
|
||||
this.setState({
|
||||
previousActiveIndex: null,
|
||||
direction: null
|
||||
}, function () {
|
||||
_this2.waitForNext();
|
||||
|
||||
if (_this2.props.onSlideEnd) {
|
||||
_this2.props.onSlideEnd();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
_proto.handleMouseOut = function handleMouseOut() {
|
||||
if (this.isPaused) {
|
||||
this.play();
|
||||
}
|
||||
};
|
||||
|
||||
_proto.handleMouseOver = function handleMouseOver() {
|
||||
if (this.props.pauseOnHover) {
|
||||
this.pause();
|
||||
}
|
||||
};
|
||||
|
||||
_proto.handleNext = function handleNext(e) {
|
||||
var index = this.getActiveIndex() + 1;
|
||||
|
||||
var count = _ValidComponentChildren.default.count(this.props.children);
|
||||
|
||||
if (index > count - 1) {
|
||||
if (!this.props.wrap) {
|
||||
return;
|
||||
}
|
||||
|
||||
index = 0;
|
||||
}
|
||||
|
||||
this.select(index, e, 'next');
|
||||
};
|
||||
|
||||
_proto.handlePrev = function handlePrev(e) {
|
||||
var index = this.getActiveIndex() - 1;
|
||||
|
||||
if (index < 0) {
|
||||
if (!this.props.wrap) {
|
||||
return;
|
||||
}
|
||||
|
||||
index = _ValidComponentChildren.default.count(this.props.children) - 1;
|
||||
}
|
||||
|
||||
this.select(index, e, 'prev');
|
||||
}; // This might be a public API.
|
||||
|
||||
|
||||
_proto.pause = function pause() {
|
||||
this.isPaused = true;
|
||||
clearTimeout(this.timeout);
|
||||
}; // This might be a public API.
|
||||
|
||||
|
||||
_proto.play = function play() {
|
||||
this.isPaused = false;
|
||||
this.waitForNext();
|
||||
};
|
||||
|
||||
_proto.select = function select(index, e, direction) {
|
||||
clearTimeout(this.timeout); // TODO: Is this necessary? Seems like the only risk is if the component
|
||||
// unmounts while handleItemAnimateOutEnd fires.
|
||||
|
||||
if (this.isUnmounted) {
|
||||
return;
|
||||
}
|
||||
|
||||
var previousActiveIndex = this.props.slide ? this.getActiveIndex() : null;
|
||||
direction = direction || this.getDirection(previousActiveIndex, index);
|
||||
var onSelect = this.props.onSelect;
|
||||
|
||||
if (onSelect) {
|
||||
if (onSelect.length > 1) {
|
||||
// React SyntheticEvents are pooled, so we need to remove this event
|
||||
// from the pool to add a custom property. To avoid unnecessarily
|
||||
// removing objects from the pool, only do this when the listener
|
||||
// actually wants the event.
|
||||
if (e) {
|
||||
e.persist();
|
||||
e.direction = direction;
|
||||
} else {
|
||||
e = {
|
||||
direction: direction
|
||||
};
|
||||
}
|
||||
|
||||
onSelect(index, e);
|
||||
} else {
|
||||
onSelect(index);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.props.activeIndex == null && index !== previousActiveIndex) {
|
||||
if (this.state.previousActiveIndex != null) {
|
||||
// If currently animating don't activate the new index.
|
||||
// TODO: look into queueing this canceled call and
|
||||
// animating after the current animation has ended.
|
||||
return;
|
||||
}
|
||||
|
||||
this.setState({
|
||||
activeIndex: index,
|
||||
previousActiveIndex: previousActiveIndex,
|
||||
direction: direction
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
_proto.waitForNext = function waitForNext() {
|
||||
var _this$props = this.props,
|
||||
slide = _this$props.slide,
|
||||
interval = _this$props.interval,
|
||||
activeIndexProp = _this$props.activeIndex;
|
||||
|
||||
if (!this.isPaused && slide && interval && activeIndexProp == null) {
|
||||
this.timeout = setTimeout(this.handleNext, interval);
|
||||
}
|
||||
};
|
||||
|
||||
_proto.renderControls = function renderControls(properties) {
|
||||
var wrap = properties.wrap,
|
||||
children = properties.children,
|
||||
activeIndex = properties.activeIndex,
|
||||
prevIcon = properties.prevIcon,
|
||||
nextIcon = properties.nextIcon,
|
||||
bsProps = properties.bsProps,
|
||||
prevLabel = properties.prevLabel,
|
||||
nextLabel = properties.nextLabel;
|
||||
var controlClassName = (0, _bootstrapUtils.prefix)(bsProps, 'control');
|
||||
|
||||
var count = _ValidComponentChildren.default.count(children);
|
||||
|
||||
return [(wrap || activeIndex !== 0) && _react.default.createElement(_SafeAnchor.default, {
|
||||
key: "prev",
|
||||
className: (0, _classnames.default)(controlClassName, 'left'),
|
||||
onClick: this.handlePrev
|
||||
}, prevIcon, prevLabel && _react.default.createElement("span", {
|
||||
className: "sr-only"
|
||||
}, prevLabel)), (wrap || activeIndex !== count - 1) && _react.default.createElement(_SafeAnchor.default, {
|
||||
key: "next",
|
||||
className: (0, _classnames.default)(controlClassName, 'right'),
|
||||
onClick: this.handleNext
|
||||
}, nextIcon, nextLabel && _react.default.createElement("span", {
|
||||
className: "sr-only"
|
||||
}, nextLabel))];
|
||||
};
|
||||
|
||||
_proto.renderIndicators = function renderIndicators(children, activeIndex, bsProps) {
|
||||
var _this3 = this;
|
||||
|
||||
var indicators = [];
|
||||
|
||||
_ValidComponentChildren.default.forEach(children, function (child, index) {
|
||||
indicators.push(_react.default.createElement("li", {
|
||||
key: index,
|
||||
className: index === activeIndex ? 'active' : null,
|
||||
onClick: function onClick(e) {
|
||||
return _this3.select(index, e);
|
||||
}
|
||||
}), // Force whitespace between indicator elements. Bootstrap requires
|
||||
// this for correct spacing of elements.
|
||||
' ');
|
||||
});
|
||||
|
||||
return _react.default.createElement("ol", {
|
||||
className: (0, _bootstrapUtils.prefix)(bsProps, 'indicators')
|
||||
}, indicators);
|
||||
};
|
||||
|
||||
_proto.render = function render() {
|
||||
var _this4 = this;
|
||||
|
||||
var _this$props2 = this.props,
|
||||
slide = _this$props2.slide,
|
||||
indicators = _this$props2.indicators,
|
||||
controls = _this$props2.controls,
|
||||
wrap = _this$props2.wrap,
|
||||
prevIcon = _this$props2.prevIcon,
|
||||
prevLabel = _this$props2.prevLabel,
|
||||
nextIcon = _this$props2.nextIcon,
|
||||
nextLabel = _this$props2.nextLabel,
|
||||
className = _this$props2.className,
|
||||
children = _this$props2.children,
|
||||
props = (0, _objectWithoutPropertiesLoose2.default)(_this$props2, ["slide", "indicators", "controls", "wrap", "prevIcon", "prevLabel", "nextIcon", "nextLabel", "className", "children"]);
|
||||
var _this$state = this.state,
|
||||
previousActiveIndex = _this$state.previousActiveIndex,
|
||||
direction = _this$state.direction;
|
||||
|
||||
var _splitBsPropsAndOmit = (0, _bootstrapUtils.splitBsPropsAndOmit)(props, ['interval', 'pauseOnHover', 'onSelect', 'onSlideEnd', 'activeIndex', // Accessed via this.getActiveIndex().
|
||||
'defaultActiveIndex', 'direction']),
|
||||
bsProps = _splitBsPropsAndOmit[0],
|
||||
elementProps = _splitBsPropsAndOmit[1];
|
||||
|
||||
var activeIndex = this.getActiveIndex();
|
||||
var classes = (0, _extends2.default)({}, (0, _bootstrapUtils.getClassSet)(bsProps), {
|
||||
slide: slide
|
||||
});
|
||||
return _react.default.createElement("div", (0, _extends2.default)({}, elementProps, {
|
||||
className: (0, _classnames.default)(className, classes),
|
||||
onMouseOver: this.handleMouseOver,
|
||||
onMouseOut: this.handleMouseOut
|
||||
}), indicators && this.renderIndicators(children, activeIndex, bsProps), _react.default.createElement("div", {
|
||||
className: (0, _bootstrapUtils.prefix)(bsProps, 'inner')
|
||||
}, _ValidComponentChildren.default.map(children, function (child, index) {
|
||||
var active = index === activeIndex;
|
||||
var previousActive = slide && index === previousActiveIndex;
|
||||
return (0, _react.cloneElement)(child, {
|
||||
active: active,
|
||||
index: index,
|
||||
animateOut: previousActive,
|
||||
animateIn: active && previousActiveIndex != null && slide,
|
||||
direction: direction,
|
||||
onAnimateOutEnd: previousActive ? _this4.handleItemAnimateOutEnd : null
|
||||
});
|
||||
})), controls && this.renderControls({
|
||||
wrap: wrap,
|
||||
children: children,
|
||||
activeIndex: activeIndex,
|
||||
prevIcon: prevIcon,
|
||||
prevLabel: prevLabel,
|
||||
nextIcon: nextIcon,
|
||||
nextLabel: nextLabel,
|
||||
bsProps: bsProps
|
||||
}));
|
||||
};
|
||||
|
||||
return Carousel;
|
||||
}(_react.default.Component);
|
||||
|
||||
Carousel.propTypes = propTypes;
|
||||
Carousel.defaultProps = defaultProps;
|
||||
Carousel.Caption = _CarouselCaption.default;
|
||||
Carousel.Item = _CarouselItem.default;
|
||||
|
||||
var _default = (0, _bootstrapUtils.bsClass)('carousel', Carousel);
|
||||
|
||||
exports.default = _default;
|
||||
module.exports = exports["default"];
|
||||
Reference in New Issue
Block a user