@pinnacle0/web-ui 0.3.16 → 0.3.18-beta1

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.
Files changed (104) hide show
  1. package/core/FlatList/VirtualFlatList/Item.d.ts +17 -0
  2. package/core/FlatList/VirtualFlatList/Item.js +26 -0
  3. package/core/FlatList/VirtualFlatList/Item.js.map +1 -0
  4. package/core/FlatList/VirtualFlatList/index.d.ts +30 -0
  5. package/core/FlatList/VirtualFlatList/index.js +79 -0
  6. package/core/FlatList/VirtualFlatList/index.js.map +1 -0
  7. package/core/FlatList/VirtualFlatList/index.less +22 -0
  8. package/core/FlatList/VirtualFlatList/type.d.ts +17 -0
  9. package/core/FlatList/VirtualFlatList/type.js +2 -0
  10. package/core/FlatList/VirtualFlatList/type.js.map +1 -0
  11. package/core/FlatList/index.d.ts +3 -0
  12. package/core/FlatList/index.js +32 -0
  13. package/core/FlatList/index.js.map +1 -0
  14. package/core/FlatList/shared/Footer/index.d.ts +8 -0
  15. package/core/FlatList/shared/Footer/index.js +13 -0
  16. package/core/FlatList/shared/Footer/index.js.map +1 -0
  17. package/core/FlatList/shared/Footer/index.less +8 -0
  18. package/core/FlatList/shared/Spinner/index.d.ts +8 -0
  19. package/core/FlatList/shared/Spinner/index.js +10 -0
  20. package/core/FlatList/shared/Spinner/index.js.map +1 -0
  21. package/core/FlatList/shared/Spinner/index.less +13 -0
  22. package/core/FlatList/shared/Wrapper/Loading.d.ts +7 -0
  23. package/core/FlatList/shared/Wrapper/Loading.js +8 -0
  24. package/core/FlatList/shared/Wrapper/Loading.js.map +1 -0
  25. package/core/FlatList/shared/Wrapper/index.d.ts +13 -0
  26. package/core/FlatList/shared/Wrapper/index.js +111 -0
  27. package/core/FlatList/shared/Wrapper/index.js.map +1 -0
  28. package/core/FlatList/shared/Wrapper/index.less +33 -0
  29. package/core/FlatList/shared/hooks/useBounceSwipe.d.ts +22 -0
  30. package/core/FlatList/shared/hooks/useBounceSwipe.js +111 -0
  31. package/core/FlatList/shared/hooks/useBounceSwipe.js.map +1 -0
  32. package/core/FlatList/shared/hooks/useElementScrollState.d.ts +8 -0
  33. package/core/FlatList/shared/hooks/useElementScrollState.js +38 -0
  34. package/core/FlatList/shared/hooks/useElementScrollState.js.map +1 -0
  35. package/core/FlatList/shared/hooks/useFlatList.d.ts +14 -0
  36. package/core/FlatList/shared/hooks/useFlatList.js +86 -0
  37. package/core/FlatList/shared/hooks/useFlatList.js.map +1 -0
  38. package/core/FlatList/shared/hooks/useLoadingWithDelay.d.ts +9 -0
  39. package/core/FlatList/shared/hooks/useLoadingWithDelay.js +52 -0
  40. package/core/FlatList/shared/hooks/useLoadingWithDelay.js.map +1 -0
  41. package/core/FlatList/type.d.ts +34 -0
  42. package/core/FlatList/type.js +2 -0
  43. package/core/FlatList/type.js.map +1 -0
  44. package/core/VirtualTable/TableHeader.d.ts +3 -4
  45. package/core/VirtualTable/TableHeader.js +2 -2
  46. package/core/VirtualTable/TableHeader.js.map +1 -1
  47. package/core/VirtualTable/TableRow.d.ts +7 -6
  48. package/core/VirtualTable/TableRow.js +28 -19
  49. package/core/VirtualTable/TableRow.js.map +1 -1
  50. package/core/VirtualTable/{useColumnWidths.d.ts → hooks/useColumnWidths.d.ts} +0 -0
  51. package/core/VirtualTable/{useColumnWidths.js → hooks/useColumnWidths.js} +0 -0
  52. package/core/VirtualTable/hooks/useColumnWidths.js.map +1 -0
  53. package/core/VirtualTable/{useDebounce.d.ts → hooks/useDebounce.d.ts} +0 -0
  54. package/core/VirtualTable/{useDebounce.js → hooks/useDebounce.js} +0 -0
  55. package/core/VirtualTable/hooks/useDebounce.js.map +1 -0
  56. package/core/VirtualTable/{useLayout.d.ts → hooks/useLayout.d.ts} +5 -2
  57. package/core/VirtualTable/{useLayout.js → hooks/useLayout.js} +8 -1
  58. package/core/VirtualTable/hooks/useLayout.js.map +1 -0
  59. package/core/VirtualTable/hooks/useRowExpand.d.ts +7 -0
  60. package/core/VirtualTable/hooks/useRowExpand.js +20 -0
  61. package/core/VirtualTable/hooks/useRowExpand.js.map +1 -0
  62. package/core/VirtualTable/{useRowSelection.d.ts → hooks/useRowSelection.d.ts} +1 -1
  63. package/core/VirtualTable/{useRowSelection.js → hooks/useRowSelection.js} +2 -2
  64. package/core/VirtualTable/hooks/useRowSelection.js.map +1 -0
  65. package/core/VirtualTable/{useScrollBarSize.d.ts → hooks/useScrollBarSize.d.ts} +0 -0
  66. package/core/VirtualTable/{useScrollBarSize.js → hooks/useScrollBarSize.js} +0 -0
  67. package/core/VirtualTable/hooks/useScrollBarSize.js.map +1 -0
  68. package/core/VirtualTable/{useScrollToEdge.d.ts → hooks/useScrollToEdge.d.ts} +1 -1
  69. package/core/VirtualTable/{useScrollToEdge.js → hooks/useScrollToEdge.js} +1 -1
  70. package/core/VirtualTable/hooks/useScrollToEdge.js.map +1 -0
  71. package/core/VirtualTable/{useStickyPosition.d.ts → hooks/useStickyPosition.d.ts} +1 -5
  72. package/core/VirtualTable/{useStickyPosition.js → hooks/useStickyPosition.js} +1 -1
  73. package/core/VirtualTable/hooks/useStickyPosition.js.map +1 -0
  74. package/core/VirtualTable/hooks/useTransformColumn.d.ts +11 -0
  75. package/core/VirtualTable/hooks/useTransformColumn.js +9 -0
  76. package/core/VirtualTable/hooks/useTransformColumn.js.map +1 -0
  77. package/core/VirtualTable/index.d.ts +5 -4
  78. package/core/VirtualTable/index.js +15 -11
  79. package/core/VirtualTable/index.js.map +1 -1
  80. package/core/VirtualTable/index.less +14 -2
  81. package/core/VirtualTable/type.d.ts +17 -0
  82. package/hooks/useSwipe/controller.d.ts +20 -0
  83. package/hooks/useSwipe/controller.js +126 -0
  84. package/hooks/useSwipe/controller.js.map +1 -0
  85. package/hooks/useSwipe/index.d.ts +3 -0
  86. package/hooks/useSwipe/index.js +9 -0
  87. package/hooks/useSwipe/index.js.map +1 -0
  88. package/hooks/useSwipe/type.d.ts +38 -0
  89. package/hooks/useSwipe/type.js +8 -0
  90. package/hooks/useSwipe/type.js.map +1 -0
  91. package/hooks/useTransform.d.ts +18 -0
  92. package/hooks/useTransform.js +50 -0
  93. package/hooks/useTransform.js.map +1 -0
  94. package/package.json +5 -1
  95. package/util/SwipeUtil.d.ts +8 -0
  96. package/util/SwipeUtil.js +26 -0
  97. package/util/SwipeUtil.js.map +1 -0
  98. package/core/VirtualTable/useColumnWidths.js.map +0 -1
  99. package/core/VirtualTable/useDebounce.js.map +0 -1
  100. package/core/VirtualTable/useLayout.js.map +0 -1
  101. package/core/VirtualTable/useRowSelection.js.map +0 -1
  102. package/core/VirtualTable/useScrollBarSize.js.map +0 -1
  103. package/core/VirtualTable/useScrollToEdge.js.map +0 -1
  104. package/core/VirtualTable/useStickyPosition.js.map +0 -1
