@moneko/core 2.0.0-beta.9 → 2.0.1-8.2

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 (161) hide show
  1. package/build/common.js +1 -1
  2. package/build/coverage.js +1 -1
  3. package/build/done.d.ts +8 -0
  4. package/build/done.js +1 -0
  5. package/build/envFlags.d.ts +2 -4
  6. package/build/envFlags.js +1 -1
  7. package/build/has-pkg.js +1 -1
  8. package/build/html-plugin-option.d.ts +2 -2
  9. package/build/html-plugin-option.js +1 -1
  10. package/build/index.d.ts +2 -0
  11. package/build/index.js +1 -0
  12. package/build/minify.d.ts +1 -1
  13. package/build/modifyVars.js +1 -1
  14. package/build/module-federation.d.ts +1 -1
  15. package/build/module-federation.js +1 -1
  16. package/build/module.config.js +1 -1
  17. package/build/process-env.d.ts +3 -1
  18. package/build/process-env.js +1 -1
  19. package/build/resolver-sync.js +1 -1
  20. package/build/seo.d.ts +1 -0
  21. package/build/seo.js +1 -0
  22. package/build/swcrc.js +1 -1
  23. package/build/tsloader.config.js +1 -1
  24. package/build/utils.d.ts +9 -6
  25. package/build/utils.js +1 -1
  26. package/build/webpack.common.d.ts +1 -0
  27. package/build/webpack.common.js +1 -1
  28. package/build/webpack.dev.js +1 -1
  29. package/build/webpack.prod.js +1 -1
  30. package/lib/components/app-router.d.ts +8 -0
  31. package/lib/components/app-router.js +2 -0
  32. package/lib/components/app-router.js.map +1 -0
  33. package/lib/components/{fallback-comp/index.js → fallback-comp.js} +1 -1
  34. package/lib/components/fallback-comp.js.map +1 -0
  35. package/lib/components/{fallback/index.js → fallback.js} +2 -2
  36. package/lib/components/fallback.js.map +1 -0
  37. package/lib/components/{layout-menu/index.d.ts → layout-menu.d.ts} +1 -2
  38. package/lib/components/layout-menu.js +2 -0
  39. package/lib/components/layout-menu.js.map +1 -0
  40. package/lib/index.d.ts +15 -14
  41. package/lib/index.js +1 -1
  42. package/lib/index.js.map +1 -1
  43. package/lib/localizable.d.ts +53 -0
  44. package/lib/localizable.js +2 -0
  45. package/lib/localizable.js.map +1 -0
  46. package/lib/menu.d.ts +115 -0
  47. package/lib/menu.js +2 -0
  48. package/lib/menu.js.map +1 -0
  49. package/lib/packages/back-stage/app.d.ts +2 -2
  50. package/lib/packages/back-stage/app.js +1 -1
  51. package/lib/packages/back-stage/app.js.map +1 -1
  52. package/lib/packages/back-stage/bootstrap.d.ts +1 -1
  53. package/lib/packages/back-stage/bootstrap.js +1 -1
  54. package/lib/packages/back-stage/bootstrap.js.map +1 -1
  55. package/lib/packages/back-stage/index.d.ts +1 -1
  56. package/lib/packages/back-stage/index.js +1 -1
  57. package/lib/packages/back-stage/index.js.map +1 -1
  58. package/lib/packages/back-stage/layout.d.ts +5 -0
  59. package/lib/packages/back-stage/layout.js +2 -0
  60. package/lib/packages/back-stage/layout.js.map +1 -0
  61. package/lib/packages/library/app.js +1 -1
  62. package/lib/packages/library/app.js.map +1 -1
  63. package/lib/packages/library/bootstrap.d.ts +1 -1
  64. package/lib/packages/library/bootstrap.js +1 -1
  65. package/lib/packages/library/bootstrap.js.map +1 -1
  66. package/lib/packages/library/index.d.ts +1 -1
  67. package/lib/packages/library/index.js +1 -1
  68. package/lib/packages/library/index.js.map +1 -1
  69. package/lib/packages/mobile/app.js +1 -1
  70. package/lib/packages/mobile/app.js.map +1 -1
  71. package/lib/packages/mobile/index.d.ts +1 -2
  72. package/lib/packages/mobile/index.js +1 -1
  73. package/lib/packages/mobile/index.js.map +1 -1
  74. package/lib/packages/single-spa/app.d.ts +6 -5
  75. package/lib/packages/single-spa/app.js +1 -1
  76. package/lib/packages/single-spa/app.js.map +1 -1
  77. package/lib/packages/single-spa/bootstrap.d.ts +0 -1
  78. package/lib/packages/single-spa/bootstrap.js +1 -1
  79. package/lib/packages/single-spa/bootstrap.js.map +1 -1
  80. package/lib/packages/single-spa/index.d.ts +1 -1
  81. package/lib/packages/single-spa/index.js +1 -1
  82. package/lib/packages/single-spa/index.js.map +1 -1
  83. package/lib/packages/site/app.js +1 -1
  84. package/lib/packages/site/app.js.map +1 -1
  85. package/lib/packages/site/bootstrap.d.ts +1 -1
  86. package/lib/packages/site/bootstrap.js +1 -1
  87. package/lib/packages/site/bootstrap.js.map +1 -1
  88. package/lib/packages/site/index.d.ts +1 -1
  89. package/lib/packages/site/index.js +1 -1
  90. package/lib/packages/site/index.js.map +1 -1
  91. package/lib/prefix/react-router-dom.js +1 -1
  92. package/lib/prefix/react-router-dom.js.map +1 -1
  93. package/lib/react-router-dom/link.d.ts +9 -0
  94. package/lib/react-router-dom/link.js +2 -0
  95. package/lib/react-router-dom/link.js.map +1 -0
  96. package/lib/{hooks/navgate.d.ts → react-router-dom/use-navgate.d.ts} +1 -1
  97. package/lib/{hooks/navgate.js → react-router-dom/use-navgate.js} +1 -1
  98. package/lib/react-router-dom/use-navgate.js.map +1 -0
  99. package/lib/router/index.d.ts +38 -8
  100. package/lib/router/index.js +1 -1
  101. package/lib/router/index.js.map +1 -1
  102. package/lib/sso/index.d.ts +23 -0
  103. package/lib/sso/index.js +2 -0
  104. package/lib/sso/index.js.map +1 -0
  105. package/lib/styles/normalize.css +269 -0
  106. package/lib/styles/variables.css +35 -0
  107. package/lib/utils/index.d.ts +1 -1
  108. package/lib/utils/index.js +1 -1
  109. package/lib/utils/index.js.map +1 -1
  110. package/package.json +31 -30
  111. package/typings/global.d.ts +181 -67
  112. package/build/has-antd.d.ts +0 -2
  113. package/build/has-antd.js +0 -1
  114. package/lib/components/app-router/index.d.ts +0 -8
  115. package/lib/components/app-router/index.js +0 -2
  116. package/lib/components/app-router/index.js.map +0 -1
  117. package/lib/components/fallback/index.js.map +0 -1
  118. package/lib/components/fallback-comp/index.js.map +0 -1
  119. package/lib/components/layout-menu/index.global.less +0 -40
  120. package/lib/components/layout-menu/index.js +0 -2
  121. package/lib/components/layout-menu/index.js.map +0 -1
  122. package/lib/hooks/navgate.js.map +0 -1
  123. package/lib/packages/back-stage/layout/index.d.ts +0 -3
  124. package/lib/packages/back-stage/layout/index.js +0 -2
  125. package/lib/packages/back-stage/layout/index.js.map +0 -1
  126. package/lib/packages/back-stage/layout/index.less +0 -91
  127. package/lib/packages/back-stage/models/app-program.d.ts +0 -24
  128. package/lib/packages/back-stage/models/app-program.js +0 -2
  129. package/lib/packages/back-stage/models/app-program.js.map +0 -1
  130. package/lib/prefix/i18n-hooks.d.ts +0 -1
  131. package/lib/prefix/i18n-hooks.js +0 -2
  132. package/lib/prefix/i18n-hooks.js.map +0 -1
  133. package/lib/prefix/mini-idc.d.ts +0 -1
  134. package/lib/prefix/mini-idc.js +0 -2
  135. package/lib/prefix/mini-idc.js.map +0 -1
  136. package/lib/styles/animation.d.ts +0 -5
  137. package/lib/styles/animation.js +0 -2
  138. package/lib/styles/animation.js.map +0 -1
  139. package/lib/styles/normalize.d.ts +0 -2
  140. package/lib/styles/normalize.js +0 -2
  141. package/lib/styles/normalize.js.map +0 -1
  142. package/lib/styles/vars.d.ts +0 -4
  143. package/lib/styles/vars.js +0 -2
  144. package/lib/styles/vars.js.map +0 -1
  145. package/lib/utils/color-palette.d.ts +0 -2
  146. package/lib/utils/color-palette.js +0 -2
  147. package/lib/utils/color-palette.js.map +0 -1
  148. package/lib/utils/env.d.ts +0 -0
  149. package/lib/utils/env.js +0 -2
  150. package/lib/utils/env.js.map +0 -1
  151. package/lib/utils/fontloader.d.ts +0 -1
  152. package/lib/utils/fontloader.js +0 -2
  153. package/lib/utils/fontloader.js.map +0 -1
  154. package/lib/utils/lazy-import.d.ts +0 -22
  155. package/lib/utils/lazy-import.js +0 -2
  156. package/lib/utils/lazy-import.js.map +0 -1
  157. package/lib/utils/theme.d.ts +0 -13
  158. package/lib/utils/theme.js +0 -2
  159. package/lib/utils/theme.js.map +0 -1
  160. /package/lib/components/{fallback-comp/index.d.ts → fallback-comp.d.ts} +0 -0
  161. /package/lib/components/{fallback/index.d.ts → fallback.d.ts} +0 -0
