@flexis/ui
Version:
Styleless React Components
301 lines (237 loc) • 18.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
var _Object$defineProperty2 = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
_Object$defineProperty2(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-properties"));
var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors"));
var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor"));
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/inherits"));
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
var _tslib = require("tslib");
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _addClass = _interopRequireDefault(require("dom-helpers/addClass"));
var _removeClass = _interopRequireDefault(require("dom-helpers/removeClass"));
var _Transition = _interopRequireDefault(require("react-transition-group/Transition"));
var _helpers = require("../../helpers");
function ownKeys(object, enumerableOnly) { var keys = (0, _keys.default)(object); if (_getOwnPropertySymbols.default) { var symbols = (0, _getOwnPropertySymbols.default)(object); if (enumerableOnly) symbols = (0, _filter.default)(symbols).call(symbols, function (sym) { return (0, _getOwnPropertyDescriptor.default)(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; (0, _forEach.default)(_context = ownKeys(Object(source), true)).call(_context, function (key) { (0, _defineProperty3.default)(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors.default) { (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source)); } else { var _context2; (0, _forEach.default)(_context2 = ownKeys(Object(source))).call(_context2, function (key) { (0, _defineProperty2.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key)); }); } } return target; }
var _createElement = _react.default.createElement;
var Component = _react.default.Component;
var defaultStylableStates = {
active: 'active',
enter: 'enter',
enterActive: 'enterActive',
enterDone: 'enterDone',
exit: 'exit',
exitActive: 'exitActive',
exitDone: 'exitDone'
};
var TransitionStateKeys = (0, _keys.default)(defaultStylableStates);
var StylableTransition =
/** @class */
function () {
var StylableTransition = /*#__PURE__*/function (_Component) {
(0, _inherits2.default)(StylableTransition, _Component);
function StylableTransition(props) {
var _this;
(0, _classCallCheck2.default)(this, StylableTransition);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(StylableTransition).call(this, props));
var states = props.states;
var getStateClass = typeof states === 'function' ? function (state) {
return states((0, _defineProperty3.default)({}, state, true));
} : function (state) {
return states[state];
};
var stylableStates = {
active: {},
enter: {},
exit: {}
};
(0, _forEach.default)(TransitionStateKeys).call(TransitionStateKeys, function (key) {
var _key$replace$toLowerC = key.replace(/(Active|Done)/, ' $1').toLowerCase().split(' '),
_key$replace$toLowerC2 = (0, _slicedToArray2.default)(_key$replace$toLowerC, 2),
state = _key$replace$toLowerC2[0],
phase = _key$replace$toLowerC2[1];
if (stylableStates.hasOwnProperty(state)) {
stylableStates[state][phase || 'state'] = getStateClass(key);
}
});
_this.stylableStates = stylableStates;
return _this;
}
(0, _createClass2.default)(StylableTransition, [{
key: "render",
value: function render() {
var props = (0, _helpers.omit)(this.props, ['states']);
return _createElement(_Transition.default, (0, _extends2.default)({}, props, {
onEnter: this.onEnter,
onEntered: this.onEntered,
onEntering: this.onEntering,
onExit: this.onExit,
onExiting: this.onExiting,
onExited: this.onExited
}));
}
}, {
key: "onEnter",
value: function onEnter(node) {
var stateClass = this.getStateClass('enter');
this.removeStateClass(node, 'exit');
if (stateClass) {
(0, _addClass.default)(node, stateClass);
}
var onEnter = this.props.onEnter;
if (typeof onEnter === 'function') {
onEnter(node);
}
}
}, {
key: "onEntering",
value: function onEntering(node) {
var enterStateClass = this.getStateClass('enter', 'active');
var activeStateClass = this.getStateClass('active');
if (enterStateClass) {
this.reflowAndAddStateClass(node, enterStateClass);
}
if (activeStateClass) {
if (enterStateClass) {
(0, _addClass.default)(node, activeStateClass);
} else {
this.reflowAndAddStateClass(node, activeStateClass);
}
}
var onEntering = this.props.onEntering;
if (typeof onEntering === 'function') {
onEntering(node);
}
}
}, {
key: "onEntered",
value: function onEntered(node) {
var stateClass = this.getStateClass('enter', 'done');
this.removeStateClass(node, 'enter');
if (stateClass) {
(0, _addClass.default)(node, stateClass);
}
var onEntered = this.props.onEntered;
if (typeof onEntered === 'function') {
onEntered(node);
}
}
}, {
key: "onExit",
value: function onExit(node) {
var stateClass = this.getStateClass('exit');
this.removeStateClass(node, 'enter');
this.removeStateClass(node, 'active');
if (stateClass) {
(0, _addClass.default)(node, stateClass);
}
var onExit = this.props.onExit;
if (typeof onExit === 'function') {
onExit(node);
}
}
}, {
key: "onExiting",
value: function onExiting(node) {
var stateClass = this.getStateClass('exit', 'active');
if (stateClass) {
this.reflowAndAddStateClass(node, stateClass);
}
var onExiting = this.props.onExiting;
if (typeof onExiting === 'function') {
onExiting(node);
}
}
}, {
key: "onExited",
value: function onExited(node) {
var stateClass = this.getStateClass('exit', 'done');
this.removeStateClass(node, 'exit');
if (stateClass) {
(0, _addClass.default)(node, stateClass);
}
var onExited = this.props.onExited;
if (typeof onExited === 'function') {
onExited(node);
}
}
}, {
key: "getStateClass",
value: function getStateClass(state) {
var phase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'state';
var phases = this.stylableStates[state];
if (!phases) {
return false;
}
return phases[phase] || false;
}
}, {
key: "removeStateClass",
value: function removeStateClass(node, state) {
var phases = this.stylableStates[state];
if (!phases) {
return;
}
var stateClass = phases.state,
activePhaseClass = phases.active,
donePhaseClass = phases.done;
if (stateClass) {
(0, _removeClass.default)(node, stateClass);
}
if (activePhaseClass) {
(0, _removeClass.default)(node, activePhaseClass);
}
if (donePhaseClass) {
(0, _removeClass.default)(node, donePhaseClass);
}
}
}, {
key: "reflowAndAddStateClass",
value: function reflowAndAddStateClass(node, stateClass) {
if (node) {
// This is for to force a repaint,
// which is necessary in order to transition styles when adding a class name.
node.scrollTop; // tslint:disable-line
(0, _addClass.default)(node, stateClass);
}
}
}]);
return StylableTransition;
}(Component);
process.env.NODE_ENV !== "production" ? StylableTransition.propTypes = _objectSpread({}, _Transition.default.propTypes, {
states: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]).isRequired,
onEnter: _propTypes.default.func,
onEntering: _propTypes.default.func,
onEntered: _propTypes.default.func,
onExit: _propTypes.default.func,
onExiting: _propTypes.default.func,
onExited: _propTypes.default.func
}) : void 0;
(0, _tslib.__decorate)([(0, _helpers.Bind)()], StylableTransition.prototype, "onEnter", null);
(0, _tslib.__decorate)([(0, _helpers.Bind)()], StylableTransition.prototype, "onEntering", null);
(0, _tslib.__decorate)([(0, _helpers.Bind)()], StylableTransition.prototype, "onEntered", null);
(0, _tslib.__decorate)([(0, _helpers.Bind)()], StylableTransition.prototype, "onExit", null);
(0, _tslib.__decorate)([(0, _helpers.Bind)()], StylableTransition.prototype, "onExiting", null);
(0, _tslib.__decorate)([(0, _helpers.Bind)()], StylableTransition.prototype, "onExited", null);
return StylableTransition;
}();
var _default = StylableTransition;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1N0eWxhYmxlVHJhbnNpdGlvbi9TdHlsYWJsZVRyYW5zaXRpb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7Ozs7Ozs7QUF5QkEsSUFBTSxxQkFBcUIsR0FBcUI7QUFDL0MsRUFBQSxNQUFNLEVBQU8sUUFEa0M7QUFFL0MsRUFBQSxLQUFLLEVBQVEsT0FGa0M7QUFHL0MsRUFBQSxXQUFXLEVBQUUsYUFIa0M7QUFJL0MsRUFBQSxTQUFTLEVBQUksV0FKa0M7QUFLL0MsRUFBQSxJQUFJLEVBQVMsTUFMa0M7QUFNL0MsRUFBQSxVQUFVLEVBQUcsWUFOa0M7QUFPL0MsRUFBQSxRQUFRLEVBQUs7QUFQa0MsQ0FBaEQ7QUFTQSxJQUFNLG1CQUFtQixHQUFHLG1CQUFZLHFCQUFaLENBQTVCOztBQUVBLElBQUEsa0JBQUE7QUFBQTtBQUFBLFlBQUE7QUFBQSxNQUFxQixrQkFBckI7QUFBQTs7QUFzQkMsZ0NBQVksS0FBWixFQUF5QjtBQUFBOztBQUFBO0FBRXhCLDBIQUFNLEtBQU47QUFGd0IsVUFLdkIsTUFMdUIsR0FNcEIsS0FOb0IsQ0FLdkIsTUFMdUI7QUFPeEIsVUFBTSxhQUFhLEdBQUcsT0FBTyxNQUFQLEtBQWtCLFVBQWxCLEdBQ25CLFVBQUMsS0FBRDtBQUFBLGVBQW1CLE1BQU0sbUNBQUksS0FBSixFQUFZLElBQVosRUFBekI7QUFBQSxPQURtQixHQUVuQixVQUFDLEtBQUQ7QUFBQSxlQUFtQixNQUFNLENBQUMsS0FBRCxDQUF6QjtBQUFBLE9BRkg7QUFHQSxVQUFNLGNBQWMsR0FBRztBQUN0QixRQUFBLE1BQU0sRUFBRSxFQURjO0FBRXRCLFFBQUEsS0FBSyxFQUFHLEVBRmM7QUFHdEIsUUFBQSxJQUFJLEVBQUk7QUFIYyxPQUF2QjtBQU1BLDRCQUFBLG1C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