@airtasker/form-schema-compiler
Version:
a form schema compiler
58 lines (45 loc) • 2.8 kB
JavaScript
;
exports.__esModule = true;
var _defaultTo = require("lodash/defaultTo");
var _defaultTo2 = _interopRequireDefault(_defaultTo);
var _noop = require("lodash/noop");
var _noop2 = _interopRequireDefault(_noop);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/**
* add type compiler here,
* a type compiler will be called before and after component compiled.
* Type compiler example:
* () => {
* // for each component will create their own instance of type compiler
* // that's means every type compiler for every components is fully independent, shares no context
* return {
* before: (r) => r, // will be call before component get compile
* after: (r) => r, // will be call after compile
* }
* }
* @type {{TextInput: Function, TextArea: Function, RadioButton: Function}}
*/
var TYPE_COMPILERS = {}; // default dummy type compiler
var defaultTypeCompiler = {
before: function before(r) {
return r;
},
after: function after(r) {
return r;
}
};
/**
* Add specific type handle for components.
* @param {string} type
* @param {object} customTypeCompilers
* @param {object} defaultTypeCompilers
*/
var createTypeCompiler = function createTypeCompiler(type) {
var customTypeCompilers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var defaultTypeCompilers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TYPE_COMPILERS;
return _objectSpread({}, defaultTypeCompiler, {}, (0, _defaultTo2["default"])((0, _defaultTo2["default"])(customTypeCompilers[type], defaultTypeCompilers[type]), _noop2["default"])());
};
exports["default"] = createTypeCompiler;