@@ -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 = 'mobile' | 'site' | 'back-stage' | 'single-spa' | 'library';
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
- clean: boolean | CleanPlugin['options'];
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
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
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
- /** mini-idc 数据持久化配置, 为 false 时关闭持久化 */
47
- miniIdc?:
48
- | {
49
- /** 持久化数据使用的key, 当key为 'none' 时, 关闭持久化 */
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
- /** 设计图尺寸 默认: 1680 */
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
- /** antd 主题配置 */
74
- antdThemeVariables: {
75
- compact?: boolean;
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: HtmlWebpackPluginOptions & {
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
- /** 路由模式 默认 browser */
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: string;
171
+ output?: Omit<WebpackConfiguration['output'], 'publishPath'> | string;
135
172
  /** 模块联邦 */
136
173
  moduleFederation: ModuleFederationOption[];
137
174
  /** 跳过编译的模块 */
@@ -143,6 +180,26 @@ 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
+ path?: string;
199
+ }
200
+ | false;
201
+ /** 📦 打包完成 */
202
+ done?: () => void;
146
203
  };
147
204
  export declare interface ModuleFederationOption {
148
205
  /** 模块名称,唯一性,不能重名 */
@@ -290,14 +347,17 @@ export type ProgramInfoType = {
290
347
  /** 应用类型 */
291
348
  type: 'mobile' | 'site' | 'back-stage' | 'single-spa' | 'library';
292
349
  /** 开发者 */
293
- author:
294
- | {
295
- name: string;
296
- email?: string;
297
- }
298
- | string;
350
+ author: {
351
+ name: string;
352
+ url?: string;
353
+ email?: string;
354
+ };
299
355
  /** 存储库 */
300
- repository: string;
356
+ repository: {
357
+ type?: string;
358
+ url?: string;
359
+ directory?: string;
360
+ };
301
361
  /** 路由模式 */
302
362
  routerMode: 'hash' | 'browser' | 'memory';
303
363
  /** 根路由 */
@@ -339,7 +399,7 @@ export type ProjectCoverageType = {
339
399
  classes: string;
340
400
  };
341
401
 
342
- declare interface OptimizationSplitChunksOptions {
402
+ export declare interface OptimizationSplitChunksOptions {
343
403
  /**
344
404
  * Sets the name delimiter for created chunks.
345
405
  */
@@ -469,22 +529,76 @@ declare interface OptimizationSplitChunksOptions {
469
529
  usedExports?: boolean;
470
530
  }
471
531
 
472
- export interface SwcImportOnDemandTransformCtx {
473
- source: string;
474
- name: string;
475
- }
476
-
477
- export type SwcImportOnDemandTransformFn = (
478
- ctx: SwcImportOnDemandTransformCtx
479
- ) => string | string[] | undefined | null | false;
480
-
481
- export type SwcImportOnDemandTransform = string | string[] | SwcImportOnDemandTransformFn;
482
-
483
- export interface SwcImportOnDemandConfig {
484
- transform: SwcImportOnDemandTransform;
485
- style?: boolean | string;
486
- }
532
+ export type MemberTransformer =
533
+ /** 帕斯卡拼写法(大驼峰): 所有单词的首字母大写,然后直接连接起来,单词之间没有连接符 */
534
+ | 'pascal_case'
535
+ /** 骆驼拼写法(小驼峰): 第一个单词的首字母小写, 后续所有单词的首字母大写,然后直接连接起来,单词之间没有连接符 */
536
+ | 'camel_case'
537
+ /** 连字符拼写法: 各个单词或缩写之间以`-`做间隔 */
538
+ | 'kebab_case'
539
+ /** 破折号式: 每个单词全小写或全大写,多单词使用`-`隔开 */
540
+ | 'dashed_case'
541
+ /** 蛇形命名: 每个单词全小写或全大写,多单词使用`_`隔开 */
542
+ | 'snake_case'
543
+ /** 大写 */
544
+ | 'upper_case'
545
+ /** 最后大写 */
546
+ | 'upper_first'
547
+ /** 小写 */
548
+ | 'lower_case'
549
+ /** 最后小写 */
550
+ | 'lower_first';
487
551
 
552
+ export type SwcImportOnDemandTransform = Record<
553
+ /** 库名 */
554
+ string,
555
+ {
556
+ /** 要使用的库名称,而不是导入语句中指定的库名称。`${member}` 是替换的成员
557
+ * @example
558
+ * ```javascript
559
+ * const conf = {
560
+ * importOnDemand: {
561
+ * 'neko-ui': {
562
+ * transform: 'neko-ui/es/${member}',
563
+ * memberTransformers: ['dashed_case']
564
+ * }
565
+ * }
566
+ * }
567
+ * // 以下代码将会按照预期进行转换
568
+ * import { Button } from 'neko-ui';
569
+ * // to
570
+ * import Button from 'neko-ui/es/button'
571
+ * ```
572
+ */
573
+ transform: string;
574
+ /** 默认值:`false`, 设置转换时需要单独导入的样式,`${member}` 是替换的成员
575
+ * @example
576
+ * ```javascript
577
+ * const conf = {
578
+ * importOnDemand: {
579
+ * antd: {
580
+ * transform: 'antd/es/${member}',
581
+ * style: 'antd/es/${member}/style',
582
+ * memberTransformers: ['dashed_case']
583
+ * }
584
+ * }
585
+ * }
586
+ * // 以下代码将会按照预期进行转换
587
+ * import { BackTop } from 'antd';
588
+ * // to
589
+ * import BackTop from 'antd/es/back-top';
590
+ * import 'antd/es/back-top/style';
591
+ * ```
592
+ */
593
+ style?: string | boolean;
594
+ /** 默认值:`false`, 当设置为true时,将保留 `import { Button }` 语法,而不是转换为 `import Button` */
595
+ skipDefaultConversion?: boolean;
596
+ /** 默认值:`true`, 当遇到会导致导入整个模块时,是否抛出 */
597
+ preventFullImport?: boolean;
598
+ /** 默认值:`[]`, 成员转换规则 */
599
+ memberTransformers?: MemberTransformer[];
600
+ }
601
+ >;
488
602
  declare global {
489
603
  // eslint-disable-next-line vars-on-top,no-var
490
604
  var NEKOCLICONFIG: CommomType;
@@ -1,2 +0,0 @@
1
- export declare let HASANTD: boolean;
2
- export declare const antdThemeVariables: {};
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,8 +0,0 @@
1
- import React from 'react';
2
- import { type RouterProps } from '../../router';
3
- interface AppRouterProps {
4
- router: RouterProps[];
5
- fallback?: React.ReactElement;
6
- }
7
- declare const _default: React.NamedExoticComponent<AppRouterProps>;
8
- export default _default;
@@ -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(pre.router,next.router)});
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) => isEqual(pre.router, next.router));\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,aAAStB,QAAQqB,IAAIlB,MAAM,CAAEmB,KAAKnB,MAAM,GAAG"}
@@ -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 +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,3 +0,0 @@
1
- import React from 'react';
2
- declare const _default: React.NamedExoticComponent<{}>;
3
- export default _default;
@@ -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{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 _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(_,nextTab){if(nextTab){navigate("".concat(nextTab.path,"?menuId=").concat(nextTab.key))}}}})},[dispatch,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 { 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 [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(_?: TabProps[], nextTab?: TabProps) {\n if (nextTab) {\n navigate(`${nextTab.path}?menuId=${nextTab.key}`);\n }\n },\n },\n });\n },\n [dispatch, 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","shallowEqual","useSelector","useDispatch","LayoutMenu","AppRouter","FallbackComp","router","useNavigate","styles","closeTabs","label","icon","style","transform","key","SiderLayout","dispatch","activeKey","store","appProgram","tabs","menuKV","navigate","search","getLanguage","collapsed","setCollapsed","handleCollapsed","value","_timer","window","setTimeout","clearTimeout","closedTab","tabKey","type","payload","callback","_","nextTab","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","item","TabPane","tab","overlay","items","onClick","info","domEvent","stopPropagation","destroyPopupOnHide","i18n","closable","Content","layoutContent","content","memo"],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- .tabs {
2
- margin: 16px 16px 0 !important;
3
- overflow: initial !important;
4
-
5
- > :global(.@{ant-prefix}-tabs-nav) {
6
- margin-bottom: 0 !important;
7
- }
8
- }
9
-
10
- .layout {
11
- width: 100% !important;
12
- min-height: 100vh !important;
13
- }
14
-
15
- .sider,
16
- .section {
17
- max-height: 100vh;
18
- }
19
-
20
- .layout-content {
21
- display: flex;
22
- flex-direction: column;
23
- margin: 0 16px;
24
- overflow-y: auto;
25
- }
26
-
27
- .content {
28
- flex: 1;
29
- padding: 24px;
30
- background: var(--component-card-bg, #fff);
31
- box-shadow: var(--box-shadow-lite);
32
- transition-timing-function: @transition-timing-function;
33
- transition-duration: @transition-duration;
34
- transition-property: background-color, box-shadow;
35
- }
36
-
37
- .logo {
38
- position: sticky;
39
- top: 0;
40
- z-index: 1;
41
- height: 68px;
42
- padding: 14px;
43
- overflow: hidden;
44
- color: #de4553;
45
- text-align: center;
46
- background-color: var(--sider-logo-bg, #fff) !important;
47
- border-color: var(--sider-logo-bg, #fff);
48
- border-right: 16px solid var(--sider-logo-bg, #fff);
49
- border-bottom: 1px solid var(--border-color);
50
- border-bottom-color: var(--border-color);
51
- border-left: 16px solid var(--sider-logo-bg, #fff);
52
- cursor: pointer;
53
- transition: border-color @transition-duration @transition-timing-function,
54
- background-color @transition-duration @transition-timing-function;
55
- user-select: none;
56
-
57
- > svg {
58
- height: 32px;
59
- opacity: 0;
60
- transition: opacity @transition-duration @transition-timing-function;
61
- }
62
-
63
- &::before {
64
- position: absolute;
65
- top: 0;
66
- bottom: 0;
67
- left: 0;
68
- display: block;
69
- width: 22px;
70
- height: 32px;
71
- margin: auto;
72
- background: url('@{favicon}') no-repeat center center / contain;
73
- opacity: 1;
74
- transition: opacity @transition-duration @transition-timing-function;
75
- content: '';
76
- }
77
- }
78
-
79
- :global(.@{ant-prefix}-layout-sider) {
80
- &:not(:global(.@{ant-prefix}-layout-sider-collapsed)) {
81
- .logo {
82
- > svg {
83
- opacity: 1;
84
- }
85
-
86
- &::before {
87
- opacity: 0;
88
- }
89
- }
90
- }
91
- }
@@ -1,24 +0,0 @@
1
- import { type ModelType } from 'mini-idc';
2
- import type { RouterProps } from '../../../router';
3
- export interface ItemTypes extends RouterProps {
4
- key: string;
5
- path?: string;
6
- type?: string;
7
- label?: string | null;
8
- children?: ItemTypes[];
9
- [key: string]: any;
10
- }
11
- export interface AppProgramModelType {
12
- menu: ItemTypes[];
13
- menuKV: Record<string, ItemTypes>;
14
- activeKey?: string;
15
- tabs: TabProps[];
16
- }
17
- export interface TabProps extends RouterProps {
18
- key: string;
19
- url?: string;
20
- path?: string;
21
- closable?: boolean;
22
- }
23
- declare const model: ModelType<AppProgramModelType>;
24
- export default model;