@pinnacle0/web-ui 0.4.10-beta.1 → 0.4.10

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 (78) hide show
  1. package/admin/AdminApp/Navigator.js +12 -10
  2. package/admin/AdminApp/Navigator.js.map +1 -1
  3. package/admin/AdminApp/RouteSwitch.js +1 -1
  4. package/admin/AdminApp/RouteSwitch.js.map +1 -1
  5. package/core/FlatList/VirtualFlatList/Item.d.ts +11 -0
  6. package/core/FlatList/VirtualFlatList/Item.js +20 -0
  7. package/core/FlatList/VirtualFlatList/Item.js.map +1 -0
  8. package/core/FlatList/VirtualFlatList/index.d.ts +8 -0
  9. package/core/FlatList/VirtualFlatList/index.js +111 -0
  10. package/core/FlatList/VirtualFlatList/index.js.map +1 -0
  11. package/core/FlatList/VirtualFlatList/index.less +22 -0
  12. package/core/FlatList/VirtualFlatList/type.d.ts +20 -0
  13. package/core/FlatList/VirtualFlatList/type.js +2 -0
  14. package/core/FlatList/VirtualFlatList/type.js.map +1 -0
  15. package/core/FlatList/index.d.ts +1 -3
  16. package/core/FlatList/index.js +27 -76
  17. package/core/FlatList/index.js.map +1 -1
  18. package/core/FlatList/shared/Footer/index.d.ts +8 -0
  19. package/core/FlatList/shared/Footer/index.js +13 -0
  20. package/core/FlatList/shared/Footer/index.js.map +1 -0
  21. package/core/FlatList/{Content → shared}/Footer/index.less +3 -2
  22. package/core/FlatList/shared/GetRowKey.d.ts +2 -0
  23. package/core/FlatList/shared/GetRowKey.js +12 -0
  24. package/core/FlatList/shared/GetRowKey.js.map +1 -0
  25. package/core/FlatList/{Refresh → shared/Spinner}/index.d.ts +1 -1
  26. package/core/FlatList/shared/Spinner/index.js +10 -0
  27. package/core/FlatList/shared/Spinner/index.js.map +1 -0
  28. package/core/FlatList/shared/Spinner/index.less +13 -0
  29. package/core/FlatList/shared/Wrapper/Loading.d.ts +8 -0
  30. package/core/FlatList/shared/Wrapper/Loading.js +7 -0
  31. package/core/FlatList/shared/Wrapper/Loading.js.map +1 -0
  32. package/core/FlatList/shared/Wrapper/index.d.ts +14 -0
  33. package/core/FlatList/shared/Wrapper/index.js +109 -0
  34. package/core/FlatList/shared/Wrapper/index.js.map +1 -0
  35. package/core/FlatList/shared/Wrapper/index.less +33 -0
  36. package/core/FlatList/shared/hooks/useBounceSwipe.d.ts +22 -0
  37. package/core/FlatList/shared/hooks/useBounceSwipe.js +111 -0
  38. package/core/FlatList/shared/hooks/useBounceSwipe.js.map +1 -0
  39. package/core/FlatList/shared/hooks/useElementScrollState.d.ts +8 -0
  40. package/core/FlatList/shared/hooks/useElementScrollState.js +38 -0
  41. package/core/FlatList/shared/hooks/useElementScrollState.js.map +1 -0
  42. package/core/FlatList/shared/hooks/useLoadingWithDelay.d.ts +9 -0
  43. package/core/FlatList/shared/hooks/useLoadingWithDelay.js +52 -0
  44. package/core/FlatList/shared/hooks/useLoadingWithDelay.js.map +1 -0
  45. package/core/FlatList/type.d.ts +37 -69
  46. package/core/FlatList/type.js +1 -1
  47. package/core/FlatList/type.js.map +1 -1
  48. package/core/VirtualList.d.ts +0 -3
  49. package/core/VirtualList.js +4 -7
  50. package/core/VirtualList.js.map +1 -1
  51. package/hooks/useSwipe/controller.js +0 -1
  52. package/hooks/useSwipe/controller.js.map +1 -1
  53. package/hooks/useSwipe/type.d.ts +0 -1
  54. package/hooks/useSwipe/type.js.map +1 -1
  55. package/package.json +2 -4
  56. package/core/FlatList/Content/Footer/index.d.ts +0 -10
  57. package/core/FlatList/Content/Footer/index.js +0 -11
  58. package/core/FlatList/Content/Footer/index.js.map +0 -1
  59. package/core/FlatList/Content/index.d.ts +0 -9
  60. package/core/FlatList/Content/index.js +0 -71
  61. package/core/FlatList/Content/index.js.map +0 -1
  62. package/core/FlatList/Loader/index.d.ts +0 -3
  63. package/core/FlatList/Loader/index.js +0 -9
  64. package/core/FlatList/Loader/index.js.map +0 -1
  65. package/core/FlatList/Loader/index.less +0 -39
  66. package/core/FlatList/Refresh/index.js +0 -8
  67. package/core/FlatList/Refresh/index.js.map +0 -1
  68. package/core/FlatList/Refresh/index.less +0 -22
  69. package/core/FlatList/index.less +0 -38
  70. package/core/FlatList/useGap.d.ts +0 -2
  71. package/core/FlatList/useGap.js +0 -12
  72. package/core/FlatList/useGap.js.map +0 -1
  73. package/core/FlatList/util.d.ts +0 -8
  74. package/core/FlatList/util.js +0 -35
  75. package/core/FlatList/util.js.map +0 -1
  76. package/internal/polyfill/IntersectionObserver.d.ts +0 -1
  77. package/internal/polyfill/IntersectionObserver.js +0 -5
  78. package/internal/polyfill/IntersectionObserver.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import type { FlatListProps, LoadingType } from "../../type";