@@ -0,0 +1,111 @@
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 __read = (this && this.__read) || function (o, n) {
13
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
14
+ if (!m) return o;
15
+ var i = m.call(o), r, ar = [], e;
16
+ try {
17
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
18
+ }
19
+ catch (error) { e = { error: error }; }
20
+ finally {
21
+ try {
22
+ if (r && !r.done && (m = i["return"])) m.call(i);
23
+ }
24
+ finally { if (e) throw e.error; }
25
+ }
26
+ return ar;
27
+ };
28
+ import React from "react";
29
+ import { useElementScrollState } from "./useElementScrollState";
30
+ import { Direction, useSwipe } from "../../../../hooks/useSwipe";
31
+ import { useTransform } from "../../../../hooks/useTransform";
32
+ export var useBounceSwipe = function (options) {
33
+ var contentRef = options.contentRef, animatedRef = options.animatedRef, axis = options.axis, _a = options.baseOffset, baseOffset = _a === void 0 ? 0 : _a, onStart = options.onStart, onMove = options.onMove, onEnd = options.onEnd, onCancel = options.onCancel;
34
+ var _b = __read(React.useState(null), 2), boundary = _b[0], setBoundary = _b[1];
35
+ var transit = useTransform(animatedRef, { duration: 300, timingFunction: "cubic-bezier(0, 0.61, 0.28, 1.22)", property: "transform" });
36
+ var startOffsetRef = React.useRef(0);
37
+ var isX = React.useMemo(function () { return axis === "horizontal"; }, [axis]);
38
+ var isY = React.useMemo(function () { return axis === "vertical"; }, [axis]);
39
+ var _c = useElementScrollState(contentRef), isScrollable = _c.isScrollable, isScrollTop = _c.isScrollTop, isScrollBottom = _c.isScrollBottom, isScrollLeft = _c.isScrollLeft, isScrollRight = _c.isScrollRight;
40
+ var threshold = function (_a) {
41
+ var direction = _a.direction;
42
+ if (isY) {
43
+ return (direction === Direction.DOWN && isScrollTop()) || (direction === Direction.UP && isScrollBottom());
44
+ }
45
+ else {
46
+ return (direction === Direction.RIGHT && isScrollLeft()) || (direction === Direction.LEFT && isScrollRight());
47
+ }
48
+ };
49
+ var clearSwipe = function () {
50
+ startOffsetRef.current = 0;
51
+ setBoundary(null);
52
+ };
53
+ React.useEffect(function () {
54
+ // Changing overflow style to fixed laggy bounce swipe in chrome
55
+ if (contentRef.current) {
56
+ if (boundary) {
57
+ contentRef.current.style.overflow = "hidden";
58
+ }
59
+ else {
60
+ contentRef.current.style.overflow = "auto";
61
+ }
62
+ }
63
+ }, [boundary, contentRef]);
64
+ var getOffset = function (delta, boundary) {
65
+ var resultOffset = [0, 0];
66
+ var limitedOffset = delta[isX ? 0 : 1] - startOffsetRef.current + baseOffset;
67
+ var computeResultOffset = function (value) { return [isX ? value : 0, isY ? value : 0]; };
68
+ if (boundary === "upper") {
69
+ resultOffset = limitedOffset < 0 ? null : computeResultOffset(limitedOffset);
70
+ }
71
+ else if (boundary === "lower") {
72
+ resultOffset = limitedOffset > 0 ? null : computeResultOffset(limitedOffset);
73
+ }
74
+ else {
75
+ resultOffset = computeResultOffset(limitedOffset);
76
+ }
77
+ return resultOffset;
78
+ };
79
+ var handlers = useSwipe({
80
+ onStart: function (state) {
81
+ var _a = __read(state.delta, 2), x = _a[0], y = _a[1], direction = state.direction;
82
+ isScrollable(axis) && setBoundary(direction === Direction.DOWN ? "upper" : "lower");
83
+ startOffsetRef.current = isX ? x : y;
84
+ onStart === null || onStart === void 0 ? void 0 : onStart(__assign(__assign({}, state), { boundary: boundary }));
85
+ },
86
+ onMove: function (state) {
87
+ var delta = state.delta, cancel = state.cancel;
88
+ var offset = getOffset(delta, boundary);
89
+ if (!offset) {
90
+ cancel();
91
+ }
92
+ else {
93
+ var _a = __read(offset, 2), x = _a[0], y = _a[1];
94
+ transit.to({ x: x, y: y, immediate: true });
95
+ onMove === null || onMove === void 0 ? void 0 : onMove(__assign(__assign({}, state), { boundary: boundary }));
96
+ }
97
+ },
98
+ onEnd: function (state) {
99
+ onEnd === null || onEnd === void 0 ? void 0 : onEnd(__assign(__assign({}, state), { boundary: boundary }));
100
+ transit.clear();
101
+ clearSwipe();
102
+ },
103
+ onCancel: function (state) {
104
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel(__assign(__assign({}, state), { boundary: boundary }));
105
+ transit.clear();
106
+ clearSwipe();
107
+ },
108
+ }, { threshold: threshold });
109
+ return handlers;
110
+ };
111
+ //# sourceMappingURL=useBounceSwipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBounceSwipe.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/hooks/useBounceSwipe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ export declare const useElementScrollState: (ref: React.RefObject<HTMLElement | null>) => {
3
+ isScrollTop: () => boolean;
4
+ isScrollBottom: () => boolean;
5
+ isScrollLeft: () => boolean;
6
+ isScrollRight: () => boolean;
7
+ isScrollable: (direction: "vertical" | "horizontal") => boolean;
8
+ };
@@ -0,0 +1,38 @@
1
+ import React from "react";
2
+ // need to cache scrollable results
3
+ // only change when window resize, data change, and css change
4
+ export var useElementScrollState = function (ref) {
5
+ var isScrollable = React.useCallback(function (direction) {
6
+ if (ref.current) {
7
+ var element = ref.current;
8
+ return direction === "vertical" ? element.scrollHeight > element.clientHeight : element.scrollWidth > element.clientWidth;
9
+ }
10
+ else {
11
+ return false;
12
+ }
13
+ }, [ref]);
14
+ var isScrollTop = React.useCallback(function () { var _a; return ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollTop) === 0; }, [ref]);
15
+ var isScrollBottom = React.useCallback(function () {
16
+ var element = ref.current;
17
+ if (element) {
18
+ var scrollHeight = element.scrollHeight, scrollTop = element.scrollTop, clientHeight = element.clientHeight;
19
+ return Math.ceil(scrollTop) + clientHeight >= scrollHeight;
20
+ }
21
+ else {
22
+ return false;
23
+ }
24
+ }, [ref]);
25
+ var isScrollLeft = React.useCallback(function () { var _a; return ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollLeft) === 0; }, [ref]);
26
+ var isScrollRight = React.useCallback(function () {
27
+ var element = ref.current;
28
+ if (element) {
29
+ var scrollWidth = element.scrollWidth, scrollLeft = element.scrollLeft, clientWidth = element.clientWidth;
30
+ return Math.ceil(scrollLeft) + clientWidth >= scrollWidth;
31
+ }
32
+ else {
33
+ return false;
34
+ }
35
+ }, [ref]);
36
+ return { isScrollTop: isScrollTop, isScrollBottom: isScrollBottom, isScrollLeft: isScrollLeft, isScrollRight: isScrollRight, isScrollable: isScrollable };
37
+ };
38
+ //# sourceMappingURL=useElementScrollState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useElementScrollState.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/hooks/useElementScrollState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,mCAAmC;AAEnC,8DAA8D;AAE9D,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,GAAwC;IAC1E,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAClC,UAAC,SAAoC;QACjC,IAAI,GAAG,CAAC,OAAO,EAAE;YACb,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5B,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;SAC7H;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC,EACD,CAAC,GAAG,CAAC,CACR,CAAC;IAEF,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,sBAAM,OAAA,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,SAAS,MAAK,CAAC,CAAA,EAAA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjF,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,EAAE;YACF,IAAA,YAAY,GAA6B,OAAO,aAApC,EAAE,SAAS,GAAkB,OAAO,UAAzB,EAAE,YAAY,GAAI,OAAO,aAAX,CAAY;YACxD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,YAAY,IAAI,YAAY,CAAC;SAC9D;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,sBAAM,OAAA,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,UAAU,MAAK,CAAC,CAAA,EAAA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnF,IAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,EAAE;YACF,IAAA,WAAW,GAA6B,OAAO,YAApC,EAAE,UAAU,GAAiB,OAAO,WAAxB,EAAE,WAAW,GAAI,OAAO,YAAX,CAAY;YACvD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,IAAI,WAAW,CAAC;SAC7D;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO,EAAC,WAAW,aAAA,EAAE,cAAc,gBAAA,EAAE,YAAY,cAAA,EAAE,aAAa,eAAA,EAAE,YAAY,cAAA,EAAC,CAAC;AACpF,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import type { LoadingType } from "../../type";
3
+ interface Options {
4
+ contentRef: React.RefObject<HTMLElement>;
5
+ animatedRef: React.RefObject<HTMLElement>;
6
+ isLoading: boolean;
7
+ onPullDownRefresh?: () => void;
8
+ onPullUpLoading?: () => void;
9
+ }
10
+ export declare const useFlatList: (options: Options) => {
11
+ handlers: import("../../../../hooks/useSwipe").SwipeHookResult;
12
+ loadingType: LoadingType;
13
+ };
14
+ export {};
@@ -0,0 +1,86 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ import React from "react";
18
+ import { Direction } from "../../../../hooks/useSwipe";
19
+ import { useTransform } from "../../../../hooks/useTransform";
20
+ import { PULL_DOWN_REFRESH_THRESHOLD } from "../../type";
21
+ import { useBounceSwipe } from "./useBounceSwipe";
22
+ import { useElementScrollState } from "./useElementScrollState";
23
+ export var useFlatList = function (options) {
24
+ var contentRef = options.contentRef, animatedRef = options.animatedRef, isLoading = options.isLoading, onPullDownRefresh = options.onPullDownRefresh, onPullUpLoading = options.onPullUpLoading;
25
+ var startOffsetRef = React.useRef(0);
26
+ var _a = __read(React.useState(null), 2), loadingType = _a[0], setLoadingType = _a[1];
27
+ var loadingTypeRef = React.useRef(null);
28
+ loadingTypeRef.current = loadingType;
29
+ var isScrollable = useElementScrollState(contentRef).isScrollable;
30
+ var transit = useTransform(animatedRef);
31
+ var transitRef = React.useRef(transit);
32
+ transitRef.current = transit;
33
+ var reset = React.useCallback(function () {
34
+ startOffsetRef.current = 0;
35
+ }, []);
36
+ var handlers = useBounceSwipe({
37
+ axis: "vertical",
38
+ contentRef: contentRef,
39
+ animatedRef: animatedRef,
40
+ onStart: function (_a) {
41
+ var _b = __read(_a.delta, 2), y = _b[1];
42
+ startOffsetRef.current = y;
43
+ },
44
+ onEnd: function (_a) {
45
+ var delta = _a.delta, direction = _a.direction, boundary = _a.boundary;
46
+ if (isLoading) {
47
+ if (boundary !== "upper") {
48
+ transit.to({
49
+ y: PULL_DOWN_REFRESH_THRESHOLD,
50
+ });
51
+ }
52
+ }
53
+ else {
54
+ if (Math.abs(startOffsetRef.current - delta[1]) >= PULL_DOWN_REFRESH_THRESHOLD) {
55
+ var scrollable = isScrollable("vertical");
56
+ if (boundary === "upper" || (!scrollable && direction === Direction.DOWN)) {
57
+ setLoadingType("refresh");
58
+ onPullDownRefresh === null || onPullDownRefresh === void 0 ? void 0 : onPullDownRefresh();
59
+ }
60
+ else {
61
+ setLoadingType("loading");
62
+ onPullUpLoading === null || onPullUpLoading === void 0 ? void 0 : onPullUpLoading();
63
+ }
64
+ }
65
+ }
66
+ reset();
67
+ },
68
+ onCancel: reset,
69
+ });
70
+ React.useEffect(function () {
71
+ if (isLoading) {
72
+ if (loadingTypeRef.current === "refresh") {
73
+ transitRef.current.to({
74
+ y: PULL_DOWN_REFRESH_THRESHOLD,
75
+ immediate: false,
76
+ });
77
+ }
78
+ }
79
+ else {
80
+ transitRef.current.clear();
81
+ setLoadingType(null);
82
+ }
83
+ }, [isLoading]);
84
+ return { handlers: handlers, loadingType: loadingType };
85
+ };
86
+ //# sourceMappingURL=useFlatList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFlatList.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/hooks/useFlatList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This hook prevent loading state causing ui to flash
3
+ * For instance, in real life loading only last for 50ms, so it make loading ui appear in a blink of an eye, which is not good
4
+ * Hook will only delay the loading state change from true to false, it force loading ui at least appear for a period of time
5
+ * @param loading
6
+ * @param delay
7
+ * @returns
8
+ */
9
+ export declare const useLoadingWithDelay: (loading: boolean, delay: number) => Readonly<boolean>;
@@ -0,0 +1,52 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ import React from "react";
18
+ /**
19
+ * This hook prevent loading state causing ui to flash
20
+ * For instance, in real life loading only last for 50ms, so it make loading ui appear in a blink of an eye, which is not good
21
+ * Hook will only delay the loading state change from true to false, it force loading ui at least appear for a period of time
22
+ * @param loading
23
+ * @param delay
24
+ * @returns
25
+ */
26
+ export var useLoadingWithDelay = function (loading, delay) {
27
+ var _a = __read(React.useState(loading), 2), loadingWithDelay = _a[0], setLoadingWithDelay = _a[1];
28
+ var startTimeRef = React.useRef(null);
29
+ var setLoadingRef = React.useRef();
30
+ var setLoading = React.useCallback(function (value) {
31
+ if (value) {
32
+ setLoadingWithDelay(true);
33
+ startTimeRef.current = Date.now();
34
+ setTimeout(function () { return (startTimeRef.current = null); }, delay);
35
+ }
36
+ else {
37
+ if (startTimeRef.current) {
38
+ setTimeout(function () { return setLoadingWithDelay(false); }, Math.abs(delay - (Date.now() - startTimeRef.current)));
39
+ }
40
+ else {
41
+ setLoadingWithDelay(value);
42
+ }
43
+ }
44
+ }, [delay]);
45
+ setLoadingRef.current = setLoading;
46
+ React.useEffect(function () {
47
+ var _a;
48
+ (_a = setLoadingRef.current) === null || _a === void 0 ? void 0 : _a.call(setLoadingRef, loading);
49
+ }, [loading]);
50
+ return loadingWithDelay;
51
+ };
52
+ //# sourceMappingURL=useLoadingWithDelay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadingWithDelay.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/hooks/useLoadingWithDelay.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,OAAgB,EAAE,KAAa;IACzD,IAAA,KAAA,OAA0C,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAA,EAAhE,gBAAgB,QAAA,EAAE,mBAAmB,QAA2B,CAAC;IACxE,IAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAC;IACvD,IAAM,aAAa,GAAG,KAAK,CAAC,MAAM,EAA4B,CAAC;IAE/D,IAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAChC,UAAC,KAAc;QACX,IAAI,KAAK,EAAE;YACP,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC1B,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,UAAU,CAAC,cAAM,OAAA,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,EAA7B,CAA6B,EAAE,KAAK,CAAC,CAAC;SAC1D;aAAM;YACH,IAAI,YAAY,CAAC,OAAO,EAAE;gBACtB,UAAU,CAAC,cAAM,OAAA,mBAAmB,CAAC,KAAK,CAAC,EAA1B,CAA0B,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACvG;iBAAM;gBACH,mBAAmB,CAAC,KAAK,CAAC,CAAC;aAC9B;SACJ;IACL,CAAC,EACD,CAAC,KAAK,CAAC,CACV,CAAC;IAEF,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;IAEnC,KAAK,CAAC,SAAS,CAAC;;QACZ,MAAA,aAAa,CAAC,OAAO,8DAAG,OAAO,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,gBAAgB,CAAC;AAC5B,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /// <reference types="react" />
2
+ export declare const PULL_DOWN_REFRESH_THRESHOLD = 50;
3
+ export declare type LoadingType = "refresh" | "loading" | null;
4
+ export interface FlatListItemProps<T> {
5
+ data: T;
6
+ index: number;
7
+ }
8
+ export declare type ItemRenderer<T> = React.FunctionComponent<FlatListItemProps<T>>;
9
+ export interface FlatListProps<T> {
10
+ data: T[];
11
+ renderItem: ItemRenderer<T>;
12
+ loading?: boolean;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ onPullUpLoading?: () => void;
16
+ onPullDownRefresh?: () => void;
17
+ autoLoad?: boolean | number;
18
+ emptyPlaceholder?: string | React.ReactElement;
19
+ contentStyle?: React.CSSProperties;
20
+ bounceEffect?: boolean;
21
+ pullUpLoadingMessage?: string;
22
+ endOfListMessage?: string;
23
+ pullDownRefreshMessage?: string;
24
+ }
25
+ export interface FlatListItemProps<T> {
26
+ data: T;
27
+ index: number;
28
+ }
29
+ export interface FooterData {
30
+ loading: boolean;
31
+ ended: boolean;
32
+ loadingMessage?: string;
33
+ endMessage?: string;
34
+ }
@@ -0,0 +1,2 @@
1
+ export var PULL_DOWN_REFRESH_THRESHOLD = 50;
2
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/core/FlatList/type.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,2BAA2B,GAAG,EAAE,CAAC"}
@@ -1,14 +1,13 @@
1
1
  import React from "react";
