@leankylin-sheet/react 3.1.10 → 3.1.12

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/dist/index.esm.js CHANGED
@@ -3920,11 +3920,54 @@ var Sheet = function Sheet(_ref) {
3920
3920
  tableCanvas.drawRowHeader(context.scrollTop);
3921
3921
  }
3922
3922
  }, [context, refs.canvas, refs.globalCache.freezen, setContext, sheet.id]);
3923
+ function isMost(direction) {
3924
+ var _containerRef$current;
3925
+ var targetClassName = ["top", "bottom"].includes(direction) ? ".luckysheet-scrollbar-y" : ".luckysheet-scrollbar-x";
3926
+ var target = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelector(targetClassName);
3927
+ var scrollTop = target.scrollTop,
3928
+ clientHeight = target.clientHeight,
3929
+ clientWidth = target.clientWidth,
3930
+ scrollHeight = target.scrollHeight,
3931
+ scrollLeft = target.scrollLeft,
3932
+ scrollWidth = target.scrollWidth;
3933
+ if (direction === "bottom") {
3934
+ return scrollTop + clientHeight >= scrollHeight - 1;
3935
+ }
3936
+ if (direction === "top") {
3937
+ return scrollTop <= 1;
3938
+ }
3939
+ if (direction === "left") {
3940
+ return scrollLeft <= 1;
3941
+ }
3942
+ if (direction === "right") {
3943
+ return scrollLeft + clientWidth >= scrollWidth - 1;
3944
+ }
3945
+ return false;
3946
+ }
3923
3947
  var onWheel = useCallback(function (e) {
3924
3948
  setContext(function (draftCtx) {
3925
3949
  handleGlobalWheel(draftCtx, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
3926
3950
  });
3927
- e.preventDefault();
3951
+ if (e.deltaY === 0 && e.deltaX === 0) {
3952
+ return;
3953
+ }
3954
+ var mainDirection = Math.abs(e.deltaY) > Math.abs(e.deltaX) ? "vertical" : "horizontal";
3955
+ var upToBottom = e.deltaY > 0;
3956
+ var leftToRight = e.deltaX > 0;
3957
+ if (mainDirection === "vertical") {
3958
+ if (upToBottom && !isMost("bottom")) {
3959
+ e.preventDefault();
3960
+ } else if (!upToBottom && !isMost("top")) {
3961
+ e.preventDefault();
3962
+ }
3963
+ }
3964
+ if (mainDirection === "horizontal") {
3965
+ if (leftToRight && !isMost("right")) {
3966
+ e.preventDefault();
3967
+ } else if (!leftToRight && !isMost("left")) {
3968
+ e.preventDefault();
3969
+ }
3970
+ }
3928
3971
  }, [refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
3929
3972
  useEffect(function () {
3930
3973
  var container = containerRef.current;
package/dist/index.js CHANGED
@@ -3930,11 +3930,54 @@ var Sheet = function Sheet(_ref) {
3930
3930
  tableCanvas.drawRowHeader(context.scrollTop);
3931
3931
  }
3932
3932
  }, [context, refs.canvas, refs.globalCache.freezen, setContext, sheet.id]);
3933
+ function isMost(direction) {
3934
+ var _containerRef$current;
3935
+ var targetClassName = ["top", "bottom"].includes(direction) ? ".luckysheet-scrollbar-y" : ".luckysheet-scrollbar-x";
3936
+ var target = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelector(targetClassName);
3937
+ var scrollTop = target.scrollTop,
3938
+ clientHeight = target.clientHeight,
3939
+ clientWidth = target.clientWidth,
3940
+ scrollHeight = target.scrollHeight,
3941
+ scrollLeft = target.scrollLeft,
3942
+ scrollWidth = target.scrollWidth;
3943
+ if (direction === "bottom") {
3944
+ return scrollTop + clientHeight >= scrollHeight - 1;
3945
+ }
3946
+ if (direction === "top") {
3947
+ return scrollTop <= 1;
3948
+ }
3949
+ if (direction === "left") {
3950
+ return scrollLeft <= 1;
3951
+ }
3952
+ if (direction === "right") {
3953
+ return scrollLeft + clientWidth >= scrollWidth - 1;
3954
+ }
3955
+ return false;
3956
+ }
3933
3957
  var onWheel = React.useCallback(function (e) {
3934
3958
  setContext(function (draftCtx) {
3935
3959
  core.handleGlobalWheel(draftCtx, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
3936
3960
  });
3937
- e.preventDefault();
3961
+ if (e.deltaY === 0 && e.deltaX === 0) {
3962
+ return;
3963
+ }
3964
+ var mainDirection = Math.abs(e.deltaY) > Math.abs(e.deltaX) ? "vertical" : "horizontal";
3965
+ var upToBottom = e.deltaY > 0;
3966
+ var leftToRight = e.deltaX > 0;
3967
+ if (mainDirection === "vertical") {
3968
+ if (upToBottom && !isMost("bottom")) {
3969
+ e.preventDefault();
3970
+ } else if (!upToBottom && !isMost("top")) {
3971
+ e.preventDefault();
3972
+ }
3973
+ }
3974
+ if (mainDirection === "horizontal") {
3975
+ if (leftToRight && !isMost("right")) {
3976
+ e.preventDefault();
3977
+ } else if (!leftToRight && !isMost("left")) {
3978
+ e.preventDefault();
3979
+ }
3980
+ }
3938
3981
  }, [refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
3939
3982
  React.useEffect(function () {
3940
3983
  var container = containerRef.current;
package/dist/index.umd.js CHANGED
@@ -107020,11 +107020,54 @@
107020
107020
  tableCanvas.drawRowHeader(context.scrollTop);
107021
107021
  }
107022
107022
  }, [context, refs.canvas, refs.globalCache.freezen, setContext, sheet.id]);
107023
+ function isMost(direction) {
107024
+ var _containerRef$current;
107025
+ var targetClassName = ["top", "bottom"].includes(direction) ? ".luckysheet-scrollbar-y" : ".luckysheet-scrollbar-x";
107026
+ var target = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelector(targetClassName);
107027
+ var scrollTop = target.scrollTop,
107028
+ clientHeight = target.clientHeight,
107029
+ clientWidth = target.clientWidth,
107030
+ scrollHeight = target.scrollHeight,
107031
+ scrollLeft = target.scrollLeft,
107032
+ scrollWidth = target.scrollWidth;
107033
+ if (direction === "bottom") {
107034
+ return scrollTop + clientHeight >= scrollHeight - 1;
107035
+ }
107036
+ if (direction === "top") {
107037
+ return scrollTop <= 1;
107038
+ }
107039
+ if (direction === "left") {
107040
+ return scrollLeft <= 1;
107041
+ }
107042
+ if (direction === "right") {
107043
+ return scrollLeft + clientWidth >= scrollWidth - 1;
107044
+ }
107045
+ return false;
107046
+ }
107023
107047
  var onWheel = React.useCallback(function (e) {
107024
107048
  setContext(function (draftCtx) {
107025
107049
  handleGlobalWheel(draftCtx, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
107026
107050
  });
107027
- e.preventDefault();
107051
+ if (e.deltaY === 0 && e.deltaX === 0) {
107052
+ return;
107053
+ }
107054
+ var mainDirection = Math.abs(e.deltaY) > Math.abs(e.deltaX) ? "vertical" : "horizontal";
107055
+ var upToBottom = e.deltaY > 0;
107056
+ var leftToRight = e.deltaX > 0;
107057
+ if (mainDirection === "vertical") {
107058
+ if (upToBottom && !isMost("bottom")) {
107059
+ e.preventDefault();
107060
+ } else if (!upToBottom && !isMost("top")) {
107061
+ e.preventDefault();
107062
+ }
107063
+ }
107064
+ if (mainDirection === "horizontal") {
107065
+ if (leftToRight && !isMost("right")) {
107066
+ e.preventDefault();
107067
+ } else if (!leftToRight && !isMost("left")) {
107068
+ e.preventDefault();
107069
+ }
107070
+ }
107028
107071
  }, [refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
107029
107072
  React.useEffect(function () {
107030
107073
  var container = containerRef.current;