react-images
Version:
A mobile-friendly, highly customizable, carousel component for displaying media in ReactJS
112 lines (92 loc) • 3.77 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SlideUp = exports.Fade = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactTransitionGroup = require('react-transition-group');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var easing = 'cubic-bezier(0.23, 1, 0.32, 1)'; // easeOutQuint
var verticalOffset = 40;
// ==============================
// Fade
// ==============================
var Fade = function Fade(_ref) {
var Tag = _ref.component,
onEntered = _ref.onEntered,
onExited = _ref.onExited,
inProp = _ref.in,
originalProps = _ref.innerProps,
props = _objectWithoutProperties(_ref, ['component', 'onEntered', 'onExited', 'in', 'innerProps']);
var enter = 300;
var exit = 500;
var fadeStyle = {
transition: 'opacity 200ms',
opacity: 0
};
var fadeTransition = {
entering: { opacity: 0 },
entered: { opacity: 1 },
exiting: { opacity: 0, transitionDuration: exit + 'ms' }
};
return _react2.default.createElement(
_reactTransitionGroup.Transition,
{ appear: true, mountOnEnter: true, unmountOnExit: true, onEntered: onEntered, onExited: onExited, key: 'fade', 'in': inProp, timeout: { enter: enter, exit: exit } },
function (status) {
var innerProps = _extends({}, originalProps, {
style: _extends({}, fadeStyle, fadeTransition[status])
});
if (status === 'exited') return null;
return _react2.default.createElement(Tag, _extends({ innerProps: innerProps }, props));
}
);
};
// ==============================
// Slide Up
// ==============================
exports.Fade = Fade;
var SlideUp = function SlideUp(_ref2) {
var Tag = _ref2.component,
onEntered = _ref2.onEntered,
onExited = _ref2.onExited,
inProp = _ref2.in,
originalProps = _ref2.innerProps,
props = _objectWithoutProperties(_ref2, ['component', 'onEntered', 'onExited', 'in', 'innerProps']);
var enter = 300;
var exit = 500;
var restingTransform = 'translate3d(0, 0, 0)';
var slideStyle = {
transition: 'transform ' + enter + 'ms ' + easing + ', opacity ' + enter + 'ms ' + easing,
transform: restingTransform
};
var slideTransition = {
entering: {
opacity: 0,
transform: 'translate3d(0, ' + verticalOffset + 'px, 0) scale(0.9)'
},
entered: {
opacity: 1,
transform: restingTransform
},
exiting: {
opacity: 0,
transform: 'translate3d(0, ' + verticalOffset + 'px, 0) scale(0.9)',
transition: 'transform ' + exit + 'ms ' + easing + ', opacity ' + exit + 'ms ' + easing
}
};
return _react2.default.createElement(
_reactTransitionGroup.Transition,
{ appear: true, 'in': inProp, mountOnEnter: true, onEntered: onEntered, onExited: onExited, timeout: { enter: enter, exit: exit }, unmountOnExit: true },
function (status) {
if (status === 'exited') return null;
var innerProps = _extends({}, originalProps, {
style: _extends({}, slideStyle, slideTransition[status])
});
return _react2.default.createElement(Tag, _extends({ innerProps: innerProps }, props));
}
);
};
exports.SlideUp = SlideUp;