@zat-design/sisyphus-react 4.5.10-beta.1 → 4.6.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/es/FormsProvider/index.js +14 -21
  2. package/es/ProAction/components/CheckModalContent/index.js +12 -26
  3. package/es/ProAction/index.js +79 -83
  4. package/es/ProAction/propsType.js +0 -1
  5. package/es/ProConfigProvider/index.js +63 -110
  6. package/es/ProConfigProvider/propsType.js +0 -1
  7. package/es/ProDownload/index.js +55 -65
  8. package/es/ProDownload/propsType.js +0 -1
  9. package/es/ProDownload/utils.js +61 -95
  10. package/es/ProDrawerForm/components/ProDrawer/index.js +83 -113
  11. package/es/ProDrawerForm/components/ProModal/index.js +77 -108
  12. package/es/ProDrawerForm/components/index.js +6 -2
  13. package/es/ProDrawerForm/hooks/useConfirmClose.js +20 -39
  14. package/es/ProDrawerForm/index.js +29 -38
  15. package/es/ProDrawerForm/propsType.js +0 -1
  16. package/es/ProDrawerForm/utils/index.js +18 -36
  17. package/es/ProEditLabel/components/RenderProForm.js +45 -49
  18. package/es/ProEditLabel/index.js +126 -163
  19. package/es/ProEditLabel/propsType.js +0 -1
  20. package/es/ProEditLabel/utils/index.js +5 -8
  21. package/es/ProEditTable/components/ActionButton/index.js +111 -119
  22. package/es/ProEditTable/components/RcTable/BaseTable.js +38 -51
  23. package/es/ProEditTable/components/RcTable/DraggableTable.js +97 -129
  24. package/es/ProEditTable/components/RcTable/index.js +6 -4
  25. package/es/ProEditTable/components/RenderField/ListChangedWrapper.js +77 -95
  26. package/es/ProEditTable/components/RenderField/index.js +490 -587
  27. package/es/ProEditTable/components/RenderField/propsType.js +0 -1
  28. package/es/ProEditTable/components/RenderField/tools.js +115 -112
  29. package/es/ProEditTable/components/RenderToolbar/index.js +47 -73
  30. package/es/ProEditTable/components/Summary/index.js +38 -64
  31. package/es/ProEditTable/components/Validator/index.js +46 -46
  32. package/es/ProEditTable/components/index.js +12 -5
  33. package/es/ProEditTable/index.js +456 -378
  34. package/es/ProEditTable/propsType.js +0 -1
  35. package/es/ProEditTable/utils/config.js +60 -122
  36. package/es/ProEditTable/utils/diffOriginal.js +45 -82
  37. package/es/ProEditTable/utils/getDefaultProps.js +19 -24
  38. package/es/ProEditTable/utils/index.js +150 -236
  39. package/es/ProEditTable/utils/tools.js +149 -286
  40. package/es/ProEditTable/utils/transform.js +25 -30
  41. package/es/ProEditTable/utils/useEditTableError.js +30 -43
  42. package/es/ProEditTable/utils/useShouldUpdateForTable.js +42 -72
  43. package/es/ProEditTable/utils/validateAll.js +87 -154
  44. package/es/ProEnum/components/Group.js +38 -30
  45. package/es/ProEnum/components/Tag.js +22 -26
  46. package/es/ProEnum/hooks/useEnum.js +48 -116
  47. package/es/ProEnum/hooks/useEnumRequest.js +128 -179
  48. package/es/ProEnum/hooks/useFrequentEnumRequest.js +40 -48
  49. package/es/ProEnum/index.js +162 -172
  50. package/es/ProEnum/propsType.js +0 -1
  51. package/es/ProEnum/utils/eventCenter.js +10 -12
  52. package/es/ProEnum/utils/frequentEnum.js +35 -92
  53. package/es/ProEnum/utils/getEnum.js +32 -90
  54. package/es/ProEnum/utils/getEnumLabel.js +44 -49
  55. package/es/ProEnum/utils/index.js +93 -207
  56. package/es/ProForm/components/Container.js +13 -28
  57. package/es/ProForm/components/FormFooter/index.js +36 -44
  58. package/es/ProForm/components/FormFooter/propsType.js +0 -1
  59. package/es/ProForm/components/base/Checkbox/index.js +32 -59
  60. package/es/ProForm/components/base/DatePicker/index.js +49 -71
  61. package/es/ProForm/components/base/Input/index.js +63 -97
  62. package/es/ProForm/components/base/Input/propsType.js +0 -1
  63. package/es/ProForm/components/base/InputNumber/index.js +118 -172
  64. package/es/ProForm/components/base/Radio/index.js +39 -52
  65. package/es/ProForm/components/base/RangePicker/index.js +109 -127
  66. package/es/ProForm/components/base/RangePicker/useDateRange.js +20 -17
  67. package/es/ProForm/components/base/Select/index.js +63 -89
  68. package/es/ProForm/components/base/Switch/index.js +27 -35
  69. package/es/ProForm/components/base/SwitchCheckbox/index.js +36 -54
  70. package/es/ProForm/components/base/TextArea/index.js +30 -41
  71. package/es/ProForm/components/base/TimePicker/index.js +27 -37
  72. package/es/ProForm/components/combination/Container/index.js +37 -47
  73. package/es/ProForm/components/combination/Container/propsType.js +0 -1
  74. package/es/ProForm/components/combination/FormList/components/ActionButton.js +165 -237
  75. package/es/ProForm/components/combination/FormList/components/BlockFields.js +98 -103
  76. package/es/ProForm/components/combination/FormList/components/Empty.js +27 -54
  77. package/es/ProForm/components/combination/FormList/components/LineFields.js +57 -54
  78. package/es/ProForm/components/combination/FormList/components/ToolbarButton.js +61 -109
  79. package/es/ProForm/components/combination/FormList/index.js +151 -161
  80. package/es/ProForm/components/combination/FormList/propsType.js +0 -1
  81. package/es/ProForm/components/combination/FormList/utils.js +22 -38
  82. package/es/ProForm/components/combination/Group/component/AddonWrapper/index.js +12 -28
  83. package/es/ProForm/components/combination/Group/component/ComRender.js +50 -111
  84. package/es/ProForm/components/combination/Group/component/FlexibleGroup.js +105 -206
  85. package/es/ProForm/components/combination/Group/hooks/index.js +68 -128
  86. package/es/ProForm/components/combination/Group/index.js +87 -126
  87. package/es/ProForm/components/combination/Group/propsType.js +0 -1
  88. package/es/ProForm/components/combination/Group/utils/index.js +124 -239
  89. package/es/ProForm/components/combination/ProCascader/index.js +156 -199
  90. package/es/ProForm/components/combination/ProCascader/propsType.js +0 -1
  91. package/es/ProForm/components/combination/ProCascader/utils/index.js +12 -21
  92. package/es/ProForm/components/combination/ProModalSelect/hooks/useRequestList.js +63 -75
  93. package/es/ProForm/components/combination/ProModalSelect/index.js +290 -348
  94. package/es/ProForm/components/combination/ProModalSelect/propsType.js +0 -1
  95. package/es/ProForm/components/combination/ProModalSelect/utils/index.js +32 -39
  96. package/es/ProForm/components/combination/ProNumberRange/index.js +100 -156
  97. package/es/ProForm/components/combination/ProNumberRange/propsType.js +0 -1
  98. package/es/ProForm/components/combination/ProRangeLimit/index.js +104 -115
  99. package/es/ProForm/components/combination/ProRangeLimit/propsType.js +0 -1
  100. package/es/ProForm/components/combination/ProTimeLimit/hooks/useControlled.js +16 -16
  101. package/es/ProForm/components/combination/ProTimeLimit/index.js +75 -109
  102. package/es/ProForm/components/index.js +56 -34
  103. package/es/ProForm/components/render/ChangedWrapper.js +85 -94
  104. package/es/ProForm/components/render/ConfirmWrapper.js +27 -39
  105. package/es/ProForm/components/render/CustomComponentViewWrapper.js +65 -82
  106. package/es/ProForm/components/render/Render.js +223 -329
  107. package/es/ProForm/components/render/RenderFields.js +76 -113
  108. package/es/ProForm/components/render/propsType.js +0 -1
  109. package/es/ProForm/hooks/useControlled.js +8 -10
  110. package/es/ProForm/hooks/useDeepCompareMemo.js +11 -11
  111. package/es/ProForm/hooks/useFieldProps.js +8 -4
  112. package/es/ProForm/hooks/useForm.js +50 -110
  113. package/es/ProForm/hooks/useRules.js +17 -33
  114. package/es/ProForm/hooks/useShouldUpdate.js +77 -152
  115. package/es/ProForm/hooks/useWatch.js +58 -129
  116. package/es/ProForm/index.js +157 -194
  117. package/es/ProForm/propsType.js +15 -7
  118. package/es/ProForm/utils/buildFormItemProps.js +51 -58
  119. package/es/ProForm/utils/diffOriginal.js +43 -73
  120. package/es/ProForm/utils/getDefaultProps.js +18 -24
  121. package/es/ProForm/utils/index.js +159 -234
  122. package/es/ProForm/utils/processDependencies.js +21 -60
  123. package/es/ProForm/utils/reactiveValues.js +20 -34
  124. package/es/ProForm/utils/rulesCreator.js +42 -40
  125. package/es/ProForm/utils/transformNames.js +10 -13
  126. package/es/ProForm/utils/transformValue.js +16 -29
  127. package/es/ProForm/utils/valueType.js +96 -178
  128. package/es/ProIcon/config/index.js +340 -274
  129. package/es/ProIcon/index.js +135 -209
  130. package/es/ProIcon/propsTypes.js +0 -1
  131. package/es/ProIcon/utils/index.js +24 -39
  132. package/es/ProLayout/components/Layout/Header/index.js +108 -141
  133. package/es/ProLayout/components/Layout/Menu/FoldMenu/index.js +134 -190
  134. package/es/ProLayout/components/Layout/Menu/OpenMenu/index.js +111 -137
  135. package/es/ProLayout/components/Layout/Menu/OpenMenu/propsType.js +0 -1
  136. package/es/ProLayout/components/Layout/Menu/SideMenu/index.js +23 -31
  137. package/es/ProLayout/components/Layout/Menu/index.js +92 -89
  138. package/es/ProLayout/components/Layout/Notice/index.js +13 -27
  139. package/es/ProLayout/components/Layout/index.js +8 -3
  140. package/es/ProLayout/components/ProCollapse/PropTypes.js +0 -1
  141. package/es/ProLayout/components/ProCollapse/index.js +89 -111
  142. package/es/ProLayout/components/ProFooter/PropTypes.js +0 -1
  143. package/es/ProLayout/components/ProFooter/index.js +27 -25
  144. package/es/ProLayout/components/ProHeader/PropTypes.js +0 -1
  145. package/es/ProLayout/components/ProHeader/components/Copy/index.js +23 -21
  146. package/es/ProLayout/components/ProHeader/components/Describe/index.js +67 -86
  147. package/es/ProLayout/components/ProHeader/components/ProBackBtn/index.js +18 -21
  148. package/es/ProLayout/components/ProHeader/components/ProBackBtn/propsType.js +0 -1
  149. package/es/ProLayout/components/ProHeader/components/index.js +6 -2
  150. package/es/ProLayout/components/ProHeader/index.js +216 -356
  151. package/es/ProLayout/components/ProHeader/utils/index.js +19 -26
  152. package/es/ProLayout/components/TabsManager/components/TabContextMenu.js +92 -85
  153. package/es/ProLayout/components/TabsManager/components/TabItem.js +53 -64
  154. package/es/ProLayout/components/TabsManager/components/TabsContext.js +5 -5
  155. package/es/ProLayout/components/TabsManager/components/TabsHeader.js +42 -52
  156. package/es/ProLayout/components/TabsManager/hooks/useActiveTab.js +8 -9
  157. package/es/ProLayout/components/TabsManager/hooks/useIframeRoute.js +19 -32
  158. package/es/ProLayout/components/TabsManager/hooks/useProLayoutTabs.js +6 -20
  159. package/es/ProLayout/components/TabsManager/hooks/useTabsCache.js +25 -42
  160. package/es/ProLayout/components/TabsManager/hooks/useTabsState.js +310 -412
  161. package/es/ProLayout/components/TabsManager/hooks/useTabsUrlSync.js +132 -95
  162. package/es/ProLayout/components/TabsManager/index.js +415 -391
  163. package/es/ProLayout/components/TabsManager/propTypes.js +7 -15
  164. package/es/ProLayout/components/TabsManager/utils/historyObserver.js +26 -23
  165. package/es/ProLayout/components/TabsManager/utils/index.d.ts +2 -1
  166. package/es/ProLayout/components/TabsManager/utils/index.js +135 -184
  167. package/es/ProLayout/components/index.js +8 -3
  168. package/es/ProLayout/index.js +171 -229
  169. package/es/ProLayout/propTypes.d.ts +9 -0
  170. package/es/ProLayout/propTypes.js +12 -52
  171. package/es/ProLayout/utils/index.js +48 -128
  172. package/es/ProSelect/components/AdaptiveTooltip.js +26 -25
  173. package/es/ProSelect/index.js +184 -229
  174. package/es/ProSelect/propsType.js +0 -1
  175. package/es/ProSelect/utils/index.js +100 -146
  176. package/es/ProStep/components/Anchor/index.js +71 -82
  177. package/es/ProStep/components/Item/index.js +49 -56
  178. package/es/ProStep/components/LazyLoad/index.js +23 -29
  179. package/es/ProStep/components/Listener/index.js +20 -33
  180. package/es/ProStep/components/Step/index.js +31 -38
  181. package/es/ProStep/constants.js +4 -1
  182. package/es/ProStep/index.js +166 -153
  183. package/es/ProStep/propsType.js +0 -1
  184. package/es/ProStep/utils/index.js +29 -55
  185. package/es/ProStepTab/index.js +83 -138
  186. package/es/ProStepTab/propsType.js +0 -1
  187. package/es/ProTable/components/EditableCell/EditIcon.js +10 -14
  188. package/es/ProTable/components/EditableCell/index.js +37 -71
  189. package/es/ProTable/components/EditableCell/propsType.js +0 -1
  190. package/es/ProTable/components/FormatColumn/index.js +209 -340
  191. package/es/ProTable/components/FormatColumn/propsType.js +0 -1
  192. package/es/ProTable/components/RcTable/components/BaseTable/index.js +35 -39
  193. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.js +80 -107
  194. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/index.js +54 -48
  195. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/propsType.js +0 -1
  196. package/es/ProTable/components/RcTable/components/DraggableTable/index.js +47 -54
  197. package/es/ProTable/components/RcTable/index.js +6 -4
  198. package/es/ProTable/components/RenderColumn/index.js +158 -186
  199. package/es/ProTable/components/RenderEmptyText/index.js +12 -21
  200. package/es/ProTable/components/RenderFooter/index.js +15 -15
  201. package/es/ProTable/components/RenderSummary/index.js +33 -50
  202. package/es/ProTable/components/RenderTableHeader/index.js +44 -46
  203. package/es/ProTable/components/RenderTabs/index.js +47 -51
  204. package/es/ProTable/components/TableResizable/index.js +56 -72
  205. package/es/ProTable/components/TooltipTitle/index.js +13 -21
  206. package/es/ProTable/components/index.js +16 -36
  207. package/es/ProTable/hooks/useAntdTable.js +185 -219
  208. package/es/ProTable/index.js +232 -249
  209. package/es/ProTable/propsType.js +0 -1
  210. package/es/ProTable/utils/columnStorage.js +63 -88
  211. package/es/ProTable/utils/index.js +57 -90
  212. package/es/ProTabs/components/Card/index.js +20 -48
  213. package/es/ProTabs/components/index.js +4 -1
  214. package/es/ProTabs/index.js +39 -56
  215. package/es/ProTabs/propType.js +0 -1
  216. package/es/ProThemeTools/component/ProTools/index.js +106 -158
  217. package/es/ProThemeTools/component/index.js +4 -1
  218. package/es/ProThemeTools/context/ThemeContext.js +67 -146
  219. package/es/ProThemeTools/index.js +103 -156
  220. package/es/ProThemeTools/propsType.js +0 -1
  221. package/es/ProThemeTools/utils/index.js +60 -109
  222. package/es/ProTooltip/index.js +132 -165
  223. package/es/ProTooltip/propsType.js +0 -1
  224. package/es/ProTree/components/AdaptiveTooltip.js +15 -17
  225. package/es/ProTree/components/CloseIcon.js +18 -26
  226. package/es/ProTree/components/List.js +28 -47
  227. package/es/ProTree/components/ProTree.js +152 -211
  228. package/es/ProTree/components/ProTreeSelect/index.js +254 -458
  229. package/es/ProTree/components/ProTreeSelect/propsType.js +0 -1
  230. package/es/ProTree/components/SearchTitle.js +23 -42
  231. package/es/ProTree/components/Tree.js +147 -195
  232. package/es/ProTree/components/index.js +10 -5
  233. package/es/ProTree/index.js +12 -16
  234. package/es/ProTree/propsType.js +0 -1
  235. package/es/ProTree/utils.js +46 -118
  236. package/es/ProTreeModal/components/Cascader.js +56 -64
  237. package/es/ProTreeModal/components/CloseIcon.js +18 -26
  238. package/es/ProTreeModal/components/List.js +114 -180
  239. package/es/ProTreeModal/components/SearchTitle.js +15 -18
  240. package/es/ProTreeModal/components/SortableItem.js +29 -58
  241. package/es/ProTreeModal/components/Tree.js +99 -113
  242. package/es/ProTreeModal/components/Trigger.js +87 -121
  243. package/es/ProTreeModal/components/index.js +14 -6
  244. package/es/ProTreeModal/index.js +397 -435
  245. package/es/ProTreeModal/propsType.js +0 -1
  246. package/es/ProTreeModal/utils.js +52 -95
  247. package/es/ProUpload/components/ButtonRender.js +44 -54
  248. package/es/ProUpload/components/DragRender.js +94 -134
  249. package/es/ProUpload/components/DraggableUploadListItem.js +12 -25
  250. package/es/ProUpload/components/Example.js +27 -31
  251. package/es/ProUpload/components/FileItem.js +69 -163
  252. package/es/ProUpload/components/ImageRender.js +134 -170
  253. package/es/ProUpload/index.js +68 -100
  254. package/es/ProUpload/propsType.js +0 -1
  255. package/es/ProUpload/uitls.js +8 -4
  256. package/es/ProUtils/utils/index.js +17 -13
  257. package/es/ProViewer/index.js +154 -175
  258. package/es/ProViewer/propsType.js +0 -5
  259. package/es/ProWaterMark/index.js +9 -16
  260. package/es/ProWaterMark/propsType.js +0 -1
  261. package/es/hooks/useDraggableRow.js +25 -53
  262. package/es/index.js +57 -77
  263. package/es/locale/en_US.js +153 -142
  264. package/es/locale/index.js +23 -36
  265. package/es/locale/zh_CN.js +145 -142
  266. package/es/tokens.js +84 -83
  267. package/es/utils/index.js +24 -51
  268. package/package.json +4 -3
