canner
Version:
Build CMS in few lines of code for different data sources
102 lines (85 loc) • 2.94 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
var _utils = require("./utils");
var _types = require("./types");
var _nullField = _interopRequireDefault(require("./nullField"));
var ArrayField =
/*#__PURE__*/
function () {
function ArrayField(_ref) {
var rootSchema = _ref.rootSchema,
schema = _ref.schema,
key = _ref.key,
isEntity = _ref.isEntity;
(0, _classCallCheck2.default)(this, ArrayField);
(0, _defineProperty2.default)(this, "schema", void 0);
(0, _defineProperty2.default)(this, "rootSchema", void 0);
(0, _defineProperty2.default)(this, "key", void 0);
(0, _defineProperty2.default)(this, "isEntity", void 0);
this.key = key;
this.rootSchema = rootSchema;
this.schema = schema;
this.isEntity = isEntity || false;
}
(0, _createClass2.default)(ArrayField, [{
key: "getAttr",
value: function getAttr(name) {
return this.schema[name];
}
}, {
key: "getKey",
value: function getKey() {
return this.key;
}
}, {
key: "getType",
value: function getType() {
return _types.types.ARRAY;
}
}, {
key: "exists",
value: function exists() {
return true;
}
}, {
key: "getChild",
value: function getChild(fieldName) {
if ((0, _utils.isCompositeType)(this.schema.items.type)) {
var child = (0, _utils.createField)(fieldName, this.rootSchema, this.schema.items);
var childField = child.getChild(fieldName);
return childField;
}
if (!this.schema.items || !this.schema.items.items || !this.schema.items.items[fieldName]) {
return new _nullField.default({
key: fieldName
});
} // array of object
var field = (0, _utils.createField)(fieldName, this.rootSchema, this.schema.items.items[fieldName]);
return field;
}
}, {
key: "forEach",
value: function forEach(visitor) {
var _this = this;
if ((0, _utils.isCompositeType)(this.schema.items.type)) {
var child = (0, _utils.createField)('', this.rootSchema, this.schema.items);
child.forEach(visitor);
return;
}
(0, _forEach2.default)(this.schema.items.items, function (item, key) {
var field = (0, _utils.createField)(key, _this.rootSchema, _this.schema.items.items[key]);
visitor(field);
});
}
}]);
return ArrayField;
}();
exports.default = ArrayField;