UNPKG

canner

Version:

Build CMS in few lines of code for different data sources

168 lines (133 loc) 5.66 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = withOndeploy; exports.splitRefId = splitRefId; exports.getValueAndPaths = getValueAndPaths; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var React = _interopRequireWildcard(require("react")); var _lodash = require("lodash"); var _cannerRefId = _interopRequireDefault(require("canner-ref-id")); function withOndeploy(Com) { return ( /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(ComponentWithOnDeploy, _React$Component); function ComponentWithOnDeploy(props) { var _this; (0, _classCallCheck2.default)(this, ComponentWithOnDeploy); _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(ComponentWithOnDeploy).call(this, props)); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "key", void 0); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "id", void 0); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "removeOnDeploy", function (arg1, callbackId) { var removeOnDeploy = _this.props.removeOnDeploy; if (callbackId) { return removeOnDeploy(arg1, callbackId); } else { return removeOnDeploy(_this.key, arg1); } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onDeploy", function (arg1, callback) { var _this$props = _this.props, onDeploy = _this$props.onDeploy, refId = _this$props.refId; if (typeof arg1 === 'string') { return onDeploy(arg1, callback); } else { // first arguments is a function return onDeploy(_this.key, function (result) { var restPathArr = refId.getPathArr(); // if (this.id) { // restPathArr = restPathArr.slice(2); // } else { restPathArr = restPathArr.slice(1); // } var _getValueAndPaths = getValueAndPaths(result.data, restPathArr), paths = _getValueAndPaths.paths, value = _getValueAndPaths.value; return (0, _objectSpread2.default)({}, result, { // $FlowFixMe data: (0, _lodash.set)(result.data, paths, arg1(value)) }); }); } }); var pattern = props.pattern, _refId = props.refId, rootValue = props.rootValue; var _splitRefId = splitRefId({ refId: _refId, rootValue: rootValue, pattern: pattern }), key = _splitRefId.key, id = _splitRefId.id; _this.key = key; _this.id = id; return _this; } (0, _createClass2.default)(ComponentWithOnDeploy, [{ key: "render", value: function render() { return React.createElement(Com, (0, _extends2.default)({}, this.props, { onDeploy: this.onDeploy, removeOnDeploy: this.removeOnDeploy })); } }]); return ComponentWithOnDeploy; }(React.Component) ); } function splitRefId(_ref) { var refId = _ref.refId, rootValue = _ref.rootValue, pattern = _ref.pattern; var _refId$getPathArr = refId.getPathArr(), _refId$getPathArr2 = (0, _slicedToArray2.default)(_refId$getPathArr, 2), key = _refId$getPathArr2[0], index = _refId$getPathArr2[1]; var id; if (pattern.startsWith('array')) { id = (0, _lodash.get)(rootValue, [key, index, 'id']); } return { key: key, id: id }; } function getValueAndPaths(value, idPathArr) { return idPathArr.reduce(function (result, key) { var v = result.value; var paths = result.paths; if ((0, _lodash.isPlainObject)(v)) { if ('edges' in v && 'pageInfo' in v) { v = (0, _lodash.get)(v, ['edges', key, 'node']); paths = paths.concat(['edges', key, 'node']); } else { v = (0, _lodash.get)(v, key); paths = paths.concat(key); } } else if ((0, _lodash.isArray)(v)) { v = (0, _lodash.get)(v, key); paths = paths.concat(key); } return { value: v, paths: paths }; }, { value: value, paths: [] }); }