@@ -1,15 +1,7 @@
1
- // TabsManager组件Props
2
-
3
- // 右键菜单组件Props
4
-
5
- // 状态管理Hook选项
6
-
7
- // 状态管理Hook返回值
8
-
9
- // 缓存管理器接口
10
-
11
- // 默认配置
12
- export const DEFAULT_TABS_CONFIG = {
13
- storage: 'localStorage',
14
- cacheKey: 'pro-layout-tabs'
15
- };
1
+ const DEFAULT_TABS_CONFIG = {
2
+ storage: "localStorage",
3
+ cacheKey: "pro-layout-tabs"
4
+ };
5
+ export {
6
+ DEFAULT_TABS_CONFIG
7
+ };
@@ -1,15 +1,15 @@
1
- const listeners = new Set();
1
+ const listeners = /* @__PURE__ */ new Set();
2
2
  let originalPushState;
3
3
  let originalReplaceState;
4
4
  let wrappedPushState;
5
5
  let wrappedReplaceState;
6
6
  let installationSequence = 0;
7
7
  let activeInstallation = 0;
8
- const notify = source => {
9
- listeners.forEach(listener => listener(source));
8
+ const notify = (source) => {
9
+ listeners.forEach((listener) => listener(source));
10
10
  };
11
- const handlePopState = () => notify('pop');
12
- const handleHashChange = () => notify('hash');
11
+ const handlePopState = () => notify("pop");
12
+ const handleHashChange = () => notify("hash");
13
13
  const install = () => {
14
14
  const browserHistory = window.history;
15
15
  const installation = installationSequence + 1;
@@ -21,16 +21,18 @@ const install = () => {
21
21
  const installedReplaceState = originalReplaceState;
22
22
  wrappedPushState = function pushState(...args) {
23
23
  installedPushState.apply(browserHistory, args);
24
- if (activeInstallation === installation) notify('push');
24
+ if (activeInstallation === installation)
25
+ notify("push");
25
26
  };
26
27
  wrappedReplaceState = function replaceState(...args) {
27
28
  installedReplaceState.apply(browserHistory, args);
28
- if (activeInstallation === installation) notify('replace');
29
+ if (activeInstallation === installation)
30
+ notify("replace");
29
31
  };
30
32
  browserHistory.pushState = wrappedPushState;
31
33
  browserHistory.replaceState = wrappedReplaceState;
32
- window.addEventListener('popstate', handlePopState);
33
- window.addEventListener('hashchange', handleHashChange);
34
+ window.addEventListener("popstate", handlePopState);
35
+ window.addEventListener("hashchange", handleHashChange);
34
36
  };
35
37
  const uninstall = () => {
36
38
  const browserHistory = window.history;
@@ -41,22 +43,23 @@ const uninstall = () => {
41
43
  if (wrappedReplaceState && originalReplaceState && browserHistory.replaceState === wrappedReplaceState) {
42
44
  browserHistory.replaceState = originalReplaceState;
43
45
  }
44
- window.removeEventListener('popstate', handlePopState);
45
- window.removeEventListener('hashchange', handleHashChange);
46
- originalPushState = undefined;
47
- originalReplaceState = undefined;
48
- wrappedPushState = undefined;
49
- wrappedReplaceState = undefined;
46
+ window.removeEventListener("popstate", handlePopState);
47
+ window.removeEventListener("hashchange", handleHashChange);
48
+ originalPushState = void 0;
49
+ originalReplaceState = void 0;
50
+ wrappedPushState = void 0;
51
+ wrappedReplaceState = void 0;
50
52
  };
51
-
52
- /**
53
- * 共享对原生 History 的唯一包装,避免多个 ProLayout 实例互相覆盖和泄漏。
54
- */
55
- export const subscribeHistoryLocation = listener => {
56
- if (listeners.size === 0) install();
53
+ const subscribeHistoryLocation = (listener) => {
54
+ if (listeners.size === 0)
55
+ install();
57
56
  listeners.add(listener);
58
57
  return () => {
59
58
  listeners.delete(listener);
60
- if (listeners.size === 0) uninstall();
59
+ if (listeners.size === 0)
60
+ uninstall();
61
61
  };
62
- };
62
+ };
63
+ export {
64
+ subscribeHistoryLocation
65
+ };
@@ -1,4 +1,4 @@
1
- import { AddTabParams, TabItem, MenusType } from '../../../propTypes';
1
+ import { AddTabParams, TabItem, MenusType, TabsUrlSyncConfig } from '../../../propTypes';
2
2
  /**
3
3
  * 获取菜单实际用于路由/签页的路径
4
4
  * 约定优先使用 redirectUrl,其次回退 url
@@ -17,6 +17,7 @@ export declare const getCurrentTabUrl: () => string;
17
17
  export declare const getTabUrlPathname: (value?: string) => string | undefined;
18
18
  export interface FindExistingTabOptions {
19
19
  urlSync?: boolean;
20
+ identity?: TabsUrlSyncConfig['identity'];
20
21
  }
21
22
  export declare const findExistingTab: (tabsList: TabItem[], menuItem: MenusType, options?: FindExistingTabOptions) => TabItem | undefined;
22
23
  /**
@@ -1,67 +1,74 @@
1
- /**
2
- * 获取菜单实际用于路由/签页的路径
3
- * 约定优先使用 redirectUrl,其次回退 url
4
- */
5
- export const getMenuRoute = menuItem => {
6
- return menuItem.redirectUrl || menuItem.url || '';
1
+ const getMenuRoute = (menuItem) => {
2
+ return menuItem.redirectUrl || menuItem.url || "";
7
3
  };
8
- export const hasRelationKey = relationKey => relationKey !== undefined && relationKey !== null && relationKey !== '';
9
- const resolveHttpUrl = value => {
10
- if (!value || typeof window === 'undefined') return undefined;
4
+ const hasRelationKey = (relationKey) => relationKey !== void 0 && relationKey !== null && relationKey !== "";
5
+ const resolveHttpUrl = (value) => {
6
+ if (!value || typeof window === "undefined")
7
+ return void 0;
11
8
  try {
12
9
  const resolved = new URL(value, window.location.origin);
13
- return resolved.protocol === 'http:' || resolved.protocol === 'https:' ? resolved : undefined;
10
+ return resolved.protocol === "http:" || resolved.protocol === "https:" ? resolved : void 0;
14
11
  } catch (_error) {
15
- return undefined;
12
+ return void 0;
16
13
  }
17
14
  };
18
-
19
- /**
20
- * 将同源 URL 规范化为应用内地址,保留 search 和 hash。
21
- * 返回 undefined 表示 URL 无效或跨域。
22
- */
23
- export const normalizeTabUrl = value => {
24
- if (!value) return undefined;
25
- if (typeof window === 'undefined') {
26
- return value.startsWith('/') && !value.startsWith('//') ? value : undefined;
15
+ const normalizeTabUrl = (value) => {
16
+ if (!value)
17
+ return void 0;
18
+ if (typeof window === "undefined") {
19
+ return value.startsWith("/") && !value.startsWith("//") ? value : void 0;
27
20
  }
28
21
  const resolved = resolveHttpUrl(value);
29
- if (!resolved || resolved.origin !== window.location.origin) return undefined;
22
+ if (!resolved || resolved.origin !== window.location.origin)
23
+ return void 0;
30
24
  return `${resolved.pathname}${resolved.search}${resolved.hash}`;
31
25
  };
32
-
33
- /** 仅允许将跨域 HTTP(S) URL 交给浏览器外部打开。 */
34
- export const isSafeExternalUrl = value => {
26
+ const isSafeExternalUrl = (value) => {
35
27
  const resolved = resolveHttpUrl(value);
36
28
  return !!resolved && resolved.origin !== window.location.origin;
37
29
  };
38
- export const isSafeHttpUrl = value => !!resolveHttpUrl(value);
39
- export const getCurrentTabUrl = () => `${window.location.pathname}${window.location.search}${window.location.hash}`;
40
- export const getTabUrlPathname = value => {
30
+ const isSafeHttpUrl = (value) => !!resolveHttpUrl(value);
31
+ const getCurrentTabUrl = () => `${window.location.pathname}${window.location.search}${window.location.hash}`;
32
+ const getTabUrlPathname = (value) => {
41
33
  const normalized = normalizeTabUrl(value);
42
- if (!normalized || typeof window === 'undefined') return undefined;
34
+ if (!normalized || typeof window === "undefined")
35
+ return void 0;
43
36
  return new URL(normalized, window.location.origin).pathname;
44
37
  };
45
- export const findExistingTab = (tabsList, menuItem, options = {}) => {
38
+ const findExistingTab = (tabsList, menuItem, options = {}) => {
46
39
  if (options.urlSync) {
40
+ if (options.identity === "relationKey" && hasRelationKey(menuItem.relationKey)) {
41
+ return tabsList.find(
42
+ (tab) => {
43
+ var _a;
44
+ return tab.relationKey === menuItem.relationKey || ((_a = tab.menuItem) == null ? void 0 : _a.relationKey) === menuItem.relationKey;
45
+ }
46
+ );
47
+ }
47
48
  const targetUrl = normalizeTabUrl(getMenuRoute(menuItem));
48
- if (!targetUrl) return undefined;
49
- return tabsList.find(tab => normalizeTabUrl(tab.url) === targetUrl);
49
+ if (!targetUrl)
50
+ return void 0;
51
+ return tabsList.find((tab) => normalizeTabUrl(tab.url) === targetUrl);
50
52
  }
51
53
  if (hasRelationKey(menuItem.relationKey)) {
52
- return tabsList.find(tab => tab.relationKey === menuItem.relationKey || tab.menuItem?.relationKey === menuItem.relationKey);
54
+ return tabsList.find(
55
+ (tab) => {
56
+ var _a;
57
+ return tab.relationKey === menuItem.relationKey || ((_a = tab.menuItem) == null ? void 0 : _a.relationKey) === menuItem.relationKey;
58
+ }
59
+ );
53
60
  }
54
61
  const menuRoute = getMenuRoute(menuItem);
55
- const hasCode = menuItem.code !== undefined && menuItem.code !== null && menuItem.code !== '';
56
- return tabsList.find(tab => hasCode && tab.menuItem?.code === menuItem.code || tab.url === menuRoute);
62
+ const hasCode = menuItem.code !== void 0 && menuItem.code !== null && menuItem.code !== "";
63
+ return tabsList.find(
64
+ (tab) => {
65
+ var _a;
66
+ return hasCode && ((_a = tab.menuItem) == null ? void 0 : _a.code) === menuItem.code || tab.url === menuRoute;
67
+ }
68
+ );
57
69
  };
58
-
59
- /**
60
- * 根据菜单项生成TabItem
61
- */
62
- export const createTabFromMenu = (menuItem, index = 0) => {
70
+ const createTabFromMenu = (menuItem, index = 0) => {
63
71
  const route = getMenuRoute(menuItem);
64
- // pinned 优先取菜单显式声明,否则由 closable===false 推导(声明式固定标签)
65
72
  const pinned = menuItem.pinned ?? menuItem.closable === false;
66
73
  const result = {
67
74
  id: String(menuItem.id || menuItem.code || menuItem.url || index),
@@ -78,74 +85,46 @@ export const createTabFromMenu = (menuItem, index = 0) => {
78
85
  };
79
86
  return result;
80
87
  };
81
-
82
- /**
83
- * 生成唯一的tab ID
84
- */
85
- export const generateTabId = (menuItem, existingIds) => {
88
+ const generateTabId = (menuItem, existingIds) => {
86
89
  const baseId = String(menuItem.id || menuItem.code || menuItem.url);
87
90
  let finalId = baseId;
88
91
  let counter = 1;
89
-
90
- // 如果ID已存在,则添加数字后缀
91
92
  while (existingIds.includes(finalId)) {
92
93
  finalId = `${baseId}_${counter}`;
93
94
  counter += 1;
94
95
  }
95
96
  return finalId;
96
97
  };
97
-
98
- /**
99
- * 检查菜单项是否应该外部跳转
100
- */
101
- export const shouldOpenExternal = (menuItem, target) => {
102
- const menuTarget = menuItem?.target || target;
103
- return menuTarget === '_blank' || menuItem.type === 'EXTERNAL';
98
+ const shouldOpenExternal = (menuItem, target) => {
99
+ const menuTarget = (menuItem == null ? void 0 : menuItem.target) || target;
100
+ return menuTarget === "_blank" || menuItem.type === "EXTERNAL";
104
101
  };
105
-
106
- /**
107
- * 处理外部跳转
108
- */
109
- export const handleExternalOpen = (menuItem, secure = false) => {
102
+ const handleExternalOpen = (menuItem, secure = false) => {
110
103
  const url = getMenuRoute(menuItem);
111
- if (!url) return;
112
- const target = menuItem.target || '_blank';
113
- if (secure && target === '_blank') {
114
- window.open(url, target, 'noopener,noreferrer');
104
+ if (!url)
105
+ return;
106
+ const target = menuItem.target || "_blank";
107
+ if (secure && target === "_blank") {
108
+ window.open(url, target, "noopener,noreferrer");
115
109
  return;
116
110
  }
117
111
  window.open(url, target);
118
112
  };
119
-
120
- /**
121
- * 检查是否超出最大标签页限制
122
- * @param currentTabs 当前标签页列表
123
- * @param maxTabs 最大标签页数量,如果为 undefined 或 null,表示无限制
124
- * @returns 如果超出限制返回 true,否则返回 false
125
- */
126
- export const checkTabLimit = (currentTabs, maxTabs) => {
127
- // 如果 maxTabs 为 undefined 或 null,表示无限制
128
- if (maxTabs === undefined || maxTabs === null) {
113
+ const checkTabLimit = (currentTabs, maxTabs) => {
114
+ if (maxTabs === void 0 || maxTabs === null) {
129
115
  return false;
130
116
  }
131
117
  return currentTabs.length >= maxTabs;
132
118
  };
133
-
134
- /**
135
- * 获取右侧标签页
136
- */
137
- export const getRightTabs = (tabs, currentTabId) => {
138
- const currentIndex = tabs.findIndex(tab => tab.id === currentTabId);
139
- if (currentIndex === -1) return [];
119
+ const getRightTabs = (tabs, currentTabId) => {
120
+ const currentIndex = tabs.findIndex((tab) => tab.id === currentTabId);
121
+ if (currentIndex === -1)
122
+ return [];
140
123
  return tabs.slice(currentIndex + 1);
141
124
  };
142
-
143
- /**
144
- * 扁平化菜单数据
145
- */
146
- export const flattenMenuData = (menus = []) => {
125
+ const flattenMenuData = (menus = []) => {
147
126
  let flatMenus = [];
148
- menus.forEach(item => {
127
+ menus.forEach((item) => {
149
128
  flatMenus.push(item);
150
129
  if (item.children) {
151
130
  flatMenus = [...flatMenus, ...flattenMenuData(item.children)];
@@ -153,21 +132,15 @@ export const flattenMenuData = (menus = []) => {
153
132
  });
154
133
  return flatMenus;
155
134
  };
156
-
157
- /**
158
- * 将公开 addTab 参数解析为内部菜单项,统一 initialTabs 与实例 API 的匹配规则。
159
- */
160
- export const resolveTabMenuItem = (params, menus = []) => {
161
- const matchedMenu = flattenMenuData(menus).find(item => item.code === params.code);
162
- const menuCodeSource = params.menuCodeSource?.trim() || matchedMenu?.menuCodeSource?.trim() || undefined;
135
+ const resolveTabMenuItem = (params, menus = []) => {
136
+ var _a, _b;
137
+ const matchedMenu = flattenMenuData(menus).find((item) => item.code === params.code);
138
+ const menuCodeSource = ((_a = params.menuCodeSource) == null ? void 0 : _a.trim()) || ((_b = matchedMenu == null ? void 0 : matchedMenu.menuCodeSource) == null ? void 0 : _b.trim()) || void 0;
163
139
  if (matchedMenu) {
164
140
  return {
165
141
  ...matchedMenu,
166
142
  name: params.name || matchedMenu.name,
167
- ...(params.url !== undefined && {
168
- url: params.url,
169
- redirectUrl: undefined
170
- }),
143
+ ...params.url !== void 0 && { url: params.url, redirectUrl: void 0 },
171
144
  extra: params.extra ?? matchedMenu.extra,
172
145
  relationKey: params.relationKey ?? matchedMenu.relationKey,
173
146
  menuCodeSource
@@ -183,118 +156,96 @@ export const resolveTabMenuItem = (params, menus = []) => {
183
156
  menuCodeSource
184
157
  };
185
158
  };
186
-
187
- /**
188
- * 判断菜单项是否为最后一级(叶子节点)
189
- * 只有当菜单项没有子菜单或子菜单为空时,才认为是叶子节点
190
- */
191
- export const isLeafMenuItem = menuItem => {
192
- const {
193
- children
194
- } = menuItem || {};
195
- // 如果 children 不存在、为 null、为 undefined,或者为空数组,则认为是叶子节点
159
+ const isLeafMenuItem = (menuItem) => {
160
+ const { children } = menuItem || {};
196
161
  return !children || Array.isArray(children) && children.length === 0;
197
162
  };
198
-
199
- /**
200
- * 判断菜单项是否可以在 Tabs 模式下打开
201
- * 规则:只有叶子节点(无 children)才可打开
202
- */
203
- export const canOpenAsTab = menuItem => {
204
- if (!menuItem) return false;
205
- if (!(menuItem.url || menuItem.redirectUrl)) return false;
163
+ const canOpenAsTab = (menuItem) => {
164
+ if (!menuItem)
165
+ return false;
166
+ if (!(menuItem.url || menuItem.redirectUrl))
167
+ return false;
206
168
  return isLeafMenuItem(menuItem);
207
169
  };
208
-
209
- /**
210
- * 推导标签页是否处于固定状态。
211
- * pinned 为本质状态;未显式设置 pinned 的旧缓存标签,用 closable===false 推导。
212
- */
213
- export const derivePinned = tab => tab.pinned ?? tab.closable === false;
214
-
215
- /**
216
- * 分区边界:第一个「非固定标签」的下标,等于固定标签的数量。
217
- * 约定固定区始终排在普通区左侧,故边界即两区分界点。
218
- */
219
- export const getPinnedBoundary = tabs => {
220
- const index = tabs.findIndex(tab => !derivePinned(tab));
170
+ const derivePinned = (tab) => tab.pinned ?? tab.closable === false;
171
+ const getPinnedBoundary = (tabs) => {
172
+ const index = tabs.findIndex((tab) => !derivePinned(tab));
221
173
  return index === -1 ? tabs.length : index;
222
174
  };
223
-
224
- /**
225
- * 不依赖外部库的数组移动(immutable)。
226
- * from/to 越界时返回原数组的浅拷贝。
227
- */
228
175
  const moveItem = (list, from, to) => {
229
176
  const result = [...list];
230
- if (from < 0 || from >= result.length || to < 0 || to >= result.length) return result;
177
+ if (from < 0 || from >= result.length || to < 0 || to >= result.length)
178
+ return result;
231
179
  const [removed] = result.splice(from, 1);
232
180
  result.splice(to, 0, removed);
233
181
  return result;
234
182
  };
235
-
236
- /**
237
- * 固定标签:将目标标签设为 pinned=true / closable=false,并移动到固定区末尾。
238
- * - 已固定则幂等(顺序不变)
239
- * - tabId 不存在时返回原数组引用
240
- */
241
- export const pinTab = (tabs, tabId) => {
242
- const index = tabs.findIndex(tab => tab.id === tabId);
243
- if (index === -1) return tabs;
244
- if (derivePinned(tabs[index])) return tabs;
245
- const pinnedTab = {
246
- ...tabs[index],
247
- pinned: true,
248
- closable: false
249
- };
250
- // 移除目标后计算固定区末尾位置(= 剩余标签中的固定数量)
183
+ const pinTab = (tabs, tabId) => {
184
+ const index = tabs.findIndex((tab) => tab.id === tabId);
185
+ if (index === -1)
186
+ return tabs;
187
+ if (derivePinned(tabs[index]))
188
+ return tabs;
189
+ const pinnedTab = { ...tabs[index], pinned: true, closable: false };
251
190
  const rest = tabs.filter((_, i) => i !== index);
252
191
  const insertAt = getPinnedBoundary(rest);
253
192
  return [...rest.slice(0, insertAt), pinnedTab, ...rest.slice(insertAt)];
254
193
  };
255
-
256
- /**
257
- * 取消固定:将目标标签设为 pinned=false / closable=true,并移动到普通区最前
258
- * (即剩余固定区之后的第一位)。
259
- * - 已是普通标签则幂等(顺序不变)
260
- * - tabId 不存在时返回原数组引用
261
- */
262
- export const unpinTab = (tabs, tabId) => {
263
- const index = tabs.findIndex(tab => tab.id === tabId);
264
- if (index === -1) return tabs;
265
- if (!derivePinned(tabs[index])) return tabs;
266
- const normalTab = {
267
- ...tabs[index],
268
- pinned: false,
269
- closable: true
270
- };
194
+ const unpinTab = (tabs, tabId) => {
195
+ const index = tabs.findIndex((tab) => tab.id === tabId);
196
+ if (index === -1)
197
+ return tabs;
198
+ if (!derivePinned(tabs[index]))
199
+ return tabs;
200
+ const normalTab = { ...tabs[index], pinned: false, closable: true };
271
201
  const rest = tabs.filter((_, i) => i !== index);
272
202
  const insertAt = getPinnedBoundary(rest);
273
203
  return [...rest.slice(0, insertAt), normalTab, ...rest.slice(insertAt)];
274
204
  };
275
-
276
- /**
277
- * 约束重排:在普通 arrayMove 基础上,钳制落点以维持「固定区在左、普通区在右」不变量。
278
- * - 被拖动的普通标签:落点钳制到 >= boundary(不进固定区)
279
- * - 被拖动的固定标签:落点钳制到 <= boundary-1(不出固定区)
280
- * - 钳制后落点等于原位、或 id 相同/无效时,返回原数组引用(避免无效更新)
281
- */
282
- export const reorderWithPinConstraint = (tabs, activeId, overId) => {
283
- if (activeId === overId) return tabs;
284
- const activeIndex = tabs.findIndex(tab => tab.id === activeId);
285
- const overIndex = tabs.findIndex(tab => tab.id === overId);
286
- if (activeIndex === -1 || overIndex === -1) return tabs;
205
+ const reorderWithPinConstraint = (tabs, activeId, overId) => {
206
+ if (activeId === overId)
207
+ return tabs;
208
+ const activeIndex = tabs.findIndex((tab) => tab.id === activeId);
209
+ const overIndex = tabs.findIndex((tab) => tab.id === overId);
210
+ if (activeIndex === -1 || overIndex === -1)
211
+ return tabs;
287
212
  const boundary = getPinnedBoundary(tabs);
288
213
  const activePinned = derivePinned(tabs[activeIndex]);
289
214
  let targetIndex = overIndex;
290
215
  if (activePinned) {
291
- // 固定标签只能落在固定区内:[0, boundary-1]
292
216
  const maxIndex = boundary - 1;
293
- if (targetIndex > maxIndex) targetIndex = maxIndex;
217
+ if (targetIndex > maxIndex)
218
+ targetIndex = maxIndex;
294
219
  } else {
295
- // 普通标签只能落在普通区内:[boundary, length-1]
296
- if (targetIndex < boundary) targetIndex = boundary;
220
+ if (targetIndex < boundary)
221
+ targetIndex = boundary;
297
222
  }
298
- if (targetIndex === activeIndex) return tabs;
223
+ if (targetIndex === activeIndex)
224
+ return tabs;
299
225
  return moveItem(tabs, activeIndex, targetIndex);
300
- };
226
+ };
227
+ export {
228
+ canOpenAsTab,
229
+ checkTabLimit,
230
+ createTabFromMenu,
231
+ derivePinned,
232
+ findExistingTab,
233
+ flattenMenuData,
234
+ generateTabId,
235
+ getCurrentTabUrl,
236
+ getMenuRoute,
237
+ getPinnedBoundary,
238
+ getRightTabs,
239
+ getTabUrlPathname,
240
+ handleExternalOpen,
241
+ hasRelationKey,
242
+ isLeafMenuItem,
243
+ isSafeExternalUrl,
244
+ isSafeHttpUrl,
245
+ normalizeTabUrl,
246
+ pinTab,
247
+ reorderWithPinConstraint,
248
+ resolveTabMenuItem,
249
+ shouldOpenExternal,
250
+ unpinTab
251
+ };
@@ -1,3 +1,8 @@
1
- export { default as ProCollapse } from "./ProCollapse";
2
- export { default as ProFooter } from "./ProFooter";
3
- export { default as ProHeader } from "./ProHeader";
1
+ import { default as default2 } from "./ProCollapse";
2
+ import { default as default3 } from "./ProFooter";
3
+ import { default as default4 } from "./ProHeader";
4
+ export {
5
+ default2 as ProCollapse,
6
+ default3 as ProFooter,
7
+ default4 as ProHeader
8
+ };