2
- import type { ColumnFixedPosition, VirtualTableColumn } from "./type";
3
- import type { StickyPosition } from "./useStickyPosition";
2
+ import type { ColumnFixedPosition, VirtualTableColumn, StickyPosition } from "./type";
4
3
  interface Props<RowType extends object> {
5
4
  headersRef: React.RefObject<HTMLDivElement>;
6
5
  headerHeight: number;
7
- transformedColumns: VirtualTableColumn<RowType>[];
6
+ columns: VirtualTableColumn<RowType>[];
8
7
  stickyPosition: Record<number, StickyPosition>;
9
8
  getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
10
9
  }
11
- export declare const TableHeader: (<RowType extends object>({ headersRef, headerHeight, transformedColumns, stickyPosition, getFixedColumnClassNames }: Props<RowType>) => JSX.Element) & {
10
+ export declare const TableHeader: (<RowType extends object>({ headersRef, headerHeight, columns, stickyPosition, getFixedColumnClassNames }: Props<RowType>) => JSX.Element) & {
12
11
  displayName: string;
13
12
  };
14
13
  export {};
@@ -25,8 +25,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  };
26
26
  import React from "react";
27
27
  export var TableHeader = Object.assign(function (_a) {
28
- var headersRef = _a.headersRef, headerHeight = _a.headerHeight, transformedColumns = _a.transformedColumns, stickyPosition = _a.stickyPosition, getFixedColumnClassNames = _a.getFixedColumnClassNames;
29
- return (React.createElement("div", { className: "table-headers", ref: headersRef, style: { height: headerHeight, width: scrollX || "100%" } }, transformedColumns.map(function (_a, columnIndex) {
28
+ var headersRef = _a.headersRef, headerHeight = _a.headerHeight, columns = _a.columns, stickyPosition = _a.stickyPosition, getFixedColumnClassNames = _a.getFixedColumnClassNames;
29
+ return (React.createElement("div", { className: "table-headers", ref: headersRef, style: { height: headerHeight, width: scrollX || "100%" } }, columns.map(function (_a, columnIndex) {
30
30
  var _b;
31
31
  var title = _a.title, width = _a.width, align = _a.align, fixed = _a.fixed, display = _a.display;
32
32
  var stickyPositionValue = ((_b = stickyPosition[columnIndex]) === null || _b === void 0 ? void 0 : _b.value) || 0;
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,CAAC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CACpC,UAAkC,EAAwG;QAAvG,UAAU,gBAAA,EAAE,YAAY,kBAAA,EAAE,kBAAkB,wBAAA,EAAE,cAAc,oBAAA,EAAE,wBAAwB,8BAAA;IACrH,OAAO,CACH,6BAAK,SAAS,EAAC,eAAe,EAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,EAAC,IAClG,kBAAkB,CAAC,GAAG,CAAC,UAAC,EAAqC,EAAE,WAAW;;YAAjD,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,OAAO,aAAA;QACzD,IAAM,mBAAmB,GAAG,CAAA,MAAA,cAAc,CAAC,WAAW,CAAC,0CAAE,KAAK,KAAI,CAAC,CAAC;QACpE,OAAO,CACH,6BACI,SAAS,EAAE,eAAC,cAAc,UAAK,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,UAAE,IAAI,CAAC,GAAG,CAAC,EACtF,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;gBACH,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBAC/C,IAAI,EAAE,cAAO,KAAK,OAAI;gBACtB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;gBACxD,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;aAC7D,IAEA,KAAK,CACJ,CACT,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC,EACD;IACI,WAAW,EAAE,aAAa;CAC7B,CACJ,CAAC"}
1
+ {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,MAAM,CAAC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CACpC,UAAkC,EAA6F;QAA5F,UAAU,gBAAA,EAAE,YAAY,kBAAA,EAAE,OAAO,aAAA,EAAE,cAAc,oBAAA,EAAE,wBAAwB,8BAAA;IAC1G,OAAO,CACH,6BAAK,SAAS,EAAC,eAAe,EAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,EAAC,IAClG,OAAO,CAAC,GAAG,CAAC,UAAC,EAAqC,EAAE,WAAW;;YAAjD,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,OAAO,aAAA;QAC9C,IAAM,mBAAmB,GAAG,CAAA,MAAA,cAAc,CAAC,WAAW,CAAC,0CAAE,KAAK,KAAI,CAAC,CAAC;QACpE,OAAO,CACH,6BACI,SAAS,EAAE,eAAC,cAAc,UAAK,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,UAAE,IAAI,CAAC,GAAG,CAAC,EACtF,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;gBACH,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBAC/C,IAAI,EAAE,cAAO,KAAK,OAAI;gBACtB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;gBACxD,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;aAC7D,IAEA,KAAK,CACJ,CACT,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC,EACD;IACI,WAAW,EAAE,aAAa;CAC7B,CACJ,CAAC"}
@@ -1,20 +1,21 @@
1
1
  /// <reference types="react" />
2
2
  import type { VirtualItem } from "react-virtual";
3
- import type { ColumnFixedPosition, VirtualTableColumn } from "./type";
4
- import type { StickyPosition } from "./useStickyPosition";
3
+ import type { ColumnFixedPosition, VirtualTableColumn, VirtualTableRowExpand, StickyPosition } from "./type";
5
4
  interface Props<RowType extends object> {
6
- dataSource: RowType[];
7
- transformedColumns: VirtualTableColumn<RowType>[];
5
+ data: RowType;
6
+ columns: VirtualTableColumn<RowType>[];
8
7
  virtualItem: VirtualItem;
9
8
  columnWidths: number[];
9
+ rowHeight: number;
10
10
  lastShownColumnIndex: number;
11
11
  scrollBarSize: number;
12
12
  stickyPosition: Record<number, StickyPosition>;
13
13
  getFixedColumnClassNames: (fixed: ColumnFixedPosition | undefined, columnIndex: number) => (string | undefined)[];
14
14
  rowClassName?: string;
15
- onRowClick?: (record: RowType, rowIndex: number) => number;
15
+ onRowClick?: (record: RowType, rowIndex: number) => void;
16
+ rowExpand?: VirtualTableRowExpand<RowType>;
16
17
  }
17
- export declare const TableRow: (<RowType extends object>({ virtualItem, getFixedColumnClassNames, dataSource, transformedColumns, columnWidths, scrollBarSize, stickyPosition, lastShownColumnIndex, rowClassName, onRowClick, }: Props<RowType>) => JSX.Element) & {
18
+ export declare const TableRow: (<RowType extends object>({ virtualItem, getFixedColumnClassNames, data, columns, columnWidths, rowHeight, scrollBarSize, stickyPosition, lastShownColumnIndex, rowClassName, onRowClick, rowExpand, }: Props<RowType>) => JSX.Element) & {
18
19
  displayName: string;
19
20
  };
20
21
  export {};
@@ -25,25 +25,34 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  };
26
26
  import React from "react";
27
27
  export var TableRow = Object.assign(function (_a) {
28
- var virtualItem = _a.virtualItem, getFixedColumnClassNames = _a.getFixedColumnClassNames, dataSource = _a.dataSource, transformedColumns = _a.transformedColumns, columnWidths = _a.columnWidths, scrollBarSize = _a.scrollBarSize, stickyPosition = _a.stickyPosition, lastShownColumnIndex = _a.lastShownColumnIndex, rowClassName = _a.rowClassName, onRowClick = _a.onRowClick;
28
+ var virtualItem = _a.virtualItem, getFixedColumnClassNames = _a.getFixedColumnClassNames, data = _a.data, columns = _a.columns, columnWidths = _a.columnWidths, rowHeight = _a.rowHeight, scrollBarSize = _a.scrollBarSize, stickyPosition = _a.stickyPosition, lastShownColumnIndex = _a.lastShownColumnIndex, rowClassName = _a.rowClassName, onRowClick = _a.onRowClick, rowExpand = _a.rowExpand;
29
+ var rowRef = React.useRef(null);
30
+ var _b = __read(React.useState((rowExpand === null || rowExpand === void 0 ? void 0 : rowExpand.isDefaultExpanded) || false), 2), isExpanded = _b[0], setIsExpanded = _b[1];
29
31
  var rowIndex = virtualItem.index;
30
- var currentData = dataSource[rowIndex];
31
- return (React.createElement("div", { key: rowIndex, className: ["table-row", rowClassName, rowIndex % 2 ? "odd" : "even"].join(" "), style: { height: virtualItem.size, transform: "translateY(".concat(virtualItem.start, "px)") }, onClick: function () { return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(currentData, rowIndex); } }, transformedColumns.map(function (column, columnIndex) {
32
- var _a;
33
- var colSpan = column.colSpan ? column.colSpan(currentData, rowIndex, columnIndex) : 1;
34
- // handle colspan > 1
35
- var cellWidth = colSpan > 1 ? columnWidths.slice(columnIndex, columnIndex + colSpan).reduce(function (acc, curr) { return acc + curr; }, 0) : columnWidths[columnIndex] || column.width;
36
- var renderData = column.display !== "hidden" && column.renderData(currentData, rowIndex);
37
- // minus the scroll bar size of the last column & minus the scroll bar size in the right sticky value of the right fixed columns
38
- var isLastShownColumn = lastShownColumnIndex === columnIndex;
39
- var stickyPositionValue = ((_a = stickyPosition[columnIndex]) === null || _a === void 0 ? void 0 : _a.value) || 0;
40
- return (renderData && (React.createElement("div", { className: __spreadArray(["table-cell"], __read(getFixedColumnClassNames(column.fixed, columnIndex)), false).join(" "), key: columnIndex, style: {
41
- height: "100%",
42
- width: cellWidth - (isLastShownColumn ? scrollBarSize : 0),
43
- textAlign: column.align,
44
- left: column.fixed === "left" ? stickyPositionValue : undefined,
45
- right: column.fixed === "right" ? stickyPositionValue - (isLastShownColumn ? 0 : scrollBarSize) : undefined,
46
- } }, renderData)));
47
- })));
32
+ var toggleExpendRow = React.useCallback(function () { return setIsExpanded(!isExpanded); }, [isExpanded]);
33
+ React.useEffect(function () {
34
+ if (rowRef.current) {
35
+ virtualItem.measureRef(rowRef.current);
36
+ }
37
+ }, [isExpanded, virtualItem]);
38
+ return (React.createElement("div", { ref: rowRef, key: rowIndex, className: ["table-row", rowClassName, rowIndex % 2 ? "odd" : "even"].join(" "), style: { transform: "translateY(".concat(virtualItem.start, "px)") }, onClick: function () { return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(data, rowIndex); } },
39
+ columns.map(function (column, columnIndex) {
40
+ var _a;
41
+ var colSpan = column.colSpan ? column.colSpan(data, rowIndex, columnIndex) : 1;
42
+ // handle colspan > 1
43
+ var cellWidth = colSpan > 1 ? columnWidths.slice(columnIndex, columnIndex + colSpan).reduce(function (acc, curr) { return acc + curr; }, 0) : columnWidths[columnIndex] || column.width;
44
+ var renderData = column.display !== "hidden" && (rowExpand && columnIndex === columns.length - 1 ? React.createElement(rowExpand.ExpandButton, { onClick: toggleExpendRow }) : column.renderData(data, rowIndex));
45
+ // minus the scroll bar size of the last column & minus the scroll bar size in the right sticky value of the right fixed columns
46
+ var isLastShownColumn = lastShownColumnIndex === columnIndex;
47
+ var stickyPositionValue = ((_a = stickyPosition[columnIndex]) === null || _a === void 0 ? void 0 : _a.value) || 0;
48
+ return (renderData && (React.createElement("div", { className: __spreadArray(["table-cell"], __read(getFixedColumnClassNames(column.fixed, columnIndex)), false).join(" "), key: columnIndex, style: {
49
+ height: rowHeight,
50
+ width: cellWidth - (isLastShownColumn ? scrollBarSize : 0),
51
+ textAlign: column.align,
52
+ left: column.fixed === "left" ? stickyPositionValue : undefined,
53
+ right: column.fixed === "right" ? stickyPositionValue - (isLastShownColumn ? 0 : scrollBarSize) : undefined,
54
+ } }, renderData)));
55
+ }),
56
+ rowExpand && React.createElement("div", { className: "expand-row ".concat(isExpanded ? "expanded" : "") }, rowExpand.renderExpandRow(data, rowIndex))));
48
57
  }, { displayName: "TableRow" });
49
58
  //# sourceMappingURL=TableRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableRow.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/core/VirtualTable/TableRow.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,MAAM,CAAC,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CACjC,UAAkC,EAajB;QAZb,WAAW,iBAAA,EACX,wBAAwB,8BAAA,EACxB,IAAI,UAAA,EACJ,OAAO,aAAA,EACP,YAAY,kBAAA,EACZ,SAAS,eAAA,EACT,aAAa,mBAAA,EACb,cAAc,oBAAA,EACd,oBAAoB,0BAAA,EACpB,YAAY,kBAAA,EACZ,UAAU,gBAAA,EACV,SAAS,eAAA;IAET,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC5C,IAAA,KAAA,OAA8B,KAAK,CAAC,QAAQ,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,iBAAiB,KAAI,KAAK,CAAC,IAAA,EAAlF,UAAU,QAAA,EAAE,aAAa,QAAyD,CAAC;IAC1F,IAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;IAEnC,IAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,cAAM,OAAA,aAAa,CAAC,CAAC,UAAU,CAAC,EAA1B,CAA0B,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1F,KAAK,CAAC,SAAS,CAAC;QACZ,IAAI,MAAM,CAAC,OAAO,EAAE;YAChB,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC1C;IACL,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAE9B,OAAO,CACH,6BACI,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC/E,KAAK,EAAE,EAAC,SAAS,EAAE,qBAAc,WAAW,CAAC,KAAK,QAAK,EAAC,EACxD,OAAO,EAAE,cAAM,OAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,IAAI,EAAE,QAAQ,CAAC,EAA5B,CAA4B;QAE1C,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,WAAW;;YAC7B,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,qBAAqB;YACrB,IAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,EAAV,CAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;YAExK,IAAM,UAAU,GACZ,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,SAAS,IAAI,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAC,SAAS,CAAC,YAAY,IAAC,OAAO,EAAE,eAAe,GAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAChL,gIAAgI;YAChI,IAAM,iBAAiB,GAAG,oBAAoB,KAAK,WAAW,CAAC;YAC/D,IAAM,mBAAmB,GAAG,CAAA,MAAA,cAAc,CAAC,WAAW,CAAC,0CAAE,KAAK,KAAI,CAAC,CAAC;YAEpE,OAAO,CACH,UAAU,IAAI,CACV,6BACI,SAAS,EAAE,eAAC,YAAY,UAAK,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,UAAE,IAAI,CAAC,GAAG,CAAC,EAC3F,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;oBACH,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,SAAS,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1D,SAAS,EAAE,MAAM,CAAC,KAAK;oBACvB,IAAI,EAAE,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;oBAC/D,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC9G,IAEA,UAAU,CACT,CACT,CACJ,CAAC;QACN,CAAC,CAAC;QACD,SAAS,IAAI,6BAAK,SAAS,EAAE,qBAAc,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAE,IAAG,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAO,CAC3H,CACT,CAAC;AACN,CAAC,EACD,EAAC,WAAW,EAAE,UAAU,EAAC,CAC5B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnWidths.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useColumnWidths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AAEH,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,UAA2C;IACjE,IAAA,KAAA,OAA4B,KAAK,CAAC,QAAQ,CAAW,EAAE,CAAC,IAAA,EAAvD,SAAS,QAAA,EAAE,YAAY,QAAgC,CAAC;IAE/D,IAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO;QAChC,IAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACrE,IAAM,MAAM,GAAa,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,MAAM;YAC5D,IAAA,KAAK,GAAI,MAAM,CAAC,qBAAqB,EAAE,MAAlC,CAAmC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,EAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,oBAAA,EAAC,CAAC;AACzD,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.js","sourceRoot":"","sources":["../../../../src/core/VirtualTable/hooks/useDebounce.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,IAAM,WAAW,GAAG,UAA+B,QAAkC;IACxF,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAU,CAAC;IAErC,IAAM,QAAQ,GAAG;QACb,OAAO;YAAU,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YAC3B,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;gBAC9B,QAAQ,wCAAI,IAAI,WAAE;YACtB,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,cAAM,OAAA,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAA3B,CAA2B,EAAjC,CAAiC,EAAE,EAAE,CAAC,CAAC;IAC7D,2FAA2F;IAC3F,OAAO,KAAK,CAAC,OAAO,CAAC,cAAM,OAAA,QAAQ,EAAE,EAAV,CAAU,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { VirtualTableColumn } from "./type";
2
+ import type { VirtualTableColumn } from "../type";
3
3
  interface Props<RowType extends object> {
4
4
  headersRef: React.RefObject<HTMLDivElement>;
5
5
  scrollContentRef: React.RefObject<HTMLDivElement>;
@@ -9,6 +9,9 @@ interface Props<RowType extends object> {
9
9
  export declare const useLayout: <RowType extends object>({ headersRef, scrollContentRef, isScrollable, columns }: Props<RowType>) => {
10
10
  columnWidths: number[];
11
11
  scrollBarSize: number;
12
- stickyPosition: Record<number, import("./useStickyPosition").StickyPosition>;
12
+ stickyPosition: Record<number, import("../type").StickyPosition>;
13
+ isScrollToEdge: () => void;
14
+ isScrollToLeft: boolean;
15
+ isScrollToRight: boolean;
13
16
  };
14
17
  export {};
@@ -3,13 +3,16 @@ import { useDebounce } from "./useDebounce";
3
3
  import { useScrollBarSize } from "./useScrollBarSize";
4
4
  import { useColumnWidths } from "./useColumnWidths";
5
5
  import { useStickyPosition } from "./useStickyPosition";
6
+ import { useScrollToEdge } from "./useScrollToEdge";
6
7
  export var useLayout = function (_a) {
7
8
  var headersRef = _a.headersRef, scrollContentRef = _a.scrollContentRef, isScrollable = _a.isScrollable, columns = _a.columns;
8
9
  var _b = useColumnWidths(headersRef), calculateColWidths = _b.calculateColWidths, columnWidths = _b.columnWidths;
9
10
  var _c = useScrollBarSize(scrollContentRef, isScrollable), calculateScrollBarSize = _c.calculateScrollBarSize, scrollBarSize = _c.scrollBarSize;
11
+ var _d = useScrollToEdge(scrollContentRef), isScrollToEdge = _d.isScrollToEdge, isScrollToLeft = _d.isScrollToLeft, isScrollToRight = _d.isScrollToRight;
10
12
  var stickyPosition = useStickyPosition(columns, columnWidths);
11
13
  var debouncedCalculateColWidths = useDebounce(calculateColWidths);
12
14
  var debouncedCalculateScrollBarSize = useDebounce(calculateScrollBarSize);
15
+ var debouncedIsScrollToEdge = useDebounce(isScrollToEdge);
13
16
  var handler = React.useCallback(function (event) {
14
17
  if (event.currentTarget && "querySelector" in event.currentTarget && headersRef.current) {
15
18
  var element = event.currentTarget;
@@ -17,9 +20,10 @@ export var useLayout = function (_a) {
17
20
  if (result) {
18
21
  debouncedCalculateColWidths();
19
22
  debouncedCalculateScrollBarSize();
23
+ debouncedIsScrollToEdge();
20
24
  }
21
25
  }
22
- }, [debouncedCalculateColWidths, debouncedCalculateScrollBarSize, headersRef]);
26
+ }, [debouncedCalculateColWidths, debouncedCalculateScrollBarSize, headersRef, debouncedIsScrollToEdge]);
23
27
  React.useEffect(function () {
24
28
  document.body.addEventListener("transitionend", handler);
25
29
  document.body.addEventListener("animationend", handler);
@@ -32,6 +36,9 @@ export var useLayout = function (_a) {
32
36
  columnWidths: columnWidths,
33
37
  scrollBarSize: scrollBarSize,
34
38
  stickyPosition: stickyPosition,
39
+ isScrollToEdge: isScrollToEdge,
40
+ isScrollToLeft: isScrollToLeft,
41
+ isScrollToRight: isScrollToRight,
35
42
  };
36
43
  };
37
44
  //# sourceMappingURL=useLayout.js.map