@flatbiz/antd 5.0.41 → 5.0.43
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/dist/button-operate/index.d.ts +7 -0
- package/dist/button-operate/index.js +1 -1
- package/dist/{button-operate-CPlw00Mg.js → button-operate-DprXMhOZ.js} +18 -8
- package/dist/button-operate-DprXMhOZ.js.map +1 -0
- package/dist/{cell-render-Dp344auH.js → cell-render-Btk1xTUj.js} +2 -2
- package/dist/{cell-render-Dp344auH.js.map → cell-render-Btk1xTUj.js.map} +1 -1
- package/dist/{color-picker-BYGCHXn2.js → color-picker-D8Tiiut0.js} +2 -2
- package/dist/{color-picker-BYGCHXn2.js.map → color-picker-D8Tiiut0.js.map} +1 -1
- package/dist/color-picker-wrapper/index.js +2 -2
- package/dist/copy-BbkSnxi9.js +93 -0
- package/dist/copy-BbkSnxi9.js.map +1 -0
- package/dist/copy-wrapper/index.d.ts +7 -1
- package/dist/copy-wrapper/index.js +4 -35
- package/dist/copy-wrapper/index.js.map +1 -1
- package/dist/delete-node/index.js +2 -2
- package/dist/{delete-node-BIETvJjg.js → delete-node-BXaXf6fO.js} +2 -2
- package/dist/{delete-node-BIETvJjg.js.map → delete-node-BXaXf6fO.js.map} +1 -1
- package/dist/dialog-drag-modal/index.js +2 -2
- package/dist/{drag-WgtQg-qO.js → drag-Bn9b0R-o.js} +3 -3
- package/dist/{drag-WgtQg-qO.js.map → drag-Bn9b0R-o.js.map} +1 -1
- package/dist/{drag-xBmmIPTD.js → drag-Dxvr0bSy.js} +2 -2
- package/dist/{drag-xBmmIPTD.js.map → drag-Dxvr0bSy.js.map} +1 -1
- package/dist/drag-editable-card/index.js +4 -4
- package/dist/drag-editable-table/index.d.ts +12 -2
- package/dist/drag-editable-table/index.js +6 -6
- package/dist/drag-editable-table-pro/index.js +2 -2
- package/dist/{drag-modal-CyiFlQrA.js → drag-modal-C3Azghu3.js} +14 -14
- package/dist/{drag-modal-CyiFlQrA.js.map → drag-modal-C3Azghu3.js.map} +1 -1
- package/dist/drag-table/index.js +2 -2
- package/dist/{drag-table-B5s0LEwN.js → drag-table-Dk8HllSn.js} +2 -2
- package/dist/{drag-table-B5s0LEwN.js.map → drag-table-Dk8HllSn.js.map} +1 -1
- package/dist/easy-table/index.js +1 -1
- package/dist/editable-card/index.js +3 -3
- package/dist/{editable-card-CnYsG1xL.js → editable-card-tyOSUivy.js} +2 -2
- package/dist/{editable-card-CnYsG1xL.js.map → editable-card-tyOSUivy.js.map} +1 -1
- package/dist/{editable-card-DdXga629.js → editable-card-zY9wCgE6.js} +4 -4
- package/dist/{editable-card-DdXga629.js.map → editable-card-zY9wCgE6.js.map} +1 -1
- package/dist/editable-field/index.js +2 -2
- package/dist/{editable-field-BH6M_S9W.js → editable-field-DBiVpCRE.js} +2 -2
- package/dist/{editable-field-BH6M_S9W.js.map → editable-field-DBiVpCRE.js.map} +1 -1
- package/dist/editable-table/index.d.ts +12 -2
- package/dist/editable-table/index.js +4 -4
- package/dist/{editable-table-D7Zpl0MJ.js → editable-table-Bsch15kT.js} +3 -3
- package/dist/{editable-table-D7Zpl0MJ.js.map → editable-table-Bsch15kT.js.map} +1 -1
- package/dist/icon-wrapper/index.d.ts +1 -0
- package/dist/icon-wrapper/index.js +1 -1
- package/dist/{icon-wrapper-DfWj_rer.js → icon-wrapper-DE97bI14.js} +6 -2
- package/dist/icon-wrapper-DE97bI14.js.map +1 -0
- package/dist/index.d.ts +40 -5
- package/dist/index.js +22 -37
- package/dist/index.js.map +1 -1
- package/dist/rich-text-viewer/index.js +2 -2
- package/dist/{rich-text-viewer-CPAJ3JD1.js → rich-text-viewer-FVi2i8nv.js} +2 -2
- package/dist/{rich-text-viewer-CPAJ3JD1.js.map → rich-text-viewer-FVi2i8nv.js.map} +1 -1
- package/dist/{selector-CQ_yMKjh.js → selector-DGXElqt2.js} +9 -6
- package/dist/selector-DGXElqt2.js.map +1 -0
- package/dist/selector-wrapper/index.d.ts +12 -2
- package/dist/selector-wrapper/index.js +1 -1
- package/dist/{selector-wrapper-BSpsy8KA.js → selector-wrapper-DfaplVbz.js} +6 -3
- package/dist/selector-wrapper-DfaplVbz.js.map +1 -0
- package/dist/table-cell-render/index.d.ts +7 -0
- package/dist/table-cell-render/index.js +2 -2
- package/dist/tree-modal/index.d.ts +14 -2
- package/dist/tree-modal/index.js +2 -2
- package/dist/tree-modal-selector/index.d.ts +14 -2
- package/dist/tree-modal-selector/index.js +2 -2
- package/dist/tree-selector-wrapper/index.d.ts +7 -1
- package/dist/tree-selector-wrapper/index.js +1 -1
- package/dist/tree-wrapper/index.d.ts +14 -2
- package/dist/tree-wrapper/index.js +9 -6
- package/dist/tree-wrapper/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/button-operate-CPlw00Mg.js.map +0 -1
- package/dist/copy-BQVsCFXm.js +0 -283
- package/dist/copy-BQVsCFXm.js.map +0 -1
- package/dist/icon-wrapper-DfWj_rer.js.map +0 -1
- package/dist/selector-CQ_yMKjh.js.map +0 -1
- package/dist/selector-wrapper-BSpsy8KA.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copy-BQVsCFXm.js","sources":["@flatbiz/antd/node_modules/@flatbiz/pro-layout/dist/index.js","@flatbiz/antd/src/copy-wrapper/copy.tsx"],"sourcesContent":["/* eslint-disable */\nimport './index.css';\n/*! @flatjs/forge MIT @flatbiz/pro-layout */\n\nimport { App as App$1, Breadcrumb, FloatButton, Result, Button, message as message$1, Dropdown, Space, Menu, Layout, Badge, Tabs, Typography, theme } from 'antd';\nimport { classNames } from '@dimjs/utils/class-names/class-names';\nimport { createContext, useContext, useEffect, useMemo, Fragment, Children, cloneElement, forwardRef, useState, useImperativeHandle, isValidElement, Suspense, useRef, memo, Component } from 'react';\nimport { useParams, useLocation, useSearchParams, matchPath, Link, useNavigate, Routes, Route, Navigate, BrowserRouter } from 'react-router-dom';\nimport { ensureSlash as ensureSlash$1, removeSlash, getGlobalData, toLinkPath, isHttpUri, toArray, urlJoinMulti, urlJoin, isWindowsEnv, valueIsEqual, toLinkPathWithQuery, sessionStorageCache, treeToArray, cloneObject, getUuid, treeFilter, arrayFindByLoosely, arrayFindIndexByLoosely, isUndefinedOrNull } from '@flatbiz/utils';\nimport { hooks } from '@wove/react/hooks';\nimport { parse } from '@dimjs/utils/json/parse';\nimport { pick } from '@dimjs/utils/pick/pick';\nimport { paramStrToJson } from '@dimjs/utils/uri/param-str-to-json';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport { isPromise } from '@dimjs/lang/is-promise';\nimport { ButtonWrapper, fbaHooks, ConfigProviderWrapper, SvgHttpView, InputWrapper, IconWrapper, Gap, FbaApp } from '@flatbiz/antd';\nimport { modifyQueryString } from '@dimjs/utils/uri/modify-query-string';\nimport { uriParse } from '@dimjs/utils/uri/uri-parse';\nimport { isArray } from '@dimjs/lang/is-array';\nimport { isUndefined } from '@dimjs/lang/is-undefined';\nimport { isFragment } from 'react-is';\nimport { createCtx as createCtx$1 } from '@wove/react/create-ctx';\nimport { createRoot } from 'react-dom/client';\nimport { getQueryString } from '@dimjs/utils/uri/get-query-string';\nimport { extend } from '@dimjs/utils/extend/extend';\nimport { get } from '@dimjs/utils/get/get';\nimport { isString } from '@dimjs/lang/is-string';\nimport { exception } from '@wove/react/exception';\nimport { useMediaQuery } from 'react-responsive';\nimport { findAncestors } from '@dimjs/utils/tree/find-ancestors';\nimport { getEnvName } from '@dimjs/utils/env/get-env-name';\nimport { isPlainObject } from '@dimjs/lang/is-plain-object';\nimport _MenuFoldOutlined from '@ant-design/icons/es/icons/MenuFoldOutlined.js';\nimport _MenuUnfoldOutlined from '@ant-design/icons/es/icons/MenuUnfoldOutlined.js';\nimport _UserOutlined from '@ant-design/icons/es/icons/UserOutlined.js';\nimport _LogoutOutlined from '@ant-design/icons/es/icons/LogoutOutlined.js';\nimport _CaretDownOutlined from '@ant-design/icons/es/icons/CaretDownOutlined.js';\nimport _LoadingOutlined from '@ant-design/icons/es/icons/LoadingOutlined.js';\nimport _CloseOutlined from '@ant-design/icons/es/icons/CloseOutlined.js';\nimport _RedoOutlined from '@ant-design/icons/es/icons/RedoOutlined.js';\nimport { arrayRemove } from '@dimjs/utils/array/array-remove';\nimport { Model } from '@dimjs/model-react';\n\nvar message;\nvar notification;\nvar modal;\nvar useAntdApp = (function () {\n var staticFunction = App$1.useApp();\n message = staticFunction.message;\n modal = staticFunction.modal;\n notification = staticFunction.notification;\n return null;\n});\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || false, o.configurable = true, \"value\" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: false\n }), e;\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: true,\n configurable: true\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: false\n }), e && _setPrototypeOf(t, e);\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function () {\n return !!t;\n })();\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == typeof e || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return _assertThisInitialized(t);\n}\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (String )(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n 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;\n }\n}\n\n/**\n * A helper to create a Context and Provider with no upfront default value, and\n * without having to check for undefined all the time.\n */\nfunction createCtx() {\n var ctx = /*#__PURE__*/createContext(undefined);\n function useCtx() {\n var c = useContext(ctx);\n if (c === undefined) throw new Error('useCtx must be inside a Provider with a value');\n return c;\n }\n return [useCtx, ctx.Provider]; // 'as const' makes TypeScript infer a tuple\n}\n\nvar _createCtx$1 = createCtx(),\n _createCtx2$1 = _slicedToArray(_createCtx$1, 2),\n useLayoutCtx = _createCtx2$1[0],\n LayoutProvider = _createCtx2$1[1];\nvar _createCtx3 = createCtx(),\n _createCtx4 = _slicedToArray(_createCtx3, 2),\n bootstrapCtx = _createCtx4[0],\n BootstrapCtx = _createCtx4[1];\n\nvar IFrameEvents = /*#__PURE__*/function (IFrameEvents) {\n /**\n * 接收从子iframe通知过来的消息, 或者父window发出的通知的消息\n */\n IFrameEvents[\"messageReceived\"] = \"messageReceived\";\n return IFrameEvents;\n}({});\nvar IFRAME_EVENT_FLAG = \"FLATBIZ-LAYOUT\";\nvar IframeEventEmitter = /*#__PURE__*/function () {\n function IframeEventEmitter() {\n _classCallCheck(this, IframeEventEmitter);\n _defineProperty(this, \"events\", {});\n }\n return _createClass(IframeEventEmitter, [{\n key: \"on\",\n value: function on(name, listener) {\n if (!this.events[name]) {\n this.events[name] = [];\n }\n this.events[name].push(listener);\n return this;\n }\n }, {\n key: \"off\",\n value: function off(name, listenerToRemove) {\n if (this.events[name]) {\n this.events[name] = this.events[name].filter(function (listener) {\n return listener !== listenerToRemove;\n });\n }\n return this;\n }\n }, {\n key: \"emit\",\n value: function emit(name, data) {\n var handlers = this.events[name] || [];\n if (handlers.length) {\n for (var index = 0; index < handlers.length; index++) {\n var handler = handlers[index];\n if (handler) {\n handler(data);\n }\n }\n }\n return this;\n }\n }]);\n}();\n\nvar getAllIframeElements = function getAllIframeElements() {\n var allFrames = document.querySelectorAll('[id^=\"iframe_\"]');\n return allFrames;\n};\n\n/**\n * 主父级窗体window对象使用的消息通讯\n */\nvar iframeApi = {\n /**\n * 广播消息到所有的iframes子页面\n * @param data 消息内容\n */\n broadcastMessages: function broadcastMessages(data) {\n var allIframes = getAllIframeElements();\n for (var index = 0; index < allIframes.length; index++) {\n var _iframe$contentWindow;\n var iframe = allIframes[index];\n (_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 || _iframe$contentWindow.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: data\n }), '*');\n }\n return iframeApi;\n },\n /**\n * 发送特定消息到父亲级window对象\n * @param data 消息内容\n */\n postMessage: function postMessage(data) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: data\n }), '*');\n return iframeApi;\n },\n openNewTabItem: function openNewTabItem(data) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'redirect_to_frame_layout_menu_item',\n data: data\n }\n }), '*');\n return iframeApi;\n },\n openNewThirdTabItem: function openNewThirdTabItem(menuId, options) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'redirect_to_frame_layout_menu_third_item',\n data: {\n menuId: menuId,\n options: options\n }\n }\n }), '*');\n return iframeApi;\n },\n openBrowserWindow: function openBrowserWindow(url) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'open_browser_window',\n data: {\n url: url\n }\n }\n }), '*');\n return iframeApi;\n },\n locationHref: function locationHref(url) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'browser_location_href',\n data: {\n url: url\n }\n }\n }), '*');\n return iframeApi;\n },\n tabItemHistoryChange: function tabItemHistoryChange(link) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'history_change',\n data: {\n link: link\n }\n }\n }), '*');\n return iframeApi;\n },\n openNewTabItemByMenuId: function openNewTabItemByMenuId(menuId) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'open_iframe_tabitem_by_menu_id',\n data: menuId\n }\n }), '*');\n return iframeApi;\n },\n /** 关闭当前iframe-tab,跳转上一个链路tab */closedIframeTabToPrevlink: function closedIframeTabToPrevlink() {\n var iframeNodeKey = window['__iframe_node_key'];\n var closedIframeTabId = iframeNodeKey.replace('iframe_', '');\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'closed-iframe-tab-to-prevlink',\n data: {\n closedIframeTabId: closedIframeTabId\n }\n }\n }), '*');\n return iframeApi;\n },\n tabItemRedDotToggle: function tabItemRedDotToggle(visible) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'tab-item-red-dot-toggle',\n data: {\n visible: visible\n }\n }\n }), '*');\n return iframeApi;\n },\n iframeTabOperation: function iframeTabOperation(type) {\n window.parent.postMessage(JSON.stringify({\n type: IFRAME_EVENT_FLAG,\n data: {\n type: 'iframe-tab-operation',\n data: {\n type: type\n }\n }\n }), '*');\n return iframeApi;\n }\n};\n\nvar iframeEvent = new IframeEventEmitter();\nwindow.addEventListener('message', function (e) {\n try {\n var _parse = parse(e.data),\n type = _parse.type,\n data = _parse.data;\n // 忽略框架外的消息通讯传递\n if (type === IFRAME_EVENT_FLAG) {\n iframeEvent.emit(IFrameEvents.messageReceived, data);\n }\n } catch (_error) {\n /** */\n }\n});\n\n/**\n * 使用Iframe通讯的API\n * @param onReceivedMessageCallback 接收iframe通讯消息的回调函数引用\n * @demo https://xx.xx.com/docs/admin/main/exchange\n * @example\n * ```tsx\n * const iframeApi = useIframe<MessageData>((data) => {\n * updateMessage(data);\n * });\n *\n * const handleClick = hooks.useCallbackRef(() => {\n * iframeApi.broadcastMessages({\n * fromHeader: '1',\n * });\n * });\n *\n * ```\n */\nvar useIframe = function useIframe() {\n var onReceivedMessageCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {\n /** */\n };\n var callbackRef = hooks.useCallbackRef(onReceivedMessageCallback);\n useEffect(function () {\n iframeEvent.off(IFrameEvents.messageReceived, callbackRef).on(IFrameEvents.messageReceived, callbackRef);\n return function () {\n iframeEvent.off(IFrameEvents.messageReceived, callbackRef);\n };\n }, [callbackRef]);\n return iframeApi;\n};\n\nvar useBread = function useBread(breads, routeBaseName) {\n var _matchPath;\n var params = useParams();\n var location = useLocation();\n var _useSearchParams = useSearchParams(),\n _useSearchParams2 = _slicedToArray(_useSearchParams, 1),\n search = _useSearchParams2[0];\n var newBreadList = breads.map(function (item) {\n var breadData = typeof item.breadConfig === 'function' ? item.breadConfig({\n params: params,\n search: search\n }) : item.breadConfig;\n return _objectSpread2(_objectSpread2({}, breadData), {}, {\n path: item.path\n });\n });\n routeBaseName = ensureSlash$1(routeBaseName);\n var locationBreadPath = ensureSlash$1(location.pathname.replace(routeBaseName, ''));\n var routes = newBreadList.map(function (s) {\n var pathFn = s.to || s.path;\n var path = typeof pathFn === 'function' ? pathFn({\n params: params,\n search: search\n }) : pathFn;\n var query = s.query || [];\n var allQueries = paramStrToJson(window.location.href);\n var savedQueries = pick(allQueries, ['env'].concat(query));\n var name = typeof s.name === 'function' ? s.name() : s.name;\n return {\n path: path,\n name: name,\n query: savedQueries\n };\n });\n\n /**\n * 当路由中存在动态参数时,解决参数匹配替换问题\n * 1. 路由path链路\n * a/b\n * a/b/:id\n * a/b/:id/detail\n * =>\n * 动态参数id = 123\n * a/b\n * a/b/123\n * a/b/123/detail\n */\n\n // 从长到短排序\n routes = routes.sort(function (a, b) {\n var _b$path, _a$path;\n 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);\n });\n var lastPathTarget = routes.find(function (item) {\n return matchPath(ensureSlash$1(item.path), locationBreadPath) || ensureSlash$1(item.path) === '//' || locationBreadPath.includes(ensureSlash$1(item.path));\n });\n if (lastPathTarget === undefined || lastPathTarget === null) return [];\n var routesNew = routes.sort(function (a, b) {\n var _a$path2, _b$path2;\n 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);\n }).filter(function (item) {\n return ensureSlash$1(lastPathTarget.path).includes(ensureSlash$1(item.path));\n });\n var marchParams = (_matchPath = matchPath(ensureSlash$1(lastPathTarget.path), locationBreadPath)) === null || _matchPath === void 0 ? void 0 : _matchPath.params;\n var resultRoutes = routesNew.map(function (item) {\n if (marchParams) {\n var pathFmt = ensureSlash$1(item.path);\n Object.keys(marchParams).forEach(function (key) {\n if (pathFmt.includes(\"/:\".concat(key, \"/\"))) {\n pathFmt = pathFmt.replace(\"/:\".concat(key, \"/\"), \"/\".concat(marchParams[key], \"/\"));\n }\n });\n item.path = removeSlash(pathFmt, 'after');\n }\n return item;\n });\n return resultRoutes;\n};\n\n/**\n * iframe tab 注册刷新方法\n * ```\n * 1. 定义refreshKey唯一值\n * 2. 与 useRefreshRegisterIframeTab 结合实现iframe tab之间的刷新动作\n * ```\n */\nvar useRegisterRefreshCurrentIframeTab = function useRegisterRefreshCurrentIframeTab(refreshKey, onRefresh) {\n useIframe(function (data) {\n return new Promise(function ($return, $error) {\n var iframeNodeKey, refreshFunc;\n if (data.type === '__refresh-iframe-tab') {\n var $Try_1_Post = function () {\n try {\n return $If_5.call(this);\n } catch ($boundEx) {\n return $error($boundEx);\n }\n }.bind(this);\n var $Try_1_Catch = function (error) {\n try {\n console.error(error);\n return $Try_1_Post();\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n try {\n iframeNodeKey = window['__iframe_node_key'];\n refreshFunc = window.parent[\"__refresh_\".concat(iframeNodeKey)];\n if (data.data.refreshKey === refreshKey) {\n var $Try_2_Finally = function ($Try_2_Exit) {\n return function ($Try_2_Value) {\n try {\n refreshFunc.end();\n return $Try_2_Exit && $Try_2_Exit.call(this, $Try_2_Value);\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }.bind(this);\n }.bind(this);\n refreshFunc.start();\n var $Try_2_Post = function () {\n try {\n return $If_6.call(this);\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }.bind(this);\n var $Try_2_Catch = function ($exception_3) {\n try {\n throw $exception_3;\n } catch ($boundEx) {\n return $Try_2_Finally($Try_1_Catch)($boundEx);\n }\n };\n try {\n return Promise.resolve(onRefresh(data.data.params)).then(function ($await_9) {\n try {\n return $Try_2_Finally($Try_2_Post)();\n } catch ($boundEx) {\n return $Try_2_Catch($boundEx);\n }\n }, $Try_2_Catch);\n } catch ($exception_3) {\n $Try_2_Catch($exception_3);\n }\n }\n function $If_6() {\n return $Try_1_Post();\n }\n return $If_6.call(this);\n } catch (error) {\n $Try_1_Catch(error);\n }\n }\n function $If_5() {\n return $return();\n }\n return $If_5.call(this);\n });\n });\n};\n\n/**\n * 根据 refreshKey,刷新指定iframe tab(在iframe tab中调用)\n * ```\n * 1. 使用 useRegisterRefreshCurrentIframeTab 定义的refreshKey\n * 2. 可通过 params 给刷新方法传参\n * ```\n * @returns\n */\nvar useRefreshRegisterIframeTab = function useRefreshRegisterIframeTab() {\n var iframeApi = useIframe();\n return function (refreshKey, params) {\n iframeApi.postMessage({\n type: '__refresh-iframe-tab',\n data: {\n refreshKey: refreshKey,\n params: params\n }\n });\n };\n};\n\n/** iframe tab 激活回调 */\nvar useIframeTabActive = function useIframeTabActive(callback) {\n useEffect(function () {\n callback();\n }, []);\n useIframe(function (data) {\n return new Promise(function ($return, $error) {\n var iframeNodeKey;\n if (data.type === '__iframe-tab-active') {\n var $Try_4_Post = function () {\n try {\n return $If_7.call(this);\n } catch ($boundEx) {\n return $error($boundEx);\n }\n }.bind(this);\n var $Try_4_Catch = function (error) {\n try {\n console.error(error);\n return $Try_4_Post();\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n try {\n iframeNodeKey = window['__iframe_node_key'];\n if (data.data.activeKey === iframeNodeKey) {\n return Promise.resolve(callback()).then(function ($await_10) {\n try {\n return $If_8.call(this);\n } catch ($boundEx) {\n return $Try_4_Catch($boundEx);\n }\n }.bind(this), $Try_4_Catch);\n }\n function $If_8() {\n return $Try_4_Post();\n }\n return $If_8.call(this);\n } catch (error) {\n $Try_4_Catch(error);\n }\n }\n function $If_7() {\n return $return();\n }\n return $If_7.call(this);\n });\n });\n};\n\nvar Bread = function Bread(props) {\n var _ctx$breadcrumbProps;\n var ctx = bootstrapCtx();\n var iframeApi = useIframe();\n var globalData = getGlobalData();\n var breadRoutes = useBread(ctx.breads || {}, globalData.routeBaseName);\n var breadcrumbItems = useMemo(function () {\n var items = ctx.breadTitle ? [{\n title: ctx.breadTitle\n }] : [];\n var routes = breadRoutes.sort(function (a, b) {\n return a.path.length - b.path.length;\n });\n routes.forEach(function (item, index) {\n var content = item && /*#__PURE__*/jsx(Fragment, {\n children: item.name\n });\n if (item) {\n if (routes.length - 1 !== index) {\n items.push({\n title: /*#__PURE__*/jsx(Link, {\n to: toLinkPath(item.path, item.query),\n onClick: function onClick() {\n if (ctx.layoutMode === 'iframe-tab') {\n iframeApi.tabItemRedDotToggle(false);\n }\n },\n children: content\n })\n });\n } else {\n items.push({\n title: item.name\n });\n }\n }\n });\n return items;\n }, [breadRoutes, ctx.breadTitle]);\n if (!breadRoutes.length) {\n return null;\n }\n return /*#__PURE__*/jsxs(\"div\", {\n className: \"bread-wrapper\",\n children: [/*#__PURE__*/jsx(Breadcrumb, _objectSpread2(_objectSpread2({}, ctx.breadcrumbProps), {}, {\n className: classNames('bread', (_ctx$breadcrumbProps = ctx.breadcrumbProps) === null || _ctx$breadcrumbProps === void 0 ? void 0 : _ctx$breadcrumbProps.className),\n items: breadcrumbItems\n })), /*#__PURE__*/jsx(\"div\", {\n className: \"bread-extend\",\n children: props.children\n })]\n });\n};\n\n// export const urlJoin = (first: string, second: string) => {\n// return (first || '').replace(/\\/$/, '') + '/' + (second || '').replace(/^\\//, '');\n// };\n/**\n * make sure the endfix slash as expect.\n * @param str path fragment\n * @param slashEndfix flag to indicates if we need keep last slash `/`\n */\nvar ensureSlash = function ensureSlash(str) {\n var slashEndfix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n str = str.replace(/\\/$/, '');\n return slashEndfix ? str + '/' : str;\n};\n\n/**\n * 按照item.`path`长度越长的排列到最前面\n * @param items\n * @returns\n */\nvar sortItemsByPath = function sortItemsByPath() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return items.slice(0).sort(function (a, b) {\n return (b.path || '').length - (a.path || '').length;\n });\n};\n\n/**\n * path1 是否 包含 path2\n * @param path1\n * @param path2\n * @returns\n */\nvar pathIncludePath = function pathIncludePath(path1, path2) {\n return ensureSlash(path1, true).startsWith(ensureSlash(path2, true));\n};\n\n/**\n * 找到第一个叶子节点\n * ```\n * tileMenuList: 通过treeToArray(treeList)\n * ```\n * @param tileMenuList 菜单平铺数据\n */\nvar findOneLeafNode = function findOneLeafNode(tileMenuList) {\n return tileMenuList.filter(function (item) {\n return !item.children || item.children.length === 0;\n })[0];\n};\n\n/**\n * 获取 rotue path(不包含routeBaseName)\n * ```\n * 例如:\n * /pages/flatbiz/demo-layout/main/system-set/menu1?env=me\n * routeBaseName = pages/flatbiz/demo-layout\n * =>\n * /main/system-set/menu1\n * ```\n * @param path\n * @returns\n */\nvar getPurePath = function getPurePath(path) {\n var _getHostUrlAndRouteBa2 = getHostUrlAndRouteBaseName(path),\n routeBaseName = _getHostUrlAndRouteBa2.routeBaseName;\n return urlJoin('/', path).replace(urlJoin('/', routeBaseName), '').split('?')[0];\n};\n\n/**\n * 获取 iframe rotue path(不包含routeBaseName、main)\n * ```\n * 例如:\n * routeBaseName = pages/flatbiz/demo-layout\n * 1. /pages/flatbiz/demo-layout/main/system-set/menu1?env=me\n * 2. /main/system-set/menu1?env=me\n * 3. /system-set/menu1\n * =>\n * /system-set/menu1\n * ```\n * @param path\n * @returns\n */\nvar getIframeTabPurePath = function getIframeTabPurePath(pathOrUrl) {\n var pathname = isHttpUri(pathOrUrl) ? uriParse(pathOrUrl).pathname : pathOrUrl;\n var _getHostUrlAndRouteBa3 = getHostUrlAndRouteBaseName(pathOrUrl),\n routeBaseName = _getHostUrlAndRouteBa3.routeBaseName;\n var purePath = urlJoin('/', pathname).replace(urlJoinMulti('/', routeBaseName, '/'), '').split('?')[0];\n purePath = urlJoinMulti('/', purePath, '/');\n if (purePath.startsWith('/main/')) {\n purePath = purePath.replace('/main/', '/');\n }\n return removeSlash(purePath, 'after');\n};\nvar getIframeMainPurePath = function getIframeMainPurePath(pathOrUrl) {\n var tabPurePath = getIframeTabPurePath(pathOrUrl);\n return urlJoin('/main', tabPurePath);\n};\n\n/**\n * 解析指定iframe main url数据\n * ```\n * 例如\n * http://dev.flatjs.com:6900/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx\n * =>\n * path: /main/module1/menu1\n * search: ?name=xxx\n * ```\n * @param url\n */\nvar parseIframeMainUrlInfo = function parseIframeMainUrlInfo(url) {\n var purePath = getIframeMainPurePath(url);\n var uriParseValue = uriParse(url);\n var search = uriParseValue.search;\n return {\n path: purePath,\n search: search,\n pathSearch: \"\".concat(purePath).concat(search || '')\n };\n};\n\n/**\n * 解析指定iframe 内部 url数据\n * ```\n * 例如\n * http://dev.flatjs.com:6900/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx\n * =>\n * path: /module1/menu1\n * search: ?name=xxx\n * ```\n * @param url\n */\nvar parseIframeTabItemUrlInfo = function parseIframeTabItemUrlInfo(url) {\n var purePath = getIframeTabPurePath(url);\n var uriParseValue = uriParse(url);\n var search = uriParseValue.search;\n return {\n path: purePath,\n search: search,\n pathSearch: \"\".concat(purePath).concat(search || '')\n };\n};\nvar pathStartWithPath = function pathStartWithPath(path1, path2) {\n return urlJoin(getIframeTabPurePath(path1), '/').startsWith(urlJoin(getIframeTabPurePath(path2), '/'));\n};\n\n/**\n * 猜测 iframe tab link\n * @param pathOrUrl\n *\n * ```\n * 例如1\n * routeBaseName = pages/flatbiz/demo-layout\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1?name=xxx\n * /main/module1/menu1?name=xxx\n * /module1/menu1?name=xxx\n * =>\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1?name=xxx\n * ```\n *\n * ```\n * *****\n * 例如2\n * routeBaseName = pages/flatbiz/demo-layout\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1\n * /main/module1/menu1\n * /module1/menu1\n * =>\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1\n * ```\n */\nvar guessIframeTabItemLink = function guessIframeTabItemLink(pathOrUrl) {\n var _getHostUrlAndRouteBa4 = getHostUrlAndRouteBaseName(pathOrUrl),\n routeBaseName = _getHostUrlAndRouteBa4.routeBaseName,\n hostUrl = _getHostUrlAndRouteBa4.hostUrl;\n var pathSearch = '';\n if (isHttpUri(pathOrUrl)) {\n pathSearch = parseIframeTabItemUrlInfo(pathOrUrl).pathSearch;\n } else {\n var purePath = getIframeTabPurePath(pathOrUrl);\n var search = pathOrUrl.split('?')[1] || '';\n pathSearch = search ? \"\".concat(purePath, \"?\").concat(search) : purePath;\n }\n return urlJoinMulti(hostUrl, routeBaseName, pathSearch);\n};\nvar guessNormalItemLink = function guessNormalItemLink(pathOrUrl) {\n var result = getHostUrlAndRouteBaseName(pathOrUrl);\n var routeBaseName = result.routeBaseName;\n pathOrUrl = removeSlash(pathOrUrl, 'before-after');\n routeBaseName = removeSlash(routeBaseName, 'before-after');\n if (!isHttpUri(pathOrUrl)) {\n if (pathOrUrl.startsWith(routeBaseName)) {\n return urlJoinMulti(result.hostUrl, pathOrUrl);\n }\n return urlJoinMulti(result.hostUrl, routeBaseName, pathOrUrl);\n }\n return pathOrUrl;\n};\n\n/**\n * 猜测 iframe main link\n * @param pathOrUrl\n *\n * ```\n * 例如1\n * routeBaseName = pages/flatbiz/demo-layout\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1?name=xxx\n * /main/module1/menu1?name=xxx\n * /module1/menu1?name=xxx\n * =>\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1?name=xxx\n * ```\n *\n * ```\n * *****\n * 例如2\n * routeBaseName = pages/flatbiz/demo-layout\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/module1/menu1\n * /main/module1/menu1\n * /module1/menu1\n * =>\n * http://dev.flatjs.com/pages/flatbiz/demo-iframe/main/module1/menu1\n * ```\n */\nvar guessIframeMainLink = function guessIframeMainLink(pathOrUrl) {\n var _getHostUrlAndRouteBa5 = getHostUrlAndRouteBaseName(pathOrUrl),\n routeBaseName = _getHostUrlAndRouteBa5.routeBaseName,\n hostUrl = _getHostUrlAndRouteBa5.hostUrl;\n var pathSearch = '';\n if (isHttpUri(pathOrUrl)) {\n pathSearch = parseIframeMainUrlInfo(pathOrUrl).pathSearch;\n } else {\n var purePath = getIframeMainPurePath(pathOrUrl);\n var search = pathOrUrl.split('?')[1] || '';\n pathSearch = search ? \"\".concat(purePath, \"?\").concat(search) : purePath;\n }\n return urlJoinMulti(hostUrl, routeBaseName, pathSearch);\n};\nvar removeUrlProtocol = function removeUrlProtocol(url) {\n var protocol = uriParse(url).protocol;\n return url.replace(protocol, '');\n};\n\n/**\n * 判断是否第三方链接\n * @param link\n * @returns\n */\nvar judgeLinkIsThird = function judgeLinkIsThird(link) {\n // 此处不能使用 getHostUrlAndRouteBaseName\n var _getGlobalData = getGlobalData(),\n routeBaseName = _getGlobalData.routeBaseName,\n hostUrl = _getGlobalData.hostUrl,\n siblingProjectConfigs = _getGlobalData.siblingProjectConfigs;\n var ruleBaseUrl = urlJoinMulti(hostUrl, routeBaseName, '/');\n var ruleBaseUrlNew = removeUrlProtocol(ruleBaseUrl);\n var linkNew = removeUrlProtocol(link);\n if (linkNew.startsWith(ruleBaseUrlNew)) {\n return false;\n }\n if (toArray(siblingProjectConfigs).length) {\n var target = siblingProjectConfigs === null || siblingProjectConfigs === void 0 ? void 0 : siblingProjectConfigs.find(function (item) {\n var itemUrl = urlJoinMulti(item.hostUrl, item.routeBaseName, '/');\n var itemUrlNew = removeUrlProtocol(itemUrl);\n return linkNew.startsWith(itemUrlNew);\n });\n if (target) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * 是否为iframe架构的其他项目\n * ```\n * 与 window.GLOBAL.siblingProjectConfigs 比较\n * ```\n */\nvar judgeIframeSiblingProject = function judgeIframeSiblingProject(link) {\n var _getGlobalData2 = getGlobalData(),\n routeBaseName = _getGlobalData2.routeBaseName,\n hostUrl = _getGlobalData2.hostUrl,\n siblingProjectConfigs = _getGlobalData2.siblingProjectConfigs;\n var linkPath = getIframeTabPurePath(link);\n var ruleBaseUrl = urlJoinMulti(hostUrl, routeBaseName, '/');\n var ruleBaseUrlNew = removeUrlProtocol(ruleBaseUrl);\n var linkNew = removeUrlProtocol(link);\n if (!linkNew.startsWith(ruleBaseUrlNew)) {\n var target = getHostUrlAndRouteBaseName(link);\n if (target) {\n return {\n routeBaseName: target.routeBaseName,\n hostUrl: target.hostUrl,\n moduleUrl: target ? urlJoinMulti(target.hostUrl, target.routeBaseName, linkPath) : undefined\n };\n }\n return undefined;\n }\n var projectTarget;\n var moduleTarget;\n siblingProjectConfigs === null || siblingProjectConfigs === void 0 || siblingProjectConfigs.forEach(function (item) {\n var _item$modules;\n (_item$modules = item.modules) === null || _item$modules === void 0 || _item$modules.forEach(function (temp) {\n if (pathStartWithPath(link, temp.path) && !moduleTarget) moduleTarget = temp;\n });\n if (moduleTarget) projectTarget = item;\n });\n if (moduleTarget) {\n return {\n routeBaseName: projectTarget.routeBaseName,\n hostUrl: projectTarget.hostUrl,\n moduleUrl: urlJoinMulti(projectTarget.hostUrl, projectTarget.routeBaseName, moduleTarget.path),\n name: moduleTarget.name\n };\n }\n return undefined;\n};\nvar syncUrlSearch = function syncUrlSearch(targetUrl, url) {\n var searchJson = paramStrToJson(targetUrl);\n return modifyQueryString(url, searchJson);\n};\nvar getHostUrlAndRouteBaseName = function getHostUrlAndRouteBaseName(pathOrUrl) {\n var _getGlobalData3 = getGlobalData(),\n siblingProjectConfigs = _getGlobalData3.siblingProjectConfigs,\n routeBaseName = _getGlobalData3.routeBaseName,\n hostUrl = _getGlobalData3.hostUrl;\n if (!isHttpUri(pathOrUrl)) {\n return {\n routeBaseName: routeBaseName,\n hostUrl: hostUrl\n };\n }\n var link = pathOrUrl;\n var linkNew = removeUrlProtocol(link);\n if (toArray(siblingProjectConfigs).length) {\n var target = siblingProjectConfigs === null || siblingProjectConfigs === void 0 ? void 0 : siblingProjectConfigs.find(function (item) {\n var itemUrl = urlJoinMulti(item.hostUrl, item.routeBaseName, '/');\n var itemUrlNew = removeUrlProtocol(itemUrl);\n return linkNew.startsWith(itemUrlNew);\n });\n if (target) {\n return {\n routeBaseName: target.routeBaseName,\n hostUrl: target.hostUrl\n };\n }\n }\n return {\n routeBaseName: routeBaseName,\n hostUrl: hostUrl\n };\n};\n\nvar _excluded$2 = [\"level\"];\n/**\n * 通过面包屑路径返回\n * @param props\n * @returns\n * ```\n * 1. breads 模块面包屑配置\n * 2. level回退级别,如果传递数据未获取到路由配置,则取上一级\n * 例如:-1,-2,-3\n * 3. 为什么不能使用useNavigate(-1)\n * 因为内部iframe和外部浏览器共用history历史记录,导致里外浏览器栈混乱\n * 4. 什么场景使用\n * 使用iframe tab的项目,在执行路由回退时使用\n * 5. onClick返回 promise reject,则不会进行回退处理(V4.2.4)\n * ```\n */\nvar HistoryBackButton = function HistoryBackButton(props) {\n var ctx = bootstrapCtx();\n var level = props.level,\n otherProps = _objectWithoutProperties(props, _excluded$2);\n var _getHostUrlAndRouteBa = getHostUrlAndRouteBaseName(location.href),\n routeBaseName = _getHostUrlAndRouteBa.routeBaseName;\n var routerList = useBread(ctx.breads, routeBaseName);\n var navigate = useNavigate();\n var path = useMemo(function () {\n var newLevel = level || -1;\n if (routerList.length >= 2) {\n var routerItem = routerList[routerList.length - 1 - Math.abs(newLevel)] || routerList[routerList.length - 2];\n if (routerItem) {\n return toLinkPath(routerItem.path, routerItem.query);\n } else {\n console.warn(\"\\u672A\\u83B7\\u53D6\\u5230\\u3010level\\uFF1A\".concat(newLevel, \"\\u3011\\u9762\\u5305\\u5C51\\u6570\\u636E\"));\n return '';\n }\n }\n console.warn(\"\\u672A\\u83B7\\u53D6\\u5230\\u3010level\\uFF1A\".concat(newLevel, \"\\u3011\\u9762\\u5305\\u5C51\\u6570\\u636E\"));\n return '';\n }, []);\n var onBack = function onBack() {\n if (path) {\n navigate(toLinkPath(path));\n } else {\n console.warn(\"\\u672A\\u83B7\\u53D6\\u5230\\u9762\\u5305\\u5C51\\u6570\\u636E\\uFF0C\\u65E0\\u8FD4\\u56DE\\u94FE\\u63A5\");\n }\n };\n var onClick = hooks.useCallbackRef(function (event) {\n var _props$onClick;\n var result = props === null || props === void 0 || (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, event);\n if (result && isPromise(result)) {\n return result.then(function () {\n onBack();\n });\n }\n onBack();\n return;\n });\n return /*#__PURE__*/jsx(ButtonWrapper, _objectSpread2(_objectSpread2({}, otherProps), {}, {\n onClick: onClick,\n children: props.children || '返回'\n }));\n};\nvar useHistoryBack = function useHistoryBack(props) {\n var ctx = bootstrapCtx();\n var level = (props === null || props === void 0 ? void 0 : props.level) || -1;\n var _getHostUrlAndRouteBa2 = getHostUrlAndRouteBaseName(location.href),\n routeBaseName = _getHostUrlAndRouteBa2.routeBaseName;\n var routerList = useBread(ctx.breads, routeBaseName);\n var path = useMemo(function () {\n var newLevel = level;\n if (routerList.length >= 2) {\n var routerItem = routerList[routerList.length - 1 - Math.abs(newLevel)] || routerList[routerList.length - 2];\n if (routerItem) {\n return toLinkPath(routerItem.path, routerItem.query);\n } else {\n console.warn(\"\\u672A\\u83B7\\u53D6\\u5230\\u3010level\\uFF1A\".concat(newLevel, \"\\u3011\\u9762\\u5305\\u5C51\\u6570\\u636E\"));\n return '';\n }\n }\n console.warn(\"\\u672A\\u83B7\\u53D6\\u5230\\u3010level\\uFF1A\".concat(newLevel, \"\\u3011\\u9762\\u5305\\u5C51\\u6570\\u636E\"));\n return '';\n }, []);\n return {\n path: path\n };\n};\n\nvar Loader = function Loader(_ref) {\n var _ref$spinning = _ref.spinning,\n spinning = _ref$spinning === void 0 ? false : _ref$spinning,\n _ref$fullScreen = _ref.fullScreen,\n fullScreen = _ref$fullScreen === void 0 ? false : _ref$fullScreen,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style;\n return /*#__PURE__*/jsx(\"div\", {\n style: style,\n className: classNames('loader', {\n hidden: !spinning,\n fullScreen: fullScreen\n }),\n children: /*#__PURE__*/jsxs(\"div\", {\n className: \"loader-wrapper\",\n children: [/*#__PURE__*/jsx(\"div\", {\n className: \"loader-inner\"\n }), /*#__PURE__*/jsx(\"div\", {\n className: \"loader-text\",\n children: \"LOADING\"\n })]\n })\n });\n};\n\n/**\n * 页面包装组件\n * ```\n * 1. 如果初始化面包屑被隐藏,在特殊页面级可以独立设置显示面包屑\n * <Page bread={<Bread />}/>\n * 2. 如果需要在 面包屑上添加按钮,初始化设置 bootstrap.hideDefaultBread = true,在需要按钮的页面上配置\n * <Page bread={<Bread><Button>我是按钮</Button></Bread>}/>\n * ```\n * @param props\n * @returns\n */\nvar Page = function Page(props) {\n var loading = props.loading;\n var isWindows = isWindowsEnv();\n var className = classNames('page', {\n 'page-loading': loading,\n 'page-flex': !isUndefined(props.fullIndex),\n 'page-windows': isWindows\n }, props.className);\n var backTopTarget = hooks.useCallbackRef(function () {\n if (!isUndefined(props.fullIndex)) {\n return document.querySelector('.page-full');\n }\n return document.querySelector('.page');\n });\n return /*#__PURE__*/jsxs(Fragment, {\n children: [props.bread, /*#__PURE__*/jsxs(\"div\", {\n style: props.style,\n className: className,\n id: props.elementId,\n children: [Children.map(props.children, function (item, index) {\n if (index === props.fullIndex) {\n var _item$props;\n return /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/cloneElement(item, {\n className: classNames('page-full', item === null || item === void 0 || (_item$props = item['props']) === null || _item$props === void 0 ? void 0 : _item$props.className)\n })\n }, index);\n }\n return /*#__PURE__*/jsx(Fragment, {\n children: item\n }, index);\n }), /*#__PURE__*/jsx(FloatButton.BackTop, {\n target: backTopTarget\n }), loading && /*#__PURE__*/jsx(Loader, {\n spinning: true\n })]\n })]\n });\n};\n\nvar _createCtx = createCtx$1(),\n _createCtx2 = _slicedToArray(_createCtx, 2),\n usePageWrapperCtx = _createCtx2[0],\n PageWrapperCtxProvider = _createCtx2[1];\n\nvar _excluded$1 = [\"respData\"],\n _excluded2 = [\"serviceConfig\", \"isAsync\", \"errorRender\"];\nvar PageContent$1 = function PageContent(props) {\n var _props$children;\n var respData = props.respData,\n otherProps = _objectWithoutProperties(props, _excluded$1);\n var children = typeof props.children === 'function' ? (_props$children = props.children) === null || _props$children === void 0 ? void 0 : _props$children.call(props, respData) : props.children;\n if (isFragment(children)) {\n var childrenList = Children.toArray(children.props.children);\n return /*#__PURE__*/jsx(Page, _objectSpread2(_objectSpread2({}, otherProps), {}, {\n children: childrenList\n }));\n }\n return /*#__PURE__*/jsx(Page, _objectSpread2(_objectSpread2({}, otherProps), {}, {\n children: children\n }));\n};\n\n/**\n * 为Page内置接口处理流程组件,如果无全局初始化接口请求场景,请使用Page组件\n * ```\n * 包括\n * 1. loading显示效果\n * 2. error显示效果\n * 3. 正常接口数据渲染\n * ```\n * @param props\n * @returns\n */\nvar PageWrapper = /*#__PURE__*/forwardRef(function (props, ref) {\n var serviceConfig = props.serviceConfig,\n isAsync = props.isAsync,\n errorRender = props.errorRender,\n otherProps = _objectWithoutProperties(props, _excluded2);\n var _useState = useState({\n status: 'loading'\n }),\n _useState2 = _slicedToArray(_useState, 2),\n result = _useState2[0],\n setResult = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n againRefresh = _useState4[0],\n setAgainRefresh = _useState4[1];\n var onRequest = function onRequest() {\n return new Promise(function ($return, $error) {\n var params, _result;\n var $Try_1_Post = function () {\n try {\n return $return(Promise.resolve());\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n var $Try_1_Catch = function (error) {\n try {\n setResult({\n status: 'error',\n respData: error\n });\n return $Try_1_Post();\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n try {\n params = typeof serviceConfig.params === 'function' ? serviceConfig.params() : serviceConfig.params;\n return Promise.resolve(serviceConfig.onRequest(params)).then(function ($await_2) {\n try {\n _result = $await_2;\n setResult({\n status: 'success',\n respData: _result\n });\n return $Try_1_Post();\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }, $Try_1_Catch);\n } catch (error) {\n $Try_1_Catch(error);\n }\n });\n };\n fbaHooks.useEffectCustomAsync(onRequest, []);\n var onReload = hooks.useCallbackRef(function () {\n setResult({\n status: 'loading'\n });\n void onRequest();\n });\n var onRefresh = hooks.useCallbackRef(function () {\n setAgainRefresh(true);\n onRequest().finally(function () {\n setAgainRefresh(false);\n });\n });\n useImperativeHandle(ref, function () {\n return {\n onRefresh: onRefresh,\n onReload: onReload\n };\n });\n if (result.status === 'error') {\n var _result$respData;\n if (errorRender) {\n return errorRender(result.respData);\n }\n return /*#__PURE__*/jsx(Page, {\n fullIndex: 0,\n style: {\n backgroundColor: '#fff'\n },\n children: /*#__PURE__*/jsx(Result, {\n status: \"error\",\n title: '数据获取异常',\n subTitle: ((_result$respData = result.respData) === null || _result$respData === void 0 ? void 0 : _result$respData.message) || '数据请求异常',\n extra: [/*#__PURE__*/jsx(Button, {\n type: \"primary\",\n onClick: onReload,\n children: \"\\u91CD\\u65B0\\u83B7\\u53D6\"\n }, \"console\")]\n })\n });\n }\n if (result.status === 'loading' && !isAsync) {\n return /*#__PURE__*/jsx(Page, _objectSpread2(_objectSpread2({\n loading: true\n }, otherProps), {}, {\n children: /*#__PURE__*/jsx(Fragment, {})\n }));\n }\n return /*#__PURE__*/jsxs(PageWrapperCtxProvider, {\n value: {\n onReload: onReload,\n onRefresh: onRefresh\n },\n children: [againRefresh ? /*#__PURE__*/jsx(Loader, {\n spinning: true,\n style: {\n backgroundColor: 'transparent'\n }\n }) : null, /*#__PURE__*/jsx(PageContent$1, _objectSpread2({\n loading: result.status === 'loading',\n respData: result.respData\n }, otherProps))]\n });\n});\nvar usePageWrapper = function usePageWrapper() {\n var ctx = usePageWrapperCtx();\n return ctx;\n};\n\nvar AntdAppWrapper = function AntdAppWrapper(props) {\n var theme = fbaHooks.useThemeToken();\n var appProviderValue = props.appProviderValue;\n var headerThemeConfig = appProviderValue.headerThemeConfig;\n var sidebarThemeConfig = appProviderValue.sidebarThemeConfig;\n var varStyleList = [{\n '--header-bgColor': headerThemeConfig === null || headerThemeConfig === void 0 ? void 0 : headerThemeConfig.bgColor\n }, {\n '--header-textColor': headerThemeConfig === null || headerThemeConfig === void 0 ? void 0 : headerThemeConfig.textColor\n }, {\n '--header-menuColor': headerThemeConfig === null || headerThemeConfig === void 0 ? void 0 : headerThemeConfig.menuColor\n }, {\n '--header-menuActiveTextColor': headerThemeConfig === null || headerThemeConfig === void 0 ? void 0 : headerThemeConfig.menuActiveTextColor\n }, {\n '--header-menuActiveBgColor': headerThemeConfig === null || headerThemeConfig === void 0 ? void 0 : headerThemeConfig.menuActiveBgColor\n }, {\n '--header-menuSelectedBgColor': headerThemeConfig === null || headerThemeConfig === void 0 ? void 0 : headerThemeConfig.menuSelectedBgColor\n }, {\n '--header-menuSelectedTextColor': headerThemeConfig === null || headerThemeConfig === void 0 ? void 0 : headerThemeConfig.menuSelectedTextColor\n }, {\n '--sidebar-bgColor': sidebarThemeConfig === null || sidebarThemeConfig === void 0 ? void 0 : sidebarThemeConfig.bgColor\n }, {\n '--sidebar-menuActiveBgColor': sidebarThemeConfig === null || sidebarThemeConfig === void 0 ? void 0 : sidebarThemeConfig.menuActiveBgColor\n }, {\n '--sidebar-menuActiveTextColor': sidebarThemeConfig === null || sidebarThemeConfig === void 0 ? void 0 : sidebarThemeConfig.menuActiveTextColor\n }, {\n '--sidebar-menuSelectedBgColor': sidebarThemeConfig === null || sidebarThemeConfig === void 0 ? void 0 : sidebarThemeConfig.menuSelectedBgColor\n }, {\n '--sidebar-menuSelectedTextColor': sidebarThemeConfig === null || sidebarThemeConfig === void 0 ? void 0 : sidebarThemeConfig.menuSelectedTextColor\n }, {\n '--sidebar-menuSubMenuBgColor': sidebarThemeConfig === null || sidebarThemeConfig === void 0 ? void 0 : sidebarThemeConfig.menuSubMenuBgColor\n }, {\n '--sidebar-menuColor': sidebarThemeConfig === null || sidebarThemeConfig === void 0 ? void 0 : sidebarThemeConfig.menuColor\n }, {\n '--color-primary': theme.colorPrimary\n }];\n if (appProviderValue.dark) {\n varStyleList.push({\n '--block-bg-color': get(appProviderValue, 'bgColorConfig.dark.blockBgColor', '#000')\n });\n varStyleList.push({\n '--bg-color': get(appProviderValue, 'bgColorConfig.dark.bgColor', '#1b1a1a')\n });\n } else {\n varStyleList.push({\n '--block-bg-color': get(appProviderValue, 'bgColorConfig.light.blockBgColor', '#FFF')\n });\n varStyleList.push({\n '--bg-color': get(appProviderValue, 'bgColorConfig.light.bgColor', '#F2F2F2')\n });\n }\n var varStyleText = '';\n varStyleList.forEach(function (item) {\n var key = Object.keys(item)[0];\n if (item[key]) {\n varStyleText = varStyleText + \"\".concat(key, \":\").concat(item[key], \";\");\n }\n });\n document.body.style.cssText = \"\".concat(document.body.style.cssText, \";\").concat(varStyleText);\n if (appProviderValue.dark) {\n document.body.classList.remove('light-theme');\n document.body.classList.add('dark-theme');\n } else {\n document.body.classList.remove('dark-theme');\n document.body.classList.add('light-theme');\n }\n if (appProviderValue.compact) {\n document.body.classList.add('compact-theme');\n } else {\n document.body.classList.remove('compact-theme');\n }\n return /*#__PURE__*/jsx(App$1, {\n className: appProviderValue.className,\n children: props.children\n });\n};\n\nvar NotFound = function NotFound() {\n return /*#__PURE__*/jsx(Result, {\n status: \"404\",\n title: \"404\",\n subTitle: \"Sorry, \\u60A8\\u8BBF\\u95EE\\u7684\\u5730\\u5740\\u4E0D\\u5B58\\u5728\"\n });\n};\n\nvar AppRoutes = function AppRoutes(props) {\n var getHideBreadsFlag = function getHideBreadsFlag() {\n var _props$hideBreadsPath;\n var target = (_props$hideBreadsPath = props.hideBreadsPathList) === null || _props$hideBreadsPath === void 0 ? void 0 : _props$hideBreadsPath.find(function (item) {\n if (props.layoutMode === 'iframe-tab') {\n return getIframeMainPurePath(item) == getIframeMainPurePath(location.pathname);\n }\n return getPurePath(item) == getPurePath(location.pathname);\n });\n if (target) return true;\n return !!getQueryString('hideBreads');\n };\n var hideBreads = getHideBreadsFlag();\n var routeList = props.routeList;\n var globbingRouteList = routeList.filter(function (item) {\n return valueIsEqual(item.path, ['*', '/*', '/*/']);\n });\n return /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/jsxs(Routes, {\n children: [routeList.map(function (route, index) {\n var path = route.path,\n caseSensitive = route.caseSensitive,\n Element = route.element,\n redirect = route.redirect;\n var isGlobbing = valueIsEqual(path, ['*', '/*', '/*/']);\n if (isString(redirect)) {\n return /*#__PURE__*/jsx(Route, {\n path: path,\n element: /*#__PURE__*/jsx(Navigate, {\n to: toLinkPathWithQuery(redirect)\n })\n }, index);\n }\n if (Element) {\n var elementRender = null;\n if (/*#__PURE__*/isValidElement(Element)) {\n elementRender = Element;\n } else {\n var CElement = Element;\n elementRender = /*#__PURE__*/jsx(Suspense, {\n fallback: /*#__PURE__*/jsx(Loader, {\n spinning: true\n }),\n children: /*#__PURE__*/jsx(CElement, {})\n });\n }\n var tempPath = isGlobbing ? '*' : path.endsWith('/*') ? path : urlJoinMulti(path, '*');\n return /*#__PURE__*/jsx(Route, {\n path: tempPath,\n caseSensitive: caseSensitive,\n element: /*#__PURE__*/jsxs(Fragment, {\n children: [props.breads && props.hideDefaultBread !== true && !hideBreads ? /*#__PURE__*/jsx(Bread, {\n children: props.breadExtendRender\n }) : null, elementRender]\n })\n }, index);\n }\n return null;\n }), globbingRouteList.length === 0 ? /*#__PURE__*/jsx(Route, {\n path: \"*\",\n element: /*#__PURE__*/jsx(NotFound, {})\n }) : null]\n })\n });\n};\n\nvar currentIsIframe = function currentIsIframe() {\n return self != top;\n};\n\n/**\n * Iframe Tab 模块使用\n * ```\n * 当Iframe Tab独立访问时,触发逻辑跳转正常访问页面(包含菜单)\n * ```\n */\nvar IframeTabMode = function IframeTabMode(props) {\n if (!currentIsIframe()) {\n window.location.href = guessIframeMainLink(location.href);\n return null;\n }\n return props.children;\n};\n\nvar guessNoLayoutLink = function guessNoLayoutLink(url) {\n var _getHostUrlAndRouteBa = getHostUrlAndRouteBaseName(url),\n routeBaseName = _getHostUrlAndRouteBa.routeBaseName;\n var main = \"\".concat(routeBaseName, \"/main/\");\n if (url.indexOf(main) >= 0) {\n return url.replace(main, \"\".concat(routeBaseName, \"/\"));\n }\n return url;\n};\n\n/**\n * No Layout 模块使用\n * ```\n * 当No Layout存在于ifram tab中时,触发逻辑跳转正常访问页面(包含菜单)\n * ```\n */\nvar NoLayoutMode = function NoLayoutMode(props) {\n if (currentIsIframe()) {\n window.parent.location.href = guessNoLayoutLink(location.href);\n return null;\n }\n return props.children;\n};\n\nvar ContentLayoutCheck = function ContentLayoutCheck(props) {\n if (props.layoutMode === 'iframe-tab') {\n return /*#__PURE__*/jsx(IframeTabMode, {\n children: props.children\n });\n }\n if (props.layoutMode === 'no-layout') {\n return /*#__PURE__*/jsx(NoLayoutMode, {\n children: props.children\n });\n }\n return props.children;\n};\n\nvar ErrorHandling = function ErrorHandling(props) {\n var iframeApi = useIframe();\n // 可以通过`isFabricException(error)`获取异常类型进行过滤 action里面throw new FabricException()\n var _exception$useExcepti = exception.useException(),\n _exception$useExcepti2 = _slicedToArray(_exception$useExcepti, 2),\n error = _exception$useExcepti2[0],\n clearError = _exception$useExcepti2[1];\n hooks.useUpdateEffect(function () {\n if (error && error.message) {\n var _props$verifySessionE;\n clearError();\n if ((_props$verifySessionE = props.verifySessionExpired) !== null && _props$verifySessionE !== void 0 && _props$verifySessionE.call(props, error)) {\n iframeApi.postMessage({\n type: 'session_expired'\n });\n return;\n }\n void message$1.error(error.message);\n }\n }, [error]);\n return null;\n};\n\nvar IframeTabRoutesTiming = function IframeTabRoutesTiming() {\n var iframeApi = useIframe();\n var _useLocation = useLocation(),\n pathname = _useLocation.pathname,\n search = _useLocation.search;\n hooks.useUpdateEffect(function () {\n iframeApi.tabItemHistoryChange(location.href);\n }, [pathname, search]);\n return /*#__PURE__*/jsx(Fragment, {});\n};\n\nvar LayoutPage = function LayoutPage(props) {\n // const LeaveMenuCompt = layoutCtx.LeaveMenu || LeaveMenuDefault;\n var isWindows = isWindowsEnv();\n var className = classNames('layout-page-wrapper', {\n 'layout-page-noheader': props.hideHeader,\n 'layout-page-windows': isWindows\n }, props.className);\n return /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/jsx(\"div\", {\n className: className,\n id: props.elementId,\n children: /*#__PURE__*/jsx(\"div\", {\n className: \"layout-page\",\n children: props.children\n })\n })\n });\n};\n\n/**\n * 无结构渲染,用于 layoutMode 为 no-layout、iframe-tab 场景\n * @param props\n * @returns\n */\nvar AppNoLayout = function AppNoLayout(props) {\n useAntdApp();\n var LayoutContent = props.LayoutComponent || LayoutPage;\n var ErrorHandlingRender = props.ErrorHandling || ErrorHandling;\n return /*#__PURE__*/jsx(ContentLayoutCheck, {\n layoutMode: props.iframeTabAloneView ? undefined : props.layoutMode,\n children: /*#__PURE__*/jsxs(Fragment, {\n children: [props.disableErrorHandling ? null : /*#__PURE__*/jsx(ErrorHandlingRender, {\n verifySessionExpired: props.verifySessionExpired\n }), props.layoutMode === 'iframe-tab' && /*#__PURE__*/jsx(IframeTabRoutesTiming, {}), /*#__PURE__*/jsx(LayoutContent, {\n hideHeader: props.hideHeader,\n className: props.layoutPageClassName,\n children: /*#__PURE__*/jsx(AppRoutes, _objectSpread2({}, props))\n })]\n })\n });\n};\n\nvar globalData = getGlobalData();\nvar iframeOpenNewTabItemOperateLinkKey = 'iframe-open-new-tab-item-operate-link';\n\n/**\n * 保存操作 OpenNewTabItem 链路\n */\nvar saveIframeOpenNewTabItemOperateLink = function saveIframeOpenNewTabItemOperateLink(params) {\n var operateLinkData = sessionStorageCache.get(iframeOpenNewTabItemOperateLinkKey);\n var dataList = isArray(operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList) ? operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList : [];\n dataList.push(params);\n sessionStorageCache.set(iframeOpenNewTabItemOperateLinkKey, {\n dataList: dataList\n });\n};\nvar getIframeOpenNewTabItemOperateLinkList = function getIframeOpenNewTabItemOperateLinkList() {\n var operateLinkData = sessionStorageCache.get(iframeOpenNewTabItemOperateLinkKey);\n return isArray(operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList) ? operateLinkData === null || operateLinkData === void 0 ? void 0 : operateLinkData.dataList : [];\n};\n\nvar appName = globalData.appName || 'flatbiz-layout';\nfunction removeNodesAtDepth(tree, depth, maxDepth) {\n for (var i = tree.length - 1; i >= 0; i--) {\n var node = tree[i];\n if (node.children && depth <= maxDepth) {\n node.children = removeNodesAtDepth(node.children, depth + 1, maxDepth);\n }\n if (depth === maxDepth + 1) {\n tree.splice(i, 1);\n }\n }\n return tree;\n}\n\n/**\n * 处理不合规 menus 数据\n * @param isIframeType\n * @returns\n */\nvar getMenus = function getMenus(isIframeType, siderBarMaxMenuLevel, disableTopbarMenu) {\n var menus = globalData.menus || [];\n treeToArray(menus, 'children').forEach(function (item) {\n var _item$children;\n if (isPlainObject(item.link)) {\n var _item$link, _item$link2;\n item.link = ((_item$link = item.link) === null || _item$link === void 0 ? void 0 : _item$link[getEnvName()]) || ((_item$link2 = item.link) === null || _item$link2 === void 0 ? void 0 : _item$link2['prod']);\n }\n var path = \"/\".concat(removeSlash(item.path, 'before-after'));\n var routeBaseName = removeSlash(globalData.routeBaseName, 'before-after');\n /**\n * path 处理\n */\n if (isIframeType) {\n if (path.startsWith(\"/\".concat(routeBaseName, \"/main\"))) {\n item.path = path.replace(\"/\".concat(routeBaseName), '');\n } else if (!path.startsWith('/main')) {\n item.path = \"/main\".concat(path);\n }\n } else {\n if (path.startsWith(\"/\".concat(routeBaseName))) {\n item.path = path.replace(\"/\".concat(routeBaseName), '');\n }\n }\n if (!((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length) || !!siderBarMaxMenuLevel) {\n if (isIframeType) {\n if (!item.link) {\n item.link = guessIframeTabItemLink(item.path);\n } else if (!isHttpUri(item.link)) {\n // 解决link不完整,以及link中包含/main\n item.link = guessIframeTabItemLink(item.link);\n }\n } else {\n if (item.link && !isHttpUri(item.link)) {\n // 解决link不完整\n item.link = guessNormalItemLink(item.link);\n }\n }\n }\n });\n if (siderBarMaxMenuLevel) {\n var maxDepth = !disableTopbarMenu ? siderBarMaxMenuLevel + 1 : siderBarMaxMenuLevel;\n var newTreeList = removeNodesAtDepth(cloneObject(menus), 1, maxDepth);\n console.log('menus', menus, newTreeList);\n return {\n menus: newTreeList,\n completeMenus: menus\n };\n }\n return {\n menus: menus,\n completeMenus: menus\n };\n};\n\n/**\n * 连接是否相同\n * 1. 删除连接上的env后比较\n * @param link1\n * @param link\n */\nvar linkEqual = function linkEqual(link1, link2) {\n var link1New = modifyQueryString(link1, {\n env: undefined\n });\n var link2New = modifyQueryString(link2, {\n env: undefined\n });\n return link1New === link2New;\n};\nvar findFirstLeafNode = function findFirstLeafNode(target) {\n var _findFirstNodeTarget2 = function _findFirstNodeTarget(itemList) {\n var _itemList$;\n if (isArray((_itemList$ = itemList[0]) === null || _itemList$ === void 0 ? void 0 : _itemList$.children) && itemList[0].children.length > 0) {\n return _findFirstNodeTarget2(itemList[0].children || []);\n }\n return itemList[0];\n };\n if (target.children && target.children.length > 0) {\n return _findFirstNodeTarget2(target.children);\n }\n return target;\n};\n\n/**\n * 根据 path,定位侧边栏目标菜单\n * @param tileMenus\n * @param path\n * @returns\n */\nvar parseSiderTargetMenuByPath = function parseSiderTargetMenuByPath(tileMenus, link) {\n var path = getIframeTabPurePath(link);\n if (['', '/'].includes(path)) {\n return findFirstLeafNode(tileMenus[0]);\n }\n var sortedTileMenusByPath = sortItemsByPath(tileMenus);\n var target = sortedTileMenusByPath.find(function (item) {\n return pathIncludePath(path, getIframeTabPurePath(item.path));\n });\n if (target !== null && target !== void 0 && target.children && isArray(target === null || target === void 0 ? void 0 : target.children) && target.children.length > 0) {\n // 找到 第一个叶子节点\n var leafNode = findFirstLeafNode(target);\n /**\n * 1. 可以匹配\n * location: system/idx\n * leafNode: system/idx/list\n * 2. 不可匹配\n * location: system/idx/xxx\n * leafNode: system/idx/list\n */\n if (!pathIncludePath(getIframeTabPurePath(leafNode.path), path)) return undefined;\n return leafNode;\n }\n return target;\n};\n\n/**\n * 根据 path,定位一级目标菜单\n */\nvar parseFirstMenuByPath = function parseFirstMenuByPath(menus, link) {\n var path = getIframeTabPurePath(link);\n var sortedMenus = sortItemsByPath(menus);\n var target = sortedMenus.find(function (item) {\n return pathIncludePath(path, getIframeTabPurePath(item.path));\n });\n return target;\n};\n\n// 获取目标菜单父级链路\nvar getTargetMenuParentChain = function getTargetMenuParentChain(menuId, siderBarMenus) {\n var result = findAncestors(siderBarMenus, function (item) {\n return valueIsEqual(item.id, menuId);\n });\n var chainMenuIdList = [];\n result.forEach(function (item) {\n return chainMenuIdList.push(\"\".concat(item.id));\n });\n return chainMenuIdList;\n};\nvar saveIframeTabToCache = function saveIframeTabToCache(menuList) {\n var newList = isArray(menuList) ? menuList : [];\n window[appName] = newList;\n sessionStorageCache.set(appName, {\n menuList: newList\n });\n};\nvar getIframeTabCacheList = function getIframeTabCacheList() {\n try {\n if (window[appName]) return _toConsumableArray(window[appName]);\n var _ref = sessionStorageCache.get(appName) || {},\n menuList = _ref.menuList;\n var newList = isArray(menuList) ? menuList : [];\n window[appName] = newList;\n return newList;\n } catch (_error) {\n return [];\n }\n};\nvar saveCacheIframeActiveItem = function saveCacheIframeActiveItem(item) {\n window[\"\".concat(appName, \"-iframeActiveItem\")] = item;\n sessionStorageCache.set(\"\".concat(appName, \"-iframeActiveItem\"), _objectSpread2({}, item));\n};\nvar getCacheIframeActiveItem = function getCacheIframeActiveItem() {\n if (getIframeTabCacheList().length === 0) return undefined;\n try {\n if (window[\"\".concat(appName, \"-iframeActiveItem\")]) return window[\"\".concat(appName, \"-iframeActiveItem\")];\n var activeItem = sessionStorageCache.get(\"\".concat(appName, \"-iframeActiveItem\"));\n var item = activeItem && activeItem.id ? activeItem : undefined;\n window[\"\".concat(appName, \"-iframeActiveItem\")] = item;\n return item;\n } catch (_error) {\n return undefined;\n }\n};\n\n/**\n * 更新 or 保存 iframeList\n * @param item\n * @param iframeTabList\n */\nvar addOrUpdateIframeTabListByMenuItem = function addOrUpdateIframeTabListByMenuItem(item, iframeTabList) {\n var targetLink = item.link;\n /**\n * 1. iframeTabList中link 与 targetLink是否完全相同\n */\n var target = iframeTabList.find(function (item) {\n return linkEqual(item.link, targetLink);\n });\n if (target) {\n return {\n iframeTabListNew: iframeTabList,\n iframeTabActiveItem: target\n };\n }\n return addIframeTabListByMenuItem(iframeTabList, item);\n};\nvar addIframeTabListByMenuItem = function addIframeTabListByMenuItem(iframeTabList, item) {\n var pathSearch;\n var siderbarMenuLinkIsThird = judgeLinkIsThird(item.link);\n if (siderbarMenuLinkIsThird) {\n pathSearch = item.path;\n } else {\n pathSearch = parseIframeMainUrlInfo(toLinkPath(item.link)).pathSearch;\n }\n var newItem = {\n id: getUuid(),\n link: toLinkPath(item.link),\n name: item.name,\n metaTitle: item.metaTitle,\n iframeKey: \"\".concat(Date.now()),\n menuId: item.id ? \"\".concat(item.id) : undefined,\n pathSearch: pathSearch\n };\n var newList = iframeTabList.concat(newItem);\n return {\n iframeTabListNew: newList,\n iframeTabActiveItem: newItem\n };\n};\nvar clearStorage = function clearStorage() {\n sessionStorageCache.remove(appName);\n // sessionStorageCache.remove(`${appName}-iframeActiveItem`);\n};\n\n/**\n * 判断目标 link 是否为 菜单叶子节点\n * @param targetLink\n * @param siderBarTileMenus\n * @returns\n */\nvar judgeTargetLinkIsLeafNodeMenu = function judgeTargetLinkIsLeafNodeMenu(targetLink, siderBarTileMenus) {\n var sortedTileMenusByPath = sortItemsByPath(siderBarTileMenus);\n var targetPath = getIframeTabPurePath(targetLink);\n var target = sortedTileMenusByPath.find(function (item) {\n return pathIncludePath(targetPath, getIframeTabPurePath(item.path));\n });\n return target ? toArray(target === null || target === void 0 ? void 0 : target.children).length === 0 : false;\n};\n\n/**\n * 初始化根据当前 location 定位 iframe tab\n * ```\n * ```\n * @param siderBarTileMenus 侧边栏平铺菜单列表\n * @param siderbarTargetMenu 侧边栏激活菜单\n * @returns\n */\nvar initSyncIframeTabCacheByLocation = function initSyncIframeTabCacheByLocation(siderBarTileMenus, siderbarTargetMenu) {\n var iframeTabCacheList = getIframeTabCacheList();\n // iframe 激活 tab\n var iframeTabActiveItem = getCacheIframeActiveItem();\n if (siderbarTargetMenu) {\n var locationIsLeafNode = siderBarTileMenus.length > 0 ? judgeTargetLinkIsLeafNodeMenu(location.href, siderBarTileMenus) : true;\n // 是否外部第三方链接\n var siderbarMenuLinkIsThird = judgeLinkIsThird(siderbarTargetMenu.link);\n var siderbarMenuLinkIsExternal = judgeIframeSiblingProject(siderbarTargetMenu.link);\n\n /**\n * 1. 如果 location.href 为叶子节点,可指定为 待渲染link(location.href与siderbarTargetMenu.link参数可能不同)\n * 2. 如果 location.href 不是叶子节点,可能存在链接不完整,则指定 siderbarTargetMenu.link 为 待渲染link\n */\n var waitRenderLink;\n var waitRenderLinkPathSearch;\n if (siderbarMenuLinkIsThird) {\n waitRenderLink = syncUrlSearch(location.href, siderbarTargetMenu.link);\n waitRenderLinkPathSearch = parseIframeMainUrlInfo(location.href).pathSearch;\n } else if (siderbarMenuLinkIsExternal) {\n // 取出当前\n var locationPathSearch = parseIframeTabItemUrlInfo(location.href).pathSearch;\n var siderbarTarget = parseIframeTabItemUrlInfo(siderbarTargetMenu.link).pathSearch;\n if (locationPathSearch) {\n waitRenderLink = toLinkPath(siderbarTargetMenu.link.replace(siderbarTarget, locationPathSearch));\n } else {\n waitRenderLink = toLinkPath(siderbarTargetMenu.link);\n }\n waitRenderLinkPathSearch = parseIframeMainUrlInfo(waitRenderLink).pathSearch;\n } else {\n waitRenderLink = guessIframeTabItemLink(toLinkPath(locationIsLeafNode ? location.href : siderbarTargetMenu.link));\n waitRenderLinkPathSearch = parseIframeMainUrlInfo(waitRenderLink).pathSearch;\n }\n if (iframeTabActiveItem) {\n var iframeTabActiveLink = iframeTabActiveItem.link;\n /**\n * 如果 waitRenderLink 与 iframeTabActiveLink 完全相同\n */\n if (linkEqual(waitRenderLink, iframeTabActiveLink)) {\n var result = {\n // name: tabName,\n menuId: siderbarTargetMenu.id,\n link: waitRenderLink,\n pathSearch: waitRenderLinkPathSearch\n };\n updateCaheIframeListByActiveId(iframeTabActiveItem.id, result);\n return _objectSpread2(_objectSpread2({}, iframeTabActiveItem), result);\n }\n var path1 = getIframeTabPurePath(location.href);\n var path2 = getIframeTabPurePath(iframeTabActiveLink);\n if (path1 === path2) {\n updateCaheIframeListByActiveId(iframeTabActiveItem.id, {\n link: waitRenderLink,\n pathSearch: waitRenderLinkPathSearch\n });\n return _objectSpread2(_objectSpread2({}, iframeTabActiveItem), {}, {\n link: waitRenderLink,\n pathSearch: waitRenderLinkPathSearch\n });\n }\n /**\n * location.href 与 iframeTabActive link 没有关系,则覆盖当前iframe tab\n */\n var link = siderbarMenuLinkIsExternal ? syncUrlSearch(location.href, siderbarTargetMenu.link) : waitRenderLink;\n var _newItem = {\n link: link,\n name: getIframeTabName(waitRenderLink, siderbarTargetMenu.name),\n metaTitle: siderbarTargetMenu.metaTitle,\n id: getUuid(),\n iframeKey: \"\".concat(Date.now()),\n menuId: \"\".concat(siderbarTargetMenu.id),\n pathSearch: waitRenderLinkPathSearch\n };\n // 覆盖 当前 iframe tab\n updateCaheIframeListByActiveId(iframeTabActiveItem.id, _newItem);\n return _newItem;\n } else {\n var _link = siderbarMenuLinkIsExternal ? siderbarTargetMenu.link : waitRenderLink;\n var _newItem2 = {\n link: _link,\n name: getIframeTabName(waitRenderLink, siderbarTargetMenu.name),\n metaTitle: siderbarTargetMenu.metaTitle,\n id: getUuid(),\n iframeKey: \"\".concat(Date.now()),\n menuId: \"\".concat(siderbarTargetMenu.id),\n pathSearch: waitRenderLinkPathSearch\n };\n saveIframeTabToCache(iframeTabCacheList.concat(_newItem2));\n return _newItem2;\n }\n }\n /**\n * 未定位到菜单\n * 1. 新增未知异常新窗口\n * 2. 判断切换显示未知异常已存在窗口\n */\n var locationLink = guessIframeTabItemLink(toLinkPath(location.href));\n var locationLinkPathSearch = parseIframeMainUrlInfo(locationLink).pathSearch;\n var siblingProjectTarget = judgeIframeSiblingProject(location.href);\n if (iframeTabCacheList.length > 0) {\n // 缓存 是否存在 相同link\n var _newItem3 = iframeTabCacheList.find(function (item) {\n return linkEqual(guessIframeTabItemLink(item.link), locationLink);\n });\n if (_newItem3) {\n return _newItem3;\n }\n var locationPath = getIframeTabPurePath(location.href);\n // 缓存 是否存在 相同 path\n _newItem3 = iframeTabCacheList.find(function (item) {\n var currentPath = getIframeTabPurePath(item.link);\n return linkEqual(currentPath, locationPath);\n });\n if (_newItem3) {\n var _link2 = siblingProjectTarget ? _newItem3.link : locationLink;\n updateCaheIframeListByActiveId(_newItem3.id, {\n link: _link2\n });\n return _objectSpread2(_objectSpread2({}, _newItem3), {}, {\n link: _link2,\n pathSearch: locationLinkPathSearch\n });\n }\n }\n var newItem = {\n id: getUuid(),\n iframeKey: \"\".concat(Date.now()),\n link: siblingProjectTarget ? siblingProjectTarget.moduleUrl : locationLink,\n name: (siblingProjectTarget === null || siblingProjectTarget === void 0 ? void 0 : siblingProjectTarget.name) || getIframeTabName(location.pathname, '未知页面'),\n menuId: undefined,\n metaTitle: undefined,\n pathSearch: locationLinkPathSearch\n };\n if (iframeTabActiveItem) {\n updateCaheIframeListByActiveId(iframeTabActiveItem.id, newItem);\n } else {\n saveIframeTabToCache(iframeTabCacheList.concat(newItem));\n }\n return newItem;\n};\n\n/**\n * 判断当前地址 是否 与iframeTabList 中link相同\n * @param iframeTabList\n */\nvar findIframeTabItemByEqualUrl = function findIframeTabItemByEqualUrl(url, iframeTabList) {\n var target = iframeTabList.find(function (item) {\n return linkEqual(guessIframeTabItemLink(url), guessIframeTabItemLink(item.link));\n });\n return target;\n};\n\n/**\n * 刷新当前激活的 iframeTabItem\n * @param iframeTabActiveId\n * @param newLink\n * @param iframeTabList\n * @returns\n */\nvar refreshIframeTabIframeKey = function refreshIframeTabIframeKey(iframeTabActiveId) {\n var iframeTabList = getIframeTabCacheList();\n var iframeTabTarget = iframeTabList.find(function (item) {\n return item.id === iframeTabActiveId;\n });\n if (iframeTabTarget) {\n iframeTabTarget.iframeKey = \"\".concat(Date.now());\n }\n return iframeTabList;\n};\nvar updateCaheIframeListByActiveId = function updateCaheIframeListByActiveId(activeId, option) {\n var iframeTabList = getIframeTabCacheList();\n var targetIndex = iframeTabList.findIndex(function (item) {\n return valueIsEqual(item.id, activeId);\n });\n if (targetIndex >= 0) {\n iframeTabList[targetIndex] = _objectSpread2(_objectSpread2({}, iframeTabList[targetIndex]), option);\n saveCacheIframeActiveItem(iframeTabList[targetIndex]);\n }\n saveIframeTabToCache(iframeTabList);\n};\n\n/**\n * 外部针对出现 iframe tab标题为未知页面的配置\n * window['_iframeTabConfig'] = {\n * '/system-get/menu3/detail': {\n * name: '详情',\n * },\n * };\n * @param pathOrUrl\n * @returns\n */\nvar getIframeTabClientConfig = function getIframeTabClientConfig(pathOrUrl) {\n var _parseIframeTabItemUr = parseIframeTabItemUrlInfo(pathOrUrl),\n path = _parseIframeTabItemUr.path;\n var config = window['_iframeTabConfig'] || {};\n var target = Object.keys(config).find(function (key) {\n return urlJoin('/', key) === path;\n });\n return target && isPlainObject(config[target]) ? config[target] : {};\n};\nvar getIframeTabName = function getIframeTabName(pathOrUrl, defaultName) {\n return getIframeTabClientConfig(pathOrUrl).name || defaultName;\n};\n\nvar Shrink = function Shrink(props) {\n var layoutCtx = useLayoutCtx();\n var onCollapseClick = hooks.useCallbackRef(function () {\n // 设置手动控制侧边栏菜单收缩\n if (layoutCtx.collapsed) {\n var _layoutCtx$onShrinkCh;\n window['__manual_control_shrink'] = true;\n layoutCtx.onChangeCollapsed(false);\n (_layoutCtx$onShrinkCh = layoutCtx.onShrinkChange) === null || _layoutCtx$onShrinkCh === void 0 || _layoutCtx$onShrinkCh.call(layoutCtx, 'open');\n } else {\n window['__manual_control_shrink'] = false;\n setTimeout(function () {\n var _layoutCtx$onShrinkCh2;\n layoutCtx.onChangeCollapsed(true);\n (_layoutCtx$onShrinkCh2 = layoutCtx.onShrinkChange) === null || _layoutCtx$onShrinkCh2 === void 0 || _layoutCtx$onShrinkCh2.call(layoutCtx, 'close');\n }, 100);\n }\n });\n if (layoutCtx.siderBarMenus.length > 0 && !layoutCtx.hideSidebarMenu) {\n return /*#__PURE__*/jsx(\"div\", {\n className: classNames('layout-shrink', props.className),\n onClick: onCollapseClick,\n children: layoutCtx.collapsed ? /*#__PURE__*/jsx(_MenuUnfoldOutlined, {}) : /*#__PURE__*/jsx(_MenuFoldOutlined, {})\n });\n }\n return /*#__PURE__*/jsx(\"div\", {\n className: classNames('layout-shrink', props.className)\n });\n};\n\nvar HeaderAccount = function HeaderAccount() {\n var _layoutCtx$onCustomUs2, _global$user2;\n var global = hooks.useGlobal();\n var layoutCtx = useLayoutCtx();\n var onSignOutHandle = hooks.useCallbackRef(function () {\n var _layoutCtx$onSignOut;\n // 清除缓存\n clearStorage();\n (_layoutCtx$onSignOut = layoutCtx.onSignOut) === null || _layoutCtx$onSignOut === void 0 || _layoutCtx$onSignOut.call(layoutCtx, global.user, global.hostUrl);\n });\n var defaultMenuItems = [{\n label: '退出登录',\n key: '0',\n onClick: onSignOutHandle,\n icon: /*#__PURE__*/jsx(_LogoutOutlined, {})\n }];\n var getUserAvatar = function getUserAvatar() {\n var _layoutCtx$onCustomUs, _global$user;\n var customUserAvatar = (_layoutCtx$onCustomUs = layoutCtx.onCustomUserAvatar) === null || _layoutCtx$onCustomUs === void 0 ? void 0 : _layoutCtx$onCustomUs.call(layoutCtx, global);\n if (customUserAvatar) {\n return typeof customUserAvatar === 'string' ? /*#__PURE__*/jsx(\"img\", {\n className: \"user-avatar\",\n src: customUserAvatar,\n alt: \"\"\n }) : customUserAvatar;\n }\n var avatar = (_global$user = global.user) === null || _global$user === void 0 ? void 0 : _global$user.avatar;\n return avatar ? /*#__PURE__*/jsx(\"img\", {\n className: \"user-avatar\",\n src: avatar,\n alt: \"\"\n }) : /*#__PURE__*/jsx(Button, {\n size: \"small\",\n shape: \"circle\",\n icon: /*#__PURE__*/jsx(_UserOutlined, {})\n }, \"user\");\n };\n return /*#__PURE__*/jsx(\"div\", {\n className: \"header-account\",\n children: /*#__PURE__*/jsx(Dropdown, {\n menu: {\n items: layoutCtx.accountOperateMenuItems ? layoutCtx.accountOperateMenuItems : defaultMenuItems\n },\n arrow: true,\n trigger: ['hover'],\n overlayClassName: \"account-dropdown-overlay\",\n getPopupContainer: function getPopupContainer() {\n return document.querySelector('.header-account');\n },\n children: /*#__PURE__*/jsx(\"div\", {\n className: \"header-account-wraper\",\n children: /*#__PURE__*/jsxs(Space, {\n size: [8, 0],\n children: [getUserAvatar(), /*#__PURE__*/jsx(\"div\", {\n children: ((_layoutCtx$onCustomUs2 = layoutCtx.onCustomUserName) === null || _layoutCtx$onCustomUs2 === void 0 ? void 0 : _layoutCtx$onCustomUs2.call(layoutCtx, global)) || ((_global$user2 = global.user) === null || _global$user2 === void 0 ? void 0 : _global$user2.userName) || '...'\n })]\n })\n })\n })\n });\n};\n\nvar HeaderBrand = function HeaderBrand() {\n var _hooks$useGlobal = hooks.useGlobal(),\n defaultPage = _hooks$useGlobal.defaultPage;\n var layoutCtx = useLayoutCtx();\n var toDefaultPage = hooks.useCallbackRef(function () {\n if (defaultPage) {\n window.location.href = defaultPage;\n }\n });\n var sidebarWidth = layoutCtx.sidebarWidth;\n var headerHeight = layoutCtx.headerHeight;\n return /*#__PURE__*/jsx(\"div\", {\n className: \"layout-brand\",\n onClick: toDefaultPage,\n style: {\n width: sidebarWidth,\n height: headerHeight,\n lineHeight: \"\".concat(headerHeight, \"px\")\n },\n children: layoutCtx.HeaderBrand ? layoutCtx.HeaderBrand() : /*#__PURE__*/jsxs(Fragment, {\n children: [layoutCtx.logoPath ? /*#__PURE__*/jsx(\"div\", {\n className: \"brand-logo\",\n style: {\n backgroundImage: \"url(\".concat(layoutCtx.logoPath, \")\")\n }\n }) : null, /*#__PURE__*/jsx(\"div\", {\n className: \"brand-name\",\n children: layoutCtx.brandName\n })]\n })\n });\n};\n\nvar HeaderBarIcon = function HeaderBarIcon(props) {\n var svgImg = props.iconImg || props.iconImgActive;\n if (svgImg) {\n var isSvg = !isHttpUri(svgImg) ? true : svgImg.endsWith('.svg');\n if (isSvg) {\n return /*#__PURE__*/jsx(Fragment, {\n children: props.isActive ? /*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-img-active\",\n style: {\n marginRight: 5,\n display: 'block'\n },\n children: props.iconImgActive ? /*#__PURE__*/jsx(SvgHttpView, {\n svgPath: props.iconImgActive,\n color: props.textColor,\n style: {\n display: 'block'\n },\n width: 16,\n height: 16\n }) : /*#__PURE__*/jsx(SvgHttpView, {\n svgPath: svgImg,\n color: props.activeColor,\n style: {\n display: 'block'\n },\n width: 16,\n height: 16\n })\n }) : /*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-img\",\n style: {\n marginRight: 5,\n display: 'block'\n },\n children: /*#__PURE__*/jsx(SvgHttpView, {\n svgPath: svgImg,\n color: props.textColor,\n style: {\n display: 'block'\n },\n width: 16,\n height: 16\n })\n })\n });\n }\n }\n if (props.iconImg && props.iconImgActive) {\n return /*#__PURE__*/jsx(Fragment, {\n children: props.isActive ? /*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-img-active\",\n style: {\n backgroundImage: \"url(\".concat(props.iconImgActive, \")\"),\n marginRight: 5,\n display: 'block'\n }\n }) : /*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-img\",\n style: {\n backgroundImage: \"url('\".concat(props.iconImg, \"')\"),\n marginRight: 5,\n display: 'block'\n }\n })\n });\n }\n return /*#__PURE__*/jsx(Fragment, {});\n};\nvar Header = function Header() {\n var _layoutCtx$headerThem, _layoutCtx$headerThem2, _layoutCtx$headerThem3, _layoutCtx$headerThem4, _layoutCtx$headerThem5, _layoutCtx$headerThem6, _layoutCtx$headerThem7;\n var layoutCtx = useLayoutCtx();\n var menus = layoutCtx.menus,\n topMenuActiveItem = layoutCtx.topMenuActiveItem,\n headerHeight = layoutCtx.headerHeight;\n var activeColor = (_layoutCtx$headerThem = layoutCtx.headerThemeConfig) === null || _layoutCtx$headerThem === void 0 ? void 0 : _layoutCtx$headerThem.menuSelectedTextColor;\n var textColor = (_layoutCtx$headerThem2 = layoutCtx.headerThemeConfig) === null || _layoutCtx$headerThem2 === void 0 ? void 0 : _layoutCtx$headerThem2.textColor;\n var topMenus = useMemo(function () {\n return layoutCtx.disableTopbarMenu ? [] : menus.map(function (item) {\n return {\n key: \"\".concat(item.id),\n icon: layoutCtx.showHeaderMenuIcon ? /*#__PURE__*/jsx(HeaderBarIcon, {\n iconImg: item.iconImg,\n iconImgActive: item.iconImgActive,\n activeColor: activeColor,\n textColor: textColor,\n isActive: valueIsEqual(topMenuActiveItem === null || topMenuActiveItem === void 0 ? void 0 : topMenuActiveItem.id, item.id)\n }) : undefined,\n label: item.name\n };\n });\n }, [activeColor, layoutCtx.disableTopbarMenu, layoutCtx.showHeaderMenuIcon, menus, textColor, topMenuActiveItem]);\n var onClick = hooks.useCallbackRef(function (data) {\n var targetItem = menus.filter(function (item) {\n return valueIsEqual(data.key, item.id);\n })[0];\n if (targetItem.target === '_blank') {\n window.open(targetItem.link);\n return;\n }\n var isIframeRoute = layoutCtx.iframeTopbarMenuClickType === 'route';\n var isNormal = layoutCtx.layoutMode === 'normal';\n if (!isNormal && isIframeRoute) {\n var _layoutCtx$topMenuAct;\n if (!valueIsEqual((_layoutCtx$topMenuAct = layoutCtx.topMenuActiveItem) === null || _layoutCtx$topMenuAct === void 0 ? void 0 : _layoutCtx$topMenuAct.id, targetItem.id)) {\n var _targetItem$children;\n if (!((_targetItem$children = targetItem.children) !== null && _targetItem$children !== void 0 && _targetItem$children.length)) {\n layoutCtx.iframeTopRouteMenuChange(_objectSpread2(_objectSpread2({}, targetItem), {}, {\n link: guessIframeTabItemLink(targetItem.link)\n }));\n } else {\n layoutCtx.iframeTopRouteMenuChange(targetItem);\n }\n }\n return;\n }\n if (!isNormal && !valueIsEqual(targetItem === null || targetItem === void 0 ? void 0 : targetItem.id, topMenuActiveItem === null || topMenuActiveItem === void 0 ? void 0 : topMenuActiveItem.id)) {\n // 清理上一个TOPBAR链接的storage缓存.\n clearStorage();\n }\n /**\n * 此处后端配置的link 可能权限不存在,直接获取第一个子菜单的叶子节点link\n * 1. 如果有 link,则直接使用\n * 2. 如果没有配置link,则使用children中的第一个叶子节点\n */\n if (targetItem.link) {\n // top menu中配置的 菜单域名可能不同,不能使用 当前GLOBAL中的host,直接使用link\n window.location.href = toLinkPath(targetItem.link);\n } else {\n var leafNode = findOneLeafNode(treeToArray(targetItem.children || [], 'children'));\n if (leafNode !== null && leafNode !== void 0 && leafNode.link) {\n window.location.href = toLinkPath(isNormal ? guessNormalItemLink(leafNode.link) : guessIframeMainLink(leafNode.link));\n return;\n } else if (leafNode !== null && leafNode !== void 0 && leafNode.path) {\n window.location.href = toLinkPath(isNormal ? guessNormalItemLink(leafNode.path) : guessIframeMainLink(leafNode.path));\n return;\n }\n }\n });\n var className = classNames('flatbiz-layout-main-header', {\n 'flatbiz-layout-main-header-has-menu': topMenus.length > 0\n });\n return /*#__PURE__*/jsxs(\"div\", {\n className: className,\n style: {\n height: headerHeight\n },\n children: [layoutCtx.hideSidebarMenu ? /*#__PURE__*/jsx(HeaderBrand, {}) : null, layoutCtx.showTopMenuShrink ? /*#__PURE__*/jsx(Shrink, {\n className: \"header-shrink\"\n }) : null, layoutCtx.systemName ? /*#__PURE__*/jsx(\"div\", {\n className: \"flatbiz-layout-system-name\",\n children: layoutCtx.systemName\n }) : null, /*#__PURE__*/jsxs(\"div\", {\n className: \"flatbiz-layout-header-fill\",\n children: [/*#__PURE__*/jsx(ConfigProviderWrapper, _objectSpread2(_objectSpread2({\n theme: {\n token: {\n fontSize: (_layoutCtx$headerThem3 = layoutCtx.headerThemeConfig) === null || _layoutCtx$headerThem3 === void 0 ? void 0 : _layoutCtx$headerThem3.menuTextFontSize\n },\n components: {\n Menu: {\n itemColor: (_layoutCtx$headerThem4 = layoutCtx.headerThemeConfig) === null || _layoutCtx$headerThem4 === void 0 ? void 0 : _layoutCtx$headerThem4.menuColor,\n itemHoverColor: (_layoutCtx$headerThem5 = layoutCtx.headerThemeConfig) === null || _layoutCtx$headerThem5 === void 0 ? void 0 : _layoutCtx$headerThem5.menuActiveTextColor,\n horizontalItemSelectedBg: (_layoutCtx$headerThem6 = layoutCtx.headerThemeConfig) === null || _layoutCtx$headerThem6 === void 0 ? void 0 : _layoutCtx$headerThem6.menuSelectedBgColor,\n horizontalItemSelectedColor: (_layoutCtx$headerThem7 = layoutCtx.headerThemeConfig) === null || _layoutCtx$headerThem7 === void 0 ? void 0 : _layoutCtx$headerThem7.menuSelectedTextColor\n }\n }\n }\n }, layoutCtx.topMenuConfigProviderProps), {}, {\n children: topMenus.length > 0 ? /*#__PURE__*/jsx(Menu, {\n className: \"flatbiz-layout-topmenu\",\n mode: \"horizontal\",\n overflowedIndicatorPopupClassName: \"flatbiz-layout-topmenu-overflowed-modal\",\n direction: \"rtl\",\n triggerSubMenuAction: \"click\",\n selectedKeys: topMenuActiveItem !== null && topMenuActiveItem !== void 0 && topMenuActiveItem.id ? [\"\".concat(topMenuActiveItem.id)] : undefined\n // defaultSelectedKeys={topMenuActiveItem?.id ? [`${topMenuActiveItem.id}`] : undefined}\n ,\n items: topMenus,\n onClick: onClick,\n theme: \"light\"\n }) : null\n })), layoutCtx.Header ? /*#__PURE__*/jsx(layoutCtx.Header, {}) : null]\n }), /*#__PURE__*/jsx(HeaderAccount, {})]\n });\n};\n\nvar Sider = Layout.Sider;\nvar SiderBarIcon = function SiderBarIcon(props) {\n var svgImg = props.iconImg || props.icon;\n if (svgImg) {\n var isSvg = !isHttpUri(svgImg) ? true : svgImg.endsWith('.svg');\n if (isSvg) {\n return /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-img\",\n children: /*#__PURE__*/jsx(SvgHttpView, {\n svgPath: svgImg,\n color: props.textColor,\n style: {\n display: 'block'\n },\n width: 16,\n height: 16\n })\n }), /*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-img-active\",\n children: /*#__PURE__*/jsx(SvgHttpView, {\n svgPath: svgImg,\n color: props.colorActive,\n style: {\n display: 'block'\n },\n width: 16,\n height: 16\n })\n })]\n });\n }\n }\n if (props.iconImg && props.iconImgActive) {\n return /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-img\",\n style: {\n backgroundImage: \"url(\".concat(props.iconImg, \")\")\n }\n }), /*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-img-active\",\n style: {\n backgroundImage: \"url(\".concat(props.iconImgActive, \")\")\n }\n })]\n });\n }\n return /*#__PURE__*/jsx(\"div\", {\n className: \"menu-icon-placeholder\"\n });\n};\nvar SiderBar = function SiderBar() {\n var _layoutCtx$sidebarThe, _layoutCtx$sidebarThe2, _layoutCtx$sidebarThe3, _layoutCtx$sidebarThe4, _layoutCtx$sidebarThe5, _layoutCtx$sidebarThe6, _layoutCtx$sidebarThe7, _layoutCtx$sidebarThe8, _layoutCtx$sidebarThe9, _layoutCtx$sidebarThe0, _layoutCtx$sidebarThe1, _layoutCtx$sidebarThe10, _layoutCtx$sidebarThe11, _layoutCtx$sidebarThe12, _layoutCtx$sidebarThe13;\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n searchValue = _useState2[0],\n setSearchValue = _useState2[1];\n var openKeysRef = useRef();\n var layoutCtx = useLayoutCtx();\n var multipleOpen = layoutCtx.siderBarFirstMenuFoldMultipleOpen;\n multipleOpen = typeof multipleOpen === 'undefined' ? true : multipleOpen;\n var colorActive = (_layoutCtx$sidebarThe = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe === void 0 ? void 0 : _layoutCtx$sidebarThe.menuActiveTextColor;\n var textColor = (_layoutCtx$sidebarThe2 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe2 === void 0 ? void 0 : _layoutCtx$sidebarThe2.menuColor;\n var navigate = useNavigate();\n var siderBarTileMenus = layoutCtx.siderBarTileMenus;\n var menuItemActiveKeyRef = useRef();\n var antdMenuitems = useMemo(function () {\n var menusTreeList = layoutCtx.siderBarMenus;\n if (searchValue) {\n menusTreeList = treeFilter(cloneObject(menusTreeList), function (node) {\n var _node$name;\n var value = (_node$name = node.name) === null || _node$name === void 0 ? void 0 : _node$name.toLowerCase();\n return value.indexOf(searchValue.toLowerCase()) >= 0;\n }, {\n childrenName: 'children'\n });\n openKeysRef.current = treeToArray(menusTreeList, 'children').map(function (item) {\n return String(item.id);\n });\n } else {\n openKeysRef.current = undefined;\n }\n var _getMenuItem = function getMenuItem(itemList, index) {\n return itemList.map(function (item) {\n if (item.children && item.children.length > 0) {\n return {\n key: String(item.id),\n icon: /*#__PURE__*/jsx(SiderBarIcon, {\n iconImg: item.iconImg,\n iconImgActive: item.iconImgActive,\n colorActive: colorActive,\n icon: item.icon,\n textColor: textColor\n }),\n label: item.name,\n children: _getMenuItem(item.children, index + 1),\n popupClassName: 'flatbiz-layout-sider-submenu-popup',\n className: index === 0 && !item.iconImg && !item.iconImgActive ? 'flatbiz-layout-menu-item-no-icon' : undefined\n };\n }\n return {\n key: String(item.id),\n icon: /*#__PURE__*/jsx(SiderBarIcon, {\n iconImg: item.iconImg,\n iconImgActive: item.iconImgActive,\n colorActive: colorActive,\n icon: item.icon,\n textColor: textColor\n }),\n label: item.name\n };\n });\n };\n return _getMenuItem(menusTreeList, 0);\n }, [colorActive, layoutCtx.siderBarMenus, searchValue]);\n var onMenuClick = hooks.useCallbackRef(function (data) {\n if (!valueIsEqual(menuItemActiveKeyRef.current, data.key)) {\n var _layoutCtx$siderBarMe;\n (_layoutCtx$siderBarMe = layoutCtx.siderBarMenuOnChange) === null || _layoutCtx$siderBarMe === void 0 || _layoutCtx$siderBarMe.call(layoutCtx, data);\n }\n var targetItem = siderBarTileMenus.filter(function (item) {\n return valueIsEqual(data.key, item.id);\n })[0];\n if (targetItem.target === '_blank') {\n menuItemActiveKeyRef.current = data.key;\n window.open(targetItem.link);\n return;\n }\n window['__sider_bar_menu_click'] = true;\n layoutCtx.onChangeSelectedKeys(data.keyPath);\n if (layoutCtx.layoutMode === 'iframe-main') {\n layoutCtx.onIframeChange(data.key, 'menuClick');\n menuItemActiveKeyRef.current = data.key;\n return;\n }\n menuItemActiveKeyRef.current = data.key;\n if (targetItem.link) {\n window.location.href = toLinkPath(targetItem.link);\n return;\n }\n if (targetItem.path) {\n navigate(toLinkPath(targetItem.path));\n document.title = targetItem.metaTitle || targetItem.name;\n }\n });\n var onOpenChange = hooks.useCallbackRef(function (openKeys) {\n if (!multipleOpen && openKeys.length > 0) {\n var target = openKeys[openKeys.length - 1];\n // 判断点击的是否为一级菜单\n if (layoutCtx.siderBarMenus.find(function (item) {\n return valueIsEqual(item.id, target);\n })) {\n layoutCtx.onChangeOpendKeys([target]);\n return;\n }\n }\n layoutCtx.onChangeOpendKeys(openKeys);\n });\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n refreshKey = _useState4[0],\n setRefreshKey = _useState4[1];\n useEffect(function () {\n // 在操作shrink时,两种类型的Menu结构都缓存时,在切换shrink时会出现错误菜单闪屏(未找到更合适的解决方案,此处修改Menu key值后菜单重置可解决闪屏问题)\n setRefreshKey(Date.now());\n }, [layoutCtx.collapsed]);\n var menuProps = {\n mode: !layoutCtx.collapsed ? 'inline' : 'vertical',\n items: antdMenuitems,\n inlineIndent: (_layoutCtx$sidebarThe3 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe3 === void 0 ? void 0 : _layoutCtx$sidebarThe3.inlineIndent,\n onClick: onMenuClick,\n selectedKeys: layoutCtx.selectedKeys,\n onOpenChange: onOpenChange\n };\n if (!layoutCtx.collapsed) {\n menuProps.openKeys = openKeysRef.current || layoutCtx.opendKeys;\n }\n var onSearchChange = function onSearchChange(event) {\n var value = event.target.value;\n setSearchValue(value);\n };\n var sliderBarColor = ((_layoutCtx$sidebarThe4 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe4 === void 0 ? void 0 : _layoutCtx$sidebarThe4.bgColor) || '';\n var manualControlShrink = window['__manual_control_shrink'];\n var onMouseLeave = function onMouseLeave() {\n if (manualControlShrink || !layoutCtx.sidebarMouseHoverOpen) return;\n if (!layoutCtx.collapsed) {\n layoutCtx.onChangeCollapsed(true);\n }\n };\n var onMouseEnter = hooks.useDebounceClick(function () {\n if (manualControlShrink || !layoutCtx.sidebarMouseHoverOpen) return;\n if (layoutCtx.collapsed) {\n layoutCtx.onChangeCollapsed(false);\n }\n }, 500);\n return /*#__PURE__*/jsxs(Sider, {\n theme: \"light\",\n className: \"flatbiz-layout-sider\",\n collapsed: layoutCtx.collapsed,\n width: layoutCtx.sidebarWidth,\n collapsedWidth: layoutCtx.collapsedWidth,\n children: [/*#__PURE__*/jsx(HeaderBrand, {}), /*#__PURE__*/jsxs(ConfigProviderWrapper, _objectSpread2(_objectSpread2({\n theme: {\n token: {\n controlHeight: (_layoutCtx$sidebarThe5 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe5 === void 0 ? void 0 : _layoutCtx$sidebarThe5.menuItemHeight,\n fontSize: (_layoutCtx$sidebarThe6 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe6 === void 0 ? void 0 : _layoutCtx$sidebarThe6.menuTextFontSize\n },\n components: {\n Menu: {\n itemBg: (_layoutCtx$sidebarThe7 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe7 === void 0 ? void 0 : _layoutCtx$sidebarThe7.bgColor,\n itemColor: (_layoutCtx$sidebarThe8 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe8 === void 0 ? void 0 : _layoutCtx$sidebarThe8.menuColor,\n itemHoverColor: (_layoutCtx$sidebarThe9 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe9 === void 0 ? void 0 : _layoutCtx$sidebarThe9.menuActiveTextColor,\n itemHoverBg: (_layoutCtx$sidebarThe0 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe0 === void 0 ? void 0 : _layoutCtx$sidebarThe0.menuActiveBgColor,\n itemActiveBg: (_layoutCtx$sidebarThe1 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe1 === void 0 ? void 0 : _layoutCtx$sidebarThe1.menuActiveBgColor,\n itemSelectedColor: (_layoutCtx$sidebarThe10 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe10 === void 0 ? void 0 : _layoutCtx$sidebarThe10.menuSelectedTextColor,\n itemSelectedBg: (_layoutCtx$sidebarThe11 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe11 === void 0 ? void 0 : _layoutCtx$sidebarThe11.menuSelectedBgColor,\n subMenuItemBg: (_layoutCtx$sidebarThe12 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe12 === void 0 ? void 0 : _layoutCtx$sidebarThe12.menuSubMenuBgColor,\n subMenuItemSelectedColor: (_layoutCtx$sidebarThe13 = layoutCtx.sidebarThemeConfig) === null || _layoutCtx$sidebarThe13 === void 0 ? void 0 : _layoutCtx$sidebarThe13.menuSelectedTextColor\n }\n }\n }\n }, layoutCtx.sidebarMenuConfigProviderProps), {}, {\n children: [layoutCtx.sliderBarSearch ? /*#__PURE__*/jsxs(\"div\", {\n className: classNames('sider-bar-search', {\n 'sider-bar-search-bgfff': valueIsEqual(sliderBarColor.toLocaleLowerCase(), ['#fff', '#ffff'])\n }),\n children: [/*#__PURE__*/jsx(InputWrapper, {\n allowClear: true,\n placeholder: \"\\u641C\\u7D22\",\n onChange: onSearchChange\n }), multipleOpen ? /*#__PURE__*/jsx(\"div\", {\n style: {\n marginLeft: 10\n },\n children: /*#__PURE__*/jsx(IconWrapper, {\n onClick: function onClick() {\n layoutCtx.onChangeOpendKeys([]);\n },\n size: \"small\",\n icon: /*#__PURE__*/jsx(SvgHttpView, {\n svgPath: \"lucide/fold-vertical\",\n width: 18,\n height: 18\n })\n })\n }) : null]\n }) : null, /*#__PURE__*/jsx(Menu, _objectSpread2(_objectSpread2({}, menuProps), {}, {\n onMouseLeave: onMouseLeave,\n onMouseEnter: onMouseEnter\n }), refreshKey)]\n })), !layoutCtx.hideSidebarShrink && /*#__PURE__*/jsx(Shrink, {\n className: \"sider-bar-shrink\"\n })]\n });\n};\n\nvar EventHandling = function EventHandling() {\n var navigate = useNavigate();\n var layoutCtx = useLayoutCtx();\n var _hooks$useGlobal = hooks.useGlobal(),\n user = _hooks$useGlobal.user,\n hostUrl = _hooks$useGlobal.hostUrl;\n useIframe(function (result) {\n if (result.type === 'redirect_to_frame_layout_menu_item') {\n var iframeTabItem = result.data;\n layoutCtx.onIframeChangeByHttpUrl(guessIframeMainLink(iframeTabItem.link), {\n name: iframeTabItem.name,\n metaTitle: iframeTabItem.metaTitle\n });\n } else if (result.type === 'redirect_to_frame_layout_menu_third_item') {\n var menuId = result.data.menuId;\n var target = layoutCtx.siderBarTileMenus.find(function (item) {\n return valueIsEqual(item.id, menuId);\n });\n if (!target) {\n void message$1.error(\"menuId\\uFF1A\".concat(menuId, \"\\uFF0C\\u672A\\u5339\\u914D\\u5230\\u83DC\\u5355\\u6570\\u636E\"));\n return;\n }\n var link = result.data['options'].link;\n var name = result.data['options'].name;\n layoutCtx.onOpenNewIframeThirdMenuItem({\n menuItem: target,\n link: link,\n name: name\n });\n } else if (result.type === 'open_browser_window') {\n var _result$data;\n var url = (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data['url'];\n if (url) {\n window.open(url);\n }\n } else if (result.type === 'browser_location_href') {\n var _result$data2;\n var _url = (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2['url'];\n if (_url) {\n window.location.href = guessIframeMainLink(_url);\n }\n } else if (result.type === 'history_change') {\n var _result$data3;\n if (layoutCtx.cancelIframeRouteSyncParent) {\n return;\n }\n var _link = (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3['link'];\n var _parseIframeMainUrlIn = parseIframeMainUrlInfo(_link),\n pathSearch = _parseIframeMainUrlIn.pathSearch;\n navigate(pathSearch);\n var _target = parseSiderTargetMenuByPath(layoutCtx.siderBarTileMenus, _link);\n var tabName = getIframeTabName(_link, _target.name);\n // 更新缓存数据\n updateCaheIframeListByActiveId(layoutCtx.iframeTabActiveItem.id, {\n link: _link,\n name: tabName,\n metaTitle: _target.metaTitle,\n pathSearch: pathSearch\n });\n layoutCtx.onUpdateIframeTabName(tabName);\n } else if (result.type === 'open_iframe_tabitem_by_menu_id') {\n var id = result.data;\n var _target2 = layoutCtx.siderBarTileMenus.find(function (item) {\n return valueIsEqual(item.id, id);\n });\n if (_target2) {\n if ((_target2 === null || _target2 === void 0 ? void 0 : _target2.target) === '_blank') {\n window.open(_target2.link);\n return;\n }\n layoutCtx.onIframeChange(_target2.id, 'menuClick', {\n locationMenu: true\n });\n }\n } else if (result.type === 'closed-iframe-tab-to-prevlink') {\n var _result$data4;\n var closedIframeTabId = (_result$data4 = result.data) === null || _result$data4 === void 0 ? void 0 : _result$data4['closedIframeTabId'];\n var operateLinkList = getIframeOpenNewTabItemOperateLinkList();\n if (closedIframeTabId) {\n var _target3 = operateLinkList.find(function (item) {\n return item.endTabId === closedIframeTabId;\n });\n layoutCtx.onDeleteCurrentIframeTabItemOpenTargetIframeTab(_target3 === null || _target3 === void 0 ? void 0 : _target3.startTabId, _target3 === null || _target3 === void 0 ? void 0 : _target3.startTabMenuId);\n }\n } else if (result.type === 'tab-item-red-dot-toggle') {\n var _result$data5;\n var visible = (_result$data5 = result.data) === null || _result$data5 === void 0 ? void 0 : _result$data5['visible'];\n layoutCtx.onChangeActiveTabItemRedDot(visible);\n } else if (result.type === 'iframe-tab-operation') {\n var _result$data6;\n var type = (_result$data6 = result.data) === null || _result$data6 === void 0 ? void 0 : _result$data6['type'];\n if (type === 'removeMe') {\n layoutCtx.onDeleteIframeTabItem('me', \"\".concat(layoutCtx.iframeTabActiveItem.id));\n } else if (type === 'removeOther') {\n layoutCtx.onDeleteIframeTabItem('otherAll');\n } else if (type === 'removeAll') {\n layoutCtx.onDeleteIframeTabItem('all');\n } else if (type === 'refreshMe') {\n layoutCtx.onIframeChange(layoutCtx.iframeTabActiveItem.id, 'iframeRefresh');\n }\n }\n });\n useIframe(function (result) {\n if (result.type === 'session_expired') {\n var _layoutCtx$onSessionE;\n (_layoutCtx$onSessionE = layoutCtx.onSessionExpired) === null || _layoutCtx$onSessionE === void 0 || _layoutCtx$onSessionE.call(layoutCtx, user, hostUrl);\n }\n });\n return /*#__PURE__*/jsx(Fragment, {});\n};\n\nvar IframePageInner = function IframePageInner(props) {\n return /*#__PURE__*/jsx(Fragment, {\n children: /*#__PURE__*/jsx(\"iframe\", {\n id: \"iframe_\".concat(String(props.id)),\n src: props.link,\n width: \"100%\",\n height: \"100%\",\n style: {\n border: 'none'\n },\n onLoad: props.onLoad,\n className: \"iframe-\".concat(props.menuKey)\n }, props.iframeKey)\n });\n};\nvar IframePage = /*#__PURE__*/memo(IframePageInner, function (prevProps, nextProps) {\n return prevProps.iframeKey === nextProps.iframeKey;\n});\n\nvar PageContent = function PageContent() {\n var _useLayoutCtx = useLayoutCtx(),\n iframeTabList = _useLayoutCtx.iframeTabList,\n iframeTabBarExtra = _useLayoutCtx.iframeTabBarExtra,\n iframeTabActiveItem = _useLayoutCtx.iframeTabActiveItem,\n onIframeChange = _useLayoutCtx.onIframeChange,\n onDeleteIframeTabItem = _useLayoutCtx.onDeleteIframeTabItem,\n siderBarTileMenus = _useLayoutCtx.siderBarTileMenus,\n redDotMap = _useLayoutCtx.redDotMap,\n onChangeActiveTabItemRedDot = _useLayoutCtx.onChangeActiveTabItemRedDot;\n var _useState = useState([]),\n _useState2 = _slicedToArray(_useState, 2),\n iframeLoadKeyList = _useState2[0],\n setIframeLoadKeyList = _useState2[1];\n var _useState3 = useState([]),\n _useState4 = _slicedToArray(_useState3, 2),\n refreshIframeIds = _useState4[0],\n setRefreshIframeIds = _useState4[1];\n var refreshIframeStart = hooks.useCallbackRef(function (tabItem) {\n refreshIframeIds.push(tabItem.id);\n setRefreshIframeIds(_toConsumableArray(refreshIframeIds));\n });\n var refreshIframeStartEnd = hooks.useCallbackRef(function (tabItem) {\n var newArray = arrayRemove(refreshIframeIds, tabItem.id);\n setRefreshIframeIds(_toConsumableArray(newArray));\n });\n fbaHooks.useEffectCustom(function () {\n if (iframeTabActiveItem.id) {\n window[\"__refresh_iframe_\".concat(iframeTabActiveItem.id)] = {\n start: function start() {\n refreshIframeStart(iframeTabActiveItem);\n },\n end: refreshIframeStartEnd.bind(null, iframeTabActiveItem)\n };\n }\n }, [iframeTabActiveItem.id]);\n var onTabClick = hooks.useDebounceClick(function (key) {\n if (key === (iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id) && redDotMap[(iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id) || '']) {\n onChangeActiveTabItemRedDot(false);\n }\n onIframeChange(key, 'iframeTabClick');\n }, 200);\n var onTabItemRemove = hooks.useCallbackRef(function (tabItemKey) {\n if (valueIsEqual(tabItemKey, iframeTabActiveItem.id)) {\n onDeleteIframeTabItem('me', tabItemKey);\n } else {\n onDeleteIframeTabItem('other', tabItemKey);\n }\n });\n var onClick = hooks.useCallbackRef(function (data) {\n if (data.key === '1') {\n onIframeChange(iframeTabActiveItem.id, 'iframeRefresh');\n } else if (data.key === '2') {\n onDeleteIframeTabItem('otherAll');\n } else if (data.key === '3') {\n onDeleteIframeTabItem('all');\n }\n });\n var menuItems = [{\n label: '刷新当前',\n key: '1',\n onClick: onClick.bind(null, {\n key: '1'\n }),\n icon: /*#__PURE__*/jsx(_RedoOutlined, {})\n }, {\n label: '关闭其他',\n key: '2',\n onClick: onClick.bind(null, {\n key: '2'\n }),\n icon: /*#__PURE__*/jsx(_CloseOutlined, {})\n }, {\n label: '关闭所有',\n key: '3',\n onClick: onClick.bind(null, {\n key: '3'\n }),\n icon: /*#__PURE__*/jsx(_LogoutOutlined, {})\n }];\n var tabItems = iframeTabList.map(function (item) {\n var pageSpinner = !arrayFindByLoosely(iframeLoadKeyList, item.iframeKey);\n var menuKey;\n if (item.menuId) {\n var _siderBarTileMenus$fi;\n menuKey = (_siderBarTileMenus$fi = siderBarTileMenus.find(function (temp) {\n return valueIsEqual(temp.id, item.menuId);\n })) === null || _siderBarTileMenus$fi === void 0 ? void 0 : _siderBarTileMenus$fi.key;\n }\n // const fixHeight = hideHeader ? 38 : 38 + (headerHeight as number);\n return {\n label: redDotMap[item.id] ? /*#__PURE__*/jsxs(\"span\", {\n style: {\n position: 'relative'\n },\n children: [/*#__PURE__*/jsx(Badge, {\n dot: true,\n className: \"iframe-tabs-tab-badge\"\n }), item.name]\n }) : item.name,\n key: \"\".concat(item.id),\n style: {\n height: '100%',\n position: 'relative'\n },\n closable: true,\n closeIcon: arrayFindByLoosely(refreshIframeIds, item.id) ? /*#__PURE__*/jsx(_LoadingOutlined, {}) : /*#__PURE__*/jsx(\"span\", {\n className: \"tab-icon\"\n }),\n children: /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(Loader, {\n spinning: pageSpinner,\n style: {\n backgroundColor: 'var(--bg-color)'\n }\n }), /*#__PURE__*/jsx(IframePage, {\n id: item.id,\n link: item.link,\n iframeKey: item.iframeKey,\n onLoad: function onLoad() {\n var target = document.querySelector(\"#iframe_\".concat(item.id));\n try {\n if (target.contentWindow) {\n target.contentWindow['__iframe_node_key'] = \"iframe_\".concat(item.id);\n target.contentWindow['__iframe_node'] = item;\n }\n } catch (_error) {\n // 异常不处理,iframe写入属性可能会存在跨域问题\n }\n setIframeLoadKeyList(function (prev) {\n return prev.concat(item.iframeKey);\n });\n },\n menuKey: menuKey\n })]\n })\n };\n });\n return /*#__PURE__*/jsx(Tabs, {\n hideAdd: true,\n items: tabItems,\n activeKey: iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id,\n onTabClick: onTabClick\n // onChange={onTabChange}\n ,\n style: {\n height: '100%'\n },\n className: \"iframe-tabs\",\n type: iframeTabList.length === 1 ? 'card' : 'editable-card',\n onEdit: onTabItemRemove,\n tabBarExtraContent: {\n right: iframeTabBarExtra ? iframeTabBarExtra : /*#__PURE__*/jsx(Dropdown, {\n menu: {\n items: menuItems\n },\n arrow: true,\n className: \"menu-tabs-operate\",\n placement: \"bottomRight\",\n overlayClassName: \"menu-tabs-operate-dropdown\"\n // 此处不能使用 click\n ,\n trigger: ['hover'],\n children: /*#__PURE__*/jsx(_CaretDownOutlined, {})\n })\n }\n });\n};\nvar PageContentSingleFrame = function PageContentSingleFrame() {\n var ctx = useLayoutCtx();\n var actived = ctx.iframeTabActiveItem;\n var _useState5 = useState([]),\n _useState6 = _slicedToArray(_useState5, 2),\n iframeLoadKeyList = _useState6[0],\n setIframeLoadKeyList = _useState6[1];\n var pageSpinner = !arrayFindByLoosely(iframeLoadKeyList, actived === null || actived === void 0 ? void 0 : actived.iframeKey);\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n flex: 1,\n position: 'relative'\n },\n children: [/*#__PURE__*/jsx(Loader, {\n spinning: pageSpinner,\n style: {\n backgroundColor: 'var(--bg-color)'\n }\n }), /*#__PURE__*/jsx(\"iframe\", {\n id: \"iframe_\".concat(String(actived === null || actived === void 0 ? void 0 : actived.id)),\n src: actived === null || actived === void 0 ? void 0 : actived.link,\n width: \"100%\",\n height: \"100%\",\n style: {\n border: 'none'\n },\n onLoad: function onLoad() {\n setIframeLoadKeyList(function (prev) {\n return prev.concat(actived === null || actived === void 0 ? void 0 : actived.iframeKey);\n });\n }\n }, actived === null || actived === void 0 ? void 0 : actived.iframeKey)]\n });\n};\nvar PageLevelContent = function PageLevelContent() {\n var ctx = useLayoutCtx();\n var _useState7 = useState(),\n _useState8 = _slicedToArray(_useState7, 2),\n activeItem = _useState8[0],\n setActiveItem = _useState8[1];\n var targetList = useMemo(function () {\n var _treeToArray$find;\n var targetList = (_treeToArray$find = treeToArray(ctx.completeMenus, 'children').find(function (item) {\n var _ctx$siderBarMenuActi;\n return valueIsEqual(item.id, (_ctx$siderBarMenuActi = ctx.siderBarMenuActiveItem) === null || _ctx$siderBarMenuActi === void 0 ? void 0 : _ctx$siderBarMenuActi.id);\n })) === null || _treeToArray$find === void 0 ? void 0 : _treeToArray$find.children;\n return targetList || [ctx.siderBarMenuActiveItem];\n }, [ctx.completeMenus, ctx.siderBarMenuActiveItem]);\n var items = useMemo(function () {\n return targetList === null || targetList === void 0 ? void 0 : targetList.map(function (item) {\n return {\n key: \"\".concat(item.id),\n label: item.name,\n children: /*#__PURE__*/jsx(Fragment, {})\n };\n });\n }, [targetList]);\n useEffect(function () {\n var _targetList$;\n setActiveItem(_objectSpread2(_objectSpread2({}, targetList[0]), {}, {\n id: \"\".concat((_targetList$ = targetList[0]) === null || _targetList$ === void 0 ? void 0 : _targetList$.id)\n }));\n }, [targetList]);\n var onTabClick = function onTabClick(activeKey) {\n if (valueIsEqual(activeKey, activeItem === null || activeItem === void 0 ? void 0 : activeItem.id)) {\n var _frameInstance$conten;\n var frameInstance = document.querySelector(\"#content_topmenu_\".concat(activeKey));\n setActiveItem(_objectSpread2(_objectSpread2({}, activeItem), {}, {\n key: Date.now(),\n link: toLinkPath((frameInstance === null || frameInstance === void 0 || (_frameInstance$conten = frameInstance['contentWindow']) === null || _frameInstance$conten === void 0 || (_frameInstance$conten = _frameInstance$conten.location) === null || _frameInstance$conten === void 0 ? void 0 : _frameInstance$conten.href) || (activeItem === null || activeItem === void 0 ? void 0 : activeItem.link))\n }));\n return;\n }\n var target = targetList.find(function (item) {\n return valueIsEqual(item.id, activeKey);\n });\n setActiveItem(_objectSpread2(_objectSpread2({}, target), {}, {\n id: \"\".concat(target === null || target === void 0 ? void 0 : target.id)\n }));\n };\n return /*#__PURE__*/jsxs(\"div\", {\n style: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n },\n children: [items.length > 1 ? /*#__PURE__*/jsx(Tabs, {\n tabBarStyle: {\n margin: 0\n },\n onTabClick: onTabClick,\n defaultActiveKey: \"1\",\n activeKey: activeItem === null || activeItem === void 0 ? void 0 : activeItem.id,\n items: items,\n type: \"card\",\n className: \"content-top-menus\"\n }) : null, /*#__PURE__*/jsx(\"iframe\", {\n id: \"content_topmenu_\".concat(activeItem === null || activeItem === void 0 ? void 0 : activeItem.id),\n src: activeItem === null || activeItem === void 0 ? void 0 : activeItem.link,\n width: \"100%\",\n height: \"100%\",\n style: {\n border: 'none',\n flex: 1\n }\n }, activeItem === null || activeItem === void 0 ? void 0 : activeItem.key)]\n });\n};\nvar LayoutIFrame = function LayoutIFrame() {\n var layoutCtx = useLayoutCtx();\n var _useState9 = useState('init'),\n _useState0 = _slicedToArray(_useState9, 2),\n renderStatus = _useState0[0],\n setRenderStatus = _useState0[1];\n var _useState1 = useState(),\n _useState10 = _slicedToArray(_useState1, 2),\n errorData = _useState10[0],\n setErrorData = _useState10[1];\n var iframeTabRenderPreHook = layoutCtx.iframeTabRenderPreHook;\n fbaHooks.useEffectCustomAsync(function () {\n return new Promise(function ($return, $error) {\n var $Try_2_Post = function () {\n try {\n return $return();\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n var $Try_2_Catch = function (error) {\n try {\n setRenderStatus('error');\n setErrorData(error);\n return $Try_2_Post();\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n try {\n if (iframeTabRenderPreHook !== null && iframeTabRenderPreHook !== void 0 && iframeTabRenderPreHook.execute) {\n return Promise.resolve(iframeTabRenderPreHook === null || iframeTabRenderPreHook === void 0 ? void 0 : iframeTabRenderPreHook.execute()).then(function ($await_4) {\n try {\n return $If_3.call(this);\n } catch ($boundEx) {\n return $Try_2_Catch($boundEx);\n }\n }.bind(this), $Try_2_Catch);\n }\n function $If_3() {\n setRenderStatus('yes');\n return $Try_2_Post();\n }\n return $If_3.call(this);\n } catch (error) {\n $Try_2_Catch(error);\n }\n });\n }, []);\n if (renderStatus === 'init') {\n return /*#__PURE__*/jsxs(\"div\", {\n className: \"iframe-tab-render-pre-hook\",\n style: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column'\n },\n children: [/*#__PURE__*/jsx(Gap, {\n height: 38\n }), /*#__PURE__*/jsx(\"div\", {\n style: {\n position: 'relative',\n flex: 1\n },\n children: /*#__PURE__*/jsx(Loader, {\n spinning: true,\n style: {\n backgroundColor: 'var(--bg-color)'\n }\n })\n })]\n });\n }\n if (renderStatus === 'error') {\n return /*#__PURE__*/jsx(\"div\", {\n className: \"iframe-tab-render-pre-hook\",\n style: {\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center'\n },\n children: iframeTabRenderPreHook !== null && iframeTabRenderPreHook !== void 0 && iframeTabRenderPreHook.errorRender ? iframeTabRenderPreHook === null || iframeTabRenderPreHook === void 0 ? void 0 : iframeTabRenderPreHook.errorRender(errorData) : /*#__PURE__*/jsx(Result, {\n style: {\n backgroundColor: '#fff',\n width: 500,\n margin: '0 auto',\n borderRadius: 10,\n boxShadow: '0 0 20px rgba(0, 0, 0, 0.01)',\n transform: 'translateY(-20%)'\n },\n status: \"error\",\n title: /*#__PURE__*/jsx(\"span\", {\n style: {\n fontSize: 20\n },\n children: \"\\u9875\\u9762\\u6E32\\u67D3\\u524D\\u7F6E\\u5904\\u7406\\u5931\\u8D25\"\n }),\n subTitle: errorData === null || errorData === void 0 ? void 0 : errorData.message\n })\n });\n }\n if (layoutCtx.multiFrameTabs) {\n return /*#__PURE__*/jsx(PageContent, {});\n }\n if (layoutCtx.siderBarMaxMenuLevel) {\n return /*#__PURE__*/jsx(PageLevelContent, {});\n }\n return /*#__PURE__*/jsx(PageContentSingleFrame, {});\n};\n\nvar App = function App() {\n var layoutCtx = useLayoutCtx();\n var isIframeMain = layoutCtx.layoutMode === 'iframe-main';\n useAntdApp();\n var LayoutContent = layoutCtx.LayoutComponent || LayoutPage;\n var isWindows = isWindowsEnv();\n return /*#__PURE__*/jsxs(Fragment, {\n children: [/*#__PURE__*/jsx(EventHandling, {}), /*#__PURE__*/jsxs(Layout, {\n hasSider: true,\n className: classNames('flatbiz-layout', {\n 'flatbiz-layout-windows': isWindows\n }),\n children: [layoutCtx.hideSidebarMenu ? null : /*#__PURE__*/jsx(SiderBar, {}), /*#__PURE__*/jsxs(Layout, {\n className: \"flatbiz-layout-main\",\n hasSider: false,\n children: [!layoutCtx.hideHeader ? /*#__PURE__*/jsx(Header, {}) : null, isIframeMain ? /*#__PURE__*/jsx(LayoutIFrame, {}) : /*#__PURE__*/jsx(LayoutContent, {\n className: layoutCtx.layoutPageClassName,\n children: /*#__PURE__*/jsx(AppRoutes, {\n routeList: layoutCtx.routeList,\n breadExtendRender: layoutCtx.breadExtendRender,\n breads: layoutCtx.breads,\n hideDefaultBread: layoutCtx.hideDefaultBread,\n breadTitle: layoutCtx.breadTitle\n // initSiderBarMenuActiveItem={props.initSiderBarMenuActiveItem}\n ,\n layoutMode: layoutCtx.layoutMode,\n hideBreadsPathList: layoutCtx.hideBreadsPathList\n })\n })]\n })]\n })]\n });\n};\n\nvar NormalRoutesTiming = function NormalRoutesTiming() {\n var layoutCtx = useLayoutCtx();\n var _useLocation = useLocation(),\n pathname = _useLocation.pathname,\n search = _useLocation.search;\n hooks.useUpdateEffect(function () {\n if (!window['__sider_bar_menu_click']) {\n layoutCtx.normalModePositionMenu(location.href);\n }\n window['__sider_bar_menu_click'] = false;\n }, [pathname, search]);\n return /*#__PURE__*/jsx(Fragment, {});\n};\n\nvar _excluded = [\"sidebarWidth\", \"componentSize\", \"locale\", \"logoPath\", \"headerThemeConfig\", \"sidebarThemeConfig\", \"completeMenus\", \"onIframeTabActiveEvent\"];\nvar AppProvider = function AppProvider(props) {\n var navigate = useNavigate();\n var sidebarWidth = props.sidebarWidth,\n componentSize = props.componentSize,\n locale = props.locale,\n logoPath = props.logoPath,\n headerThemeConfig = props.headerThemeConfig,\n sidebarThemeConfig = props.sidebarThemeConfig,\n completeMenus = props.completeMenus,\n onIframeTabActiveEvent = props.onIframeTabActiveEvent,\n options = _objectWithoutProperties(props, _excluded);\n var isIframeMain = options.layoutMode === 'iframe-main';\n var unMatchHiddenSiderBar = isUndefined(options.unMatchHiddenSiderBar) ? true : options.unMatchHiddenSiderBar;\n var isMobile = useMediaQuery({\n query: '(max-width: 767px)'\n });\n var iframeApi = useIframe();\n var _useState = useState(props.initSidebarShrinkClosed),\n _useState2 = _slicedToArray(_useState, 2),\n collapsed = _useState2[0],\n setCollapsed = _useState2[1];\n var _useState3 = useState([]),\n _useState4 = _slicedToArray(_useState3, 2),\n opendKeys = _useState4[0],\n setOpendKeys = _useState4[1];\n var _useState5 = useState([]),\n _useState6 = _slicedToArray(_useState5, 2),\n selectedKeys = _useState6[0],\n setSelectedKeys = _useState6[1];\n var _useState7 = useState({}),\n _useState8 = _slicedToArray(_useState7, 2),\n redDotMap = _useState8[0],\n setRedDotMap = _useState8[1];\n var _useState9 = useState(),\n _useState0 = _slicedToArray(_useState9, 2),\n siderBarMenuActiveItem = _useState0[0],\n setSiderBarMenuActiveItem = _useState0[1];\n var _useState1 = useState(),\n _useState10 = _slicedToArray(_useState1, 2),\n topMenuActiveItem = _useState10[0],\n setTopMenuActiveItem = _useState10[1];\n var _useState11 = useState([]),\n _useState12 = _slicedToArray(_useState11, 2),\n siderBarMenus = _useState12[0],\n setSiderBarMenus = _useState12[1];\n // const initSiderBarMenuActiveItemRef = useRef<TMenuItem>();\n\n hooks.useUpdateEffect(function () {\n setCollapsed(isMobile);\n }, [isMobile]);\n hooks.useEffectOnce(function () {\n if (props.initSidebarShrinkClosed) {\n setCollapsed(true);\n } else {\n setCollapsed(isMobile);\n }\n }, []);\n var hideSidebarMenu = fbaHooks.useMemoCustom(function () {\n if (options.disableTopbarMenu) return false;\n if (siderBarMenus.length === 0) return true;\n return typeof options.hideSidebarMenu === 'function' ? options.hideSidebarMenu(location.pathname) : options.hideSidebarMenu;\n }, [options.disableTopbarMenu, options.hideSidebarMenu, siderBarMenus, location.pathname]);\n var opendKeysTempRef = useRef();\n var ErrorHandlingRender = options.ErrorHandling || ErrorHandling;\n var siderBarTileMenus = useMemo(function () {\n return treeToArray(siderBarMenus, 'children');\n }, [siderBarMenus]);\n var getTopMenuItem = function getTopMenuItem(menuId) {\n var chainMenuIdList = getTargetMenuParentChain(menuId, menus);\n if (chainMenuIdList.length > 0) {\n var setTopMenuActiveId = chainMenuIdList[chainMenuIdList.length - 1];\n return menus.find(function (item) {\n return valueIsEqual(item.id, setTopMenuActiveId);\n });\n }\n return undefined;\n };\n var _useMemo = useMemo(function () {\n var menus = props.menus;\n var tileMenus = treeToArray(menus, 'children');\n var siderBarMenus = [];\n var siderbarTargetMenu = undefined;\n // 隐藏 侧边栏\n // if (hideSidebarMenu) {\n // if (!options.disableTopbarMenu) {\n // const target = menus.find((item) => {\n // return pathIncludePath(getPurePath(location.pathname), item.path);\n // });\n // if (target) {\n // setTopMenuActiveItem(target);\n // }\n // }\n // } else {\n /**\n * 先查找叶子节点菜单,再反向查找上级菜单\n */\n siderbarTargetMenu = parseSiderTargetMenuByPath(tileMenus, location.href);\n if (siderbarTargetMenu) {\n var chainMenuIdList = getTargetMenuParentChain(siderbarTargetMenu.id, menus);\n if (!options.disableTopbarMenu) {\n if (chainMenuIdList.length > 0) {\n var setTopMenuActiveId = chainMenuIdList[chainMenuIdList.length - 1];\n var topMenuTarget = menus.find(function (item) {\n return valueIsEqual(item.id, setTopMenuActiveId);\n });\n setTopMenuActiveItem(topMenuTarget);\n siderBarMenus = (topMenuTarget === null || topMenuTarget === void 0 ? void 0 : topMenuTarget.children) || [];\n }\n } else {\n siderBarMenus = menus;\n }\n setSelectedKeys(chainMenuIdList);\n setOpendKeys(chainMenuIdList);\n opendKeysTempRef.current = chainMenuIdList;\n setSiderBarMenuActiveItem(siderbarTargetMenu);\n // initSiderBarMenuActiveItemRef.current = siderbarTargetMenu;\n document.title = siderbarTargetMenu.metaTitle || siderbarTargetMenu.name;\n } else {\n if (options.disableTopbarMenu) {\n siderBarMenus = menus;\n setSelectedKeys([]);\n setOpendKeys([]);\n opendKeysTempRef.current = [];\n setSiderBarMenuActiveItem(undefined);\n // initSiderBarMenuActiveItemRef.current = siderbarTargetMenu;\n } else {\n // 当开启顶部菜单时,找不到叶子节点,有可能找到顶部菜单\n var target = parseFirstMenuByPath(menus, location.href);\n if (target) {\n if (!unMatchHiddenSiderBar) {\n siderBarMenus = (target === null || target === void 0 ? void 0 : target.children) || [];\n }\n } else {\n if (!unMatchHiddenSiderBar) {\n siderBarMenus = menus[0].children || [];\n }\n }\n setTopMenuActiveItem(target);\n }\n }\n if (isIframeMain) {\n var initIframeTabActiveItem = initSyncIframeTabCacheByLocation(treeToArray(siderBarMenus, 'children'), siderbarTargetMenu);\n saveCacheIframeActiveItem(initIframeTabActiveItem);\n }\n // }\n setSiderBarMenus(siderBarMenus);\n return {\n menus: menus,\n tileMenus: tileMenus\n };\n }, [isIframeMain, options.disableTopbarMenu, unMatchHiddenSiderBar]),\n menus = _useMemo.menus,\n tileMenus = _useMemo.tileMenus;\n var _useState13 = useState(getCacheIframeActiveItem()),\n _useState14 = _slicedToArray(_useState13, 2),\n iframeTabActiveItem = _useState14[0],\n setIframeTabActiveItem = _useState14[1];\n var _useState15 = useState(getIframeTabCacheList()),\n _useState16 = _slicedToArray(_useState15, 2),\n iframeTabList = _useState16[0],\n setIframeTabList = _useState16[1];\n fbaHooks.useEffectCustom(function () {\n saveIframeTabToCache(iframeTabList);\n }, [iframeTabList]);\n fbaHooks.useEffectCustom(function () {\n if (iframeTabActiveItem !== null && iframeTabActiveItem !== void 0 && iframeTabActiveItem.id) {\n saveCacheIframeActiveItem(iframeTabActiveItem);\n document.title = iframeTabActiveItem.metaTitle || iframeTabActiveItem.name;\n navigate(iframeTabActiveItem.pathSearch);\n onIframeTabActiveEvent === null || onIframeTabActiveEvent === void 0 || onIframeTabActiveEvent(iframeTabActiveItem);\n iframeApi.broadcastMessages({\n type: '__iframe-tab-active',\n data: {\n activeKey: \"iframe_\".concat(iframeTabActiveItem.id),\n iframeTabItem: iframeTabActiveItem\n }\n });\n }\n }, [iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id]);\n var onChangeCollapsed = function onChangeCollapsed(boo) {\n if (boo) {\n opendKeysTempRef.current = opendKeys;\n } else {\n setOpendKeys(opendKeysTempRef.current || []);\n }\n setCollapsed(boo);\n };\n var onChangeSelectedKeys = function onChangeSelectedKeys(selectedKeys) {\n setSelectedKeys(selectedKeys);\n };\n var onChangeOpendKeys = function onChangeOpendKeys(opendKeys) {\n setOpendKeys(opendKeys);\n };\n var addOrUpdateIframeTab = function addOrUpdateIframeTab(item) {\n var _addOrUpdateIframeTab = addOrUpdateIframeTabListByMenuItem(item, getIframeTabCacheList()),\n iframeTabActiveItem = _addOrUpdateIframeTab.iframeTabActiveItem,\n iframeTabListNew = _addOrUpdateIframeTab.iframeTabListNew;\n setIframeTabList(_toConsumableArray(iframeTabListNew));\n setIframeTabActiveItem(iframeTabActiveItem);\n setSiderBarMenuActiveItem(item);\n };\n var onChangeSiderBarMenuActiveItem = function onChangeSiderBarMenuActiveItem(_siderBarMenus, _siderBarTileMenus, menuId) {\n if (menuId) {\n var menuTarget = _siderBarTileMenus.find(function (item) {\n return valueIsEqual(item.id, menuId);\n });\n if (menuTarget) {\n setSiderBarMenuActiveItem(menuTarget);\n var chainMenuIdList = getTargetMenuParentChain(menuTarget.id, _siderBarMenus);\n setSelectedKeys(chainMenuIdList);\n setOpendKeys(chainMenuIdList);\n return;\n }\n }\n setSelectedKeys([]);\n setOpendKeys([]);\n setSiderBarMenuActiveItem(undefined);\n };\n var onIframeChange = function onIframeChange(id, type, configs) {\n if (type === 'iframeTabClick' || type === 'iframeRefresh') {\n if (valueIsEqual(id, iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id)) {\n if (type === 'iframeTabClick' && !options.iframeTabClickRefresh) return;\n var iframeTabListNew = refreshIframeTabIframeKey(iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id);\n setIframeTabList(_toConsumableArray(iframeTabListNew));\n } else {\n var target = getIframeTabCacheList().find(function (item) {\n return valueIsEqual(item.id, id);\n });\n setIframeTabActiveItem(target);\n // const chainMenuIdList = getTargetMenuParentChain(target.menuId as string, menus);\n\n var _siderBarMenus = siderBarMenus;\n var _siderBarTileMenus = siderBarTileMenus;\n if (!options.disableTopbarMenu) {\n var topMenuItem = getTopMenuItem(target.menuId);\n /**\n * 当前 iframeTabList 是否存在 无匹配订单id的tab,例如: 未知异常页面;tab切换时,需要切换显示左侧菜单\n */\n if (iframeTabList.find(function (item) {\n return !item.menuId;\n })) {\n if (target.menuId) {\n var _topMenuActiveItem = topMenuItem;\n // if (!_topMenuActiveItem) {\n // _topMenuActiveItem = topMenuItem;\n // }\n _siderBarMenus = (_topMenuActiveItem === null || _topMenuActiveItem === void 0 ? void 0 : _topMenuActiveItem.children) || [];\n _siderBarTileMenus = treeToArray(_siderBarMenus, 'children');\n setSiderBarMenus(_siderBarMenus);\n setTopMenuActiveItem(_topMenuActiveItem);\n } else {\n _siderBarMenus = [];\n _siderBarTileMenus = [];\n if (unMatchHiddenSiderBar) {\n setSiderBarMenus(_siderBarMenus);\n }\n // 当开启顶部菜单时,找不到叶子节点,有可能找到顶部菜单\n var targetNew = parseFirstMenuByPath(menus, target === null || target === void 0 ? void 0 : target.link);\n setTopMenuActiveItem(targetNew);\n }\n } else {\n _siderBarMenus = (topMenuItem === null || topMenuItem === void 0 ? void 0 : topMenuItem.children) || [];\n _siderBarTileMenus = treeToArray(_siderBarMenus, 'children');\n setTopMenuActiveItem(topMenuItem);\n setSiderBarMenus(_siderBarMenus);\n }\n }\n onChangeSiderBarMenuActiveItem(_siderBarMenus, _siderBarTileMenus, target === null || target === void 0 ? void 0 : target.menuId);\n }\n } else if (type === 'menuClick') {\n // if (valueIsEqual(id, siderBarMenuActiveItem?.id)) {\n // onChangeActiveTabItemRedDot(false);\n // const refreshResult = refreshIframeTabLink(\n // iframeTabActiveItem?.id as string,\n // {\n // link: toLinkPath(siderBarMenuActiveItem?.link as string),\n // name: siderBarMenuActiveItem?.name,\n // metaTitle: siderBarMenuActiveItem?.metaTitle,\n // pathSearch: siderBarMenuActiveItem?.path,\n // },\n // getIframeTabCacheList()\n // );\n // navigate(toLinkPath(siderBarMenuActiveItem?.path || ''));\n // setIframeTabList([...refreshResult.iframeTabList]);\n // setIframeTabActiveItem(extend({}, refreshResult.target));\n // if (configs?.locationMenu) {\n // onChangeSiderBarMenuActiveItem(siderBarMenus, siderBarTileMenus, id);\n // }\n // return;\n // }\n var menuTarget = siderBarTileMenus.find(function (item) {\n return valueIsEqual(item.id, id);\n });\n var _addOrUpdateIframeTab2 = addOrUpdateIframeTabListByMenuItem(menuTarget, getIframeTabCacheList()),\n iframeTabActiveItemNew = _addOrUpdateIframeTab2.iframeTabActiveItem,\n _iframeTabListNew = _addOrUpdateIframeTab2.iframeTabListNew;\n // 每次点击菜单时,都刷新 iframeKey\n iframeTabActiveItemNew.iframeKey = \"\".concat(Date.now());\n onChangeActiveTabItemRedDot(false, iframeTabActiveItemNew.id);\n var _target = _iframeTabListNew.find(function (item) {\n return item.id === iframeTabActiveItemNew.id;\n });\n if (_target) {\n _target.iframeKey = iframeTabActiveItemNew.iframeKey;\n }\n setIframeTabList(_toConsumableArray(_iframeTabListNew));\n setIframeTabActiveItem(iframeTabActiveItemNew);\n setSiderBarMenuActiveItem(menuTarget);\n if (configs !== null && configs !== void 0 && configs.locationMenu) {\n onChangeSiderBarMenuActiveItem(siderBarMenus, siderBarTileMenus, id);\n }\n }\n };\n var onDeleteIframeTabItem = function onDeleteIframeTabItem(type, id) {\n var _iframeTabActiveItemN2;\n if (type === 'otherAll') {\n setIframeTabList(iframeTabActiveItem ? [iframeTabActiveItem] : []);\n return;\n }\n var iframeTabList = getIframeTabCacheList();\n var iframeTabListNew;\n var iframeTabActiveItemNew;\n var _siderBarMenus = siderBarMenus;\n var _siderBarTileMenus = siderBarTileMenus;\n if (type === 'all') {\n iframeTabListNew = [iframeTabList[0]];\n iframeTabActiveItemNew = iframeTabList[0];\n } else if (type === 'me') {\n var index = arrayFindIndexByLoosely(iframeTabList, id, 'id');\n var nextActive = index === 0 ? iframeTabList[1] : iframeTabList[index - 1];\n iframeTabList.splice(index, 1);\n iframeTabListNew = iframeTabList;\n iframeTabActiveItemNew = nextActive;\n } else if (type === 'other') {\n var _index = arrayFindIndexByLoosely(iframeTabList, id, 'id');\n iframeTabList.splice(_index, 1);\n setIframeTabList(_toConsumableArray(iframeTabList));\n return;\n }\n if (!options.disableTopbarMenu) {\n var _iframeTabActiveItemN;\n if ((_iframeTabActiveItemN = iframeTabActiveItemNew) !== null && _iframeTabActiveItemN !== void 0 && _iframeTabActiveItemN.menuId) {\n var _topMenuActiveItem = getTopMenuItem(iframeTabActiveItemNew.menuId);\n _siderBarMenus = (_topMenuActiveItem === null || _topMenuActiveItem === void 0 ? void 0 : _topMenuActiveItem.children) || [];\n _siderBarTileMenus = treeToArray(_siderBarMenus, 'children');\n setTopMenuActiveItem(_topMenuActiveItem);\n setSiderBarMenus(_siderBarMenus);\n } else {\n _siderBarMenus = [];\n _siderBarTileMenus = [];\n setTopMenuActiveItem(undefined);\n if (unMatchHiddenSiderBar) {\n setSiderBarMenus(_siderBarMenus);\n }\n }\n }\n setIframeTabList(_toConsumableArray(iframeTabListNew));\n setIframeTabActiveItem(iframeTabActiveItemNew);\n onChangeSiderBarMenuActiveItem(_siderBarMenus, _siderBarTileMenus, (_iframeTabActiveItemN2 = iframeTabActiveItemNew) === null || _iframeTabActiveItemN2 === void 0 ? void 0 : _iframeTabActiveItemN2.menuId);\n };\n\n /** 关闭当前iframe tab并打开指定iframe tab */\n var onDeleteCurrentIframeTabItemOpenTargetIframeTab = function onDeleteCurrentIframeTabItemOpenTargetIframeTab(targetId, menuId) {\n var index = arrayFindIndexByLoosely(iframeTabList, iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id, 'id');\n iframeTabList.splice(index, 1);\n if (targetId) {\n var target = arrayFindByLoosely(iframeTabList, targetId, 'id');\n if (target) {\n setIframeTabActiveItem(target);\n setIframeTabList(_toConsumableArray(iframeTabList));\n return;\n } else if (menuId) {\n var menuTarget = siderBarTileMenus.find(function (item) {\n return valueIsEqual(item.id, menuId);\n });\n var _addOrUpdateIframeTab3 = addOrUpdateIframeTabListByMenuItem(menuTarget, iframeTabList),\n _iframeTabActiveItem = _addOrUpdateIframeTab3.iframeTabActiveItem,\n iframeTabListNew = _addOrUpdateIframeTab3.iframeTabListNew;\n setIframeTabList(_toConsumableArray(iframeTabListNew));\n setIframeTabActiveItem(_iframeTabActiveItem);\n setSiderBarMenuActiveItem(menuTarget);\n return;\n }\n }\n setIframeTabList(_toConsumableArray(iframeTabList));\n onIframeChange(iframeTabList[0].id, 'iframeTabClick');\n };\n var onIframeChangeByHttpUrl = function onIframeChangeByHttpUrl(url, data) {\n var prevIframeTabActiveItem = cloneObject(iframeTabActiveItem);\n var cahceTabList = getIframeTabCacheList();\n parseIframeTabItemUrlInfo(url);\n var iframeTablink = guessIframeTabItemLink(url);\n var siderbarTargetMenu = parseSiderTargetMenuByPath(tileMenus, url);\n if (siderbarTargetMenu) {\n var chainMenuIdList = getTargetMenuParentChain(siderbarTargetMenu.id, menus);\n if (chainMenuIdList.length > 0) {\n var parentId = chainMenuIdList[chainMenuIdList.length - 1];\n var targetTopMenuItem = menus.find(function (item) {\n return valueIsEqual(item.id, parentId);\n });\n setSiderBarMenuActiveItem(siderbarTargetMenu);\n setSelectedKeys(chainMenuIdList);\n setOpendKeys(chainMenuIdList);\n if (!options.disableTopbarMenu) {\n setSiderBarMenus((targetTopMenuItem === null || targetTopMenuItem === void 0 ? void 0 : targetTopMenuItem.children) || []);\n setTopMenuActiveItem(targetTopMenuItem);\n }\n }\n var _addOrUpdateIframeTab4 = addOrUpdateIframeTabListByMenuItem(_objectSpread2(_objectSpread2({}, siderbarTargetMenu), {}, {\n link: iframeTablink,\n name: data.name,\n metaTitle: data.metaTitle\n }), cahceTabList),\n _iframeTabActiveItem2 = _addOrUpdateIframeTab4.iframeTabActiveItem,\n iframeTabListNew = _addOrUpdateIframeTab4.iframeTabListNew;\n setIframeTabList(_toConsumableArray(iframeTabListNew));\n setIframeTabActiveItem(_iframeTabActiveItem2);\n saveIframeOpenNewTabItemOperateLink({\n startTabId: prevIframeTabActiveItem === null || prevIframeTabActiveItem === void 0 ? void 0 : prevIframeTabActiveItem.id,\n startTabMenuId: prevIframeTabActiveItem === null || prevIframeTabActiveItem === void 0 ? void 0 : prevIframeTabActiveItem.menuId,\n endTabId: _iframeTabActiveItem2.id\n });\n } else {\n setSelectedKeys([]);\n setOpendKeys([]);\n if (unMatchHiddenSiderBar) {\n setSiderBarMenus([]);\n }\n setTopMenuActiveItem(undefined);\n setSiderBarMenuActiveItem(undefined);\n var target = findIframeTabItemByEqualUrl(iframeTablink, cahceTabList);\n if (target) {\n setIframeTabActiveItem(target);\n saveIframeOpenNewTabItemOperateLink({\n startTabId: prevIframeTabActiveItem === null || prevIframeTabActiveItem === void 0 ? void 0 : prevIframeTabActiveItem.id,\n startTabMenuId: prevIframeTabActiveItem === null || prevIframeTabActiveItem === void 0 ? void 0 : prevIframeTabActiveItem.menuId,\n endTabId: target.id\n });\n } else {\n var _addIframeTabListByMe = addIframeTabListByMenuItem(cahceTabList, {\n link: iframeTablink,\n name: getIframeTabName(iframeTablink, (data === null || data === void 0 ? void 0 : data.name) || '未知页面'),\n metaTitle: options === null || options === void 0 ? void 0 : options.metaTitle}),\n _iframeTabListNew2 = _addIframeTabListByMe.iframeTabListNew,\n _iframeTabActiveItem3 = _addIframeTabListByMe.iframeTabActiveItem;\n setIframeTabList(_toConsumableArray(_iframeTabListNew2));\n setIframeTabActiveItem(_iframeTabActiveItem3);\n saveIframeOpenNewTabItemOperateLink({\n startTabId: prevIframeTabActiveItem === null || prevIframeTabActiveItem === void 0 ? void 0 : prevIframeTabActiveItem.id,\n startTabMenuId: prevIframeTabActiveItem === null || prevIframeTabActiveItem === void 0 ? void 0 : prevIframeTabActiveItem.menuId,\n endTabId: _iframeTabActiveItem3.id\n });\n }\n }\n };\n var onUpdateIframeTabName = function onUpdateIframeTabName(name) {\n var target = getIframeTabCacheList().find(function (item) {\n return valueIsEqual(item.id, iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id);\n });\n if (target) {\n target.name = name;\n setIframeTabList(getIframeTabCacheList());\n }\n };\n var normalModePositionMenu = function normalModePositionMenu(link) {\n var siderbarTargetMenu = parseSiderTargetMenuByPath(tileMenus, link);\n if (siderbarTargetMenu) {\n var chainMenuIdList = getTargetMenuParentChain(siderbarTargetMenu.id, menus);\n setSelectedKeys(chainMenuIdList);\n setOpendKeys(chainMenuIdList);\n setSiderBarMenuActiveItem(siderbarTargetMenu);\n document.title = siderbarTargetMenu.metaTitle || siderbarTargetMenu.name;\n } else {\n if (options.disableTopbarMenu) {\n setSelectedKeys([]);\n setOpendKeys([]);\n setSiderBarMenuActiveItem(undefined);\n }\n }\n };\n var iframeTopRouteMenuChange = function iframeTopRouteMenuChange(item) {\n var _item$children;\n var leafNode = findFirstLeafNode(item);\n var _addOrUpdateIframeTab5 = addOrUpdateIframeTabListByMenuItem(leafNode, getIframeTabCacheList()),\n iframeTabActiveItem = _addOrUpdateIframeTab5.iframeTabActiveItem,\n iframeTabListNew = _addOrUpdateIframeTab5.iframeTabListNew;\n setIframeTabList(_toConsumableArray(iframeTabListNew));\n setIframeTabActiveItem(iframeTabActiveItem);\n if (leafNode && (_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length) {\n var chainMenuIdList = getTargetMenuParentChain(leafNode.id, menus);\n setSiderBarMenuActiveItem(leafNode);\n setSelectedKeys(chainMenuIdList);\n setOpendKeys(chainMenuIdList);\n }\n setSiderBarMenus(item.children || []);\n setTopMenuActiveItem(_objectSpread2({}, item));\n };\n\n /**\n * 通过新iframe tab打开第三方菜单页面\n */\n var onOpenNewIframeThirdMenuItem = function onOpenNewIframeThirdMenuItem(data) {\n var menuItem = data.menuItem;\n // 判断 iframeTabList 中是否存在于 data.link 完全相同\n var hasTarget = iframeTabList.find(function (item) {\n return linkEqual(item.link, data.link);\n });\n if (hasTarget) {\n onIframeChange(\"\".concat(hasTarget.id), 'iframeTabClick');\n } else {\n onChangeSiderBarMenuActiveItem(siderBarMenus, siderBarTileMenus, \"\".concat(menuItem.id));\n var _addIframeTabListByMe2 = addIframeTabListByMenuItem(iframeTabList, _objectSpread2(_objectSpread2({}, menuItem), {}, {\n name: data.name,\n link: data.link\n })),\n iframeTabListNew = _addIframeTabListByMe2.iframeTabListNew,\n _iframeTabActiveItem4 = _addIframeTabListByMe2.iframeTabActiveItem;\n setIframeTabList(_toConsumableArray(iframeTabListNew));\n setIframeTabActiveItem(_iframeTabActiveItem4);\n }\n };\n var onChangeActiveTabItemRedDot = function onChangeActiveTabItemRedDot(visible, id) {\n var idNew = id || (iframeTabActiveItem === null || iframeTabActiveItem === void 0 ? void 0 : iframeTabActiveItem.id);\n if (idNew && visible !== redDotMap[idNew]) {\n setRedDotMap(_objectSpread2(_objectSpread2({}, redDotMap), {}, _defineProperty({}, idNew, visible)));\n }\n };\n var appProviderValue = _objectSpread2(_objectSpread2({}, options), {}, {\n hideSidebarMenu: hideSidebarMenu,\n menus: menus,\n completeMenus: completeMenus,\n siderBarMenus: siderBarMenus,\n siderBarTileMenus: siderBarTileMenus,\n sidebarWidth: sidebarWidth,\n componentSize: componentSize,\n locale: locale,\n routeList: options.routeList,\n breads: options.breads || {},\n logoPath: logoPath,\n headerThemeConfig: headerThemeConfig,\n sidebarThemeConfig: sidebarThemeConfig,\n collapsed: collapsed,\n onChangeCollapsed: onChangeCollapsed,\n opendKeys: opendKeys,\n selectedKeys: selectedKeys,\n onChangeOpendKeys: onChangeOpendKeys,\n onChangeSelectedKeys: onChangeSelectedKeys,\n iframeTabList: iframeTabList,\n addOrUpdateIframeTab: addOrUpdateIframeTab,\n iframeTabActiveItem: iframeTabActiveItem,\n siderBarMenuActiveItem: siderBarMenuActiveItem,\n onIframeChange: onIframeChange,\n onDeleteIframeTabItem: onDeleteIframeTabItem,\n onIframeChangeByHttpUrl: onIframeChangeByHttpUrl,\n topMenuActiveItem: topMenuActiveItem,\n onUpdateIframeTabName: onUpdateIframeTabName,\n normalModePositionMenu: normalModePositionMenu,\n iframeTopRouteMenuChange: iframeTopRouteMenuChange,\n onDeleteCurrentIframeTabItemOpenTargetIframeTab: onDeleteCurrentIframeTabItemOpenTargetIframeTab,\n onOpenNewIframeThirdMenuItem: onOpenNewIframeThirdMenuItem,\n onChangeActiveTabItemRedDot: onChangeActiveTabItemRedDot,\n redDotMap: redDotMap\n });\n return /*#__PURE__*/jsxs(LayoutProvider, {\n value: appProviderValue,\n children: [options.disableErrorHandling ? null : /*#__PURE__*/jsx(ErrorHandlingRender, {\n verifySessionExpired: appProviderValue.verifySessionExpired\n }), /*#__PURE__*/jsx(App, {}), !isIframeMain && /*#__PURE__*/jsx(NormalRoutesTiming, {})]\n });\n};\n\nvar changedArray = function changedArray() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some(function (item, index) {\n return !Object.is(item, b[index]);\n });\n};\nvar initialState = {\n error: null\n};\nvar ErrorBoundary = /*#__PURE__*/function (_Component) {\n function ErrorBoundary() {\n var _this;\n _classCallCheck(this, ErrorBoundary);\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n _this = _callSuper(this, ErrorBoundary, [].concat(_args));\n _defineProperty(_this, \"state\", initialState);\n _defineProperty(_this, \"updatedWithError\", false);\n _defineProperty(_this, \"resetErrorBoundary\", function () {\n var _this$props$onReset, _this$props;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n (_this$props$onReset = (_this$props = _this.props).onReset) === null || _this$props$onReset === void 0 || _this$props$onReset.call.apply(_this$props$onReset, [_this$props].concat(args));\n _this.reset();\n });\n return _this;\n }\n _inherits(ErrorBoundary, _Component);\n return _createClass(ErrorBoundary, [{\n key: \"reset\",\n value: function reset() {\n this.updatedWithError = false;\n this.setState(initialState);\n }\n }, {\n key: \"componentDidCatch\",\n value: function componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 || _this$props$onError.call(_this$props2, error, info);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var error = this.state.error;\n if (error !== null) {\n this.updatedWithError = true;\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var error = this.state.error;\n var resetKeys = this.props.resetKeys;\n\n // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true;\n return;\n }\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n var _this$props$onResetKe, _this$props3;\n (_this$props$onResetKe = (_this$props3 = this.props).onResetKeysChange) === null || _this$props$onResetKe === void 0 || _this$props$onResetKe.call(_this$props3, prevProps.resetKeys, resetKeys);\n this.reset();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var error = this.state.error;\n // @ts-expect-error ts(2339) (at least one of these will be defined though, and we check for their existence)\n var _this$props4 = this.props,\n fallbackRender = _this$props4.fallbackRender,\n FallbackComponent = _this$props4.FallbackComponent,\n fallback = _this$props4.fallback;\n if (error !== null) {\n var _props = {\n error: error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (/*#__PURE__*/isValidElement(fallback)) {\n return fallback;\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(_props);\n } else if (FallbackComponent) {\n return /*#__PURE__*/jsx(FallbackComponent, _objectSpread2({}, _props));\n } else {\n throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');\n }\n }\n return this.props.children;\n }\n }], [{\n key: \"getDerivedStateFromError\",\n value: function getDerivedStateFromError(error) {\n return {\n error: error\n };\n }\n }]);\n}(Component);\n\n// export function withErrorBoundary<P>(\n// Component: ComponentType<P>,\n// errorBoundaryProps: ErrorBoundaryProps,\n// ): ComponentType<P> {\n// const Wrapped: ComponentType<P> = (props) => {\n// return (\n// <ErrorBoundary {...errorBoundaryProps}>\n// <Component {...props} />\n// </ErrorBoundary>\n// );\n// };\n\n// // Format for display in DevTools\n// const name = Component.displayName || Component.name || 'Unknown';\n// Wrapped.displayName = `withErrorBoundary(${name})`;\n\n// return Wrapped;\n// }\n\n// export function useErrorHandler<P = Error>(\n// givenError?: P | null | undefined,\n// ): Dispatch<SetStateAction<P | null>> {\n// const [error, setError] = useState<P | null>(null);\n// if (givenError) throw givenError;\n// if (error) throw error;\n// return setError;\n// }\n\nfunction ErrorFallback(_ref) {\n var error = _ref.error;\n return /*#__PURE__*/jsx(\"div\", {\n style: {\n height: '100%',\n padding: '8px'\n },\n children: /*#__PURE__*/jsxs(\"div\", {\n style: {\n backgroundColor: '#fff',\n height: '100%',\n padding: '0 8px 8px 8px',\n overflow: 'hidden'\n },\n children: [/*#__PURE__*/jsx(Typography.Title, {\n level: 2,\n children: \"Something went wrong\"\n }), /*#__PURE__*/jsx(Typography.Paragraph, {\n children: error.message\n }), /*#__PURE__*/jsx(Button, {\n onClick: function onClick() {\n window.location.reload();\n },\n children: \"Try again\"\n })]\n })\n });\n}\n\nvar Container = function Container(props) {\n useEffect(function () {\n window.addEventListener('message', function (event) {\n var _event$data;\n if ((event === null || event === void 0 || (_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.flatOssIframeType) === 'reload') {\n window.location.reload();\n }\n });\n }, []);\n if (!props.ignoreMenuEmptyJudge && (props.layoutMode === 'iframe-main' || props.layoutMode === 'normal') && props.menus.length === 0) {\n if (props.MenuEmptyRender) return props.MenuEmptyRender;\n return /*#__PURE__*/jsx(Result, {\n status: \"error\",\n title: \"\\u65E0\\u83DC\\u5355\\u6570\\u636E\",\n subTitle: '请联系运营人员确定菜单数据配置'\n });\n }\n return /*#__PURE__*/jsx(Fragment, {\n children: props.children\n });\n};\n\nvar IframeMainRegister = function IframeMainRegister() {\n var iframeApi = useIframe(function (data) {\n if (data.type === '__refresh-iframe-tab') {\n iframeApi.broadcastMessages({\n type: data.type,\n data: data.data\n });\n }\n });\n return /*#__PURE__*/jsx(Fragment, {});\n};\n\nvar defaultState = {\n isDark: undefined\n};\nvar ProLayoutModel = {\n actions: {\n onSetTheme: function onSetTheme(theme) {\n return new Promise(function ($return, $error) {\n return $return(function (state) {\n state.isDark = theme === 'dark';\n });\n });\n }\n },\n state: defaultState\n};\nvar proLayoutModels = Model({\n ProLayoutModel: ProLayoutModel\n});\n\nvar Bootstrap = function Bootstrap(options) {\n var _options$headerThemeC, _options$headerThemeC2, _options$headerThemeC3, _options$sidebarTheme, _options$sidebarTheme2, _options$sidebarTheme3;\n var _proLayoutModels$useS = proLayoutModels.useStore('ProLayoutModel'),\n _proLayoutModels$useS2 = _slicedToArray(_proLayoutModels$useS, 1),\n state = _proLayoutModels$useS2[0];\n var isDark = state.isDark === undefined ? options.initDark : state.isDark;\n var globalValue = getGlobalData();\n var sidebarWidth = options.sidebarWidth || 220;\n var componentSize = options.componentSize || 'middle';\n var locale = options.locale;\n var logoPath = options.logoPath || '';\n var isIframeMain = options.layoutMode === 'iframe-main';\n var isIframeTabItem = options.layoutMode === 'iframe-tab';\n var headerThemeConfig = {\n bgColor: '#1890ff',\n textColor: '#fff',\n menuColor: '#fff',\n menuActiveTextColor: '#FFF',\n menuSelectedBgColor: '#0080e3',\n menuSelectedTextColor: '#FFF',\n menuTextFontSize: 14\n };\n var sidebarThemeConfig = {\n bgColor: '#fff',\n menuActiveBgColor: 'rgba(0,0,0,0.06)',\n menuActiveTextColor: '#1890ff',\n menuSelectedBgColor: '#bae0ff',\n menuColor: 'rgba(0,0,0,.88)',\n menuSelectedTextColor: '#1890ff',\n menuSubMenuBgColor: 'rgba(0, 0, 0, 0.02)',\n inlineIndent: 16,\n menuItemHeight: 28,\n menuTextFontSize: 13\n };\n var customHeaderThemeConfig = (_options$headerThemeC = options.headerThemeConfig) !== null && _options$headerThemeC !== void 0 && _options$headerThemeC['dark'] || (_options$headerThemeC2 = options.headerThemeConfig) !== null && _options$headerThemeC2 !== void 0 && _options$headerThemeC2['light'] ? (_options$headerThemeC3 = options.headerThemeConfig) === null || _options$headerThemeC3 === void 0 ? void 0 : _options$headerThemeC3[isDark ? 'dark' : 'light'] : options.headerThemeConfig;\n var headerThemeConfigNew = extend({}, headerThemeConfig, customHeaderThemeConfig);\n var customSidebarThemeConfig = (_options$sidebarTheme = options.sidebarThemeConfig) !== null && _options$sidebarTheme !== void 0 && _options$sidebarTheme['dark'] || (_options$sidebarTheme2 = options.sidebarThemeConfig) !== null && _options$sidebarTheme2 !== void 0 && _options$sidebarTheme2['light'] ? (_options$sidebarTheme3 = options.sidebarThemeConfig) === null || _options$sidebarTheme3 === void 0 ? void 0 : _options$sidebarTheme3[isDark ? 'dark' : 'light'] : options.sidebarThemeConfig;\n var sidebarThemeConfigNew = extend({}, sidebarThemeConfig, customSidebarThemeConfig);\n var iframeTabClickRefresh = isUndefinedOrNull(options.iframeTabClickRefresh) ? true : options.iframeTabClickRefresh;\n var _useMemo = useMemo(function () {\n var routeList = function () {\n if (!globalData.moduleName) {\n console.error('请在window.GLOBAL中添加属性moduleName(模块名称,例如:moduleName=\"system/admin\")');\n return options.routeList;\n }\n var moduleName = removeSlash(globalData.moduleName, 'before-after');\n var routeListNew = [];\n options.routeList.forEach(function (item) {\n var path = removeSlash(item.path, 'before-after');\n var redirect = removeSlash(item.redirect || '', 'before-after');\n if (redirect) {\n item.redirect = redirect.startsWith(moduleName) ? item.redirect : \"/\".concat(urlJoin(moduleName, item.redirect || ''));\n }\n if (item.path === '/' || path === '') {\n routeListNew.push(_objectSpread2(_objectSpread2({}, item), {}, {\n path: \"/\".concat(urlJoin(moduleName, item.path))\n }));\n } else if (path === '*') {\n routeListNew.push(_objectSpread2(_objectSpread2({}, item), {}, {\n path: \"/*\"\n }));\n } else if (!path.startsWith(moduleName)) {\n routeListNew.push(_objectSpread2(_objectSpread2({}, item), {}, {\n path: \"/\".concat(urlJoin(moduleName, item.path))\n }));\n } else {\n routeListNew.push(item);\n }\n });\n return routeListNew;\n }();\n var breadList = [];\n routeList.forEach(function (item) {\n if (item.breadConfig) {\n if (typeof item.breadConfig === 'string') {\n breadList.push({\n path: item.path,\n breadConfig: {\n name: item.breadConfig\n }\n });\n return;\n }\n if (isArray(item.breadConfig)) {\n var dataList = item.breadConfig;\n dataList.forEach(function (innItem) {\n var mergePath = removeSlash(urlJoin(item.path, innItem.path).replace('/*', '').replace('*', ''), 'before-after');\n if (typeof innItem.breadConfig === 'string') {\n breadList.push({\n path: \"/\".concat(mergePath),\n breadConfig: {\n name: innItem.breadConfig\n }\n });\n return;\n }\n breadList.push({\n path: \"/\".concat(mergePath),\n breadConfig: innItem.breadConfig\n });\n });\n return;\n }\n breadList.push({\n path: item.path,\n breadConfig: item.breadConfig\n });\n }\n });\n if (getQueryString('debug')) {\n console.log('bootstrap routeList original', options.routeList);\n console.log('bootstrap routeList', routeList);\n console.log('bootstrap breadList', breadList);\n }\n return {\n routeList: routeList,\n breadList: breadList\n };\n }, [options.routeList]),\n routeList = _useMemo.routeList,\n breadList = _useMemo.breadList;\n var _getMenus = getMenus(isIframeMain || isIframeTabItem, options.siderBarMaxMenuLevel, options.disableTopbarMenu),\n menus = _getMenus.menus,\n completeMenus = _getMenus.completeMenus;\n var appProviderValue = _objectSpread2(_objectSpread2({}, options), {}, {\n sidebarWidth: sidebarWidth,\n componentSize: componentSize,\n locale: locale,\n routeList: routeList,\n breads: breadList,\n logoPath: logoPath,\n headerThemeConfig: headerThemeConfigNew,\n sidebarThemeConfig: sidebarThemeConfigNew,\n iframeTabClickRefresh: iframeTabClickRefresh,\n headerHeight: options.headerHeight === undefined ? 64 : options.headerHeight,\n menus: menus,\n completeMenus: completeMenus,\n dark: isDark\n });\n\n // const root = createRoot(document.getElementById('app') as HTMLElement);\n var layoutMode = appProviderValue.layoutMode;\n var isNoLayout = ['no-layout', 'iframe-tab'].includes(layoutMode);\n var ContainerWrapper = options.containerWrapper || Fragment;\n var configProviderProps = useMemo(function () {\n var _options$configProvid, _options$configProvid2;\n var algorithm = (_options$configProvid = options.configProviderProps) === null || _options$configProvid === void 0 || (_options$configProvid = _options$configProvid.theme) === null || _options$configProvid === void 0 ? void 0 : _options$configProvid.algorithm;\n var algorithmArray = toArray(algorithm);\n algorithmArray = [].concat(_toConsumableArray(algorithmArray), [isDark ? theme.darkAlgorithm : null, options.compact ? theme.compactAlgorithm : null]).filter(Boolean);\n return _objectSpread2(_objectSpread2({}, options.configProviderProps), {}, {\n theme: _objectSpread2(_objectSpread2({}, (_options$configProvid2 = options.configProviderProps) === null || _options$configProvid2 === void 0 ? void 0 : _options$configProvid2.theme), {}, {\n algorithm: algorithmArray\n })\n });\n }, [isDark, options.compact, options.configProviderProps]);\n return /*#__PURE__*/jsx(ConfigProviderWrapper, _objectSpread2(_objectSpread2({\n locale: locale,\n componentSize: componentSize,\n space: {\n size: componentSize\n }\n }, configProviderProps), {}, {\n children: /*#__PURE__*/jsx(ContainerWrapper, {\n children: /*#__PURE__*/jsx(BrowserRouter, {\n basename: globalValue.routeBaseName,\n children: /*#__PURE__*/jsx(BootstrapCtx, {\n value: {\n breads: breadList,\n breadTitle: appProviderValue.breadTitle,\n breadcrumbProps: appProviderValue.breadcrumbProps,\n layoutMode: appProviderValue.layoutMode\n },\n children: /*#__PURE__*/jsx(AntdAppWrapper, {\n appProviderValue: appProviderValue,\n children: /*#__PURE__*/jsx(FbaApp, {\n children: /*#__PURE__*/jsxs(ErrorBoundary, {\n onError: options.onError,\n onReset: options.onErrorReset,\n FallbackComponent: options.ErrorFallback || ErrorFallback,\n children: [layoutMode === 'iframe-main' ? /*#__PURE__*/jsx(IframeMainRegister, {}) : null, /*#__PURE__*/jsx(Container, {\n layoutMode: appProviderValue.layoutMode,\n MenuEmptyRender: appProviderValue.MenuEmptyRender,\n menus: menus,\n ignoreMenuEmptyJudge: appProviderValue.ignoreMenuEmptyJudge,\n children: isNoLayout ? /*#__PURE__*/jsx(AppNoLayout, {\n verifySessionExpired: appProviderValue.verifySessionExpired,\n routeList: routeList,\n layoutMode: layoutMode,\n LayoutComponent: appProviderValue.LayoutComponent,\n breadExtendRender: appProviderValue.breadExtendRender,\n breads: appProviderValue.breads,\n hideDefaultBread: appProviderValue.hideDefaultBread,\n hideHeader: appProviderValue.hideHeader,\n breadTitle: appProviderValue.breadTitle,\n disableErrorHandling: appProviderValue.disableErrorHandling,\n ErrorHandling: appProviderValue.ErrorHandling,\n iframeTabAloneView: appProviderValue.iframeTabAloneView,\n layoutPageClassName: appProviderValue.layoutPageClassName,\n hideBreadsPathList: appProviderValue.hideBreadsPathList\n }) : /*#__PURE__*/jsx(AppProvider, _objectSpread2({}, appProviderValue))\n })]\n })\n })\n })\n })\n })\n })\n }));\n};\n\n/**\n * ```\n * 1. 外部针对出现 iframe tab标题为未知页面的配置、或者想修改二级页面tab标题的,在main模块中设置\n * window['_iframeTabConfig'] = {\n * '/system-get/menu3/detail': {\n * name: '详情',\n * },\n * };\n * 2. 在后续版本中会废弃`全局拦截model异常处理功能`,废弃ErrorHandling、onSessionExpired、verifySessionExpired三个属性的使用\n * ```\n */\nvar bootstrap = function bootstrap(options) {\n var root = createRoot(document.getElementById('app'));\n root.render(/*#__PURE__*/jsx(Bootstrap, _objectSpread2({}, options)));\n};\n\n/**\n * 获取iframeTab下的唯一值,iframeTab未删除时,唯一值不变,iframeTab删除后再打开,唯一值变化\n */\nvar getIframeTabUid = function getIframeTabUid(prefix) {\n var iframe = window.frameElement;\n // 获取 iframe 的 id 属性\n var iframeId = iframe === null || iframe === void 0 ? void 0 : iframe.id;\n return \"\".concat(prefix, \"_\").concat(iframeId);\n};\n\nexport { Bread, HistoryBackButton, LayoutPage, Page, PageWrapper, ProLayoutModel, bootstrap, getIframeTabUid, message, modal, notification, proLayoutModels, useHistoryBack, useIframe, useIframeTabActive, usePageWrapper, useRefreshRegisterIframeTab, useRegisterRefreshCurrentIframeTab };\n//# sourceMappingURL=index.js.map\n","import type { CSSProperties } from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport copy from 'copy-to-clipboard';\nimport { CheckOutlined, CopyOutlined } from '@ant-design/icons';\nimport { message } from '@flatbiz/pro-layout';\nimport { IconWrapper } from '../icon-wrapper/index.js';\n\nexport type CopyWrapperProps = {\n copyText: string | (() => string);\n /** 复制后提示消息 */\n copyAfterMsg?: string;\n /** 复制鼠标悬浮提示 */\n hoverTips?: string | ((trigger) => string);\n\n iconStyle?: CSSProperties;\n};\n\nexport const CopyWrapper = (props: CopyWrapperProps) => {\n const [trigger, setTrigger] = useState(false);\n\n const onClick = () => {\n if (trigger) return;\n setTrigger(true);\n const copyText =\n typeof props.copyText === 'function' ? props.copyText() : props.copyText;\n copy(copyText);\n if (props.copyAfterMsg) {\n message.success(props.copyAfterMsg);\n }\n };\n\n useEffect(() => {\n if (trigger) {\n setTimeout(() => {\n setTrigger(false);\n }, 1000);\n }\n }, [trigger]);\n\n const hoverTips = useMemo(() => {\n if (typeof props.hoverTips === 'function') {\n return props.hoverTips(trigger);\n }\n if (props.hoverTips) return props.hoverTips;\n return '复制';\n }, [props, trigger]);\n\n return (\n <IconWrapper\n hoverTips={hoverTips}\n text={\n trigger ? (\n <CheckOutlined\n style={{ color: 'var(--color-primary)', ...props.iconStyle }}\n />\n ) : (\n <CopyOutlined\n style={{ color: 'var(--color-primary)', ...props.iconStyle }}\n />\n )\n }\n size=\"small\"\n onClick={onClick}\n />\n );\n};\n"],"names":["message","CopyWrapper","props","_useState","useState","_useState2","_slicedToArray","trigger","setTrigger","onClick","copyText","copy","copyAfterMsg","success","useEffect","setTimeout","hoverTips","useMemo","_jsx","IconWrapper","text","_CheckOutlined","style","_objectSpread","color","iconStyle","_CopyOutlined","size"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAIA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICUSC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAAuB,EAAK;AACtD,EAAA,IAAAC,SAAA,GAA8BC,QAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,gBAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAtCI,IAAAA,OAAO,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,UAAU,GAAAH,UAAA,CAAA,CAAA,CAAA;AAE1B,EAAA,IAAMI,OAAO,GAAG,SAAVA,OAAOA,GAAS;AACpB,IAAA,IAAIF,OAAO,EAAE;IACbC,UAAU,CAAC,IAAI,CAAC;AAChB,IAAA,IAAME,QAAQ,GACZ,OAAOR,KAAK,CAACQ,QAAQ,KAAK,UAAU,GAAGR,KAAK,CAACQ,QAAQ,EAAE,GAAGR,KAAK,CAACQ,QAAQ;IAC1EC,IAAI,CAACD,QAAQ,CAAC;IACd,IAAIR,KAAK,CAACU,YAAY,EAAE;AACtBZ,MAAAA,OAAO,CAACa,OAAO,CAACX,KAAK,CAACU,YAAY,CAAC;AACrC;GACD;AAEDE,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAIP,OAAO,EAAE;AACXQ,MAAAA,UAAU,CAAC,YAAM;QACfP,UAAU,CAAC,KAAK,CAAC;OAClB,EAAE,IAAI,CAAC;AACV;AACF,GAAC,EAAE,CAACD,OAAO,CAAC,CAAC;AAEb,EAAA,IAAMS,SAAS,GAAGC,OAAO,CAAC,YAAM;AAC9B,IAAA,IAAI,OAAOf,KAAK,CAACc,SAAS,KAAK,UAAU,EAAE;AACzC,MAAA,OAAOd,KAAK,CAACc,SAAS,CAACT,OAAO,CAAC;AACjC;AACA,IAAA,IAAIL,KAAK,CAACc,SAAS,EAAE,OAAOd,KAAK,CAACc,SAAS;AAC3C,IAAA,OAAO,IAAI;AACb,GAAC,EAAE,CAACd,KAAK,EAAEK,OAAO,CAAC,CAAC;EAEpB,oBACEW,GAAA,CAACC,WAAW,EAAA;AACVH,IAAAA,SAAS,EAAEA,SAAU;AACrBI,IAAAA,IAAI,EACFb,OAAO,gBACLW,GAAA,CAAAG,cAAA,EAAA;AACEC,MAAAA,KAAK,EAAAC,cAAA,CAAA;AAAIC,QAAAA,KAAK,EAAE;OAA2BtB,EAAAA,KAAK,CAACuB,SAAS;AAAG,KAC9D,CAAC,gBAEFP,GAAA,CAAAQ,aAAA,EAAA;AACEJ,MAAAA,KAAK,EAAAC,cAAA,CAAA;AAAIC,QAAAA,KAAK,EAAE;OAA2BtB,EAAAA,KAAK,CAACuB,SAAS;AAAG,KAC9D,CAEJ;AACDE,IAAAA,IAAI,EAAC,OAAO;AACZlB,IAAAA,OAAO,EAAEA;AAAQ,GAClB,CAAC;AAEN;;;;","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-wrapper-DfWj_rer.js","sources":["@flatbiz/antd/src/icon-wrapper/icon-wrapper.tsx"],"sourcesContent":["import type { CSSProperties, ReactElement, ReactNode } from 'react';\nimport { Fragment } from 'react';\nimport { Popover, Tooltip } from 'antd';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport './style.less';\n\nexport type IconWrapperProps = {\n hoverTips?: string | ReactElement;\n /**\n * 提示类型\n * @default 'tooltip'\n */\n tipsType?: 'popover' | 'tooltip';\n icon?: ReactNode;\n style?: CSSProperties;\n text?: string | ReactElement;\n className?: string;\n size?: 'small' | 'middle' | 'large';\n onClick?: (event) => void;\n hideHoverBgColor?: boolean;\n hidden?: boolean;\n /** 图标对比文字的位置,默认:brefore */\n position?: 'before' | 'after';\n /** 图标与文字之间的间距 */\n gap?: number;\n};\nexport const IconWrapper = (props: IconWrapperProps) => {\n const {\n gap,\n size,\n hideHoverBgColor,\n onClick,\n className,\n hidden,\n style,\n icon,\n position,\n text,\n hoverTips,\n tipsType,\n ...otherProps\n } = props;\n const gapNew = isUndefined(gap) ? 5 : gap;\n const classNameNew = classNames(\n 'icon-wrapper',\n `icon-wrapper-${size || 'middle'}`,\n {\n 'icon-wrapper-hidden-hover-bgcolor': hideHoverBgColor,\n 'icon-wrapper-tigger': !!Object.keys(props).find((item) =>\n item.startsWith('on')\n ),\n },\n\n className\n );\n\n if (hidden) return <Fragment />;\n\n const _content =\n position === 'after' ? (\n <span\n className={classNameNew}\n style={style}\n onClick={onClick}\n {...otherProps}\n >\n {text ? (\n <span\n className=\"icon-wrapper-text\"\n style={icon ? { marginRight: gapNew } : {}}\n >\n {text}\n </span>\n ) : null}\n {icon}\n </span>\n ) : (\n <span\n className={classNameNew}\n style={style}\n onClick={onClick}\n {...otherProps}\n >\n {icon}\n {text ? (\n <span\n className=\"icon-wrapper-text\"\n style={icon ? { marginLeft: gapNew } : {}}\n >\n {text}\n </span>\n ) : null}\n </span>\n );\n if (hoverTips) {\n if (tipsType === 'popover') {\n return (\n <div className=\"icon-wrapper-wrapper\">\n <Popover content={hoverTips} {...otherProps}>\n {_content}\n </Popover>\n </div>\n );\n }\n return (\n <div className=\"icon-wrapper-wrapper\">\n <Tooltip title={hoverTips} {...otherProps}>\n {_content}\n </Tooltip>\n </div>\n );\n }\n return <div className=\"icon-wrapper-wrapper\">{_content}</div>;\n};\n"],"names":["IconWrapper","props","gap","size","hideHoverBgColor","onClick","className","hidden","style","icon","position","text","hoverTips","tipsType","otherProps","_objectWithoutProperties","_excluded","gapNew","_isUndefined","classNameNew","_classNames","concat","Object","keys","find","item","startsWith","_jsx","Fragment","_content","_jsxs","_objectSpread","children","marginRight","marginLeft","Popover","content","Tooltip","title"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selector-CQ_yMKjh.js","sources":["@flatbiz/antd/src/tree-selector-wrapper/model.ts","@flatbiz/antd/src/tree-selector-wrapper/utils.ts","@flatbiz/antd/src/tree-selector-wrapper/selector.tsx"],"sourcesContent":["import type { TreeSelectProps } from 'antd';\nimport type { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport type { TAny, TPlainObject, TSetDefaultDefined } from '@flatbiz/utils';\nimport type { TRequestStatus } from '../request-status/index.js';\n\nexport type ModelState = {\n treeSelectorList: TSetDefaultDefined<TreeSelectProps['treeData'], []>;\n treeSelectorTiledMap: TPlainObject;\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: {\n treeSelectorList: ModelState['treeSelectorList'];\n treeSelectorTiledMap: TPlainObject;\n };\n resetSelectBoxList: void;\n changeRequestStatus: TRequestStatus;\n};\n\nconst defaultState: ModelState = {\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n queryIsEmpty: false,\n};\n\nconst TreeSelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.treeSelectorList = params.treeSelectorList || [];\n state.treeSelectorTiledMap = params.treeSelectorTiledMap || {};\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.treeSelectorList = [];\n state.treeSelectorTiledMap = {};\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeSelectorWrapperModels: Record<\n string,\n API<ModelType<ModelState, ModelActionParams, TAny>>\n> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeSelectorWrapperModel('key值').useStore();\n * ```\n */\nexport const treeSelectorWrapperModel = (key: string) => {\n if (!treeSelectorWrapperModels[key]) {\n treeSelectorWrapperModels[key] = Model(TreeSelectorWrapperModel);\n }\n return treeSelectorWrapperModels[key];\n};\n","export const getExpandedKeysByValue = (value: string | number, treeSelectorTiledMap) => {\n const tempList: Array<string | number> = [];\n let parentNode = treeSelectorTiledMap[value];\n while (parentNode) {\n const pId = parentNode.pId;\n parentNode = treeSelectorTiledMap[pId];\n if (parentNode) {\n tempList.push(pId);\n }\n }\n return tempList;\n};\n\nexport const getExpandedKeysByValues = (values: Array<string | number>, treeSelectorTiledMap) => {\n if (values.length === 0) return [];\n const expandedKeys: Array<string | number> = [];\n values.forEach((value) => {\n const targetList = getExpandedKeysByValue(value, treeSelectorTiledMap);\n expandedKeys.push(...targetList);\n });\n return Array.from(new Set(expandedKeys));\n};\n","import {\n type DependencyList,\n type Key,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { usePrevious } from 'ahooks';\nimport { Button, TreeSelect, type TreeSelectProps } from 'antd';\nimport { dequal } from 'dequal';\nimport { CaretDownFilled, RedoOutlined } from '@ant-design/icons';\nimport { isArray, isObject } from '@dimjs/lang';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport {\n isNotEmptyArray,\n isUndefinedOrNull,\n type TAny,\n toArray,\n type TPlainObject,\n treeToArray,\n treeToTiledMap,\n} from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { fbaHooks } from '../fba-hooks/index.js';\nimport {\n RequestStatus,\n type TRequestStatusProps,\n} from '../request-status/index.js';\nimport { treeSelectorWrapperModel } from './model.js';\nimport { getExpandedKeysByValues } from './utils.js';\nimport './style.less';\n\ntype TreeSelectorWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeSelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeSelectorWrapperProps = Omit<\n TreeSelectProps,\n | 'treeExpandedKeys'\n | 'treeData'\n | 'loading'\n | 'onTreeExpand'\n | 'onChange'\n | 'value'\n | 'fieldNames'\n | 'defaultValue'\n | 'treeDataSimpleMode'\n | 'onSearch'\n> & {\n modelKey: string;\n fieldNames?: {\n /**\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter 后此配置失效\n */\n list?: string;\n label?: string;\n value?: string;\n children?: string;\n disabled?: string;\n };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`treeSelectorList`后无效果\n */\n serviceConfig?: TreeSelectorServiceConfig;\n /**\n * 当设置treeSelectorList后,serviceConfig 将失效\n */\n treeSelectorList?: TreeSelectProps['treeData'];\n /**\n * treeSelectorList发生变更时触发\n */\n onTreeSelectorListChange?: (\n treeSelectorList?: TreeSelectProps['treeData']\n ) => void;\n /**\n * 通过服务获取数据异常回调,当设置`treeSelectorList`后无效果\n */\n onTreeSelectorRequestError?: (error: Error) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项,例如:{ label: '全部', value: 'all' }\n * 3. 自定义字段会通过fieldNames转换后使用\n * 4. 多选操作时,最好不要设置全部选项\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /**\n * 1. 当 treeCheckable = true && treeCheckStrictly = true,如果选择的数据中含有父节点,selectedValue、selectedList返回数据包含父节点\n * 2. 当 treeCheckable = true && treeCheckStrictly = false,selectedValue、selectedList返回的数据不包含父节点\n * 3. 当 treeCheckable = false,节点选择没有级联关系,selectedValue、selectedList返回的数据就是实际选择\n * 4. selectAllDataList 返回的数据都包含父节点\n * 5. 使用 onTreeItemAdapter 拼接label数据后,选中回填数据也是拼接后的\n * 6. triggerInfo 当前操作节点数据\n */\n onChange?: (\n selectedValue?: TreeSelectorWrapperValue,\n selectedData?: TPlainObject[] | TPlainObject,\n triggerInfo?: TPlainObject\n ) => void;\n /**\n * tree item 数据适配器,返回的数据会通过fieldNames配置取数据\n * ```\n * 1. 可用于设置disabled状态\n * onTreeItemDataAdapter: (dataItem) => {\n * if(dataItem.xx === xx){\n * dataItem['disabled] = true;\n * }\n * return dataItem;\n * }\n * 2. 可设置label数据显示\n * ```\n */\n onTreeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n // icon 无法实现、treeIcon不起作用4.20.0\n // showIcon?: boolean;\n // icon?: (data: TPlainObject) => ReactElement;\n /** 自定义异常提示文案 */\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeSelectorWrapperValue;\n\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n labelInValue?: boolean;\n /**\n * @deprecated 已弃用\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * treeCheckStrictly = true模式下有效,点击父节点是否选中所有子节点,默认值:true\n */\n selectedParentCheckedAllChildrenList?: boolean;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n\n /**\n * 在第一次渲染value时,主动执行一次onChange\n * ```\n * 1. 设置labelInValue = true 时有效\n * 2. 不考虑子父节点的关系\n * ```\n */\n executeOnChangeInRenderFirstValue?: boolean;\n};\n\n/**\n * 树选择器包装组件,由于过度封装,部分antd TreeSelect原始功能不支持,不满足情况的请使用antd TreeSelect实现\n * ```\n * 1. 当设置treeSelectorList属性后,serviceConfig、onTreeSelectorListChange将失效\n * 2. 父节点默认不返回,需要返回请设置showCheckedStrategy\n * ```\n */\nexport const TreeSelectorWrapper = (props: TreeSelectorWrapperProps) => {\n const {\n serviceConfig,\n effectDependencyList,\n onTreeSelectorListChange,\n onTreeSelectorRequestError,\n treeSelectorList,\n requestMessageConfig,\n modelKey,\n value,\n labelInValue: _labelInValue,\n labelInValueFieldNames,\n onTreeItemDataAdapter,\n selectedParentCheckedAllChildrenList = true,\n fieldNames,\n onChange,\n treeDefaultExpandAll,\n showAllOption,\n initRootExpand,\n treeDefaultExpandedKeys,\n executeOnChangeInRenderFirstValue,\n ...otherProps\n } = props;\n /**\n * 不能使用key、defaultValue模式\n * 1. 勾选的和回填选中不相同情况,勾选后会渲染defaultValue模式后,弹框被关闭,操作体验存在问题\n */\n const hasTreeSelectorList = Object.prototype.hasOwnProperty.call(\n props,\n 'treeSelectorList'\n );\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<Key[]>();\n const [state, actions] = treeSelectorWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${modelKey}`;\n const isMultiple = otherProps.treeCheckable || otherProps.multiple;\n const responseFirstRef = useRef(true);\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n const labelInValue = useMemo(() => {\n if (otherProps.treeCheckStrictly) return true;\n return _labelInValue;\n }, [_labelInValue, otherProps.treeCheckStrictly]);\n\n const fieldNamesMerge = useMemo(() => {\n return {\n label: 'label',\n value: 'value',\n children: 'children',\n disabled: 'disabled',\n ...fieldNames,\n };\n }, [fieldNames]);\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n\n const allOptionConfig = useMemo(() => {\n if (showAllOption) {\n const isTrue = showAllOption === true;\n return {\n label: isTrue ? '全部' : showAllOption.label,\n value: isTrue ? '' : showAllOption.value,\n };\n }\n return null;\n }, [showAllOption]);\n\n const [searchValue, setSearchValue] = useState<string>();\n\n const propsPureValue = fbaHooks.useMemoCustom(() => {\n return toArray<TAny>(value).map((item) => {\n if (isObject(item)) {\n return (\n labelInValue\n ? item[labelInValueFieldNamesMerge.value]\n : item[fieldNamesMerge.value]\n ) as string | number;\n }\n return item as string | number;\n });\n }, [\n fieldNamesMerge.value,\n labelInValue,\n labelInValueFieldNamesMerge.value,\n props.value,\n ]);\n\n const prevPropsPureValue = usePrevious(propsPureValue);\n\n fbaHooks.useEffectCustom(() => {\n if (state.treeSelectorList.length > 0) {\n if (\n responseFirstRef.current &&\n executeOnChangeInRenderFirstValue &&\n labelInValue\n ) {\n const dataList: TPlainObject[] = [];\n const originalList: TPlainObject[] = [];\n propsPureValue.forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n if (target) {\n originalList.push(target);\n dataList.push({\n [labelInValueFieldNamesMerge.label]:\n target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]:\n target[fieldNamesMerge.value],\n });\n }\n });\n if (isMultiple) {\n props.onChange?.(dataList ? dataList : undefined, originalList);\n } else {\n props.onChange?.(dataList ? dataList[0] : undefined, originalList[0]);\n }\n }\n let treeExpandedKeys: Array<string | number> = [];\n if (responseFirstRef.current) {\n responseFirstRef.current = false;\n if (treeDefaultExpandedKeys) {\n treeExpandedKeys = treeDefaultExpandedKeys as Array<string | number>;\n } else if (treeDefaultExpandAll) {\n const allValues = Object.keys(state.treeSelectorTiledMap).map(\n (item) =>\n state.treeSelectorTiledMap[item]?.[fieldNamesMerge.value] as\n | string\n | number\n );\n treeExpandedKeys = allValues;\n } else if (initRootExpand && state.treeSelectorList.length === 1) {\n treeExpandedKeys = [state.treeSelectorList[0][fieldNamesMerge.value]];\n }\n setTreeExpandedKeys(treeExpandedKeys);\n }\n // else {\n // responseFirstRef.current = false;\n // if (!searchValue) {\n // const expandedKeys = getExpandedKeysByValues(\n // propsPureValue,\n // state.treeSelectorTiledMap\n // );\n // setTreeExpandedKeys(expandedKeys);\n // }\n // }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n fbaHooks.useEffectCustom(() => {\n if (!responseFirstRef.current && propsPureValue.length > 0) {\n if (\n state.treeSelectorList.length > 0 &&\n JSON.stringify(propsPureValue) !== JSON.stringify(prevPropsPureValue)\n ) {\n if (!searchValue) {\n const expandedKeys = getExpandedKeysByValues(\n propsPureValue,\n state.treeSelectorTiledMap\n );\n setTreeExpandedKeys(expandedKeys);\n }\n }\n }\n }, [propsPureValue, state.treeSelectorList]);\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n let result = respData;\n if (newServiceConfig.onRequestResultAdapter) {\n result = newServiceConfig.onRequestResultAdapter(\n respData as unknown as TPlainObject\n );\n } else if (fieldNamesMerge.list) {\n result = get(respData, fieldNamesMerge.list);\n }\n if (result && !isArray(result)) {\n console.warn('待渲染数据为非数组结构', result);\n return [];\n }\n return result || [];\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys || [];\n const params = extend({}, newServiceConfig.params);\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n void actions.changeRequestStatus('no-dependencies-params');\n console.warn(\n `TreeSelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`\n );\n return;\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(\n _respData\n ) as TreeSelectProps['treeData'];\n setLoading(false);\n window[requestPreKey] = false;\n onChangeSelectorList(respData || []);\n } catch (error: TAny) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n onTreeSelectorRequestError?.(error);\n }\n });\n\n hooks.useCustomCompareEffect(\n () => {\n if (hasTreeSelectorList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (newEffectDependencyList.length) {\n // 内部主动清楚数据,被依赖的数据发生变更时,依赖组件数据清空\n onChangeSelectorList([]);\n void startDataSourceRequest();\n return;\n }\n const allState = treeSelectorWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n return;\n }\n },\n newEffectDependencyList,\n dequal\n );\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeSelectorList.length === 0) {\n void actions.setSelectBoxList({\n treeSelectorList: [],\n treeSelectorTiledMap: {},\n });\n onTreeSelectorListChange?.([]);\n return;\n }\n // 全部选项\n const tempItem = allOptionConfig\n ? {\n [fieldNamesMerge.label]: allOptionConfig.label,\n [fieldNamesMerge.value]: allOptionConfig.value,\n }\n : undefined;\n const newdataList = showAllOption ? [tempItem, ...dataList] : dataList;\n void actions.setSelectBoxList({\n treeSelectorList: newdataList,\n treeSelectorTiledMap: treeToTiledMap(\n newdataList,\n {\n value: fieldNamesMerge.value,\n children: fieldNamesMerge.children,\n },\n 'pId'\n ),\n });\n onTreeSelectorListChange?.(dataList);\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasTreeSelectorList) {\n onChangeSelectorList(treeSelectorList || []);\n }\n }, [treeSelectorList]);\n\n const onTreeExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n /**\n * 根据treeCheckable、treeCheckStrictly、showCheckedStrategy等设置情况,判断返回数据是否包含父节点\n * 1. 当 treeCheckable = true,changeValue 数据格式为 { label,value }[]\n */\n const onInnerChange = hooks.useCallbackRef(\n (changeValue: TAny, _data, triggerInfo: TPlainObject) => {\n let resultValueList = toArray<TAny>(changeValue);\n if (otherProps.treeCheckStrictly) {\n if (selectedParentCheckedAllChildrenList && triggerInfo.checked) {\n const target = state.treeSelectorTiledMap[triggerInfo?.triggerValue];\n if (isNotEmptyArray(target[fieldNamesMerge.children])) {\n resultValueList = treeToArray(\n [target],\n fieldNamesMerge.children\n ).map((item) => {\n return item[fieldNamesMerge.value];\n });\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n } else {\n resultValueList = changeValue?.map((item) => item.value);\n }\n }\n if (labelInValue) {\n const resultItemList = resultValueList.map((item) => {\n const target = state.treeSelectorTiledMap[item];\n return {\n [labelInValueFieldNamesMerge.label]: target[fieldNamesMerge.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNamesMerge.value],\n };\n });\n if (isMultiple) {\n onChange?.(resultItemList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultItemList[0], resultItemList[0], triggerInfo);\n }\n } else {\n const resultItemList = resultValueList.map((item) => {\n return state.treeSelectorTiledMap[item];\n });\n if (isMultiple) {\n onChange?.(resultValueList, resultItemList, triggerInfo);\n } else {\n onChange?.(resultValueList[0], resultItemList[0], triggerInfo);\n }\n }\n }\n );\n\n const mapTree = hooks.useCallbackRef((data) => {\n if (!data) return null;\n return data.map((item) => {\n const itemAdapterData = onTreeItemDataAdapter?.({ ...item }) || item;\n const children = itemAdapterData[fieldNamesMerge.children];\n const value = itemAdapterData[fieldNamesMerge.value];\n const label = itemAdapterData[fieldNamesMerge.label];\n const disabled = itemAdapterData[fieldNamesMerge.disabled]\n ? itemAdapterData[fieldNamesMerge.disabled]\n : itemAdapterData.disabled;\n return (\n <TreeSelect.TreeNode\n {...itemAdapterData}\n disabled={disabled}\n value={value}\n title={label}\n key={`${value}`}\n >\n {children && children.length > 0 && mapTree(children)}\n </TreeSelect.TreeNode>\n );\n });\n });\n\n const onSearch = (searchValue?: string) => {\n setSearchValue(searchValue);\n let targetKeyList: Array<string | number> = [];\n if (!searchValue) {\n setSearchValue(undefined);\n targetKeyList = propsPureValue;\n } else {\n Object.keys(state.treeSelectorTiledMap).forEach((item) => {\n const target = state.treeSelectorTiledMap[item];\n const label = target?.[fieldNamesMerge.label] as string;\n if (label?.includes(searchValue)) {\n targetKeyList.push(target[fieldNamesMerge.value]);\n }\n });\n }\n\n const expandedKeysMerge = getExpandedKeysByValues(\n targetKeyList,\n state.treeSelectorTiledMap\n );\n setTreeExpandedKeys(expandedKeysMerge);\n };\n\n const treeValue = isMultiple ? propsPureValue : propsPureValue[0];\n\n /**\n * 1. 使用 TreeNode 渲染节点,不能重写 fieldNames 配置\n * 2. 使用 TreeNode 是为了实现 TreeNode ICON\n */\n return (\n <TreeSelect\n searchValue={searchValue}\n dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}\n showSearch={true}\n treeLine={{ showLeafIcon: false }}\n treeNodeFilterProp=\"title\"\n switcherIcon={<CaretDownFilled />}\n popupMatchSelectWidth={false}\n {...otherProps}\n className={classNames('v-tree-select-wrapper', otherProps.className)}\n popupClassName={classNames(\n 'v-tree-select-wrapper-dropdown',\n otherProps.popupClassName\n )}\n onChange={onInnerChange}\n treeExpandedKeys={treeExpandedKeys}\n value={treeValue}\n onSearch={onSearch}\n loading={loading}\n onTreeExpand={onTreeExpand}\n style={{ width: '100%', ...otherProps.style }}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n messageConfig={requestMessageConfig}\n loading={loading}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {mapTree(state.treeSelectorList)}\n </TreeSelect>\n );\n};\n"],"names":["defaultState","treeSelectorList","treeSelectorTiledMap","queryIsEmpty","TreeSelectorWrapperModel","actions","setSelectBoxList","params","state","requestStatus","resetSelectBoxList","changeRequestStatus","treeSelectorWrapperModels","treeSelectorWrapperModel","key","Model","getExpandedKeysByValue","value","tempList","parentNode","pId","push","getExpandedKeysByValues","values","length","expandedKeys","forEach","targetList","apply","_toConsumableArray","Array","from","Set","TreeSelectorWrapper","props","serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","requestMessageConfig","modelKey","_labelInValue","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","_props$selectedParent","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys","executeOnChangeInRenderFirstValue","otherProps","_objectWithoutProperties","_excluded","hasTreeSelectorList","Object","prototype","hasOwnProperty","call","newServiceConfig","newEffectDependencyList","_fbaHooks$useSafeStat","fbaHooks","useSafeState","_fbaHooks$useSafeStat2","_slicedToArray","loading","setLoading","_useState","useState","_useState2","treeExpandedKeys","setTreeExpandedKeys","_treeSelectorWrapperM","useStore","_treeSelectorWrapperM2","requestPreKey","concat","isMultiple","treeCheckable","multiple","responseFirstRef","useRef","useMemo","treeCheckStrictly","fieldNamesMerge","_objectSpread","label","children","disabled","labelInValueFieldNamesMerge","allOptionConfig","isTrue","_useState3","_useState4","searchValue","setSearchValue","propsPureValue","useMemoCustom","toArray","map","item","_isObject","prevPropsPureValue","usePrevious","useEffectCustom","current","dataList","originalList","target","_defineProperty","_props$onChange","undefined","_props$onChange2","allValues","keys","_state$treeSelectorTi","JSON","stringify","valueIsEmpty","isUndefinedOrNull","serviceResponseHandle","respData","result","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","isEmpty","_newServiceConfig$onR","_respData","onRequest","Error","_extend","find","join","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","resolve","then","$await_2","onChangeSelectorList","useCustomCompareEffect","allState","getState","dequal","tempItem","newdataList","treeToTiledMap","onTreeExpand","onAgainRequest","onInnerChange","changeValue","_data","triggerInfo","resultValueList","checked","triggerValue","isNotEmptyArray","treeToArray","resultItemList","mapTree","data","itemAdapterData","_createElement","TreeSelect","TreeNode","title","onSearch","targetKeyList","includes","expandedKeysMerge","treeValue","_jsx","dropdownStyle","maxHeight","overflow","showSearch","treeLine","showLeafIcon","treeNodeFilterProp","switcherIcon","_CaretDownFilled","popupMatchSelectWidth","className","_classNames","popupClassName","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type"],"mappings":"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"}
|