fuse-importer 0.1.2-testing → 0.1.4-testing

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/lib/esm/Importer/ImporterWithContext.d.ts +2 -0
  2. package/lib/esm/Importer/ImporterWithContext.js +12 -8
  3. package/lib/esm/Importer/Matcher/index.js +0 -11
  4. package/lib/esm/Importer/Review/ReviewContextProvider.js +55 -14
  5. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +7 -4
  6. package/lib/esm/Importer/Stepper/index.js +61 -2
  7. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +19 -11
  8. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +2 -9
  9. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +2 -3
  10. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +66 -15
  11. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.d.ts +1 -1
  12. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.d.ts +1 -0
  13. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +7 -0
  14. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +2 -2
  15. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +1 -7
  16. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +1 -1
  17. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +16 -15
  18. package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +1 -2
  19. package/lib/esm/Importer/common/Spreadsheet/hooks.js +21 -39
  20. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +1 -25
  21. package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +3 -3
  22. package/lib/esm/Importer/contexts/ImporterContextProvider.js +31 -20
  23. package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +81 -31
  24. package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +9 -1
  25. package/lib/esm/common/Table/TableActions/RowFilters.js +10 -6
  26. package/lib/esm/common/columnsTransformations.js +0 -8
  27. package/lib/esm/common/datePatterns.js +10 -10
  28. package/lib/esm/common/inputs/SelectMenu.js +6 -2
  29. package/lib/esm/common/inputs/TextInput.js +1 -1
  30. package/lib/esm/locales/de.d.ts +2 -1
  31. package/lib/esm/locales/de.js +2 -1
  32. package/lib/esm/locales/en.d.ts +2 -1
  33. package/lib/esm/locales/en.js +2 -1
  34. package/lib/esm/locales/es.d.ts +2 -1
  35. package/lib/esm/locales/es.js +2 -1
  36. package/lib/esm/locales/fr.d.ts +2 -1
  37. package/lib/esm/locales/fr.js +2 -1
  38. package/lib/esm/types.d.ts +17 -5
  39. package/lib/esm/types.js +0 -1
  40. package/lib/main.js +24 -24
  41. package/package.json +1 -1
@@ -44,6 +44,7 @@ import { useSpreadsheetContext } from "../SpreadsheetContextProvider";
44
44
  import { Checkbox } from "../../../../common/inputs/Checkbox";
45
45
  import { useImporterContext } from "../../../contexts/ImporterContextProvider";
46
46
  import ReactVirtualizedAutoSizer from "react-virtualized-auto-sizer";
47
+ import { rowIsEmpty } from "../SpreadsheetContextProvider/utils";
47
48
  var StyledGrid = styled(Grid)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n overflow-y: scroll;\n"], ["\n background: ", ";\n overflow-y: scroll;\n"])), function (_a) {
48
49
  var theme = _a.theme;
49
50
  return theme.colors.white50;
@@ -54,13 +55,6 @@ var gridStyles = {
54
55
  overflowY: "hidden",
55
56
  overflowX: "scroll",
56
57
  };
57
- var rowIsEmpty = function (row) {
58
- return Object.keys(row).every(function (key) {
59
- if (key === "_meta")
60
- return true;
61
- return !row[key];
62
- });
63
- };
64
58
  export var SpreadsheetRowCheckboxes = function (_a) {
65
59
  var height = _a.height, gridRef = _a.gridRef, isLoadingData = _a.isLoadingData, props = __rest(_a, ["height", "gridRef", "isLoadingData"]);
66
60
  var _b = useSpreadsheetContext(), data = _b.data, selectedRows = _b.selectedRows, options = _b.options, lastClickedIndexRef = _b.lastClickedIndexRef, setSelectedRows = _b.setSelectedRows, checkboxColumnWidth = _b.checkboxColumnWidth, isTransformTooltipOpened = _b.isTransformTooltipOpened;
@@ -56,7 +56,7 @@ export var SpreadsheetInput = function (_a) {
56
56
  ? "".concat(totalInputSize, "px")
57
57
  : "".concat(defaultWidthAsNumber, "px");
58
58
  }, [value, record, columnWidth]);
