fuse-importer 0.0.8-testing → 0.1.1-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 (165) hide show
  1. package/lib/esm/Importer/ImporterWithContext.js +63 -0
  2. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +68 -0
  3. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.js +58 -0
  4. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcherContext.js +21 -0
  5. package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +23 -0
  6. package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +61 -0
  7. package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.js +55 -0
  8. package/lib/esm/Importer/Matcher/common/icons/index.js +14 -0
  9. package/lib/esm/Importer/Matcher/common/index.js +39 -0
  10. package/lib/esm/Importer/Matcher/common/types.js +9 -0
  11. package/lib/esm/Importer/Matcher/index.js +22 -0
  12. package/lib/esm/Importer/PreviewFirstTime.js +81 -0
  13. package/lib/esm/Importer/PreviewModeBanner.js +19 -0
  14. package/lib/esm/Importer/Review/AppResponseModal.js +35 -0
  15. package/lib/esm/Importer/Review/ReviewContextProvider.js +318 -0
  16. package/lib/esm/Importer/Review/ReviewWithContext.js +33 -0
  17. package/lib/esm/Importer/Review/index.js +4 -0
  18. package/lib/esm/Importer/Stepper/ConfirmCloseModal.js +24 -0
  19. package/lib/esm/Importer/Stepper/Step.js +19 -0
  20. package/lib/esm/Importer/Stepper/StepIndex.js +27 -0
  21. package/lib/esm/Importer/Stepper/StepperSubmitModal.js +24 -0
  22. package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +31 -0
  23. package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +33 -0
  24. package/lib/esm/Importer/Stepper/common/icons.js +18 -0
  25. package/lib/esm/Importer/Stepper/index.js +118 -0
  26. package/lib/esm/Importer/TrialModeBanner.js +22 -0
  27. package/lib/esm/Importer/Uploader/DragAndDropImporter/DragAndDropImporter.styles.js +11 -0
  28. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +123 -0
  29. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/ImporterSectionHeader.styles.js +11 -0
  30. package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +44 -0
  31. package/lib/esm/Importer/Uploader/DragAndDropImporter/backgrounds.js +14 -0
  32. package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +45 -0
  33. package/lib/esm/Importer/Uploader/HeaderButtons.js +28 -0
  34. package/lib/esm/Importer/Uploader/HeadersPreview.js +44 -0
  35. package/lib/esm/Importer/Uploader/UploaderContextProvider.js +27 -0
  36. package/lib/esm/Importer/Uploader/index.js +13 -0
  37. package/lib/esm/Importer/common/AppLoading.js +24 -0
  38. package/lib/esm/Importer/common/Footer.js +17 -0
  39. package/lib/esm/Importer/common/FuseApi.js +48 -0
  40. package/lib/esm/Importer/common/GlobalStyle.js +7 -0
  41. package/lib/esm/Importer/common/ImporterFonts.js +5 -0
  42. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +56 -0
  43. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +176 -0
  44. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.js +45 -0
  45. package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +14 -0
  46. package/lib/esm/Importer/common/Spreadsheet/common/index.js +63 -0
  47. package/lib/esm/Importer/common/Spreadsheet/common/types.js +5 -0
  48. package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +66 -0
  49. package/lib/esm/Importer/common/Spreadsheet/components/GlobalStyle.js +9 -0
  50. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +110 -0
  51. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +186 -0
  52. package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +55 -0
  53. package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +19 -0
  54. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +43 -0
  55. package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +74 -0
  56. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +2 -1
  57. package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +114 -0
  58. package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.d.ts +11 -0
  59. package/lib/esm/Importer/common/Spreadsheet/components/fields/utils.js +29 -0
  60. package/lib/esm/Importer/common/Spreadsheet/components/inputs/Boolean.js +18 -0
  61. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +14 -0
  62. package/lib/esm/Importer/common/Spreadsheet/components/inputs/EnumInput.js +30 -0
  63. package/lib/esm/Importer/common/Spreadsheet/components/inputs/FloatInput.js +16 -0
  64. package/lib/esm/Importer/common/Spreadsheet/components/inputs/IntegerInput.js +16 -0
  65. package/lib/esm/Importer/common/Spreadsheet/components/inputs/StringInput.js +14 -0
  66. package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.d.ts +1 -0
  67. package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +20 -0
  68. package/lib/esm/Importer/common/Spreadsheet/hooks.js +245 -0
  69. package/lib/esm/Importer/common/Spreadsheet/index.js +119 -0
  70. package/lib/esm/Importer/common/Spreadsheet/styles.js +16 -0
  71. package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +47 -0
  72. package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +236 -0
  73. package/lib/esm/Importer/common/Spreadsheet/validation/index.js +202 -0
  74. package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +181 -0
  75. package/lib/esm/Importer/common/icons/index.js +18 -0
  76. package/lib/esm/Importer/common/index.js +13 -0
  77. package/lib/esm/Importer/common/theme.js +19 -0
  78. package/lib/esm/Importer/common/utils.js +100 -0
  79. package/lib/esm/Importer/contexts/ImporterContextProvider.js +247 -0
  80. package/lib/esm/Importer/data/index.js +172 -0
  81. package/lib/esm/Importer/index.js +28 -0
  82. package/lib/esm/api/index.js +93 -0
  83. package/lib/esm/api/responseHandlers.js +49 -0
  84. package/lib/esm/common/AppLoadingContextProvider/AppLoadingUI.js +26 -0
  85. package/lib/esm/common/AppLoadingContextProvider/index.js +25 -0
  86. package/lib/esm/common/ConfirmationModal.js +19 -0
  87. package/lib/esm/common/Modal.js +31 -0
  88. package/lib/esm/common/Spinner.js +41 -0
  89. package/lib/esm/common/Table/Pagination/icons.js +42 -0
  90. package/lib/esm/common/Table/Pagination/index.js +32 -0
  91. package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +50 -0
  92. package/lib/esm/common/Table/TableActions/ExportData.js +23 -0
  93. package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +47 -0
  94. package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.styles.js +24 -0
  95. package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +35 -0
  96. package/lib/esm/common/Table/TableActions/FilterByErrors/index.js +1 -0
  97. package/lib/esm/common/Table/TableActions/RowFilters.js +42 -0
  98. package/lib/esm/common/Table/TableActions/SearchRows.js +72 -0
  99. package/lib/esm/common/Table/TableActions/TableActions.js +35 -0
  100. package/lib/esm/common/Table/TableActions/TableActions.styles.js +18 -0
  101. package/lib/esm/common/Table/TableActions/TransformedRecordsCount.js +83 -0
  102. package/lib/esm/common/Table/TableActions/common.js +1 -0
  103. package/lib/esm/common/Table/TableActions/hooks.js +41 -0
  104. package/lib/esm/common/Table/TableActions/icons.js +17 -0
  105. package/lib/esm/common/Table/TableActions/index.js +1 -0
  106. package/lib/esm/common/Table/TableDataProvider.js +127 -0
  107. package/lib/esm/common/Table/TableView/TableHeaders.js +69 -0
  108. package/lib/esm/common/Table/TableView/TableRows/TableRow.js +57 -0
  109. package/lib/esm/common/Table/TableView/TableRows/index.js +48 -0
  110. package/lib/esm/common/Table/TableView/common/index.js +37 -0
  111. package/lib/esm/common/Table/TableView/index.js +132 -0
  112. package/lib/esm/common/Table/TableView/types.js +1 -0
  113. package/lib/esm/common/Table/icons.js +15 -0
  114. package/lib/esm/common/Table/index.js +140 -0
  115. package/lib/esm/common/Table/useReorderRows.js +83 -0
  116. package/lib/esm/common/Toast.js +69 -0
  117. package/lib/esm/common/TooltipProvider.js +57 -0
  118. package/lib/esm/common/buttons.js +97 -0
  119. package/lib/esm/common/columnsTransformations.js +94 -0
  120. package/lib/esm/common/columnsValidations.d.ts +1 -27
  121. package/lib/esm/common/columnsValidations.js +401 -0
  122. package/lib/esm/common/datePatterns.d.ts +26 -0
  123. package/lib/esm/common/datePatterns.js +327 -0
  124. package/lib/esm/common/icons/index.js +30 -0
  125. package/lib/esm/common/index.d.ts +1 -0
  126. package/lib/esm/common/index.js +46 -0
  127. package/lib/esm/common/inputs/Autocomplete.js +110 -0
  128. package/lib/esm/common/inputs/Checkbox.js +53 -0
  129. package/lib/esm/common/inputs/SelectMenu.js +74 -0
  130. package/lib/esm/common/inputs/TextInput.js +89 -0
  131. package/lib/esm/common/inputs/index.js +5 -0
  132. package/lib/esm/common/inputs/tooltip.js +38 -0
  133. package/lib/esm/common/logo.js +13 -0
  134. package/lib/esm/hooks/index.d.ts +1 -0
  135. package/lib/esm/hooks/index.js +16 -0
  136. package/lib/esm/index.js +218 -0
  137. package/lib/esm/locales/de.js +126 -0
  138. package/lib/esm/locales/en.js +126 -0
  139. package/lib/esm/locales/es.js +126 -0
  140. package/lib/esm/locales/fr.js +126 -0
  141. package/lib/esm/locales/index.js +4 -0
  142. package/lib/esm/styled/fontsURL.js +27 -0
  143. package/lib/esm/styled/index.js +3 -0
  144. package/lib/esm/styled/theme/animations.js +9 -0
  145. package/lib/esm/styled/theme/colorPalette.js +109 -0
  146. package/lib/esm/styled/theme/debugCss.js +16 -0
  147. package/lib/esm/styled/theme/dimensionsCss.js +20 -0
  148. package/lib/esm/styled/theme/fontCss.js +17 -0
  149. package/lib/esm/styled/theme/globalCss.js +26 -0
  150. package/lib/esm/styled/theme/index.js +33 -0
  151. package/lib/esm/styled/theme/layoutCss.js +26 -0
  152. package/lib/esm/styled/theme/mediaQueries.js +4 -0
  153. package/lib/esm/styled/theme/positionCss.js +27 -0
  154. package/lib/esm/styled/theme/textCss.js +18 -0
  155. package/lib/esm/styled/theme/textStyles.js +27 -0
  156. package/lib/esm/styled/themeType.js +6 -0
  157. package/lib/esm/styled/utils.js +17 -0
  158. package/lib/esm/types.d.ts +7 -6
  159. package/lib/esm/types.js +65 -0
  160. package/lib/esm/utils/hooks/useWindowSize.js +23 -0
  161. package/lib/esm/utils/hooks.js +1 -0
  162. package/lib/esm/utils/index.d.ts +1 -0
  163. package/lib/esm/utils/index.js +41 -0
  164. package/lib/main.js +6 -6
  165. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ import { defaultTableHeaderHeightPx, defaultTableRowHeightPx, } from "../../common/Table/TableView/common";
