@lyra/form-builder
Version:
Lyra form builder
47 lines (32 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
exports.toSaga = toSaga;
exports.toFormBuilder = toFormBuilder;
var _mutator = require('@lyra/mutator');
/*:: import type {Path, PathSegment} from '../../typedefs/path'*/
const IS_NUMERIC = /^\d+$/;
function unquote(str) {
return str.replace(/^['"]/, '').replace(/['"]$/, '');
}
function splitAttr(segment) {
var _segment$split = segment.split('=='),
_segment$split2 = _slicedToArray(_segment$split, 2);
const attr = _segment$split2[0],
key = _segment$split2[1];
return { [attr]: unquote(key) };
}
function coerce(segment /*: string*/) /*: PathSegment*/ {
return IS_NUMERIC.test(segment) ? Number(segment) : segment;
}
function parseSagaPath(focusPathStr) /*: Path*/ {
return focusPathStr.split(/[[.\]]/g).filter(Boolean).map(seg => seg.includes('==') ? splitAttr(seg) : coerce(seg));
}
function toSaga(formBuilderPath /*: Path*/) /*: string*/ {
return (0, _mutator.arrayToJSONMatchPath)(formBuilderPath);
}
function toFormBuilder(sagaPath /*: string*/) {
return parseSagaPath(sagaPath);
}