@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.
Files changed (82) hide show
  1. package/admin/AdminApp/Menu.d.ts +8 -46
  2. package/admin/AdminApp/Menu.js +120 -144
  3. package/admin/AdminApp/Menu.js.map +1 -1
  4. package/admin/AdminApp/Navigator.d.ts +5 -28
  5. package/admin/AdminApp/Navigator.js +89 -142
  6. package/admin/AdminApp/Navigator.js.map +1 -1
  7. package/admin/AdminApp/RouteSwitch.js +2 -1
  8. package/admin/AdminApp/RouteSwitch.js.map +1 -1
  9. package/core/FlatList/VirtualFlatList/Item.d.ts +11 -0
  10. package/core/FlatList/VirtualFlatList/Item.js +20 -0
  11. package/core/FlatList/VirtualFlatList/Item.js.map +1 -0
  12. package/core/FlatList/VirtualFlatList/index.d.ts +8 -0
  13. package/core/FlatList/VirtualFlatList/index.js +111 -0
  14. package/core/FlatList/VirtualFlatList/index.js.map +1 -0
  15. package/core/FlatList/VirtualFlatList/index.less +22 -0
  16. package/core/FlatList/VirtualFlatList/type.d.ts +20 -0
  17. package/core/FlatList/VirtualFlatList/type.js +2 -0
  18. package/core/FlatList/VirtualFlatList/type.js.map +1 -0
  19. package/core/FlatList/index.d.ts +1 -3
  20. package/core/FlatList/index.js +27 -76
  21. package/core/FlatList/index.js.map +1 -1
  22. package/core/FlatList/shared/Footer/index.d.ts +8 -0
  23. package/core/FlatList/shared/Footer/index.js +13 -0
  24. package/core/FlatList/shared/Footer/index.js.map +1 -0
  25. package/core/FlatList/{Content → shared}/Footer/index.less +3 -2
  26. package/core/FlatList/shared/GetRowKey.d.ts +2 -0
  27. package/core/FlatList/shared/GetRowKey.js +12 -0
  28. package/core/FlatList/shared/GetRowKey.js.map +1 -0
  29. package/core/FlatList/{Refresh → shared/Spinner}/index.d.ts +1 -1
  30. package/core/FlatList/shared/Spinner/index.js +10 -0
  31. package/core/FlatList/shared/Spinner/index.js.map +1 -0
  32. package/core/FlatList/shared/Spinner/index.less +13 -0
  33. package/core/FlatList/shared/Wrapper/Loading.d.ts +8 -0
  34. package/core/FlatList/shared/Wrapper/Loading.js +7 -0
  35. package/core/FlatList/shared/Wrapper/Loading.js.map +1 -0
  36. package/core/FlatList/shared/Wrapper/index.d.ts +14 -0
  37. package/core/FlatList/shared/Wrapper/index.js +109 -0
  38. package/core/FlatList/shared/Wrapper/index.js.map +1 -0
  39. package/core/FlatList/shared/Wrapper/index.less +33 -0
  40. package/core/FlatList/shared/hooks/useBounceSwipe.d.ts +22 -0
  41. package/core/FlatList/shared/hooks/useBounceSwipe.js +111 -0
  42. package/core/FlatList/shared/hooks/useBounceSwipe.js.map +1 -0
  43. package/core/FlatList/shared/hooks/useElementScrollState.d.ts +8 -0
  44. package/core/FlatList/shared/hooks/useElementScrollState.js +38 -0
  45. package/core/FlatList/shared/hooks/useElementScrollState.js.map +1 -0
  46. package/core/FlatList/shared/hooks/useLoadingWithDelay.d.ts +9 -0
  47. package/core/FlatList/shared/hooks/useLoadingWithDelay.js +52 -0
  48. package/core/FlatList/shared/hooks/useLoadingWithDelay.js.map +1 -0
  49. package/core/FlatList/type.d.ts +37 -69
  50. package/core/FlatList/type.js +1 -1
  51. package/core/FlatList/type.js.map +1 -1
  52. package/hooks/useSwipe/controller.js +0 -1
  53. package/hooks/useSwipe/controller.js.map +1 -1
  54. package/hooks/useSwipe/type.d.ts +0 -1
  55. package/hooks/useSwipe/type.js.map +1 -1
  56. package/package.json +2 -4
  57. package/util/AdminNavigationUtil.d.ts +3 -3
  58. package/util/AdminNavigationUtil.js +4 -27
  59. package/util/AdminNavigationUtil.js.map +1 -1
  60. package/core/FlatList/Content/Footer/index.d.ts +0 -10
  61. package/core/FlatList/Content/Footer/index.js +0 -11
  62. package/core/FlatList/Content/Footer/index.js.map +0 -1
  63. package/core/FlatList/Content/index.d.ts +0 -9
  64. package/core/FlatList/Content/index.js +0 -71
  65. package/core/FlatList/Content/index.js.map +0 -1
  66. package/core/FlatList/Loader/index.d.ts +0 -3
  67. package/core/FlatList/Loader/index.js +0 -9
  68. package/core/FlatList/Loader/index.js.map +0 -1
  69. package/core/FlatList/Loader/index.less +0 -39
  70. package/core/FlatList/Refresh/index.js +0 -8
  71. package/core/FlatList/Refresh/index.js.map +0 -1
  72. package/core/FlatList/Refresh/index.less +0 -22
  73. package/core/FlatList/index.less +0 -36
  74. package/core/FlatList/useGap.d.ts +0 -2
  75. package/core/FlatList/useGap.js +0 -12
  76. package/core/FlatList/useGap.js.map +0 -1
  77. package/core/FlatList/util.d.ts +0 -8
  78. package/core/FlatList/util.js +0 -35
  79. package/core/FlatList/util.js.map +0 -1
  80. package/internal/polyfill/IntersectionObserver.d.ts +0 -1
  81. package/internal/polyfill/IntersectionObserver.js +0 -5
  82. package/internal/polyfill/IntersectionObserver.js.map +0 -1
