UNPKG

@airtasker/form-schema-compiler

Version:
58 lines (45 loc) 2.8 kB
"use strict"; 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;