fuse-importer 0.27.0 → 0.30.0

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 (183) hide show
  1. package/lib/esm/Importer/ImporterWithContext.d.ts +2 -0
  2. package/lib/esm/Importer/ImporterWithContext.js +51 -13
  3. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +2 -2
  4. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +4 -3
  5. package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +14 -9
  6. package/lib/esm/Importer/Matcher/index.js +0 -11
  7. package/lib/esm/Importer/PreviewFirstTime.js +1 -1
  8. package/lib/esm/Importer/Review/AppResponseModal.js +2 -2
  9. package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +8 -6
  10. package/lib/esm/Importer/Review/ReviewContextProvider.js +72 -195
  11. package/lib/esm/Importer/Review/ReviewWithContext.js +2 -2
  12. package/lib/esm/Importer/Stepper/StepperSubmitModal.d.ts +2 -1
  13. package/lib/esm/Importer/Stepper/StepperSubmitModal.js +4 -2
  14. package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +1 -1
  15. package/lib/esm/Importer/Stepper/index.js +36 -13
  16. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.d.ts +2 -1
  17. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +15 -64
  18. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +2 -2
  19. package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +11 -3
  20. package/lib/esm/Importer/Uploader/HeadersPreview.js +1 -1
  21. package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.d.ts +16 -0
  22. package/lib/esm/Importer/common/Spreadsheet/DataSetContextProvider/index.js +63 -0
  23. package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.d.ts +19 -0
  24. package/lib/esm/Importer/common/Spreadsheet/DuplicateDataContextProvider/index.js +155 -0
  25. package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.d.ts +29 -0
  26. package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.js +150 -0
  27. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.d.ts +6 -4
  28. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +38 -45
  29. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.d.ts +7 -0
  30. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/hashCalculators.js +152 -0
  31. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +7 -30
  32. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +10 -141
  33. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.d.ts +5 -0
  34. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useBatchProcessing.js +81 -0
  35. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.d.ts +5 -0
  36. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.js +119 -0
  37. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.d.ts +1 -1
  38. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.d.ts +1 -0
  39. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +8 -0
  40. package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.d.ts +31 -0
  41. package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.js +324 -0
  42. package/lib/esm/Importer/common/Spreadsheet/common/index.js +18 -9
  43. package/lib/esm/Importer/common/Spreadsheet/common/types.d.ts +2 -3
  44. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.d.ts +0 -2
  45. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +26 -11
  46. package/lib/esm/Importer/common/Spreadsheet/components/FindAndReplace/index.d.ts +6 -0
  47. package/lib/esm/Importer/common/Spreadsheet/components/FindAndReplace/index.js +88 -0
  48. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +25 -17
  49. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +48 -47
  50. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +3 -3
  51. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.d.ts +1 -0
  52. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +7 -3
  53. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.d.ts +3 -1
  54. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +45 -11
  55. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +12 -5
  56. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +81 -26
  57. package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.d.ts +11 -0
  58. package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.js +29 -0
  59. package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +1 -2
  60. package/lib/esm/Importer/common/Spreadsheet/index.d.ts +0 -1
  61. package/lib/esm/Importer/common/Spreadsheet/index.js +1 -84
  62. package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -2
  63. package/lib/esm/Importer/common/Spreadsheet/styles.js +13 -1
  64. package/lib/esm/Importer/common/Spreadsheet/transformation/index.d.ts +2 -2
  65. package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +35 -13
  66. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators/dateTimeAutoformatUtils.d.ts +5 -0
  67. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators/dateTimeAutoformatUtils.js +231 -0
  68. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators/index.d.ts +18 -0
  69. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators/index.js +179 -0
  70. package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.d.ts +5 -0
  71. package/lib/esm/Importer/common/Spreadsheet/useFieldSorting.js +81 -0
  72. package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +5 -3
  73. package/lib/esm/Importer/common/Spreadsheet/validation/index.js +13 -17
  74. package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +3 -2
  75. package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +23 -7
  76. package/lib/esm/Importer/common/theme.d.ts +1 -0
  77. package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +13 -4
  78. package/lib/esm/Importer/contexts/ImporterContextProvider.js +150 -21
  79. package/lib/esm/Importer/data/index.d.ts +7 -3
  80. package/lib/esm/Importer/data/index.js +49 -20
  81. package/lib/esm/Importer/hooks/useExportDataToFile.d.ts +5 -0
  82. package/lib/esm/Importer/hooks/useExportDataToFile.js +54 -0
  83. package/lib/esm/Importer/hooks/useSubmitToServer.d.ts +7 -0
  84. package/lib/esm/Importer/hooks/useSubmitToServer.js +214 -0
  85. package/lib/esm/Importer/index.d.ts +4 -3
  86. package/lib/esm/Importer/index.js +2 -2
  87. package/lib/esm/common/CircleSpinner.d.ts +1 -0
  88. package/lib/esm/common/CircleSpinner.js +13 -0
  89. package/lib/esm/common/ConfirmationModal.js +1 -1
  90. package/lib/esm/common/EventManagerContextProvider/index.d.ts +22 -0
  91. package/lib/esm/common/EventManagerContextProvider/index.js +38 -0
  92. package/lib/esm/common/FileUploadDropzone/ImporterDropzone.d.ts +16 -0
  93. package/lib/esm/common/FileUploadDropzone/ImporterDropzone.js +143 -0
  94. package/lib/esm/common/FileUploadDropzone/index.d.ts +1 -0
  95. package/lib/esm/common/FileUploadDropzone/index.js +1 -0
  96. package/lib/esm/common/Modal.js +2 -2
  97. package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.d.ts +1 -0
  98. package/lib/esm/common/Table/TableActions/CustomActions/CustomActions.js +150 -0
  99. package/lib/esm/common/Table/TableActions/CustomActions/index.d.ts +1 -0
  100. package/lib/esm/common/Table/TableActions/CustomActions/index.js +1 -0
  101. package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +25 -8
  102. package/lib/esm/common/Table/TableActions/ExportData.js +5 -3
  103. package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +41 -10
  104. package/lib/esm/common/Table/TableActions/RowFilters.js +63 -11
  105. package/lib/esm/common/Table/TableActions/SearchRows.js +28 -17
  106. package/lib/esm/common/Table/TableActions/TableActions.js +15 -4
  107. package/lib/esm/common/Table/TableActions/TableActions.styles.d.ts +1 -0
  108. package/lib/esm/common/Table/TableActions/TableActions.styles.js +4 -3
  109. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.d.ts +6 -0
  110. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +71 -0
  111. package/lib/esm/common/Table/TableActions/ValidationProgress.d.ts +2 -0
  112. package/lib/esm/common/Table/TableActions/ValidationProgress.js +22 -0
  113. package/lib/esm/common/Table/TableActions/icons.d.ts +3 -0
  114. package/lib/esm/common/Table/TableActions/icons.js +3 -0
  115. package/lib/esm/common/Table/TableActions/useFindAndReplace.d.ts +5 -0
  116. package/lib/esm/common/Table/TableActions/useFindAndReplace.js +45 -0
  117. package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +1 -1
  118. package/lib/esm/common/Table/TableView/TableRows/TableRow.js +3 -3
  119. package/lib/esm/common/Table/TableView/TableRows/index.js +21 -6
  120. package/lib/esm/common/Table/TableView/index.d.ts +1 -1
  121. package/lib/esm/common/Table/TableView/index.js +7 -16
  122. package/lib/esm/common/Table/TableView/types.d.ts +9 -9
  123. package/lib/esm/common/Table/index.d.ts +2 -1
  124. package/lib/esm/common/Table/index.js +2 -2
  125. package/lib/esm/common/Toast.d.ts +42 -3
  126. package/lib/esm/common/Toast.js +56 -18
  127. package/lib/esm/common/TooltipProvider.d.ts +2 -0
  128. package/lib/esm/common/TooltipProvider.js +12 -9
  129. package/lib/esm/common/buttons.d.ts +5 -1
  130. package/lib/esm/common/buttons.js +19 -13
  131. package/lib/esm/common/columnsTransformations.d.ts +1 -0
  132. package/lib/esm/common/columnsTransformations.js +10 -16
  133. package/lib/esm/common/columnsValidations.d.ts +0 -26
  134. package/lib/esm/common/columnsValidations.js +1 -31
  135. package/lib/esm/common/datePatterns.d.ts +26 -0
  136. package/lib/esm/common/datePatterns.js +327 -0
  137. package/lib/esm/common/icons/index.d.ts +4 -0
  138. package/lib/esm/common/icons/index.js +6 -2
  139. package/lib/esm/common/index.d.ts +2 -0
  140. package/lib/esm/common/index.js +2 -0
  141. package/lib/esm/common/inputs/Autocomplete.js +2 -2
  142. package/lib/esm/common/inputs/Checkbox.d.ts +2 -1
  143. package/lib/esm/common/inputs/Checkbox.js +9 -7
  144. package/lib/esm/common/inputs/SelectMenu.d.ts +2 -1
  145. package/lib/esm/common/inputs/SelectMenu.js +14 -3
  146. package/lib/esm/common/inputs/TextInput.js +1 -1
  147. package/lib/esm/index.d.ts +3 -1
  148. package/lib/esm/index.js +9 -2
  149. package/lib/esm/locales/de.d.ts +13 -1
  150. package/lib/esm/locales/de.js +14 -2
  151. package/lib/esm/locales/en.d.ts +26 -1
  152. package/lib/esm/locales/en.js +30 -5
  153. package/lib/esm/locales/es.d.ts +13 -1
  154. package/lib/esm/locales/es.js +14 -2
  155. package/lib/esm/locales/fr.d.ts +13 -1
  156. package/lib/esm/locales/fr.js +14 -2
  157. package/lib/esm/styled/theme/colorPalette.d.ts +2 -0
  158. package/lib/esm/styled/theme/colorPalette.js +1 -0
  159. package/lib/esm/styled/theme/index.d.ts +1 -0
  160. package/lib/esm/styled/theme/textCss.js +1 -1
  161. package/lib/esm/types.d.ts +48 -5
  162. package/lib/esm/types.js +0 -1
  163. package/lib/esm/utils/index.d.ts +1 -0
  164. package/lib/esm/utils/index.js +4 -0
  165. package/lib/main.js +24 -24
  166. package/lib/main.js.LICENSE.txt +2 -0
  167. package/package.json +8 -6
  168. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +0 -8
  169. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +0 -33
  170. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +0 -5
  171. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +0 -19
  172. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.d.ts +0 -3
  173. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +0 -14
  174. package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +0 -34
  175. package/lib/esm/Importer/common/Spreadsheet/hooks.js +0 -254
  176. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.d.ts +0 -8
  177. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +0 -106
  178. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.d.ts +0 -11
  179. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +0 -35
  180. package/lib/esm/common/Table/TableActions/hooks.d.ts +0 -18
  181. package/lib/esm/common/Table/TableActions/hooks.js +0 -41
  182. package/lib/esm/common/Table/TableView/CustomScrollbar.d.ts +0 -2
  183. package/lib/esm/common/Table/TableView/CustomScrollbar.js +0 -34
