@lyra/form-builder
Version:
Lyra form builder
79 lines (53 loc) • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _get2 = require('lodash/get');
var _get3 = _interopRequireDefault(_get2);
exports.isArrayOfPrimitives = isArrayOfPrimitives;
exports.hasOptionsList = hasOptionsList;
exports.default = resolveArrayInput;
var _OptionsArrayInput = require('../../inputs/OptionsArrayInput');
var _OptionsArrayInput2 = _interopRequireDefault(_OptionsArrayInput);
var _BlockEditor = require('../../inputs/BlockEditor');
var _BlockEditor2 = _interopRequireDefault(_BlockEditor);
var _ArrayOfPrimitivesInput = require('../../inputs/ArrayOfPrimitivesInput');
var _ArrayOfPrimitivesInput2 = _interopRequireDefault(_ArrayOfPrimitivesInput);
var _TagsArrayInput = require('../../inputs/TagsArrayInput');
var _TagsArrayInput2 = _interopRequireDefault(_TagsArrayInput);
var _is = require('../../utils/is');
var is = _interopRequireWildcard(_is);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const PRIMITIVES = ['string', 'number', 'boolean'];
function isArrayOfPrimitives(type) {
return type.of.every(ofType => PRIMITIVES.includes(ofType.jsonType));
}
function isTagsArray(type) {
return (0, _get3.default)(type.options, 'layout') === 'tags' && type.of.length === 1 && is.type('string', type.of[0]);
}
function hasBlocks(type) {
return type.of.some(memberType => is.type('block', memberType));
}
function hasOptionsList(type) {
return (0, _get3.default)(type.options, 'list');
}
function resolveArrayInput(type) {
// Schema provides predefines list
if (hasOptionsList(type)) {
return _OptionsArrayInput2.default;
}
if (isTagsArray(type)) {
return _TagsArrayInput2.default;
}
// Special component for array of primitive values
if (isArrayOfPrimitives(type)) {
return _ArrayOfPrimitivesInput2.default;
}
// Use block editor if its an array that includes blocks
if (hasBlocks(type)) {
return _BlockEditor2.default;
}
// use default
return null;
}