UNPKG

@fruits-chain/react-native-xiaoshu

Version:
149 lines (148 loc) 5.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _index = _interopRequireDefault(require("../button/index.js")); var _index2 = require("../helpers/index.js"); var _index3 = require("../hooks/index.js"); var _index4 = _interopRequireDefault(require("../locale/index.js")); var _index5 = _interopRequireDefault(require("../result/index.js")); var _index6 = _interopRequireDefault(require("../space/index.js")); var _index7 = _interopRequireDefault(require("../theme/index.js")); var _progress = _interopRequireDefault(require("./progress.js")); var _style = require("./style.js"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } const ProgressPage = ({ children, theme, loading: loadingOut, backgroundColor, defaultPercentage = 10, fail, failMessage, failIcon, onPressReload, refreshText, failExtra, extraLoading, overlayZIndex = 1000, syncRenderChildren = false }) => { const locale = _index4.default.useLocale().ProgressPage; const [CV, STYLES] = _index7.default.useStyle({ varCreator: _style.varCreator, styleCreator: _style.styleCreator, theme }); backgroundColor = (0, _index2.getDefaultValue)(backgroundColor, CV.progress_page_background_color); const [state, setState] = (0, _react.useState)({ loading: loadingOut, percentage: defaultPercentage, duration: 0, animated: false }); const onAnimationEnd = (0, _react.useCallback)(n => { if (n === 100) { // 延迟更改状态更顺畅,进度条是完整走完的 setTimeout(() => { setState(s => ({ ...s, loading: false })); }, 0); } }, []); const onPressReloadPersistFn = (0, _index3.usePersistFn)(() => { onPressReload?.(); }); (0, _react.useEffect)(() => { setState(s => { const isReload = !s.loading && loadingOut; if (isReload) { return { ...s, loading: loadingOut, percentage: defaultPercentage, duration: 0, animated: false }; } return { ...s }; }); }, [defaultPercentage, loadingOut]); (0, _react.useEffect)(() => { // 做一个延迟,避免上下两次操作状态合并在一个中,reload 的时候丢失过渡状态 setTimeout(() => { setState(s => { return { ...s, percentage: loadingOut ? 90 : 100, duration: loadingOut ? 1500 : 100, animated: true }; }); }, 0); }, [loadingOut]); const placeholderStyle = { flex: 1, backgroundColor: backgroundColor }; const placeholderJSX = state.loading ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, { style: placeholderStyle, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_progress.default, { percentage: state.percentage, showPivot: false, animated: state.animated, animationDuration: state.duration, onAnimationEnd: onAnimationEnd, square: true }), extraLoading] }) : null; const errorJSX = !state.loading && fail ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index5.default, { style: STYLES.fail_page, status: "warning", subtitle: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_index6.default, { head: true, gap: "l", align: "center", children: [/*#__PURE__*/(0, _react.isValidElement)(failMessage) ? failMessage : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, { style: STYLES.text, children: failMessage ?? locale.failMessage }), onPressReload ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.default, { style: STYLES.btn, text: refreshText ?? locale.labelRefreshText, onPress: onPressReloadPersistFn }) : null, failExtra] }), renderIcon: () => { if (failIcon) { return failIcon; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index5.default.IconWarning, {}); } }) : null; if (syncRenderChildren) { return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [children, state.loading || fail ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, { style: { ..._reactNative.StyleSheet.absoluteFillObject, zIndex: overlayZIndex }, children: [placeholderJSX, errorJSX] }) : null] }); } return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [!loadingOut && !state.loading && !fail ? children : null, placeholderJSX, errorJSX] }); }; var _default = exports.default = /*#__PURE__*/(0, _react.memo)(ProgressPage); //# sourceMappingURL=progress-page.js.map