@@ -15,10 +15,10 @@ import { Div } from "../../../styled/utils";
15
15
  import { closeIconWithCircle, errorIcon, fileExtensionIcon, } from "../../common/icons";
16
16
  import { useImporterContext } from "../../contexts/ImporterContextProvider";
17
17
  import { useUploaderContext } from "../UploaderContextProvider";
18
- import { ImporterDropzone } from "./ImporterDropzone";
19
18
  import { useTranslation } from "react-i18next";
20
19
  import { HeaderCard } from "./ImporterSectionHeader";
21
20
  import * as S from "./DragAndDropImporter.styles";
21
+ import { ImporterDropzone } from "./ImporterDropzone";
22
22
  export var ErrorCard = function () {
23
23
  var templateError = useImporterContext().templateError;
24
24
  var t = useTranslation("upload").t;
@@ -33,8 +33,16 @@ var LoadingCard = function () {
33
33
  return (_jsxs(S.LoadingCardWrapper, __assign({ spaceBetween: true, centered: true }, { children: [fileExtensionUI, _jsxs(Div, __assign({ mr: 30, ml: 30 }, { children: [_jsx(Div, __assign({ label2: true }, { children: fileName })), _jsx(Div, __assign({ helperText: true, c: colors.gray500 }, { children: t("loading.title") }))] })), _jsx(Div, __assign({ clickable: true, onClick: resetImport }, { children: closeIconWithCircle }))] })));
34
34
  };
35
35
  var ImporterSection = function () {
36
- var _a = useImporterContext(), templateHeaders = _a.templateHeaders, templateError = _a.templateError;
37
- return templateError ? (_jsx(ErrorCard, {})) : (_jsx(_Fragment, { children: templateHeaders && (_jsxs(S.ImporterSectionContainer, { children: [_jsx(ImporterDropzone, {}), _jsx(HeaderCard, { templateHeaders: templateHeaders })] })) }));
36
+ var _a = useImporterContext(), templateHeaders = _a.templateHeaders, templateError = _a.templateError, setUploadedData = _a.setUploadedData;
37
+ var _b = useUploaderContext(), setIsUploading = _b.setIsUploading, setFileName = _b.setFileName;
38
+ var onComplete = function (data) {
39
+ setUploadedData(data);
40
+ setIsUploading(false);
41
+ };
42
+ var saveFileName = function (fileName) {
43
+ setFileName(fileName);
44
+ };
45
+ return templateError ? (_jsx(ErrorCard, {})) : (_jsx(_Fragment, { children: templateHeaders && (_jsxs(S.ImporterSectionContainer, { children: [_jsx(ImporterDropzone, { onComplete: onComplete, saveFileName: saveFileName, setIsLoading: setIsUploading }), _jsx(HeaderCard, { templateHeaders: templateHeaders })] })) }));
38
46
  };
39
47
  var DragAndDropImporter = function () {
40
48
  var isUploading = useUploaderContext().isUploading;
@@ -14,6 +14,7 @@ var __assign = (this && this.__assign) || function () {
14
14
  return __assign.apply(this, arguments);
15
15
  };
16
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
+ import { useEffect } from "react";
17
18
  import { useTranslation } from "react-i18next";
18
19
  import styled, { css } from "styled-components";
19
20
  import { Div } from "../../styled/utils";
@@ -21,7 +22,6 @@ import { useReviewContext } from "../Review/ReviewContextProvider";
21
22
  import SpreadsheetBase from "../common/Spreadsheet";
22
23
  import { useImporterContext } from "../contexts/ImporterContextProvider";
23
24
  import { HeaderButtons } from "./HeaderButtons";
24
- import { useEffect } from "react";
25
25
  var Spreadsheet = styled(SpreadsheetBase)(function () { return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n /* rows will be removed for match and review steps */\n .before-selected-row {\n opacity: 0.2;\n }\n "], ["\n /* rows will be removed for match and review steps */\n .before-selected-row {\n opacity: 0.2;\n }\n "]))); });
26
26
  var HeaderContainer = styled(Div)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n margin-left: 32px;\n\n @media (max-width: 1050px) {\n margin-left: 0px;\n\n > div:first-of-type {\n text-align: center;\n }\n\n div:last-of-type {\n margin-left: 0px;\n }\n }\n"], ["\n margin-left: 32px;\n\n @media (max-width: 1050px) {\n margin-left: 0px;\n\n > div:first-of-type {\n text-align: center;\n }\n\n div:last-of-type {\n margin-left: 0px;\n }\n }\n"])));
27
27
  var DescriptionAndButtons = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n @media (max-width: 1050px) {\n flex-direction: column;\n gap: 16px;\n }\n"], ["\n @media (max-width: 1050px) {\n flex-direction: column;\n gap: 16px;\n }\n"])));
@@ -0,0 +1,16 @@
1
+ import React, { MutableRefObject } from "react";
2
+ import { Record, RecordDataSet } from "../../../../types";
3
+ export type State = {
4
+ getRecord: (recordId: string) => Record;
5
+ setRecord: (recordId: string, record: Record) => Record;
6
+ deleteRecord: (recordId: string) => void;
7
+ dataSet: MutableRefObject<RecordDataSet>;
8
+ dataSetLength: MutableRefObject<number>;
9
+ emptyRecordIds: MutableRefObject<Set<string>>;
10
+ };
11
+ export declare const DataSetContext: React.Context<State>;
12
+ export declare const DataSetContextProvider: ({ initialDataSet, children }: {
13
+ initialDataSet: any;
14
+ children: any;
15
+ }) => JSX.Element;
16
+ export declare const useDataSetContext: () => State;
@@ -0,0 +1,63 @@
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, useContext, useEffect, useRef, } from "react";
14
+ import { rowIsEmpty } from "../SpreadsheetContextProvider/utils";
15
+ export var DataSetContext = createContext({});
16
+ export var DataSetContextProvider = function (_a) {
17
+ var initialDataSet = _a.initialDataSet, children = _a.children;
18
+ var dataSet = useRef(initialDataSet);
19
+ var dataSetLength = useRef(Object.keys(dataSet.current).length);
20
+ var emptyRecordIds = useRef(new Set());
21
+ var reset = function () {
22
+ emptyRecordIds.current = new Set();
23
+ };
24
+ useEffect(function () {
25
+ reset();
26
+ // without the hook, with the changes on where the context would
27
+ // live, the dataSet was not being correctly updated for the Match step
28
+ dataSet.current = initialDataSet;
29
+ dataSetLength.current = Object.keys(initialDataSet).length;
30
+ }, [initialDataSet]);
31
+ var getRecord = function (recordId) {
32
+ return dataSet.current[recordId];
33
+ };
34
+ var deleteRecord = function (recordId) {
35
+ if (dataSet.current[recordId]) {
36
+ dataSetLength.current -= 1;
37
+ }
38
+ delete dataSet.current[recordId];
39
+ };
40
+ var setRecord = function (recordId, record) {
41
+ if (!dataSet.current[recordId]) {
42
+ dataSetLength.current += 1;
43
+ }
44
+ if (rowIsEmpty(record)) {
45
+ emptyRecordIds.current.add(recordId);
46
+ }
47
+ else {
48
+ emptyRecordIds.current.delete(recordId);
49
+ }
50
+ dataSet.current[recordId] = record;
51
+ return getRecord(recordId);
52
+ };
53
+ var value = {
54
+ getRecord: getRecord,
55
+ setRecord: setRecord,
56
+ deleteRecord: deleteRecord,
57
+ dataSet: dataSet,
58
+ dataSetLength: dataSetLength,
59
+ emptyRecordIds: emptyRecordIds,
60
+ };
61
+ return (_jsx(DataSetContext.Provider, __assign({ value: value }, { children: children })));
62
+ };
63
+ export var useDataSetContext = function () { return useContext(DataSetContext); };
@@ -0,0 +1,19 @@
1
+ import { MutableRefObject } from "react";
2
+ import { DuplicateValuesCollection, Field, Record, RecordDataSet } from "../../../../types";
3
+ type DuplicateDataProps = {
4
+ fields: Field[];
5
+ isReadOnly: boolean;
6
+ children: any;
7
+ };
8
+ export type State = {
9
+ duplicateRecordIds: Set<string>;
10
+ duplicateValues: MutableRefObject<DuplicateValuesCollection>;
11
+ fieldsWithUniquenessConstraints: MutableRefObject<Field[]>;
12
+ calculateDuplicateRecords: () => void;
13
+ updateDuplicateValues: (oldRecord: RecordDataSet, newRecord: RecordDataSet, initialValidation: boolean, updateRecordAndRevalidate: (record: Record | Record[], initialValidation: boolean, loadingIndicator: boolean) => void) => void;
14
+ resetDuplicateProvider: () => void;
15
+ };
16
+ export declare const DuplicateDataContext: import("react").Context<State>;
17
+ export declare const DuplicateDataContextProvider: ({ fields, isReadOnly, children, }: DuplicateDataProps) => JSX.Element;
18
+ export declare const useDuplicateDataContext: () => State;
19
+ export {};
@@ -0,0 +1,155 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ 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;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { jsx as _jsx } from "react/jsx-runtime";
49
+ import { createContext, useContext, useRef, useState, } from "react";
50
+ import { useDataSetContext } from "../DataSetContextProvider";
51
+ import { RecordHashCalculator } from "../SpreadsheetContextProvider/hashCalculators";
52
+ export var DuplicateDataContext = createContext({});
53
+ export var DuplicateDataContextProvider = function (_a) {
54
+ var fields = _a.fields, isReadOnly = _a.isReadOnly, children = _a.children;
55
+ var _b = useState(new Set()), duplicateRecordIds = _b[0], setDuplicateRecordIds = _b[1];
56
+ var _c = useDataSetContext(), dataSet = _c.dataSet, getRecord = _c.getRecord;
57
+ var duplicateValues = useRef({});
58
+ var fieldsWithUniquenessConstraints = useRef([]);
59
+ var reset = function () {
60
+ fieldsWithUniquenessConstraints.current = [];
61
+ duplicateValues.current = {};
62
+ setDuplicateRecordIds(new Set());
63
+ };
64
+ var resetDuplicateProvider = function () {
65
+ reset();
66
+ calculateDuplicateRecords();
67
+ calculateFieldsWithUniquenessConstraints();
68
+ };
69
+ var calculateFieldsWithUniquenessConstraints = function () {
70
+ var uniqueFields = fields.filter(function (f) {
71
+ if (!f.validations)
72
+ return;
73
+ return (f.validations.find(function (v) {
74
+ return (["unique_case_sensitive", "unique_case_insensitive"].indexOf(v.validation_type) >= 0);
75
+ }) !== undefined);
76
+ });
77
+ fieldsWithUniquenessConstraints.current = uniqueFields;
78
+ };
79
+ var updateDuplicateValues = function (oldRecord, newRecord, initialValidation, updateRecordAndRevalidate) {
80
+ var recordsToUpdate = [];
81
+ fieldsWithUniquenessConstraints.current.forEach(function (f) { return __awaiter(void 0, void 0, void 0, function () {
82
+ var duplicatesForField, isCaseInsensitive, recordId, oldValue, newValue, oldValueAccessor, oldIndex, remainingRecordId, newValueAccessor, firstRecordIdToHaveValue;
83
+ return __generator(this, function (_a) {
84
+ duplicateValues.current[f.name] = duplicateValues.current[f.name] || {};
85
+ duplicatesForField = duplicateValues.current[f.name];
86
+ isCaseInsensitive = f.validations.find(function (v) { return v.validation_type === "unique_case_insensitive"; }) !== undefined;
87
+ recordId = oldRecord._meta.id;
88
+ oldValue = oldRecord[f.name];
89
+ newValue = newRecord[f.name];
90
+ if (newValue === oldValue && !initialValidation) {
91
+ return [2 /*return*/];
92
+ }
93
+ if (oldValue && !initialValidation) {
94
+ oldValueAccessor = isCaseInsensitive
95
+ ? String(oldValue).toLowerCase()
96
+ : oldValue;
97
+ if (duplicatesForField[oldValueAccessor]) {
98
+ oldIndex = duplicatesForField[oldValueAccessor].indexOf(recordId);
99
+ if (oldIndex >= 0) {
100
+ duplicatesForField[oldValueAccessor].splice(oldIndex, 1);
101
+ }
102
+ if (duplicatesForField[oldValueAccessor].length === 1) {
103
+ remainingRecordId = duplicatesForField[oldValueAccessor][0];
104
+ recordsToUpdate.push(getRecord(remainingRecordId));
105
+ }
106
+ }
107
+ }
108
+ if (newValue) {
109
+ newValueAccessor = isCaseInsensitive
110
+ ? String(newValue).toLowerCase()
111
+ : newValue;
112
+ duplicatesForField[newValueAccessor] =
113
+ duplicatesForField[newValueAccessor] || [];
114
+ if (!duplicatesForField[newValueAccessor].includes(recordId)) {
115
+ duplicatesForField[newValueAccessor].push(recordId);
116
+ }
117
+ if (duplicatesForField[newValueAccessor].length === 2) {
118
+ firstRecordIdToHaveValue = duplicatesForField[newValueAccessor][0];
119
+ recordsToUpdate.push(getRecord(firstRecordIdToHaveValue));
120
+ }
121
+ }
122
+ return [2 /*return*/];
123
+ });
124
+ }); });
125
+ if (recordsToUpdate.length > 0) {
126
+ updateRecordAndRevalidate(recordsToUpdate, false, false);
127
+ }
128
+ };
129
+ var calculateDuplicateRecords = function () { return __awaiter(void 0, void 0, void 0, function () {
130
+ var computeHashesForRecords;
131
+ return __generator(this, function (_a) {
132
+ switch (_a.label) {
133
+ case 0:
134
+ computeHashesForRecords = RecordHashCalculator().computeHashesForRecords;
135
+ return [4 /*yield*/, computeHashesForRecords(dataSet.current, fields, function (hashes) {
136
+ var duplicateIds = hashes.map(function (hash) { return hash["id"]; });
137
+ setDuplicateRecordIds(new Set(duplicateIds));
138
+ })];
139
+ case 1:
140
+ _a.sent();
141
+ return [2 /*return*/];
142
+ }
143
+ });
144
+ }); };
145
+ var value = {
146
+ duplicateRecordIds: duplicateRecordIds,
147
+ duplicateValues: duplicateValues,
148
+ fieldsWithUniquenessConstraints: fieldsWithUniquenessConstraints,
149
+ calculateDuplicateRecords: calculateDuplicateRecords,
150
+ updateDuplicateValues: updateDuplicateValues,
151
+ resetDuplicateProvider: resetDuplicateProvider,
152
+ };
153
+ return (_jsx(DuplicateDataContext.Provider, __assign({ value: value }, { children: children })));
154
+ };
155
+ export var useDuplicateDataContext = function () { return useContext(DuplicateDataContext); };
@@ -0,0 +1,29 @@
1
+ import React, { MutableRefObject } from "react";
2
+ import { SpreadsheetFilter } from "../SpreadsheetContextProvider/useSpreadsheetFilter";
3
+ import { SortBy } from "../common/types";
4
+ export type State = {
5
+ filteredDataIds: string[];
6
+ filteredInputValue: string;
7
+ setFilteredInputValue: (value: string) => void;
8
+ sortByFieldErrors: string;
9
+ sortByFieldWarnings: string;
10
+ handleSortByFieldErrors: (field: string) => void;
11
+ handleSortByFieldWarnings: (field: string) => void;
12
+ resetSpreadsheetFilter: () => void;
13
+ filterRecordsByRowType: (filterByRow: string) => void;
14
+ filterRecordsByFieldErrors: (filterByColumn: string) => void;
15
+ sortBy: SortBy;
16
+ setSortBy: React.Dispatch<React.SetStateAction<SortBy>>;
17
+ spreadsheetFilter: SpreadsheetFilter;
18
+ isFiltering: boolean;
19
+ lastFilteredRecordId: MutableRefObject<string>;
20
+ setRecalculateFilters: React.Dispatch<React.SetStateAction<boolean>>;
21
+ };
22
+ type ContextArgs = {
23
+ getSortCompareFn: any;
24
+ children: any;
25
+ };
26
+ export declare const FilteredDataContext: React.Context<State>;
27
+ export declare const FilteredDataContextProvider: ({ getSortCompareFn, children, }: ContextArgs) => JSX.Element;
28
+ export declare const useFilteredDataContext: () => State;
29
+ export {};
@@ -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,8 +1,30 @@
1
- //Filter records by search value
2
- export var filterRecordsBySearchValue = function (obj, value) {
3
- var isObject = function (value) {
4
- return typeof value === "object" && value !== null && !Array.isArray(value);
5
- };
1
+ import { rowIsEmpty } from "./utils";
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
+ }
6
28
  var includesSearchValue = function (value, searchValue) {
7
29
  if (typeof value === "string" || typeof value === "number") {
8
30
  var stringValue = String(value).toLowerCase();
@@ -11,46 +33,17 @@ export var filterRecordsBySearchValue = function (obj, value) {
11
33
  }
12
34
  return false;
13
35
  };
14
- var filteredObj = {};
15
- for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) {
16
- var _b = _a[_i], key = _b[0], currentObj = _b[1];
17
- if (!isObject(currentObj)) {
18
- continue;
19
- }
20
- var matches = Object.values(currentObj).some(function (propertyValue) {
21
- 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;
22
46
  });
23
- if (matches) {
24
- filteredObj[key] = currentObj;
25
- }
26
- }
27
- return filteredObj;
28
- };
29
- export var filterRecordsByType = function (obj, filterType) {
30
- var _a, _b;
31
- var rowIsEmpty = function (row) {
32
- return Object.keys(row).every(function (key) {
33
- if (key === "_meta")
34
- return true;
35
- return !row[key];
36
- });
37
- };
38
- var filteredObj = {};
39
- for (var key in obj) {
40
- if (filterType === "all" ||
41
- (((_b = (_a = obj[key]) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.isInvalid) !== (filterType === "valid") &&
42
- !rowIsEmpty(obj[key]))) {
43
- filteredObj[key] = obj[key];
44
- }
45
- }
46
- return filteredObj;
47
- };
48
- //Filter records by selected column error
49
- export var filterRecordsByError = function (obj, keyToFilter, errors) {
50
- var filteredObj = {};
51
- 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]; });
52
- for (var i = 0; i < filteredKeys.length; i++) {
53
- filteredObj[filteredKeys[i]] = obj[filteredKeys[i]];
54
47
  }
55
- return filteredObj;
48
+ return filterConditions;
56
49
  };
@@ -0,0 +1,7 @@
1
+ import { Field, RecordDataSet } from "../../../../types";
2
+ export declare const RecordHashCalculator: () => {
3
+ computeHashesForRecords: (dataSet: RecordDataSet, fields: Field[], _onHashesComputed: (x: any) => void) => Promise<void>;
4
+ };
5
+ export declare const RecordValueHashCalculator: () => {
6
+ computeDuplicateValueHashes: (dataSet: RecordDataSet, _field: Field, _onDuplicateHashesComputed: (x: any[]) => void) => Promise<void>;
7
+ };