2
+ export var contentWidth = 1120;
3
+ export var baseUrls = {
4
+ local: "http://localhost:3000",
5
+ development: "https://fuse-develop.flatirons.com",
6
+ production: "https://fuse.flatirons.com",
7
+ test: "https://fuse-test.flatirons.com",
8
+ };
9
+ var MINIMUM_TABLE_HEIGHT = 100;
10
+ export var getTableHeight = function (_a) {
11
+ var _b = _a.headerHeight, headerHeight = _b === void 0 ? defaultTableHeaderHeightPx : _b, _c = _a.rowHeight, rowHeight = _c === void 0 ? defaultTableRowHeightPx : _c, _d = _a.maxVisibleRows, maxVisibleRows = _d === void 0 ? 7 : _d, _e = _a.minimumTableHeight, minimumTableHeight = _e === void 0 ? MINIMUM_TABLE_HEIGHT : _e, dataCount = _a.dataCount;
12
+ return Math.max(headerHeight + rowHeight * Math.min(dataCount, maxVisibleRows + 0.5), minimumTableHeight);
13
+ };
@@ -0,0 +1,19 @@
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 Color from 'color';
13
+ import { theme } from "../../styled/theme";
14
+ var getCustomTheme = function (importerStylePreferences) {
15
+ var primary_color = importerStylePreferences.primary_color, secondary_color = importerStylePreferences.secondary_color, highlight1 = importerStylePreferences.highlight1, highlight2 = importerStylePreferences.highlight2, background = importerStylePreferences.background;
16
+ var customTheme = __assign(__assign({}, theme), { colors: __assign(__assign({}, theme.colors), { pink500: primary_color, pink700: Color(primary_color).darken(0.2).hex(), black: secondary_color, blue500: highlight1, blue100: highlight2, backgroundInterface: background }) });
17
+ return { theme: customTheme, logoURL: importerStylePreferences.logo_url };
18
+ };
19
+ export { theme, getCustomTheme };
@@ -0,0 +1,100 @@
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 axios from "axios";
38
+ export var getColumnType = function (_a) {
39
+ var _b;
40
+ var templateLabel = _a.templateLabel, templateHeaders = _a.templateHeaders;
41
+ return (_b = templateHeaders.find(function (th) { return th.label === templateLabel; })) === null || _b === void 0 ? void 0 : _b.column_type;
42
+ };
43
+ export var sendRecordsToIntegrations = function (reviewedData, integrations) { return __awaiter(void 0, void 0, void 0, function () {
44
+ var _i, reviewedData_1, record, _a, integrations_1, integration, url, trigger_type, instance, error_1;
45
+ return __generator(this, function (_b) {
46
+ switch (_b.label) {
47
+ case 0:
48
+ _i = 0, reviewedData_1 = reviewedData;
49
+ _b.label = 1;
50
+ case 1:
51
+ if (!(_i < reviewedData_1.length)) return [3 /*break*/, 8];
52
+ record = reviewedData_1[_i];
53
+ _a = 0, integrations_1 = integrations;
54
+ _b.label = 2;
55
+ case 2:
56
+ if (!(_a < integrations_1.length)) return [3 /*break*/, 7];
57
+ integration = integrations_1[_a];
58
+ url = integration.url, trigger_type = integration.trigger_type;
59
+ if (!(trigger_type === "webhook")) return [3 /*break*/, 6];
60
+ _b.label = 3;
61
+ case 3:
62
+ _b.trys.push([3, 5, , 6]);
63
+ instance = axios.create({
64
+ baseURL: url,
65
+ timeout: 1000,
66
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
67
+ });
68
+ return [4 /*yield*/, instance.post("", record)];
69
+ case 4:
70
+ _b.sent();
71
+ return [3 /*break*/, 6];
72
+ case 5:
73
+ error_1 = _b.sent();
74
+ console.log(error_1);
75
+ return [3 /*break*/, 6];
76
+ case 6:
77
+ _a++;
78
+ return [3 /*break*/, 2];
79
+ case 7:
80
+ _i++;
81
+ return [3 /*break*/, 1];
82
+ case 8: return [2 /*return*/];
83
+ }
84
+ });
85
+ }); };
86
+ export var verifyDuplicateValue = function (array, key, shouldThrow, message) {
87
+ if (shouldThrow === void 0) { shouldThrow = false; }
88
+ var uniqueValues = {};
89
+ for (var i = 0; i < array.length; i++) {
90
+ var currentValue = array[i][key];
91
+ if (uniqueValues[currentValue]) {
92
+ if (shouldThrow) {
93
+ throw new Error(message || "There is a duplicated '".concat(key, "' between your columns."));
94
+ }
95
+ return true;
96
+ }
97
+ uniqueValues[currentValue] = true;
98
+ }
99
+ return false;
100
+ };
@@ -0,0 +1,247 @@
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
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
49
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
50
+ if (ar || !(i in from)) {
51
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
52
+ ar[i] = from[i];
53
+ }
54
+ }
55
+ return to.concat(ar || Array.prototype.slice.call(from));
56
+ };
57
+ import { jsx as _jsx } from "react/jsx-runtime";
58
+ import Fuse from "fuse.js";
59
+ import { createContext, useContext, useEffect, useMemo, useRef, useState, } from "react";
60
+ import { FieldTypes, } from "../../types";
61
+ import { FuseApi } from "../common/FuseApi";
62
+ import { getCustomTheme, theme } from "../common/theme";
63
+ import { getColumnType, verifyDuplicateValue } from "../common/utils";
64
+ export var fusejsOptions = {
65
+ includeScore: true,
66
+ threshold: 0.35,
67
+ };
68
+ var ImporterContext = createContext({});
69
+ export var ImporterContextProvider = function (_a) {
70
+ var templateSlug = _a.templateSlug, initialRecords = _a.initialRecords, apiToken = _a.apiToken, children = _a.children, options = _a.options, onSubmit = _a.onSubmit, onClose = _a.onClose, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, dynamicColumns = _a.dynamicColumns;
71
+ var _b = useState(initialRecords ? 2 : 0), currentStepIndex = _b[0], setCurrentStepIndex = _b[1];
72
+ var _c = useState(0), matcherSubstep = _c[0], setMatcherSubstep = _c[1];
73
+ var _d = useState(null), templateError = _d[0], setTemplateError = _d[1];
74
+ var _e = useState(null), templateHeaders = _e[0], setTemplateHeaders = _e[1];
75
+ var _f = useState(null), integrations = _f[0], setIntegrations = _f[1];
76
+ var _g = useState(null), uploadedData = _g[0], setUploadedData = _g[1];
77
+ var _h = useState(null), organization = _h[0], setOrganization = _h[1];
78
+ var _j = useState(null), previewFirstTime = _j[0], setPreviewFirstTime = _j[1];
79
+ var _k = useState({
80
+ theme: theme,
81
+ logoURL: null,
82
+ }), style = _k[0], setStyle = _k[1];
83
+ var _l = useState(null), templateHeaderMatchings = _l[0], setTemplateHeaderMatchings = _l[1];
84
+ var _m = useState(null), enumFieldValueMatchings = _m[0], setEnumFieldValueMatchings = _m[1];
85
+ var _o = useState(null), uploadedDataEnumFieldValues = _o[0], setUploadedDataEnumFieldValues = _o[1];
86
+ var _p = useState([]), selectedRows = _p[0], setSelectedRows = _p[1];
87
+ var isUsingManualImport = useRef(false);
88
+ var _q = useState(0), headerRowIndex = _q[0], setHeaderRowIndex = _q[1];
89
+ var fuseApi = useMemo(function () { return new FuseApi(options.env, apiToken); }, [
90
+ options.env,
91
+ apiToken,
92
+ ]);
93
+ var uploadedDataHeaders = useMemo(function () {
94
+ var _a;
95
+ if (!uploadedData)
96
+ return null;
97
+ if (isUsingManualImport.current) {
98
+ return templateHeaders.reduce(function (acc, curr) {
99
+ acc.push(curr.internal_key);
100
+ return acc;
101
+ }, []);
102
+ }
103
+ return (_a = uploadedData[headerRowIndex]) === null || _a === void 0 ? void 0 : _a.map(function (ud) {
104
+ return typeof ud === "number" ? ud.toString() : ud;
105
+ });
106
+ }, [uploadedData, headerRowIndex]);
107
+ useEffect(function () {
108
+ var setHeadersFromDataset = function () {
109
+ var _templateHeaderMatchings = {};
110
+ var fuse = new Fuse(uploadedDataHeaders, fusejsOptions);
111
+ templateHeaders.forEach(function (templateHeader, _index) {
112
+ var _a;
113
+ var fuseResults = fuse.search(templateHeader.label);
114
+ _templateHeaderMatchings[templateHeader.label] = (_a = fuseResults[0]) === null || _a === void 0 ? void 0 : _a.item;
115
+ });
116
+ setTemplateHeaderMatchings(_templateHeaderMatchings);
117
+ };
118
+ if (uploadedDataHeaders) {
119
+ setHeadersFromDataset();
120
+ }
121
+ }, [uploadedDataHeaders]);
122
+ useEffect(function () {
123
+ if (!templateHeaderMatchings || !uploadedDataHeaders)
124
+ return;
125
+ var _uploadedDataEnumFieldValues = {};
126
+ var templateLabels = Object.keys(templateHeaderMatchings);
127
+ var enumFieldsLabels = templateLabels.filter(function (templateLabel) {
128
+ return getColumnType({ templateLabel: templateLabel, templateHeaders: templateHeaders }) === FieldTypes.enum;
129
+ });
130
+ enumFieldsLabels.forEach(function (templateLabel) {
131
+ var uploadedDataHeader = templateHeaderMatchings[templateLabel];
132
+ var enumFieldValues = new Set();
133
+ var columnIndex = uploadedDataHeaders.indexOf(uploadedDataHeader);
134
+ if (columnIndex === -1)
135
+ return;
136
+ uploadedData === null || uploadedData === void 0 ? void 0 : uploadedData.slice(headerRowIndex + 1).forEach(function (row) {
137
+ var uploadedValue = row[columnIndex];
138
+ enumFieldValues.add(uploadedValue);
139
+ });
140
+ _uploadedDataEnumFieldValues[templateLabel] = Array.from(enumFieldValues.values()).filter(function (element) {
141
+ return element !== undefined;
142
+ });
143
+ });
144
+ setUploadedDataEnumFieldValues(_uploadedDataEnumFieldValues);
145
+ }, [templateHeaderMatchings, uploadedDataHeaders]);
146
+ useEffect(function () {
147
+ (function () { return __awaiter(void 0, void 0, void 0, function () {
148
+ var _a, organization_1, columns_1, importer_style_preferences, integrations_1, preview_first_time, error_1, errorMsg;
149
+ var _b, _c;
150
+ return __generator(this, function (_d) {
151
+ switch (_d.label) {
152
+ case 0:
153
+ _d.trys.push([0, 2, , 3]);
154
+ return [4 /*yield*/, fuseApi.get("/api/v1/importer/templates/".concat(templateSlug))];
155
+ case 1:
156
+ _a = (_d.sent()).data, organization_1 = _a.organization, columns_1 = _a.columns, importer_style_preferences = _a.importer_style_preferences, integrations_1 = _a.integrations, preview_first_time = _a.preview_first_time;
157
+ setOrganization(organization_1);
158
+ setTemplateHeaders(function () {
159
+ // user has created dynamic columns
160
+ if (dynamicColumns && (dynamicColumns === null || dynamicColumns === void 0 ? void 0 : dynamicColumns.length) >= 0) {
161
+ var allColumns = __spreadArray(__spreadArray([], columns_1, true), dynamicColumns, true);
162
+ var columnsOrderedByPosition_1 = allColumns.sort(function (a, b) { return (a === null || a === void 0 ? void 0 : a.position) - (b === null || b === void 0 ? void 0 : b.position); });
163
+ verifyDuplicateValue(columnsOrderedByPosition_1, "internal_key", true, "There is a duplicated 'internal_key' between your columns.");
164
+ verifyDuplicateValue(columnsOrderedByPosition_1, "label", true, "There is a duplicated 'label' between your columns.");
165
+ return columnsOrderedByPosition_1;
166
+ }
167
+ // user has not created dynamic columns
168
+ var columnsOrderedByPosition = columns_1.sort(function (a, b) { return a.position - b.position; });
169
+ return columnsOrderedByPosition;
170
+ });
171
+ setIntegrations(integrations_1);
172
+ setPreviewFirstTime(preview_first_time);
173
+ if (organization_1.plan && organization_1.plan.allow_style_customization) {
174
+ setStyle(getCustomTheme(importer_style_preferences));
175
+ }
176
+ return [3 /*break*/, 3];
177
+ case 2:
178
+ error_1 = _d.sent();
179
+ errorMsg = ((_c = (_b = error_1.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.message) ||
180
+ "There was an error preventing the data importer from loading. Check your API Key and try again.";
181
+ setTemplateError(errorMsg);
182
+ return [3 /*break*/, 3];
183
+ case 3: return [2 /*return*/];
184
+ }
185
+ });
186
+ }); })();
187
+ }, [dynamicColumns]);
188
+ var resetImport = function () {
189
+ setUploadedData(null);
190
+ setTemplateHeaderMatchings(null);
191
+ };
192
+ var resetImporterWhenUsingManualImport = function () {
193
+ setCurrentStepIndex(0);
194
+ isUsingManualImport.current = false;
195
+ resetImport();
196
+ };
197
+ var manualDataImportSelected = function () {
198
+ if (templateHeaders) {
199
+ isUsingManualImport.current = true;
200
+ setUploadedData([]);
201
+ setTemplateHeaderMatchings({});
202
+ setCurrentStepIndex(2);
203
+ }
204
+ };
205
+ var inTrialMode = organization === null || organization === void 0 ? void 0 : organization.trial_mode;
206
+ var value = {
207
+ initialRecords: initialRecords,
208
+ currentStepIndex: currentStepIndex,
209
+ templateHeaders: templateHeaders,
210
+ enumFieldValueMatchings: enumFieldValueMatchings,
211
+ templateHeaderMatchings: templateHeaderMatchings,
212
+ uploadedDataEnumFieldValues: uploadedDataEnumFieldValues,
213
+ importerOptions: options,
214
+ uploadedData: uploadedData,
215
+ uploadedDataHeaders: uploadedDataHeaders,
216
+ templateError: templateError,
217
+ matcherSubstep: matcherSubstep,
218
+ apiToken: apiToken,
219
+ templateSlug: templateSlug,
220
+ inTrialMode: inTrialMode,
221
+ fuseApi: fuseApi,
222
+ theme: style.theme,
223
+ logoURL: style.logoURL,
224
+ integrations: integrations,
225
+ previewFirstTime: previewFirstTime,
226
+ headerRowIndex: headerRowIndex,
227
+ setHeaderRowIndex: setHeaderRowIndex,
228
+ setUploadedData: setUploadedData,
229
+ formatRecord: formatRecord,
230
+ setCurrentStepIndex: setCurrentStepIndex,
231
+ setEnumFieldValueMatchings: setEnumFieldValueMatchings,
232
+ setTemplateHeaderMatchings: setTemplateHeaderMatchings,
233
+ resetImport: resetImport,
234
+ onValidateRecord: onValidateRecord,
235
+ setMatcherSubstep: setMatcherSubstep,
236
+ onClose: onClose,
237
+ setPreviewFirstTime: setPreviewFirstTime,
238
+ onSubmit: onSubmit,
239
+ selectedRows: selectedRows,
240
+ setSelectedRows: setSelectedRows,
241
+ isUsingManualImport: isUsingManualImport,
242
+ resetImporterWhenUsingManualImport: resetImporterWhenUsingManualImport,
243
+ manualDataImportSelected: manualDataImportSelected,
244
+ };
245
+ return (_jsx(ImporterContext.Provider, __assign({ value: value }, { children: children })));
246
+ };
247
+ export var useImporterContext = function () { return useContext(ImporterContext); };
@@ -0,0 +1,172 @@
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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { transformRecord } from "../../Importer/common/Spreadsheet/transformation";
22
+ import { FieldTypes, } from "../../types";
23
+ import { parseValue } from "../common/Spreadsheet/common";
24
+ var MINIMUM_ROW_COUNT = 20;
25
+ var getRowId = function (index) {
26
+ var uniqueTimestamp = new Date().getTime();
27
+ return "r".concat(index, "-").concat(uniqueTimestamp);
28
+ };
29
+ export var addEmptyRows = function (data, fields) {
30
+ var emptyRecord = fields.reduce(function (obj, f) {
31
+ var _a;
32
+ return (__assign(__assign({}, obj), (_a = {}, _a[f.name] = null, _a)));
33
+ }, {});
34
+ var newData = Array.from({ length: MINIMUM_ROW_COUNT - data.length }, function (_, index) { return (__assign(__assign({}, emptyRecord), { _meta: {
35
+ id: getRowId(data.length + index),
36
+ rowIndex: data.length + index,
37
+ } })); });
38
+ return __spreadArray(__spreadArray([], data, true), newData, true);
39
+ };
40
+ export var addMeta = function (record, index, uploadedRow, transformedRow) {
41
+ var _a;
42
+ if (uploadedRow === void 0) { uploadedRow = null; }
43
+ if (transformedRow === void 0) { transformedRow = null; }
44
+ var rId = getRowId(index);
45
+ var meta = (_a = record._meta) !== null && _a !== void 0 ? _a : {};
46
+ return __assign(__assign({}, record), { _meta: __assign(__assign({}, meta), { id: rId, rowIndex: index, touched: false, uploadedRow: uploadedRow, transformedRow: __assign(__assign({}, meta.transformedRow), transformedRow) }) });
47
+ };
48
+ export var recordListToDataSet = function (data, fields) {
49
+ var fieldWithTransformations = fields.filter(function (field) { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.transformations) === null || _a === void 0 ? void 0 : _a.length) > 0; });
50
+ var initialData = data;
51
+ if (data.length < MINIMUM_ROW_COUNT) {
52
+ initialData = addEmptyRows(data, fields);
53
+ }
54
+ return initialData.reduce(function (dataSet, record, i) {
55
+ var transformedRecord = null;
56
+ if (fieldWithTransformations.length > 0) {
57
+ transformedRecord = transformRecord({
58
+ record: record,
59
+ fields: fieldWithTransformations,
60
+ });
61
+ }
62
+ var recordWithMeta = addMeta(record, i, undefined, transformedRecord);
63
+ dataSet[recordWithMeta._meta.id] = recordWithMeta;
64
+ return dataSet;
65
+ }, {});
66
+ };
67
+ var compareFormattedRecord = function (originalRecord, formattedRecord) {
68
+ var comparisonResult = {};
69
+ for (var key in formattedRecord) {
70
+ if (formattedRecord.hasOwnProperty(key)) {
71
+ if (formattedRecord[key] !== originalRecord[key]) {
72
+ comparisonResult[key] = {
73
+ original: originalRecord[key],
74
+ transformed: formattedRecord[key],
75
+ };
76
+ }
77
+ }
78
+ }
79
+ return comparisonResult;
80
+ };
81
+ export var transformToRecords = function (_a) {
82
+ var templateHeaderMatchings = _a.templateHeaderMatchings, enumFieldValueMatchings = _a.enumFieldValueMatchings, templateHeaders = _a.templateHeaders, uploadedDataHeaders = _a.uploadedDataHeaders, uploadedData = _a.uploadedData, formatRecord = _a.formatRecord;
83
+ var matchedColumnsLabels = Object.keys(templateHeaderMatchings)
84
+ .filter(function (label) { return !!templateHeaderMatchings[label]; })
85
+ .map(function (label) { return ({
86
+ label: label,
87
+ index: uploadedDataHeaders.indexOf(templateHeaderMatchings[label]),
88
+ }); });
89
+ var templateHeadersByLabel = templateHeaders.reduce(function (byLabel, header) {
90
+ var _a;
91
+ return (__assign(__assign({}, byLabel), (_a = {}, _a[header.label] = header, _a)));
92
+ }, {});
93
+ var getRecord = function (row, index) {
94
+ var record = addMeta({}, index, row);
95
+ matchedColumnsLabels.forEach(function (_a) {
96
+ var label = _a.label, index = _a.index;
97
+ var enumSet = enumFieldValueMatchings
98
+ ? enumFieldValueMatchings[label]
99
+ : null;
100
+ var header = templateHeadersByLabel[label];
101
+ if (!header)
102
+ return;
103
+ var key = header.internal_key;
104
+ var value = row[index];
105
+ if (value === undefined)
106
+ return;
107
+ record[key] = parseValue(FieldTypes[header.column_type], value, enumSet);
108
+ });
109
+ if (formatRecord) {
110
+ var formattedRecord = formatRecord(record);
111
+ var comparisonResult = compareFormattedRecord(record, formattedRecord);
112
+ record._meta.transformedRow = comparisonResult;
113
+ return formattedRecord;
114
+ }
115
+ return record;
116
+ };
117
+ return uploadedData.map(getRecord);
118
+ };
119
+ export var getPreviewDataSet = function (_a) {
120
+ var uploadedData = _a.uploadedData;
121
+ var rowLen = 0;
122
+ for (var i = 0; i < uploadedData.length; i++)
123
+ rowLen = Math.max(rowLen, uploadedData[i].length);
124
+ var fields = new Array(rowLen).fill(null).map(function (_, i) {
125
+ var key = String.fromCharCode(65 + i);
126
+ return {
127
+ label: key,
128
+ name: key,
129
+ type: FieldTypes.string,
130
+ isRequired: false,
131
+ };
132
+ });
133
+ var getInitialDataSet = function () {
134
+ var data = uploadedData.map(function (row, index) {
135
+ var entry = addMeta({}, index);
136
+ fields.forEach(function (field, index) {
137
+ entry[field.name] = row[index];
138
+ });
139
+ return entry;
140
+ });
141
+ return recordListToDataSet(data, fields);
142
+ };
143
+ return { fields: fields, initialDataSet: getInitialDataSet() };
144
+ };
145
+ export var getTemplateFields = function (_a) {
146
+ var templateHeaders = _a.templateHeaders;
147
+ return templateHeaders.map(function (templateHeader) { return ({
148
+ label: templateHeader.label,
149
+ name: templateHeader.internal_key,
150
+ type: FieldTypes[templateHeader.column_type] || FieldTypes.string,
151
+ isRequired: templateHeader.required,
152
+ options: templateHeader.values,
153
+ pattern: templateHeader.pattern,
154
+ validations: templateHeader.validations,
155
+ transformations: templateHeader.transformations,
156
+ }); });
157
+ };
158
+ export var getReviewDataSet = function (_a) {
159
+ var _b;
160
+ var records = _a.records, fields = _a.fields;
161
+ var baseInitialDataSet = recordListToDataSet(addEmptyRows(records, fields), fields);
162
+ var highestRowIndex = 0;
163
+ Object.keys(baseInitialDataSet).forEach(function (key) {
164
+ var record = baseInitialDataSet[key];
165
+ if (record._meta.rowIndex > highestRowIndex) {
166
+ highestRowIndex = record._meta.rowIndex;
167
+ }
168
+ });
169
+ var emptyRowAtBottom = addMeta({}, highestRowIndex + 1);
170
+ var initialDataSet = __assign(__assign({}, baseInitialDataSet), (_b = {}, _b[emptyRowAtBottom._meta.id] = emptyRowAtBottom, _b));
171
+ return { initialDataSet: initialDataSet };
172
+ };
@@ -0,0 +1,28 @@
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 { ImporterContextProvider } from "./contexts/ImporterContextProvider";
14
+ import { ImporterWithContext } from "./ImporterWithContext";
15
+ export var ACCOUNT_ROUTES = {
16
+ TEMPLATES: "/importers",
17
+ };
18
+ export var ACCOUNT_VIEW_PATH = "/account";
19
+ var p = function (path) { return "".concat(ACCOUNT_VIEW_PATH).concat(path); };
20
+ export var TEMPLATES_ROUTE = p(ACCOUNT_ROUTES.TEMPLATES);
21
+ var Importer = function (_a) {
22
+ var templateSlug = _a.templateSlug, apiToken = _a.apiToken, options = _a.options, formatRecord = _a.formatRecord, onValidateRecord = _a.onValidateRecord, onSubmit = _a.onSubmit, onClose = _a.onClose, dynamicColumns = _a.dynamicColumns;
23
+ return (_jsx(ImporterContextProvider, __assign({ initialRecords: options.records, options: options, templateSlug: templateSlug, apiToken: apiToken, formatRecord: formatRecord, onValidateRecord: onValidateRecord, onClose: onClose, onSubmit: onSubmit, dynamicColumns: dynamicColumns }, { children: _jsx(ImporterWithContext, {}) })));
24
+ };
25
+ export * from "./common/Spreadsheet";
26
+ export * from "./common/utils";
27
+ export * from "./Review/ReviewContextProvider";
28
+ export { Importer };