@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.
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ declare const ErrorBoxes: React.FC;
3
+ export default ErrorBoxes;
@@ -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;
@@ -27,7 +27,7 @@ var NotationBoxes = function NotationBoxes() {
27
27
  }
28
28
  }
29
29
  setContext(function (ctx) {
30
- return showComments(ctx, psShownCells_1);
30
+ showComments(ctx, psShownCells_1);
31
31
  });
32
32
  }
33
33
  }, [flowdata, setContext]);
@@ -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 attachSmoothWheelScroll(scrollContainer, moveScrollBy, getPixelScale) {
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 scheduleScrollUpdate(x, y) {
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
- scheduleScrollUpdate(event.deltaX * scaleFactor, event.deltaY * scaleFactor);
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
- scheduleScrollUpdate: scheduleScrollUpdate,
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 attachTouchPanToQueue(containerEl, scheduleScrollUpdate, getPixelScale) {
67
- var dragging = false;
68
- var lastX = 0;
69
- var lastY = 0;
70
- function onPointerDown(e) {
71
- if (e.pointerType !== "touch" && e.pointerType !== "pen") return;
72
- dragging = true;
73
- lastX = e.clientX;
74
- lastY = e.clientY;
75
- containerEl.setPointerCapture(e.pointerId);
76
- e.preventDefault();
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(e) {
79
- if (!dragging) return;
80
- var dx = e.clientX - lastX;
81
- var dy = e.clientY - lastY;
82
- lastX = e.clientX;
83
- lastY = e.clientY;
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
- scheduleScrollUpdate(-dx * scale, -dy * scale);
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 makeScrollbarsMoveByPixels = function makeScrollbarsMoveByPixels(horizontalScrollbarEl, verticalScrollbarEl) {
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 routeWheelScrollToScrollbars(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl) {
127
- var moveScrollbarsByPixels = makeScrollbarsMoveByPixels(horizontalScrollbarEl, verticalScrollbarEl);
128
- var _a = attachSmoothWheelScroll(scrollContainerEl, moveScrollbarsByPixels, function () {
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
- scheduleScrollUpdate = _a.scheduleScrollUpdate,
132
- detach = _a.detach;
133
- var detachTouch = attachTouchPanToQueue(scrollContainerEl, scheduleScrollUpdate, function () {
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
- detach();
138
- detachTouch();
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 unmountScrollHandler = routeWheelScrollToScrollbars(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl);
147
- return unmountScrollHandler;
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,3 @@
1
+ import React from "react";
2
+ declare const ErrorBoxes: React.FC;
3
+ export default ErrorBoxes;
@@ -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;
@@ -36,7 +36,7 @@ var NotationBoxes = function NotationBoxes() {
36
36
  }
37
37
  }
38
38
  setContext(function (ctx) {
39
- return (0, _fortuneCore.showComments)(ctx, psShownCells_1);
39
+ (0, _fortuneCore.showComments)(ctx, psShownCells_1);
40
40
  });
41
41
  }
42
42
  }, [flowdata, setContext]);
@@ -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 attachSmoothWheelScroll(scrollContainer, moveScrollBy, getPixelScale) {
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 scheduleScrollUpdate(x, y) {
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
- scheduleScrollUpdate(event.deltaX * scaleFactor, event.deltaY * scaleFactor);
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
- scheduleScrollUpdate: scheduleScrollUpdate,
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 attachTouchPanToQueue(containerEl, scheduleScrollUpdate, getPixelScale) {
74
- var dragging = false;
75
- var lastX = 0;
76
- var lastY = 0;
77
- function onPointerDown(e) {
78
- if (e.pointerType !== "touch" && e.pointerType !== "pen") return;
79
- dragging = true;
80
- lastX = e.clientX;
81
- lastY = e.clientY;
82
- containerEl.setPointerCapture(e.pointerId);
83
- e.preventDefault();
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(e) {
86
- if (!dragging) return;
87
- var dx = e.clientX - lastX;
88
- var dy = e.clientY - lastY;
89
- lastX = e.clientX;
90
- lastY = e.clientY;
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
- scheduleScrollUpdate(-dx * scale, -dy * scale);
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 makeScrollbarsMoveByPixels = function makeScrollbarsMoveByPixels(horizontalScrollbarEl, verticalScrollbarEl) {
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 routeWheelScrollToScrollbars(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl) {
134
- var moveScrollbarsByPixels = makeScrollbarsMoveByPixels(horizontalScrollbarEl, verticalScrollbarEl);
135
- var _a = attachSmoothWheelScroll(scrollContainerEl, moveScrollbarsByPixels, function () {
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
- scheduleScrollUpdate = _a.scheduleScrollUpdate,
139
- detach = _a.detach;
140
- var detachTouch = attachTouchPanToQueue(scrollContainerEl, scheduleScrollUpdate, function () {
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
- detach();
145
- detachTouch();
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 unmountScrollHandler = routeWheelScrollToScrollbars(scrollContainerEl, horizontalScrollbarEl, verticalScrollbarEl);
154
- return unmountScrollHandler;
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.65",
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.65",
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",