fuse-importer 0.0.1-staging → 0.0.2-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.
- package/lib/esm/Importer/ImporterWithContext.js +1 -1
- package/lib/esm/Importer/Review/ReviewContextProvider.js +4 -11
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +8 -11
- package/lib/esm/Importer/Uploader/HeadersPreview.js +16 -8
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +9 -20
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +1 -2
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +7 -3
- package/lib/esm/Importer/common/Spreadsheet/common/types.d.ts +2 -2
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.d.ts +2 -1
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +9 -4
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.d.ts +1 -2
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +18 -13
- package/lib/esm/Importer/common/Spreadsheet/index.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +1 -1
- package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +2 -0
- package/lib/esm/Importer/contexts/ImporterContextProvider.js +23 -20
- package/lib/esm/Importer/data/index.js +6 -11
- package/lib/esm/common/Table/TableActions/RowFilters.js +4 -1
- package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +2 -2
- package/lib/esm/common/Table/TableView/TableRows/TableRow.js +4 -4
- package/lib/esm/common/Table/TableView/TableRows/index.js +7 -4
- package/lib/esm/common/Table/TableView/index.d.ts +1 -1
- package/lib/esm/common/Table/TableView/index.js +1 -2
- package/lib/esm/common/Table/TableView/types.d.ts +0 -1
- package/lib/esm/common/inputs/Autocomplete.js +1 -1
- package/lib/esm/common/inputs/Checkbox.js +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +15 -27
- package/lib/esm/locales/de.js +1 -1
- package/lib/esm/locales/en.js +1 -1
- package/lib/esm/locales/es.js +1 -1
- package/lib/esm/locales/fr.js +1 -1
- package/lib/esm/types.d.ts +5 -8
- package/package.json +3 -2
- package/lib/main.js +0 -172
- package/lib/main.js.LICENSE.txt +0 -61
|
@@ -10,17 +10,17 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import { CSS } from "@dnd-kit/utilities";
|
|
14
13
|
import { useSortable } from "@dnd-kit/sortable";
|
|
14
|
+
import { CSS } from "@dnd-kit/utilities";
|
|
15
15
|
import { Div } from "../../../../styled/utils";
|
|
16
|
-
import { TableRow } from "./TableRow";
|
|
17
16
|
import React from "react";
|
|
18
17
|
import { areEqual } from "react-window";
|
|
19
18
|
import { useSpreadsheetContext } from "../../../../Importer";
|
|
19
|
+
import { TableRow } from "./TableRow";
|
|
20
20
|
var Row = React.memo(function (_a) {
|
|
21
21
|
var _b;
|
|
22
22
|
var data = _a.data, rowIndex = _a.rowIndex, style = _a.style;
|
|
23
|
-
var items = data.items, rowWidth = data.rowWidth, isDraggable = data.isDraggable, onRowClick = data.onRowClick, columns = data.columns,
|
|
23
|
+
var items = data.items, rowWidth = data.rowWidth, isDraggable = data.isDraggable, onRowClick = data.onRowClick, columns = data.columns, rowHeight = data.rowHeight, getItemKey = data.getItemKey;
|
|
24
24
|
var item = items[rowIndex];
|
|
25
25
|
var selectedRows = useSpreadsheetContext().selectedRows;
|
|
26
26
|
var isRowSelected = selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows.includes((_b = item === null || item === void 0 ? void 0 : item._meta) === null || _b === void 0 ? void 0 : _b.id);
|
|
@@ -28,7 +28,10 @@ var Row = React.memo(function (_a) {
|
|
|
28
28
|
var containerProps = { style: style };
|
|
29
29
|
if (isDraggable)
|
|
30
30
|
containerProps = __assign(__assign({}, containerProps), { item: item });
|
|
31
|
-
return (_jsx(Container, __assign({}, containerProps, { children: _jsx(TableRow, { rowWidth: rowWidth, columns: columns, onRowClick: onRowClick,
|
|
31
|
+
return (_jsx(Container, __assign({}, containerProps, { children: _jsx(TableRow, { rowWidth: rowWidth, columns: columns, onRowClick: onRowClick, h: rowHeight, row: item, indexI: rowIndex, isLast: rowIndex === items.length - 1, pRelative: true, getItemKey: getItemKey, isRowSelected: isRowSelected || false, className: rowIndex <
|
|
32
|
+
items.findIndex(function (item) { var _a; return ((_a = item === null || item === void 0 ? void 0 : item._meta) === null || _a === void 0 ? void 0 : _a.id) === (selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows[0]); })
|
|
33
|
+
? "before-selected-row"
|
|
34
|
+
: "" }) })));
|
|
32
35
|
}, areEqual);
|
|
33
36
|
var DraggableRow = React.memo(function (_a) {
|
|
34
37
|
var item = _a.item, baseStyle = _a.style, children = _a.children;
|
|
@@ -8,4 +8,4 @@ type TableViewWrapperProps = {
|
|
|
8
8
|
checkboxColumnWidth?: number;
|
|
9
9
|
};
|
|
10
10
|
export declare const TableViewWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../../../styled/utils").CSSProps & TableViewWrapperProps, never>;
|
|
11
|
-
export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading,
|
|
11
|
+
export declare const TableView: React.MemoExoticComponent<({ data, columns, pageSize, onRowClick, sortBy, isLoading, setSortBy, rowWidthScalingFactor, onSectionRendered, tableHeadersHeight, rowHeight, h, onTableScroll, getItemKey, isDraggable, checkboxColumnWidth, isFiltering, ...props }: TableViewProps) => JSX.Element>;
|
|
@@ -66,7 +66,7 @@ var buildGridStyles = function (rowWidthScalingFactor) {
|
|
|
66
66
|
return gridStyles;
|
|
67
67
|
};
|
|
68
68
|
export var TableView = React.memo(function (_a) {
|
|
69
|
-
var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.
|
|
69
|
+
var data = _a.data, columns = _a.columns, pageSize = _a.pageSize, _b = _a.onRowClick, onRowClick = _b === void 0 ? null : _b, _c = _a.sortBy, sortBy = _c === void 0 ? { field: null, direction: null } : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.setSortBy, setSortBy = _e === void 0 ? null : _e, _f = _a.rowWidthScalingFactor, rowWidthScalingFactor = _f === void 0 ? 1 : _f, onSectionRendered = _a.onSectionRendered, _g = _a.tableHeadersHeight, tableHeadersHeight = _g === void 0 ? defaultTableHeaderHeightPx : _g, _h = _a.rowHeight, rowHeight = _h === void 0 ? defaultTableRowHeightPx : _h, _j = _a.h, h = _j === void 0 ? 500 : _j, _k = _a.onTableScroll, onTableScroll = _k === void 0 ? null : _k, _l = _a.getItemKey, getItemKey = _l === void 0 ? null : _l, _m = _a.isDraggable, isDraggable = _m === void 0 ? false : _m, checkboxColumnWidth = _a.checkboxColumnWidth, _o = _a.isFiltering, isFiltering = _o === void 0 ? false : _o, props = __rest(_a, ["data", "columns", "pageSize", "onRowClick", "sortBy", "isLoading", "setSortBy", "rowWidthScalingFactor", "onSectionRendered", "tableHeadersHeight", "rowHeight", "h", "onTableScroll", "getItemKey", "isDraggable", "checkboxColumnWidth", "isFiltering"]);
|
|
70
70
|
var headerContainerRef = useRef();
|
|
71
71
|
var onScroll = function (_a) {
|
|
72
72
|
var scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft;
|
|
@@ -107,7 +107,6 @@ export var TableView = React.memo(function (_a) {
|
|
|
107
107
|
rowWidth: rowWidth,
|
|
108
108
|
onRowClick: onRowClick,
|
|
109
109
|
columns: columns,
|
|
110
|
-
highlightFirstRow: highlightFirstRow,
|
|
111
110
|
rowHeight: rowHeight,
|
|
112
111
|
getItemKey: getItemKey,
|
|
113
112
|
},
|
|
@@ -102,7 +102,7 @@ var Autocomplete = function (_a) {
|
|
|
102
102
|
if (!isTyping && prefix)
|
|
103
103
|
setIsTyping(true);
|
|
104
104
|
setText(v);
|
|
105
|
-
}, icon: isDisabled ? null : inputIconUI, labelTooltip: labelTooltip }) })), !isDisabled && filteredOptions.length > 0 && (_jsx(SelectMenu, __assign({ referenceElement: referenceElement, placement: placement, isOpen: isMenuOpen, onClose: function () { return setIsMenuOpen(false); } }, { children: filteredOptions.map(function (o, index) { return (_jsx(Div, { children: _jsx(MenuItem, __assign({ id: id ? "".concat(id, "-option-").concat(o.label) : null, isSelected: value === (o === null || o === void 0 ? void 0 : o.value), onClick: function () { return onSelect(o === null || o === void 0 ? void 0 : o.value); } }, { children: o.label })) }, index)); }) })))] })));
|
|
105
|
+
}, icon: isDisabled ? null : inputIconUI, labelTooltip: labelTooltip }) })), !isDisabled && filteredOptions.length > 0 && (_jsx(SelectMenu, __assign({ referenceElement: referenceElement, placement: placement, isOpen: isMenuOpen, onClose: function () { return setIsMenuOpen(false); } }, { children: filteredOptions.map(function (o, index) { return (_jsx(Div, __assign({ "data-test-id": "autocomplete-menu-item" }, { children: _jsx(MenuItem, __assign({ id: id ? "".concat(id, "-option-").concat(o.label) : null, isSelected: value === (o === null || o === void 0 ? void 0 : o.value), onClick: function () { return onSelect(o === null || o === void 0 ? void 0 : o.value); } }, { children: o.label })) }), index)); }) })))] })));
|
|
106
106
|
};
|
|
107
107
|
var chevronDownIcon = (_jsx("svg", __assign({ width: "16", height: "9", viewBox: "0 0 16 9", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: _jsx("path", { d: "M14.9263 1L7.9631 7.96317L0.999928 1", stroke: "black", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })));
|
|
108
108
|
var clearIcon = (_jsxs("svg", __assign({ width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: [_jsx("path", { d: "M4 4L12.5161 12.5161", stroke: "#333333", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M4 12.5161L12.5161 3.99998", stroke: "#333333", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] })));
|
|
@@ -45,7 +45,7 @@ var Checkbox = function (_a) {
|
|
|
45
45
|
var newValue = !isChecked || isIndeterminate;
|
|
46
46
|
onChange(newValue);
|
|
47
47
|
};
|
|
48
|
-
return (_jsx(Container, __assign({}, __assign({ isChecked: isChecked, isDisabled: isDisabled, isIndeterminate: isIndeterminate, onClick: handleOnChange }, props), { children: isIndeterminate ? (_jsx(IndeterminateIcon, {})) : (_jsx(Div, __assign({ centered: true }, { children: isChecked && (icon || checkIcon) }))) })));
|
|
48
|
+
return (_jsx(Container, __assign({}, __assign({ isChecked: isChecked, isDisabled: isDisabled, isIndeterminate: isIndeterminate, onClick: handleOnChange }, props), { "data-test-id": "checkbox" }, { children: isIndeterminate ? (_jsx(IndeterminateIcon, {})) : (_jsx(Div, __assign({ centered: true }, { children: isChecked && (icon || checkIcon) }))) })));
|
|
49
49
|
};
|
|
50
50
|
var checkIcon = (_jsx("svg", __assign({ width: "14", height: "10", viewBox: "0 0 14 10", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: _jsx("path", { d: "M1.10254 4.74355L5.2051 8.84612L12.8974 1.15381", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })));
|
|
51
51
|
var IndeterminateIcon = function () { return (_jsx("svg", __assign({ width: "14", height: "2", viewBox: "0 0 14 2", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, { children: _jsx("path", { d: "M1 1H13", stroke: "white", strokeWidth: "2", strokeLinecap: "round" }) }))); };
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ declare class FuseImporter {
|
|
|
16
16
|
private windowScrollPosition;
|
|
17
17
|
close(): void;
|
|
18
18
|
show(): Promise<void>;
|
|
19
|
-
addColumn<T extends FieldTypesAsUnion>(
|
|
19
|
+
addColumn<T extends FieldTypesAsUnion>(columnData: ColumnRequiredProps<T>): void;
|
|
20
20
|
private renderImporterComponent;
|
|
21
21
|
private createDivComponent;
|
|
22
22
|
private createIframe;
|
package/lib/esm/index.js
CHANGED
|
@@ -45,17 +45,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
45
45
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
49
|
-
var t = {};
|
|
50
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
51
|
-
t[p] = s[p];
|
|
52
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
53
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
54
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
55
|
-
t[p[i]] = s[p[i]];
|
|
56
|
-
}
|
|
57
|
-
return t;
|
|
58
|
-
};
|
|
59
48
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
60
49
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
61
50
|
if (ar || !(i in from)) {
|
|
@@ -131,23 +120,22 @@ var FuseImporter = /** @class */ (function () {
|
|
|
131
120
|
});
|
|
132
121
|
});
|
|
133
122
|
};
|
|
134
|
-
FuseImporter.prototype.addColumn = function (
|
|
135
|
-
var
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
var
|
|
139
|
-
var transformations = (_b = options === null || options === void 0 ? void 0 : options.transformations) !== null && _b !== void 0 ? _b : [];
|
|
123
|
+
FuseImporter.prototype.addColumn = function (columnData) {
|
|
124
|
+
var column_type = columnData.column_type, internal_key = columnData.internal_key, label = columnData.label, required = columnData.required, pattern = columnData.pattern, position = columnData.position, transformations = columnData.transformations, unique = columnData.unique, validations = columnData.validations, values = columnData.values;
|
|
125
|
+
validateColumn(columnData);
|
|
126
|
+
var treatedValidations = __spreadArray(__spreadArray([], getDefaultValidations(column_type), true), (validations || []), true);
|
|
127
|
+
var treatedTransformations = transformations !== null && transformations !== void 0 ? transformations : [];
|
|
140
128
|
var column = {
|
|
141
|
-
column_type:
|
|
142
|
-
internal_key:
|
|
143
|
-
label:
|
|
144
|
-
required:
|
|
145
|
-
pattern:
|
|
146
|
-
position:
|
|
147
|
-
unique:
|
|
148
|
-
values:
|
|
149
|
-
validations:
|
|
150
|
-
transformations:
|
|
129
|
+
column_type: column_type,
|
|
130
|
+
internal_key: internal_key,
|
|
131
|
+
label: label,
|
|
132
|
+
required: required,
|
|
133
|
+
pattern: pattern || null,
|
|
134
|
+
position: position || null,
|
|
135
|
+
unique: unique || false,
|
|
136
|
+
values: column_type === "enum" ? values || [] : [],
|
|
137
|
+
validations: treatedValidations,
|
|
138
|
+
transformations: treatedTransformations,
|
|
151
139
|
};
|
|
152
140
|
this.dynamicColumns.push(column);
|
|
153
141
|
};
|
package/lib/esm/locales/de.js
CHANGED
|
@@ -11,7 +11,7 @@ export default {
|
|
|
11
11
|
},
|
|
12
12
|
upload: {
|
|
13
13
|
headers_preview: {
|
|
14
|
-
title: "
|
|
14
|
+
title: "Wählen Sie eine Kopfzeile aus",
|
|
15
15
|
description: "Die Datei muss Spaltenüberschriften enthalten, um fortzufahren.",
|
|
16
16
|
cancel: "Nein, Datei erneut hochladen",
|
|
17
17
|
continue: "Ja, Weiter",
|
package/lib/esm/locales/en.js
CHANGED
package/lib/esm/locales/es.js
CHANGED
|
@@ -11,7 +11,7 @@ export default {
|
|
|
11
11
|
},
|
|
12
12
|
upload: {
|
|
13
13
|
headers_preview: {
|
|
14
|
-
title: "
|
|
14
|
+
title: "Seleccione una fila de encabezado",
|
|
15
15
|
description: "El archivo debe contener encabezados de columna para continuar.",
|
|
16
16
|
cancel: "No, vuelva a cargar el archivo",
|
|
17
17
|
continue: "Sí, continuar",
|
package/lib/esm/locales/fr.js
CHANGED
|
@@ -11,7 +11,7 @@ export default {
|
|
|
11
11
|
},
|
|
12
12
|
upload: {
|
|
13
13
|
headers_preview: {
|
|
14
|
-
title: "
|
|
14
|
+
title: "Sélectionnez une ligne d'en-tête",
|
|
15
15
|
description: "Le fichier doit contenir des en-têtes de colonne pour continuer.",
|
|
16
16
|
cancel: "Non, re-télécharger le fichier",
|
|
17
17
|
continue: "Oui, continuer",
|
package/lib/esm/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export type SpreadsheetOptions = {
|
|
|
5
5
|
batchValidationDelayMs?: number;
|
|
6
6
|
batchValidationSize?: number;
|
|
7
7
|
showCheckboxColumn?: boolean;
|
|
8
|
-
|
|
8
|
+
withSingleRowSelect?: boolean;
|
|
9
9
|
};
|
|
10
10
|
export type ImporterOptions = {
|
|
11
11
|
zIndex?: number;
|
|
@@ -141,13 +141,14 @@ export type Field = {
|
|
|
141
141
|
validations?: FieldValidation[];
|
|
142
142
|
transformations?: FieldTransformation[];
|
|
143
143
|
};
|
|
144
|
-
export type ColumnRequiredProps<T extends FieldTypesAsUnion> = {
|
|
144
|
+
export type ColumnRequiredProps<T extends FieldTypesAsUnion> = Partial<Pick<TemplateHeader, "unique" | "position" | "pattern">> & {
|
|
145
145
|
internal_key: string;
|
|
146
146
|
label: string;
|
|
147
147
|
column_type: T;
|
|
148
148
|
required: boolean;
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
validations?: ColumnValidations<T>[];
|
|
150
|
+
transformations?: ColumnTransformations<T>[];
|
|
151
|
+
} & (T extends "enum" ? EnumOptions : T extends "time" ? TimeOptions : OtherOptions);
|
|
151
152
|
export type ValidationTypesRules<T extends FieldTypesAsUnion> = T extends "integer" ? IntegerValidationRule : T extends "float" ? FloatValidationRule : T extends "string" ? StringValidationRule : T extends "email" ? EmailValidationRule : T extends "enum" ? EnumValidationRule : T extends "url" ? UrlValidationRule : T extends "boolean" ? BooleanValidationRule : T extends "date" ? DateValidationRule : T extends "datetime" ? DateTimeValidationRule : T extends "time" ? TimeValidationRule : never;
|
|
152
153
|
export type TransformationTypesRules<T extends FieldTypesAsUnion> = T extends "integer" ? IntegerTransformationRule : T extends "float" ? FloatTransformationRule : T extends "string" ? StringTransformationRule : T extends "enum" ? EnumTransformationRule : T extends "url" ? UrlTransformationRule : T extends "date" | "datetime" | "time" ? DateDateTimesAndTimesTransformationRule : never;
|
|
153
154
|
export type ValidationTypeOptions<T extends ValidationTypesRules<FieldTypesAsUnion>> = T extends "cannot_contain" | "contain" | "regex" ? {
|
|
@@ -186,10 +187,6 @@ type TimeOptions = {
|
|
|
186
187
|
type OtherOptions = {
|
|
187
188
|
values?: never;
|
|
188
189
|
};
|
|
189
|
-
export type ColumnOptions<T extends FieldTypesAsUnion> = Partial<Pick<TemplateHeader, "unique" | "position" | "pattern">> & {
|
|
190
|
-
validations?: ColumnValidations<T>[];
|
|
191
|
-
transformations?: ColumnTransformations<T>[];
|
|
192
|
-
} & (T extends "enum" ? EnumOptions : T extends "time" ? TimeOptions : OtherOptions);
|
|
193
190
|
type StringValidationRule = "cannot_contain" | "contain" | "max_length" | "min_length" | "length_exactly" | "unique_case_sensitive" | "unique_case_insensitive" | "regex";
|
|
194
191
|
type StringTransformationRule = "sentence_case" | "capitalize" | "uppercase" | "lowercase" | "trim_whitespace";
|
|
195
192
|
type IntegerValidationRule = "less_than" | "greater_than" | "even" | "odd" | "unique_case_sensitive" | "unique_case_insensitive" | "regex";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fuse-importer",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.2-testing",
|
|
5
5
|
"description": "Flatirons Fuse is a customizable and powerful CSV Importer that works with all front-end languages",
|
|
6
6
|
"browserslist": {
|
|
7
7
|
"production": [
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"i18next": "^22.4.13",
|
|
48
48
|
"luxon": "^2.2.0",
|
|
49
49
|
"openai": "^3.2.1",
|
|
50
|
+
"papaparse": "^5.4.1",
|
|
50
51
|
"qs": "^6.10.1",
|
|
51
52
|
"react-custom-scrollbars": "^4.2.1",
|
|
52
53
|
"react-dropzone": "^11.3.2",
|
|
@@ -93,4 +94,4 @@
|
|
|
93
94
|
"src/*",
|
|
94
95
|
"**/node_modules"
|
|
95
96
|
]
|
|
96
|
-
}
|
|
97
|
+
}
|