@pinnacle0/web-ui 0.4.9-beta.1 → 0.4.9
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/admin/AdminApp/Menu.d.ts +8 -46
- package/admin/AdminApp/Menu.js +120 -144
- package/admin/AdminApp/Menu.js.map +1 -1
- package/admin/AdminApp/Navigator.d.ts +5 -28
- package/admin/AdminApp/Navigator.js +89 -142
- package/admin/AdminApp/Navigator.js.map +1 -1
- package/admin/AdminApp/RouteSwitch.js +2 -1
- package/admin/AdminApp/RouteSwitch.js.map +1 -1
- package/core/FlatList/VirtualFlatList/Item.d.ts +11 -0
- package/core/FlatList/VirtualFlatList/Item.js +20 -0
- package/core/FlatList/VirtualFlatList/Item.js.map +1 -0
- package/core/FlatList/VirtualFlatList/index.d.ts +8 -0
- package/core/FlatList/VirtualFlatList/index.js +111 -0
- package/core/FlatList/VirtualFlatList/index.js.map +1 -0
- package/core/FlatList/VirtualFlatList/index.less +22 -0
- package/core/FlatList/VirtualFlatList/type.d.ts +20 -0
- package/core/FlatList/VirtualFlatList/type.js +2 -0
- package/core/FlatList/VirtualFlatList/type.js.map +1 -0
- package/core/FlatList/index.d.ts +1 -3
- package/core/FlatList/index.js +27 -76
- package/core/FlatList/index.js.map +1 -1
- package/core/FlatList/shared/Footer/index.d.ts +8 -0
- package/core/FlatList/shared/Footer/index.js +13 -0
- package/core/FlatList/shared/Footer/index.js.map +1 -0
- package/core/FlatList/{Content → shared}/Footer/index.less +3 -2
- package/core/FlatList/shared/GetRowKey.d.ts +2 -0
- package/core/FlatList/shared/GetRowKey.js +12 -0
- package/core/FlatList/shared/GetRowKey.js.map +1 -0
- package/core/FlatList/{Refresh → shared/Spinner}/index.d.ts +1 -1
- package/core/FlatList/shared/Spinner/index.js +10 -0
- package/core/FlatList/shared/Spinner/index.js.map +1 -0
- package/core/FlatList/shared/Spinner/index.less +13 -0
- package/core/FlatList/shared/Wrapper/Loading.d.ts +8 -0
- package/core/FlatList/shared/Wrapper/Loading.js +7 -0
- package/core/FlatList/shared/Wrapper/Loading.js.map +1 -0
- package/core/FlatList/shared/Wrapper/index.d.ts +14 -0
- package/core/FlatList/shared/Wrapper/index.js +109 -0
- package/core/FlatList/shared/Wrapper/index.js.map +1 -0
- package/core/FlatList/shared/Wrapper/index.less +33 -0
- package/core/FlatList/shared/hooks/useBounceSwipe.d.ts +22 -0
- package/core/FlatList/shared/hooks/useBounceSwipe.js +111 -0
- package/core/FlatList/shared/hooks/useBounceSwipe.js.map +1 -0
- package/core/FlatList/shared/hooks/useElementScrollState.d.ts +8 -0
- package/core/FlatList/shared/hooks/useElementScrollState.js +38 -0
- package/core/FlatList/shared/hooks/useElementScrollState.js.map +1 -0
- package/core/FlatList/shared/hooks/useLoadingWithDelay.d.ts +9 -0
- package/core/FlatList/shared/hooks/useLoadingWithDelay.js +52 -0
- package/core/FlatList/shared/hooks/useLoadingWithDelay.js.map +1 -0
- package/core/FlatList/type.d.ts +37 -69
- package/core/FlatList/type.js +1 -1
- package/core/FlatList/type.js.map +1 -1
- package/hooks/useSwipe/controller.js +0 -1
- package/hooks/useSwipe/controller.js.map +1 -1
- package/hooks/useSwipe/type.d.ts +0 -1
- package/hooks/useSwipe/type.js.map +1 -1
- package/package.json +2 -4
- package/util/AdminNavigationUtil.d.ts +3 -3
- package/util/AdminNavigationUtil.js +4 -27
- package/util/AdminNavigationUtil.js.map +1 -1
- package/core/FlatList/Content/Footer/index.d.ts +0 -10
- package/core/FlatList/Content/Footer/index.js +0 -11
- package/core/FlatList/Content/Footer/index.js.map +0 -1
- package/core/FlatList/Content/index.d.ts +0 -9
- package/core/FlatList/Content/index.js +0 -71
- package/core/FlatList/Content/index.js.map +0 -1
- package/core/FlatList/Loader/index.d.ts +0 -3
- package/core/FlatList/Loader/index.js +0 -9
- package/core/FlatList/Loader/index.js.map +0 -1
- package/core/FlatList/Loader/index.less +0 -39
- package/core/FlatList/Refresh/index.js +0 -8
- package/core/FlatList/Refresh/index.js.map +0 -1
- package/core/FlatList/Refresh/index.less +0 -22
- package/core/FlatList/index.less +0 -36
- package/core/FlatList/useGap.d.ts +0 -2
- package/core/FlatList/useGap.js +0 -12
- package/core/FlatList/useGap.js.map +0 -1
- package/core/FlatList/util.d.ts +0 -8
- package/core/FlatList/util.js +0 -35
- package/core/FlatList/util.js.map +0 -1
- package/internal/polyfill/IntersectionObserver.d.ts +0 -1
- package/internal/polyfill/IntersectionObserver.js +0 -5
- package/internal/polyfill/IntersectionObserver.js.map +0 -1
package/core/FlatList/index.js
CHANGED
|
@@ -26,84 +26,35 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
26
26
|
return ar;
|
|
27
27
|
};
|
|
28
28
|
import React from "react";
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var
|
|
37
|
-
|
|
38
|
-
var
|
|
39
|
-
var scrollRef = React.useRef(null);
|
|
40
|
-
var animtedRef = React.useRef(null);
|
|
41
|
-
var refreshHeight = React.useRef(0);
|
|
42
|
-
var previousBoundary = React.useRef(null);
|
|
43
|
-
var _c = __read(React.useState(null), 2), startDelta = _c[0], setStartDelta = _c[1];
|
|
44
|
-
var transit = useTransform(animtedRef, {
|
|
45
|
-
timingFunction: "cubic-bezier(0, 0.89, 0.26, 1.02)",
|
|
46
|
-
duration: 800,
|
|
47
|
-
});
|
|
48
|
-
var transitRef = React.useRef(transit);
|
|
49
|
-
transitRef.current = transit;
|
|
50
|
-
var threshold = function (_a) {
|
|
51
|
-
var direction = _a.direction;
|
|
52
|
-
var element = scrollRef.current;
|
|
53
|
-
if (!element)
|
|
54
|
-
return false;
|
|
55
|
-
if (direction === Direction.DOWN && isScrollTop(element)) {
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
else if (direction === Direction.UP && isScrollBottom(element)) {
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
return false;
|
|
62
|
-
};
|
|
63
|
-
var clear = function () {
|
|
64
|
-
transit.clear();
|
|
65
|
-
setStartDelta(null);
|
|
66
|
-
};
|
|
67
|
-
var bind = useSwipe({
|
|
68
|
-
onStart: function (_a) {
|
|
69
|
-
var _b = __read(_a.delta, 2), y = _b[1], direction = _a.direction;
|
|
70
|
-
setStartDelta(y);
|
|
71
|
-
previousBoundary.current = getBounaryFromStartDirection(direction);
|
|
72
|
-
},
|
|
73
|
-
onMove: function (_a) {
|
|
74
|
-
var _b = __read(_a.delta, 2), y = _b[1], cancel = _a.cancel;
|
|
75
|
-
if (!startDelta || !previousBoundary.current)
|
|
76
|
-
return;
|
|
77
|
-
var transform = y - startDelta;
|
|
78
|
-
transit.to({ y: transform, immediate: true });
|
|
79
|
-
isExceededBounary(transform, previousBoundary.current) && cancel();
|
|
80
|
-
},
|
|
81
|
-
onEnd: function (_a) {
|
|
82
|
-
var _b = __read(_a.delta, 2), y = _b[1];
|
|
83
|
-
if (!startDelta)
|
|
84
|
-
return;
|
|
85
|
-
if (previousBoundary.current === "top" && onPullDownRefresh && y - startDelta >= PULL_DOWN_REFRESH_THRESHOLD && !refreshing) {
|
|
86
|
-
onPullDownRefresh();
|
|
87
|
-
}
|
|
88
|
-
clear();
|
|
89
|
-
},
|
|
90
|
-
onCancel: clear,
|
|
91
|
-
}, { threshold: threshold, preventDefault: true, stopPropagation: true });
|
|
92
|
-
var onScroll = function () { return transit.clear(); };
|
|
93
|
-
var updateRefreshHeight = function (node) { return node && (refreshHeight.current = node.getBoundingClientRect().height); };
|
|
29
|
+
import { Wrapper } from "./shared/Wrapper";
|
|
30
|
+
import { Footer } from "./shared/Footer";
|
|
31
|
+
import { useLoadingWithDelay } from "./shared/hooks/useLoadingWithDelay";
|
|
32
|
+
import { classNames } from "../../util/ClassNames";
|
|
33
|
+
import { GetRowKey } from "./shared/GetRowKey";
|
|
34
|
+
export var FlatList = function (props) {
|
|
35
|
+
var data = props.data, ItemRenderer = props.renderItem, rowKey = props.rowKey, loading = props.loading, _a = props.bounceEffect, bounceEffect = _a === void 0 ? true : _a, className = props.className, style = props.style, gap = props.gap, onPullDownRefresh = props.onPullDownRefresh, onPullUpLoading = props.onPullUpLoading, contentStyle = props.contentStyle, emptyPlaceholder = props.emptyPlaceholder, pullDownRefreshingMessage = props.pullDownRefreshingMessage, pullUpLoadMoreMessage = props.pullUpLoadMoreMessage, pullDownRefreshMessage = props.pullDownRefreshMessage, pullUpLoadingMessage = props.pullUpLoadingMessage, endOfListMessage = props.endOfListMessage, hideFooter = props.hideFooter;
|
|
36
|
+
var listWrapperRef = React.useRef(null);
|
|
37
|
+
var _b = __read(React.useState(null), 2), loadingType = _b[0], setLoadingType = _b[1];
|
|
38
|
+
var loadingWithDelay = useLoadingWithDelay(loading !== null && loading !== void 0 ? loading : false, 250);
|
|
94
39
|
React.useEffect(function () {
|
|
95
|
-
if (
|
|
96
|
-
|
|
97
|
-
transitRef.current.to({ y: refreshHeight.current });
|
|
40
|
+
if ((loading === undefined || loading === null) && (onPullDownRefresh || onPullUpLoading)) {
|
|
41
|
+
throw new Error("Loading must be specify when given either onPullDownRefresh or onPullUpLoading");
|
|
98
42
|
}
|
|
99
|
-
|
|
100
|
-
|
|
43
|
+
}, [onPullDownRefresh, onPullUpLoading, loading]);
|
|
44
|
+
// Automatically loading new data when scroll near the bottom
|
|
45
|
+
var onScroll = function (e) {
|
|
46
|
+
if (!loadingWithDelay && onPullUpLoading) {
|
|
47
|
+
var _a = e.currentTarget, scrollHeight = _a.scrollHeight, scrollTop = _a.scrollTop, clientHeight = _a.clientHeight;
|
|
48
|
+
if (scrollHeight * 0.8 < clientHeight + scrollTop) {
|
|
49
|
+
setLoadingType("loading");
|
|
50
|
+
onPullUpLoading === null || onPullUpLoading === void 0 ? void 0 : onPullUpLoading();
|
|
51
|
+
}
|
|
101
52
|
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
React.createElement(
|
|
107
|
-
|
|
53
|
+
};
|
|
54
|
+
var margin = React.useMemo(function () { return (gap ? (typeof gap === "number" ? { margin: gap } : { marginLeft: gap.left, marginRight: gap.right, marginBottom: gap.bottom, marginTop: gap.top }) : {}); }, [gap]);
|
|
55
|
+
return (React.createElement(Wrapper, { className: classNames("g-flat-list", className), listWrapperRef: listWrapperRef, bounceEffect: bounceEffect, innerStyle: contentStyle, loadingType: loadingType, onLoadingTypeChange: setLoadingType, loading: loadingWithDelay, style: style, onPullDownRefresh: onPullDownRefresh, onPullUpLoading: onPullUpLoading, pullDownRefreshMessage: pullDownRefreshMessage, pullDownRefreshingMessage: pullDownRefreshingMessage, onScroll: onScroll }, data.length === 0 ? (emptyPlaceholder) : (React.createElement("div", { className: "list" },
|
|
56
|
+
data.map(function (d, i) { return (React.createElement("div", { className: "g-flat-list-item", key: GetRowKey(rowKey, d, i), style: __assign({}, margin) },
|
|
57
|
+
React.createElement(ItemRenderer, { data: d, index: i }))); }),
|
|
58
|
+
!hideFooter && (React.createElement(Footer, { loading: loadingWithDelay && loadingType === "loading", ended: !onPullUpLoading, loadMoreMessage: pullUpLoadMoreMessage, loadingMessage: pullUpLoadingMessage, endMessage: endOfListMessage }))))));
|
|
108
59
|
};
|
|
109
60
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/FlatList/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/FlatList/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Measure } from "../../VirtualFlatList/type";
|
|
3
|
+
import type { FooterData } from "../../type";
|
|
4
|
+
import "./index.less";
|
|
5
|
+
export interface Props extends Omit<FooterData, "__markedAsFooterData"> {
|
|
6
|
+
measure?: Measure;
|
|
7
|
+
}
|
|
8
|
+
export declare const Footer: (props: Props) => JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Spinner } from "../Spinner";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
export var Footer = function (props) {
|
|
5
|
+
var loading = props.loading, ended = props.ended, loadMoreMessage = props.loadMoreMessage, loadingMessage = props.loadingMessage, endMessage = props.endMessage, measure = props.measure;
|
|
6
|
+
var measureRef = React.useRef(measure);
|
|
7
|
+
measureRef.current = measure;
|
|
8
|
+
return (React.createElement("div", { className: "g-flat-list-footer", ref: measure },
|
|
9
|
+
loading && (typeof loadingMessage !== "object" ? React.createElement(Spinner, { loading: true, message: loadingMessage !== null && loadingMessage !== void 0 ? loadingMessage : "loading..." }) : loadingMessage),
|
|
10
|
+
ended && !loading && (endMessage !== null && endMessage !== void 0 ? endMessage : "All data loaded"),
|
|
11
|
+
!ended && !loading && (loadMoreMessage !== null && loadMoreMessage !== void 0 ? loadMoreMessage : "Pull up to loading more")));
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/Footer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AACnC,OAAO,cAAc,CAAC;AAMtB,MAAM,CAAC,IAAM,MAAM,GAAG,UAAC,KAAY;IACxB,IAAA,OAAO,GAAiE,KAAK,QAAtE,EAAE,KAAK,GAA0D,KAAK,MAA/D,EAAE,eAAe,GAAyC,KAAK,gBAA9C,EAAE,cAAc,GAAyB,KAAK,eAA9B,EAAE,UAAU,GAAa,KAAK,WAAlB,EAAE,OAAO,GAAI,KAAK,QAAT,CAAU;IACrF,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAE7B,OAAO,CACH,6BAAK,SAAS,EAAC,oBAAoB,EAAC,GAAG,EAAE,OAAO;QAC3C,OAAO,IAAI,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAC,OAAO,IAAC,OAAO,QAAC,OAAO,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,YAAY,GAAI,CAAC,CAAC,CAAC,cAAc,CAAC;QAC/H,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,iBAAiB,CAAC;QACtD,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,yBAAyB,CAAC,CACnE,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetRowKey.js","sourceRoot":"","sources":["../../../../src/core/FlatList/shared/GetRowKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAI,MAAiB,EAAE,IAAO,EAAE,KAAa;IAClE,IAAI,MAAM,KAAK,OAAO,EAAE;QACpB,OAAO,KAAK,CAAC;KAChB;SAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;QACrC,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC9B;SAAM;QACH,OAAO,IAAI,CAAC,MAAM,CAAQ,CAAC;KAC9B;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Spin } from "../../../Spin";
|
|
3
|
+
import "./index.less";
|
|
4
|
+
export var Spinner = function (props) {
|
|
5
|
+
var loading = props.loading, message = props.message;
|
|
6
|
+
return (React.createElement("div", { className: "g-flat-list-spinner" },
|
|
7
|
+
React.createElement(Spin, { spinning: loading, size: "small" }),
|
|
8
|
+
React.createElement("div", { className: "message" }, message)));
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/Spinner/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAC;AACnC,OAAO,cAAc,CAAC;AAOtB,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,KAAY;IACzB,IAAA,OAAO,GAAa,KAAK,QAAlB,EAAE,OAAO,GAAI,KAAK,QAAT,CAAU;IACjC,OAAO,CACH,6BAAK,SAAS,EAAC,qBAAqB;QAChC,oBAAC,IAAI,IAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,OAAO,GAAG;QACxC,6BAAK,SAAS,EAAC,SAAS,IAAE,OAAO,CAAO,CACtC,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Spinner } from "../Spinner";
|
|
3
|
+
export var Loading = function (props) {
|
|
4
|
+
var loading = props.loading, message = props.message, loadingMessage = props.loadingMessage;
|
|
5
|
+
return (React.createElement("div", { className: "g-flat-list-loading" }, loading ? typeof loadingMessage !== "object" ? React.createElement(Spinner, { loading: loading, message: loadingMessage !== null && loadingMessage !== void 0 ? loadingMessage : "loading..." }) : loadingMessage : message !== null && message !== void 0 ? message : "Release to refresh"));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=Loading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../../../../src/core/FlatList/shared/Wrapper/Loading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AAQnC,MAAM,CAAC,IAAM,OAAO,GAAG,UAAC,KAAY;IACzB,IAAA,OAAO,GAA6B,KAAK,QAAlC,EAAE,OAAO,GAAoB,KAAK,QAAzB,EAAE,cAAc,GAAI,KAAK,eAAT,CAAU;IACjD,OAAO,CACH,6BAAK,SAAS,EAAC,qBAAqB,IAC/B,OAAO,CAAC,CAAC,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAC,OAAO,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,YAAY,GAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,oBAAoB,CACvK,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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
|
+
};
|