@fileverse-dev/fortune-react 1.1.65 → 1.1.66-error-1
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/es/components/ErrorState/index.d.ts +3 -0
- package/es/components/ErrorState/index.js +32 -0
- package/es/components/NotationBoxes/index.js +1 -1
- package/es/components/Sheet/use-smooth-scroll.js +47 -36
- package/es/components/SheetOverlay/index.js +2 -1
- package/es/components/Workbook/api.d.ts +4 -0
- package/es/components/Workbook/api.js +5 -0
- package/es/components/Workbook/index.d.ts +8 -4
- package/lib/components/ErrorState/index.d.ts +3 -0
- package/lib/components/ErrorState/index.js +41 -0
- package/lib/components/NotationBoxes/index.js +1 -1
- package/lib/components/Sheet/use-smooth-scroll.js +47 -36
- package/lib/components/SheetOverlay/index.js +2 -1
- package/lib/components/Workbook/api.d.ts +4 -0
- package/lib/components/Workbook/api.js +5 -0
- package/lib/components/Workbook/index.d.ts +8 -4
- package/package.json +2 -2
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { useContext } from "react";
|
|
2
|
+
import WorkbookContext from "../../context";
|
|
3
|
+
var ErrorBoxes = function ErrorBoxes() {
|
|
4
|
+
var context = useContext(WorkbookContext).context;
|
|
5
|
+
var error = context.hoverErrorBox;
|
|
6
|
+
if (!error) return null;
|
|
7
|
+
var left = error.left,
|
|
8
|
+
top = error.top,
|
|
9
|
+
title = error.title,
|
|
10
|
+
message = error.message;
|
|
11
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
12
|
+
style: {
|
|
13
|
+
borderLeft: "4px solid #FB3449",
|
|
14
|
+
width: "auto",
|
|
15
|
+
maxWidth: "280px",
|
|
16
|
+
height: "auto",
|
|
17
|
+
left: left,
|
|
18
|
+
top: top,
|
|
19
|
+
position: "absolute",
|
|
20
|
+
padding: "8px",
|
|
21
|
+
background: "#FFFFFF",
|
|
22
|
+
zIndex: 100,
|
|
23
|
+
borderRadius: "4px"
|
|
24
|
+
},
|
|
25
|
+
className: "shadow-lg flex flex-col gap-2"
|
|
26
|
+
}, /*#__PURE__*/React.createElement("h3", {
|
|
27
|
+
className: "text-heading-xsm color-text-danger"
|
|
28
|
+
}, title), /*#__PURE__*/React.createElement("div", {
|
|
29
|
+
className: "color-text-default text-body-sm"
|
|
30
|
+
}, message));
|
|
31
|
+
};
|
|
32
|
+
export default ErrorBoxes;
|
|
@@ -6,7 +6,7 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
6
6
|
context = _a.context,
|
|
7
7
|
refs = _a.refs,
|
|
8
8
|
setContext = _a.setContext;
|
|
9
|
-
function
|
|
9
|
+
function handleScroll(scrollContainer, moveScrollBy, getPixelScale) {
|
|
10
10
|
if (getPixelScale === void 0) {
|
|
11
11
|
getPixelScale = function getPixelScale() {
|
|
12
12
|
return window.devicePixelRatio || 1;
|
|
@@ -29,7 +29,7 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
29
29
|
queuedXPixels = 0;
|
|
30
30
|
queuedYPixels = 0;
|
|
31
31
|
}
|
|
32
|
-
function
|
|
32
|
+
function scrollHandler(x, y) {
|
|
33
33
|
queuedXPixels += x;
|
|
34
34
|
queuedYPixels += y;
|
|
35
35
|
if (!animationFrameId) animationFrameId = requestAnimationFrame(applyQueuedScroll);
|
|
@@ -50,47 +50,58 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
var scaleFactor = getPixelScale();
|
|
53
|
-
|
|
53
|
+
scrollHandler(event.deltaX * scaleFactor, event.deltaY * scaleFactor);
|
|
54
54
|
}
|
|
55
55
|
scrollContainer.addEventListener("wheel", handleWheelEvent, {
|
|
56
56
|
passive: false
|
|
57
57
|
});
|
|
58
58
|
return {
|
|
59
|
-
|
|
59
|
+
scrollHandler: scrollHandler,
|
|
60
60
|
detach: function detach() {
|
|
61
61
|
scrollContainer.removeEventListener("wheel", handleWheelEvent);
|
|
62
62
|
if (animationFrameId) cancelAnimationFrame(animationFrameId);
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
-
function
|
|
67
|
-
var
|
|
68
|
-
var
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
66
|
+
function handleMobileScroll(containerEl, scrollHandler, getPixelScale) {
|
|
67
|
+
var isScrolling = false;
|
|
68
|
+
var gestureStartClientX = 0;
|
|
69
|
+
var gestureStartClientY = 0;
|
|
70
|
+
var lastPointerClientX = 0;
|
|
71
|
+
var lastPointerClientY = 0;
|
|
72
|
+
var PAN_DISTANCE_THRESHOLD_PX = 8;
|
|
73
|
+
function onPointerDown(pointerEvent) {
|
|
74
|
+
if (pointerEvent.pointerType !== "touch" && pointerEvent.pointerType !== "pen") return;
|
|
75
|
+
isScrolling = false;
|
|
76
|
+
gestureStartClientX = pointerEvent.clientX;
|
|
77
|
+
lastPointerClientX = pointerEvent.clientX;
|
|
78
|
+
gestureStartClientY = pointerEvent.clientY;
|
|
79
|
+
lastPointerClientY = pointerEvent.clientY;
|
|
80
|
+
containerEl.setPointerCapture(pointerEvent.pointerId);
|
|
77
81
|
}
|
|
78
|
-
function onPointerMove(
|
|
79
|
-
if (
|
|
80
|
-
var
|
|
81
|
-
var
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
function onPointerMove(pointerEvent) {
|
|
83
|
+
if (pointerEvent.pointerType !== "touch" && pointerEvent.pointerType !== "pen") return;
|
|
84
|
+
var deltaXSinceLastMove = pointerEvent.clientX - lastPointerClientX;
|
|
85
|
+
var deltaYSinceLastMove = pointerEvent.clientY - lastPointerClientY;
|
|
86
|
+
lastPointerClientX = pointerEvent.clientX;
|
|
87
|
+
lastPointerClientY = pointerEvent.clientY;
|
|
88
|
+
if (!isScrolling) {
|
|
89
|
+
var totalXFromGestureStart = lastPointerClientX - gestureStartClientX;
|
|
90
|
+
var totalYFromGestureStart = lastPointerClientY - gestureStartClientY;
|
|
91
|
+
if (totalXFromGestureStart * totalXFromGestureStart + totalYFromGestureStart * totalYFromGestureStart < PAN_DISTANCE_THRESHOLD_PX * PAN_DISTANCE_THRESHOLD_PX) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
isScrolling = true;
|
|
95
|
+
}
|
|
96
|
+
pointerEvent.preventDefault();
|
|
84
97
|
var scale = getPixelScale();
|
|
85
|
-
|
|
86
|
-
e.preventDefault();
|
|
98
|
+
scrollHandler(-deltaXSinceLastMove * scale, -deltaYSinceLastMove * scale);
|
|
87
99
|
}
|
|
88
100
|
function onPointerUp(e) {
|
|
89
|
-
if (!dragging) return;
|
|
90
|
-
dragging = false;
|
|
91
101
|
try {
|
|
92
102
|
containerEl.releasePointerCapture(e.pointerId);
|
|
93
103
|
} catch (_a) {}
|
|
104
|
+
isScrolling = false;
|
|
94
105
|
}
|
|
95
106
|
containerEl.addEventListener("pointerdown", onPointerDown, {
|
|
96
107
|
passive: false
|
|
@@ -107,7 +118,7 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
107
118
|
containerEl.removeEventListener("pointercancel", onPointerUp);
|
|
108
119
|
};
|
|
109
120
|
}
|
|
110
|
-
var
|
|
121
|
+
var makeScrollableAreaMoveByPixels = function makeScrollableAreaMoveByPixels(horizontalScrollbarEl, verticalScrollbarEl) {
|
|
111
122
|
return function (xPixels, yPixels) {
|
|
112
123
|
var maxScrollLeft = horizontalScrollbarEl.scrollWidth - horizontalScrollbarEl.clientWidth;
|
|
113
124
|
var maxScrollTop = verticalScrollbarEl.scrollHeight - verticalScrollbarEl.clientHeight;
|
|
@@ -123,19 +134,19 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
123
134
|
}
|
|
124
135
|
};
|
|
125
136
|
};
|
|
126
|
-
function
|
|
127
|
-
var
|
|
128
|
-
var _a =
|
|
137
|
+
function mountScrollEventHandlers(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl) {
|
|
138
|
+
var moveScrollableAreaByPixels = makeScrollableAreaMoveByPixels(horizontalScrollbarEl, verticalScrollbarEl);
|
|
139
|
+
var _a = handleScroll(scrollContainerEl, moveScrollableAreaByPixels, function () {
|
|
129
140
|
return (window.devicePixelRatio || 1) * context.zoomRatio;
|
|
130
141
|
}),
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
var
|
|
142
|
+
scrollHandler = _a.scrollHandler,
|
|
143
|
+
unmountScrollHandler = _a.detach;
|
|
144
|
+
var unmountMobileScrollHandler = handleMobileScroll(scrollContainerEl, scrollHandler, function () {
|
|
134
145
|
return (window.devicePixelRatio || 1) * context.zoomRatio;
|
|
135
146
|
});
|
|
136
147
|
return function () {
|
|
137
|
-
|
|
138
|
-
|
|
148
|
+
unmountScrollHandler();
|
|
149
|
+
unmountMobileScrollHandler();
|
|
139
150
|
};
|
|
140
151
|
}
|
|
141
152
|
useEffect(function () {
|
|
@@ -143,7 +154,7 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
143
154
|
var horizontalScrollbarEl = refs.scrollbarX.current;
|
|
144
155
|
var verticalScrollbarEl = refs.scrollbarY.current;
|
|
145
156
|
if (!scrollContainerEl || !horizontalScrollbarEl || !verticalScrollbarEl) return function () {};
|
|
146
|
-
var
|
|
147
|
-
return
|
|
157
|
+
var unmountScrollEventHandlers = mountScrollEventHandlers(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl);
|
|
158
|
+
return unmountScrollEventHandlers;
|
|
148
159
|
}, [context.zoomRatio]);
|
|
149
160
|
};
|
|
@@ -28,6 +28,7 @@ import { useDialog } from "../../hooks/useDialog";
|
|
|
28
28
|
import SVGIcon from "../SVGIcon";
|
|
29
29
|
import DropDownList from "../DataVerification/DropdownList";
|
|
30
30
|
import IframeBoxs from "../IFrameBoxs/iFrameBoxs";
|
|
31
|
+
import ErrorBoxes from "../ErrorState";
|
|
31
32
|
var SheetOverlay = function SheetOverlay() {
|
|
32
33
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
33
34
|
var _o = useContext(WorkbookContext),
|
|
@@ -465,7 +466,7 @@ var SheetOverlay = function SheetOverlay() {
|
|
|
465
466
|
getContainer: function getContainer() {
|
|
466
467
|
return containerRef.current;
|
|
467
468
|
}
|
|
468
|
-
}), /*#__PURE__*/React.createElement(InputBox, null), /*#__PURE__*/React.createElement(NotationBoxes, null), /*#__PURE__*/React.createElement("div", {
|
|
469
|
+
}), /*#__PURE__*/React.createElement(InputBox, null), /*#__PURE__*/React.createElement(NotationBoxes, null), /*#__PURE__*/React.createElement(ErrorBoxes, null), /*#__PURE__*/React.createElement("div", {
|
|
469
470
|
id: "luckysheet-multipleRange-show"
|
|
470
471
|
}), /*#__PURE__*/React.createElement("div", {
|
|
471
472
|
id: "luckysheet-dynamicArray-hightShow"
|
|
@@ -14,6 +14,10 @@ export declare function generateAPIs(context: Context, setContext: (recipe: (ctx
|
|
|
14
14
|
setCellValue: (row: number, column: number, value: any, options?: api.CommonOptions & {
|
|
15
15
|
type?: keyof Cell;
|
|
16
16
|
}) => void;
|
|
17
|
+
setCellError: (row: number, column: number, errorMessage: {
|
|
18
|
+
title: string;
|
|
19
|
+
message: string;
|
|
20
|
+
}) => void;
|
|
17
21
|
clearCell: (row: number, column: number, options?: api.CommonOptions) => void;
|
|
18
22
|
setCellFormat: (row: number, column: number, attr: keyof Cell, value: any, options?: api.CommonOptions) => void;
|
|
19
23
|
autoFillCell: (copyRange: SingleRange, applyRange: SingleRange, direction: "up" | "down" | "left" | "right") => void;
|
|
@@ -139,6 +139,11 @@ export function generateAPIs(context, setContext, handleUndo, handleRedo, settin
|
|
|
139
139
|
return api.setCellValue(draftCtx, row, column, value, cellInput, options);
|
|
140
140
|
});
|
|
141
141
|
},
|
|
142
|
+
setCellError: function setCellError(row, column, errorMessage) {
|
|
143
|
+
setContext(function (draftCtx) {
|
|
144
|
+
api.setCellError(draftCtx, row, column, errorMessage);
|
|
145
|
+
});
|
|
146
|
+
},
|
|
142
147
|
clearCell: function clearCell(row, column, options) {
|
|
143
148
|
if (options === void 0) {
|
|
144
149
|
options = {};
|
|
@@ -12,17 +12,21 @@ declare const Workbook: React.ForwardRefExoticComponent<Settings & AdditionalPro
|
|
|
12
12
|
applyOp: (ops: Op[]) => void;
|
|
13
13
|
getCryptoPrice: typeof getCryptoPrice;
|
|
14
14
|
getCellValue: (row: number, column: number, options?: api.CommonOptions & {
|
|
15
|
-
type?: "rt" | "m" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle | undefined;
|
|
15
|
+
type?: "rt" | "m" | "error" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle | undefined;
|
|
16
16
|
}) => any;
|
|
17
17
|
onboardingActiveCell: (functionName: string) => void;
|
|
18
18
|
initializeComment: (row: number, column: number) => void;
|
|
19
19
|
updateSheetLiveQueryList: (subsheetIndex: number, _data: import("@fileverse-dev/fortune-core").LiveQueryData) => void;
|
|
20
20
|
removeFromLiveQueryList: (subSheetIndex: number, id: string) => void;
|
|
21
21
|
setCellValue: (row: number, column: number, value: any, options?: api.CommonOptions & {
|
|
22
|
-
type?: "rt" | "m" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle | undefined;
|
|
22
|
+
type?: "rt" | "m" | "error" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle | undefined;
|
|
23
|
+
}) => void;
|
|
24
|
+
setCellError: (row: number, column: number, errorMessage: {
|
|
25
|
+
title: string;
|
|
26
|
+
message: string;
|
|
23
27
|
}) => void;
|
|
24
28
|
clearCell: (row: number, column: number, options?: api.CommonOptions) => void;
|
|
25
|
-
setCellFormat: (row: number, column: number, attr: "rt" | "m" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle, value: any, options?: api.CommonOptions) => void;
|
|
29
|
+
setCellFormat: (row: number, column: number, attr: "rt" | "m" | "error" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle, value: any, options?: api.CommonOptions) => void;
|
|
26
30
|
autoFillCell: (copyRange: import("@fileverse-dev/fortune-core").SingleRange, applyRange: import("@fileverse-dev/fortune-core").SingleRange, direction: "left" | "right" | "down" | "up") => void;
|
|
27
31
|
freeze: (type: "column" | "both" | "row", range: {
|
|
28
32
|
row: number;
|
|
@@ -53,7 +57,7 @@ declare const Workbook: React.ForwardRefExoticComponent<Settings & AdditionalPro
|
|
|
53
57
|
getHtmlByRange: (range: import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => string | null;
|
|
54
58
|
setSelection: (range: import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => void;
|
|
55
59
|
setCellValuesByRange: (data: any[][], range: import("@fileverse-dev/fortune-core").SingleRange, options?: api.CommonOptions) => void;
|
|
56
|
-
setCellFormatByRange: (attr: "rt" | "m" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle, value: any, range: import("@fileverse-dev/fortune-core").SingleRange | import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => void;
|
|
60
|
+
setCellFormatByRange: (attr: "rt" | "m" | "error" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle, value: any, range: import("@fileverse-dev/fortune-core").SingleRange | import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => void;
|
|
57
61
|
mergeCells: (ranges: import("@fileverse-dev/fortune-core").Range, type: string, options?: api.CommonOptions) => void;
|
|
58
62
|
cancelMerge: (ranges: import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => void;
|
|
59
63
|
getAllSheets: () => SheetType[];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _context = _interopRequireDefault(require("../../context"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
12
|
+
var ErrorBoxes = function ErrorBoxes() {
|
|
13
|
+
var context = (0, _react.useContext)(_context.default).context;
|
|
14
|
+
var error = context.hoverErrorBox;
|
|
15
|
+
if (!error) return null;
|
|
16
|
+
var left = error.left,
|
|
17
|
+
top = error.top,
|
|
18
|
+
title = error.title,
|
|
19
|
+
message = error.message;
|
|
20
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
21
|
+
style: {
|
|
22
|
+
borderLeft: "4px solid #FB3449",
|
|
23
|
+
width: "auto",
|
|
24
|
+
maxWidth: "280px",
|
|
25
|
+
height: "auto",
|
|
26
|
+
left: left,
|
|
27
|
+
top: top,
|
|
28
|
+
position: "absolute",
|
|
29
|
+
padding: "8px",
|
|
30
|
+
background: "#FFFFFF",
|
|
31
|
+
zIndex: 100,
|
|
32
|
+
borderRadius: "4px"
|
|
33
|
+
},
|
|
34
|
+
className: "shadow-lg flex flex-col gap-2"
|
|
35
|
+
}, /*#__PURE__*/_react.default.createElement("h3", {
|
|
36
|
+
className: "text-heading-xsm color-text-danger"
|
|
37
|
+
}, title), /*#__PURE__*/_react.default.createElement("div", {
|
|
38
|
+
className: "color-text-default text-body-sm"
|
|
39
|
+
}, message));
|
|
40
|
+
};
|
|
41
|
+
var _default = exports.default = ErrorBoxes;
|
|
@@ -13,7 +13,7 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
13
13
|
context = _a.context,
|
|
14
14
|
refs = _a.refs,
|
|
15
15
|
setContext = _a.setContext;
|
|
16
|
-
function
|
|
16
|
+
function handleScroll(scrollContainer, moveScrollBy, getPixelScale) {
|
|
17
17
|
if (getPixelScale === void 0) {
|
|
18
18
|
getPixelScale = function getPixelScale() {
|
|
19
19
|
return window.devicePixelRatio || 1;
|
|
@@ -36,7 +36,7 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
36
36
|
queuedXPixels = 0;
|
|
37
37
|
queuedYPixels = 0;
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
function scrollHandler(x, y) {
|
|
40
40
|
queuedXPixels += x;
|
|
41
41
|
queuedYPixels += y;
|
|
42
42
|
if (!animationFrameId) animationFrameId = requestAnimationFrame(applyQueuedScroll);
|
|
@@ -57,47 +57,58 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
var scaleFactor = getPixelScale();
|
|
60
|
-
|
|
60
|
+
scrollHandler(event.deltaX * scaleFactor, event.deltaY * scaleFactor);
|
|
61
61
|
}
|
|
62
62
|
scrollContainer.addEventListener("wheel", handleWheelEvent, {
|
|
63
63
|
passive: false
|
|
64
64
|
});
|
|
65
65
|
return {
|
|
66
|
-
|
|
66
|
+
scrollHandler: scrollHandler,
|
|
67
67
|
detach: function detach() {
|
|
68
68
|
scrollContainer.removeEventListener("wheel", handleWheelEvent);
|
|
69
69
|
if (animationFrameId) cancelAnimationFrame(animationFrameId);
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
-
function
|
|
74
|
-
var
|
|
75
|
-
var
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
73
|
+
function handleMobileScroll(containerEl, scrollHandler, getPixelScale) {
|
|
74
|
+
var isScrolling = false;
|
|
75
|
+
var gestureStartClientX = 0;
|
|
76
|
+
var gestureStartClientY = 0;
|
|
77
|
+
var lastPointerClientX = 0;
|
|
78
|
+
var lastPointerClientY = 0;
|
|
79
|
+
var PAN_DISTANCE_THRESHOLD_PX = 8;
|
|
80
|
+
function onPointerDown(pointerEvent) {
|
|
81
|
+
if (pointerEvent.pointerType !== "touch" && pointerEvent.pointerType !== "pen") return;
|
|
82
|
+
isScrolling = false;
|
|
83
|
+
gestureStartClientX = pointerEvent.clientX;
|
|
84
|
+
lastPointerClientX = pointerEvent.clientX;
|
|
85
|
+
gestureStartClientY = pointerEvent.clientY;
|
|
86
|
+
lastPointerClientY = pointerEvent.clientY;
|
|
87
|
+
containerEl.setPointerCapture(pointerEvent.pointerId);
|
|
84
88
|
}
|
|
85
|
-
function onPointerMove(
|
|
86
|
-
if (
|
|
87
|
-
var
|
|
88
|
-
var
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
function onPointerMove(pointerEvent) {
|
|
90
|
+
if (pointerEvent.pointerType !== "touch" && pointerEvent.pointerType !== "pen") return;
|
|
91
|
+
var deltaXSinceLastMove = pointerEvent.clientX - lastPointerClientX;
|
|
92
|
+
var deltaYSinceLastMove = pointerEvent.clientY - lastPointerClientY;
|
|
93
|
+
lastPointerClientX = pointerEvent.clientX;
|
|
94
|
+
lastPointerClientY = pointerEvent.clientY;
|
|
95
|
+
if (!isScrolling) {
|
|
96
|
+
var totalXFromGestureStart = lastPointerClientX - gestureStartClientX;
|
|
97
|
+
var totalYFromGestureStart = lastPointerClientY - gestureStartClientY;
|
|
98
|
+
if (totalXFromGestureStart * totalXFromGestureStart + totalYFromGestureStart * totalYFromGestureStart < PAN_DISTANCE_THRESHOLD_PX * PAN_DISTANCE_THRESHOLD_PX) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
isScrolling = true;
|
|
102
|
+
}
|
|
103
|
+
pointerEvent.preventDefault();
|
|
91
104
|
var scale = getPixelScale();
|
|
92
|
-
|
|
93
|
-
e.preventDefault();
|
|
105
|
+
scrollHandler(-deltaXSinceLastMove * scale, -deltaYSinceLastMove * scale);
|
|
94
106
|
}
|
|
95
107
|
function onPointerUp(e) {
|
|
96
|
-
if (!dragging) return;
|
|
97
|
-
dragging = false;
|
|
98
108
|
try {
|
|
99
109
|
containerEl.releasePointerCapture(e.pointerId);
|
|
100
110
|
} catch (_a) {}
|
|
111
|
+
isScrolling = false;
|
|
101
112
|
}
|
|
102
113
|
containerEl.addEventListener("pointerdown", onPointerDown, {
|
|
103
114
|
passive: false
|
|
@@ -114,7 +125,7 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
114
125
|
containerEl.removeEventListener("pointercancel", onPointerUp);
|
|
115
126
|
};
|
|
116
127
|
}
|
|
117
|
-
var
|
|
128
|
+
var makeScrollableAreaMoveByPixels = function makeScrollableAreaMoveByPixels(horizontalScrollbarEl, verticalScrollbarEl) {
|
|
118
129
|
return function (xPixels, yPixels) {
|
|
119
130
|
var maxScrollLeft = horizontalScrollbarEl.scrollWidth - horizontalScrollbarEl.clientWidth;
|
|
120
131
|
var maxScrollTop = verticalScrollbarEl.scrollHeight - verticalScrollbarEl.clientHeight;
|
|
@@ -130,19 +141,19 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
130
141
|
}
|
|
131
142
|
};
|
|
132
143
|
};
|
|
133
|
-
function
|
|
134
|
-
var
|
|
135
|
-
var _a =
|
|
144
|
+
function mountScrollEventHandlers(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl) {
|
|
145
|
+
var moveScrollableAreaByPixels = makeScrollableAreaMoveByPixels(horizontalScrollbarEl, verticalScrollbarEl);
|
|
146
|
+
var _a = handleScroll(scrollContainerEl, moveScrollableAreaByPixels, function () {
|
|
136
147
|
return (window.devicePixelRatio || 1) * context.zoomRatio;
|
|
137
148
|
}),
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
var
|
|
149
|
+
scrollHandler = _a.scrollHandler,
|
|
150
|
+
unmountScrollHandler = _a.detach;
|
|
151
|
+
var unmountMobileScrollHandler = handleMobileScroll(scrollContainerEl, scrollHandler, function () {
|
|
141
152
|
return (window.devicePixelRatio || 1) * context.zoomRatio;
|
|
142
153
|
});
|
|
143
154
|
return function () {
|
|
144
|
-
|
|
145
|
-
|
|
155
|
+
unmountScrollHandler();
|
|
156
|
+
unmountMobileScrollHandler();
|
|
146
157
|
};
|
|
147
158
|
}
|
|
148
159
|
(0, _react.useEffect)(function () {
|
|
@@ -150,7 +161,7 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
150
161
|
var horizontalScrollbarEl = refs.scrollbarX.current;
|
|
151
162
|
var verticalScrollbarEl = refs.scrollbarY.current;
|
|
152
163
|
if (!scrollContainerEl || !horizontalScrollbarEl || !verticalScrollbarEl) return function () {};
|
|
153
|
-
var
|
|
154
|
-
return
|
|
164
|
+
var unmountScrollEventHandlers = mountScrollEventHandlers(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl);
|
|
165
|
+
return unmountScrollEventHandlers;
|
|
155
166
|
}, [context.zoomRatio]);
|
|
156
167
|
};
|
|
@@ -25,6 +25,7 @@ var _useDialog = require("../../hooks/useDialog");
|
|
|
25
25
|
var _SVGIcon = _interopRequireDefault(require("../SVGIcon"));
|
|
26
26
|
var _DropdownList = _interopRequireDefault(require("../DataVerification/DropdownList"));
|
|
27
27
|
var _iFrameBoxs = _interopRequireDefault(require("../IFrameBoxs/iFrameBoxs"));
|
|
28
|
+
var _ErrorState = _interopRequireDefault(require("../ErrorState"));
|
|
28
29
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
29
30
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
30
31
|
var __assign = void 0 && (void 0).__assign || function () {
|
|
@@ -474,7 +475,7 @@ var SheetOverlay = function SheetOverlay() {
|
|
|
474
475
|
getContainer: function getContainer() {
|
|
475
476
|
return containerRef.current;
|
|
476
477
|
}
|
|
477
|
-
}), /*#__PURE__*/_react.default.createElement(_InputBox.default, null), /*#__PURE__*/_react.default.createElement(_NotationBoxes.default, null), /*#__PURE__*/_react.default.createElement("div", {
|
|
478
|
+
}), /*#__PURE__*/_react.default.createElement(_InputBox.default, null), /*#__PURE__*/_react.default.createElement(_NotationBoxes.default, null), /*#__PURE__*/_react.default.createElement(_ErrorState.default, null), /*#__PURE__*/_react.default.createElement("div", {
|
|
478
479
|
id: "luckysheet-multipleRange-show"
|
|
479
480
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
480
481
|
id: "luckysheet-dynamicArray-hightShow"
|
|
@@ -14,6 +14,10 @@ export declare function generateAPIs(context: Context, setContext: (recipe: (ctx
|
|
|
14
14
|
setCellValue: (row: number, column: number, value: any, options?: api.CommonOptions & {
|
|
15
15
|
type?: keyof Cell;
|
|
16
16
|
}) => void;
|
|
17
|
+
setCellError: (row: number, column: number, errorMessage: {
|
|
18
|
+
title: string;
|
|
19
|
+
message: string;
|
|
20
|
+
}) => void;
|
|
17
21
|
clearCell: (row: number, column: number, options?: api.CommonOptions) => void;
|
|
18
22
|
setCellFormat: (row: number, column: number, attr: keyof Cell, value: any, options?: api.CommonOptions) => void;
|
|
19
23
|
autoFillCell: (copyRange: SingleRange, applyRange: SingleRange, direction: "up" | "down" | "left" | "right") => void;
|
|
@@ -146,6 +146,11 @@ function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cel
|
|
|
146
146
|
return _fortuneCore.api.setCellValue(draftCtx, row, column, value, cellInput, options);
|
|
147
147
|
});
|
|
148
148
|
},
|
|
149
|
+
setCellError: function setCellError(row, column, errorMessage) {
|
|
150
|
+
setContext(function (draftCtx) {
|
|
151
|
+
_fortuneCore.api.setCellError(draftCtx, row, column, errorMessage);
|
|
152
|
+
});
|
|
153
|
+
},
|
|
149
154
|
clearCell: function clearCell(row, column, options) {
|
|
150
155
|
if (options === void 0) {
|
|
151
156
|
options = {};
|
|
@@ -12,17 +12,21 @@ declare const Workbook: React.ForwardRefExoticComponent<Settings & AdditionalPro
|
|
|
12
12
|
applyOp: (ops: Op[]) => void;
|
|
13
13
|
getCryptoPrice: typeof getCryptoPrice;
|
|
14
14
|
getCellValue: (row: number, column: number, options?: api.CommonOptions & {
|
|
15
|
-
type?: "rt" | "m" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle | undefined;
|
|
15
|
+
type?: "rt" | "m" | "error" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle | undefined;
|
|
16
16
|
}) => any;
|
|
17
17
|
onboardingActiveCell: (functionName: string) => void;
|
|
18
18
|
initializeComment: (row: number, column: number) => void;
|
|
19
19
|
updateSheetLiveQueryList: (subsheetIndex: number, _data: import("@fileverse-dev/fortune-core").LiveQueryData) => void;
|
|
20
20
|
removeFromLiveQueryList: (subSheetIndex: number, id: string) => void;
|
|
21
21
|
setCellValue: (row: number, column: number, value: any, options?: api.CommonOptions & {
|
|
22
|
-
type?: "rt" | "m" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle | undefined;
|
|
22
|
+
type?: "rt" | "m" | "error" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle | undefined;
|
|
23
|
+
}) => void;
|
|
24
|
+
setCellError: (row: number, column: number, errorMessage: {
|
|
25
|
+
title: string;
|
|
26
|
+
message: string;
|
|
23
27
|
}) => void;
|
|
24
28
|
clearCell: (row: number, column: number, options?: api.CommonOptions) => void;
|
|
25
|
-
setCellFormat: (row: number, column: number, attr: "rt" | "m" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle, value: any, options?: api.CommonOptions) => void;
|
|
29
|
+
setCellFormat: (row: number, column: number, attr: "rt" | "m" | "error" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle, value: any, options?: api.CommonOptions) => void;
|
|
26
30
|
autoFillCell: (copyRange: import("@fileverse-dev/fortune-core").SingleRange, applyRange: import("@fileverse-dev/fortune-core").SingleRange, direction: "left" | "right" | "down" | "up") => void;
|
|
27
31
|
freeze: (type: "column" | "both" | "row", range: {
|
|
28
32
|
row: number;
|
|
@@ -53,7 +57,7 @@ declare const Workbook: React.ForwardRefExoticComponent<Settings & AdditionalPro
|
|
|
53
57
|
getHtmlByRange: (range: import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => string | null;
|
|
54
58
|
setSelection: (range: import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => void;
|
|
55
59
|
setCellValuesByRange: (data: any[][], range: import("@fileverse-dev/fortune-core").SingleRange, options?: api.CommonOptions) => void;
|
|
56
|
-
setCellFormatByRange: (attr: "rt" | "m" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle, value: any, range: import("@fileverse-dev/fortune-core").SingleRange | import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => void;
|
|
60
|
+
setCellFormatByRange: (attr: "rt" | "m" | "error" | "v" | "mc" | "f" | "ct" | "qp" | "spl" | "bg" | "lo" | "baseValue" | "baseCurrency" | "baseCurrencyPrice" | "isDataBlockFormula" | "ps" | "hl" | keyof import("@fileverse-dev/fortune-core").CellStyle, value: any, range: import("@fileverse-dev/fortune-core").SingleRange | import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => void;
|
|
57
61
|
mergeCells: (ranges: import("@fileverse-dev/fortune-core").Range, type: string, options?: api.CommonOptions) => void;
|
|
58
62
|
cancelMerge: (ranges: import("@fileverse-dev/fortune-core").Range, options?: api.CommonOptions) => void;
|
|
59
63
|
getAllSheets: () => SheetType[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fileverse-dev/fortune-react",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.66-error-1",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "lib/index.d.ts",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"tsc": "tsc"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@fileverse-dev/fortune-core": "1.1.
|
|
19
|
+
"@fileverse-dev/fortune-core": "1.1.66-error-1",
|
|
20
20
|
"@fileverse/ui": "^4.1.7-patch-21",
|
|
21
21
|
"@tippyjs/react": "^4.2.6",
|
|
22
22
|
"@types/regenerator-runtime": "^0.13.6",
|