3
+ import "./index.less";
4
+ interface Props<T> extends Pick<FlatListProps<T>, "loading" | "bounceEffect" | "onPullUpLoading" | "onPullDownRefresh" | "className" | "style" | "pullDownRefreshMessage" | "pullDownRefreshingMessage"> {
5
+ children: React.ReactNode;
6
+ listWrapperRef: React.RefObject<HTMLDivElement>;
7
+ loadingType: LoadingType;
8
+ onLoadingTypeChange: (type: LoadingType) => void;
9
+ innerClassName?: string;
10
+ innerStyle?: React.CSSProperties;
11
+ onScroll?: (event: React.UIEvent) => void;
12
+ }
13
+ export declare const Wrapper: <T>(props: Props<T>) => JSX.Element;
14
+ export {};
@@ -0,0 +1,109 @@
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 { classNames } from "../../../../util/ClassNames";
30
+ import { Direction } from "../../../../hooks/useSwipe";
31
+ import { useTransform } from "../../../../hooks/useTransform";
32
+ import { useBounceSwipe } from "../hooks/useBounceSwipe";
33
+ import { useElementScrollState } from "../hooks/useElementScrollState";
34
+ import { PULL_DOWN_REFRESH_THRESHOLD } from "../../type";
35
+ import { Loading } from "./Loading";
36
+ import "./index.less";
37
+ export var Wrapper = function (props) {
38
+ var children = props.children, bounceEffect = props.bounceEffect, listWrapperRef = props.listWrapperRef, loadingType = props.loadingType, onLoadingTypeChange = props.onLoadingTypeChange, _a = props.loading, loading = _a === void 0 ? false : _a, onPullDownRefresh = props.onPullDownRefresh, onPullUpLoading = props.onPullUpLoading, className = props.className, innerClassName = props.innerClassName, style = props.style, innerStyle = props.innerStyle, pullDownRefreshMessage = props.pullDownRefreshMessage, pullDownRefreshingMessage = props.pullDownRefreshingMessage, onScroll = props.onScroll;
39
+ var startOffsetRef = React.useRef(0);
40
+ var animatedRef = React.useRef(null);
41
+ var loadingTypeRef = React.useRef(null);
42
+ loadingTypeRef.current = loadingType;
43
+ var onLoadingTypeChangeRef = React.useRef(onLoadingTypeChange);
44
+ onLoadingTypeChangeRef.current = onLoadingTypeChange;
45
+ var isScrollable = useElementScrollState(listWrapperRef).isScrollable;
46
+ var transform = useTransform(animatedRef);
47
+ var transformRef = React.useRef(transform);
48
+ transformRef.current = transform;
49
+ var reset = React.useCallback(function () {
50
+ startOffsetRef.current = 0;
51
+ }, []);
52
+ var handlers = useBounceSwipe({
53
+ axis: "vertical",
54
+ contentRef: listWrapperRef,
55
+ animatedRef: animatedRef,
56
+ onStart: function (_a) {
57
+ var _b = __read(_a.delta, 2), y = _b[1];
58
+ startOffsetRef.current = y;
59
+ },
60
+ onEnd: function (_a) {
61
+ var delta = _a.delta, direction = _a.direction, boundary = _a.boundary;
62
+ if (loading) {
63
+ if (boundary !== "upper") {
64
+ transform.to({
65
+ y: PULL_DOWN_REFRESH_THRESHOLD,
66
+ });
67
+ }
68
+ }
69
+ else {
70
+ if (Math.abs(startOffsetRef.current - delta[1]) >= PULL_DOWN_REFRESH_THRESHOLD) {
71
+ var scrollable = isScrollable("vertical");
72
+ if (boundary === "upper" || (!scrollable && direction === Direction.DOWN)) {
73
+ onLoadingTypeChange("refresh");
74
+ onPullDownRefresh === null || onPullDownRefresh === void 0 ? void 0 : onPullDownRefresh();
75
+ }
76
+ else {
77
+ onLoadingTypeChange("loading");
78
+ onPullUpLoading === null || onPullUpLoading === void 0 ? void 0 : onPullUpLoading();
79
+ }
80
+ }
81
+ }
82
+ reset();
83
+ },
84
+ onCancel: reset,
85
+ });
86
+ var handleScroll = React.useCallback(function (e) {
87
+ transformRef.current.clear();
88
+ onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);
89
+ }, [onScroll]);
90
+ React.useEffect(function () {
91
+ if (loading) {
92
+ if (loadingTypeRef.current === "refresh") {
93
+ transformRef.current.to({
94
+ y: PULL_DOWN_REFRESH_THRESHOLD,
95
+ immediate: false,
96
+ });
97
+ }
98
+ }
99
+ else {
100
+ transformRef.current.clear();
101
+ onLoadingTypeChangeRef.current(null);
102
+ }
103
+ }, [loading]);
104
+ return (React.createElement("div", __assign({ className: classNames(className, "g-flat-list-wrapper"), style: style }, (bounceEffect ? handlers : {})),
105
+ React.createElement("div", { className: classNames("inner-container", innerClassName), style: innerStyle, ref: animatedRef },
106
+ React.createElement(Loading, { loading: loading && loadingType === "refresh", message: pullDownRefreshMessage, loadingMessage: pullDownRefreshingMessage }),
107
+ React.createElement("div", { className: "list-wrapper", ref: listWrapperRef, onScroll: handleScroll }, children))));
108
+ };
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/Wrapper/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAC,SAAS,EAAC,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAC,2BAA2B,EAAC,MAAM,YAAY,CAAC;AACvD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,cAAc,CAAC;AAatB,MAAM,CAAC,IAAM,OAAO,GAAG,UAAa,KAAe;IAE3C,IAAA,QAAQ,GAeR,KAAK,SAfG,EACR,YAAY,GAcZ,KAAK,aAdO,EACZ,cAAc,GAad,KAAK,eAbS,EACd,WAAW,GAYX,KAAK,YAZM,EACX,mBAAmB,GAWnB,KAAK,oBAXc,EACnB,KAUA,KAAK,QAVU,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,iBAAiB,GASjB,KAAK,kBATY,EACjB,eAAe,GAQf,KAAK,gBARU,EACf,SAAS,GAOT,KAAK,UAPI,EACT,cAAc,GAMd,KAAK,eANS,EACd,KAAK,GAKL,KAAK,MALA,EACL,UAAU,GAIV,KAAK,WAJK,EACV,sBAAsB,GAGtB,KAAK,uBAHiB,EACtB,yBAAyB,GAEzB,KAAK,0BAFoB,EACzB,QAAQ,GACR,KAAK,SADG,CACF;IACV,IAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvC,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEvD,IAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IACvD,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;IAErC,IAAM,sBAAsB,GAAG,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACjE,sBAAsB,CAAC,OAAO,GAAG,mBAAmB,CAAC;IAE9C,IAAA,YAAY,GAAI,qBAAqB,CAAC,cAAc,CAAC,aAAzC,CAA0C;IAC7D,IAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC;IAEjC,IAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;QAC5B,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,QAAQ,GAAG,cAAc,CAAC;QAC5B,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,cAAc;QAC1B,WAAW,aAAA;QACX,OAAO,EAAE,UAAC,EAAc;gBAAb,KAAA,mBAAY,EAAF,CAAC,QAAA;YAClB,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,EAAE,UAAC,EAA4B;gBAA3B,KAAK,WAAA,EAAE,SAAS,eAAA,EAAE,QAAQ,cAAA;YAC/B,IAAI,OAAO,EAAE;gBACT,IAAI,QAAQ,KAAK,OAAO,EAAE;oBACtB,SAAS,CAAC,EAAE,CAAC;wBACT,CAAC,EAAE,2BAA2B;qBACjC,CAAC,CAAC;iBACN;aACJ;iBAAM;gBACH,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,2BAA2B,EAAE;oBAC5E,IAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC5C,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,UAAU,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE;wBACvE,mBAAmB,CAAC,SAAS,CAAC,CAAC;wBAC/B,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,EAAI,CAAC;qBACzB;yBAAM;wBACH,mBAAmB,CAAC,SAAS,CAAC,CAAC;wBAC/B,eAAe,aAAf,eAAe,uBAAf,eAAe,EAAI,CAAC;qBACvB;iBACJ;aACJ;YACD,KAAK,EAAE,CAAC;QACZ,CAAC;QACD,QAAQ,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAClC,UAAC,CAAgB;QACb,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC,CAAC;IAClB,CAAC,EACD,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC;QACZ,IAAI,OAAO,EAAE;YACT,IAAI,cAAc,CAAC,OAAO,KAAK,SAAS,EAAE;gBACtC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;oBACpB,CAAC,EAAE,2BAA2B;oBAC9B,SAAS,EAAE,KAAK;iBACnB,CAAC,CAAC;aACN;SACJ;aAAM;YACH,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7B,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACxC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACH,sCAAK,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,IAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,6BAAK,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW;YAC9F,oBAAC,OAAO,IAAC,OAAO,EAAE,OAAO,IAAI,WAAW,KAAK,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,yBAAyB,GAAI;YACtI,6BAAK,SAAS,EAAC,cAAc,EAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,IACpE,QAAQ,CACP,CACJ,CACJ,CACT,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ .g-flat-list-wrapper {
2
+ flex: 1;
3
+ overflow: hidden;
4
+ position: relative;
5
+ display: flex;
6
+ flex-flow: column;
7
+
8
+ .inner-container {
9
+ flex: 1;
10
+ transition: all 300ms cubic-bezier(0, 0.61, 0.28, 1.22);
11
+ max-height: 100%;
12
+ will-change: transform;
13
+
14
+ .list-wrapper {
15
+ width: 100%;
16
+ height: 100%;
17
+ overflow: auto;
18
+ }
19
+ }
20
+
21
+ .g-flat-list-loading {
22
+ width: 100%;
23
+ padding: 8px;
24
+ display: flex;
25
+ justify-content: center;
26
+ align-items: center;
27
+ position: fixed;
28
+ left: 0;
29
+ min-height: 50px;
30
+ will-change: transform;
31
+ transform: translateY(-100%);
32
+ }
33
+ }
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import type { SwipeHookResult, SwipeState } from "../../../../hooks/useSwipe";
3
+ export type Boundary = "upper" | "lower" | null;
4
+ interface BounceSwipeState extends SwipeState {
5
+ boundary: Boundary;
6
+ }
7
+ export type BounceSwipeHandler = (state: BounceSwipeState) => void;
8
+ type BounceSwipeHookResult = SwipeHookResult;
9
+ interface BounceSwipeHandlers {
10
+ onMove?: BounceSwipeHandler;
11
+ onStart?: BounceSwipeHandler;
12
+ onEnd?: BounceSwipeHandler;
13
+ onCancel?: BounceSwipeHandler;
14
+ }
15
+ interface BounceSwipeOption extends BounceSwipeHandlers {
16
+ axis: "vertical" | "horizontal";
17
+ contentRef: React.RefObject<HTMLElement>;
18
+ animatedRef: React.RefObject<HTMLElement>;
19
+ baseOffset?: number;
20
+ }
21
+ export declare const useBounceSwipe: (options: BounceSwipeOption) => BounceSwipeHookResult;
22
+ export {};
@@ -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 transform = 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
+ transform.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
+ transform.clear();
101
+ clearSwipe();
102
+ },
103
+ onCancel: function (state) {
104
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel(__assign(__assign({}, state), { boundary: boundary }));
105
+ transform.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,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"}
@@ -1,80 +1,48 @@
1
- import type React from "react";
2
- export type Boundary = "top" | "bottom";
3
- export type Gap = number | {
4
- top?: number;
5
- bottom?: number;
6
- left?: number;
7
- right?: number;
8
- };
1
+ /// <reference types="react" />
2
+ export declare const PULL_DOWN_REFRESH_THRESHOLD = 50;
3
+ export type LoadingType = "refresh" | "loading" | null;
9
4
  export interface FlatListItemProps<T> {
10
5
  data: T;
11
6
  index: number;
12
7
  }
8
+ export type Gap = {
9
+ top?: number;
10
+ bottom?: number;
11
+ left?: number;
12
+ right?: number;
13
+ } | number;
14
+ export type ItemRenderer<T> = React.FunctionComponent<FlatListItemProps<T>>;
15
+ export type RowKey<T> = (keyof T & string) | ((data: T, index: number) => string) | "index";
13
16
  export interface FlatListProps<T> {
14
- /**
15
- * List of data to show in the list
16
- */
17
17
  data: T[];
18
- /**
19
- * Specify key for each `item` using Object key of type `T`
20
- */
21
- rowKey: keyof T | "index";
22
- /**
23
- * A component render for each item
24
- */
25
- renderItem: React.ComponentType<FlatListItemProps<T>>;
26
- /**
27
- * Set this to true when waiting for new data by pull down refresh
28
- */
29
- refreshing?: boolean;
30
- /**
31
- * Set this to true when waiting for new data by pull down refresh
32
- */
18
+ renderItem: ItemRenderer<T>;
19
+ rowKey: RowKey<T>;
33
20
  loading?: boolean;
34
- /**
35
- * If Provided, `Refresh` component will be loaded into the FlatList, you can also specify your own Refresh component using `refresh` props
36
- */
37
- onPullDownRefresh?: () => void;
38
- /**
39
- * If Provided, `Footer` component will be loaded into the FlatList, you can also specify your own Refresh component using `footer` props
40
- */
21
+ className?: string;
22
+ style?: React.CSSProperties;
23
+ /** When either onPullUpLoading or onPullDownRefresh is given, loading must be given too */
41
24
  onPullUpLoading?: () => void;
42
- /**
43
- * If Provided, Element will be shown when `data` is a empty array
44
- */
25
+ onPullDownRefresh?: () => void;
45
26
  emptyPlaceholder?: string | React.ReactElement;
46
- /**
47
- * if Provided, default `Footer` component will be replaced
48
- */
49
- Footer?: React.ComponentType<{
50
- loading: boolean;
51
- }>;
52
- /**
53
- * `refresh` component will be shown when `refreshing` is equal `true`
54
- * if Provided, default `Refresh` component will be replaced
55
- */
56
- Refresh?: React.ComponentType<{
57
- loading: boolean;
58
- }>;
59
- /**
60
- * `pullUpMessage` will be show in `Refresh` only if `onPullDownRefresh` is defined
61
- * if Provided, this message will replace the pull down message in default `Refresh`
62
- * if `Refresh` is provided, this props will be ignored
63
- */
64
- pullDownMessage?: string;
65
- /**
66
- * `pullUpMessage` will be show in `Footer` only if `onPullUpLoading` is defined
67
- * if Provided, this message will replace end of list message in default `Footer`
68
- * if `Footer` is provided, this props will be ignored
69
- */
70
- pullUpMessage?: string;
71
- /**
72
- * if Provided, this message will replace end of list message in default `Footer`
73
- * if `Footer` is provided, this props will be ignored
74
- */
75
- endOfListMessage?: string;
76
- /**
77
- * Set margin for each item
78
- */
27
+ contentStyle?: React.CSSProperties;
28
+ bounceEffect?: boolean;
29
+ hideFooter?: boolean;
79
30
  gap?: Gap;
31
+ pullDownRefreshMessage?: React.ReactElement | string;
32
+ pullDownRefreshingMessage?: React.ReactElement | string;
33
+ pullUpLoadMoreMessage?: React.ReactElement | string;
34
+ pullUpLoadingMessage?: React.ReactElement | string;
35
+ endOfListMessage?: React.ReactElement | string;
36
+ }
37
+ export interface FlatListItemProps<T> {
38
+ data: T;
39
+ index: number;
40
+ }
41
+ export interface FooterData {
42
+ __markedAsFooterData: true;
43
+ loading: boolean;
44
+ ended: boolean;
45
+ loadMoreMessage?: React.ReactElement | string;
46
+ loadingMessage?: React.ReactElement | string;
47
+ endMessage?: React.ReactElement | string;
80
48
  }
@@ -1,2 +1,2 @@
1
- export {};
1
+ export var PULL_DOWN_REFRESH_THRESHOLD = 50;
2
2
  //# sourceMappingURL=type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/core/FlatList/type.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/core/FlatList/type.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,2BAA2B,GAAG,EAAE,CAAC"}
@@ -21,8 +21,5 @@ export interface Props<T extends object> {
21
21
  observeElementRect?: VirtualizerOptions<HTMLElement, HTMLElement>["observeElementRect"];
22
22
  observeElementOffset?: VirtualizerOptions<HTMLElement, HTMLElement>["observeElementOffset"];
23
23
  }
24
- /**
25
- * Efficiently rendering large lists and tabular data
26
- */
27
24
  export declare function VirtualList<T extends object>({ data, rowKey, direction, renderData, overscan, initialRect, observeElementOffset, fixedSize, observeElementRect, }: Props<T>): JSX.Element;
28
25
  export {};
@@ -13,9 +13,6 @@ import "../internal/polyfill/ResizeObserver";
13
13
  import React from "react";
14
14
  import { useVirtualizer, observeElementOffset as defaultObserveElementOffset, observeElementRect as defaultObserveElementRect } from "@tanstack/react-virtual";
15
15
  var DEFAULT_ITEM_SIZE = 100;
16
- /**
17
- * Efficiently rendering large lists and tabular data
18
- */
19
16
  export function VirtualList(_a) {
20
17
  var data = _a.data, _b = _a.rowKey, rowKey = _b === void 0 ? "index" : _b, _c = _a.direction, direction = _c === void 0 ? "vertical" : _c, renderData = _a.renderData, _d = _a.overscan, overscan = _d === void 0 ? 5 : _d, _e = _a.initialRect, initialRect = _e === void 0 ? { width: 0, height: 0 } : _e, observeElementOffset = _a.observeElementOffset, fixedSize = _a.fixedSize, observeElementRect = _a.observeElementRect;
21
18
  var Item = renderData;
@@ -35,13 +32,13 @@ export function VirtualList(_a) {
35
32
  var virtualizerRef = React.useRef(virtualizer);
36
33
  virtualizerRef.current = virtualizer;
37
34
  var getItemKey = function (index) { return (rowKey === "index" ? index : data[index][rowKey]); };
38
- return (React.createElement("div", { className: "g-virtual-list", ref: parentRef, style: { flex: 1, width: "100%", height: "100%", overflow: "auto" } },
35
+ return (React.createElement("div", { className: "g-virtual-list", ref: parentRef, style: { width: "100%", height: "100%", overflow: "auto" } },
39
36
  React.createElement("div", { className: "g-virtual-list-inner", style: {
40
- position: "relative",
41
37
  height: horizontal ? "100%" : virtualizer.getTotalSize(),
42
38
  width: horizontal ? virtualizer.getTotalSize() : "100%",
43
- } }, virtualizer.getVirtualItems().map(function (virtualRow) { return (React.createElement("div", { className: "g-virtual-list-item", key: getItemKey(virtualRow.index), ref: virtualizer.measureElement, "data-index": virtualRow.index, style: __assign({ position: "absolute", top: 0, left: 0, transform: horizontal ? "translateX(".concat(virtualRow.start, "px)") : "translateY(".concat(virtualRow.start, "px)") }, sizeStyle) },
44
- React.createElement("div", { className: "g-virtual-list-item-wrapper", style: __assign({}, sizeStyle) },
39
+ position: "relative",
40
+ } }, virtualizer.getVirtualItems().map(function (virtualRow) { return (React.createElement("div", { className: "g-virtual-list-item", key: getItemKey(virtualRow.index), style: __assign({ position: "absolute", top: 0, left: 0, transform: horizontal ? "translateX(".concat(virtualRow.start, "px)") : "translateY(".concat(virtualRow.start, "px)") }, sizeStyle) },
41
+ React.createElement("div", { className: "g-virtual-list-item-wrapper", "data-index": virtualRow.index, ref: virtualizer.measureElement, style: __assign({}, sizeStyle) },
45
42
  React.createElement(Item, { data: data[virtualRow.index], index: virtualRow.index })))); }))));
46
43
  }
47
44
  //# sourceMappingURL=VirtualList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualList.js","sourceRoot":"","sources":["../../src/core/VirtualList.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,qCAAqC,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,cAAc,EAAE,oBAAoB,IAAI,2BAA2B,EAAE,kBAAkB,IAAI,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AAK7J,IAAM,iBAAiB,GAAG,GAAG,CAAC;AAqB9B;;GAEG;AACH,MAAM,UAAU,WAAW,CAAmB,EAUnC;QATP,IAAI,UAAA,EACJ,cAAgB,EAAhB,MAAM,mBAAG,OAAO,KAAA,EAChB,iBAAsB,EAAtB,SAAS,mBAAG,UAAU,KAAA,EACtB,UAAU,gBAAA,EACV,gBAAY,EAAZ,QAAQ,mBAAG,CAAC,KAAA,EACZ,mBAAmC,EAAnC,WAAW,mBAAG,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,KAAA,EACnC,oBAAoB,0BAAA,EACpB,SAAS,eAAA,EACT,kBAAkB,wBAAA;IAElB,IAAM,IAAI,GAAG,UAAU,CAAC;IACxB,IAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC5D,IAAM,UAAU,GAAG,SAAS,KAAK,YAAY,CAAC;IAC9C,IAAM,SAAS,GAAwB,UAAU,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;IACvF,IAAM,WAAW,GAAG,cAAc,CAA2B;QACzD,WAAW,aAAA;QACX,UAAU,YAAA;QACV,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,gBAAgB,EAAE,cAAM,OAAA,SAAS,CAAC,OAAO,EAAjB,CAAiB;QACzC,YAAY,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,CAAC,cAAM,OAAA,iBAAiB,EAAjB,CAAiB,CAAC;QACpD,oBAAoB,EAAE,oBAAoB,aAApB,oBAAoB,cAApB,oBAAoB,GAAI,2BAA2B;QACzE,kBAAkB,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,yBAAyB;QACnE,QAAQ,UAAA;KACX,CAAC,CAAC;IAEH,IAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;IAErC,IAAM,UAAU,GAAG,UAAC,KAAa,IAAK,OAAA,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAlD,CAAkD,CAAC;IAEzF,OAAO,CACH,6BAAK,SAAS,EAAC,gBAAgB,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAC;QAC7G,6BACI,SAAS,EAAC,sBAAsB,EAChC,KAAK,EAAE;gBACH,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE;gBACxD,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM;aAC1D,IAEA,WAAW,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,UAAA,UAAU,IAAI,OAAA,CAC7C,6BACI,SAAS,EAAC,qBAAqB,EAC/B,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAoB,EACpD,GAAG,EAAE,WAAW,CAAC,cAAc,gBACnB,UAAU,CAAC,KAAK,EAC5B,KAAK,aACD,QAAQ,EAAE,UAAU,EACpB,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAc,UAAU,CAAC,KAAK,QAAK,CAAC,CAAC,CAAC,qBAAc,UAAU,CAAC,KAAK,QAAK,IAC9F,SAAS;YAGhB,6BAAK,SAAS,EAAC,6BAA6B,EAAC,KAAK,eAAM,SAAS;gBAC7D,oBAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,GAAI,CAC7D,CACJ,CACT,EAlBgD,CAkBhD,CAAC,CACA,CACJ,CACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"VirtualList.js","sourceRoot":"","sources":["../../src/core/VirtualList.tsx"],"names":[],"mappings":"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"}
@@ -10,7 +10,6 @@ var Controller = /** @class */ (function () {
10
10
  this.config = {};
11
11
  }
12
12
  Controller.prototype.onTouchStart = function (e) {
13
- this.config.stopPropagation && e.stopPropagation();
14
13
  if (e.changedTouches[0] && !this.startTouch) {
15
14
  this.startTouch = e.changedTouches[0];
16
15
  this.startTime = Date.now();