UNPKG

@sparklink-pro/apant

Version:

Apollo & Antd tools

47 lines 2.11 kB
import { __awaiter } from "tslib"; import { isFunction, isArray, isEqual, last, toPairs, isPlainObject } from 'lodash-es'; const isFieldMapped = (_a) => __awaiter(void 0, [_a], void 0, function* ({ field, context }) { const { item: { name }, mapped, } = field; if (!name) { return false; } return (isFunction(mapped) ? mapped(context) : mapped) !== false; }); const filterValues = (value_1, path_1, _a) => __awaiter(void 0, [value_1, path_1, _a], void 0, function* (value, path, { fields, context }) { const lastPath = last(path); const field = fields.find((f) => isEqual(f.item.name, path)); if (isArray(value) && field && field.list) { if (yield isFieldMapped({ field, context })) { const values = []; for (let i = 0; i < value.length; i += 1) { if (!field.fields || field.fields.length === 0) { values.push(value[i]); } else { values.push(yield filterValues(value[i], [], { fields: field.fields, context })); } } return lastPath ? { [lastPath]: values } : values; } return {}; } if (isPlainObject(value) && !isArray(value) && !(field === null || field === void 0 ? void 0 : field.hasObjectValue)) { let values = {}; const entries = toPairs(value); for (let i = 0; i < entries.length; i += 1) { const [key, val] = entries[i]; const newPath = [...path, key]; const filteredValues = yield filterValues(val, newPath, { fields, context }); values = Object.assign(Object.assign({}, values), filteredValues); } return lastPath ? { [lastPath]: values } : values; } if (field && (yield isFieldMapped({ field, context }))) { const key = last(path); return { [key]: value }; } return {}; }); export const useFilterValues = ({ fields, context }) => (values) => filterValues(values, [], { fields, context }); export default useFilterValues; //# sourceMappingURL=useFilterValues.js.map