@flatbiz/pro-layout
Version:
1,524 lines (1,485 loc) • 184 kB
JavaScript
/* eslint-disable */
import './index.css';
/*! @flatjs/forge MIT @flatbiz/pro-layout */
import { App as App$1, Breadcrumb, FloatButton, Result, Button, Dropdown, Space, Menu, Badge, Layout, message as message$1, Tabs, Typography, theme } from 'antd';
import { classNames } from '@dimjs/utils/class-names/class-names';
import { useEffect, useMemo, Fragment, Children, cloneElement, forwardRef, useState, useImperativeHandle, isValidElement, Suspense, useRef, memo, Component } from 'react';
import { useParams, useLocation, useSearchParams, matchPath, Link, useNavigate, Routes, Route, Navigate, BrowserRouter } from 'react-router-dom';
import { sessionStorageCache, getRunningEnv, ensureSlash as ensureSlash$1, removeSlash, getGlobalData, toLinkPath, isHttpUri, toArray, urlJoinMulti, urlJoin, isWindows, valueIsEqual, toLinkPathWithQuery, openNewWindow, treeToArray, cloneObject, getUuid, EventEmitter, treeFilter, arrayFindByLoosely, arrayFindIndexByLoosely, isUndefinedOrNull, localStorageCache } from '@flatbiz/utils';
import { fbaHooks } from '@flatbiz/antd/fba-hooks';
import { parse } from '@dimjs/utils/json/parse';
import { useMemoizedFn, useUpdateEffect, useDebounceFn, useAsyncEffect } from 'ahooks';
import { isArray } from '@dimjs/lang/is-array';
import { pick } from '@dimjs/utils/pick/pick';
import { paramStrToJson } from '@dimjs/utils/uri/param-str-to-json';
import { jsx, jsxs } from 'react/jsx-runtime';
import { ButtonWrapper } from '@flatbiz/antd/button-wrapper';
import { isPromise } from '@dimjs/lang/is-promise';
import { modifyQueryString } from '@dimjs/utils/uri/modify-query-string';
import { uriParse } from '@dimjs/utils/uri/uri-parse';
import { isUndefined } from '@dimjs/lang/is-undefined';
import { isFragment } from 'react-is';
import { createRoot } from 'react-dom/client';
import { ConfigProviderWrapper } from '@flatbiz/antd/config-provider-wrapper';
import { FbaApp } from '@flatbiz/antd/fba-app';
import { getQueryString } from '@dimjs/utils/uri/get-query-string';
import { extend } from '@dimjs/utils/extend/extend';
import { get } from '@dimjs/utils/get/get';
import { isString } from '@dimjs/lang/is-string';
import _CloseOutlined from '@ant-design/icons/es/icons/CloseOutlined.js';
import { useMediaQuery } from 'react-responsive';
import { SvgHttpView } from '@flatbiz/antd/svg-http-view';
import { findAncestors } from '@dimjs/utils/tree/find-ancestors';
import { getEnvName } from '@dimjs/utils/env/get-env-name';
import { isPlainObject } from '@dimjs/lang/is-plain-object';
import _MenuFoldOutlined from '@ant-design/icons/es/icons/MenuFoldOutlined.js';
import _MenuUnfoldOutlined from '@ant-design/icons/es/icons/MenuUnfoldOutlined.js';
import _UserOutlined from '@ant-design/icons/es/icons/UserOutlined.js';
import _LogoutOutlined from '@ant-design/icons/es/icons/LogoutOutlined.js';
import { IconWrapper } from '@flatbiz/antd/icon-wrapper';
import { InputWrapper } from '@flatbiz/antd/input-wrapper';
import { Gap } from '@flatbiz/antd/gap';
import _CaretDownOutlined from '@ant-design/icons/es/icons/CaretDownOutlined.js';
import _LoadingOutlined from '@ant-design/icons/es/icons/LoadingOutlined.js';
import _RedoOutlined from '@ant-design/icons/es/icons/RedoOutlined.js';
import { arrayRemove } from '@dimjs/utils/array/array-remove';
var message;
var notification;
var modal;
var useAntdApp = (function () {
var staticFunction = App$1.useApp();
message = staticFunction.message;
modal = staticFunction.modal;
notification = staticFunction.notification;
return null;
});
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
}
function _arrayWithoutHoles(r) {
if (Array.isArray(r)) return _arrayLikeToArray(r);
}
function _assertThisInitialized(e) {
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return e;
}
function _callSuper(t, o, e) {
return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));
}
function _classCallCheck(a, n) {
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
}
function _defineProperties(e, r) {
for (var t = 0; t < r.length; t++) {
var o = r[t];
o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
}
}
function _createClass(e, r, t) {
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
writable: false
}), e;
}
function _defineProperty(e, r, t) {
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: true,
configurable: true,
writable: true
}) : e[r] = t, e;
}
function _getPrototypeOf(t) {
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
return t.__proto__ || Object.getPrototypeOf(t);
}, _getPrototypeOf(t);
}
function _inherits(t, e) {
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
t.prototype = Object.create(e && e.prototype, {
constructor: {
value: t,
writable: true,
configurable: true
}
}), Object.defineProperty(t, "prototype", {
writable: false
}), e && _setPrototypeOf(t, e);
}
function _isNativeReflectConstruct() {
try {
var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
} catch (t) {}
return (_isNativeReflectConstruct = function () {
return !!t;
})();
}
function _iterableToArray(r) {
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
}
function _iterableToArrayLimit(r, l) {
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = true,
o = false;
try {
if (i = (t = t.call(r)).next, 0 === l) {
if (Object(t) !== t) return;
f = !1;
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
} catch (r) {
o = true, n = r;
} finally {
try {
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function ownKeys(e, r) {
var t = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
r && (o = o.filter(function (r) {
return Object.getOwnPropertyDescriptor(e, r).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread2(e) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys(Object(t), true).forEach(function (r) {
_defineProperty(e, r, t[r]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
});
}
return e;
}
function _objectWithoutProperties(e, t) {
if (null == e) return {};
var o,
r,
i = _objectWithoutPropertiesLoose(e, t);
if (Object.getOwnPropertySymbols) {
var n = Object.getOwnPropertySymbols(e);
for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
}
return i;
}
function _objectWithoutPropertiesLoose(r, e) {
if (null == r) return {};
var t = {};
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
if (-1 !== e.indexOf(n)) continue;
t[n] = r[n];
}
return t;
}
function _possibleConstructorReturn(t, e) {
if (e && ("object" == typeof e || "function" == typeof e)) return e;
if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
return _assertThisInitialized(t);
}
function _setPrototypeOf(t, e) {
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
return t.__proto__ = e, t;
}, _setPrototypeOf(t, e);
}
function _slicedToArray(r, e) {
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
}
function _toConsumableArray(r) {
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
}
function _toPrimitive(t, r) {
if ("object" != typeof t || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r);
if ("object" != typeof i) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return (String )(t);
}
function _toPropertyKey(t) {
var i = _toPrimitive(t, "string");
return "symbol" == typeof i ? i : i + "";
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
}
}
var _fbaHooks$createCtx$1 = fbaHooks.createCtx(),
_fbaHooks$createCtx2$1 = _slicedToArray(_fbaHooks$createCtx$1, 2),
useLayoutCtx = _fbaHooks$createCtx2$1[0],
LayoutProvider = _fbaHooks$createCtx2$1[1];
var _fbaHooks$createCtx3 = fbaHooks.createCtx(),
_fbaHooks$createCtx4 = _slicedToArray(_fbaHooks$createCtx3, 2),
bootstrapCtx = _fbaHooks$createCtx4[0],
BootstrapCtx = _fbaHooks$createCtx4[1];
var IFrameEvents = /*#__PURE__*/function (IFrameEvents) {
/**
* 接收从子iframe通知过来的消息, 或者父window发出的通知的消息
*/
IFrameEvents["messageReceived"] = "messageReceived";
return IFrameEvents;
}({});
var IFRAME_EVENT_FLAG = "FLATBIZ-LAYOUT";
var IframeEventEmitter = /*#__PURE__*/function () {
function IframeEventEmitter() {
_classCallCheck(this, IframeEventEmitter);
_defineProperty(this, "events", {});
}
return _createClass(IframeEventEmitter, [{
key: "on",
value: function on(name, listener) {
if (!this.events[name]) {
this.events[name] = [];
}
this.events[name].push(listener);
return this;
}
}, {
key: "off",
value: function off(name, listenerToRemove) {
if (this.events[name]) {
this.events[name] = this.events[name].filter(function (listener) {
return listener !== listenerToRemove;
});
}
return this;
}
}, {
key: "emit",
value: function emit(name, data) {
var handlers = this.events[name] || [];
if (handlers.length) {
for (var index = 0; index < handlers.length; index++) {
var handler = handlers[index];
if (handler) {
handler(data);
}
}
}
return this;
}
}]);
}();
var iframeOpenNewTabItemOperateLinkKey = 'iframe-open-new-tab-item-operate-link';
/**
* 保存操作 OpenNewTabItem 链路
*/
var saveIframeOpenNewTabItemOperateLink = function saveIframeOpenNewTabItemOperateLink(params) {
var operateLinkData = sessionStorageCache.get(iframeOpenNewTabItemOperateLinkKey);
var dataList = isArray(operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList) ? operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList : [];
dataList.push(params);
sessionStorageCache.set(iframeOpenNewTabItemOperateLinkKey, {
dataList: dataList
});
};
/**
* 删除操作 OpenNewTabItem 链路
* @param startTabId 目标 tabId
* @param isReverse 是否反向删除
* @returns
*/
var removeIframeOpenNewTabItemOperateLink = function removeIframeOpenNewTabItemOperateLink(startTabId) {
var isReverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var operateLinkData = sessionStorageCache.get(iframeOpenNewTabItemOperateLinkKey);
var dataList = isArray(operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList) ? operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList : [];
var dataListNew;
if (!isReverse) {
dataListNew = dataList.filter(function (item) {
return item.startTabId != startTabId;
});
} else {
dataListNew = dataList.filter(function (item) {
return item.startTabId == startTabId;
});
}
sessionStorageCache.set(iframeOpenNewTabItemOperateLinkKey, {
dataList: dataListNew
});
};
var getIframeOpenNewTabItemOperateLinkList = function getIframeOpenNewTabItemOperateLinkList() {
var operateLinkData = sessionStorageCache.get(iframeOpenNewTabItemOperateLinkKey);
return isArray(operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList) ? operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList : [];
};
var getDefaultHeaderThemeConfig = function getDefaultHeaderThemeConfig() {
var env = getRunningEnv();
var headerThemeConfig = {
inte: {
bgColor: '#38B990'
},
rc: {
bgColor: '#e59d1a'
},
me: {
bgColor: '#0c1e3e'
}
};
return headerThemeConfig[env];
};
var getAllIframeElements = function getAllIframeElements() {
var allFrames = document.querySelectorAll('[id^="iframe_"]');
return allFrames;
};
/**
* 主父级窗体window对象使用的消息通讯
*/
var iframeApi = {
/**
* 广播消息到所有的iframes子页面
* @param data 消息内容
*/
broadcastMessages: function broadcastMessages(data) {
var allIframes = getAllIframeElements();
for (var index = 0; index < allIframes.length; index++) {
var _iframe$contentWindow;
var iframe = allIframes[index];
(_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 || _iframe$contentWindow.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: data
}), '*');
}
return iframeApi;
},
/**
* 发送特定消息到父亲级window对象
* @param data 消息内容
*/
postMessage: function postMessage(data) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: data
}), '*');
return iframeApi;
},
openNewTabItem: function openNewTabItem(data, isClosed) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'redirect_to_frame_layout_menu_item',
data: _objectSpread2(_objectSpread2({}, data), {}, {
_isClosed: isClosed
})
}
}), '*');
return iframeApi;
},
openNewThirdTabItem: function openNewThirdTabItem(menuId, options) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'redirect_to_frame_layout_menu_third_item',
data: {
menuId: menuId,
options: options
}
}
}), '*');
return iframeApi;
},
openBrowserWindow: function openBrowserWindow(url) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'open_browser_window',
data: {
url: url
}
}
}), '*');
return iframeApi;
},
locationHref: function locationHref(url) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'browser_location_href',
data: {
url: url
}
}
}), '*');
return iframeApi;
},
tabItemHistoryChange: function tabItemHistoryChange(link) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'history_change',
data: {
link: link
}
}
}), '*');
return iframeApi;
},
openNewTabItemByMenuId: function openNewTabItemByMenuId(menuId) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'open_iframe_tabitem_by_menu_id',
data: menuId
}
}), '*');
return iframeApi;
},
/** 关闭当前iframe-tab,跳转上一个链路tab */closedIframeTabToPrevlink: function closedIframeTabToPrevlink() {
var iframeNodeKey = window['__iframe_node_key'];
var closedIframeTabId = iframeNodeKey.replace('iframe_', '');
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'closed-iframe-tab-to-prevlink',
data: {
closedIframeTabId: closedIframeTabId
}
}
}), '*');
return iframeApi;
},
tabItemRedDotToggle: function tabItemRedDotToggle(visible) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'tab-item-red-dot-toggle',
data: {
visible: visible
}
}
}), '*');
return iframeApi;
},
iframeTabOperation: function iframeTabOperation(type) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'iframe-tab-operation',
data: {
type: type
}
}
}), '*');
return iframeApi;
},
isInIframe: function isInIframe() {
return window.self !== window.top;
},
// iframe链路判断上一级是否存在
isExistPrevLink: function isExistPrevLink() {
var iframeNodeKey = window['__iframe_node_key'];
var currentIframeTabId = iframeNodeKey === null || iframeNodeKey === void 0 ? void 0 : iframeNodeKey.replace('iframe_', '');
if (currentIframeTabId) {
var operateLinkList = getIframeOpenNewTabItemOperateLinkList();
var target = operateLinkList.find(function (item) {
return item.endTabId === currentIframeTabId;
});
console.log('target', target);
return !!target;
}
return false;
},
updateMenuBadge: function updateMenuBadge(data) {
window.parent.postMessage(JSON.stringify({
type: IFRAME_EVENT_FLAG,
data: {
type: 'update-menu-badge',
data: data
}
}), '*');
return iframeApi;
}
};
var iframeEvent = new IframeEventEmitter();
window.addEventListener('message', function (e) {
try {
var _parse = parse(e.data),
type = _parse.type,
data = _parse.data;
// 忽略框架外的消息通讯传递
if (type === IFRAME_EVENT_FLAG) {
iframeEvent.emit(IFrameEvents.messageReceived, data);
}
} catch (_error) {
/** */
}
});
/**
* 使用Iframe通讯的API
* @param onReceivedMessageCallback 接收iframe通讯消息的回调函数引用
* @demo https://xx.xx.com/docs/admin/main/exchange
* @example
* ```tsx
* const iframeApi = useIframe<MessageData>((data) => {
* updateMessage(data);
* });
*
* const handleClick = hooks.useCallbackRef(() => {
* iframeApi.broadcastMessages({
* fromHeader: '1',
* });
* });
*
* ```
*/
var useIframe = function useIframe() {
var onReceivedMessageCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {
/** */
};
var callbackRef = useMemoizedFn(onReceivedMessageCallback);
useEffect(function () {
iframeEvent.off(IFrameEvents.messageReceived, callbackRef).on(IFrameEvents.messageReceived, callbackRef);
return function () {
iframeEvent.off(IFrameEvents.messageReceived, callbackRef);
};
}, [callbackRef]);
return iframeApi;
};
var useBread = function useBread(breads, routeBaseName) {
var _matchPath;
var params = useParams();
var location = useLocation();
var _useSearchParams = useSearchParams(),
_useSearchParams2 = _slicedToArray(_useSearchParams, 1),
search = _useSearchParams2[0];
var newBreadList = breads.map(function (item) {
var breadData = typeof item.breadConfig === 'function' ? item.breadConfig({
params: params,
search: search
}) : item.breadConfig;
return _objectSpread2(_objectSpread2({}, breadData), {}, {
path: item.path
});
});
routeBaseName = ensureSlash$1(routeBaseName);
var locationBreadPath = ensureSlash$1(location.pathname.replace(routeBaseName, ''));
var routes = newBreadList.map(function (s) {
var pathFn = s.to || s.path;
var path = typeof pathFn === 'function' ? pathFn({
params: params,
search: search
}) : pathFn;
var query = s.query || [];
var allQueries = paramStrToJson(window.location.href);
var savedQueries = pick(allQueries, ['env'].concat(query));
var name = typeof s.name === 'function' ? s.name() : s.name;
return {
path: path,
name: name,
query: savedQueries
};
});
/**
* 当路由中存在动态参数时,解决参数匹配替换问题
* 1. 路由path链路
* a/b
* a/b/:id
* a/b/:id/detail
* =>
* 动态参数id = 123
* a/b
* a/b/123
* a/b/123/detail
*/
// 从长到短排序
routes = routes.sort(function (a, b) {
var _b$path, _a$path;
return ((_b$path = b.path) === null || _b$path === void 0 ? void 0 : _b$path.length) - ((_a$path = a.path) === null || _a$path === void 0 ? void 0 : _a$path.length);
});
var lastPathTarget = routes.find(function (item) {
return matchPath(ensureSlash$1(item.path), locationBreadPath) || ensureSlash$1(item.path) === '//' || locationBreadPath.includes(ensureSlash$1(item.path));
});
if (lastPathTarget === undefined || lastPathTarget === null) return [];
var routesNew = routes.sort(function (a, b) {
var _a$path2, _b$path2;
return ((_a$path2 = a.path) === null || _a$path2 === void 0 ? void 0 : _a$path2.length) - ((_b$path2 = b.path) === null || _b$path2 === void 0 ? void 0 : _b$path2.length);
}).filter(function (item) {
return ensureSlash$1(lastPathTarget.path).includes(ensureSlash$1(item.path));
});
var marchParams = (_matchPath = matchPath(ensureSlash$1(lastPathTarget.path), locationBreadPath)) === null || _matchPath === void 0 ? void 0 : _matchPath.params;
var resultRoutes = routesNew.map(function (item) {
if (marchParams) {
var pathFmt = ensureSlash$1(item.path);
Object.keys(marchParams).forEach(function (key) {
if (pathFmt.includes("/:".concat(key, "/"))) {
pathFmt = pathFmt.replace("/:".concat(key, "/"), "/".concat(marchParams[key], "/"));
}
});
item.path = removeSlash(pathFmt, 'after');
}
return item;
});
return resultRoutes;
};
/**
* iframe tab 注册刷新方法
* ```
* 1. 定义refreshKey唯一值
* 2. 与 useRefreshRegisterIframeTab 结合实现iframe tab之间的刷新动作
* ```
*/
var useRegisterRefreshCurrentIframeTab = function useRegisterRefreshCurrentIframeTab(refreshKey, onRefresh) {
useIframe(function (data) {
return new Promise(function ($return, $error) {
var iframeNodeKey, refreshFunc;
if (data.type === '__refresh-iframe-tab') {
var $Try_1_Post = function () {
try {
return $If_5.call(this);
} catch ($boundEx) {
return $error($boundEx);
}
}.bind(this);
var $Try_1_Catch = function (error) {
try {
console.error(error);
return $Try_1_Post();
} catch ($boundEx) {
return $error($boundEx);
}
};
try {
iframeNodeKey = window['__iframe_node_key'];
refreshFunc = window.parent["__refresh_".concat(iframeNodeKey)];
if (data.data.refreshKey === refreshKey) {
var $Try_2_Finally = function ($Try_2_Exit) {
return function ($Try_2_Value) {
try {
refreshFunc.end();
return $Try_2_Exit && $Try_2_Exit.call(this, $Try_2_Value);
} catch ($boundEx) {
return $Try_1_Catch($boundEx);
}
}.bind(this);
}.bind(this);
refreshFunc.start();
var $Try_2_Post = function () {
try {
return $If_6.call(this);
} catch ($boundEx) {
return $Try_1_Catch($boundEx);
}
}.bind(this);
var $Try_2_Catch = function ($exception_3) {
try {
throw $exception_3;
} catch ($boundEx) {
return $Try_2_Finally($Try_1_Catch)($boundEx);
}
};
try {
return Promise.resolve(onRefresh(data.data.params)).then(function ($await_7) {
try {
return $Try_2_Finally($Try_2_Post)();
} catch ($boundEx) {
return $Try_2_Catch($boundEx);
}
}, $Try_2_Catch);
} catch ($exception_3) {
$Try_2_Catch($exception_3);
}
}
function $If_6() {
return $Try_1_Post();
}
return $If_6.call(this);
} catch (error) {
$Try_1_Catch(error);
}
}
function $If_5() {
return $return();
}
return $If_5.call(this);
});
});
};
/**
* 根据 refreshKey,刷新指定iframe tab(在iframe tab中调用)
* ```
* 1. 使用 useRegisterRefreshCurrentIframeTab 定义的refreshKey
* 2. 可通过 params 给刷新方法传参
* ```
* @returns
*/
var useRefreshRegisterIframeTab = function useRefreshRegisterIframeTab() {
var iframeApi = useIframe();
return function (refreshKey, params) {
iframeApi.postMessage({
type: '__refresh-iframe-tab',
data: {
refreshKey: refreshKey,
params: params
}
});
};
};
/**
* iframe tab 激活回调
* ```
* 1. 首次激活执行 callback,isFirst 为 true
* ```
*/
var useIframeTabActive = function useIframeTabActive(callback) {
useEffect(function () {
callback(true);
}, []);
useIframe(function (data) {
if (data.type === '__iframe-tab-active') {
try {
var iframeNodeKey = window['__iframe_node_key'];
if (data.data.activeKey === iframeNodeKey) {
callback(false);
}
} catch (error) {
console.error(error);
}
}
});
};
var Bread = function Bread(props) {
var _ctx$breadcrumbProps;
var ctx = bootstrapCtx();
var iframeApi = useIframe();
var globalData = getGlobalData();
var breadRoutes = useBread(ctx.breads || {}, globalData.routeBaseName);
var breadcrumbItems = useMemo(function () {
var items = ctx.breadTitle ? [{
title: ctx.breadTitle
}] : [];
var routes = breadRoutes.sort(function (a, b) {
return a.path.length - b.path.length;
});
routes.forEach(function (item, index) {
var content = item && /*#__PURE__*/jsx(Fragment, {
children: item.name
});
if (item) {
if (routes.length - 1 !== index) {
items.push({
title: /*#__PURE__*/jsx(Link, {
to: toLinkPath(item.path, item.query),
onClick: function onClick() {
if (ctx.layoutMode === 'iframe-tab') {
iframeApi.tabItemRedDotToggle(false);
}
},
children: content
})
});
} else {
items.push({
title: item.name
});
}
}
});
return items;
}, [breadRoutes, ctx.breadTitle]);
if (!breadRoutes.length) {
return null;
}
return /*#__PURE__*/jsxs("div", {
className: "bread-wrapper",
children: [/*#__PURE__*/jsx(Breadcrumb, _objectSpread2(_objectSpread2({}, ctx.breadcrumbProps), {}, {
className: classNames('bread', (_ctx$breadcrumbProps = ctx.breadcrumbProps) === null || _ctx$breadcrumbProps === void 0 ? void 0 : _ctx$breadcrumbProps.className),
items: breadcrumbItems
})), /*#__PURE__*/jsx("div", {
className: "bread-extend",
children: props.children
})]
});
};
// export const urlJoin = (first: string, second: string) => {
// return (first || '').replace(/\/$/, '') + '/' + (second || '').replace(/^\//, '');
// };
/**
* make sure the endfix slash as expect.
* @param str path fragment
* @param slashEndfix flag to indicates if we need keep last slash `/`
*/
var ensureSlash = function ensureSlash(str) {
var slashEndfix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
str = str.replace(/\/$/, '');
return slashEndfix ? str + '/' : str;
};
/**
* 按照item.`path`长度越长的排列到最前面
* @param items
* @returns
*/
var sortItemsByPath = function sortItemsByPath() {
var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
return items.slice(0).sort(function (a, b) {
return (b.path || '').length - (a.path || '').length;
});
};
/**
* path1 是否 包含 path2
* @param path1
* @param path2
* @returns
*/
var pathIncludePath = function pathIncludePath(path1, path2) {
return ensureSlash(path1, true).startsWith(ensureSlash(path2, true));
};
/**
* 找到第一个叶子节点
* ```
* tileMenuList: 通过treeToArray(treeList)
* ```
* @param tileMenuList 菜单平铺数据
*/
var findOneLeafNode = function findOneLeafNode(tileMenuList) {
return tileMenuList.filter(function (item) {
return !item.children || item.children.length === 0;
})[0];
};
/**
* 查询 path 存在的菜单节点(不考虑是否为叶子节点)
*/
var pathInMenuList = function pathInMenuList(path, menus) {
path = getIframeTabPurePath(path);
return menus.find(function (item) {
return ensureSlash$1(path, true).startsWith(ensureSlash$1(getIframeTabPurePath(item.path), true));
});
};
/**
* 获取 rotue path(不包含routeBaseName)
* ```
* 例如:
* /pages/flatbiz/demo-layout/main/system-set/menu1?env=me
* routeBaseName = pages/flatbiz/demo-layout
* =>
* /main/system-set/menu1
* ```
* @param path
* @returns
*/
var getPurePath = function getPurePath(path) {
var _getHostUrlAndRouteBa2 = getHostUrlAndRouteBaseName(path),
routeBaseName = _getHostUrlAndRouteBa2.routeBaseName;
return urlJoin('/', path).replace(urlJoin('/', routeBaseName), '').split('?')[0];
};
/**
* 获取 iframe rotue path(不包含routeBaseName、main)
* ```
* 例如:
* routeBaseName = pages/flatbiz/demo-layout
* 1. /pages/flatbiz/demo-layout/main/system-set/menu1?env=me
* 2. /main/system-set/menu1?env=me
* 3. /system-set/menu1
* =>
* /system-set/menu1
* ```
* @param path
* @returns
*/
var getIframeTabPurePath = function getIframeTabPurePath(pathOrUrl) {
var pathname = isHttpUri(pathOrUrl) ? uriParse(pathOrUrl).pathname : pathOrUrl;
var _getHostUrlAndRouteBa3 = getHostUrlAndRouteBaseName(pathOrUrl),
routeBaseName = _getHostUrlAndRouteBa3.routeBaseName;
var purePath = urlJoin('/', pathname).replace(urlJoinMulti('/', routeBaseName, '/'), '').split('?')[0];
purePath = urlJoinMulti('/', purePath, '/');
if (purePath.startsWith('/main/')) {
purePath = purePath.replace('/main/', '/');
}
return removeSlash(purePath, 'after');
};
var getIframeMainPurePath = function getIframeMainPurePath(pathOrUrl) {
var tabPurePath = getIframeTabPurePath(pathOrUrl);
return urlJoin('/main', tabPurePath);
};
/**
* 解析指定iframe main url数据
* ```
* 例如
* http://dev.flatjs.com:6900/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx
* =>
* path: /main/module1/menu1
* search: ?name=xxx
* ```
* @param url
*/
var parseIframeMainUrlInfo = function parseIframeMainUrlInfo(url) {
var purePath = getIframeMainPurePath(url);
var uriParseValue = uriParse(url);
var search = uriParseValue.search;
return {
path: purePath,
search: search,
pathSearch: "".concat(purePath).concat(search || '')
};
};
/**
* 解析指定iframe 内部 url数据
* ```
* 例如
* http://dev.flatjs.com:6900/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx
* =>
* path: /module1/menu1
* search: ?name=xxx
* ```
* @param url
*/
var parseIframeTabItemUrlInfo = function parseIframeTabItemUrlInfo(url) {
var purePath = getIframeTabPurePath(url);
var uriParseValue = uriParse(url);
var search = uriParseValue.search;
return {
path: purePath,
search: search,
pathSearch: "".concat(purePath).concat(search || '')
};
};
var pathStartWithPath = function pathStartWithPath(path1, path2) {
return urlJoin(getIframeTabPurePath(path1), '/').startsWith(urlJoin(getIframeTabPurePath(path2), '/'));
};
/**
* 猜测 iframe tab link
* @param pathOrUrl
*
* ```
* 例如1
* routeBaseName = pages/flatbiz/demo-layout
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1?name=xxx
* /main/module1/menu1?name=xxx
* /module1/menu1?name=xxx
* =>
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1?name=xxx
* ```
*
* ```
* *****
* 例如2
* routeBaseName = pages/flatbiz/demo-layout
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1
* /main/module1/menu1
* /module1/menu1
* =>
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1
* ```
*/
var guessIframeTabItemLink = function guessIframeTabItemLink(pathOrUrl) {
var _getHostUrlAndRouteBa4 = getHostUrlAndRouteBaseName(pathOrUrl),
routeBaseName = _getHostUrlAndRouteBa4.routeBaseName,
hostUrl = _getHostUrlAndRouteBa4.hostUrl;
var pathSearch = '';
if (isHttpUri(pathOrUrl)) {
pathSearch = parseIframeTabItemUrlInfo(pathOrUrl).pathSearch;
} else {
var purePath = getIframeTabPurePath(pathOrUrl);
var search = pathOrUrl.split('?')[1] || '';
pathSearch = search ? "".concat(purePath, "?").concat(search) : purePath;
}
return urlJoinMulti(hostUrl, routeBaseName, pathSearch);
};
var guessNormalItemLink = function guessNormalItemLink(pathOrUrl) {
var result = getHostUrlAndRouteBaseName(pathOrUrl);
var routeBaseName = result.routeBaseName;
pathOrUrl = removeSlash(pathOrUrl, 'before-after');
routeBaseName = removeSlash(routeBaseName, 'before-after');
if (!isHttpUri(pathOrUrl)) {
if (pathOrUrl.startsWith(routeBaseName)) {
return urlJoinMulti(result.hostUrl, pathOrUrl);
}
return urlJoinMulti(result.hostUrl, routeBaseName, pathOrUrl);
}
return pathOrUrl;
};
/**
* 猜测 iframe main link
* @param pathOrUrl
*
* ```
* 例如1
* routeBaseName = pages/flatbiz/demo-layout
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1?name=xxx
* /main/module1/menu1?name=xxx
* /module1/menu1?name=xxx
* =>
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx
* ```
*
* ```
* *****
* 例如2
* routeBaseName = pages/flatbiz/demo-layout
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1
* /main/module1/menu1
* /module1/menu1
* =>
* http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1
* ```
*/
var guessIframeMainLink = function guessIframeMainLink(pathOrUrl) {
var _getHostUrlAndRouteBa5 = getHostUrlAndRouteBaseName(pathOrUrl),
routeBaseName = _getHostUrlAndRouteBa5.routeBaseName,
hostUrl = _getHostUrlAndRouteBa5.hostUrl;
var pathSearch = '';
if (isHttpUri(pathOrUrl)) {
pathSearch = parseIframeMainUrlInfo(pathOrUrl).pathSearch;
} else {
var purePath = getIframeMainPurePath(pathOrUrl);
var search = pathOrUrl.split('?')[1] || '';
pathSearch = search ? "".concat(purePath, "?").concat(search) : purePath;
}
return urlJoinMulti(hostUrl, routeBaseName, pathSearch);
};
var removeUrlProtocol = function removeUrlProtocol(url) {
var protocol = uriParse(url).protocol;
return url.replace(protocol, '');
};
/**
* 判断是否第三方链接
* @param link
* @returns
*/
var judgeLinkIsThird = function judgeLinkIsThird(link) {
// 此处不能使用 getHostUrlAndRouteBaseName
var _getGlobalData = getGlobalData(),
routeBaseName = _getGlobalData.routeBaseName,
hostUrl = _getGlobalData.hostUrl,
siblingProjectConfigs = _getGlobalData.siblingProjectConfigs;
var ruleBaseUrl = urlJoinMulti(hostUrl, routeBaseName, '/');
var ruleBaseUrlNew = removeUrlProtocol(ruleBaseUrl);
var linkNew = removeUrlProtocol(link);
if (linkNew.startsWith(ruleBaseUrlNew)) {
return false;
}
if (toArray(siblingProjectConfigs).length) {
var target = siblingProjectConfigs === null || siblingProjectConfigs === void 0 ? void 0 : siblingProjectConfigs.find(function (item) {
var itemUrl = urlJoinMulti(item.hostUrl, item.routeBaseName, '/');
var itemUrlNew = removeUrlProtocol(itemUrl);
return linkNew.startsWith(itemUrlNew);
});
if (target) {
return false;
}
}
return true;
};
/**
* 是否为iframe架构的其他项目
* ```
* 与 window.GLOBAL.siblingProjectConfigs 比较
* ```
*/
var judgeIframeSiblingProject = function judgeIframeSiblingProject(link) {
var _getGlobalData2 = getGlobalData(),
routeBaseName = _getGlobalData2.routeBaseName,
hostUrl = _getGlobalData2.hostUrl,
siblingProjectConfigs = _getGlobalData2.siblingProjectConfigs;
var linkPath = getIframeTabPurePath(link);
var ruleBaseUrl = urlJoinMulti(hostUrl, routeBaseName, '/');
var ruleBaseUrlNew = removeUrlProtocol(ruleBaseUrl);
var linkNew = removeUrlProtocol(link);
if (!linkNew.startsWith(ruleBaseUrlNew)) {
var target = getHostUrlAndRouteBaseName(link);
if (target) {
return {
routeBaseName: target.routeBaseName,
hostUrl: target.hostUrl,
moduleUrl: target ? urlJoinMulti(target.hostUrl, target.routeBaseName, linkPath) : undefined
};
}
return undefined;
}
var projectTarget;
var moduleTarget;
siblingProjectConfigs === null || siblingProjectConfigs === void 0 || siblingProjectConfigs.forEach(function (item) {
var _item$modules;
(_item$modules = item.modules) === null || _item$modules === void 0 || _item$modules.forEach(function (temp) {
if (pathStartWithPath(link, temp.path) && !moduleTarget) moduleTarget = temp;
});
if (moduleTarget) projectTarget = item;
});
if (moduleTarget) {
return {
routeBaseName: projectTarget.routeBaseName,
hostUrl: projectTarget.hostUrl,
moduleUrl: urlJoinMulti(projectTarget.hostUrl, projectTarget.routeBaseName, moduleTarget.path),
name: moduleTarget.name
};
}
return undefined;
};
var syncUrlSearch = function syncUrlSearch(targetUrl, url) {
var searchJson = paramStrToJson(targetUrl);
return modifyQueryString(url, searchJson);
};
var getHostUrlAndRouteBaseName = function getHostUrlAndRouteBaseName(pathOrUrl) {
var _getGlobalData3 = getGlobalData(),
siblingProjectConfigs = _getGlobalData3.siblingProjectConfigs,
routeBaseName = _getGlobalData3.routeBaseName,
hostUrl = _getGlobalData3.hostUrl;
if (!isHttpUri(pathOrUrl)) {
return {
routeBaseName: routeBaseName,
hostUrl: hostUrl
};
}
var link = pathOrUrl;
var linkNew = removeUrlProtocol(link);
if (toArray(siblingProjectConfigs).length) {
var target = siblingProjectConfigs === null || siblingProjectConfigs === void 0 ? void 0 : siblingProjectConfigs.find(function (item) {
var itemUrl = urlJoinMulti(item.hostUrl, item.routeBaseName, '/');
var itemUrlNew = removeUrlProtocol(itemUrl);
return linkNew.startsWith(itemUrlNew);
});
if (target) {
return {
routeBaseName: target.routeBaseName,
hostUrl: target.hostUrl
};
}
}
return {
routeBaseName: routeBaseName,
hostUrl: hostUrl
};
};
var _excluded$3 = ["level"];
/**
* 通过面包屑路径返回
* @param props
* @returns
* ```
* 1. breads 模块面包屑配置
* 2. level回退级别,如果传递数据未获取到路由配置,则取上一级
* 例如:-1,-2,-3
* 3. 为什么不能使用useNavigate(-1)
* 因为内部iframe和外部浏览器共用history历史记录,导致里外浏览器栈混乱
* 4. 什么场景使用
* 使用iframe tab的项目,在执行路由回退时使用
* 5. onClick返回 promise reject,则不会进行回退处理(V4.2.4)
* ```
*/
var HistoryBackButton = function HistoryBackButton(props) {
var ctx = bootstrapCtx();
var level = props.level,
otherProps = _objectWithoutProperties(props, _excluded$3);
var _getHostUrlAndRouteBa = getHostUrlAndRouteBaseName(location.href),
routeBaseName = _getHostUrlAndRouteBa.routeBaseName;
var routerList = useBread(ctx.breads, routeBaseName);
var navigate = useNavigate();
var path = useMemo(function () {
var newLevel = level || -1;
if (routerList.length >= 2) {
var routerItem = routerList[routerList.length - 1 - Math.abs(newLevel)] || routerList[routerList.length - 2];
if (routerItem) {
return toLinkPath(routerItem.path, routerItem.query);
} else {
console.warn("\u672A\u83B7\u53D6\u5230\u3010level\uFF1A".concat(newLevel, "\u3011\u9762\u5305\u5C51\u6570\u636E"));
return '';
}
}
console.warn("\u672A\u83B7\u53D6\u5230\u3010level\uFF1A".concat(newLevel, "\u3011\u9762\u5305\u5C51\u6570\u636E"));
return '';
}, []);
var onBack = function onBack() {
if (path) {
navigate(toLinkPath(path));
} else {
console.warn("\u672A\u83B7\u53D6\u5230\u9762\u5305\u5C51\u6570\u636E\uFF0C\u65E0\u8FD4\u56DE\u94FE\u63A5");
}
};
var onClick = useMemoizedFn(function (event) {
var _props$onClick;
var result = props === null || props === void 0 || (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, event);
if (result && isPromise(result)) {
return result.then(function () {
onBack();
});
}
onBack();
return;
});
return /*#__PURE__*/jsx(ButtonWrapper, _objectSpread2(_objectSpread2({}, otherProps), {}, {
onClick: onClick,
children: props.children || '返回'
}));
};
var useHistoryBack = function useHistoryBack(props) {
var ctx = bootstrapCtx();
var level = (props === null || props === void 0 ? void 0 : props.level) || -1;
var _getHostUrlAndRouteBa2 = getHostUrlAndRouteBaseName(location.href),
routeBaseName = _getHostUrlAndRouteBa2.routeBaseName;
var routerList = useBread(ctx.breads, routeBaseName);
var path = useMemo(function () {
var newLevel = level;
if (routerList.length >= 2) {
var routerItem = routerList[routerList.length - 1 - Math.abs(newLevel)] || routerList[routerList.length - 2];
if (routerItem) {
return toLinkPath(routerItem.path, routerItem.query);
} else {
console.warn("\u672A\u83B7\u53D6\u5230\u3010level\uFF1A".concat(newLevel, "\u3011\u9762\u5305\u5C51\u6570\u636E"));
return '';
}
}
console.warn("\u672A\u83B7\u53D6\u5230\u3010level\uFF1A".concat(newLevel, "\u3011\u9762\u5305\u5C51\u6570\u636E"));
return '';
}, []);
return {
path: path
};
};
var Loader = function Loader(_ref) {
var _ref$spinning = _ref.spinning,
spinning = _ref$spinning === void 0 ? false : _ref$spinning,
_ref$fullScreen = _ref.fullScreen,
fullScreen = _ref$fullScreen === void 0 ? false : _ref$fullScreen,
_ref$style = _ref.style,
style = _ref$style === void 0 ? {} : _ref$style;
return /*#__PURE__*/jsx("div", {
style: style,
className: classNames('loader', {
hidden: !spinning,
fullScreen: fullScreen
}),
children: /*#__PURE__*/jsxs("div", {
className: "loader-wrapper",
children: [/*#__PURE__*/jsx("div", {
className: "loader-inner"
}), /*#__PURE__*/jsx("div", {
className: "loader-text",
children: "LOADING"
})]
})
});
};
/**
* 页面包装组件
* ```
* 1. 如果初始化面包屑被隐藏,在特殊页面级可以独立设置显示面包屑
* <Page bread={<Bread />}/>
* 2. 如果需要在 面包屑上添加按钮,初始化设置 bootstrap.hideDefaultBread = true,在需要按钮的页面上配置
* <Page bread={<Bread><Button>我是按钮</Button></Bread>}/>
* ```
* @param props
* @returns
*/
var Page = function Page(props) {
var loading = props.loading;
var isWin = isWindows();
var className = classNames('page', {
'page-loading': loading,
'page-flex': !isUndefined(props.fullIndex),
'page-windows': isWin
}, props.className);
var backTopTarget = useMemoizedFn(function () {
if (!isUndefined(props.fullIndex)) {
return document.querySelector('.page-full');
}
return document.querySelector('.page');
});
return /*#__PURE__*/jsxs(Fragment, {
children: [props.bread, /*#__PURE__*/jsxs("div", {
style: props.style,
className: className,
id: props.elementId,
children: [Children.map(props.children, function (item, index) {
if (index === props.fullIndex) {
var _item$props;
return /*#__PURE__*/jsx(Fragment, {
children: /*#__PURE__*/cloneElement(item, {
className: classNames('page-full', item === null || item === void 0 || (_item$props = item['props']) === null || _item$props === void 0 ? void 0 : _item$props.className)
})
}, index);
}
return /*#__PURE__*/jsx(Fragment, {
children: item
}, index);
}), /*#__PURE__*/jsx(FloatButton.BackTop, {
target: backTopTarget
}), loading && /*#__PURE__*/jsx(Loader, {
spinning: true
})]
})]
});
};
var _fbaHooks$createCtx = fbaHooks.createCtx(),
_fbaHooks$createCtx2 = _slicedToArray(_fbaHooks$createCtx, 2),
usePageWrapperCtx = _fbaHooks$createCtx2[0],
PageWrapperCtxProvider = _fbaHooks$createCtx2[1];
var _excluded$2 = ["respData"],
_excluded2 = ["serviceConfig", "isAsync", "errorRender"];
var PageContent$1 = function PageContent(props) {
var _props$children;
var respData = props.respData,
otherProps = _objectWithoutProperties(props, _excluded$2);
var children = typeof props.children === 'function' ? (_props$children = props.children) === null || _props$children === void 0 ? void 0 : _props$children.call(props, respData) : props.children;
if (isFragment(children)) {
var childrenList = Children.toArray(children.props.children);
return /*#__PURE__*/jsx(Page, _objectSpread2(_objectSpread2({}, otherProps), {}, {
children: childrenList
}));
}
return /*#__PURE__*/jsx(Page, _objectSpread2(_objectSpread2({}, otherProps), {}, {
children: children
}));
};
/**
* 为Page内置接口处理流程组件,如果无全局初始化接口请求场景,请使用Page组件
* ```
* 包括
* 1. loading显示效果
* 2. error显示效果
* 3. 正常接口数据渲染
* ```
* @param props
* @returns
*/
var PageWrapper = /*#__PURE__*/forwardRef(function (props, ref) {
var serviceConfig = props.serviceConfig,
isAsync = props.isAsync,
errorRender = props.errorRender,
otherProps = _objectWithoutProperties(props, _excluded2);
var _useState = useState({
status: 'loading'
}),
_useState2 = _slicedToArray(_useState, 2),
result = _useState2[0],
setResult = _useState2[1];
var _useState3 = useState(false),
_useState4 = _slicedToArray(_useState3, 2),
againRefresh = _useState4[0],
setAgainRefresh = _useState4[1];
var onRequest = function onRequest() {
return new Promise(function ($return, $error) {
var params, _result;
var $Try_1_Post = function () {
try {
return $return(Promise.resolve());
} catch ($boundEx) {
return $error($boundEx);
}
};
var $Try_1_Catch = function (error) {
try {
setResult({
status: 'error',
respData: error
});
return $Try_1_Post();
} catch ($boundEx) {
return $error($boundEx);
}
};
try {
params = typeof serviceConfig.params === 'function' ? serviceConfig.params() : serviceConfig.params;
return Promise.resolve(serviceConfig.onRequest(params)).then(function ($await_2) {
try {
_result = $await_2;
setResult({
status: 'success',
respData: _result
});
return $Try_1_Post();
} catch ($boundEx) {
return $Try_1_Catch($boundEx);
}
}, $Try_1_Catch);
} catch (error) {
$Try_1_Catch(error);
}
});
};
fbaHooks.useEffectCustomAsync(onRequest, []);
var onReload = useMemoizedFn(function () {
setResult({
status: 'loading'
});
void onRequest();
});
var onRefresh = useMemoizedFn(function () {
setAgainRefresh(true);
onRequest().finally(function () {
setAgainRefresh(false);
});
});
useImperativeHandle(ref, function () {
return {
onRefresh: onRefresh,
onReload: onReload
};
});
if (result.status === 'error') {
var _result$respData;
if (errorRender) {
return errorRender(result.respData);
}
return /*#__PURE__*/jsx(Page, {
fullIndex: 0,
style: {
backgroundColor: '#fff'
},
children: /*#__PURE__*/jsx(Result, {
status: "error",
title: '数据获取异常',
subTitle: ((_result$respData = result.respData) === null || _result$respData === void 0 ? void 0 : _result$respData.message) || '数据请求异常',
extra: [/*#__PURE__*/jsx(Button, {
type: "primary",
onClick: onReload,
children: "\u91CD\u65B0\u83B7\u53D6"
}, "console")]
})
});
}
if (result.status === 'loading' && !isAsync) {
return /*#__PURE__*/jsx(Page, _objectSpread2(_objectSpread2({
loading: true
}, otherProps), {}, {
children: /*#__PURE__*/jsx(Fragment, {})
}));
}
return /*#__PURE__*/jsxs(PageWrapperCtxProvider, {
value: {
onReload: onReload,
onRefresh: onRefresh
},
children: [againRefresh ? /*#__PURE__*/jsx(Loader, {
spinning: true,
style: {
backgroundColor: 'transparent'
}
}) : null, /*#__PURE__*/jsx(PageContent$1, _objectSpread2({
loading: result.status === 'loading',
respData: result.respData
}, otherProps))]
});
});
var usePageWrapper = function usePageWrapper() {
var ctx = usePageWrapperCtx();
return ctx;
};
var AntdAppWrapper = functi