59
- return (_jsxs(SpreadsheetField, __assign({ validationError: validationError, validationWarning: validationWarning, isHighlighted: isHighlighted, defaultFieldWidth: defaultWidthAsNumber, expandedFieldWidth: expandedFieldWidth, shouldExpandInput: true }, { children: [_jsx(Input, __assign({ hasError: !!validationError, hasWarning: !!validationWarning, value: value || "", onChange: function (_a) {
59
+ return (_jsxs(SpreadsheetField, __assign({ validationError: validationError, validationWarning: validationWarning, isHighlighted: isHighlighted, defaultFieldWidth: defaultWidthAsNumber, expandedFieldWidth: expandedFieldWidth, shouldExpandInput: true }, { children: [_jsx(Input, __assign({ autoComplete: "off", hasError: !!validationError, hasWarning: !!validationWarning, value: value || "", onChange: function (_a) {
60
60
  var value = _a.target.value;
61
61
  return !isTransformTooltipOpened && setValue(value);
62
62
  }, disabledWhen: isTransformTooltipOpened }, props)), ((_g = (_f = (_e = record === null || record === void 0 ? void 0 : record._meta) === null || _e === void 0 ? void 0 : _e.transformedRow) === null || _f === void 0 ? void 0 : _f[name]) === null || _g === void 0 ? void 0 : _g.original) &&
@@ -87,33 +87,34 @@ export var useSpreadsheetField = function (name, record, fieldType) {
87
87
  validationWarning: validationWarning,
88
88
  };
89
89
  };
90
- var ContentContainer = styled(Div)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n height: calc(100% - 1px);\n width: ", ";\n overflow: hidden;\n\n ", "\n\n &:focus-within, \n &:hover {\n ", "\n }\n\n ", ";\n ", "\n ", "\n ", "\n ", "\n"], ["\n height: calc(100% - 1px);\n width: ", ";\n overflow: hidden;\n\n ", "\n\n &:focus-within, \n &:hover {\n ", "\n }\n\n ", ";\n ", "\n ", "\n ", "\n ", "\n"])), function (_a) {
90
+ var ContentContainer = styled(Div)(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n height: calc(100% - 1px);\n width: ", ";\n overflow: hidden;\n\n ", "\n\n &:focus-within, \n &:hover {\n ", "\n }\n\n &:focus-within, \n &:hover {\n ", "\n }\n\n ", ";\n ", "\n ", "\n ", "\n ", "\n"], ["\n height: calc(100% - 1px);\n width: ", ";\n overflow: hidden;\n\n ", "\n\n &:focus-within, \n &:hover {\n ", "\n }\n\n &:focus-within, \n &:hover {\n ", "\n }\n\n ", ";\n ", "\n ", "\n ", "\n ", "\n"])), function (_a) {
91
91
  var defaultFieldWidth = _a.defaultFieldWidth;
92
92
  return defaultFieldWidth ? "".concat(defaultFieldWidth, "px") : "100%";
93
93
  }, function (_a) {
94
94
  var expandedFieldWidth = _a.expandedFieldWidth;
95
95
  return expandedFieldWidth && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n "], ["\n position: absolute;\n "])));
96
96
  }, function (_a) {
97
- var expandedFieldWidth = _a.expandedFieldWidth, isHighlighted = _a.isHighlighted, theme = _a.theme, shouldExpandInput = _a.shouldExpandInput;
98
- return shouldExpandInput && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background: ", ";\n box-shadow: 0px 0px 0px 2px ", " inset;\n width: ", ";\n z-index: 1;\n\n .suffix {\n right: 12px;\n }\n "], ["\n background: ", ";\n box-shadow: 0px 0px 0px 2px ", " inset;\n width: ", ";\n z-index: 1;\n\n .suffix {\n right: 12px;\n }\n "])), !isHighlighted
97
+ var hasError = _a.hasError, hasWarning = _a.hasWarning, isHighlighted = _a.isHighlighted, theme = _a.theme, shouldExpandInput = _a.shouldExpandInput;
98
+ return shouldExpandInput &&
99
+ !hasError &&
100
+ !hasWarning && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background: ", ";\n box-shadow: 0px 0px 0px 2px ", " inset;\n "], ["\n background: ", ";\n box-shadow: 0px 0px 0px 2px ", " inset;\n "])), !isHighlighted
99
101
  ? theme.colors.white
100
- : theme.colors.blue100, function (p) { return p.theme.colors.blue500; }, expandedFieldWidth || "auto");
102
+ : theme.colors.blue100, function (p) { return p.theme.colors.blue500; });
103
+ }, function (_a) {
104
+ var expandedFieldWidth = _a.expandedFieldWidth, shouldExpandInput = _a.shouldExpandInput;
105
+ return shouldExpandInput && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n width: ", ";\n z-index: 1;\n\n .suffix {\n right: 12px;\n }\n "], ["\n width: ", ";\n z-index: 1;\n\n .suffix {\n right: 12px;\n }\n "])), expandedFieldWidth || "auto");
101
106
  }, function (p) { return p.theme.css.alignCenter; }, function (p) {
102
- return p.isHighlighted && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 2px ", " inset;\n "], ["\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 2px ", " inset;\n "])), function (p) { return p.theme.colors.blue100; }, function (p) { return p.theme.colors.blue500; });
107
+ return p.isHighlighted && css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 2px ", " inset;\n "], ["\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 2px ", " inset;\n "])), function (p) { return p.theme.colors.blue100; }, function (p) { return p.theme.colors.blue500; });
103
108
  }, function (p) {
104
- return p.hasWarning && css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "], ["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "])), function (p) { return p.theme.colors.orange1200; }, function (p) { return p.theme.colors.orange1100; }, function (p) { return p.theme.colors.orange500; });
109
+ return p.hasWarning && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "], ["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "])), function (p) { return p.theme.colors.orange1200; }, function (p) { return p.theme.colors.orange1100; }, function (p) { return p.theme.colors.orange500; });
105
110
  }, function (p) {
106
- return p.hasError && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "], ["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "])), function (p) { return p.theme.colors.error; }, function (p) { return p.theme.colors.red100; }, function (p) { return p.theme.colors.error; });
111
+ return p.hasError && css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "], ["\n color: ", ";\n background: ", ";\n /* internal border */\n box-shadow: 0px 0px 0px 1px ", " inset;\n "])), function (p) { return p.theme.colors.error; }, function (p) { return p.theme.colors.red100; }, function (p) { return p.theme.colors.error; });
107
112
  }, function (p) {
108
- return p.isReadOnly && css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "])));
109
- });
110
- var Wrapper = styled(Div)(function (_a) {
111
- var isLoading = _a.isLoading;
112
- return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n ", "\n "], ["\n ", "\n "])), isLoading && css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "]))));
113
+ return p.isReadOnly && css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n pointer-events: none;\n "], ["\n pointer-events: none;\n "])));
113
114
  });
114
115
  export var SpreadsheetField = function (_a) {
115
116
  var validationError = _a.validationError, validationWarning = _a.validationWarning, children = _a.children, isHighlighted = _a.isHighlighted, expandedFieldWidth = _a.expandedFieldWidth, shouldExpandInput = _a.shouldExpandInput, defaultFieldWidth = _a.defaultFieldWidth;
116
- var _b = useSpreadsheetContext(), isReadOnly = _b.isReadOnly, isLoading = _b.isLoading;
117
- return (_jsx(Wrapper, __assign({ dim: "100%", isLoading: isLoading }, { children: _jsx(TooltipProvider, __assign({ tooltip: validationError || validationWarning }, { children: _jsx(Div, __assign({ dim: "100%" }, { children: _jsx(ContentContainer, __assign({ hasError: !!validationError, hasWarning: !!validationWarning, isHighlighted: isHighlighted, expandedFieldWidth: expandedFieldWidth, defaultFieldWidth: defaultFieldWidth, shouldExpandInput: shouldExpandInput, isReadOnly: isReadOnly, className: "input-content" }, { children: children })) })) })) })));
117
+ var isReadOnly = useSpreadsheetContext().isReadOnly;
118
+ return (_jsx(Div, __assign({ dim: "100%" }, { children: _jsx(TooltipProvider, __assign({ tooltip: validationError || validationWarning }, { children: _jsx(Div, __assign({ dim: "100%" }, { children: _jsx(ContentContainer, __assign({ hasError: !!validationError, hasWarning: !!validationWarning, isHighlighted: isHighlighted, expandedFieldWidth: expandedFieldWidth, defaultFieldWidth: defaultFieldWidth, shouldExpandInput: shouldExpandInput, isReadOnly: isReadOnly, className: "input-content" }, { children: children })) })) })) })));
118
119
  };
119
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;
120
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;
@@ -5,7 +5,6 @@ import { BatchValidationErrors, Field, OnValidateRecord, Record, RecordDataSet }
5
5
  type UseValidationStateArgs = {
6
6
  onValidateRecord?: OnValidateRecord;
7
7
  setDataSet: React.Dispatch<React.SetStateAction<RecordDataSet>>;
8
- setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;
9
8
  initialDataSet: RecordDataSet;
10
9
  dataSet: RecordDataSet;
11
10
  fields: Field[];
@@ -30,5 +29,5 @@ type UseValidationStateReturnValue = ValidationState & {
30
29
  deleteRecords: DeleteRecords;
31
30
  updateRecordAndRevalidate: (record: Record) => Promise<void>;
32
31
  };
33
- export declare const useValidationState: ({ initialDataSet, dataSet, fields, options, isReadOnly, setDataSet, setIsLoading, onValidateRecord, }: UseValidationStateArgs) => UseValidationStateReturnValue;
32
+ export declare const useValidationState: ({ initialDataSet, dataSet, fields, options, isReadOnly, setDataSet, onValidateRecord, }: UseValidationStateArgs) => UseValidationStateReturnValue;
34
33
  export {};
@@ -45,7 +45,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
45
45
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
46
  }
47
47
  };
48
- import { omit, set } from "lodash";
49
48
  import { useCallback, useEffect, useMemo, useState } from "react";
50
49
  import { useTableActions, } from "../../../common/Table/TableActions/hooks";
51
50
  import { selectValidatorsFor, validateRecord } from "./validation";
@@ -56,7 +55,7 @@ var checkIfHasErrors = function (errors) {
56
55
  export var useValidationState = function (_a) {
57
56
  var initialDataSet = _a.initialDataSet, //Initial Data Set, used to run the initial validation
58
57
  dataSet = _a.dataSet, //Current Updated Data Set
59
- fields = _a.fields, options = _a.options, isReadOnly = _a.isReadOnly, setDataSet = _a.setDataSet, setIsLoading = _a.setIsLoading, onValidateRecord = _a.onValidateRecord;
58
+ fields = _a.fields, options = _a.options, isReadOnly = _a.isReadOnly, setDataSet = _a.setDataSet, onValidateRecord = _a.onValidateRecord;
60
59
  var _b = useState({}), errors = _b[0], setErrors = _b[1];
61
60
  var _c = useState({}), warnings = _c[0], setWarnings = _c[1];
62
61
  var _d = useState(0), validationPercentage = _d[0], setValidationPercentage = _d[1];
@@ -69,14 +68,14 @@ export var useValidationState = function (_a) {
69
68
  }).deleteRecords;
70
69
  // Validate record and update dataSet
71
70
  var updateRecordAndRevalidate = useCallback(function (records) { return __awaiter(void 0, void 0, void 0, function () {
72
- var recordsArray, newDataSet, errorUpdates, warningUpdates, i, record, recordId, data, _a, recordErrors, recordWarnings, hasError, hasWarning;
71
+ var recordsArray, newDataSet, newErrors, newWarnings, i, record, recordId, data, _a, recordErrors, recordWarnings, hasError, hasWarning;
73
72
  return __generator(this, function (_b) {
74
73
  switch (_b.label) {
75
74
  case 0:
76
75
  recordsArray = Array.isArray(records) ? records : [records];
77
76
  newDataSet = __assign({}, dataSet);
78
- errorUpdates = {};
79
- warningUpdates = {};
77
+ newErrors = __assign({}, errors);
78
+ newWarnings = __assign({}, warnings);
80
79
  i = 0;
81
80
  _b.label = 1;
82
81
  case 1:
@@ -100,51 +99,35 @@ export var useValidationState = function (_a) {
100
99
  hasWarning = checkIfHasErrors(recordWarnings);
101
100
  newDataSet[recordId]._meta.isInvalid = hasError;
102
101
  newDataSet[recordId]._meta.hasWarning = hasWarning;
103
- errorUpdates = hasError
104
- ? set(errorUpdates, recordId, recordErrors)
105
- : omit(errorUpdates, recordId);
106
- warningUpdates = hasWarning
107
- ? set(warningUpdates, recordId, recordWarnings)
108
- : omit(warningUpdates, recordId);
102
+ if (hasError) {
103
+ newErrors[recordId] = recordErrors;
104
+ }
105
+ else {
106
+ delete newErrors[recordId];
107
+ }
108
+ if (hasWarning) {
109
+ newWarnings[recordId] = recordWarnings;
110
+ }
111
+ else {
112
+ delete newWarnings[recordId];
113
+ }
109
114
  _b.label = 3;
110
115
  case 3:
111
116
  i++;
112
117
  return [3 /*break*/, 1];
113
118
  case 4:
114
- setErrors(function (errors) {
115
- var currentErrors = __assign({}, errors);
116
- var newErrors = {};
117
- for (var errorId in errorUpdates) {
118
- var updatedError = errorUpdates[errorId];
119
- var hasUpdatedError = updatedError && Object.keys(updatedError).length > 0;
120
- newErrors = hasUpdatedError
121
- ? set(currentErrors, errorId, updatedError)
122
- : omit(currentErrors, errorId);
123
- }
124
- return newErrors;
125
- });
126
- setWarnings(function (warnings) {
127
- var currentWarnings = __assign({}, warnings);
128
- var newWarnings = {};
129
- for (var warningId in warningUpdates) {
130
- var updatedWarning = warningUpdates[warningId];
131
- var hasUpdatedWarning = updatedWarning && Object.keys(updatedWarning).length > 0;
132
- newWarnings = hasUpdatedWarning
133
- ? set(currentWarnings, warningId, updatedWarning)
134
- : omit(currentWarnings, warningId);
135
- }
136
- return newWarnings;
137
- });
138
- setDataSet(newDataSet); //Update the dataSet
119
+ setErrors(newErrors);
120
+ setWarnings(newWarnings);
121
+ setDataSet(newDataSet); // Update the dataSet
139
122
  return [2 /*return*/];
140
123
  }
141
124
  });
142
- }); }, [dataSet, validatorsCache]);
125
+ }); }, [dataSet, errors, warnings, validatorsCache]);
143
126
  // Initial data validation and update dataSet
144
127
  useEffect(function () {
145
128
  if (!initialDataSet || isReadOnly)
146
129
  return;
147
- setIsLoading(true);
130
+ setIsLoadingApp(true);
148
131
  var initialValidation = function () { return __awaiter(void 0, void 0, void 0, function () {
149
132
  var errors, warnings, initialData, length, _a, batchValidationDelayMs, _b, batchValidationSize, batchSize, batchCount, batchIdx, idx, batch, index, record, recordId, _c, recordErrors, recordWarnings, hasError, hasWarning, validationPercentage_1;
150
133
  return __generator(this, function (_d) {
@@ -223,7 +206,6 @@ export var useValidationState = function (_a) {
223
206
  case 2: return [4 /*yield*/, initialValidation()];
224
207
  case 3:
225
208
  _a.sent();
226
- setIsLoading(false);
227
209
  setIsLoadingApp(false);
228
210
  return [2 /*return*/];
229
211
  }
@@ -209,28 +209,4 @@ var integerTransformations = {
209
209
  return isTransformationNeeded(fieldValue, valueWithCorrectType);
210
210
  },
211
211
  };
212
- var enumTransformations = {
213
- autodetect: function (fieldValue, _, fieldOptions) {
214
- var options = fieldOptions.options.map(function (option) {
215
- return option.toLowerCase();
216
- });
217
- if (!fieldValue || options.length === 0)
218
- return {
219
- transformationWasNeeded: false,
220
- original: fieldValue,
221
- transformed: null,
222
- };
223
- var parsedRecord = String(fieldValue).toLowerCase();
224
- var trueOptionIndex = options.findIndex(function (option) { return option === "true" || option === "1"; });
225
- var falseOptionIndex = options.findIndex(function (option) { return option === "false" || option === "0"; });
226
- if (trueOptionIndex !== -1 && falseOptionIndex !== -1) {
227
- var transformedValue_1 = parsedRecord === options[trueOptionIndex]
228
- ? fieldOptions.options[trueOptionIndex]
229
- : fieldOptions.options[falseOptionIndex];
230
- return isTransformationNeeded(fieldValue, transformedValue_1);
231
- }
232
- var transformedValue = fieldOptions.options[0];
233
- return isTransformationNeeded(fieldValue, transformedValue);
234
- },
235
- };
236
- export var fieldTransformations = __assign(__assign(__assign(__assign(__assign(__assign({}, stringFieldTransformations), datesDateTimesAndTimesTransformations), urlTransformations), floatTransformations), integerTransformations), enumTransformations);
212
+ export var fieldTransformations = __assign(__assign(__assign(__assign(__assign({}, stringFieldTransformations), datesDateTimesAndTimesTransformations), urlTransformations), floatTransformations), integerTransformations);
@@ -1,8 +1,6 @@
1
- import Fuse from "fuse.js";
2
1
  import React from "react";
3
- import { CustomAction, FormatRecord, ImporterOptions, Integration, OnSubmit, OnValidateRecord, Record, TemplateHeader } from "../../types";
2
+ import { ColumnMapping, CustomAction, FormatRecord, ImporterOptions, Integration, OnSubmit, OnValidateRecord, Record, TemplateHeader } from "../../types";
4
3
  import { FuseApi } from "../common/FuseApi";
5
- export declare const fusejsOptions: Fuse.IFuseOptions<string>;
6
4
  export type HeaderMatchings = {
7
5
  [templateHeaderLabel: string]: string;
8
6
  };
@@ -46,6 +44,7 @@ export type State = {
46
44
  setCurrentStepIndex: React.Dispatch<number>;
47
45
  setEnumFieldValueMatchings: React.Dispatch<React.SetStateAction<EnumFieldValueMatchings>>;
48
46
  setUploadedData: React.Dispatch<any[]>;
47
+ setHeadersMappings: React.Dispatch<any[]>;
49
48
  setTemplateHeaderMatchings: React.Dispatch<React.SetStateAction<HeaderMatchings>>;
50
49
  setPreviewFirstTime: React.Dispatch<boolean>;
51
50
  formatRecord: FormatRecord;
@@ -56,6 +55,7 @@ export type State = {
56
55
  isUsingManualImport: React.MutableRefObject<boolean>;
57
56
  resetImporterWhenUsingManualImport: () => void;
58
57
  manualDataImportSelected: () => void;
58
+ columnMappingsAttributes: ColumnMapping[];
59
59
  customActions: CustomAction[];
60
60
  };
61
61
  export type Props = {
@@ -55,16 +55,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
55
55
  return to.concat(ar || Array.prototype.slice.call(from));
56
56
  };
57
57
  import { jsx as _jsx } from "react/jsx-runtime";
58
- import Fuse from "fuse.js";
59
58
  import { createContext, useContext, useEffect, useMemo, useRef, useState, } from "react";
60
59
  import { FieldTypes, } from "../../types";
61
60
  import { FuseApi } from "../common/FuseApi";
62
61
  import { getCustomTheme, theme } from "../common/theme";
63
62
  import { getColumnType, verifyDuplicateValue } from "../common/utils";
64
- export var fusejsOptions = {
65
- includeScore: true,
66
- threshold: 0.35,
67
- };
68
63
  var ImporterContext = createContext({});
69
64
  export var ImporterContextProvider = function (_a) {
70
65
  var templateSlug = _a.templateSlug, initialRecords = _a.initialRecords, apiToken = _a.apiToken, children = _a.children, options = _a.options, onSubmit = _a.onSubmit, onClose = _a.onClose, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, dynamicColumns = _a.dynamicColumns, customActions = _a.customActions;
@@ -76,16 +71,18 @@ export var ImporterContextProvider = function (_a) {
76
71
  var _g = useState(null), uploadedData = _g[0], setUploadedData = _g[1];
77
72
  var _h = useState(null), organization = _h[0], setOrganization = _h[1];
78
73
  var _j = useState(null), previewFirstTime = _j[0], setPreviewFirstTime = _j[1];
79
- var _k = useState({
74
+ var _k = useState(null), columnMappingsAttributes = _k[0], setColumnMappingsAttributes = _k[1];
75
+ var _l = useState(null), headersMappings = _l[0], setHeadersMappings = _l[1];
76
+ var _m = useState({
80
77
  theme: theme,
81
78
  logoURL: null,
82
- }), style = _k[0], setStyle = _k[1];
83
- var _l = useState(null), templateHeaderMatchings = _l[0], setTemplateHeaderMatchings = _l[1];
84
- var _m = useState(null), enumFieldValueMatchings = _m[0], setEnumFieldValueMatchings = _m[1];
85
- var _o = useState(null), uploadedDataEnumFieldValues = _o[0], setUploadedDataEnumFieldValues = _o[1];
86
- var _p = useState([]), selectedRows = _p[0], setSelectedRows = _p[1];
79
+ }), style = _m[0], setStyle = _m[1];
80
+ var _o = useState(null), templateHeaderMatchings = _o[0], setTemplateHeaderMatchings = _o[1];
81
+ var _p = useState(null), enumFieldValueMatchings = _p[0], setEnumFieldValueMatchings = _p[1];
82
+ var _q = useState(null), uploadedDataEnumFieldValues = _q[0], setUploadedDataEnumFieldValues = _q[1];
83
+ var _r = useState([]), selectedRows = _r[0], setSelectedRows = _r[1];
87
84
  var isUsingManualImport = useRef(false);
88
- var _q = useState(0), headerRowIndex = _q[0], setHeaderRowIndex = _q[1];
85
+ var _s = useState(0), headerRowIndex = _s[0], setHeaderRowIndex = _s[1];
89
86
  var fuseApi = useMemo(function () { return new FuseApi(options.env, apiToken); }, [
90
87
  options.env,
91
88
  apiToken,
@@ -107,18 +104,29 @@ export var ImporterContextProvider = function (_a) {
107
104
  useEffect(function () {
108
105
  var setHeadersFromDataset = function () {
109
106
  var _templateHeaderMatchings = {};
110
- var fuse = new Fuse(uploadedDataHeaders, fusejsOptions);
111
107
  templateHeaders.forEach(function (templateHeader, _index) {
112
- var _a;
113
- var fuseResults = fuse.search(templateHeader.label);
114
- _templateHeaderMatchings[templateHeader.label] = (_a = fuseResults[0]) === null || _a === void 0 ? void 0 : _a.item;
108
+ var mappedHeader = headersMappings.find(function (headerMapping) {
109
+ var matchedColumn = Object.values(headerMapping)[0];
110
+ if (matchedColumn) {
111
+ return (matchedColumn.toLowerCase() === templateHeader.label.toLowerCase());
112
+ }
113
+ else {
114
+ return false;
115
+ }
116
+ });
117
+ if (mappedHeader) {
118
+ _templateHeaderMatchings[templateHeader.label] = Object.keys(mappedHeader)[0];
119
+ }
120
+ else {
121
+ _templateHeaderMatchings[templateHeader.label] = null;
122
+ }
115
123
  });
116
124
  setTemplateHeaderMatchings(_templateHeaderMatchings);
117
125
  };
118
- if (uploadedDataHeaders) {
126
+ if (uploadedDataHeaders && headersMappings) {
119
127
  setHeadersFromDataset();
120
128
  }
121
- }, [uploadedDataHeaders]);
129
+ }, [uploadedDataHeaders, headersMappings]);
122
130
  useEffect(function () {
123
131
  if (!templateHeaderMatchings || !uploadedDataHeaders)
124
132
  return;
@@ -145,7 +153,7 @@ export var ImporterContextProvider = function (_a) {
145
153
  }, [templateHeaderMatchings, uploadedDataHeaders]);
146
154
  useEffect(function () {
147
155
  (function () { return __awaiter(void 0, void 0, void 0, function () {
148
- var _a, organization_1, columns_1, importer_style_preferences, integrations_1, preview_first_time, error_1, errorMsg;
156
+ var _a, organization_1, columns_1, importer_style_preferences, integrations_1, preview_first_time, column_mappings_attributes, error_1, errorMsg;
149
157
  var _b, _c;
150
158
  return __generator(this, function (_d) {
151
159
  switch (_d.label) {
@@ -153,7 +161,7 @@ export var ImporterContextProvider = function (_a) {
153
161
  _d.trys.push([0, 2, , 3]);
154
162
  return [4 /*yield*/, fuseApi.get("/api/v1/importer/templates/".concat(templateSlug))];
155
163
  case 1:
156
- _a = (_d.sent()).data, organization_1 = _a.organization, columns_1 = _a.columns, importer_style_preferences = _a.importer_style_preferences, integrations_1 = _a.integrations, preview_first_time = _a.preview_first_time;
164
+ _a = (_d.sent()).data, organization_1 = _a.organization, columns_1 = _a.columns, importer_style_preferences = _a.importer_style_preferences, integrations_1 = _a.integrations, preview_first_time = _a.preview_first_time, column_mappings_attributes = _a.column_mappings_attributes;
157
165
  setOrganization(organization_1);
158
166
  setTemplateHeaders(function () {
159
167
  // user has created dynamic columns
@@ -170,6 +178,7 @@ export var ImporterContextProvider = function (_a) {
170
178
  });
171
179
  setIntegrations(integrations_1);
172
180
  setPreviewFirstTime(preview_first_time);
181
+ setColumnMappingsAttributes(column_mappings_attributes);
173
182
  if (organization_1.plan && organization_1.plan.allow_style_customization) {
174
183
  setStyle(getCustomTheme(importer_style_preferences));
175
184
  }
@@ -222,10 +231,12 @@ export var ImporterContextProvider = function (_a) {
222
231
  theme: style.theme,
223
232
  logoURL: style.logoURL,
224
233
  integrations: integrations,
234
+ columnMappingsAttributes: columnMappingsAttributes,
225
235
  previewFirstTime: previewFirstTime,
226
236
  headerRowIndex: headerRowIndex,
227
237
  setHeaderRowIndex: setHeaderRowIndex,
228
238
  setUploadedData: setUploadedData,
239
+ setHeadersMappings: setHeadersMappings,
229
240
  formatRecord: formatRecord,
230
241
  setCurrentStepIndex: setCurrentStepIndex,
231
242
  setEnumFieldValueMatchings: setEnumFieldValueMatchings,
@@ -13,6 +13,42 @@ var __assign = (this && this.__assign) || function () {
13
13
  };
14
14
  return __assign.apply(this, arguments);
15
15
  };
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __generator = (this && this.__generator) || function (thisArg, body) {
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
+ function verb(n) { return function (v) { return step([n, v]); }; }
29
+ function step(op) {
30
+ if (f) throw new TypeError("Generator is already executing.");
31
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
32
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
+ if (y = 0, t) op = [op[0] & 2, t.value];
34
+ switch (op[0]) {
35
+ case 0: case 1: t = op; break;
36
+ case 4: _.label++; return { value: op[1], done: false };
37
+ case 5: _.label++; y = op[1]; op = [0]; continue;
38
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
+ default:
40
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
+ if (t[2]) _.ops.pop();
45
+ _.trys.pop(); continue;
46
+ }
47
+ op = body.call(thisArg, _);
48
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
+ }
51
+ };
16
52
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
53
  import { useMemo, useState } from "react";
18
54
  import { ActionPlus } from "../icons";
@@ -34,39 +70,53 @@ export var CustomActions = function () {
34
70
  var filteredOptions = useMemo(function () {
35
71
  return customActions.map(function (action) { return action.name; });
36
72
  }, [customActions]);
37
- var handleCustomAction = function (actionKey) {
38
- var recordsToRunAction = data.filter(function (row) {
39
- return selectedRows.includes(row._meta.id);
40
- });
41
- var recordsAfterActions = [];
42
- var action = customActions.find(function (action) { return action.name === actionKey; });
43
- if (!action || Object.keys(action).length === 0) {
44
- addToast(t("table_actions.custom_actions.general_error_toast"), "error");
45
- return;
46
- }
47
- for (var i = 0; i < recordsToRunAction.length; i++) {
48
- var currentRecord = recordsToRunAction[i];
49
- try {
50
- if (action.actionType === "record") {
51
- var newRecord = action.handler(currentRecord);
73
+ var handleCustomAction = function (actionKey) { return __awaiter(void 0, void 0, void 0, function () {
74
+ var recordsToRunAction, recordsAfterActions, action, i, currentRecord, newRecord, error_1;
75
+ return __generator(this, function (_a) {
76
+ switch (_a.label) {
77
+ case 0:
78
+ recordsToRunAction = data.filter(function (row) { var _a; return selectedRows.includes((_a = row === null || row === void 0 ? void 0 : row._meta) === null || _a === void 0 ? void 0 : _a.id); });
79
+ recordsAfterActions = [];
80
+ action = customActions.find(function (action) { return action.name === actionKey; });
81
+ if (!action || Object.keys(action).length === 0) {
82
+ addToast(t("table_actions.custom_actions.general_error_toast"), "error");
83
+ return [2 /*return*/];
84
+ }
85
+ i = 0;
86
+ _a.label = 1;
87
+ case 1:
88
+ if (!(i < recordsToRunAction.length)) return [3 /*break*/, 7];
89
+ currentRecord = recordsToRunAction[i];
90
+ _a.label = 2;
91
+ case 2:
92
+ _a.trys.push([2, 5, , 6]);
93
+ if (!(action.actionType === "record")) return [3 /*break*/, 4];
94
+ return [4 /*yield*/, action.handler(currentRecord)];
95
+ case 3:
96
+ newRecord = _a.sent();
52
97
  recordsAfterActions.push(newRecord);
53
- continue;
54
- }
98
+ return [3 /*break*/, 6];
99
+ case 4: return [3 /*break*/, 6];
100
+ case 5:
101
+ error_1 = _a.sent();
102
+ addToast(t("table_actions.custom_actions.error_toast", {
103
+ actionName: action.name,
104
+ }), "error");
105
+ return [3 /*break*/, 7];
106
+ case 6:
107
+ i++;
108
+ return [3 /*break*/, 1];
109
+ case 7:
110
+ if (recordsAfterActions.length) {
111
+ addToast(t("table_actions.custom_actions.success_toast", {
112
+ actionName: action.name,
113
+ }), "success");
114
+ }
115
+ updateRecord(recordsAfterActions);
116
+ return [2 /*return*/];
55
117
  }
56
- catch (error) {
57
- addToast(t("table_actions.custom_actions.error_toast", {
58
- actionName: action.name,
59
- }), "error");
60
- break;
61
- }
62
- }
63
- if (recordsAfterActions.length) {
64
- addToast(t("table_actions.custom_actions.success_toast", {
65
- actionName: action.name,
66
- }), "success");
67
- }
68
- updateRecord(recordsAfterActions);
69
- };
118
+ });
119
+ }); };
70
120
  var onSelect = function (value) {
71
121
  setIsMenuOpen(false);
72
122
  handleCustomAction(value);
@@ -23,11 +23,12 @@ import { DeleteIcon, ConfirmationDeleteIcon } from "./icons";
23
23
  import { Div } from "../../../styled/utils";
24
24
  import { ActionButton } from "./TableActions.styles";
25
25
  import { useTranslation } from "react-i18next";
26
+ import { addToast } from "../../../common/Toast";
26
27
  var StyledTooltipProvider = styled(TooltipProvider)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n width: fit-content;\n"], ["\n width: fit-content;\n"])));
27
28
  export var DeleteSelectedRows = function (_a) {
28
29
  var _b = _a.testId, testId = _b === void 0 ? "ta-delete-rows" : _b;
29
30
  var _c = useState(false), isConfirmationModalOpen = _c[0], setIsConfirmationModalOpen = _c[1];
30
- var _d = useSpreadsheetContext(), deleteRecords = _d.deleteRecords, selectedRows = _d.selectedRows, setSelectedRows = _d.setSelectedRows, setFilteredInputValue = _d.setFilteredInputValue;
31
+ var _d = useSpreadsheetContext(), deleteRecords = _d.deleteRecords, selectedRows = _d.selectedRows, setSelectedRows = _d.setSelectedRows, setFilteredInputValue = _d.setFilteredInputValue, spreadsheetFilter = _d.spreadsheetFilter, duplicateRecords = _d.duplicateRecords, resetSpreadsheetFilter = _d.resetSpreadsheetFilter;
31
32
  var t = useTranslation("review").t;
32
33
  var toggleModalVisibility = function () {
33
34
  setIsConfirmationModalOpen(function (oldValue) { return !oldValue; });
@@ -37,6 +38,13 @@ export var DeleteSelectedRows = function (_a) {
37
38
  toggleModalVisibility();
38
39
  setFilteredInputValue("");
39
40
  deleteRecords(selectedRows);
41
+ if (spreadsheetFilter.byRow === "duplicates") {
42
+ var selectedDuplicatesCount = Object.keys(duplicateRecords.records).filter(function (key) { return selectedRows.includes(key); }).length;
43
+ addToast(t("table_actions.filters_by_rows.duplicates_deleted", {
44
+ count: selectedDuplicatesCount,
45
+ }), "success");
46
+ resetSpreadsheetFilter();
47
+ }
40
48
  };
41
49
  var DescriptionUI = function () { return (_jsx(_Fragment, { children: _jsxs(Div, { children: [t("table_actions.delete_rows.confirmation_modal", {
42
50
  length: selectedRows.length,
@@ -21,8 +21,12 @@ import { useTranslation } from "react-i18next";
21
21
  var FilterContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n ", ";\n ", "\n"], ["\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n ", ";\n ", "\n"])), function (p) { return p.theme.css.body3; }, function (p) {
22
22
  return p.isSelected && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n border-radius: 4px;\n "], ["\n background: ", ";\n color: ", ";\n border-radius: 4px;\n "])), function (p) { return p.theme.colors.black; }, function (p) { return p.theme.colors.white; });
23
23
  });
24
- var Container = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: flex;\n border-radius: 4px;\n background-color: ", ";\n"], ["\n display: flex;\n border-radius: 4px;\n background-color: ", ";\n"])), function (p) { return p.theme.colors.backgroundInterface; });
25
- var FilteredDataCount = styled(Div)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"], ["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"])), function (p) { return p.theme.colors.highlight01; }, function (p) { return p.theme.colors.black; });
24
+ var Container = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background-color: ", ";\n border-radius: 4px;\n display: flex;\n"], ["\n background-color: ", ";\n border-radius: 4px;\n display: flex;\n"])), function (p) { return p.theme.colors.backgroundInterface; });
25
+ var Wrapper = styled(Div)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (_a) {
26
+ var isDisabled = _a.isDisabled;
27
+ return isDisabled && css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n cursor: not-allowed;\n\n > div:first-child {\n opacity: 0.7;\n pointer-events: none;\n }\n "], ["\n cursor: not-allowed;\n\n > div:first-child {\n opacity: 0.7;\n pointer-events: none;\n }\n "])));
28
+ });
29
+ var FilteredDataCount = styled(Div)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"], ["\n background: ", ";\n color: ", ";\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px 8px;\n margin-left: -3px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n"])), function (p) { return p.theme.colors.highlight01; }, function (p) { return p.theme.colors.black; });
26
30
  var Filter = function (_a) {
27
31
  var label = _a.label, count = _a.count, isSelected = _a.isSelected, onClick = _a.onClick, isDisabled = _a.isDisabled;
28
32
  var _b = useSpreadsheetContext(), filteredInputValue = _b.filteredInputValue, filteredDataCount = _b.filteredDataCount;
@@ -32,11 +36,11 @@ var Filter = function (_a) {
32
36
  return (_jsxs(Div, __assign({ disabledWhen: isDisabled, dflex: true, clickable: true, onClick: function () { return !isDisabled && onClick(); }, "data-test-id": labelToId(label) }, { children: [_jsxs(FilterContainer, __assign({ isSelected: isSelected }, { children: [label, count >= 0 && _jsxs(_Fragment, { children: ["\u00A0(", count, ")"] })] })), isSelected && filteredInputValue !== "" && (_jsx(FilteredDataCount, { children: _jsx(Div, __assign({ minw: 14, centered: true }, { children: filteredDataCount })) }))] })));
33
37
  };
34
38
  export var RowFilters = function () {
35
- var _a = useSpreadsheetContext(), spreadsheetFilter = _a.spreadsheetFilter, errors = _a.errors, filterRecordsByRowType = _a.filterRecordsByRowType, recordsWithValuesCount = _a.recordsWithValuesCount, isTransformTooltipOpened = _a.isTransformTooltipOpened;
39
+ var _a = useSpreadsheetContext(), spreadsheetFilter = _a.spreadsheetFilter, errors = _a.errors, filterRecordsByRowType = _a.filterRecordsByRowType, recordsWithValuesCount = _a.recordsWithValuesCount, isTransformTooltipOpened = _a.isTransformTooltipOpened, duplicateRecords = _a.duplicateRecords;
36
40
  var t = useTranslation("review").t;
37
41
  var all_rows = t("table_actions.filters_by_rows.all_rows");
38
- var valid_rows = t("table_actions.filters_by_rows.valid_rows");
39
42
  var invalid_rows = t("table_actions.filters_by_rows.invalid_rows");
40
- return (_jsxs(Container, { children: [_jsx(Filter, { isSelected: spreadsheetFilter.byRow === "all", label: all_rows, count: recordsWithValuesCount, onClick: function () { return filterRecordsByRowType("all"); }, isDisabled: isTransformTooltipOpened }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "valid", label: valid_rows, onClick: function () { return filterRecordsByRowType("valid"); }, isDisabled: isTransformTooltipOpened }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "invalid", label: invalid_rows, count: Object.values(errors).length, onClick: function () { return filterRecordsByRowType("invalid"); }, isDisabled: isTransformTooltipOpened })] }));
43
+ var duplicates = t("table_actions.filters_by_rows.duplicates");
44
+ return (_jsx(Wrapper, __assign({ isDisabled: isTransformTooltipOpened }, { children: _jsxs(Container, { children: [_jsx(Filter, { isSelected: spreadsheetFilter.byRow === "all", label: all_rows, count: recordsWithValuesCount, onClick: function () { return filterRecordsByRowType("all"); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "invalid", label: invalid_rows, count: Object.values(errors).length, onClick: function () { return filterRecordsByRowType("invalid"); } }), _jsx(Filter, { isSelected: spreadsheetFilter.byRow === "duplicates", label: duplicates, count: duplicateRecords.count, onClick: function () { return filterRecordsByRowType("duplicates"); } })] }) })));
41
45
  };
42
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
46
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -67,18 +67,10 @@ var integerTransformations = [
67
67
  label: "Ceiling (e.g. 3.01 -> 4)",
68
68
  },
69
69
  ];
70
- var enumTransformations = [
71
- {
72
- value: "autodetect",
73
- label: "Autodetect (e.g. 0/1 -> true/false)",
74
- isDefaultTransformation: true,
75
- },
76
- ];
77
70
  export var transformationsByColumnType = {
78
71
  string: stringTransformations,
79
72
  integer: integerTransformations,
80
73
  float: floatTransformations,
81
- enum: enumTransformations,
82
74
  url: urlTransformations,
83
75
  date: commonDateAndTimeTransformations,
84
76
  datetime: commonDateAndTimeTransformations,