react-misc-toolbox
Version:
[ ] imageviewer | gradual scroll [ ] imageviewer | cancellable scroll
116 lines (104 loc) • 3.01 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _Transition = require('react-transition-group/Transition');
var _Transition2 = _interopRequireDefault(_Transition);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var RTGTransition = function RTGTransition(_ref) {
var _ref$duration = _ref.duration,
duration = _ref$duration === undefined ? 300 : _ref$duration,
_ref$transitionType = _ref.transitionType,
transitionType = _ref$transitionType === undefined ? 'fade' : _ref$transitionType,
inProp = _ref.in,
children = _ref.children,
transitionProps = _ref.transitionProps,
_ref$maxHeight = _ref.maxHeight,
maxHeight = _ref$maxHeight === undefined ? '200vh' : _ref$maxHeight;
var baseStyle = {
transition: 'all ' + duration + 'ms ease-out'
};
var transitionStyles = {
entering: {
shared: {
cursor: 'pointer'
},
fade: {
opacity: '0.01'
},
dropdown: {
transform: 'scale(1, 0.9) translateY(-100%)',
zIndex: '-1'
},
height: {
maxHeight: '0'
}
},
entered: {
height: {
maxHeight: maxHeight
},
fade: {
opacity: '1'
},
dropdown: {
transform: 'scale(1) translateY(0%)'
}
},
exiting: {
fade: {
opacity: '0.01'
},
dropdown: {
transform: 'scale(1, 0.9) translateY(-100%)'
},
height: {
maxHeight: '0'
}
},
exited: {
fade: {
opacity: '0'
},
dropdown: {
transform: 'scale(1, 0.9) translateY(-100%)'
},
height: {
maxHeight: '0'
}
}
};
return _react2.default.createElement(
_Transition2.default,
(0, _extends3.default)({
in: inProp,
timeout: { enter: 0, exit: duration },
mountOnEnter: true,
unmountOnExit: true
}, transitionProps),
function (state) {
var getStatefulStyles = function getStatefulStyles() {
if (transitionStyles[state]) {
if (Array.isArray(transitionType)) {
var transitions = {};
transitionType.forEach(function (t) {
transitions = (0, _extends3.default)({}, transitions, transitionStyles[state][t]);
});
return (0, _extends3.default)({}, transitionStyles[state].shared, transitions);
} else {
return (0, _extends3.default)({}, transitionStyles[state].shared, transitionStyles[state][transitionType]);
}
}
};
return children({
style: (0, _extends3.default)({}, baseStyle, getStatefulStyles())
});
}
);
};
RTGTransition.defaultProps = {};
exports.default = RTGTransition;