@lyra/form-builder
Version:
Lyra form builder
79 lines (54 loc) • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = resolveInputComponent;
var _customInputs = require('./customInputs');
var _customInputs2 = _interopRequireDefault(_customInputs);
var _defaultInputs = require('./defaultInputs');
var _defaultInputs2 = _interopRequireDefault(_defaultInputs);
var _is = require('../../utils/is');
var is = _interopRequireWildcard(_is);
var _resolveReferenceInput = require('./resolveReferenceInput');
var _resolveReferenceInput2 = _interopRequireDefault(_resolveReferenceInput);
var _resolveArrayInput = require('./resolveArrayInput');
var _resolveArrayInput2 = _interopRequireDefault(_resolveArrayInput);
var _resolveStringInput = require('./resolveStringInput');
var _resolveStringInput2 = _interopRequireDefault(_resolveStringInput);
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 }; }
function getExport(obj) {
return obj && obj.__esModule ? obj.default : obj;
}
// this is needed to avoid errors due to circular imports
// this can happen if a custom input component imports and tries
// to access something from the form-builder immediately (top-level)
let getCustomResolver = () => {
const resolver = getExport(require('part:@lyra/form-builder/input-resolver?'));
getCustomResolver = () => resolver;
return resolver;
};
function resolveTypeVariants(type) {
if (is.type('array', type)) {
return (0, _resolveArrayInput2.default)(type);
}
if (is.type('reference', type)) {
return (0, _resolveReferenceInput2.default)(type);
}
// String input with a select
if (is.type('string', type)) {
return (0, _resolveStringInput2.default)(type);
}
return null;
}
function resolveInputComponent(type) {
const customResolver = getCustomResolver();
const custom = customResolver && customResolver(type);
if (custom) {
return custom;
}
if (type.inputComponent) {
return type.inputComponent;
}
return resolveTypeVariants(type) || _customInputs2.default[type.name] || _defaultInputs2.default[type.name];
}