@moneko/core 2.0.0-beta.8 → 2.0.1-8.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.
- package/build/common.js +1 -1
- package/build/coverage.js +1 -1
- package/build/done.d.ts +8 -0
- package/build/done.js +1 -0
- package/build/envFlags.d.ts +2 -4
- package/build/envFlags.js +1 -1
- package/build/has-pkg.js +1 -1
- package/build/html-plugin-option.d.ts +2 -2
- package/build/html-plugin-option.js +1 -1
- package/build/index.d.ts +2 -0
- package/build/index.js +1 -0
- package/build/minify.d.ts +1 -1
- package/build/modifyVars.js +1 -1
- package/build/module-federation.d.ts +1 -1
- package/build/module-federation.js +1 -1
- package/build/module.config.js +1 -1
- package/build/process-env.d.ts +3 -1
- package/build/process-env.js +1 -1
- package/build/resolver-sync.js +1 -1
- package/build/seo.d.ts +1 -0
- package/build/seo.js +1 -0
- package/build/swcrc.js +1 -1
- package/build/tsloader.config.js +1 -1
- package/build/utils.d.ts +9 -6
- package/build/utils.js +1 -1
- package/build/webpack.common.d.ts +1 -0
- package/build/webpack.common.js +1 -1
- package/build/webpack.dev.js +1 -1
- package/build/webpack.prod.js +1 -1
- package/lib/components/app-router.d.ts +8 -0
- package/lib/components/app-router.js +2 -0
- package/lib/components/app-router.js.map +1 -0
- package/lib/components/{fallback-comp/index.js → fallback-comp.js} +1 -1
- package/lib/components/fallback-comp.js.map +1 -0
- package/lib/components/{fallback/index.js → fallback.js} +2 -2
- package/lib/components/fallback.js.map +1 -0
- package/lib/components/{layout-menu/index.d.ts → layout-menu.d.ts} +1 -2
- package/lib/components/layout-menu.js +2 -0
- package/lib/components/layout-menu.js.map +1 -0
- package/lib/index.d.ts +15 -15
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/localizable.d.ts +53 -0
- package/lib/localizable.js +2 -0
- package/lib/localizable.js.map +1 -0
- package/lib/menu.d.ts +115 -0
- package/lib/menu.js +2 -0
- package/lib/menu.js.map +1 -0
- package/lib/packages/back-stage/app.d.ts +2 -4
- package/lib/packages/back-stage/app.js +1 -1
- package/lib/packages/back-stage/app.js.map +1 -1
- package/lib/packages/back-stage/bootstrap.d.ts +1 -1
- package/lib/packages/back-stage/bootstrap.js +1 -1
- package/lib/packages/back-stage/bootstrap.js.map +1 -1
- package/lib/packages/back-stage/index.d.ts +1 -2
- package/lib/packages/back-stage/index.js +1 -1
- package/lib/packages/back-stage/index.js.map +1 -1
- package/lib/packages/back-stage/layout.d.ts +5 -0
- package/lib/packages/back-stage/layout.js +2 -0
- package/lib/packages/back-stage/layout.js.map +1 -0
- package/lib/packages/library/app.js +1 -1
- package/lib/packages/library/app.js.map +1 -1
- package/lib/packages/library/bootstrap.d.ts +1 -1
- package/lib/packages/library/bootstrap.js +1 -1
- package/lib/packages/library/bootstrap.js.map +1 -1
- package/lib/packages/library/index.d.ts +1 -2
- package/lib/packages/library/index.js +1 -1
- package/lib/packages/library/index.js.map +1 -1
- package/lib/packages/mobile/app.js +1 -1
- package/lib/packages/mobile/app.js.map +1 -1
- package/lib/packages/mobile/index.d.ts +1 -3
- package/lib/packages/mobile/index.js +1 -1
- package/lib/packages/mobile/index.js.map +1 -1
- package/lib/packages/single-spa/app.d.ts +6 -5
- package/lib/packages/single-spa/app.js +1 -1
- package/lib/packages/single-spa/app.js.map +1 -1
- package/lib/packages/single-spa/bootstrap.d.ts +0 -1
- package/lib/packages/single-spa/bootstrap.js +1 -1
- package/lib/packages/single-spa/bootstrap.js.map +1 -1
- package/lib/packages/single-spa/index.d.ts +1 -2
- package/lib/packages/single-spa/index.js +1 -1
- package/lib/packages/single-spa/index.js.map +1 -1
- package/lib/packages/site/app.js +1 -1
- package/lib/packages/site/app.js.map +1 -1
- package/lib/packages/site/bootstrap.d.ts +1 -1
- package/lib/packages/site/bootstrap.js +1 -1
- package/lib/packages/site/bootstrap.js.map +1 -1
- package/lib/packages/site/index.d.ts +1 -2
- package/lib/packages/site/index.js +1 -1
- package/lib/packages/site/index.js.map +1 -1
- package/lib/prefix/react-router-dom.js +1 -1
- package/lib/prefix/react-router-dom.js.map +1 -1
- package/lib/react-router-dom/link.d.ts +9 -0
- package/lib/react-router-dom/link.js +2 -0
- package/lib/react-router-dom/link.js.map +1 -0
- package/lib/{hooks/navgate.d.ts → react-router-dom/use-navgate.d.ts} +1 -1
- package/lib/{hooks/navgate.js → react-router-dom/use-navgate.js} +1 -1
- package/lib/react-router-dom/use-navgate.js.map +1 -0
- package/lib/router/index.d.ts +36 -7
- package/lib/router/index.js +1 -1
- package/lib/router/index.js.map +1 -1
- package/lib/sso/index.d.ts +23 -0
- package/lib/sso/index.js +2 -0
- package/lib/sso/index.js.map +1 -0
- package/lib/styles/normalize.css +111 -34
- package/lib/styles/variables.css +35 -0
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/index.js.map +1 -1
- package/package.json +28 -32
- package/typings/global.d.ts +179 -67
- package/build/has-antd.d.ts +0 -2
- package/build/has-antd.js +0 -1
- package/lib/components/app-router/index.d.ts +0 -8
- package/lib/components/app-router/index.js +0 -2
- package/lib/components/app-router/index.js.map +0 -1
- package/lib/components/fallback/index.js.map +0 -1
- package/lib/components/fallback-comp/index.js.map +0 -1
- package/lib/components/layout-menu/index.global.less +0 -40
- package/lib/components/layout-menu/index.js +0 -2
- package/lib/components/layout-menu/index.js.map +0 -1
- package/lib/components/readme/index.d.ts +0 -3
- package/lib/components/readme/index.js +0 -2
- package/lib/components/readme/index.js.map +0 -1
- package/lib/components/readme/index.less +0 -4
- package/lib/hooks/navgate.js.map +0 -1
- package/lib/packages/back-stage/antd.global.less +0 -67
- package/lib/packages/back-stage/layout/index.d.ts +0 -3
- package/lib/packages/back-stage/layout/index.js +0 -2
- package/lib/packages/back-stage/layout/index.js.map +0 -1
- package/lib/packages/back-stage/layout/index.less +0 -91
- package/lib/packages/back-stage/models/app-program.d.ts +0 -24
- package/lib/packages/back-stage/models/app-program.js +0 -2
- package/lib/packages/back-stage/models/app-program.js.map +0 -1
- package/lib/prefix/i18n-hooks.d.ts +0 -1
- package/lib/prefix/i18n-hooks.js +0 -2
- package/lib/prefix/i18n-hooks.js.map +0 -1
- package/lib/prefix/mini-idc.d.ts +0 -1
- package/lib/prefix/mini-idc.js +0 -2
- package/lib/prefix/mini-idc.js.map +0 -1
- package/lib/styles/animation.less +0 -58
- package/lib/styles/ant.variables.global.less +0 -231
- package/lib/styles/eval/bezierEasing.less +0 -106
- package/lib/styles/eval/colorPalette.less +0 -73
- package/lib/styles/eval/tinyColor.less +0 -1181
- package/lib/styles/index.global.less +0 -136
- package/lib/styles/vars.less +0 -98
- package/lib/utils/color-palette.d.ts +0 -2
- package/lib/utils/color-palette.js +0 -2
- package/lib/utils/color-palette.js.map +0 -1
- package/lib/utils/env.d.ts +0 -0
- package/lib/utils/env.js +0 -2
- package/lib/utils/env.js.map +0 -1
- package/lib/utils/fontloader.d.ts +0 -1
- package/lib/utils/fontloader.js +0 -2
- package/lib/utils/fontloader.js.map +0 -1
- package/lib/utils/lazy-import.d.ts +0 -22
- package/lib/utils/lazy-import.js +0 -2
- package/lib/utils/lazy-import.js.map +0 -1
- package/lib/utils/theme.d.ts +0 -13
- package/lib/utils/theme.js +0 -2
- package/lib/utils/theme.js.map +0 -1
- /package/lib/components/{fallback-comp/index.d.ts → fallback-comp.d.ts} +0 -0
- /package/lib/components/{fallback/index.d.ts → fallback.d.ts} +0 -0
package/typings/global.d.ts
CHANGED
|
@@ -1,25 +1,46 @@
|
|
|
1
1
|
/* eslint-disable no-unused-vars */
|
|
2
|
-
import type { Options } from 'ts-import-plugin';
|
|
3
|
-
import type { RuleSetRule, WebpackPluginInstance, Configuration, CleanPlugin } from 'webpack';
|
|
4
|
-
import type { ProxyArray, ProxyConfigArray, ProxyConfigMap } from 'webpack-dev-server';
|
|
5
|
-
import type { JsMinifyOptions } from '@swc/core';
|
|
6
|
-
import type { MinifyOptions } from 'terser';
|
|
7
2
|
import { Options as AssetHtmlOptions } from 'add-asset-html-webpack-plugin';
|
|
8
3
|
import { Options as HtmlWebpackPluginOptions } from 'html-webpack-plugin';
|
|
4
|
+
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
|
|
5
|
+
import type { JsMinifyOptions, Config as SwcConfig } from '@swc/core';
|
|
6
|
+
import type { MinifyOptions } from 'terser';
|
|
7
|
+
import type { Options } from 'ts-import-plugin';
|
|
8
|
+
import type { RuleSetRule, WebpackPluginInstance, Configuration } from 'webpack';
|
|
9
|
+
import type {
|
|
10
|
+
ProxyArray,
|
|
11
|
+
ProxyConfigArray,
|
|
12
|
+
ProxyConfigMap,
|
|
13
|
+
WebpackConfiguration,
|
|
14
|
+
} from 'webpack-dev-server';
|
|
9
15
|
|
|
10
16
|
export type MinifierType = 'swc' | 'terser';
|
|
11
|
-
export declare type AppType =
|
|
17
|
+
export declare type AppType =
|
|
18
|
+
| 'single-component'
|
|
19
|
+
| 'mobile'
|
|
20
|
+
| 'site'
|
|
21
|
+
| 'back-stage'
|
|
22
|
+
| 'single-spa'
|
|
23
|
+
| 'library';
|
|
12
24
|
export type TerserOptions = MinifyOptions;
|
|
13
25
|
export type SwcOptions = JsMinifyOptions;
|
|
26
|
+
export type HtmlWebpackOption = HtmlWebpackPluginOptions & {
|
|
27
|
+
tags?: {
|
|
28
|
+
textContent?: string;
|
|
29
|
+
tag?: string;
|
|
30
|
+
[key: string]: string | null | boolean | number;
|
|
31
|
+
}[];
|
|
32
|
+
};
|
|
14
33
|
export declare type ConfigType<T = 'tsc'> = {
|
|
15
|
-
|
|
16
|
-
|
|
34
|
+
/** 渲染模式
|
|
35
|
+
* @default 'csr'
|
|
36
|
+
*/
|
|
17
37
|
mode: 'ssr' | 'csr';
|
|
18
|
-
/** 编译器
|
|
38
|
+
/** 编译器
|
|
39
|
+
* @default 'swc'
|
|
40
|
+
*/
|
|
19
41
|
compiler: 'tsc' | 'swc';
|
|
20
42
|
/** swc 配置项,仅当编译器为 swc 时有效 */
|
|
21
|
-
|
|
22
|
-
swcrc?: Record<string, any> | ((isDev: boolean) => Record<string, any>);
|
|
43
|
+
swcrc?: SwcConfig | ((isDev: boolean) => SwcConfig);
|
|
23
44
|
/**
|
|
24
45
|
* 自定义entry
|
|
25
46
|
* 当你需要添加一些polyfill函数时可在这里添加
|
|
@@ -36,24 +57,23 @@ export declare type ConfigType<T = 'tsc'> = {
|
|
|
36
57
|
entry?: Record<string, string>;
|
|
37
58
|
/** 压缩配置 */
|
|
38
59
|
minifier: {
|
|
60
|
+
/**
|
|
61
|
+
* @default 'swc'
|
|
62
|
+
*/
|
|
39
63
|
type?: MinifierType;
|
|
40
64
|
options?: SwcOptions | TerserOptions;
|
|
65
|
+
/**
|
|
66
|
+
* @default 'parcelCss'
|
|
67
|
+
*/
|
|
41
68
|
css?: 'cssnano' | 'parcelCss';
|
|
42
69
|
};
|
|
43
70
|
/** 环境变量, 可通过 process.env 获取 */
|
|
44
71
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
72
|
env?: Record<string, any>;
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
programName?: string;
|
|
51
|
-
/** 持久化数据是否加密 */
|
|
52
|
-
encrypt?: boolean;
|
|
53
|
-
/** 自定义RSA加密密钥 */
|
|
54
|
-
encryptKey?: string;
|
|
55
|
-
}
|
|
56
|
-
| false;
|
|
73
|
+
/** persistence 持久化数据使用的key, 为 false 时关闭持久化
|
|
74
|
+
* @default false
|
|
75
|
+
**/
|
|
76
|
+
persistence?: string | false;
|
|
57
77
|
devtool?: Configuration['devtool'];
|
|
58
78
|
sourceMap?: SourceMapDevToolPluginOptions | false;
|
|
59
79
|
/** 路径别名映射 */
|
|
@@ -62,20 +82,21 @@ export declare type ConfigType<T = 'tsc'> = {
|
|
|
62
82
|
};
|
|
63
83
|
/** 根路由 */
|
|
64
84
|
routeBaseName: string;
|
|
65
|
-
/**
|
|
85
|
+
/** 输出目录前置路径
|
|
86
|
+
* @default /
|
|
87
|
+
* */
|
|
66
88
|
publicPath: string;
|
|
67
|
-
/** 设计图尺寸
|
|
89
|
+
/** 设计图尺寸
|
|
90
|
+
* @default 1680
|
|
91
|
+
* */
|
|
68
92
|
designSize: number;
|
|
69
93
|
/** 自定义降级组件 */
|
|
70
94
|
fallbackCompPath?: string | null;
|
|
71
95
|
/** less 全局变量 */
|
|
72
96
|
modifyVars: Record<string, string>;
|
|
73
|
-
/**
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
dark?: boolean;
|
|
77
|
-
};
|
|
78
|
-
/** 类名前缀 */
|
|
97
|
+
/** 类名前缀
|
|
98
|
+
* @default n
|
|
99
|
+
*/
|
|
79
100
|
prefixCls?: string;
|
|
80
101
|
/** 左侧菜单栏, 不需要时设置为 false, 仅 type: back-stage 时有效 */
|
|
81
102
|
layoutSider:
|
|
@@ -86,12 +107,27 @@ export declare type ConfigType<T = 'tsc'> = {
|
|
|
86
107
|
};
|
|
87
108
|
/** 自定义 webpack module rules */
|
|
88
109
|
moduleRules: RuleSetRule[];
|
|
110
|
+
/** 解析js/ts前置的loader
|
|
111
|
+
* @example
|
|
112
|
+
* ```js
|
|
113
|
+
* const conf: PartialConfigType = {
|
|
114
|
+
* compiler: 'tsc',
|
|
115
|
+
* prefixJsLoader: [
|
|
116
|
+
* {
|
|
117
|
+
* loader: 'babel-loader',
|
|
118
|
+
* options: {
|
|
119
|
+
* presets: ['solid'],
|
|
120
|
+
* },
|
|
121
|
+
* },
|
|
122
|
+
* ],
|
|
123
|
+
* };
|
|
124
|
+
* ```
|
|
125
|
+
* */
|
|
126
|
+
prefixJsLoader: RuleSetRule['use'][];
|
|
89
127
|
/** node_modules中, 需要开启 cssModules 的模块 */
|
|
90
128
|
cssModules: string[];
|
|
91
129
|
/** 按需引入 */
|
|
92
|
-
importOnDemand: T extends 'tsc'
|
|
93
|
-
? Partial<Options>[]
|
|
94
|
-
: Record<string, SwcImportOnDemandTransform | SwcImportOnDemandConfig>;
|
|
130
|
+
importOnDemand: T extends 'tsc' ? Partial<Options>[] : SwcImportOnDemandTransform;
|
|
95
131
|
/** 开发服务器代理 */
|
|
96
132
|
proxy: ProxyArray | ProxyConfigArray | ProxyConfigMap;
|
|
97
133
|
/** 自定义缓存目录,为 false 时,不使用缓存 */
|
|
@@ -105,17 +141,20 @@ export declare type ConfigType<T = 'tsc'> = {
|
|
|
105
141
|
compress?: boolean;
|
|
106
142
|
};
|
|
107
143
|
/** HtmlWebpackPlugin Option */
|
|
108
|
-
htmlPluginOption:
|
|
109
|
-
tags?: {
|
|
110
|
-
textContent?: string;
|
|
111
|
-
tag?: string;
|
|
112
|
-
[key: string]: string | null | boolean | number;
|
|
113
|
-
}[];
|
|
114
|
-
};
|
|
144
|
+
htmlPluginOption: HtmlWebpackOption;
|
|
115
145
|
/** 自定义插入 html 的 js 和 css */
|
|
116
146
|
assetHtml: AssetHtmlOptions[];
|
|
117
|
-
/** 路由模式
|
|
147
|
+
/** 路由模式
|
|
148
|
+
* @description
|
|
149
|
+
* 当在不支持 browserRouter 的环境(GitHub pages)使用 browserRouter,
|
|
150
|
+
* 则需要添加设置 pathSegmentsToKeep: 1 // 数值根据情况而定
|
|
151
|
+
* @default 'browser'
|
|
152
|
+
* */
|
|
118
153
|
routerMode: 'hash' | 'browser' | 'memory';
|
|
154
|
+
/** 在不支持 browserRouter 的环境(GitHub pages)使用 browserRouter
|
|
155
|
+
* @default false
|
|
156
|
+
*/
|
|
157
|
+
pathSegmentsToKeep: false | number;
|
|
119
158
|
/** webpack 插件 */
|
|
120
159
|
plugins: WebpackPluginInstance[];
|
|
121
160
|
/** 对生产chunk进行拆分 */
|
|
@@ -128,10 +167,8 @@ export declare type ConfigType<T = 'tsc'> = {
|
|
|
128
167
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
129
168
|
name?: string | Function;
|
|
130
169
|
};
|
|
131
|
-
/** 通过Web字体加载加载的字体 */
|
|
132
|
-
webFontLoader: string[];
|
|
133
170
|
/** 编译输出路径 */
|
|
134
|
-
output
|
|
171
|
+
output?: Omit<WebpackConfiguration['output'], 'publishPath'> | string;
|
|
135
172
|
/** 模块联邦 */
|
|
136
173
|
moduleFederation: ModuleFederationOption[];
|
|
137
174
|
/** 跳过编译的模块 */
|
|
@@ -143,6 +180,24 @@ export declare type ConfigType<T = 'tsc'> = {
|
|
|
143
180
|
media?: string[];
|
|
144
181
|
fonts?: string[];
|
|
145
182
|
};
|
|
183
|
+
bundleAnalyzer: BundleAnalyzerPlugin.Options;
|
|
184
|
+
/** seo优化
|
|
185
|
+
* @default false
|
|
186
|
+
*/
|
|
187
|
+
seo:
|
|
188
|
+
| {
|
|
189
|
+
/** 域名 */
|
|
190
|
+
domain: string;
|
|
191
|
+
/** 添加 .nojekyll 文件
|
|
192
|
+
* @description 告诉网站部署平台当前网站不是基于 Jekyll 构建的,
|
|
193
|
+
* 不要忽略掉下划线开头的文件和文件夹
|
|
194
|
+
* @default true
|
|
195
|
+
**/
|
|
196
|
+
nojekyll?: boolean;
|
|
197
|
+
}
|
|
198
|
+
| false;
|
|
199
|
+
/** 📦 打包完成 */
|
|
200
|
+
done?: () => void;
|
|
146
201
|
};
|
|
147
202
|
export declare interface ModuleFederationOption {
|
|
148
203
|
/** 模块名称,唯一性,不能重名 */
|
|
@@ -290,14 +345,17 @@ export type ProgramInfoType = {
|
|
|
290
345
|
/** 应用类型 */
|
|
291
346
|
type: 'mobile' | 'site' | 'back-stage' | 'single-spa' | 'library';
|
|
292
347
|
/** 开发者 */
|
|
293
|
-
author:
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
| string;
|
|
348
|
+
author: {
|
|
349
|
+
name: string;
|
|
350
|
+
url?: string;
|
|
351
|
+
email?: string;
|
|
352
|
+
};
|
|
299
353
|
/** 存储库 */
|
|
300
|
-
repository:
|
|
354
|
+
repository: {
|
|
355
|
+
type?: string;
|
|
356
|
+
url?: string;
|
|
357
|
+
directory?: string;
|
|
358
|
+
};
|
|
301
359
|
/** 路由模式 */
|
|
302
360
|
routerMode: 'hash' | 'browser' | 'memory';
|
|
303
361
|
/** 根路由 */
|
|
@@ -339,7 +397,7 @@ export type ProjectCoverageType = {
|
|
|
339
397
|
classes: string;
|
|
340
398
|
};
|
|
341
399
|
|
|
342
|
-
declare interface OptimizationSplitChunksOptions {
|
|
400
|
+
export declare interface OptimizationSplitChunksOptions {
|
|
343
401
|
/**
|
|
344
402
|
* Sets the name delimiter for created chunks.
|
|
345
403
|
*/
|
|
@@ -469,22 +527,76 @@ declare interface OptimizationSplitChunksOptions {
|
|
|
469
527
|
usedExports?: boolean;
|
|
470
528
|
}
|
|
471
529
|
|
|
472
|
-
export
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
530
|
+
export type MemberTransformer =
|
|
531
|
+
/** 帕斯卡拼写法(大驼峰): 所有单词的首字母大写,然后直接连接起来,单词之间没有连接符 */
|
|
532
|
+
| 'pascal_case'
|
|
533
|
+
/** 骆驼拼写法(小驼峰): 第一个单词的首字母小写, 后续所有单词的首字母大写,然后直接连接起来,单词之间没有连接符 */
|
|
534
|
+
| 'camel_case'
|
|
535
|
+
/** 连字符拼写法: 各个单词或缩写之间以`-`做间隔 */
|
|
536
|
+
| 'kebab_case'
|
|
537
|
+
/** 破折号式: 每个单词全小写或全大写,多单词使用`-`隔开 */
|
|
538
|
+
| 'dashed_case'
|
|
539
|
+
/** 蛇形命名: 每个单词全小写或全大写,多单词使用`_`隔开 */
|
|
540
|
+
| 'snake_case'
|
|
541
|
+
/** 大写 */
|
|
542
|
+
| 'upper_case'
|
|
543
|
+
/** 最后大写 */
|
|
544
|
+
| 'upper_first'
|
|
545
|
+
/** 小写 */
|
|
546
|
+
| 'lower_case'
|
|
547
|
+
/** 最后小写 */
|
|
548
|
+
| 'lower_first';
|
|
487
549
|
|
|
550
|
+
export type SwcImportOnDemandTransform = Record<
|
|
551
|
+
/** 库名 */
|
|
552
|
+
string,
|
|
553
|
+
{
|
|
554
|
+
/** 要使用的库名称,而不是导入语句中指定的库名称。`${member}` 是替换的成员
|
|
555
|
+
* @example
|
|
556
|
+
* ```javascript
|
|
557
|
+
* const conf = {
|
|
558
|
+
* importOnDemand: {
|
|
559
|
+
* 'neko-ui': {
|
|
560
|
+
* transform: 'neko-ui/es/${member}',
|
|
561
|
+
* memberTransformers: ['dashed_case']
|
|
562
|
+
* }
|
|
563
|
+
* }
|
|
564
|
+
* }
|
|
565
|
+
* // 以下代码将会按照预期进行转换
|
|
566
|
+
* import { Button } from 'neko-ui';
|
|
567
|
+
* // to
|
|
568
|
+
* import Button from 'neko-ui/es/button'
|
|
569
|
+
* ```
|
|
570
|
+
*/
|
|
571
|
+
transform: string;
|
|
572
|
+
/** 默认值:`false`, 设置转换时需要单独导入的样式,`${member}` 是替换的成员
|
|
573
|
+
* @example
|
|
574
|
+
* ```javascript
|
|
575
|
+
* const conf = {
|
|
576
|
+
* importOnDemand: {
|
|
577
|
+
* antd: {
|
|
578
|
+
* transform: 'antd/es/${member}',
|
|
579
|
+
* style: 'antd/es/${member}/style',
|
|
580
|
+
* memberTransformers: ['dashed_case']
|
|
581
|
+
* }
|
|
582
|
+
* }
|
|
583
|
+
* }
|
|
584
|
+
* // 以下代码将会按照预期进行转换
|
|
585
|
+
* import { BackTop } from 'antd';
|
|
586
|
+
* // to
|
|
587
|
+
* import BackTop from 'antd/es/back-top';
|
|
588
|
+
* import 'antd/es/back-top/style';
|
|
589
|
+
* ```
|
|
590
|
+
*/
|
|
591
|
+
style?: string | boolean;
|
|
592
|
+
/** 默认值:`false`, 当设置为true时,将保留 `import { Button }` 语法,而不是转换为 `import Button` */
|
|
593
|
+
skipDefaultConversion?: boolean;
|
|
594
|
+
/** 默认值:`true`, 当遇到会导致导入整个模块时,是否抛出 */
|
|
595
|
+
preventFullImport?: boolean;
|
|
596
|
+
/** 默认值:`[]`, 成员转换规则 */
|
|
597
|
+
memberTransformers?: MemberTransformer[];
|
|
598
|
+
}
|
|
599
|
+
>;
|
|
488
600
|
declare global {
|
|
489
601
|
// eslint-disable-next-line vars-on-top,no-var
|
|
490
602
|
var NEKOCLICONFIG: CommomType;
|
package/build/has-antd.d.ts
DELETED
package/build/has-antd.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{HASANTD:function(){return HASANTD},antdThemeVariables:function(){return antdThemeVariables}});var _fs=_interopRequireDefault(require("fs"));var _path=_interopRequireDefault(require("path"));var _processEnv=require("./process-env");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var HASANTD=false;var antdThemeVariables={};try{var antdPath=_path.default.join(_processEnv.PROGRAMPATH,"./node_modules/antd/package.json");_fs.default.accessSync(antdPath,_fs.default.constants.R_OK);HASANTD=true}catch(error){HASANTD=false}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import React,{Suspense,useCallback}from"react";import{useRoutes}from"react-router-dom";import{isEqual}from"@moneko/common";import Fallback from"../fallback";var AppRoute=function(param){var router=param.router,_param_fallback=param.fallback,fallback=_param_fallback===void 0?React.createElement(Fallback,null):_param_fallback;var prefixRouter=useCallback(function(list){return list.map(function(r){if(r.element){Object.assign(r,{element:React.createElement(Suspense,{fallback:r.fallback||fallback},React.cloneElement(r.element,{path:r.key}))})}if(Array.isArray(r.children)){Object.assign(r,{children:prefixRouter(r.children)})}return r})},[fallback]);var routers=useRoutes(prefixRouter(router));return React.createElement(React.Fragment,null,routers)};export default React.memo(AppRoute,function(pre,next){return isEqual({router:pre.router,fallback:pre.fallback},{router:next.router,fallback:next.fallback})});
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/app-router/index.tsx"],"sourcesContent":["import React, { Suspense, useCallback } from 'react';\nimport { useRoutes } from 'react-router-dom';\nimport { type RouterProps } from '../../router';\nimport { isEqual } from '@moneko/common';\nimport Fallback from '../fallback';\n\ninterface AppRouterProps {\n router: RouterProps[];\n fallback?: React.ReactElement;\n}\n\nconst AppRoute: React.FC<AppRouterProps> = ({ router, fallback = <Fallback /> }) => {\n const prefixRouter = useCallback(\n (list: RouterProps[]) => {\n return list.map((r) => {\n if (r.element) {\n Object.assign(r, {\n element: React.createElement(\n Suspense,\n {\n fallback: r.fallback || fallback,\n },\n React.cloneElement(r.element, {\n path: r.key,\n })\n ),\n });\n }\n\n if (Array.isArray(r.children)) {\n Object.assign(r, {\n children: prefixRouter(r.children),\n });\n }\n\n return r;\n });\n },\n [fallback]\n );\n\n const routers = useRoutes(prefixRouter(router));\n\n return <>{routers}</>;\n};\n\nexport default React.memo(AppRoute, (pre, next) =>\n isEqual(\n { router: pre.router, fallback: pre.fallback },\n { router: next.router, fallback: next.fallback }\n )\n);\n"],"names":["React","Suspense","useCallback","useRoutes","isEqual","Fallback","AppRoute","router","fallback","prefixRouter","list","map","r","element","Object","assign","createElement","cloneElement","path","key","Array","isArray","children","routers","memo","pre","next"],"mappings":"AAAA,OAAOA,OAASC,QAAQ,CAAEC,WAAW,KAAQ,OAAQ,AACrD,QAASC,SAAS,KAAQ,kBAAmB,AAE7C,QAASC,OAAO,KAAQ,gBAAiB,AACzC,QAAOC,aAAc,aAAc,CAOnC,IAAMC,SAAqC,eAAyC,KAAtCC,aAAAA,6BAAQC,SAAAA,kCAAW,oBAACH,+BAChE,IAAMI,aAAeP,YACnB,SAACQ,KAAwB,CACvB,OAAOA,KAAKC,GAAG,CAAC,SAACC,EAAM,CACrB,GAAIA,EAAEC,OAAO,CAAE,CACbC,OAAOC,MAAM,CAACH,EAAG,CACfC,QAASb,MAAMgB,aAAa,CAC1Bf,SACA,CACEO,SAAUI,EAAEJ,QAAQ,EAAIA,QAC1B,EACAR,MAAMiB,YAAY,CAACL,EAAEC,OAAO,CAAE,CAC5BK,KAAMN,EAAEO,GAAG,AACb,GAEJ,EACF,CAAC,AAED,GAAIC,MAAMC,OAAO,CAACT,EAAEU,QAAQ,EAAG,CAC7BR,OAAOC,MAAM,CAACH,EAAG,CACfU,SAAUb,aAAaG,EAAEU,QAAQ,CACnC,EACF,CAAC,AAED,OAAOV,CACT,EACF,EACA,CAACJ,SAAS,EAGZ,IAAMe,QAAUpB,UAAUM,aAAaF,SAEvC,OAAO,wCAAGgB,QACZ,CAEA,gBAAevB,MAAMwB,IAAI,CAAClB,SAAU,SAACmB,IAAKC,aACxCtB,QACE,CAAEG,OAAQkB,IAAIlB,MAAM,CAAEC,SAAUiB,IAAIjB,QAAQ,AAAC,EAC7C,CAAED,OAAQmB,KAAKnB,MAAM,CAAEC,SAAUkB,KAAKlB,QAAQ,AAAC,IAEjD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/fallback/index.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { useOutlet } from 'react-router-dom';\nimport FallbackComp from '../fallback-comp';\n\ndeclare const fallbackCompPath: string;\n\nconst Fallback: React.FC = () => {\n const outlet = useOutlet()?.props.children;\n const [el, setEl] = useState(<>Loading...</>);\n\n useMemo(() => {\n if (typeof fallbackCompPath === 'string') {\n const pat = fallbackCompPath.replace(/@\\//, '').split('/');\n const [directory, ...path] = pat;\n\n setEl(<FallbackComp directory={directory} compName={path.join('/')} />);\n }\n }, []);\n\n return outlet ? outlet : el;\n};\n\nexport default React.memo(Fallback, () => true);\n"],"names":["React","useMemo","useState","useOutlet","FallbackComp","Fallback","outlet","props","children","el","setEl","fallbackCompPath","pat","replace","split","directory","path","compName","join","memo"],"mappings":"AAAA,ykDAAA,OAAOA,OAASC,OAAO,CAAEC,QAAQ,KAAQ,OAAQ,AACjD,QAASC,SAAS,KAAQ,kBAAmB,AAC7C,QAAOC,iBAAkB,kBAAmB,CAI5C,IAAMC,SAAqB,UAAM,KAChBF,WAAf,IAAMG,OAASH,CAAAA,WAAAA,qBAAAA,oBAAAA,KAAAA,EAAAA,WAAaI,MAAMC,QAAQ,CAC1C,IAAoBN,yBAAAA,SAAS,wCAAE,kBAAxBO,GAAaP,aAATQ,MAASR,aAEpBD,QAAQ,UAAM,CACZ,GAAI,OAAOU,mBAAqB,SAAU,CACxC,IAAMC,IAAMD,iBAAiBE,OAAO,CAAC,MAAO,IAAIC,KAAK,CAAC,KACtD,IAA6BF,cAAAA,KAAtBG,UAAsBH,QAAX,AAAGI,KAAQJ,WAAX,GAElBF,MAAM,oBAACN,cAAaW,UAAWA,UAAWE,SAAUD,KAAKE,IAAI,CAAC,OAChE,CAAC,AACH,EAAG,EAAE,EAEL,OAAOZ,OAASA,OAASG,EAAE,AAC7B,CAEA,gBAAeT,MAAMmB,IAAI,CAACd,SAAU,kBAAM,IAAI,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/fallback-comp/index.tsx"],"sourcesContent":["/* eslint-disable no-console */\nimport * as React from 'react';\n\nexport interface FallbackCompProps {\n /** 组件所在父级目录(默认:components) */\n directory?: string;\n /** 组件所在位置(不包含父级目录) */\n compName: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\nconst FallbackComp: React.FC<FallbackCompProps> = (props: FallbackCompProps) => {\n const { directory = 'components', compName, ...prop } = props;\n\n let Comp = React.Fragment;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n Comp = require(`@/${directory}/${compName}`).default;\n } catch (error) {\n console.info(\n `${compName} 组件不存在, 请在 @/${directory}/${compName} 目录下新建 index.tsx, 并导出默认组件`\n );\n }\n\n return React.isValidElement(Comp) ? null : <Comp {...prop} />;\n};\n\nexport default React.memo(FallbackComp);\n"],"names":["React","FallbackComp","props","directory","compName","prop","Comp","Fragment","require","default","error","console","info","isValidElement","memo"],"mappings":"AACA,w9BAAA,UAAYA,UAAW,OAAQ,CAU/B,IAAMC,aAA4C,SAACC,MAA6B,CAC9E,qBAAwDA,MAAhDC,UAAAA,oCAAY,8BAAcC,SAAsBF,MAAtBE,SAAaC,8BAASH,OAAhDC,YAA0BC,aAElC,IAAIE,KAAON,MAAMO,QAAQ,CAEzB,GAAI,CAEFD,KAAOE,QAAQ,AAAC,KAAiBJ,OAAbD,UAAU,KAAY,OAATC,WAAYK,OAAO,AACtD,CAAE,MAAOC,MAAO,CACdC,QAAQC,IAAI,CACV,AAAC,GAA0BT,OAA5BC,SAAD,iBAA0CA,OAAbD,UAAU,KAAY,OAATC,SAAS,6BAErD,CAEc,OAAqBJ,MAAoBa,cAA4B,CAAeP,MAAsB,IAAkB,CAAiB,oBAAeA,iBAAuBD,MAAsB,AACjD,CAEc,gBAA6BL,MAAoBc,IAAkB,CAAeb,aAA4B"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
.layout-menu.@{ant-prefix}-menu {
|
|
2
|
-
.@{ant-prefix}-menu-item:not(.@{ant-prefix}-menu-submenu-title),
|
|
3
|
-
.@{ant-prefix}-menu-submenu-title {
|
|
4
|
-
&::after {
|
|
5
|
-
border-right: @menu-item-active-border-width solid @menu-highlight-color !important;
|
|
6
|
-
transform: scaleY(1) translateX(-196px) !important;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.@{ant-prefix}-menu {
|
|
12
|
-
&-horizontal {
|
|
13
|
-
line-height: 55px !important;
|
|
14
|
-
.@{ant-prefix}-menu-item:not(.@{ant-prefix}-menu-submenu-title),
|
|
15
|
-
.@{ant-prefix}-menu-submenu-title {
|
|
16
|
-
width: fit-content !important;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
&-dark &-item-selected &-dark&-dark:not(&-horizontal) &-item-selected,
|
|
21
|
-
&-dark &-submenu-open:not(&-submenu-selected),
|
|
22
|
-
&-dark &-item:hover {
|
|
23
|
-
color: #fff !important;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
&-dark &-submenu-open:not(&-submenu-selected) > &-submenu-title > &-submenu-arrow {
|
|
27
|
-
&::before,
|
|
28
|
-
&::after {
|
|
29
|
-
background: #fff !important;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
&&-inline-collapsed > &-submenu > &-submenu-title {
|
|
34
|
-
.@{ant-prefix}-menu-item-icon,
|
|
35
|
-
.@{iconfont-css-prefix} {
|
|
36
|
-
font-size: 20px !important;
|
|
37
|
-
margin: 0 2px !important;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useNavigate,useSearchParams}from"react-router-dom";import{useLocale}from"i18n-hooks";import{useDispatch,useSelector,shallowEqual}from"react-redux";import{isEqual}from"@moneko/common";import{Menu}from"antd";import"./index.global.less";var LayoutMenu=function(prop){var collapsed=prop.collapsed,menuProps=_objectWithoutProperties(prop,["collapsed"]);var dispatch=useDispatch();var openKeysRef=useRef();var menu=useSelector(function(store){return(store.appProgram.menu||[]).filter(function(m){return!m.hideMenu})},shallowEqual);var menuKV=useSelector(function(store){return store.appProgram.menuKV||[]},shallowEqual);var navigate=useNavigate();var _useSearchParams=_slicedToArray(useSearchParams(),1),search=_useSearchParams[0];var getLanguage=useLocale().getLanguage;var activeKey=useSelector(function(store){return store.appProgram.activeKey},shallowEqual);var _useState=_slicedToArray(useState([]),2),openKeys=_useState[0],setOpenKeys=_useState[1];var handleOpenChange=useCallback(function(keys){if(keys!==openKeys){setOpenKeys(keys)}},[openKeys]);var filterMenuProps=useCallback(function(list){return list.map(function(item){return{label:item.label?getLanguage(item.label):item.label,path:item.path,type:item.type,children:Array.isArray(item.children)?filterMenuProps(item.children):item.children,disabled:item.disabled,key:item.key,itemIcon:item.itemIcon,icon:item.icon,expandIcon:item.expandIcon}})},[getLanguage]);var doPage=useCallback(function(info){var _loop=function(i){var e=el===null||el===void 0?void 0:el.find(function(item){return(item===null||item===void 0?void 0:item.key)===info.keyPath[i]});if(i&&(e===null||e===void 0?void 0:e.children))el=e.children;else current=e};var current;var el=_toConsumableArray(menu);for(var i=info.keyPath.length-1;i>=0;i--)_loop(i);if(current===null||current===void 0?void 0:current.path){navigate("".concat(current.path,"?menuId=").concat(info.key))}},[menu,navigate]);var items=useMemo(function(){return filterMenuProps(menu)},[filterMenuProps,menu]);var menuId=useMemo(function(){return search.get("menuId")},[search]);var current=menuKV[menuId||""];useEffect(function(){Object.assign(openKeysRef,{current:openKeys})},[openKeys]);useEffect(function(){if(current&&!collapsed&&openKeysRef.current){var opk=_toConsumableArray(openKeysRef.current);if(!opk.includes(menuId))opk.push(menuId);if(current.parentId&&!opk.includes(current.parentId))opk.push(current.parentId);if(!isEqual(openKeysRef.current,opk))setOpenKeys(opk)}},[collapsed,current,menuId]);useEffect(function(){if(menuId!==activeKey){dispatch({type:"appProgram/setActiveKey",payload:menuId})}},[activeKey,dispatch,menuId]);return React.createElement(Menu,_extends({defaultSelectedKeys:activeKey?[activeKey]:[],selectedKeys:activeKey?[activeKey]:[],defaultOpenKeys:openKeys,openKeys:collapsed?undefined:openKeys,onOpenChange:handleOpenChange,mode:"inline",onClick:doPage,subMenuCloseDelay:0,triggerSubMenuAction:"click",theme:"light",items:items},menuProps,{className:["layout-menu",menuProps.className].join(" ")}))};export default React.memo(LayoutMenu);
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout-menu/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { useLocale } from 'i18n-hooks';\nimport { useDispatch, useSelector, shallowEqual } from 'react-redux';\nimport { isEqual } from '@moneko/common';\nimport { Menu } from 'antd';\nimport type { MenuProps } from 'antd/es/menu';\nimport type { MenuInfo } from 'rc-menu/es/interface';\nimport type { AppProgramModelType, ItemTypes } from '../../packages/back-stage/models/app-program';\nimport './index.global.less';\n\nexport interface LayoutMenuProps extends MenuProps {\n collapsed?: boolean;\n}\n\nconst LayoutMenu: React.FC<LayoutMenuProps> = (prop) => {\n const { collapsed, ...menuProps } = prop;\n const dispatch = useDispatch();\n const openKeysRef = useRef<string[]>();\n const menu = useSelector(\n (store: { appProgram: AppProgramModelType }) =>\n (store.appProgram.menu || []).filter((m) => !m.hideMenu),\n shallowEqual\n );\n const menuKV = useSelector(\n (store: { appProgram: AppProgramModelType }) => store.appProgram.menuKV || [],\n shallowEqual\n );\n const navigate = useNavigate();\n const [search] = useSearchParams();\n const { getLanguage } = useLocale();\n const activeKey = useSelector((store: AppStore) => store.appProgram.activeKey, shallowEqual);\n const [openKeys, setOpenKeys] = useState<string[]>([]);\n const handleOpenChange = useCallback(\n (keys: string[]) => {\n if (keys !== openKeys) {\n setOpenKeys(keys as string[]);\n }\n },\n [openKeys]\n );\n const filterMenuProps = useCallback(\n (list: ItemTypes[]): ItemTypes[] => {\n return list.map((item) => {\n return {\n label: item.label ? getLanguage(item.label) : item.label,\n path: item.path,\n type: item.type,\n children: Array.isArray(item.children) ? filterMenuProps(item.children) : item.children,\n disabled: item.disabled,\n key: item.key,\n itemIcon: item.itemIcon,\n icon: item.icon,\n expandIcon: item.expandIcon,\n };\n });\n },\n [getLanguage]\n );\n\n const doPage = useCallback(\n (info: MenuInfo) => {\n let current: ItemTypes | undefined;\n let el: ItemTypes[] | undefined = [...menu];\n\n for (let i = info.keyPath.length - 1; i >= 0; i--) {\n const e: ItemTypes | undefined = el?.find((item) => item?.key === info.keyPath[i]);\n\n if (i && e?.children) el = e.children;\n else current = e;\n }\n\n if (current?.path) {\n navigate(`${current.path}?menuId=${info.key}`);\n }\n },\n [menu, navigate]\n );\n const items = useMemo(() => filterMenuProps(menu), [filterMenuProps, menu]);\n const menuId = useMemo(() => search.get('menuId'), [search]);\n const current = menuKV[menuId || ''];\n\n useEffect(() => {\n Object.assign(openKeysRef, {\n current: openKeys,\n });\n }, [openKeys]);\n useEffect(() => {\n if (current && !collapsed && openKeysRef.current) {\n const opk = [...openKeysRef.current];\n\n if (!opk.includes(menuId as string)) opk.push(menuId as string);\n if (current.parentId && !opk.includes(current.parentId)) opk.push(current.parentId);\n if (!isEqual(openKeysRef.current, opk)) setOpenKeys(opk);\n }\n }, [collapsed, current, menuId]);\n\n useEffect(() => {\n if (menuId !== activeKey) {\n dispatch({\n type: 'appProgram/setActiveKey',\n payload: menuId,\n });\n }\n }, [activeKey, dispatch, menuId]);\n return (\n <Menu\n defaultSelectedKeys={activeKey ? [activeKey] : []}\n selectedKeys={activeKey ? [activeKey] : []}\n defaultOpenKeys={openKeys}\n // eslint-disable-next-line no-undefined\n openKeys={collapsed ? undefined : openKeys}\n onOpenChange={handleOpenChange}\n mode=\"inline\"\n onClick={doPage}\n subMenuCloseDelay={0}\n triggerSubMenuAction=\"click\"\n theme=\"light\"\n items={items}\n {...menuProps}\n className={['layout-menu', menuProps.className].join(' ')}\n />\n );\n};\n\nexport default React.memo(LayoutMenu);\n"],"names":["React","useCallback","useEffect","useMemo","useRef","useState","useNavigate","useSearchParams","useLocale","useDispatch","useSelector","shallowEqual","isEqual","Menu","LayoutMenu","prop","collapsed","menuProps","dispatch","openKeysRef","menu","store","appProgram","filter","m","hideMenu","menuKV","navigate","search","getLanguage","activeKey","openKeys","setOpenKeys","handleOpenChange","keys","filterMenuProps","list","map","item","label","path","type","children","Array","isArray","disabled","key","itemIcon","icon","expandIcon","doPage","info","e","el","find","keyPath","i","current","length","items","menuId","get","Object","assign","opk","includes","push","parentId","payload","defaultSelectedKeys","selectedKeys","defaultOpenKeys","undefined","onOpenChange","mode","onClick","subMenuCloseDelay","triggerSubMenuAction","theme","className","join","memo"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{useEffect,useState}from"react";import styles from"./index.less";var Readme=function(param){var path=param.path;var _useState=_slicedToArray(useState(""),2),doc=_useState[0],setDoc=_useState[1];useEffect(function(){try{var text=require("@pkg/"+path+"/README.mdx");setDoc(text.default)}catch(error){setDoc(JSON.stringify(error))}},[path]);return React.createElement("div",{className:"".concat(styles.prefixCls,"-markdown-box")},doc)};export default Readme;
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/readme/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport styles from './index.less';\n\nconst Readme: React.FC<PureComponentProps> = ({ path }) => {\n const [doc, setDoc] = useState<React.ReactElement | string>('');\n\n useEffect(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const text = require('@pkg/' + path + '/README.mdx');\n\n setDoc(text.default);\n } catch (error) {\n setDoc(JSON.stringify(error));\n }\n }, [path]);\n\n return <div className={`${styles.prefixCls}-markdown-box`}>{doc}</div>;\n};\n\nexport default Readme;\n"],"names":["React","useEffect","useState","styles","Readme","path","doc","setDoc","text","require","default","error","JSON","stringify","div","className","prefixCls"],"mappings":"AAAA,2zCAAA,OAAOA,OAASC,SAAS,CAAEC,QAAQ,KAAQ,OAAQ,AACnD,QAAOC,WAAY,cAAe,CAElC,IAAMC,OAAuC,eAAc,KAAXC,WAAAA,KAC9C,IAAsBH,yBAAAA,SAAsC,OAArDI,IAAeJ,aAAVK,OAAUL,aAEtBD,UAAU,UAAM,CACd,GAAI,CAEF,IAAMO,KAAOC,QAAQ,QAAUJ,KAAO,eAEtCE,OAAOC,KAAKE,OAAO,CACrB,CAAE,MAAOC,MAAO,CACdJ,OAAOK,KAAKC,SAAS,CAACF,OACxB,CACF,EAAG,CAACN,KAAK,EAET,OAAO,oBAACS,OAAIC,UAAW,AAAC,GAAmB,OAAjBZ,OAAOa,SAAS,CAAC,kBAAiBV,IAC9D,CAEA,gBAAeF,MAAO"}
|
package/lib/hooks/navgate.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/navgate.ts"],"sourcesContent":["import { useNavigate as useNavigateReactRouter, useSearchParams } from 'react-router-dom';\nimport type { NavigateOptions, To } from 'react-router-dom';\n\nconst useNavigate = (\n /** search保留字 */\n reserved?: string | string[]\n) => {\n const reservedWord = Array.from(\n new Set(['menuId', 'dynamicTitle'].concat(reserved || ''))\n ).filter(Boolean);\n const navigates = useNavigateReactRouter();\n const [search] = useSearchParams();\n\n const navigate = (to: To | -1, options?: NavigateOptions) => {\n if (to === -1) {\n navigates(-1);\n return;\n }\n /** 提取保留字属性 */\n const nextSerach: Record<string, string> = {};\n\n search.forEach((val, key) => {\n if (reservedWord.includes(key)) {\n Object.assign(nextSerach, {\n [key]: val,\n });\n }\n });\n\n let entryUrl = to as string;\n const entrySearchIdx = (entryUrl as string).indexOf('?');\n\n if (entrySearchIdx !== -1) {\n const searchByToUrl = new URLSearchParams(entryUrl.slice(entrySearchIdx));\n\n searchByToUrl.forEach((val, key) => {\n Object.assign(nextSerach, {\n [key]: val,\n });\n });\n entryUrl = entryUrl.substring(0, entrySearchIdx);\n }\n\n const searchObj = new URLSearchParams(nextSerach);\n const searchString = searchObj.toString();\n const toUrl = searchString?.trim().length ? [entryUrl, searchString].join('?') : entryUrl;\n\n navigates(toUrl, options);\n };\n\n return navigate;\n};\n\nexport default useNavigate;\n"],"names":["useNavigate","useNavigateReactRouter","useSearchParams","reserved","reservedWord","Array","from","Set","concat","filter","Boolean","navigates","search","navigate","to","options","nextSerach","forEach","val","key","includes","Object","assign","entryUrl","entrySearchIdx","indexOf","searchByToUrl","URLSearchParams","slice","substring","searchObj","searchString","toString","toUrl","trim","length","join"],"mappings":"AAAA,8+CAAA,OAASA,eAAeC,sBAAsB,CAAEC,eAAe,KAAQ,kBAAmB,CAG1F,IAAMF,YAAc,SAElBG,SACG,CACH,IAAMC,aAAeC,MAAMC,IAAI,CAC7B,IAAIC,IAAI,CAAC,SAAU,eAAe,CAACC,MAAM,CAACL,UAAY,MACtDM,MAAM,CAACC,SACT,IAAMC,UAAYV,yBAClB,IAAiBC,gCAAAA,qBAAVU,OAAUV,oBAEjB,IAAMW,SAAW,SAACC,GAAaC,QAA8B,CAC3D,GAAID,KAAO,CAAC,EAAG,CACbH,UAAU,CAAC,GACX,MACF,CAAC,AAED,IAAMK,WAAqC,CAAC,EAE5CJ,OAAOK,OAAO,CAAC,SAACC,IAAKC,IAAQ,CAC3B,GAAIf,aAAagB,QAAQ,CAACD,KAAM,CAC9BE,OAAOC,MAAM,CAACN,WACZ,mBAACG,IAAMD,KAEX,CAAC,AACH,GAEA,IAAIK,SAAWT,GACf,IAAMU,eAAiB,AAACD,SAAoBE,OAAO,CAAC,KAEpD,GAAID,iBAAmB,CAAC,EAAG,CACzB,IAAME,cAAgB,IAAIC,gBAAgBJ,SAASK,KAAK,CAACJ,iBAEzDE,cAAcT,OAAO,CAAC,SAACC,IAAKC,IAAQ,CAClCE,OAAOC,MAAM,CAACN,WACZ,mBAACG,IAAMD,KAEX,GACAK,SAAWA,SAASM,SAAS,CAAC,EAAGL,eACnC,CAAC,AAED,IAAMM,UAAY,IAAIH,gBAAgBX,YACtC,IAAMe,aAAeD,UAAUE,QAAQ,GACvC,IAAMC,MAAQF,CAAAA,qBAAAA,sBAAAA,KAAAA,EAAAA,aAAcG,IAAI,GAAGC,MAAM,EAAG,CAACZ,SAAUQ,aAAa,CAACK,IAAI,CAAC,KAAOb,QAAQ,CAEzFZ,UAAUsB,MAAOlB,QACnB,EAEA,OAAOF,QACT,CAEA,gBAAeb,WAAY"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
.@{ant-prefix}-layout,
|
|
2
|
-
.@{ant-prefix}-layout-footer {
|
|
3
|
-
background: none;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.@{ant-prefix}-layout-content {
|
|
7
|
-
position: relative;
|
|
8
|
-
height: 100%;
|
|
9
|
-
|
|
10
|
-
>div>div {
|
|
11
|
-
animation: route-in @transition-duration forwards;
|
|
12
|
-
|
|
13
|
-
>div:first-child:not(.@{ant-prefix}-table-wrapper) {
|
|
14
|
-
max-height: 100%;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.@{ant-prefix}-menu-inline-collapsed {
|
|
20
|
-
width: 50px !important;
|
|
21
|
-
.@{ant-prefix}-menu-item {
|
|
22
|
-
text-align: center;
|
|
23
|
-
.@{ant-prefix}-menu-title-content {
|
|
24
|
-
width: 0;
|
|
25
|
-
margin: 0;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.@{ant-prefix}-layout-sider-collapsed {
|
|
31
|
-
flex: 0 0 50px !important;
|
|
32
|
-
width: 50px !important;
|
|
33
|
-
min-width: 50px !important;
|
|
34
|
-
max-width: 50px !important;
|
|
35
|
-
|
|
36
|
-
.@{ant-prefix}-menu-item,
|
|
37
|
-
.@{ant-prefix}-menu-submenu-title {
|
|
38
|
-
padding: 0 12.5px !important;
|
|
39
|
-
|
|
40
|
-
.@{iconfont-css-prefix} {
|
|
41
|
-
line-height: normal !important;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.@{ant-prefix}-layout-sider {
|
|
47
|
-
overflow: auto;
|
|
48
|
-
border-radius: @border-radius-base !important;
|
|
49
|
-
|
|
50
|
-
&:not(.@{ant-prefix}-layout-sider-collapsed) {
|
|
51
|
-
flex: 0 0 200px !important;
|
|
52
|
-
width: 200px !important;
|
|
53
|
-
min-width: 200px !important;
|
|
54
|
-
max-width: 200px !important;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
&::-webkit-scrollbar {
|
|
58
|
-
display: none;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.@{ant-prefix}-layout-sider-dark {
|
|
63
|
-
--sider-logo-bg: @menu-dark-bg;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/* stylelint-disable-next-line no-invalid-position-at-import-rule */
|
|
67
|
-
@import (optional, once) url('@/styles/antd.global.less');
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import React,{useCallback,useEffect,useMemo,useState}from"react";import{useSearchParams}from"react-router-dom";import{useLocale}from"i18n-hooks";import{Tabs,Layout,Menu,Dropdown}from"antd";import{ReloadOutlined,DeleteRowOutlined,CloseOutlined}from"@ant-design/icons";import{isEqual}from"@moneko/common";import{useAliveController}from"react-activation";import{shallowEqual,useSelector,useDispatch}from"react-redux";import LayoutMenu from"../../../components/layout-menu";import AppRouter from"../../../components/app-router";import FallbackComp from"../../../components/fallback-comp";import{router}from"../../../router";import useNavigate from"../../../hooks/navgate";import styles from"./index.less";var closeTabs=[{label:"关闭左侧标签",icon:React.createElement(DeleteRowOutlined,{style:{transform:"scaleX(-1)"}}),key:"left"},{label:"关闭右侧标签",icon:React.createElement(DeleteRowOutlined,null),key:"right"},{label:"关闭其他标签",icon:React.createElement(CloseOutlined,null),key:"other"},{label:"刷新标签页",icon:React.createElement(ReloadOutlined,null),key:"refresh"}];var SiderLayout=function(){var dispatch=useDispatch();var activeKey=useSelector(function(store){return store.appProgram.activeKey},shallowEqual);var tabs=useSelector(function(store){return store.appProgram.tabs},shallowEqual);var menuKV=useSelector(function(store){return store.appProgram.menuKV||{}},shallowEqual);var navigate=useNavigate();var dropScope=useAliveController().dropScope;var _useSearchParams=_slicedToArray(useSearchParams(),1),search=_useSearchParams[0];var getLanguage=useLocale().getLanguage;var _useState=_slicedToArray(useState(false),2),collapsed=_useState[0],setCollapsed=_useState[1];var handleCollapsed=useCallback(function(value){if(value){var _timer=window.setTimeout(function(){setCollapsed(value);window.clearTimeout(_timer);_timer=null},0)}else{setCollapsed(value);var _timer1=window.setTimeout(function(){window.clearTimeout(_timer1);_timer1=null},30)}},[]);var closedTab=useCallback(function(tabKey,type){if(type==="refresh"){navigate("/refresh");return}dispatch({type:"appProgram/closeTab",payload:{key:tabKey,type:type,callback:function callback(closes,nextTab){closes===null||closes===void 0?void 0:closes.forEach(function(item){if(item.path&&dropScope){dropScope(item.path)}});if(nextTab){navigate("".concat(nextTab.path,"?menuId=").concat(nextTab.key))}}}})},[dispatch,dropScope,navigate]);var _useMemo=useMemo(function(){return{menuId:search.get("menuId")||"",dynamicTitle:search.get("dynamicTitle")||""}},[search]),menuId=_useMemo.menuId,dynamicTitle=_useMemo.dynamicTitle;var current=menuKV[menuId];useEffect(function(){if(menuId){dispatch({type:"appProgram/openTab",payload:{key:menuId,dynamicTitle:dynamicTitle}})}},[dispatch,dynamicTitle,menuId,current]);var getItems=useCallback(function(key){return key===activeKey?closeTabs:closeTabs.filter(function(t){return(t===null||t===void 0?void 0:t.key)!=="refresh"})},[activeKey]);return React.createElement(Layout,{className:styles.layout},layoutSider?React.createElement(Layout.Sider,_extends({className:styles.sider,trigger:null,collapsible:true,collapsed:collapsed,onBreakpoint:function(broken){return handleCollapsed(broken)},onCollapse:function(_collapsed){return handleCollapsed(_collapsed)},theme:"light",breakpoint:"md"},layoutSider),React.createElement("div",{className:styles.logo,"data-title":projectName},React.createElement(FallbackComp,{compName:"logo",show:!collapsed})),React.createElement(LayoutMenu,{collapsed:collapsed,theme:layoutSider.theme})):null,React.createElement(Layout,{className:styles.section},React.createElement(FallbackComp,{compName:"layout-header",collapsed:collapsed,onCollapsed:function(){return handleCollapsed(!collapsed)}}),React.createElement(Tabs,{className:styles.tabs,hideAdd:true,onTabClick:function(key){navigate("".concat(menuKV[key].path,"?menuId=").concat(menuKV[key].key))},activeKey:activeKey,size:"middle",type:"editable-card",onEdit:function(targetKey,action){if(action==="remove"&&typeof targetKey==="string"){closedTab(targetKey)}}},tabs.map(function(item){return React.createElement(Tabs.TabPane,{tab:React.createElement(Dropdown,{overlay:React.createElement(Menu,{items:getItems(item.key),onClick:function(info){info.domEvent.stopPropagation();closedTab(item.key,info.key)}}),trigger:["contextMenu"],destroyPopupOnHide:true},React.createElement("div",null,item.icon,getLanguage(item.i18n||"route-".concat(item.key))+item.dynamicTitle||"")),key:item.key,closable:item.closable})})),React.createElement(Layout.Content,{className:styles.layoutContent},React.createElement("div",{className:styles.content},React.createElement(AppRouter,{router:router})),React.createElement(FallbackComp,{compName:"layout-footer"}))))};export default React.memo(SiderLayout,isEqual);
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/packages/back-stage/layout/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useLocale } from 'i18n-hooks';\nimport { Tabs, Layout, Menu, Dropdown } from 'antd';\nimport { ReloadOutlined, DeleteRowOutlined, CloseOutlined } from '@ant-design/icons';\nimport { isEqual } from '@moneko/common';\nimport { useAliveController } from 'react-activation';\nimport { shallowEqual, useSelector, useDispatch } from 'react-redux';\nimport LayoutMenu from '../../../components/layout-menu';\nimport AppRouter from '../../../components/app-router';\nimport FallbackComp from '../../../components/fallback-comp';\nimport { router } from '../../../router';\nimport useNavigate from '../../../hooks/navgate';\nimport type { RouterProps } from '../../../router';\nimport type { AppProgramModelType } from '../models/app-program';\nimport type { ItemType } from 'antd/es/menu/hooks/useItems';\nimport styles from './index.less';\n\ninterface TabProps extends RouterProps {\n key: string;\n url?: string;\n path?: string;\n closable?: boolean;\n}\n\nconst closeTabs: ItemType[] = [\n {\n label: '关闭左侧标签',\n icon: <DeleteRowOutlined style={{ transform: 'scaleX(-1)' }} />,\n key: 'left',\n },\n {\n label: '关闭右侧标签',\n icon: <DeleteRowOutlined />,\n key: 'right',\n },\n {\n label: '关闭其他标签',\n icon: <CloseOutlined />,\n key: 'other',\n },\n {\n label: '刷新标签页',\n icon: <ReloadOutlined />,\n key: 'refresh',\n },\n];\n\nconst SiderLayout: React.FC = () => {\n const dispatch = useDispatch();\n const activeKey = useSelector((store: AppStore) => store.appProgram.activeKey, shallowEqual);\n const tabs = useSelector((store: AppStore) => store.appProgram.tabs, shallowEqual);\n const menuKV = useSelector(\n (store: { appProgram: AppProgramModelType }) => store.appProgram.menuKV || {},\n shallowEqual\n );\n const navigate = useNavigate();\n const { dropScope } = useAliveController();\n const [search] = useSearchParams();\n const { getLanguage } = useLocale();\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const handleCollapsed = useCallback((value: boolean) => {\n if (value) {\n let _timer: number | null = window.setTimeout(() => {\n setCollapsed(value);\n window.clearTimeout(_timer as number);\n _timer = null;\n }, 0);\n } else {\n setCollapsed(value);\n let _timer: number | null = window.setTimeout(() => {\n window.clearTimeout(_timer as number);\n _timer = null;\n }, 30);\n }\n }, []);\n\n const closedTab = useCallback(\n (tabKey?: string, type?: string) => {\n if (type === 'refresh') {\n navigate('/refresh');\n return;\n }\n dispatch({\n type: 'appProgram/closeTab',\n payload: {\n key: tabKey,\n type: type,\n callback(closes?: TabProps[], nextTab?: TabProps) {\n closes?.forEach((item) => {\n if (item.path && dropScope) {\n dropScope(item.path);\n }\n });\n if (nextTab) {\n navigate(`${nextTab.path}?menuId=${nextTab.key}`);\n }\n },\n },\n });\n },\n [dispatch, dropScope, navigate]\n );\n\n const { menuId, dynamicTitle } = useMemo(\n () => ({\n menuId: search.get('menuId') || '',\n dynamicTitle: search.get('dynamicTitle') || '',\n }),\n [search]\n );\n const current = menuKV[menuId];\n\n useEffect(() => {\n if (menuId) {\n dispatch({\n type: 'appProgram/openTab',\n payload: {\n key: menuId,\n dynamicTitle,\n },\n });\n }\n }, [dispatch, dynamicTitle, menuId, current]);\n\n const getItems = useCallback(\n (key: string) =>\n key === activeKey ? closeTabs : closeTabs.filter((t) => t?.key !== 'refresh'),\n [activeKey]\n );\n\n return (\n <Layout className={styles.layout}>\n {layoutSider ? (\n <Layout.Sider\n className={styles.sider}\n trigger={null}\n collapsible\n collapsed={collapsed}\n onBreakpoint={(broken: boolean) => handleCollapsed(broken)}\n onCollapse={(_collapsed: boolean) => handleCollapsed(_collapsed)}\n theme=\"light\"\n breakpoint=\"md\"\n {...layoutSider}\n >\n <div className={styles.logo} data-title={projectName}>\n <FallbackComp compName=\"logo\" show={!collapsed} />\n </div>\n <LayoutMenu collapsed={collapsed} theme={layoutSider.theme} />\n </Layout.Sider>\n ) : null}\n <Layout className={styles.section}>\n <FallbackComp\n compName=\"layout-header\"\n collapsed={collapsed}\n onCollapsed={() => handleCollapsed(!collapsed)}\n />\n <Tabs\n className={styles.tabs}\n hideAdd\n onTabClick={(key: string) => {\n navigate(`${menuKV[key].path}?menuId=${menuKV[key].key}`);\n }}\n activeKey={activeKey}\n size=\"middle\"\n type=\"editable-card\"\n onEdit={(targetKey, action) => {\n if (action === 'remove' && typeof targetKey === 'string') {\n closedTab(targetKey);\n }\n }}\n >\n {tabs.map((item: TabProps) => (\n <Tabs.TabPane\n tab={\n <Dropdown\n overlay={\n <Menu\n items={getItems(item.key)}\n onClick={(info) => {\n info.domEvent.stopPropagation();\n closedTab(item.key, info.key);\n }}\n />\n }\n trigger={['contextMenu']}\n destroyPopupOnHide\n >\n <div>\n {item.icon}\n {getLanguage(item.i18n || `route-${item.key}`) + item.dynamicTitle || ''}\n </div>\n </Dropdown>\n }\n key={item.key}\n closable={item.closable}\n />\n ))}\n </Tabs>\n <Layout.Content className={styles.layoutContent}>\n <div className={styles.content}>\n <AppRouter router={router} />\n </div>\n <FallbackComp compName=\"layout-footer\" />\n </Layout.Content>\n </Layout>\n </Layout>\n );\n};\n\nexport default React.memo(SiderLayout, isEqual);\n"],"names":["React","useCallback","useEffect","useMemo","useState","useSearchParams","useLocale","Tabs","Layout","Menu","Dropdown","ReloadOutlined","DeleteRowOutlined","CloseOutlined","isEqual","useAliveController","shallowEqual","useSelector","useDispatch","LayoutMenu","AppRouter","FallbackComp","router","useNavigate","styles","closeTabs","label","icon","style","transform","key","SiderLayout","dispatch","activeKey","store","appProgram","tabs","menuKV","navigate","dropScope","search","getLanguage","collapsed","setCollapsed","handleCollapsed","value","_timer","window","setTimeout","clearTimeout","closedTab","tabKey","type","payload","callback","closes","nextTab","forEach","item","path","menuId","get","dynamicTitle","current","getItems","filter","t","className","layout","layoutSider","Sider","sider","trigger","collapsible","onBreakpoint","broken","onCollapse","_collapsed","theme","breakpoint","div","logo","data-title","projectName","compName","show","section","onCollapsed","hideAdd","onTabClick","size","onEdit","targetKey","action","map","TabPane","tab","overlay","items","onClick","info","domEvent","stopPropagation","destroyPopupOnHide","i18n","closable","Content","layoutContent","content","memo"],"mappings":"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"}
|