UNPKG

@flexis/ui

Version:

Styleless React Components

301 lines (237 loc) 18.1 kB
"use strict"; 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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