@flexis/ui
Version:
Styleless React Components
278 lines (229 loc) • 17.2 kB
JavaScript
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
import _extends from "@babel/runtime-corejs3/helpers/extends";
import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
import _createClass from "@babel/runtime-corejs3/helpers/createClass";
import _possibleConstructorReturn from "@babel/runtime-corejs3/helpers/possibleConstructorReturn";
import _getPrototypeOf from "@babel/runtime-corejs3/helpers/getPrototypeOf";
import _inherits from "@babel/runtime-corejs3/helpers/inherits";
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(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; _forEachInstanceProperty(_context = ownKeys(Object(source), true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
import { __decorate } from "tslib";
import React from 'react';
var _createElement = React.createElement;
var Component = React.Component;
import PropTypes from 'prop-types';
import addClass from 'dom-helpers/addClass';
import removeClass from 'dom-helpers/removeClass';
import Transition from 'react-transition-group/Transition';
import { Bind, omit } from '../../helpers';
var defaultStylableStates = {
active: 'active',
enter: 'enter',
enterActive: 'enterActive',
enterDone: 'enterDone',
exit: 'exit',
exitActive: 'exitActive',
exitDone: 'exitDone'
};
var TransitionStateKeys = _Object$keys(defaultStylableStates);
var StylableTransition =
/** @class */
function () {
var StylableTransition = /*#__PURE__*/function (_Component) {
_inherits(StylableTransition, _Component);
function StylableTransition(props) {
var _this;
_classCallCheck(this, StylableTransition);
_this = _possibleConstructorReturn(this, _getPrototypeOf(StylableTransition).call(this, props));
var states = props.states;
var getStateClass = typeof states === 'function' ? function (state) {
return states(_defineProperty({}, state, true));
} : function (state) {
return states[state];
};
var stylableStates = {
active: {},
enter: {},
exit: {}
};
_forEachInstanceProperty(TransitionStateKeys).call(TransitionStateKeys, function (key) {
var _key$replace$toLowerC = key.replace(/(Active|Done)/, ' $1').toLowerCase().split(' '),
_key$replace$toLowerC2 = _slicedToArray(_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;
}
_createClass(StylableTransition, [{
key: "render",
value: function render() {
var props = omit(this.props, ['states']);
return _createElement(Transition, _extends({}, 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) {
addClass(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) {
addClass(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) {
addClass(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) {
addClass(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) {
addClass(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) {
removeClass(node, stateClass);
}
if (activePhaseClass) {
removeClass(node, activePhaseClass);
}
if (donePhaseClass) {
removeClass(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
addClass(node, stateClass);
}
}
}]);
return StylableTransition;
}(Component);
process.env.NODE_ENV !== "production" ? StylableTransition.propTypes = _objectSpread({}, Transition.propTypes, {
states: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,
onEnter: PropTypes.func,
onEntering: PropTypes.func,
onEntered: PropTypes.func,
onExit: PropTypes.func,
onExiting: PropTypes.func,
onExited: PropTypes.func
}) : void 0;
__decorate([Bind()], StylableTransition.prototype, "onEnter", null);
__decorate([Bind()], StylableTransition.prototype, "onEntering", null);
__decorate([Bind()], StylableTransition.prototype, "onEntered", null);
__decorate([Bind()], StylableTransition.prototype, "onExit", null);
__decorate([Bind()], StylableTransition.prototype, "onExiting", null);
__decorate([Bind()], StylableTransition.prototype, "onExited", null);
return StylableTransition;
}();
export default StylableTransition;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1N0eWxhYmxlVHJhbnNpdGlvbi9TdHlsYWJsZVRyYW5zaXRpb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQVAsTUFFTyxPQUZQOzs7QUFHQSxPQUFPLFNBQVAsTUFBc0IsWUFBdEI7QUFDQSxPQUFPLFFBQVAsTUFBcUIsc0JBQXJCO0FBQ0EsT0FBTyxXQUFQLE1BQXdCLHlCQUF4QjtBQUNBLE9BQU8sVUFBUCxNQUVPLG1DQUZQO0FBTUEsU0FFQyxJQUZELEVBR0MsSUFIRCxRQUlPLGVBSlA7QUF5QkEsSUFBTSxxQkFBcUIsR0FBcUI7QUFDL0MsRUFBQSxNQUFNLEVBQU8sUUFEa0M7QUFFL0MsRUFBQSxLQUFLLEVBQVEsT0FGa0M7QUFHL0MsRUFBQSxXQUFXLEVBQUUsYUFIa0M7QUFJL0MsRUFBQSxTQUFTLEVBQUksV0FKa0M7QUFLL0MsRUFBQSxJQUFJLEVBQVMsTUFMa0M7QUFNL0MsRUFBQSxVQUFVLEVBQUcsWUFOa0M7QUFPL0MsRUFBQSxRQUFRLEVBQUs7QUFQa0MsQ0FBaEQ7O0FBU0EsSUFBTSxtQkFBbUIsR0FBRyxhQUFZLHFCQUFaLENBQTVCOztBQUVBLElBQUEsa0JBQUE7QUFBQTtBQUFBLFlBQUE7QUFBQSxNQUFxQixrQkFBckI7QUFBQTs7QUFzQkMsZ0NBQVksS0FBWixFQUF5QjtBQUFBOztBQUFBOztBQUV4Qiw4RkFBTSxLQUFOO0FBRndCLFVBS3ZCLE1BTHVCLEdBTXBCLEtBTm9CLENBS3ZCLE1BTHVCO0FBT3hCLFVBQU0sYUFBYSxHQUFHLE9BQU8sTUFBUCxLQUFrQixVQUFsQixHQUNuQixVQUFDLEtBQUQ7QUFBQSxlQUFtQixNQUFNLHFCQUFJLEtBQUosRUFBWSxJQUFaLEVBQXpCO0FBQUEsT0FEbUIsR0FFbkIsVUFBQyxLQUFEO0FBQUEsZUFBbUIsTUFBTSxDQUFDLEtBQUQsQ0FBekI7QUFBQSxPQUZIO0FBR0EsVUFBTSxj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QUQsRUFBTyxjQUFQLENBQVg7QUFDQTtBQUNEO0FBM09GO0FBQUE7QUFBQSw2Q0E2T2dDLElBN09oQyxFQTZPbUQsVUE3T25ELEVBNk9xRTtBQUVuRSxZQUFJLElBQUosRUFBVTtBQUNUO0FBQ0E7QUFDQSxVQUFBLElBQUksQ0FBQyxTQUFMLENBSFMsQ0FHTzs7QUFDaEIsVUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPLFVBQVAsQ0FBUjtBQUNBO0FBQ0Q7QUFyUEY7O0FBQUE7QUFBQSxJQUFnRCxTQUFoRDs7QUFFUSwwQ0FBQSxrQkFBQSxDQUFBLFNBQUEscUJBQ0YsVUFBa0IsQ0FBQyxTQURqQjtBQUVOLElBQUEsTUFBTSxFQUFNLFNBQVMsQ0FBQyxTQUFWLENBQW9CLENBQy9CLFNBQVMsQ0FBQyxJQURxQixFQUUvQixTQUFTLENBQUMsTUFGcUIsQ0FBcEIsRUFHVCxVQUxHO0FBTU4sSUFBQSxPQUFPLEVBQUssU0FBUyxDQUFDLElBTmhCO0FBT04sSUFBQSxVQUFVLEVBQUUsU0FBUyxDQUFDLElBUGhCO0FBUU4sSUFBQSxTQUFTLEVBQUcsU0FBUyxDQUFDLElBUmhCO0FBU04sSUFBQSxNQUFNLEVBQU0sU0FBUyxDQUFDLElBVGhCO0FBVU4sSUFBQSxTQUFTLEVBQUcsU0FBUyxDQUFDLElBVmhCO0FBV04sSUFBQSxRQUFRLEVBQUksU0FBUyxDQUFDO0FBWGhCOztBQXVFUCxFQUFBLFVBQUEsQ0FBQSxDQURDLElBQUksRUFDTCxDQUFBLEUsNEJBQUEsRSxTQUFBLEVBaUJDLElBakJELENBQUE7O0FBb0JBLEVBQUEsVUFBQSxDQUFBLENBREMsSUFBSSxFQUNMLENBQUEsRSw0QkFBQSxFLFlBQUEsRUF5QkMsSUF6QkQsQ0FBQTs7QUE0QkEsRUFBQSxVQUFBLENBQUEsQ0FEQyxJQUFJLEVBQ0wsQ0FBQSxFLDRCQUFBLEUsV0FBQSxFQWlCQyxJQWpCRCxDQUFBOztBQW9CQSxFQUFBLFVBQUEsQ0FBQSxDQURDLElBQUksRUFDTCxDQUFBLEUsNEJBQUEsRSxRQUFBLEVBa0JDLElBbEJELENBQUE7O0FBcUJBLEVBQUEsVUFBQSxDQUFBLENBREMsSUFBSSxFQUNMLENBQUEsRSw0QkFBQSxFLFdBQUEsRUFlQyxJQWZELENBQUE7O0FBa0JBLEVBQUEsVUFBQSxDQUFBLENBREMsSUFBSSxFQUNMLENBQUEsRSw0QkFBQSxFLFVBQUEsRUFpQkMsSUFqQkQsQ0FBQTs7QUFrRUQsU0FBQSxrQkFBQTtBQUFDLENBdFBELEVBQUE7O2VBQXFCLGtCIiwic291cmNlUm9vdCI6IiJ9