subhasmitalmg-react-spreadsheet-import
Version:
React spreadsheet import for xlsx and csv files with column matching and validation steps
44 lines (37 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var lavenstein = require('js-levenshtein');
var findMatch = require('./findMatch.js');
var setColumn = require('./setColumn.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var lavenstein__default = /*#__PURE__*/_interopDefaultLegacy(lavenstein);
const getMatchedColumns = (columns, fields, data, autoMapDistance, autoMapSelectValues) => columns.reduce((arr, column) => {
const autoMatch = findMatch.findMatch(column.header, fields, autoMapDistance);
if (autoMatch) {
const field = fields.find((field) => field.key === autoMatch);
const duplicateIndex = arr.findIndex((column) => "value" in column && column.value === field.key);
const duplicate = arr[duplicateIndex];
if (duplicate && "value" in duplicate) {
return lavenstein__default["default"](duplicate.value, duplicate.header) < lavenstein__default["default"](autoMatch, column.header)
? [
...arr.slice(0, duplicateIndex),
setColumn.setColumn(arr[duplicateIndex], field, data, autoMapSelectValues),
...arr.slice(duplicateIndex + 1),
setColumn.setColumn(column),
]
: [
...arr.slice(0, duplicateIndex),
setColumn.setColumn(arr[duplicateIndex]),
...arr.slice(duplicateIndex + 1),
setColumn.setColumn(column, field, data, autoMapSelectValues),
];
}
else {
return [...arr, setColumn.setColumn(column, field, data, autoMapSelectValues)];
}
}
else {
return [...arr, column];
}
}, []);
exports.getMatchedColumns = getMatchedColumns;