canner
Version:
Build CMS in few lines of code for different data sources
168 lines (133 loc) • 5.66 kB
JavaScript
;
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: []
});
}