fuse-importer 0.1.4-testing → 0.1.6-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 (129) hide show
  1. package/lib/esm/Importer/ImporterWithContext.js +38 -7
  2. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +1 -1
  3. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +4 -3
  4. package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +14 -9
  5. package/lib/esm/Importer/PreviewFirstTime.js +1 -1
  6. package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +6 -6
  7. package/lib/esm/Importer/Review/ReviewContextProvider.js +51 -223
  8. package/lib/esm/Importer/Review/ReviewWithContext.js +2 -2
  9. package/lib/esm/Importer/Stepper/StepperSubmitModal.d.ts +2 -1
  10. package/lib/esm/Importer/Stepper/StepperSubmitModal.js +4 -2
  11. package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +1 -1
  12. package/lib/esm/Importer/Stepper/index.js +20 -69
  13. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.d.ts +2 -1
  14. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +14 -86
  15. package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +11 -3
  16. package/lib/esm/Importer/Uploader/HeadersPreview.js +1 -1
  17. package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.d.ts +16 -0
  18. package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.js +63 -0
  19. package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.d.ts +18 -0
  20. package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.js +101 -0
  21. package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.d.ts +29 -0
  22. package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.js +150 -0
  23. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.d.ts +6 -4
  24. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +37 -37
  25. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.d.ts +6 -0
  26. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.js +138 -0
  27. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +7 -29
  28. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +11 -193
  29. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.d.ts +5 -0
  30. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.js +72 -0
  31. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.d.ts +4 -0
  32. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.js +46 -0
  33. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +2 -1
  34. package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.d.ts +31 -0
  35. package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.js +304 -0
  36. package/lib/esm/Importer/common/Spreadsheet/common/index.js +5 -4
  37. package/lib/esm/Importer/common/Spreadsheet/common/types.d.ts +2 -3
  38. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.d.ts +0 -2
  39. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +26 -11
  40. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +21 -13
  41. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +35 -36
  42. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +3 -3
  43. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +5 -1
  44. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +44 -18
  45. package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +1 -2
  46. package/lib/esm/Importer/common/Spreadsheet/index.d.ts +0 -1
  47. package/lib/esm/Importer/common/Spreadsheet/index.js +1 -84
  48. package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -2
  49. package/lib/esm/Importer/common/Spreadsheet/styles.js +13 -1
  50. package/lib/esm/Importer/common/Spreadsheet/transformation/index.d.ts +2 -1
  51. package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +9 -5
  52. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.d.ts +8 -2
  53. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +4 -16
  54. package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.d.ts +5 -0
  55. package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.js +81 -0
  56. package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +5 -3
  57. package/lib/esm/Importer/common/Spreadsheet/validation/index.js +13 -17
  58. package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +3 -2
  59. package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +16 -7
  60. package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +4 -2
  61. package/lib/esm/Importer/contexts/ImporterContextProvider.js +121 -13
  62. package/lib/esm/Importer/data/index.d.ts +1 -0
  63. package/lib/esm/Importer/data/index.js +44 -5
  64. package/lib/esm/Importer/hooks/useExportDataToFile.d.ts +5 -0
  65. package/lib/esm/Importer/hooks/useExportDataToFile.js +54 -0
  66. package/lib/esm/Importer/hooks/useSubmitToServer.d.ts +7 -0
  67. package/lib/esm/Importer/hooks/useSubmitToServer.js +192 -0
  68. package/lib/esm/common/EventManagerContextProvider/index.d.ts +22 -0
  69. package/lib/esm/common/EventManagerContextProvider/index.js +38 -0
  70. package/lib/esm/common/FileUploadDropzone/ImporterDropzone.d.ts +16 -0
  71. package/lib/esm/common/FileUploadDropzone/ImporterDropzone.js +108 -0
  72. package/lib/esm/common/FileUploadDropzone/index.d.ts +1 -0
  73. package/lib/esm/common/FileUploadDropzone/index.js +1 -0
  74. package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +55 -41
  75. package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +25 -16
  76. package/lib/esm/common/Table/TableActions/ExportData.js +5 -3
  77. package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +38 -9
  78. package/lib/esm/common/Table/TableActions/RowFilters.js +53 -5
  79. package/lib/esm/common/Table/TableActions/SearchRows.js +3 -1
  80. package/lib/esm/common/Table/TableActions/TableActions.js +2 -1
  81. package/lib/esm/common/Table/TableActions/TableActions.styles.js +1 -1
  82. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.d.ts +1 -0
  83. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +25 -17
  84. package/lib/esm/common/Table/TableActions/ValidationProgress.d.ts +2 -0
  85. package/lib/esm/common/Table/TableActions/ValidationProgress.js +22 -0
  86. package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +1 -1
  87. package/lib/esm/common/Table/TableView/TableRows/TableRow.js +2 -2
  88. package/lib/esm/common/Table/TableView/TableRows/index.js +21 -6
  89. package/lib/esm/common/Table/TableView/index.d.ts +1 -1
  90. package/lib/esm/common/Table/TableView/index.js +6 -15
  91. package/lib/esm/common/Table/TableView/types.d.ts +8 -9
  92. package/lib/esm/common/Table/index.d.ts +2 -1
  93. package/lib/esm/common/Table/index.js +2 -2
  94. package/lib/esm/common/Toast.js +3 -2
  95. package/lib/esm/common/TooltipProvider.d.ts +2 -0
  96. package/lib/esm/common/TooltipProvider.js +12 -9
  97. package/lib/esm/common/buttons.d.ts +5 -1
  98. package/lib/esm/common/buttons.js +13 -7
  99. package/lib/esm/common/columnsTransformations.js +1 -1
  100. package/lib/esm/common/datePatterns.d.ts +1 -0
  101. package/lib/esm/common/datePatterns.js +10 -0
  102. package/lib/esm/common/icons/index.d.ts +1 -0
  103. package/lib/esm/common/icons/index.js +1 -0
  104. package/lib/esm/common/index.d.ts +1 -0
  105. package/lib/esm/common/index.js +1 -0
  106. package/lib/esm/common/inputs/Autocomplete.js +1 -1
  107. package/lib/esm/locales/de.d.ts +1 -1
  108. package/lib/esm/locales/de.js +1 -1
  109. package/lib/esm/locales/en.d.ts +1 -1
  110. package/lib/esm/locales/en.js +4 -4
  111. package/lib/esm/locales/es.d.ts +1 -1
  112. package/lib/esm/locales/es.js +1 -1
  113. package/lib/esm/locales/fr.d.ts +1 -1
  114. package/lib/esm/locales/fr.js +1 -1
  115. package/lib/esm/types.d.ts +20 -5
  116. package/lib/main.js +2 -2
  117. package/package.json +6 -4
  118. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +0 -8
  119. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +0 -36
  120. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +0 -5
  121. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +0 -19
  122. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.d.ts +0 -3
  123. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +0 -14
  124. package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +0 -33
  125. package/lib/esm/Importer/common/Spreadsheet/hooks.js +0 -256
  126. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.d.ts +0 -11
  127. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +0 -35
  128. package/lib/esm/common/Table/TableActions/hooks.d.ts +0 -18
  129. package/lib/esm/common/Table/TableActions/hooks.js +0 -41
