fuse-importer 0.23.8 → 0.24.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.
- package/README.md +19 -19
- package/lib/esm/Importer/ImporterWithContext.d.ts +7 -0
- package/lib/esm/Importer/ImporterWithContext.js +69 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +4 -4
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.js +1 -1
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +2 -2
- package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +2 -3
- package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.js +1 -1
- package/lib/esm/Importer/Matcher/index.d.ts +3 -3
- package/lib/esm/Importer/Matcher/index.js +4 -3
- package/lib/esm/Importer/PreviewFirstTime.d.ts +2 -0
- package/lib/esm/Importer/PreviewFirstTime.js +80 -0
- package/lib/esm/Importer/PreviewModeBanner.js +3 -6
- package/lib/esm/Importer/Review/AppResponseModal.js +3 -3
- package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +27 -0
- package/lib/esm/Importer/Review/ReviewContextProvider.js +234 -0
- package/lib/esm/Importer/Review/ReviewWithContext.d.ts +3 -0
- package/lib/esm/Importer/Review/ReviewWithContext.js +23 -0
- package/lib/esm/Importer/Review/index.d.ts +3 -3
- package/lib/esm/Importer/Review/index.js +4 -92
- package/lib/esm/Importer/Stepper/Step.d.ts +7 -0
- package/lib/esm/Importer/Stepper/Step.js +19 -0
- package/lib/esm/Importer/Stepper/StepIndex.d.ts +6 -0
- package/lib/esm/Importer/Stepper/StepIndex.js +27 -0
- package/lib/esm/Importer/Stepper/StepperSubmitModal.d.ts +8 -0
- package/lib/esm/Importer/Stepper/StepperSubmitModal.js +22 -0
- package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.d.ts +9 -0
- package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +23 -0
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +8 -0
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +33 -0
- package/lib/esm/Importer/Stepper/common/icons.d.ts +3 -0
- package/lib/esm/Importer/Stepper/common/icons.js +18 -0
- package/lib/esm/Importer/{Stepper.d.ts → Stepper/index.d.ts} +2 -2
- package/lib/esm/Importer/Stepper/index.js +97 -0
- package/lib/esm/Importer/TrialModeBanner.js +3 -4
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +1 -1
- package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +4 -4
- package/lib/esm/Importer/Uploader/HeaderButtons.d.ts +2 -0
- package/lib/esm/Importer/Uploader/HeaderButtons.js +29 -0
- package/lib/esm/Importer/Uploader/HeadersPreview.js +6 -64
- package/lib/esm/Importer/Uploader/UploaderContextProvider.d.ts +2 -2
- package/lib/esm/Importer/Uploader/index.d.ts +3 -3
- package/lib/esm/Importer/Uploader/index.js +6 -6
- package/lib/esm/Importer/common/AppLoading.js +2 -2
- package/lib/esm/Importer/{Footer.d.ts → common/Footer.d.ts} +0 -0
- package/lib/esm/Importer/common/Footer.js +17 -0
- package/lib/esm/Importer/{FuseApi.d.ts → common/FuseApi.d.ts} +1 -1
- package/lib/esm/Importer/{FuseApi.js → common/FuseApi.js} +2 -2
- package/lib/esm/Importer/{GlobalStyle.d.ts → common/GlobalStyle.d.ts} +0 -0
- package/lib/esm/Importer/common/GlobalStyle.js +7 -0
- package/lib/esm/Importer/{ImporterFonts.d.ts → common/ImporterFonts.d.ts} +0 -0
- package/lib/esm/Importer/{ImporterFonts.js → common/ImporterFonts.js} +0 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider.d.ts +13 -26
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider.js +51 -286
- package/lib/esm/Importer/common/Spreadsheet/common/index.d.ts +8 -15
- package/lib/esm/Importer/common/Spreadsheet/common/index.js +31 -101
- package/lib/esm/Importer/common/Spreadsheet/{common → components}/FieldHeader.d.ts +0 -0
- package/lib/esm/Importer/common/Spreadsheet/{common → components}/FieldHeader.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{GlobalStyle.d.ts → components/GlobalStyle.d.ts} +0 -0
- package/lib/esm/Importer/common/Spreadsheet/{GlobalStyle.js → components/GlobalStyle.js} +0 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.d.ts +3 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +74 -0
- package/lib/esm/Importer/common/Spreadsheet/{SpreadsheetRowNumbers.d.ts → components/SpreadsheetRowNumbers.d.ts} +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{SpreadsheetRowNumbers.js → components/SpreadsheetRowNumbers.js} +4 -4
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +6 -0
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +19 -0
- package/lib/esm/Importer/common/Spreadsheet/{common → components}/fields/SpeadsheetAutocomplete.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{common → components}/fields/SpeadsheetAutocomplete.js +2 -4
- package/lib/esm/Importer/common/Spreadsheet/{common → components}/fields/SpreadsheetInput.d.ts +0 -0
- package/lib/esm/Importer/common/Spreadsheet/{common → components}/fields/SpreadsheetInput.js +0 -0
- package/lib/esm/Importer/common/Spreadsheet/{common → components}/fields/index.d.ts +0 -4
- package/lib/esm/Importer/common/Spreadsheet/{common → components}/fields/index.js +11 -64
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/Boolean.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/Boolean.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/EmailInput.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/EmailInput.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/EnumInput.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/EnumInput.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/FloatInput.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/FloatInput.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/IntegerInput.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/IntegerInput.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/StringInput.d.ts +1 -1
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/StringInput.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.d.ts +13 -0
- package/lib/esm/Importer/common/Spreadsheet/{inputs → components/inputs}/index.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +29 -0
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +201 -0
- package/lib/esm/Importer/common/Spreadsheet/index.d.ts +10 -9
- package/lib/esm/Importer/common/Spreadsheet/index.js +10 -105
- package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +3 -0
- package/lib/esm/Importer/common/Spreadsheet/styles.js +10 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +20 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/index.js +172 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +6 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +176 -0
- package/lib/esm/Importer/common/icons/index.d.ts +3 -0
- package/lib/esm/Importer/common/icons/index.js +3 -0
- package/lib/esm/Importer/common/index.js +3 -3
- package/lib/esm/Importer/{theme.d.ts → common/theme.d.ts} +14 -4
- package/lib/esm/Importer/{theme.js → common/theme.js} +1 -1
- package/lib/esm/Importer/common/utils.d.ts +2 -4
- package/lib/esm/Importer/common/utils.js +79 -24
- package/lib/esm/Importer/{ImporterContextProvider.d.ts → contexts/ImporterContextProvider.d.ts} +18 -53
- package/lib/esm/Importer/{ImporterContextProvider.js → contexts/ImporterContextProvider.js} +31 -27
- package/lib/esm/Importer/data/index.d.ts +28 -0
- package/lib/esm/Importer/data/index.js +134 -0
- package/lib/esm/Importer/index.d.ts +10 -10
- package/lib/esm/Importer/index.js +12 -60
- package/lib/esm/common/Modal.js +5 -2
- package/lib/esm/common/Table/TableView/TableHeaders.js +1 -1
- package/lib/esm/common/Table/TableView/TableRow.d.ts +2 -1
- package/lib/esm/common/Table/TableView/TableRow.js +10 -10
- package/lib/esm/common/Table/TableView/index.d.ts +2 -1
- package/lib/esm/common/Table/TableView/index.js +9 -8
- package/lib/esm/common/Table/icons.d.ts +1 -0
- package/lib/esm/common/Table/icons.js +2 -1
- package/lib/esm/common/TooltipProvider.d.ts +5 -1
- package/lib/esm/common/TooltipProvider.js +11 -13
- package/lib/esm/common/buttons.d.ts +6 -3
- package/lib/esm/common/buttons.js +11 -5
- package/lib/esm/common/inputs/Autocomplete.d.ts +2 -1
- package/lib/esm/common/inputs/Autocomplete.js +7 -6
- package/lib/esm/common/inputs/SelectMenu.d.ts +2 -1
- package/lib/esm/common/inputs/SelectMenu.js +8 -8
- package/lib/esm/common/inputs/TextInput.d.ts +10 -6
- package/lib/esm/common/inputs/TextInput.js +12 -3
- package/lib/esm/common/inputs/index.d.ts +1 -0
- package/lib/esm/common/inputs/index.js +1 -0
- package/lib/esm/common/inputs/tooltip.d.ts +5 -0
- package/lib/esm/common/inputs/tooltip.js +38 -0
- package/lib/esm/index.d.ts +1 -2
- package/lib/esm/index.js +0 -1
- package/lib/esm/styled/theme/colorPalette.d.ts +18 -18
- package/lib/esm/styled/theme/debugCss.d.ts +1 -0
- package/lib/esm/styled/theme/debugCss.js +2 -1
- package/lib/esm/styled/theme/dimensionsCss.d.ts +6 -2
- package/lib/esm/styled/theme/dimensionsCss.js +3 -3
- package/lib/esm/styled/theme/globalCss.d.ts +3 -0
- package/lib/esm/styled/theme/globalCss.js +9 -8
- package/lib/esm/styled/theme/index.d.ts +24 -5
- package/lib/esm/styled/theme/textStyles.d.ts +1 -0
- package/lib/esm/styled/theme/textStyles.js +2 -1
- package/lib/esm/types.d.ts +64 -14
- package/lib/main.js +1 -1
- package/package.json +18 -8
- package/lib/esm/Importer/Footer.js +0 -19
- package/lib/esm/Importer/GlobalStyle.js +0 -7
- package/lib/esm/Importer/SpreadsheetReviewContextProvider.d.ts +0 -20
- package/lib/esm/Importer/SpreadsheetReviewContextProvider.js +0 -128
- package/lib/esm/Importer/Stepper.js +0 -153
- package/lib/esm/Importer/common/Spreadsheet/inputs/index.d.ts +0 -13
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { theme } from "
|
|
1
|
+
import { theme } from "../../styled/theme";
|
|
2
2
|
export declare type ImporterStylePreferences = {
|
|
3
3
|
id: number;
|
|
4
4
|
background: string;
|
|
@@ -13,7 +13,7 @@ declare const getCustomTheme: (importerStylePreferences: ImporterStylePreference
|
|
|
13
13
|
theme: {
|
|
14
14
|
readonly colors: {
|
|
15
15
|
backgroundInterface: string;
|
|
16
|
-
interactiveDisabled:
|
|
16
|
+
interactiveDisabled: "#FEB0BD";
|
|
17
17
|
error: string;
|
|
18
18
|
warning01: string;
|
|
19
19
|
highlight01: string;
|
|
@@ -112,6 +112,7 @@ declare const getCustomTheme: (importerStylePreferences: ImporterStylePreference
|
|
|
112
112
|
buttonText: import("styled-components").FlattenSimpleInterpolation;
|
|
113
113
|
buttonTextSmall: import("styled-components").FlattenSimpleInterpolation;
|
|
114
114
|
link: import("styled-components").FlattenSimpleInterpolation;
|
|
115
|
+
stepper: import("styled-components").FlattenSimpleInterpolation;
|
|
115
116
|
};
|
|
116
117
|
readonly css: {
|
|
117
118
|
pt: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
@@ -134,6 +135,9 @@ declare const getCustomTheme: (importerStylePreferences: ImporterStylePreference
|
|
|
134
135
|
yscroll: import("styled-components").FlattenSimpleInterpolation;
|
|
135
136
|
overflowHidden: import("styled-components").FlattenSimpleInterpolation;
|
|
136
137
|
rotate180: import("styled-components").FlattenSimpleInterpolation;
|
|
138
|
+
rotate180If: import("styled-components").FlattenInterpolation<import("styled-components").ThemedStyledProps<{
|
|
139
|
+
rotate180If: boolean;
|
|
140
|
+
}, any>>;
|
|
137
141
|
forMobile: import("styled-components").FlattenSimpleInterpolation;
|
|
138
142
|
forDesktop: import("styled-components").FlattenSimpleInterpolation;
|
|
139
143
|
mcontainer: import("styled-components").FlattenSimpleInterpolation;
|
|
@@ -148,6 +152,7 @@ declare const getCustomTheme: (importerStylePreferences: ImporterStylePreference
|
|
|
148
152
|
bgred: import("styled-components").FlattenSimpleInterpolation;
|
|
149
153
|
bgblue: import("styled-components").FlattenSimpleInterpolation;
|
|
150
154
|
opacity5: import("styled-components").FlattenSimpleInterpolation;
|
|
155
|
+
divider: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
151
156
|
semiBold: import("styled-components").FlattenSimpleInterpolation;
|
|
152
157
|
bold: import("styled-components").FlattenSimpleInterpolation;
|
|
153
158
|
extraBold: import("styled-components").FlattenSimpleInterpolation;
|
|
@@ -175,6 +180,7 @@ declare const getCustomTheme: (importerStylePreferences: ImporterStylePreference
|
|
|
175
180
|
buttonText: import("styled-components").FlattenSimpleInterpolation;
|
|
176
181
|
buttonTextSmall: import("styled-components").FlattenSimpleInterpolation;
|
|
177
182
|
link: import("styled-components").FlattenSimpleInterpolation;
|
|
183
|
+
stepper: import("styled-components").FlattenSimpleInterpolation;
|
|
178
184
|
truncateText: import("styled-components").FlattenSimpleInterpolation;
|
|
179
185
|
dInline: import("styled-components").FlattenSimpleInterpolation;
|
|
180
186
|
flexWrap: import("styled-components").FlattenSimpleInterpolation;
|
|
@@ -204,12 +210,16 @@ declare const getCustomTheme: (importerStylePreferences: ImporterStylePreference
|
|
|
204
210
|
pSticky: import("styled-components").FlattenSimpleInterpolation;
|
|
205
211
|
floatLeft: import("styled-components").FlattenSimpleInterpolation;
|
|
206
212
|
w50: import("styled-components").FlattenSimpleInterpolation;
|
|
207
|
-
w100: import("styled-components").
|
|
213
|
+
w100: import("styled-components").FlattenInterpolation<import("styled-components").ThemedStyledProps<{
|
|
214
|
+
w100: boolean;
|
|
215
|
+
}, any>>;
|
|
208
216
|
h100: import("styled-components").FlattenSimpleInterpolation;
|
|
209
217
|
w: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
210
218
|
h: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
211
219
|
dim: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
212
|
-
maxw: import("styled-components").FlattenInterpolation<import("styled-components").
|
|
220
|
+
maxw: import("styled-components").FlattenInterpolation<import("styled-components").ThemedStyledProps<{
|
|
221
|
+
maxw?: number;
|
|
222
|
+
}, any>>;
|
|
213
223
|
maxh: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
214
224
|
minw: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
215
225
|
minh: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
import { theme } from "
|
|
12
|
+
import { theme } from "../../styled/theme";
|
|
13
13
|
var getCustomTheme = function (importerStylePreferences) {
|
|
14
14
|
var primary_color = importerStylePreferences.primary_color, secondary_color = importerStylePreferences.secondary_color, highlight1 = importerStylePreferences.highlight1, highlight2 = importerStylePreferences.highlight2, background = importerStylePreferences.background;
|
|
15
15
|
var customTheme = __assign(__assign({}, theme), { colors: __assign(__assign({}, theme.colors), { pink500: primary_color, black: secondary_color, blue500: highlight1, blue100: highlight2, backgroundInterface: background }) });
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TemplateHeader } from "../ImporterContextProvider";
|
|
1
|
+
import { Integration, Record, TemplateHeader } from "../../types";
|
|
3
2
|
export declare const getSpreadsheetRowWidth: (fields: any, visibleRowsOnTableViewport: any) => number;
|
|
4
|
-
export declare const getUnsubmittedData: (data: Record[], appResponse: AppResponse) => Record[];
|
|
5
3
|
declare type IsEnumFieldArgs = {
|
|
6
4
|
templateLabel: string;
|
|
7
5
|
templateHeaders: TemplateHeader[];
|
|
8
6
|
};
|
|
9
7
|
export declare const getColumnType: ({ templateLabel, templateHeaders, }: IsEnumFieldArgs) => string;
|
|
10
|
-
export declare const
|
|
8
|
+
export declare const sendRecordsToIntegrations: (reviewedData: Record[], integrations: Integration[]) => Promise<void>;
|
|
11
9
|
export {};
|
|
@@ -1,34 +1,89 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 (_) 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
|
+
}
|
|
11
36
|
};
|
|
37
|
+
import axios from "axios";
|
|
12
38
|
export var getSpreadsheetRowWidth = function (fields, visibleRowsOnTableViewport) {
|
|
13
39
|
var res = fields.length / visibleRowsOnTableViewport;
|
|
14
40
|
return res > 1 ? res : 1;
|
|
15
41
|
};
|
|
16
|
-
export var getUnsubmittedData = function (data, appResponse) {
|
|
17
|
-
var unsubmittedData = data;
|
|
18
|
-
if (appResponse === null || appResponse === void 0 ? void 0 : appResponse.errors)
|
|
19
|
-
unsubmittedData = data.filter(function (r) { return !!r._meta.appValidationErrors; });
|
|
20
|
-
return unsubmittedData;
|
|
21
|
-
};
|
|
22
42
|
export var getColumnType = function (_a) {
|
|
23
43
|
var _b;
|
|
24
44
|
var templateLabel = _a.templateLabel, templateHeaders = _a.templateHeaders;
|
|
25
45
|
return (_b = templateHeaders.find(function (th) { return th.label === templateLabel; })) === null || _b === void 0 ? void 0 : _b.column_type;
|
|
26
46
|
};
|
|
27
|
-
export var
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
export var sendRecordsToIntegrations = function (reviewedData, integrations) { return __awaiter(void 0, void 0, void 0, function () {
|
|
48
|
+
var _i, reviewedData_1, record, _a, integrations_1, integration, url, trigger_type, instance, error_1;
|
|
49
|
+
return __generator(this, function (_b) {
|
|
50
|
+
switch (_b.label) {
|
|
51
|
+
case 0:
|
|
52
|
+
_i = 0, reviewedData_1 = reviewedData;
|
|
53
|
+
_b.label = 1;
|
|
54
|
+
case 1:
|
|
55
|
+
if (!(_i < reviewedData_1.length)) return [3 /*break*/, 8];
|
|
56
|
+
record = reviewedData_1[_i];
|
|
57
|
+
_a = 0, integrations_1 = integrations;
|
|
58
|
+
_b.label = 2;
|
|
59
|
+
case 2:
|
|
60
|
+
if (!(_a < integrations_1.length)) return [3 /*break*/, 7];
|
|
61
|
+
integration = integrations_1[_a];
|
|
62
|
+
url = integration.url, trigger_type = integration.trigger_type;
|
|
63
|
+
if (!(trigger_type === "webhook")) return [3 /*break*/, 6];
|
|
64
|
+
_b.label = 3;
|
|
65
|
+
case 3:
|
|
66
|
+
_b.trys.push([3, 5, , 6]);
|
|
67
|
+
instance = axios.create({
|
|
68
|
+
baseURL: url,
|
|
69
|
+
timeout: 1000,
|
|
70
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
71
|
+
});
|
|
72
|
+
return [4 /*yield*/, instance.post("", record)];
|
|
73
|
+
case 4:
|
|
74
|
+
_b.sent();
|
|
75
|
+
return [3 /*break*/, 6];
|
|
76
|
+
case 5:
|
|
77
|
+
error_1 = _b.sent();
|
|
78
|
+
console.log(error_1);
|
|
79
|
+
return [3 /*break*/, 6];
|
|
80
|
+
case 6:
|
|
81
|
+
_a++;
|
|
82
|
+
return [3 /*break*/, 2];
|
|
83
|
+
case 7:
|
|
84
|
+
_i++;
|
|
85
|
+
return [3 /*break*/, 1];
|
|
86
|
+
case 8: return [2 /*return*/];
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}); };
|
package/lib/esm/Importer/{ImporterContextProvider.d.ts → contexts/ImporterContextProvider.d.ts}
RENAMED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import Fuse from "fuse.js";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { ImporterOptions,
|
|
4
|
-
import {
|
|
5
|
-
import { FuseApi } from "./FuseApi";
|
|
3
|
+
import { FormatRecord, ImporterOptions, Integration, OnSubmit, OnValidateRecord, TemplateHeader } from "../../types";
|
|
4
|
+
import { FuseApi } from "../common/FuseApi";
|
|
6
5
|
export declare const fusejsOptions: Fuse.IFuseOptions<string>;
|
|
7
6
|
export declare type HeaderMatchings = {
|
|
8
7
|
[templateHeaderLabel: string]: string;
|
|
@@ -15,80 +14,46 @@ export declare type EnumFieldValueMatchings = {
|
|
|
15
14
|
export declare type UploadedDataEnumFieldValues = {
|
|
16
15
|
[templateHeaderLabel: string]: string[];
|
|
17
16
|
};
|
|
18
|
-
export declare type TemplateHeader = {
|
|
19
|
-
label: string;
|
|
20
|
-
required: boolean;
|
|
21
|
-
unique: boolean;
|
|
22
|
-
column_type: string;
|
|
23
|
-
internal_key: string;
|
|
24
|
-
values: string[];
|
|
25
|
-
pattern: string;
|
|
26
|
-
};
|
|
27
|
-
export declare type Organization = {
|
|
28
|
-
id: number;
|
|
29
|
-
name: string;
|
|
30
|
-
trial_mode: boolean;
|
|
31
|
-
plan: {
|
|
32
|
-
title: string;
|
|
33
|
-
allow_style_customization: boolean;
|
|
34
|
-
has_records_limit: boolean;
|
|
35
|
-
allowed_records: number;
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
export declare type Column = {
|
|
39
|
-
column_type: string;
|
|
40
|
-
internal_key: string;
|
|
41
|
-
label: string;
|
|
42
|
-
pattern: string;
|
|
43
|
-
required: boolean;
|
|
44
|
-
unique: boolean;
|
|
45
|
-
values: string[];
|
|
46
|
-
};
|
|
47
17
|
export declare type State = {
|
|
48
|
-
resetImport: () => void;
|
|
49
18
|
currentStepIndex: number;
|
|
50
|
-
setCurrentStepIndex: React.Dispatch<number>;
|
|
51
19
|
templateError: string | null;
|
|
52
20
|
uploadedData: any[];
|
|
53
21
|
enumFieldValueMatchings: EnumFieldValueMatchings;
|
|
54
|
-
setEnumFieldValueMatchings: React.Dispatch<React.SetStateAction<EnumFieldValueMatchings>>;
|
|
55
|
-
setUploadedData: React.Dispatch<any[]>;
|
|
56
22
|
templateHeaders: TemplateHeader[];
|
|
57
23
|
templateHeaderMatchings: HeaderMatchings;
|
|
58
|
-
setTemplateHeaderMatchings: React.Dispatch<React.SetStateAction<HeaderMatchings>>;
|
|
59
24
|
uploadedDataHeaders: string[];
|
|
60
|
-
onValidateRecord?: OnValidateRecord;
|
|
61
|
-
onValidateBatch?: OnValidateBatch;
|
|
62
25
|
matcherSubstep: number;
|
|
63
|
-
setMatcherSubstep: React.Dispatch<number>;
|
|
64
26
|
uploadedDataEnumFieldValues: UploadedDataEnumFieldValues;
|
|
65
27
|
templateSlug: string;
|
|
66
28
|
apiToken: string;
|
|
67
29
|
inTrialMode: boolean;
|
|
68
|
-
|
|
30
|
+
previewFirstTime: boolean;
|
|
69
31
|
fuseApi: FuseApi;
|
|
70
|
-
formatRecord: FormatRecord;
|
|
71
32
|
importerOptions: ImporterOptions;
|
|
72
33
|
theme: any;
|
|
73
34
|
logoURL: string;
|
|
74
|
-
|
|
75
|
-
|
|
35
|
+
integrations: Integration[];
|
|
36
|
+
onSubmit: OnSubmit;
|
|
37
|
+
resetImport: () => void;
|
|
38
|
+
onClose: () => void;
|
|
39
|
+
setCurrentStepIndex: React.Dispatch<number>;
|
|
40
|
+
setEnumFieldValueMatchings: React.Dispatch<React.SetStateAction<EnumFieldValueMatchings>>;
|
|
41
|
+
setUploadedData: React.Dispatch<any[]>;
|
|
42
|
+
setTemplateHeaderMatchings: React.Dispatch<React.SetStateAction<HeaderMatchings>>;
|
|
43
|
+
setPreviewFirstTime: React.Dispatch<boolean>;
|
|
44
|
+
formatRecord: FormatRecord;
|
|
45
|
+
onValidateRecord?: OnValidateRecord;
|
|
46
|
+
setMatcherSubstep: React.Dispatch<number>;
|
|
76
47
|
};
|
|
77
48
|
export declare type Props = {
|
|
78
49
|
templateSlug: string;
|
|
79
50
|
apiToken: string;
|
|
80
51
|
options: ImporterOptions;
|
|
81
|
-
onClose: () => void;
|
|
82
52
|
children: JSX.Element;
|
|
53
|
+
onClose: () => void;
|
|
54
|
+
onSubmit: OnSubmit;
|
|
83
55
|
formatRecord: FormatRecord;
|
|
84
56
|
onValidateRecord?: OnValidateRecord;
|
|
85
|
-
onValidateBatch?: OnValidateBatch;
|
|
86
|
-
};
|
|
87
|
-
export declare type TemplateInfo = {
|
|
88
|
-
columns: Column[];
|
|
89
|
-
importer_style_preferences: ImporterStylePreferences;
|
|
90
|
-
organization: Organization;
|
|
91
|
-
name: string;
|
|
92
57
|
};
|
|
93
|
-
export declare const ImporterContextProvider: ({ templateSlug, apiToken, children, options, onClose, formatRecord,
|
|
58
|
+
export declare const ImporterContextProvider: ({ templateSlug, apiToken, children, options, onSubmit, onClose, formatRecord, onValidateRecord, }: Props) => JSX.Element;
|
|
94
59
|
export declare const useImporterContext: () => State;
|
|
@@ -48,31 +48,32 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
48
48
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
49
49
|
import Fuse from "fuse.js";
|
|
50
50
|
import { createContext, useContext, useEffect, useMemo, useState, } from "react";
|
|
51
|
-
import { FieldTypes, } from "
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
51
|
+
import { FieldTypes, } from "../../types";
|
|
52
|
+
import { FuseApi } from "../common/FuseApi";
|
|
53
|
+
import { getCustomTheme, theme } from "../common/theme";
|
|
54
|
+
import { getColumnType } from "../common/utils";
|
|
55
55
|
export var fusejsOptions = {
|
|
56
56
|
includeScore: true,
|
|
57
57
|
threshold: 0.35,
|
|
58
58
|
};
|
|
59
59
|
var ImporterContext = createContext({});
|
|
60
60
|
export var ImporterContextProvider = function (_a) {
|
|
61
|
-
var templateSlug = _a.templateSlug, apiToken = _a.apiToken, children = _a.children, options = _a.options,
|
|
61
|
+
var templateSlug = _a.templateSlug, apiToken = _a.apiToken, children = _a.children, options = _a.options, onSubmit = _a.onSubmit, onClose = _a.onClose, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord;
|
|
62
62
|
var _b = useState(0), currentStepIndex = _b[0], setCurrentStepIndex = _b[1];
|
|
63
63
|
var _c = useState(0), matcherSubstep = _c[0], setMatcherSubstep = _c[1];
|
|
64
64
|
var _d = useState(null), templateError = _d[0], setTemplateError = _d[1];
|
|
65
65
|
var _e = useState(null), templateHeaders = _e[0], setTemplateHeaders = _e[1];
|
|
66
|
-
var _f = useState(null),
|
|
67
|
-
var _g = useState(null),
|
|
68
|
-
var _h = useState(
|
|
66
|
+
var _f = useState(null), integrations = _f[0], setIntegrations = _f[1];
|
|
67
|
+
var _g = useState(null), uploadedData = _g[0], setUploadedData = _g[1];
|
|
68
|
+
var _h = useState(null), organization = _h[0], setOrganization = _h[1];
|
|
69
|
+
var _j = useState(null), previewFirstTime = _j[0], setPreviewFirstTime = _j[1];
|
|
70
|
+
var _k = useState({
|
|
69
71
|
theme: theme,
|
|
70
72
|
logoURL: null,
|
|
71
|
-
}), style =
|
|
72
|
-
var
|
|
73
|
-
var
|
|
74
|
-
var
|
|
75
|
-
var _m = useState(false), isSpreadsheetValid = _m[0], setIsSpreadsheetValid = _m[1];
|
|
73
|
+
}), style = _k[0], setStyle = _k[1];
|
|
74
|
+
var _l = useState(null), templateHeaderMatchings = _l[0], setTemplateHeaderMatchings = _l[1];
|
|
75
|
+
var _m = useState(null), enumFieldValueMatchings = _m[0], setEnumFieldValueMatchings = _m[1];
|
|
76
|
+
var _o = useState(null), uploadedDataEnumFieldValues = _o[0], setUploadedDataEnumFieldValues = _o[1];
|
|
76
77
|
var fuseApi = useMemo(function () { return new FuseApi(options.env, apiToken); }, [
|
|
77
78
|
options.env,
|
|
78
79
|
apiToken,
|
|
@@ -113,7 +114,7 @@ export var ImporterContextProvider = function (_a) {
|
|
|
113
114
|
}, [uploadedData]);
|
|
114
115
|
useEffect(function () {
|
|
115
116
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
116
|
-
var _a, organization_1, columns, importer_style_preferences, error_1, errorMsg;
|
|
117
|
+
var _a, organization_1, columns, importer_style_preferences, integrations_1, preview_first_time, error_1, errorMsg;
|
|
117
118
|
var _b, _c;
|
|
118
119
|
return __generator(this, function (_d) {
|
|
119
120
|
switch (_d.label) {
|
|
@@ -121,9 +122,11 @@ export var ImporterContextProvider = function (_a) {
|
|
|
121
122
|
_d.trys.push([0, 2, , 3]);
|
|
122
123
|
return [4 /*yield*/, fuseApi.get("/api/v1/importer/templates/".concat(templateSlug))];
|
|
123
124
|
case 1:
|
|
124
|
-
_a = (_d.sent()).data, organization_1 = _a.organization, columns = _a.columns, importer_style_preferences = _a.importer_style_preferences;
|
|
125
|
+
_a = (_d.sent()).data, organization_1 = _a.organization, columns = _a.columns, importer_style_preferences = _a.importer_style_preferences, integrations_1 = _a.integrations, preview_first_time = _a.preview_first_time;
|
|
125
126
|
setOrganization(organization_1);
|
|
126
127
|
setTemplateHeaders(columns);
|
|
128
|
+
setIntegrations(integrations_1);
|
|
129
|
+
setPreviewFirstTime(preview_first_time);
|
|
127
130
|
if (organization_1.plan && organization_1.plan.allow_style_customization) {
|
|
128
131
|
setStyle(getCustomTheme(importer_style_preferences));
|
|
129
132
|
}
|
|
@@ -155,34 +158,35 @@ export var ImporterContextProvider = function (_a) {
|
|
|
155
158
|
};
|
|
156
159
|
var inTrialMode = organization === null || organization === void 0 ? void 0 : organization.trial_mode;
|
|
157
160
|
var value = {
|
|
158
|
-
setUploadedData: setUploadedData,
|
|
159
161
|
currentStepIndex: currentStepIndex,
|
|
160
|
-
formatRecord: formatRecord,
|
|
161
|
-
setCurrentStepIndex: setCurrentStepIndex,
|
|
162
162
|
templateHeaders: templateHeaders,
|
|
163
163
|
enumFieldValueMatchings: enumFieldValueMatchings,
|
|
164
|
-
setEnumFieldValueMatchings: setEnumFieldValueMatchings,
|
|
165
164
|
templateHeaderMatchings: templateHeaderMatchings,
|
|
166
165
|
uploadedDataEnumFieldValues: uploadedDataEnumFieldValues,
|
|
167
166
|
importerOptions: options,
|
|
168
|
-
setTemplateHeaderMatchings: setTemplateHeaderMatchings,
|
|
169
|
-
resetImport: resetImport,
|
|
170
167
|
uploadedData: uploadedData,
|
|
171
168
|
uploadedDataHeaders: uploadedDataHeaders,
|
|
172
169
|
templateError: templateError,
|
|
173
|
-
onValidateBatch: onValidateBatch,
|
|
174
|
-
onValidateRecord: onValidateRecord,
|
|
175
170
|
matcherSubstep: matcherSubstep,
|
|
176
|
-
setMatcherSubstep: setMatcherSubstep,
|
|
177
171
|
apiToken: apiToken,
|
|
178
172
|
templateSlug: templateSlug,
|
|
179
173
|
inTrialMode: inTrialMode,
|
|
180
|
-
onClose: onClose,
|
|
181
174
|
fuseApi: fuseApi,
|
|
182
175
|
theme: style.theme,
|
|
183
176
|
logoURL: style.logoURL,
|
|
184
|
-
|
|
185
|
-
|
|
177
|
+
integrations: integrations,
|
|
178
|
+
previewFirstTime: previewFirstTime,
|
|
179
|
+
setUploadedData: setUploadedData,
|
|
180
|
+
formatRecord: formatRecord,
|
|
181
|
+
setCurrentStepIndex: setCurrentStepIndex,
|
|
182
|
+
setEnumFieldValueMatchings: setEnumFieldValueMatchings,
|
|
183
|
+
setTemplateHeaderMatchings: setTemplateHeaderMatchings,
|
|
184
|
+
resetImport: resetImport,
|
|
185
|
+
onValidateRecord: onValidateRecord,
|
|
186
|
+
setMatcherSubstep: setMatcherSubstep,
|
|
187
|
+
onClose: onClose,
|
|
188
|
+
setPreviewFirstTime: setPreviewFirstTime,
|
|
189
|
+
onSubmit: onSubmit,
|
|
186
190
|
};
|
|
187
191
|
return (_jsx(ImporterContext.Provider, __assign({ value: value }, { children: children })));
|
|
188
192
|
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Field, FieldTypes, FormatRecord, Record, RecordDataSet, TemplateHeader } from "../../types";
|
|
2
|
+
import { EnumFieldValueMatchings, HeaderMatchings } from "../contexts/ImporterContextProvider";
|
|
3
|
+
export declare const addMeta: (record: any, index: number) => Record;
|
|
4
|
+
export declare const recordListToDataSet: (data: Record[], fields: Field[]) => RecordDataSet;
|
|
5
|
+
declare type transformToRecordsArgs = {
|
|
6
|
+
templateHeaderMatchings: HeaderMatchings;
|
|
7
|
+
enumFieldValueMatchings: EnumFieldValueMatchings;
|
|
8
|
+
uploadedDataHeaders: string[];
|
|
9
|
+
uploadedData: any[];
|
|
10
|
+
templateHeaders: TemplateHeader[];
|
|
11
|
+
formatRecord: FormatRecord;
|
|
12
|
+
};
|
|
13
|
+
export declare const getPreviewDataSet: ({ uploadedData, }: {
|
|
14
|
+
uploadedData: any[];
|
|
15
|
+
}) => {
|
|
16
|
+
fields: {
|
|
17
|
+
label: string;
|
|
18
|
+
name: string;
|
|
19
|
+
type: FieldTypes;
|
|
20
|
+
isRequired: boolean;
|
|
21
|
+
}[];
|
|
22
|
+
initialDataSet: RecordDataSet;
|
|
23
|
+
};
|
|
24
|
+
export declare const getReviewDataSet: ({ templateHeaderMatchings, enumFieldValueMatchings, templateHeaders, uploadedDataHeaders, uploadedData, formatRecord, }: transformToRecordsArgs) => {
|
|
25
|
+
fields: Field[];
|
|
26
|
+
initialDataSet: RecordDataSet;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,134 @@
|
|
|
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 { FieldTypes, } from "../../types";
|
|
13
|
+
import { parseValue } from "../common/Spreadsheet/common";
|
|
14
|
+
var MINIMUM_ROW_COUNT = 20;
|
|
15
|
+
var getRowId = function (index) {
|
|
16
|
+
var uniqueTimestamp = new Date().getTime();
|
|
17
|
+
return "r".concat(index, "-").concat(uniqueTimestamp);
|
|
18
|
+
};
|
|
19
|
+
var addEmptyRows = function (data, fields) {
|
|
20
|
+
var emptyRecord = fields.reduce(function (obj, f) {
|
|
21
|
+
var _a;
|
|
22
|
+
return (__assign(__assign({}, obj), (_a = {}, _a[f.name] = null, _a)));
|
|
23
|
+
}, {});
|
|
24
|
+
for (var i = data.length; i < MINIMUM_ROW_COUNT; i++) {
|
|
25
|
+
data.push(__assign(__assign({}, emptyRecord), { _meta: {
|
|
26
|
+
id: getRowId(i),
|
|
27
|
+
rowIndex: i,
|
|
28
|
+
} }));
|
|
29
|
+
}
|
|
30
|
+
return data;
|
|
31
|
+
};
|
|
32
|
+
export var addMeta = function (record, index) {
|
|
33
|
+
var _a;
|
|
34
|
+
var rId = getRowId(index);
|
|
35
|
+
var meta = (_a = record._meta) !== null && _a !== void 0 ? _a : {};
|
|
36
|
+
return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { id: rId, rowIndex: index, touched: false }) });
|
|
37
|
+
};
|
|
38
|
+
export var recordListToDataSet = function (data, fields) {
|
|
39
|
+
var initialData = data;
|
|
40
|
+
if (data.length < MINIMUM_ROW_COUNT) {
|
|
41
|
+
initialData = addEmptyRows(data, fields);
|
|
42
|
+
}
|
|
43
|
+
return initialData.reduce(function (dataSet, record, i) {
|
|
44
|
+
var recordWithMeta = addMeta(record, i);
|
|
45
|
+
dataSet[recordWithMeta._meta.id] = recordWithMeta;
|
|
46
|
+
return dataSet;
|
|
47
|
+
}, {});
|
|
48
|
+
};
|
|
49
|
+
var transformToRecords = function (_a) {
|
|
50
|
+
var templateHeaderMatchings = _a.templateHeaderMatchings, enumFieldValueMatchings = _a.enumFieldValueMatchings, templateHeaders = _a.templateHeaders, uploadedDataHeaders = _a.uploadedDataHeaders, uploadedData = _a.uploadedData, formatRecord = _a.formatRecord;
|
|
51
|
+
var matchedColumnsLabels = Object.keys(templateHeaderMatchings)
|
|
52
|
+
.filter(function (label) { return !!templateHeaderMatchings[label]; })
|
|
53
|
+
.map(function (label) { return ({
|
|
54
|
+
label: label,
|
|
55
|
+
index: uploadedDataHeaders.indexOf(templateHeaderMatchings[label]),
|
|
56
|
+
}); });
|
|
57
|
+
var templateHeadersByLabel = templateHeaders.reduce(function (byLabel, header) {
|
|
58
|
+
var _a;
|
|
59
|
+
return (__assign(__assign({}, byLabel), (_a = {}, _a[header.label] = header, _a)));
|
|
60
|
+
}, {});
|
|
61
|
+
var getRecord = function (row, index) {
|
|
62
|
+
var record = addMeta({}, index);
|
|
63
|
+
matchedColumnsLabels.forEach(function (_a) {
|
|
64
|
+
var label = _a.label, index = _a.index;
|
|
65
|
+
var enumSet = enumFieldValueMatchings
|
|
66
|
+
? enumFieldValueMatchings[label]
|
|
67
|
+
: null;
|
|
68
|
+
var header = templateHeadersByLabel[label];
|
|
69
|
+
if (!header)
|
|
70
|
+
return;
|
|
71
|
+
var key = header.internal_key;
|
|
72
|
+
var value = row[index];
|
|
73
|
+
if (value === undefined)
|
|
74
|
+
return;
|
|
75
|
+
record[key] = parseValue(FieldTypes[header.column_type], value, enumSet);
|
|
76
|
+
});
|
|
77
|
+
return formatRecord ? formatRecord(record) : record;
|
|
78
|
+
};
|
|
79
|
+
return uploadedData.slice(1).map(getRecord);
|
|
80
|
+
};
|
|
81
|
+
export var getPreviewDataSet = function (_a) {
|
|
82
|
+
var uploadedData = _a.uploadedData;
|
|
83
|
+
var getFirstRowLen = function () {
|
|
84
|
+
if (uploadedData.length > 0 && Array.isArray(uploadedData[0])) {
|
|
85
|
+
return uploadedData[0].length;
|
|
86
|
+
}
|
|
87
|
+
return 0;
|
|
88
|
+
};
|
|
89
|
+
var fields = new Array(getFirstRowLen()).fill(null).map(function (_, i) {
|
|
90
|
+
var key = String.fromCharCode(65 + i);
|
|
91
|
+
return {
|
|
92
|
+
label: key,
|
|
93
|
+
name: key,
|
|
94
|
+
type: FieldTypes.string,
|
|
95
|
+
isRequired: false,
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
var getInitialDataSet = function () {
|
|
99
|
+
//Showing only the first 100 rows to improve performance
|
|
100
|
+
//TODO: Check with Mike
|
|
101
|
+
var data = uploadedData.slice(0, 100).map(function (row, index) {
|
|
102
|
+
var entry = addMeta({}, index);
|
|
103
|
+
fields.forEach(function (field, index) {
|
|
104
|
+
entry[field.name] = row[index];
|
|
105
|
+
});
|
|
106
|
+
return entry;
|
|
107
|
+
});
|
|
108
|
+
return recordListToDataSet(data, fields);
|
|
109
|
+
};
|
|
110
|
+
return { fields: fields, initialDataSet: getInitialDataSet() };
|
|
111
|
+
};
|
|
112
|
+
export var getReviewDataSet = function (_a) {
|
|
113
|
+
var templateHeaderMatchings = _a.templateHeaderMatchings, enumFieldValueMatchings = _a.enumFieldValueMatchings, templateHeaders = _a.templateHeaders, uploadedDataHeaders = _a.uploadedDataHeaders, uploadedData = _a.uploadedData, formatRecord = _a.formatRecord;
|
|
114
|
+
var fields = templateHeaders.map(function (templateHeader) { return ({
|
|
115
|
+
label: templateHeader.label,
|
|
116
|
+
name: templateHeader.internal_key,
|
|
117
|
+
type: FieldTypes[templateHeader.column_type] || FieldTypes.string,
|
|
118
|
+
isRequired: templateHeader.required,
|
|
119
|
+
isUnique: templateHeader.unique,
|
|
120
|
+
options: templateHeader.values,
|
|
121
|
+
pattern: templateHeader.pattern,
|
|
122
|
+
validations: templateHeader.validations,
|
|
123
|
+
}); });
|
|
124
|
+
var records = transformToRecords({
|
|
125
|
+
templateHeaderMatchings: templateHeaderMatchings,
|
|
126
|
+
enumFieldValueMatchings: enumFieldValueMatchings,
|
|
127
|
+
templateHeaders: templateHeaders,
|
|
128
|
+
uploadedDataHeaders: uploadedDataHeaders,
|
|
129
|
+
uploadedData: uploadedData,
|
|
130
|
+
formatRecord: formatRecord,
|
|
131
|
+
});
|
|
132
|
+
var initialDataSet = recordListToDataSet(addEmptyRows(records, fields), fields);
|
|
133
|
+
return { fields: fields, initialDataSet: initialDataSet };
|
|
134
|
+
};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { FormatRecord, ImporterOptions, OnSubmit,
|
|
3
|
-
declare
|
|
4
|
-
|
|
2
|
+
import { FormatRecord, ImporterOptions, OnSubmit, OnValidateRecord } from "../types";
|
|
3
|
+
export declare const ACCOUNT_ROUTES: {
|
|
4
|
+
TEMPLATES: string;
|
|
5
5
|
};
|
|
6
|
-
export declare const
|
|
7
|
-
declare
|
|
6
|
+
export declare const ACCOUNT_VIEW_PATH = "/account";
|
|
7
|
+
export declare const TEMPLATES_ROUTE: string;
|
|
8
|
+
declare type ImporterProps = {
|
|
8
9
|
templateSlug: string;
|
|
9
10
|
apiToken: string;
|
|
10
11
|
options: ImporterOptions;
|
|
12
|
+
previewMode?: boolean;
|
|
11
13
|
formatRecord: FormatRecord;
|
|
12
14
|
onValidateRecord?: OnValidateRecord;
|
|
13
|
-
onValidateBatch?: OnValidateBatch;
|
|
14
15
|
onSubmit?: OnSubmit;
|
|
15
|
-
onClose:
|
|
16
|
-
previewMode?: boolean;
|
|
16
|
+
onClose: () => void;
|
|
17
17
|
};
|
|
18
|
-
declare const Importer: ({ templateSlug, apiToken,
|
|
18
|
+
declare const Importer: ({ templateSlug, apiToken, options, formatRecord, onValidateRecord, onSubmit, onClose, }: ImporterProps) => JSX.Element;
|
|
19
19
|
export * from "./common/Spreadsheet";
|
|
20
20
|
export * from "./common/utils";
|
|
21
|
-
export * from "./
|
|
21
|
+
export * from "./Review/ReviewContextProvider";
|
|
22
22
|
export { Importer };
|