UNPKG

@surglogs/with-connected-handler

Version:
89 lines (61 loc) 5.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _recompose = require("recompose"); var _reactRedux = require("react-redux"); var _map = _interopRequireDefault(require("ramda/src/map")); var _mapObjIndexed = _interopRequireDefault(require("ramda/src/mapObjIndexed")); var _ifElse = _interopRequireDefault(require("ramda/src/ifElse")); var _omit = _interopRequireDefault(require("ramda/src/omit")); var _flip = _interopRequireDefault(require("ramda/src/flip")); var _apply = _interopRequireDefault(require("ramda/src/apply")); var _prop = _interopRequireDefault(require("ramda/src/prop")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var flippedApply = (0, _flip["default"])(_apply["default"]); var lookup = (0, _flip["default"])(_prop["default"]); var isFunction = function isFunction(value) { return typeof value === 'function'; }; var omitProps = function omitProps(keys) { return (0, _recompose.mapProps)(function (props) { return (0, _omit["default"])(keys, props); }); }; var CONNECTED_PROPS = '$WITH_CONNECTED_HANDLER_CONNECTED_PROPS'; var withConnectedHandler = function withConnectedHandler(_ref) { var handler = _ref.handler, name = _ref.name, _ref$actions = _ref.actions, actions = _ref$actions === void 0 ? {} : _ref$actions, _ref$args = _ref.args, args = _ref$args === void 0 ? {} : _ref$args; return (0, _recompose.compose)((0, _reactRedux.connect)(function (state, props) { return _defineProperty({}, CONNECTED_PROPS, (0, _map["default"])((0, _ifElse["default"])(isFunction, flippedApply([state, props]), lookup(props)))(args)); }, actions), (0, _reactRedux.connect)(null), // get dispatch (0, _recompose.withHandlers)(_defineProperty({}, name, function (_ref3) { var connectedProps = _ref3[CONNECTED_PROPS], dispatch = _ref3.dispatch, rest = _objectWithoutProperties(_ref3, [CONNECTED_PROPS, "dispatch"].map(_toPropertyKey)); return function () { var connectedActions = (0, _mapObjIndexed["default"])(function (_, actionName) { return rest[actionName]; }, actions); var passedProps = _objectSpread({}, connectedProps, {}, connectedActions, { dispatch: dispatch }); return handler(passedProps).apply(void 0, arguments); }; })), omitProps([CONNECTED_PROPS]), _recompose.pure); }; var _default = withConnectedHandler; exports["default"] = _default;