@@ -0,0 +1,150 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
14
+ import { useEventManagerContext } from "../../../../common/EventManagerContextProvider";
15
+ import { useDataSetContext } from "../DataSetContextProvider";
16
+ import { useDuplicateDataContext } from "../DuplicateDataContextProvider";
17
+ import { getFilterConditions } from "../SpreadsheetContextProvider/filterMethods";
18
+ import { useSpreadsheetFilter, } from "../SpreadsheetContextProvider/useSpreadsheetFilter";
19
+ import { useValidationContext } from "../ValidationContextProvider";
20
+ var getDefaultSortCompareFn = function (sortBy) {
21
+ return function (a, b) {
22
+ var aField = a[sortBy.field];
23
+ var bField = b[sortBy.field];
24
+ if (aField === bField)
25
+ return a._meta.rowIndex > b._meta.rowIndex ? 1 : -1;
26
+ if (!aField)
27
+ return 1;
28
+ if (!bField)
29
+ return -1;
30
+ if (sortBy.direction === "asc")
31
+ return aField > bField ? 1 : -1;
32
+ return aField < bField ? 1 : -1;
33
+ };
34
+ };
35
+ export var FilteredDataContext = createContext({});
36
+ export var FilteredDataContextProvider = function (_a) {
37
+ var _b = _a.getSortCompareFn, getSortCompareFn = _b === void 0 ? getDefaultSortCompareFn : _b, children = _a.children;
38
+ var _c = useSpreadsheetFilter(), spreadsheetFilter = _c.spreadsheetFilter, filterRecordsByRowType = _c.filterRecordsByRowType, filterRecordsByFieldErrors = _c.filterRecordsByFieldErrors, resetSpreadsheetFilter = _c.resetSpreadsheetFilter;
39
+ var _d = useState(""), filteredInputValue = _d[0], setFilteredInputValue = _d[1];
40
+ var _e = useState(null), sortByFieldErrors = _e[0], setSortByFieldErrors = _e[1];
41
+ var _f = useState(null), sortByFieldWarnings = _f[0], setSortByFieldWarnings = _f[1];
42
+ var _g = useState(null), sortBy = _g[0], setSortBy = _g[1];
43
+ var _h = useState(false), recalculateFilters = _h[0], setRecalculateFilters = _h[1];
44
+ var lastFilteredRecordId = useRef(null);
45
+ var _j = useEventManagerContext(), on = _j.on, off = _j.off, EVENTS = _j.EVENTS;
46
+ var _k = useDataSetContext(), getRecord = _k.getRecord, dataSet = _k.dataSet;
47
+ var duplicateRecordIds = useDuplicateDataContext().duplicateRecordIds;
48
+ var _l = useValidationContext(), errors = _l.errors, warnings = _l.warnings;
49
+ var reset = function () {
50
+ resetSpreadsheetFilter();
51
+ setFilteredInputValue("");
52
+ setSortByFieldErrors(null);
53
+ setSortBy(null);
54
+ };
55
+ var sortByFieldError = function (a, b, errors, warnings, sortByFieldErrors, sortByFieldWarnings) {
56
+ var _a, _b;
57
+ var aRecordId = a._meta.id;
58
+ var bRecordId = b._meta.id;
59
+ var aHasErrors = !!((_a = (sortByFieldErrors
60
+ ? errors.current
61
+ : warnings.current)[aRecordId]) === null || _a === void 0 ? void 0 : _a[sortByFieldErrors || sortByFieldWarnings]);
62
+ var bHasErrors = !!((_b = (sortByFieldErrors
63
+ ? errors.current
64
+ : warnings.current)[bRecordId]) === null || _b === void 0 ? void 0 : _b[sortByFieldErrors || sortByFieldWarnings]);
65
+ if (aHasErrors === bHasErrors) {
66
+ return a._meta.rowIndex > b._meta.rowIndex ? 1 : -1;
67
+ }
68
+ return bHasErrors ? 1 : -1;
69
+ };
70
+ var recalculateFilteredIds = function () {
71
+ var filterConditions = getFilterConditions(spreadsheetFilter, getRecord, errors, filteredInputValue, duplicateRecordIds);
72
+ var ids = [];
73
+ var lastRecordId;
74
+ var _loop_1 = function (key) {
75
+ if (filterConditions.every(function (condition) { return condition(key); })) {
76
+ lastRecordId = key;
77
+ ids.push(key);
78
+ }
79
+ };
80
+ for (var key in dataSet.current) {
81
+ _loop_1(key);
82
+ }
83
+ lastFilteredRecordId.current = lastRecordId;
84
+ if (sortBy) {
85
+ ids.sort(function (a, b) { return getSortCompareFn(sortBy)(getRecord(a), getRecord(b)); });
86
+ }
87
+ else if (!!sortByFieldErrors || !!sortByFieldWarnings) {
88
+ ids.sort(function (a, b) {
89
+ return sortByFieldError(getRecord(a), getRecord(b), errors, warnings, sortByFieldErrors, sortByFieldWarnings);
90
+ });
91
+ }
92
+ return ids;
93
+ };
94
+ var filteredDataIds = useMemo(function () {
95
+ return recalculateFilteredIds();
96
+ }, [
97
+ filteredInputValue,
98
+ spreadsheetFilter,
99
+ sortBy,
100
+ dataSet.current,
101
+ duplicateRecordIds.size,
102
+ sortByFieldErrors,
103
+ sortByFieldWarnings,
104
+ recalculateFilters,
105
+ ]);
106
+ useEffect(function () {
107
+ reset();
108
+ setRecalculateFilters(function (prev) { return !prev; });
109
+ }, [dataSet.current]);
110
+ useEffect(function () {
111
+ var listener = function () {
112
+ setRecalculateFilters(function (prev) { return !prev; });
113
+ };
114
+ on(EVENTS.ON_LAST_ROW_CHANGED, listener);
115
+ return function () {
116
+ off(EVENTS.ON_LAST_ROW_CHANGED, listener);
117
+ };
118
+ }, []);
119
+ var isFiltering = useMemo(function () { return !!filteredInputValue; }, [filteredInputValue]);
120
+ var handleSortByFieldErrors = useCallback(function (field) {
121
+ setSortByFieldErrors(field === sortByFieldErrors ? null : field);
122
+ setSortByFieldWarnings(null);
123
+ setSortBy(null);
124
+ }, [sortByFieldErrors]);
125
+ var handleSortByFieldWarnings = useCallback(function (field) {
126
+ setSortByFieldWarnings(field === sortByFieldWarnings ? null : field);
127
+ setSortByFieldErrors(null);
128
+ setSortBy(null);
129
+ }, [sortByFieldWarnings]);
130
+ var value = {
131
+ filteredDataIds: filteredDataIds,
132
+ filteredInputValue: filteredInputValue,
133
+ setFilteredInputValue: setFilteredInputValue,
134
+ sortByFieldErrors: sortByFieldErrors,
135
+ sortByFieldWarnings: sortByFieldWarnings,
136
+ handleSortByFieldErrors: handleSortByFieldErrors,
137
+ handleSortByFieldWarnings: handleSortByFieldWarnings,
138
+ resetSpreadsheetFilter: resetSpreadsheetFilter,
139
+ filterRecordsByRowType: filterRecordsByRowType,
140
+ filterRecordsByFieldErrors: filterRecordsByFieldErrors,
141
+ sortBy: sortBy,
142
+ setSortBy: setSortBy,
143
+ spreadsheetFilter: spreadsheetFilter,
144
+ isFiltering: isFiltering,
145
+ lastFilteredRecordId: lastFilteredRecordId,
146
+ setRecalculateFilters: setRecalculateFilters,
147
+ };
148
+ return (_jsx(FilteredDataContext.Provider, __assign({ value: value }, { children: children })));
149
+ };
150
+ export var useFilteredDataContext = function () { return useContext(FilteredDataContext); };
@@ -1,5 +1,7 @@
1
- import { BatchValidationErrors, RecordDataSet } from "../../../../types";
1
+ import { DuplicateRecordIds, Record } from "../../../../types";
2
2
  import { SpreadsheetFilter } from "./useSpreadsheetFilter";
