fuse-importer 0.2.0-testing → 0.2.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.
- package/lib/esm/Importer/ImporterWithContext.js +9 -8
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +2 -2
- package/lib/esm/Importer/PreviewModeBanner.js +2 -2
- package/lib/esm/Importer/Stepper/StepperSubmitModal.js +4 -21
- package/lib/esm/Importer/Stepper/index.js +13 -15
- package/lib/esm/Importer/TrialModeBanner.d.ts +1 -0
- package/lib/esm/Importer/TrialModeBanner.js +22 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +1 -1
- package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.d.ts +0 -1
- package/lib/esm/Importer/common/Spreadsheet/FilteredDataContextProvider/index.js +1 -6
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +1 -2
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +1 -2
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.d.ts +0 -3
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useDataSetManipulation.js +13 -46
- package/lib/esm/Importer/common/Spreadsheet/ValidationContextProvider/index.js +2 -7
- package/lib/esm/Importer/common/Spreadsheet/components/FindAndReplace/index.js +2 -8
- package/lib/esm/Importer/common/Spreadsheet/components/{SpreadsheetData/index.d.ts → SpreadsheetData.d.ts} +1 -1
- package/lib/esm/Importer/common/Spreadsheet/components/{SpreadsheetData/index.js → SpreadsheetData.js} +17 -18
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +1 -2
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +0 -11
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +10 -13
- package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +1 -3
- package/lib/esm/Importer/contexts/ImporterContextProvider.js +0 -4
- package/lib/esm/Importer/hooks/useSubmitToServer.js +0 -25
- package/lib/esm/common/Table/TableActions/SearchRows.js +17 -9
- package/lib/esm/common/Table/TableView/TableRows/TableRow.js +1 -1
- package/lib/esm/common/inputs/Autocomplete.js +1 -1
- package/lib/esm/common/inputs/TextInput.d.ts +0 -1
- package/lib/esm/common/inputs/TextInput.js +2 -10
- package/lib/esm/index.js +1 -1
- package/lib/esm/locales/de.d.ts +0 -10
- package/lib/esm/locales/de.js +0 -10
- package/lib/esm/locales/en.d.ts +0 -10
- package/lib/esm/locales/en.js +0 -10
- package/lib/esm/locales/es.d.ts +0 -10
- package/lib/esm/locales/es.js +0 -10
- package/lib/esm/locales/fr.d.ts +0 -10
- package/lib/esm/locales/fr.js +0 -10
- package/lib/esm/types.d.ts +0 -1
- package/lib/main.js +9 -9
- package/package.json +1 -1
- package/lib/esm/Importer/WarningsBanner.d.ts +0 -3
- package/lib/esm/Importer/WarningsBanner.js +0 -42
- package/lib/esm/Importer/common/Spreadsheet/KeyboardEventContextProvider/index.d.ts +0 -7
- package/lib/esm/Importer/common/Spreadsheet/KeyboardEventContextProvider/index.js +0 -73
- package/lib/esm/Importer/common/Spreadsheet/SearchContextProvider/index.d.ts +0 -15
- package/lib/esm/Importer/common/Spreadsheet/SearchContextProvider/index.js +0 -43
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useCellSelection.d.ts +0 -24
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useCellSelection.js +0 -207
- package/lib/esm/Importer/common/Spreadsheet/UndoRedoContextProvider/index.d.ts +0 -16
- package/lib/esm/Importer/common/Spreadsheet/UndoRedoContextProvider/index.js +0 -104
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData/CellContextProvider.d.ts +0 -23
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData/CellContextProvider.js +0 -128
package/package.json
CHANGED
|
@@ -1,42 +0,0 @@
|
|
|
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, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { useTranslation } from "react-i18next";
|
|
14
|
-
import { Button } from "../common";
|
|
15
|
-
import { Div, Span, theme } from "../styled";
|
|
16
|
-
import { exclamationPointIcon } from "./common/icons";
|
|
17
|
-
import { useImporterContext } from "./contexts/ImporterContextProvider";
|
|
18
|
-
var CommonBanner = function (_a) {
|
|
19
|
-
var infoText = _a.infoText, btnText = _a.btnText, btnOnClick = _a.btnOnClick;
|
|
20
|
-
return (_jsxs(_Fragment, { children: [_jsx(Div, __assign({ ml: 33, mr: 8 }, { children: exclamationPointIcon })), _jsx(Span, __assign({ mr: 16 }, { children: infoText })), btnText && (_jsx(Button, __assign({ w: 120, br: 8, h: 40, variant: "secondary", onClick: btnOnClick }, { children: btnText })))] }));
|
|
21
|
-
};
|
|
22
|
-
export var TrialModeBanner = function () {
|
|
23
|
-
var t = useTranslation("general").t;
|
|
24
|
-
var handleCta = function () {
|
|
25
|
-
window.location.href = "".concat(process.env.REACT_APP_API_BASE_URL, "/account/billing");
|
|
26
|
-
};
|
|
27
|
-
return (_jsx(CommonBanner, { infoText: t("warnings_banner.trial_mode.info_text"), btnOnClick: handleCta, btnText: t("warnings_banner.trial_mode.button_text") }));
|
|
28
|
-
};
|
|
29
|
-
export var InvalidSubmitFnBanner = function () {
|
|
30
|
-
var t = useTranslation("general").t;
|
|
31
|
-
var handleCta = function () {
|
|
32
|
-
return window.open("https://fuse-docs.flatirons.com/getting-started/submitting-to-a-backend", "_blank");
|
|
33
|
-
};
|
|
34
|
-
return (_jsx(CommonBanner, { infoText: t("warnings_banner.invalid_submit_fn.info_text"), btnOnClick: handleCta, btnText: t("warnings_banner.invalid_submit_fn.button_text") }));
|
|
35
|
-
};
|
|
36
|
-
export var WarningsBanner = function () {
|
|
37
|
-
var _a = useImporterContext(), inTrialMode = _a.inTrialMode, hasValidSubmitFn = _a.hasValidSubmitFn;
|
|
38
|
-
var hasWarnings = inTrialMode || !hasValidSubmitFn;
|
|
39
|
-
if (!hasWarnings)
|
|
40
|
-
return null;
|
|
41
|
-
return (_jsxs(Div, __assign({ bg: theme.colors.orange100, "data-cy": "warningsBanner", h: 55, dflex: true, alignCenter: true, justifyCenter: true }, { children: [inTrialMode && hasValidSubmitFn && _jsx(TrialModeBanner, {}), !hasValidSubmitFn && _jsx(InvalidSubmitFnBanner, {})] })));
|
|
42
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export type State = {};
|
|
3
|
-
export declare const KeyboardEventContext: React.Context<State>;
|
|
4
|
-
export declare const KeyboardEventContextProvider: ({ children }: {
|
|
5
|
-
children: any;
|
|
6
|
-
}) => JSX.Element;
|
|
7
|
-
export declare const useDataSetContext: () => State;
|
|
@@ -1,73 +0,0 @@
|
|
|
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 { useImporterContext } from "../../../../Importer/contexts/ImporterContextProvider";
|
|
14
|
-
import { fuseImporterId } from "../../../../common";
|
|
15
|
-
import { createContext, useContext, useEffect, } from "react";
|
|
16
|
-
import { useUndoRedoContext } from "../UndoRedoContextProvider";
|
|
17
|
-
import { useSearchContext } from "../SearchContextProvider";
|
|
18
|
-
export var KeyboardEventContext = createContext({});
|
|
19
|
-
export var KeyboardEventContextProvider = function (_a) {
|
|
20
|
-
var children = _a.children;
|
|
21
|
-
var layoutRef = useImporterContext().layoutRef;
|
|
22
|
-
var _b = useUndoRedoContext(), undo = _b.undo, redo = _b.redo;
|
|
23
|
-
var setFindAndReplaceModalOpen = useSearchContext().setFindAndReplaceModalOpen;
|
|
24
|
-
var openSearchInput = useSearchContext().openSearchInput;
|
|
25
|
-
var onKeyDown = function (e) {
|
|
26
|
-
// cmd+y
|
|
27
|
-
if (e.keyCode === 89 && (e.ctrlKey || e.metaKey)) {
|
|
28
|
-
e.preventDefault();
|
|
29
|
-
redo();
|
|
30
|
-
}
|
|
31
|
-
// cmd+shift+z
|
|
32
|
-
if (e.keyCode === 90 && (e.ctrlKey || e.metaKey) && e.shiftKey) {
|
|
33
|
-
e.preventDefault();
|
|
34
|
-
redo();
|
|
35
|
-
}
|
|
36
|
-
// cmd+z
|
|
37
|
-
if (e.keyCode === 90 && (e.ctrlKey || e.metaKey) && !e.shiftKey) {
|
|
38
|
-
e.preventDefault();
|
|
39
|
-
undo();
|
|
40
|
-
}
|
|
41
|
-
// cmd+f
|
|
42
|
-
if ((e.ctrlKey || e.metaKey) && !e.shiftKey && e.keyCode === 70) {
|
|
43
|
-
e.preventDefault();
|
|
44
|
-
openSearchInput();
|
|
45
|
-
}
|
|
46
|
-
// cmd+shift+f
|
|
47
|
-
if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.keyCode === 70) {
|
|
48
|
-
e.preventDefault();
|
|
49
|
-
setFindAndReplaceModalOpen(true);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
useEffect(function () {
|
|
53
|
-
var iframeElement = document.getElementById(fuseImporterId);
|
|
54
|
-
if (iframeElement.contentDocument) {
|
|
55
|
-
iframeElement.contentDocument.body.addEventListener("keydown", onKeyDown);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
// this is used in testing
|
|
59
|
-
layoutRef.current.addEventListener("keydown", onKeyDown);
|
|
60
|
-
}
|
|
61
|
-
return function () {
|
|
62
|
-
if (iframeElement.contentDocument) {
|
|
63
|
-
iframeElement.contentDocument.body.removeEventListener("keydown", onKeyDown);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
layoutRef.current.removeEventListener("keydown", onKeyDown);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
}, [layoutRef.current]);
|
|
70
|
-
var value = {};
|
|
71
|
-
return (_jsx(KeyboardEventContext.Provider, __assign({ value: value }, { children: children })));
|
|
72
|
-
};
|
|
73
|
-
export var useDataSetContext = function () { return useContext(KeyboardEventContext); };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export type State = {
|
|
3
|
-
findAndReplaceModalOpen: boolean;
|
|
4
|
-
setFindAndReplaceModalOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
5
|
-
isOpen: boolean;
|
|
6
|
-
setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
7
|
-
openSearchInput: () => void;
|
|
8
|
-
closeSearchInput: () => void;
|
|
9
|
-
searchInputRef: React.MutableRefObject<HTMLInputElement>;
|
|
10
|
-
};
|
|
11
|
-
export declare const SearchContext: React.Context<State>;
|
|
12
|
-
export declare const SearchContextProvider: ({ children }: {
|
|
13
|
-
children: any;
|
|
14
|
-
}) => JSX.Element;
|
|
15
|
-
export declare const useSearchContext: () => State;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import { createContext, useContext, useRef, useState } from "react";
|
|
14
|
-
export var SearchContext = createContext({});
|
|
15
|
-
export var SearchContextProvider = function (_a) {
|
|
16
|
-
var children = _a.children;
|
|
17
|
-
var _b = useState(false), findAndReplaceModalOpen = _b[0], setFindAndReplaceModalOpen = _b[1];
|
|
18
|
-
var _c = useState(false), isOpen = _c[0], setIsOpen = _c[1];
|
|
19
|
-
var searchInputRef = useRef(null);
|
|
20
|
-
var openSearchInput = function () {
|
|
21
|
-
var _a;
|
|
22
|
-
if (!isOpen) {
|
|
23
|
-
setIsOpen(true);
|
|
24
|
-
if (searchInputRef === null || searchInputRef === void 0 ? void 0 : searchInputRef.current) {
|
|
25
|
-
(_a = searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
var closeSearchInput = function () {
|
|
30
|
-
setIsOpen(false);
|
|
31
|
-
};
|
|
32
|
-
var value = {
|
|
33
|
-
findAndReplaceModalOpen: findAndReplaceModalOpen,
|
|
34
|
-
setFindAndReplaceModalOpen: setFindAndReplaceModalOpen,
|
|
35
|
-
isOpen: isOpen,
|
|
36
|
-
setIsOpen: setIsOpen,
|
|
37
|
-
openSearchInput: openSearchInput,
|
|
38
|
-
searchInputRef: searchInputRef,
|
|
39
|
-
closeSearchInput: closeSearchInput,
|
|
40
|
-
};
|
|
41
|
-
return (_jsx(SearchContext.Provider, __assign({ value: value }, { children: children })));
|
|
42
|
-
};
|
|
43
|
-
export var useSearchContext = function () { return useContext(SearchContext); };
|
package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useCellSelection.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { Field } from "../../../../types";
|
|
3
|
-
export type SelectedCellRect = {
|
|
4
|
-
start: {
|
|
5
|
-
rowIndex: number;
|
|
6
|
-
colIndex: number;
|
|
7
|
-
};
|
|
8
|
-
end: {
|
|
9
|
-
rowIndex: number;
|
|
10
|
-
colIndex: number;
|
|
11
|
-
};
|
|
12
|
-
initialCell: {
|
|
13
|
-
rowIndex: number;
|
|
14
|
-
colIndex: number;
|
|
15
|
-
};
|
|
16
|
-
isDashed?: boolean;
|
|
17
|
-
editMode?: boolean;
|
|
18
|
-
};
|
|
19
|
-
export declare const defaultSelectionRect: SelectedCellRect;
|
|
20
|
-
export type CellSelectionState = {
|
|
21
|
-
selectedCellRect: SelectedCellRect;
|
|
22
|
-
setSelectedCellRect: React.Dispatch<React.SetStateAction<SelectedCellRect>>;
|
|
23
|
-
};
|
|
24
|
-
export declare const useCellSelection: (fields?: Field[]) => CellSelectionState;
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
-
function step(op) {
|
|
26
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
-
switch (op[0]) {
|
|
31
|
-
case 0: case 1: t = op; break;
|
|
32
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
-
default:
|
|
36
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
-
if (t[2]) _.ops.pop();
|
|
41
|
-
_.trys.pop(); continue;
|
|
42
|
-
}
|
|
43
|
-
op = body.call(thisArg, _);
|
|
44
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
import { useEffect, useState } from "react";
|
|
49
|
-
import { fuseImporterId } from "../../../../common";
|
|
50
|
-
import { useDataSetContext } from "../DataSetContextProvider";
|
|
51
|
-
import { useFilteredDataContext } from "../FilteredDataContextProvider";
|
|
52
|
-
import { useValidationContext } from "../ValidationContextProvider";
|
|
53
|
-
import { useImporterContext } from "../../../contexts/ImporterContextProvider";
|
|
54
|
-
import { useDataSetManipulation } from "./useDataSetManipulation";
|
|
55
|
-
import { parseValue } from "../common";
|
|
56
|
-
import { useSpreadsheetContext } from ".";
|
|
57
|
-
export var defaultSelectionRect = {
|
|
58
|
-
start: { rowIndex: 0, colIndex: 0 },
|
|
59
|
-
end: { rowIndex: 0, colIndex: 0 },
|
|
60
|
-
initialCell: { rowIndex: 0, colIndex: 0 },
|
|
61
|
-
};
|
|
62
|
-
var getIframeBody = function (layoutRef) {
|
|
63
|
-
var iframeElement = document.getElementById(fuseImporterId);
|
|
64
|
-
var isCypressTestingEnv = !iframeElement.contentDocument;
|
|
65
|
-
if (isCypressTestingEnv)
|
|
66
|
-
return layoutRef.current;
|
|
67
|
-
return iframeElement.contentDocument.body;
|
|
68
|
-
};
|
|
69
|
-
export var useCellSelection = function (fields) {
|
|
70
|
-
var getRecord = useDataSetContext().getRecord;
|
|
71
|
-
var _a = useFilteredDataContext(), filteredDataIds = _a.filteredDataIds, isSortingOrFiltering = _a.isSortingOrFiltering;
|
|
72
|
-
var updateRecordAndRevalidate = useValidationContext().updateRecordAndRevalidate;
|
|
73
|
-
var layoutRef = useImporterContext().layoutRef;
|
|
74
|
-
var _b = useState(defaultSelectionRect), selectedCellRect = _b[0], setSelectedCellRect = _b[1];
|
|
75
|
-
var enumFieldValueMatchings = useImporterContext().enumFieldValueMatchings;
|
|
76
|
-
var isReadOnly = useSpreadsheetContext().isReadOnly;
|
|
77
|
-
var _c = useDataSetManipulation(), insertRecordsIntoSpreadsheet = _c.insertRecordsIntoSpreadsheet, addNewRecord = _c.addNewRecord;
|
|
78
|
-
useEffect(function () {
|
|
79
|
-
var iframeBody = getIframeBody(layoutRef);
|
|
80
|
-
iframeBody.addEventListener("paste", onPaste, true);
|
|
81
|
-
return function () {
|
|
82
|
-
iframeBody.removeEventListener("paste", onPaste, true);
|
|
83
|
-
};
|
|
84
|
-
}, [
|
|
85
|
-
selectedCellRect,
|
|
86
|
-
filteredDataIds,
|
|
87
|
-
isSortingOrFiltering,
|
|
88
|
-
enumFieldValueMatchings,
|
|
89
|
-
insertRecordsIntoSpreadsheet,
|
|
90
|
-
updateRecordAndRevalidate,
|
|
91
|
-
fields,
|
|
92
|
-
]);
|
|
93
|
-
useEffect(function () {
|
|
94
|
-
var handleCopy = function () { return handleCopyCutOperation(false); };
|
|
95
|
-
var handleCut = function () { return handleCopyCutOperation(true); };
|
|
96
|
-
var iframeBody = getIframeBody(layoutRef);
|
|
97
|
-
iframeBody.addEventListener("copy", handleCopy);
|
|
98
|
-
iframeBody.addEventListener("cut", handleCut);
|
|
99
|
-
return function () {
|
|
100
|
-
iframeBody.removeEventListener("copy", handleCopy);
|
|
101
|
-
iframeBody.removeEventListener("cut", handleCut);
|
|
102
|
-
};
|
|
103
|
-
}, [selectedCellRect]);
|
|
104
|
-
var onPaste = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
105
|
-
var text, rows, maxCells, structuredData, startRowIndex, startColIndex, pastedRecordIds, newRecordId, pastedRecordValues;
|
|
106
|
-
return __generator(this, function (_a) {
|
|
107
|
-
switch (_a.label) {
|
|
108
|
-
case 0:
|
|
109
|
-
if (isReadOnly)
|
|
110
|
-
return [2 /*return*/];
|
|
111
|
-
text = event.clipboardData.getData("text");
|
|
112
|
-
if (!text.includes("\t") && !text.includes("\n")) {
|
|
113
|
-
return [2 /*return*/];
|
|
114
|
-
}
|
|
115
|
-
rows = text.split(/\r\n|\n|\r/);
|
|
116
|
-
maxCells = rows.reduce(function (max, row) { return Math.max(max, row.split("\t").length); }, 0);
|
|
117
|
-
structuredData = rows.map(function (row) {
|
|
118
|
-
var cells = row.split("\t");
|
|
119
|
-
while (cells.length < maxCells) {
|
|
120
|
-
cells.push("");
|
|
121
|
-
}
|
|
122
|
-
return cells;
|
|
123
|
-
});
|
|
124
|
-
startRowIndex = selectedCellRect.start.rowIndex;
|
|
125
|
-
startColIndex = selectedCellRect.start.colIndex;
|
|
126
|
-
pastedRecordIds = filteredDataIds.slice(startRowIndex, startRowIndex + structuredData.length);
|
|
127
|
-
if (!isSortingOrFiltering) {
|
|
128
|
-
while (pastedRecordIds.length < structuredData.length) {
|
|
129
|
-
newRecordId = addNewRecord();
|
|
130
|
-
pastedRecordIds.push(newRecordId);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
pastedRecordValues = pastedRecordIds.map(function (id) { return (__assign({}, getRecord(id))); });
|
|
134
|
-
structuredData.forEach(function (row, startRowIndex) {
|
|
135
|
-
row.forEach(function (value, colIndex) {
|
|
136
|
-
var field = fields[startColIndex + colIndex];
|
|
137
|
-
if (!field)
|
|
138
|
-
return;
|
|
139
|
-
var pastedRecordValue = pastedRecordValues[startRowIndex];
|
|
140
|
-
if (pastedRecordValue) {
|
|
141
|
-
var enumSet = Object.keys(enumFieldValueMatchings).length > 0
|
|
142
|
-
? enumFieldValueMatchings[field.label]
|
|
143
|
-
: field.options.reduce(function (acc, option) {
|
|
144
|
-
acc[option] = option;
|
|
145
|
-
return acc;
|
|
146
|
-
}, {});
|
|
147
|
-
pastedRecordValue[field.name] = parseValue(field.type, value, enumSet);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
if (!!isSortingOrFiltering) return [3 /*break*/, 2];
|
|
152
|
-
return [4 /*yield*/, insertRecordsIntoSpreadsheet(pastedRecordValues)];
|
|
153
|
-
case 1:
|
|
154
|
-
_a.sent();
|
|
155
|
-
return [3 /*break*/, 4];
|
|
156
|
-
case 2: return [4 /*yield*/, updateRecordAndRevalidate(pastedRecordValues)];
|
|
157
|
-
case 3:
|
|
158
|
-
_a.sent();
|
|
159
|
-
_a.label = 4;
|
|
160
|
-
case 4:
|
|
161
|
-
setSelectedCellRect({
|
|
162
|
-
start: { rowIndex: startRowIndex, colIndex: startColIndex },
|
|
163
|
-
end: {
|
|
164
|
-
rowIndex: startRowIndex + structuredData.length - 1,
|
|
165
|
-
colIndex: startColIndex + maxCells - 1,
|
|
166
|
-
},
|
|
167
|
-
initialCell: { rowIndex: startRowIndex, colIndex: startColIndex },
|
|
168
|
-
});
|
|
169
|
-
return [2 /*return*/];
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
}); };
|
|
173
|
-
var handleCopyCutOperation = function (isCut) {
|
|
174
|
-
var start = selectedCellRect.start, end = selectedCellRect.end;
|
|
175
|
-
var selectedCellsCount = (end.rowIndex - start.rowIndex + 1) * (end.colIndex - start.colIndex + 1);
|
|
176
|
-
if (selectedCellsCount <= 1)
|
|
177
|
-
return;
|
|
178
|
-
var updatedRecords = [];
|
|
179
|
-
var data = [];
|
|
180
|
-
for (var i = start.rowIndex; i <= end.rowIndex; i++) {
|
|
181
|
-
var rowData = [];
|
|
182
|
-
for (var j = start.colIndex; j <= end.colIndex; j++) {
|
|
183
|
-
var recordId = filteredDataIds[i];
|
|
184
|
-
var record = getRecord(recordId);
|
|
185
|
-
var cellData = record[fields[j].name];
|
|
186
|
-
rowData.push(cellData);
|
|
187
|
-
if (isCut) {
|
|
188
|
-
record[fields[j].name] = "";
|
|
189
|
-
updatedRecords.push(record);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
data.push(rowData);
|
|
193
|
-
}
|
|
194
|
-
if (isCut)
|
|
195
|
-
updateRecordAndRevalidate(updatedRecords);
|
|
196
|
-
var clipboardText = data.map(function (row) { return row.join("\t"); }).join("\n");
|
|
197
|
-
navigator.clipboard.writeText(clipboardText);
|
|
198
|
-
setSelectedCellRect(__assign(__assign({}, selectedCellRect), { isDashed: true }));
|
|
199
|
-
};
|
|
200
|
-
useEffect(function () {
|
|
201
|
-
setSelectedCellRect(defaultSelectionRect);
|
|
202
|
-
}, [filteredDataIds]);
|
|
203
|
-
return {
|
|
204
|
-
selectedCellRect: selectedCellRect,
|
|
205
|
-
setSelectedCellRect: setSelectedCellRect,
|
|
206
|
-
};
|
|
207
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { MutableRefObject } from "react";
|
|
2
|
-
import { Record } from "../../../../types";
|
|
3
|
-
type ContextArgs = {
|
|
4
|
-
children: any;
|
|
5
|
-
};
|
|
6
|
-
type State = {
|
|
7
|
-
trackRecordChanges: (records: Record[], undo: any, redo: any) => void;
|
|
8
|
-
trackRecordDeletion: (recordIds: string[], undo: any, redo: any) => void;
|
|
9
|
-
undoTrackingEnabled: MutableRefObject<boolean>;
|
|
10
|
-
undo: () => void;
|
|
11
|
-
redo: () => void;
|
|
12
|
-
};
|
|
13
|
-
export declare const UndoRedoContext: import("react").Context<State>;
|
|
14
|
-
export declare const UndoRedoContextProvider: ({ children }: ContextArgs) => JSX.Element;
|
|
15
|
-
export declare const useUndoRedoContext: () => State;
|
|
16
|
-
export {};
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import { createContext, useContext, useRef, } from "react";
|
|
14
|
-
import { useDataSetContext } from "../DataSetContextProvider";
|
|
15
|
-
import { useImporterContext } from "../../../../Importer/contexts/ImporterContextProvider";
|
|
16
|
-
export var UndoRedoContext = createContext({});
|
|
17
|
-
export var UndoRedoContextProvider = function (_a) {
|
|
18
|
-
var children = _a.children;
|
|
19
|
-
var changeStack = useRef([]);
|
|
20
|
-
var getRecord = useDataSetContext().getRecord;
|
|
21
|
-
var stackPointer = useRef(0);
|
|
22
|
-
var undoTrackingEnabled = useRef(false);
|
|
23
|
-
var layoutRef = useImporterContext().layoutRef;
|
|
24
|
-
var changeStackSizeLimit = 15;
|
|
25
|
-
var undo = function () {
|
|
26
|
-
var topItem = changeStack.current[stackPointer.current];
|
|
27
|
-
if (!topItem)
|
|
28
|
-
return;
|
|
29
|
-
var records = [];
|
|
30
|
-
for (var key in topItem.changes) {
|
|
31
|
-
var change = topItem.changes[key];
|
|
32
|
-
records.push(change.oldRecord);
|
|
33
|
-
}
|
|
34
|
-
undoTrackingEnabled.current = false;
|
|
35
|
-
topItem.undo(records);
|
|
36
|
-
undoTrackingEnabled.current = true;
|
|
37
|
-
stackPointer.current -= 1;
|
|
38
|
-
};
|
|
39
|
-
var redo = function () {
|
|
40
|
-
if (stackPointer.current >= changeStack.current.length - 1) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
stackPointer.current += 1;
|
|
44
|
-
var topItem = changeStack.current[stackPointer.current];
|
|
45
|
-
var records = [];
|
|
46
|
-
for (var key in topItem.changes) {
|
|
47
|
-
var change = topItem.changes[key];
|
|
48
|
-
records.push(change.newRecord);
|
|
49
|
-
}
|
|
50
|
-
undoTrackingEnabled.current = false;
|
|
51
|
-
topItem.redo(records);
|
|
52
|
-
undoTrackingEnabled.current = true;
|
|
53
|
-
};
|
|
54
|
-
var trackRecordChanges = function (records, undo, redo) {
|
|
55
|
-
if (!undoTrackingEnabled.current)
|
|
56
|
-
return;
|
|
57
|
-
var recordChanges = [];
|
|
58
|
-
for (var key in records) {
|
|
59
|
-
recordChanges.push({
|
|
60
|
-
oldRecord: __assign({}, getRecord(records[key]._meta.id)),
|
|
61
|
-
newRecord: __assign({}, records[key]),
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
var change = {
|
|
65
|
-
type: "records_changed",
|
|
66
|
-
changes: recordChanges,
|
|
67
|
-
undo: undo,
|
|
68
|
-
redo: redo,
|
|
69
|
-
};
|
|
70
|
-
trackChange(change);
|
|
71
|
-
stackPointer.current = changeStack.current.length - 1;
|
|
72
|
-
};
|
|
73
|
-
var trackRecordDeletion = function (recordIds, undo, redo) {
|
|
74
|
-
var recordChanges = [];
|
|
75
|
-
recordIds.forEach(function (recordId) {
|
|
76
|
-
recordChanges.push({
|
|
77
|
-
oldRecord: __assign({}, getRecord(recordId)),
|
|
78
|
-
newRecord: __assign({}, getRecord(recordId)),
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
var change = {
|
|
82
|
-
type: "records_deleted",
|
|
83
|
-
changes: recordChanges,
|
|
84
|
-
undo: undo,
|
|
85
|
-
redo: redo,
|
|
86
|
-
};
|
|
87
|
-
trackChange(change);
|
|
88
|
-
stackPointer.current = changeStack.current.length - 1;
|
|
89
|
-
};
|
|
90
|
-
var trackChange = function (change) {
|
|
91
|
-
changeStack.current.push(change);
|
|
92
|
-
// limit the number of items we keep in memory
|
|
93
|
-
changeStack.current = changeStack.current.slice(Math.max(changeStack.current.length - changeStackSizeLimit, 0));
|
|
94
|
-
};
|
|
95
|
-
var value = {
|
|
96
|
-
trackRecordChanges: trackRecordChanges,
|
|
97
|
-
trackRecordDeletion: trackRecordDeletion,
|
|
98
|
-
undoTrackingEnabled: undoTrackingEnabled,
|
|
99
|
-
undo: undo,
|
|
100
|
-
redo: redo,
|
|
101
|
-
};
|
|
102
|
-
return (_jsx(UndoRedoContext.Provider, __assign({ value: value }, { children: children })));
|
|
103
|
-
};
|
|
104
|
-
export var useUndoRedoContext = function () { return useContext(UndoRedoContext); };
|
package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData/CellContextProvider.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { css } from "styled-components";
|
|
3
|
-
type SelectionProps = {
|
|
4
|
-
onClick: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
|
|
5
|
-
onDragStart: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
6
|
-
onDragEnd: () => void;
|
|
7
|
-
onDragOver: () => void;
|
|
8
|
-
onBlur: () => void;
|
|
9
|
-
draggable: boolean;
|
|
10
|
-
};
|
|
11
|
-
type State = {
|
|
12
|
-
isSelected: boolean;
|
|
13
|
-
selectedCellStyles: ReturnType<typeof css>;
|
|
14
|
-
selectionProps: SelectionProps | {};
|
|
15
|
-
};
|
|
16
|
-
type Props = {
|
|
17
|
-
children: JSX.Element;
|
|
18
|
-
rowIndex: number;
|
|
19
|
-
colIndex: number;
|
|
20
|
-
};
|
|
21
|
-
export declare const CellContextProvider: ({ children, rowIndex, colIndex, }: Props) => JSX.Element;
|
|
22
|
-
export declare const useCellContext: () => State;
|
|
23
|
-
export {};
|