UNPKG

antd

Version:

An enterprise-class UI design language and React-based implementation

148 lines (120 loc) 4.96 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var React = _interopRequireWildcard(_react); var _debounce = require('lodash/debounce'); var _debounce2 = _interopRequireDefault(_debounce); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // matchMedia polyfill for // https://github.com/WickyNilliams/enquire.js/issues/82 if (typeof window !== 'undefined') { var matchMediaPolyfill = function matchMediaPolyfill(mediaQuery) { return { media: mediaQuery, matches: false, addListener: function addListener() {}, removeListener: function removeListener() {} }; }; window.matchMedia = window.matchMedia || matchMediaPolyfill; } // Use require over import (will be lifted up) // make sure matchMedia polyfill run before require('react-slick') // Fix https://github.com/ant-design/ant-design/issues/6560 // Fix https://github.com/ant-design/ant-design/issues/3308 var SlickCarousel = require('react-slick')['default']; var Carousel = function (_React$Component) { (0, _inherits3['default'])(Carousel, _React$Component); function Carousel(props) { (0, _classCallCheck3['default'])(this, Carousel); var _this = (0, _possibleConstructorReturn3['default'])(this, (Carousel.__proto__ || Object.getPrototypeOf(Carousel)).call(this, props)); _this.onWindowResized = function () { // Fix https://github.com/ant-design/ant-design/issues/2550 var autoplay = _this.props.autoplay; if (autoplay && _this.slick && _this.slick.innerSlider && _this.slick.innerSlider.autoPlay) { _this.slick.innerSlider.autoPlay(); } }; _this.saveSlick = function (node) { _this.slick = node; }; _this.onWindowResized = (0, _debounce2['default'])(_this.onWindowResized, 500, { leading: false }); return _this; } (0, _createClass3['default'])(Carousel, [{ key: 'componentDidMount', value: function componentDidMount() { var autoplay = this.props.autoplay; if (autoplay) { window.addEventListener('resize', this.onWindowResized); } // https://github.com/ant-design/ant-design/issues/7191 this.innerSlider = this.slick && this.slick.innerSlider; } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { var autoplay = this.props.autoplay; if (autoplay) { window.removeEventListener('resize', this.onWindowResized); this.onWindowResized.cancel(); } } }, { key: 'next', value: function next() { this.slick.slickNext(); } }, { key: 'prev', value: function prev() { this.slick.slickPrev(); } }, { key: 'goTo', value: function goTo(slide) { this.slick.slickGoTo(slide); } }, { key: 'render', value: function render() { var props = (0, _extends3['default'])({}, this.props); if (props.effect === 'fade') { props.fade = true; } var className = props.prefixCls; if (props.vertical) { className = className + ' ' + className + '-vertical'; } return React.createElement( 'div', { className: className }, React.createElement(SlickCarousel, (0, _extends3['default'])({ ref: this.saveSlick }, props)) ); } }]); return Carousel; }(React.Component); exports['default'] = Carousel; Carousel.defaultProps = { dots: true, arrows: false, prefixCls: 'ant-carousel', draggable: false }; module.exports = exports['default'];