3
- export declare const filterRecordsBySearchValue: (obj: RecordDataSet, value: string) => RecordDataSet;
4
- export declare const filterRecordsByType: (obj: RecordDataSet, filterType: SpreadsheetFilter["byRow"]) => RecordDataSet;
5
- export declare const filterRecordsByError: (obj: RecordDataSet, keyToFilter: string, errors: BatchValidationErrors) => RecordDataSet;
3
+ type FilterCondition = (id: string) => boolean;
4
+ export declare const getFilterConditions: (spreadsheetFilter: SpreadsheetFilter, getRecord: (recordId: string) => Record, errors: {
5
+ current: Record;
6
+ }, filteredInputValue: string, duplicateRecordIds: DuplicateRecordIds) => FilterCondition[];
7
+ export {};
@@ -1,9 +1,30 @@
1
1
  import { rowIsEmpty } from "./utils";
2
- //Filter records by search value
3
- export var filterRecordsBySearchValue = function (obj, value) {
4
- var isObject = function (value) {
5
- return typeof value === "object" && value !== null && !Array.isArray(value);
6
- };
2
+ export var getFilterConditions = function (spreadsheetFilter, getRecord, errors, filteredInputValue, duplicateRecordIds) {
3
+ var filterConditions = [];
4
+ switch (spreadsheetFilter.type) {
5
+ case "rowBased":
6
+ if (spreadsheetFilter.byRow === "all") {
7
+ filterConditions.push(function (key) { return true; });
8
+ }
9
+ if (spreadsheetFilter.byRow === "invalid") {
10
+ filterConditions.push(function (key) {
11
+ var _a, _b;
12
+ return (((_b = (_a = getRecord(key)) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.isInvalid) && !rowIsEmpty(getRecord(key)));
13
+ });
14
+ }
15
+ if (spreadsheetFilter.byRow === "duplicates")
16
+ filterConditions.push(function (key) { return duplicateRecordIds.has(key); });
17
+ break;
18
+ case "columnBased":
19
+ if (spreadsheetFilter.byColumn.type === "fieldWithErrors") {
20
+ filterConditions.push(function (key) {
21
+ var _a, _b, _c;
22
+ return ((_b = (_a = getRecord(key)) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.isInvalid) &&
23
+ ((_c = errors.current[key]) === null || _c === void 0 ? void 0 : _c[spreadsheetFilter.byColumn.field]);
24
+ });
25
+ }
26
+ break;
27
+ }
7
28
  var includesSearchValue = function (value, searchValue) {
8
29
  if (typeof value === "string" || typeof value === "number") {
9
30
  var stringValue = String(value).toLowerCase();
@@ -12,38 +33,17 @@ export var filterRecordsBySearchValue = function (obj, value) {
12
33
  }
13
34
  return false;
14
35
  };
15
- var filteredObj = {};
16
- for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) {
17
- var _b = _a[_i], key = _b[0], currentObj = _b[1];
18
- if (!isObject(currentObj)) {
19
- continue;
20
- }
21
- var matches = Object.values(currentObj).some(function (propertyValue) {
22
- return includesSearchValue(propertyValue, value);
36
+ if (filteredInputValue) {
37
+ filterConditions.push(function (key) {
38
+ var record = getRecord(key);
39
+ // check if any of the values in the record contain the search input
40
+ for (var fieldName in record) {
41
+ if (includesSearchValue(record[fieldName], filteredInputValue)) {
42
+ return true;
43
+ }
44
+ }
45
+ return false;
23
46
  });
24
- if (matches) {
25
- filteredObj[key] = currentObj;
26
- }
27
- }
28
- return filteredObj;
29
- };
30
- export var filterRecordsByType = function (obj, filterType) {
31
- var _a, _b;
32
- var filteredObj = {};
33
- for (var key in obj) {
34
- if (filterType === "all" ||
35
- (((_b = (_a = obj[key]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.isInvalid) && !rowIsEmpty(obj[key]))) {
36
- filteredObj[key] = obj[key];
37
- }
38
- }
39
- return filteredObj;
40
- };
41
- //Filter records by selected column error
42
- export var filterRecordsByError = function (obj, keyToFilter, errors) {
43
- var filteredObj = {};
44
- var filteredKeys = Object.keys(errors).filter(function (key) { var _a, _b; return ((_b = (_a = obj[key]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.isInvalid) && errors[key][keyToFilter]; });
45
- for (var i = 0; i < filteredKeys.length; i++) {
46
- filteredObj[filteredKeys[i]] = obj[filteredKeys[i]];
47
47
  }
48
- return filteredObj;
48
+ return filterConditions;
49
49
  };
@@ -0,0 +1,6 @@
1
+ export declare const RecordHashCalculator: () => {
2
+ computeHashesForRecords: (dataSet: any, fields: any, _onHashesComputed: any) => void;
3
+ };
4
+ export declare const RecordValueHashCalculator: () => {
5
+ computeDuplicateValueHashes: (dataSet: any, _field: any, _onDuplicateHashesComputed: any) => Promise<void>;
6
+ };
@@ -0,0 +1,138 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { useBatchProcessing } from "./useBatchProcessing";
38
+ import { rowIsEmpty } from "./utils";
39
+ var findDuplicateHashes = function (sortedHashes) {
40
+ var _a;
41
+ var results = [];
42
+ for (var i = 0; i < sortedHashes.length - 1; i++) {
43
+ if (sortedHashes[i + 1].hash == sortedHashes[i].hash ||
44
+ ((_a = sortedHashes[i - 1]) === null || _a === void 0 ? void 0 : _a.hash) == sortedHashes[i].hash) {
45
+ results.push(sortedHashes[i]);
46
+ }
47
+ }
48
+ return results;
49
+ };
50
+ function compareHashes(a, b) {
51
+ if (a.hash < b.hash)
52
+ return -1;
53
+ if (a.hash > b.hash)
54
+ return 1;
55
+ return 0;
56
+ }
57
+ // generate hashes that can be used for comparing two records
58
+ // for the sake of tracking duplicates
59
+ // if the hash for one record equals the hash for another,
60
+ // the two records are duplicates
61
+ export var RecordHashCalculator = function () {
62
+ var computeHashesForBatch = function (dataSet, fields) {
63
+ var hashMap = [];
64
+ var _loop_1 = function (recordKey) {
65
+ var record = dataSet[recordKey];
66
+ var key = fields.map(function (field) { return record[field.name]; }).join("|");
67
+ if (!rowIsEmpty(record)) {
68
+ hashMap.push({ id: record._meta.id, hash: key });
69
+ }
70
+ };
71
+ for (var recordKey in dataSet) {
72
+ _loop_1(recordKey);
73
+ }
74
+ return hashMap;
75
+ };
76
+ var calculatingHashes = false;
77
+ var computeHashesForRecords = function (dataSet, fields, _onHashesComputed) {
78
+ if (!dataSet || calculatingHashes) {
79
+ return;
80
+ }
81
+ var processInBatches = useBatchProcessing().processInBatches;
82
+ calculatingHashes = true;
83
+ var results = [];
84
+ processInBatches(dataSet, function (batch) {
85
+ results = results.concat(computeHashesForBatch(batch, fields));
86
+ });
87
+ results.sort(compareHashes);
88
+ var duplicateHashes = findDuplicateHashes(results);
89
+ _onHashesComputed(duplicateHashes);
90
+ calculatingHashes = false;
91
+ };
92
+ return {
93
+ computeHashesForRecords: computeHashesForRecords,
94
+ };
95
+ };
96
+ // generate hashes that can be used for comparing the values of a specific field
97
+ // for the sake of tracking uniqueness
98
+ export var RecordValueHashCalculator = function () {
99
+ var columnsBeingCalculated = [];
100
+ var computeHashesForBatch = function (dataSet, field) {
101
+ var hashMap = [];
102
+ var isCaseInsensitive = field.validations.find(function (v) {
103
+ return v.name === "unique_case_insensitive";
104
+ }) !== undefined;
105
+ for (var recordKey in dataSet) {
106
+ var record = dataSet[recordKey];
107
+ var key = record[field.name];
108
+ if (isCaseInsensitive) {
109
+ key = key.toLowerCase();
110
+ }
111
+ if (key) {
112
+ hashMap.push({ id: record._meta.id, hash: key });
113
+ }
114
+ }
115
+ return hashMap;
116
+ };
117
+ var computeDuplicateValueHashes = function (dataSet, _field, _onDuplicateHashesComputed) { return __awaiter(void 0, void 0, void 0, function () {
118
+ var processInBatches, results;
119
+ return __generator(this, function (_a) {
120
+ if (!dataSet || columnsBeingCalculated[_field.name]) {
121
+ return [2 /*return*/];
122
+ }
123
+ columnsBeingCalculated[_field.name] = true;
124
+ processInBatches = useBatchProcessing().processInBatches;
125
+ results = [];
126
+ processInBatches(dataSet, function (batch) {
127
+ results = results.concat(computeHashesForBatch(batch, _field));
128
+ });
129
+ results.sort(compareHashes);
130
+ _onDuplicateHashesComputed(results);
131
+ columnsBeingCalculated[_field.name] = false;
132
+ return [2 /*return*/];
133
+ });
134
+ }); };
135
+ return {
136
+ computeDuplicateValueHashes: computeDuplicateValueHashes,
137
+ };
138
+ };
@@ -1,47 +1,25 @@
1
1
  import React from "react";
2
2
  import { SpreadsheetOptions } from "../../../..";
3
- import { BatchValidationErrors, DuplicateRecords, Field, Record, RecordDataSet } from "../../../../types";
4
- import { SortBy, SpreadsheetProps } from "../common/types";
5
- import { ValidationState } from "../hooks";
6
- import { SpreadsheetFilter } from "./useSpreadsheetFilter";
3
+ import { Field, RecordDataSet } from "../../../../types";
4
+ import { SpreadsheetProps } from "../common/types";
7
5
  export type OnDataSetChanged = (dataSet: RecordDataSet) => void;
8
- export type OnValidationStateChanged = (state: ValidationState) => void;
9
6
  type State = {
10
- data: Record[];
7
+ filteredDataIds: string[];
11
8
  fields: Field[];
12
9
  isReadOnly?: boolean;
13
- errors: BatchValidationErrors;
14
- warnings: BatchValidationErrors;
15
10
  options: SpreadsheetOptions;
16
- sortByFieldErrors: string;
17
- sortByFieldWarnings: string;
18
- updateRecord: (record: Record) => void;
19
- setSortByFieldErrors: React.Dispatch<React.SetStateAction<string>>;
20
11
  selectedRows: string[];
21
12
  setSelectedRows: React.Dispatch<React.SetStateAction<string[]>>;
22
- setSortByFieldWarnings: React.Dispatch<React.SetStateAction<string>>;
23
- deleteRecords: (selectedRecords: string[]) => void;
24
13
  lastClickedIndexRef: React.MutableRefObject<number | null>;
25
- filteredInputValue: string;
26
- setFilteredInputValue: React.Dispatch<React.SetStateAction<string>>;
27
- addNewRowsToSpreadsheet: () => void;
28
- spreadsheetFilter: SpreadsheetFilter;
29
- filterRecordsByRowType: (filterByRow: SpreadsheetFilter["byRow"]) => void;
30
- filterRecordsByFieldErrors: (filterByColumn: string) => void;
31
- resetSpreadsheetFilter: () => void;
32
- recordsWithValuesCount: number;
33
- filteredDataCount: number;
34
14
  checkboxColumnWidth: number;
35
- isFiltering: boolean;
36
- sortBy: SortBy | null;
37
- setSortBy: React.Dispatch<React.SetStateAction<SortBy>>;
38
15
  setIsTransformTooltipOpened: React.Dispatch<React.SetStateAction<boolean>>;
39
16
  isTransformTooltipOpened: boolean;
40
- duplicateRecords: DuplicateRecords;
41
- } & ValidationState;
17
+ inefficientRerender: boolean;
18
+ setInefficientRerender: React.Dispatch<React.SetStateAction<boolean>>;
19
+ };
42
20
  type Props = SpreadsheetProps & {
43
21
  children: JSX.Element;
44
22
  };
45
- export declare const SpreadsheetContextProvider: ({ initialDataSet, fields, options, isReadOnly, children, onValidateRecord, onDataSetChanged, onValidationStateChanged, selectedRows, setSelectedRows, getSortCompareFn, }: Props) => JSX.Element;
23
+ export declare const SpreadsheetContextProvider: ({ fields, options, isReadOnly, children, onValidateRecord, selectedRows, setSelectedRows, }: Props) => JSX.Element;
46
24
  export declare const useSpreadsheetContext: () => State;
47
25
  export {};