@fileverse-dev/fortune-react 1.2.51 → 1.2.53
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.
|
@@ -85,7 +85,7 @@ var FxEditor = function FxEditor() {
|
|
|
85
85
|
return document.querySelector(".luckysheet-formula-search-item-active");
|
|
86
86
|
}, []);
|
|
87
87
|
var insertSelectedFormula = useCallback(function (formulaName) {
|
|
88
|
-
if (
|
|
88
|
+
if (/^=+$/.test(refs.fxInput.current.innerText)) {
|
|
89
89
|
var ht = "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span><span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>");
|
|
90
90
|
refs.fxInput.current.innerHTML = ht;
|
|
91
91
|
var cellEditor = document.getElementById("luckysheet-rich-text-editor");
|
|
@@ -12,6 +12,7 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
12
12
|
return window.devicePixelRatio || 1;
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
+
console.log("handleScroll called 6.2");
|
|
15
16
|
var queuedXPixels = 0;
|
|
16
17
|
var queuedYPixels = 0;
|
|
17
18
|
var animationFrameId = 0;
|
|
@@ -39,13 +40,11 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
39
40
|
setContext(function (ctx) {
|
|
40
41
|
removeEditingComment(ctx, refs.globalCache);
|
|
41
42
|
});
|
|
42
|
-
var functionDetailsElement = document.getElementById("function-details");
|
|
43
|
-
var formulaSearchElement = document.getElementById("luckysheet-formula-search-c-p");
|
|
44
|
-
var isPointerOverFunctionDetails = functionDetailsElement === null || functionDetailsElement === void 0 ? void 0 : functionDetailsElement.matches(":hover");
|
|
45
|
-
var isPointerOverFormulaSearch = formulaSearchElement === null || formulaSearchElement === void 0 ? void 0 : formulaSearchElement.matches(":hover");
|
|
46
43
|
var isPointerInSearchDialog = !!((_b = (_a = refs === null || refs === void 0 ? void 0 : refs.globalCache) === null || _a === void 0 ? void 0 : _a.searchDialog) === null || _b === void 0 ? void 0 : _b.mouseEnter);
|
|
47
44
|
var hasFilterContextMenuOpen = context.filterContextMenu != null;
|
|
48
|
-
|
|
45
|
+
var functionDetailAvailable = event.target.closest(".luckysheet-formula-help-content");
|
|
46
|
+
var formulaSearchAvailable = event.target.closest(".luckysheet-formula-search-c-p");
|
|
47
|
+
if (isPointerInSearchDialog || hasFilterContextMenuOpen || !!functionDetailAvailable || !!formulaSearchAvailable) {
|
|
49
48
|
return;
|
|
50
49
|
}
|
|
51
50
|
event.preventDefault();
|
|
@@ -69,38 +68,104 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
69
68
|
var gestureStartClientY = 0;
|
|
70
69
|
var lastPointerClientX = 0;
|
|
71
70
|
var lastPointerClientY = 0;
|
|
71
|
+
var lastMoveTime = 0;
|
|
72
|
+
var velocityX = 0;
|
|
73
|
+
var velocityY = 0;
|
|
74
|
+
var momentumAnimationId = 0;
|
|
75
|
+
var scrollDirection = "none";
|
|
72
76
|
var PAN_DISTANCE_THRESHOLD_PX = 8;
|
|
77
|
+
var FRICTION = 0.85;
|
|
78
|
+
var MIN_VELOCITY = 0.6;
|
|
79
|
+
var VELOCITY_MULTIPLIER = 2.5;
|
|
80
|
+
var DIRECTION_LOCK_THRESHOLD = 1.5;
|
|
81
|
+
function stopMomentum() {
|
|
82
|
+
if (momentumAnimationId) {
|
|
83
|
+
cancelAnimationFrame(momentumAnimationId);
|
|
84
|
+
momentumAnimationId = 0;
|
|
85
|
+
}
|
|
86
|
+
velocityX = 0;
|
|
87
|
+
velocityY = 0;
|
|
88
|
+
}
|
|
89
|
+
function applyMomentum() {
|
|
90
|
+
if (Math.abs(velocityX) < MIN_VELOCITY && Math.abs(velocityY) < MIN_VELOCITY) {
|
|
91
|
+
stopMomentum();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
var scale = getPixelScale();
|
|
95
|
+
var momentumX = -velocityX * scale;
|
|
96
|
+
var momentumY = -velocityY * scale;
|
|
97
|
+
if (scrollDirection === "vertical") {
|
|
98
|
+
momentumX = 0;
|
|
99
|
+
} else if (scrollDirection === "horizontal") {
|
|
100
|
+
momentumY = 0;
|
|
101
|
+
}
|
|
102
|
+
scrollHandler(momentumX, momentumY);
|
|
103
|
+
velocityX *= FRICTION;
|
|
104
|
+
velocityY *= FRICTION;
|
|
105
|
+
momentumAnimationId = requestAnimationFrame(applyMomentum);
|
|
106
|
+
}
|
|
73
107
|
function onPointerDown(pointerEvent) {
|
|
74
108
|
if (pointerEvent.pointerType !== "touch" && pointerEvent.pointerType !== "pen") return;
|
|
109
|
+
stopMomentum();
|
|
75
110
|
isScrolling = false;
|
|
111
|
+
scrollDirection = "none";
|
|
76
112
|
gestureStartClientX = pointerEvent.clientX;
|
|
77
113
|
lastPointerClientX = pointerEvent.clientX;
|
|
78
114
|
gestureStartClientY = pointerEvent.clientY;
|
|
79
115
|
lastPointerClientY = pointerEvent.clientY;
|
|
116
|
+
lastMoveTime = performance.now();
|
|
117
|
+
velocityX = 0;
|
|
118
|
+
velocityY = 0;
|
|
80
119
|
containerEl.setPointerCapture(pointerEvent.pointerId);
|
|
81
120
|
}
|
|
82
121
|
function onPointerMove(pointerEvent) {
|
|
83
122
|
if (pointerEvent.pointerType !== "touch" && pointerEvent.pointerType !== "pen") return;
|
|
123
|
+
var currentTime = performance.now();
|
|
124
|
+
var deltaTime = Math.max(1, currentTime - lastMoveTime);
|
|
84
125
|
var deltaXSinceLastMove = pointerEvent.clientX - lastPointerClientX;
|
|
85
126
|
var deltaYSinceLastMove = pointerEvent.clientY - lastPointerClientY;
|
|
127
|
+
velocityX = deltaXSinceLastMove / deltaTime * 16;
|
|
128
|
+
velocityY = deltaYSinceLastMove / deltaTime * 16;
|
|
86
129
|
lastPointerClientX = pointerEvent.clientX;
|
|
87
130
|
lastPointerClientY = pointerEvent.clientY;
|
|
131
|
+
lastMoveTime = currentTime;
|
|
88
132
|
if (!isScrolling) {
|
|
89
133
|
var totalXFromGestureStart = lastPointerClientX - gestureStartClientX;
|
|
90
134
|
var totalYFromGestureStart = lastPointerClientY - gestureStartClientY;
|
|
91
135
|
if (totalXFromGestureStart * totalXFromGestureStart + totalYFromGestureStart * totalYFromGestureStart < PAN_DISTANCE_THRESHOLD_PX * PAN_DISTANCE_THRESHOLD_PX) {
|
|
92
136
|
return;
|
|
93
137
|
}
|
|
138
|
+
var absX = Math.abs(totalXFromGestureStart);
|
|
139
|
+
var absY = Math.abs(totalYFromGestureStart);
|
|
140
|
+
if (absX > absY * DIRECTION_LOCK_THRESHOLD) {
|
|
141
|
+
scrollDirection = "horizontal";
|
|
142
|
+
} else if (absY > absX * DIRECTION_LOCK_THRESHOLD) {
|
|
143
|
+
scrollDirection = "vertical";
|
|
144
|
+
} else {
|
|
145
|
+
scrollDirection = "none";
|
|
146
|
+
}
|
|
94
147
|
isScrolling = true;
|
|
95
148
|
}
|
|
96
149
|
pointerEvent.preventDefault();
|
|
97
150
|
var scale = getPixelScale();
|
|
98
|
-
|
|
151
|
+
var scrollX = -deltaXSinceLastMove * scale * VELOCITY_MULTIPLIER;
|
|
152
|
+
var scrollY = -deltaYSinceLastMove * scale * VELOCITY_MULTIPLIER;
|
|
153
|
+
if (scrollDirection === "vertical") {
|
|
154
|
+
scrollX = 0;
|
|
155
|
+
} else if (scrollDirection === "horizontal") {
|
|
156
|
+
scrollY = 0;
|
|
157
|
+
}
|
|
158
|
+
scrollHandler(scrollX, scrollY);
|
|
99
159
|
}
|
|
100
160
|
function onPointerUp(e) {
|
|
101
161
|
try {
|
|
102
162
|
containerEl.releasePointerCapture(e.pointerId);
|
|
103
163
|
} catch (_a) {}
|
|
164
|
+
if (isScrolling) {
|
|
165
|
+
if (Math.abs(velocityX) > MIN_VELOCITY || Math.abs(velocityY) > MIN_VELOCITY) {
|
|
166
|
+
momentumAnimationId = requestAnimationFrame(applyMomentum);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
104
169
|
isScrolling = false;
|
|
105
170
|
}
|
|
106
171
|
containerEl.addEventListener("pointerdown", onPointerDown, {
|
|
@@ -112,6 +177,7 @@ export var useSmoothScroll = function useSmoothScroll(scrollContainerRef) {
|
|
|
112
177
|
containerEl.addEventListener("pointerup", onPointerUp);
|
|
113
178
|
containerEl.addEventListener("pointercancel", onPointerUp);
|
|
114
179
|
return function () {
|
|
180
|
+
stopMomentum();
|
|
115
181
|
containerEl.removeEventListener("pointerdown", onPointerDown);
|
|
116
182
|
containerEl.removeEventListener("pointermove", onPointerMove);
|
|
117
183
|
containerEl.removeEventListener("pointerup", onPointerUp);
|
|
@@ -94,7 +94,7 @@ var FxEditor = function FxEditor() {
|
|
|
94
94
|
return document.querySelector(".luckysheet-formula-search-item-active");
|
|
95
95
|
}, []);
|
|
96
96
|
var insertSelectedFormula = (0, _react.useCallback)(function (formulaName) {
|
|
97
|
-
if (
|
|
97
|
+
if (/^=+$/.test(refs.fxInput.current.innerText)) {
|
|
98
98
|
var ht = "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span><span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>");
|
|
99
99
|
refs.fxInput.current.innerHTML = ht;
|
|
100
100
|
var cellEditor = document.getElementById("luckysheet-rich-text-editor");
|
|
@@ -19,6 +19,7 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
19
19
|
return window.devicePixelRatio || 1;
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
+
console.log("handleScroll called 6.2");
|
|
22
23
|
var queuedXPixels = 0;
|
|
23
24
|
var queuedYPixels = 0;
|
|
24
25
|
var animationFrameId = 0;
|
|
@@ -46,13 +47,11 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
46
47
|
setContext(function (ctx) {
|
|
47
48
|
(0, _fortuneCore.removeEditingComment)(ctx, refs.globalCache);
|
|
48
49
|
});
|
|
49
|
-
var functionDetailsElement = document.getElementById("function-details");
|
|
50
|
-
var formulaSearchElement = document.getElementById("luckysheet-formula-search-c-p");
|
|
51
|
-
var isPointerOverFunctionDetails = functionDetailsElement === null || functionDetailsElement === void 0 ? void 0 : functionDetailsElement.matches(":hover");
|
|
52
|
-
var isPointerOverFormulaSearch = formulaSearchElement === null || formulaSearchElement === void 0 ? void 0 : formulaSearchElement.matches(":hover");
|
|
53
50
|
var isPointerInSearchDialog = !!((_b = (_a = refs === null || refs === void 0 ? void 0 : refs.globalCache) === null || _a === void 0 ? void 0 : _a.searchDialog) === null || _b === void 0 ? void 0 : _b.mouseEnter);
|
|
54
51
|
var hasFilterContextMenuOpen = context.filterContextMenu != null;
|
|
55
|
-
|
|
52
|
+
var functionDetailAvailable = event.target.closest(".luckysheet-formula-help-content");
|
|
53
|
+
var formulaSearchAvailable = event.target.closest(".luckysheet-formula-search-c-p");
|
|
54
|
+
if (isPointerInSearchDialog || hasFilterContextMenuOpen || !!functionDetailAvailable || !!formulaSearchAvailable) {
|
|
56
55
|
return;
|
|
57
56
|
}
|
|
58
57
|
event.preventDefault();
|
|
@@ -76,38 +75,104 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
76
75
|
var gestureStartClientY = 0;
|
|
77
76
|
var lastPointerClientX = 0;
|
|
78
77
|
var lastPointerClientY = 0;
|
|
78
|
+
var lastMoveTime = 0;
|
|
79
|
+
var velocityX = 0;
|
|
80
|
+
var velocityY = 0;
|
|
81
|
+
var momentumAnimationId = 0;
|
|
82
|
+
var scrollDirection = "none";
|
|
79
83
|
var PAN_DISTANCE_THRESHOLD_PX = 8;
|
|
84
|
+
var FRICTION = 0.85;
|
|
85
|
+
var MIN_VELOCITY = 0.6;
|
|
86
|
+
var VELOCITY_MULTIPLIER = 2.5;
|
|
87
|
+
var DIRECTION_LOCK_THRESHOLD = 1.5;
|
|
88
|
+
function stopMomentum() {
|
|
89
|
+
if (momentumAnimationId) {
|
|
90
|
+
cancelAnimationFrame(momentumAnimationId);
|
|
91
|
+
momentumAnimationId = 0;
|
|
92
|
+
}
|
|
93
|
+
velocityX = 0;
|
|
94
|
+
velocityY = 0;
|
|
95
|
+
}
|
|
96
|
+
function applyMomentum() {
|
|
97
|
+
if (Math.abs(velocityX) < MIN_VELOCITY && Math.abs(velocityY) < MIN_VELOCITY) {
|
|
98
|
+
stopMomentum();
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
var scale = getPixelScale();
|
|
102
|
+
var momentumX = -velocityX * scale;
|
|
103
|
+
var momentumY = -velocityY * scale;
|
|
104
|
+
if (scrollDirection === "vertical") {
|
|
105
|
+
momentumX = 0;
|
|
106
|
+
} else if (scrollDirection === "horizontal") {
|
|
107
|
+
momentumY = 0;
|
|
108
|
+
}
|
|
109
|
+
scrollHandler(momentumX, momentumY);
|
|
110
|
+
velocityX *= FRICTION;
|
|
111
|
+
velocityY *= FRICTION;
|
|
112
|
+
momentumAnimationId = requestAnimationFrame(applyMomentum);
|
|
113
|
+
}
|
|
80
114
|
function onPointerDown(pointerEvent) {
|
|
81
115
|
if (pointerEvent.pointerType !== "touch" && pointerEvent.pointerType !== "pen") return;
|
|
116
|
+
stopMomentum();
|
|
82
117
|
isScrolling = false;
|
|
118
|
+
scrollDirection = "none";
|
|
83
119
|
gestureStartClientX = pointerEvent.clientX;
|
|
84
120
|
lastPointerClientX = pointerEvent.clientX;
|
|
85
121
|
gestureStartClientY = pointerEvent.clientY;
|
|
86
122
|
lastPointerClientY = pointerEvent.clientY;
|
|
123
|
+
lastMoveTime = performance.now();
|
|
124
|
+
velocityX = 0;
|
|
125
|
+
velocityY = 0;
|
|
87
126
|
containerEl.setPointerCapture(pointerEvent.pointerId);
|
|
88
127
|
}
|
|
89
128
|
function onPointerMove(pointerEvent) {
|
|
90
129
|
if (pointerEvent.pointerType !== "touch" && pointerEvent.pointerType !== "pen") return;
|
|
130
|
+
var currentTime = performance.now();
|
|
131
|
+
var deltaTime = Math.max(1, currentTime - lastMoveTime);
|
|
91
132
|
var deltaXSinceLastMove = pointerEvent.clientX - lastPointerClientX;
|
|
92
133
|
var deltaYSinceLastMove = pointerEvent.clientY - lastPointerClientY;
|
|
134
|
+
velocityX = deltaXSinceLastMove / deltaTime * 16;
|
|
135
|
+
velocityY = deltaYSinceLastMove / deltaTime * 16;
|
|
93
136
|
lastPointerClientX = pointerEvent.clientX;
|
|
94
137
|
lastPointerClientY = pointerEvent.clientY;
|
|
138
|
+
lastMoveTime = currentTime;
|
|
95
139
|
if (!isScrolling) {
|
|
96
140
|
var totalXFromGestureStart = lastPointerClientX - gestureStartClientX;
|
|
97
141
|
var totalYFromGestureStart = lastPointerClientY - gestureStartClientY;
|
|
98
142
|
if (totalXFromGestureStart * totalXFromGestureStart + totalYFromGestureStart * totalYFromGestureStart < PAN_DISTANCE_THRESHOLD_PX * PAN_DISTANCE_THRESHOLD_PX) {
|
|
99
143
|
return;
|
|
100
144
|
}
|
|
145
|
+
var absX = Math.abs(totalXFromGestureStart);
|
|
146
|
+
var absY = Math.abs(totalYFromGestureStart);
|
|
147
|
+
if (absX > absY * DIRECTION_LOCK_THRESHOLD) {
|
|
148
|
+
scrollDirection = "horizontal";
|
|
149
|
+
} else if (absY > absX * DIRECTION_LOCK_THRESHOLD) {
|
|
150
|
+
scrollDirection = "vertical";
|
|
151
|
+
} else {
|
|
152
|
+
scrollDirection = "none";
|
|
153
|
+
}
|
|
101
154
|
isScrolling = true;
|
|
102
155
|
}
|
|
103
156
|
pointerEvent.preventDefault();
|
|
104
157
|
var scale = getPixelScale();
|
|
105
|
-
|
|
158
|
+
var scrollX = -deltaXSinceLastMove * scale * VELOCITY_MULTIPLIER;
|
|
159
|
+
var scrollY = -deltaYSinceLastMove * scale * VELOCITY_MULTIPLIER;
|
|
160
|
+
if (scrollDirection === "vertical") {
|
|
161
|
+
scrollX = 0;
|
|
162
|
+
} else if (scrollDirection === "horizontal") {
|
|
163
|
+
scrollY = 0;
|
|
164
|
+
}
|
|
165
|
+
scrollHandler(scrollX, scrollY);
|
|
106
166
|
}
|
|
107
167
|
function onPointerUp(e) {
|
|
108
168
|
try {
|
|
109
169
|
containerEl.releasePointerCapture(e.pointerId);
|
|
110
170
|
} catch (_a) {}
|
|
171
|
+
if (isScrolling) {
|
|
172
|
+
if (Math.abs(velocityX) > MIN_VELOCITY || Math.abs(velocityY) > MIN_VELOCITY) {
|
|
173
|
+
momentumAnimationId = requestAnimationFrame(applyMomentum);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
111
176
|
isScrolling = false;
|
|
112
177
|
}
|
|
113
178
|
containerEl.addEventListener("pointerdown", onPointerDown, {
|
|
@@ -119,6 +184,7 @@ var useSmoothScroll = exports.useSmoothScroll = function useSmoothScroll(scrollC
|
|
|
119
184
|
containerEl.addEventListener("pointerup", onPointerUp);
|
|
120
185
|
containerEl.addEventListener("pointercancel", onPointerUp);
|
|
121
186
|
return function () {
|
|
187
|
+
stopMomentum();
|
|
122
188
|
containerEl.removeEventListener("pointerdown", onPointerDown);
|
|
123
189
|
containerEl.removeEventListener("pointermove", onPointerMove);
|
|
124
190
|
containerEl.removeEventListener("pointerup", onPointerUp);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fileverse-dev/fortune-react",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.53",
|
|
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.2.
|
|
19
|
+
"@fileverse-dev/fortune-core": "1.2.53",
|
|
20
20
|
"@fileverse/ui": "^4.1.7-patch-40",
|
|
21
21
|
"@tippyjs/react": "^4.2.6",
|
|
22
22
|
"@types/regenerator-runtime": "^0.13.6",
|