@@ -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 { Direction } from "../../hooks/useSwipe";
30
- import { useSwipe, useTransform } from "../../hooks";
31
- import { getBounaryFromStartDirection, isExceededBounary, isScrollBottom, isScrollTop } from "./util";
32
- import { Refresh as DefaultRefresh } from "./Refresh";
33
- import { Content } from "./Content";
34
- import "./index.less";
35
- export * from "./type";
36
- var PULL_DOWN_REFRESH_THRESHOLD = 50;
37
- export var FlatList = function (_a) {
38
- var renderItem = _a.renderItem, data = _a.data, rowKey = _a.rowKey, gap = _a.gap, refreshing = _a.refreshing, _b = _a.loading, loading = _b === void 0 ? false : _b, onPullDownRefresh = _a.onPullDownRefresh, onPullUpLoading = _a.onPullUpLoading, emptyPlaceholder = _a.emptyPlaceholder, Refresh = _a.Refresh, Footer = _a.Footer, pullDownMessage = _a.pullDownMessage, pullUpMessage = _a.pullUpMessage, endOfListMessage = _a.endOfListMessage;
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 (refreshing && previousBoundary.current === "top") {
96
- previousBoundary.current === null;
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
- else {
100
- transitRef.current.clear();
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
- }, [refreshing]);
103
- return (React.createElement("div", __assign({ className: "g-flat-list" }, bind),
104
- React.createElement("div", { className: "g-flat-list-inner-wrapper", ref: animtedRef },
105
- onPullDownRefresh && refreshing !== undefined && (React.createElement("div", { className: "g-flat-list-refresh", ref: updateRefreshHeight }, Refresh ? React.createElement(Refresh, { loading: refreshing }) : React.createElement(DefaultRefresh, { loading: refreshing, message: onPullUpLoading ? pullDownMessage : undefined }))),
106
- React.createElement("div", { className: "g-flat-list-scrollable", ref: scrollRef, style: { overflow: startDelta ? "hidden" : undefined }, onScroll: onScroll },
107
- React.createElement(Content, { data: data, rowKey: rowKey, renderItem: renderItem, gap: gap, emptyPlaceholder: emptyPlaceholder, Footer: Footer, loading: loading, endOfListMessage: endOfListMessage, hasNextPageMessage: pullUpMessage, onPullUpLoading: onPullUpLoading })))));
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":"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"}
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"}
@@ -1,7 +1,8 @@
1
1
  .g-flat-list-footer {
2
+ width: 100%;
2
3
  display: flex;
3
- flex-flow: column nowrap;
4
+ flex-flow: row nowrap;
4
5
  justify-content: center;
5
6
  align-items: center;
6
- padding: 15px 0;
7
+ padding: 5px;
7
8
  }
@@ -0,0 +1,2 @@
1
+ import type { RowKey } from "../type";
2
+ export declare function GetRowKey<T>(rowKey: RowKey<T>, data: T, index: number): string | number;
@@ -0,0 +1,12 @@
1
+ export function GetRowKey(rowKey, data, index) {
2
+ if (rowKey === "index") {
3
+ return index;
4
+ }
5
+ else if (typeof rowKey === "function") {
6
+ return rowKey(data, index);
7
+ }
8
+ else {
9
+ return data[rowKey];
10
+ }
11
+ }
12
+ //# sourceMappingURL=GetRowKey.js.map
@@ -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"}
@@ -4,5 +4,5 @@ interface Props {
4
4
  loading: boolean;
5
5
  message?: string;
6
6
  }
7
- export declare const Refresh: ({ loading, message }: Props) => JSX.Element;
7
+ export declare const Spinner: (props: Props) => JSX.Element;
8
8
  export {};
@@ -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,13 @@
1
+ .g-flat-list-spinner {
2
+ position: relative;
3
+
4
+ .ant-spin {
5
+ position: absolute;
6
+ left: 0;
7
+ transform: translateX(-150%);
8
+
9
+ .anticon.ant-spin-dot {
10
+ font-size: 14px;
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ interface Props {
3
+ loading: boolean;
4
+ message?: React.ReactElement | string;
5
+ loadingMessage?: React.ReactElement | string;
6
+ }
7
+ export declare const Loading: (props: Props) => JSX.Element;
8
+ export {};
@@ -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
+ };