@vlian/framework 1.2.61 → 1.2.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/dist/analytics.umd.js +1 -1
  2. package/dist/components/index.cjs +1 -1
  3. package/dist/components/index.d.ts +0 -4
  4. package/dist/components/index.js +1 -1
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.js +1 -1
  8. package/dist/index.umd.js +31 -246
  9. package/dist/kernel/types.d.ts +46 -3
  10. package/dist/state.umd.js +1 -1
  11. package/package.json +21 -16
  12. package/dist/components/LocaleSwitch.cjs +0 -1
  13. package/dist/components/LocaleSwitch.d.ts +0 -21
  14. package/dist/components/LocaleSwitch.js +0 -1
  15. package/dist/components/ThemeSwitch.cjs +0 -1
  16. package/dist/components/ThemeSwitch.d.ts +0 -20
  17. package/dist/components/ThemeSwitch.js +0 -1
  18. package/dist/core/Test.cjs +0 -1
  19. package/dist/core/Test.d.ts +0 -5
  20. package/dist/core/Test.js +0 -1
  21. package/dist/core/app/AppContext.cjs +0 -1
  22. package/dist/core/app/AppContext.d.ts +0 -113
  23. package/dist/core/app/AppContext.js +0 -1
  24. package/dist/core/app/AppContext.types.cjs +0 -1
  25. package/dist/core/app/AppContext.types.d.ts +0 -146
  26. package/dist/core/app/AppContext.types.js +0 -1
  27. package/dist/core/app/BasicLayout.cjs +0 -1
  28. package/dist/core/app/BasicLayout.d.ts +0 -15
  29. package/dist/core/app/BasicLayout.js +0 -1
  30. package/dist/core/app/DefaultApp.cjs +0 -1
  31. package/dist/core/app/DefaultApp.d.ts +0 -10
  32. package/dist/core/app/DefaultApp.js +0 -1
  33. package/dist/core/app/index.cjs +0 -1
  34. package/dist/core/app/index.d.ts +0 -8
  35. package/dist/core/app/index.js +0 -1
  36. package/dist/core/config/AppConfig.cjs +0 -1
  37. package/dist/core/config/AppConfig.d.ts +0 -88
  38. package/dist/core/config/AppConfig.js +0 -1
  39. package/dist/core/config/ConfigLoader.cjs +0 -1
  40. package/dist/core/config/ConfigLoader.d.ts +0 -118
  41. package/dist/core/config/ConfigLoader.js +0 -1
  42. package/dist/core/config/ConfigValidator.cjs +0 -2
  43. package/dist/core/config/ConfigValidator.d.ts +0 -84
  44. package/dist/core/config/ConfigValidator.js +0 -2
  45. package/dist/core/config/index.cjs +0 -1
  46. package/dist/core/config/index.d.ts +0 -6
  47. package/dist/core/config/index.js +0 -1
  48. package/dist/core/dev/DevTools.cjs +0 -1
  49. package/dist/core/dev/DevTools.d.ts +0 -16
  50. package/dist/core/dev/DevTools.js +0 -1
  51. package/dist/core/error/ErrorBoundary.cjs +0 -1
  52. package/dist/core/error/ErrorBoundary.d.ts +0 -121
  53. package/dist/core/error/ErrorBoundary.js +0 -1
  54. package/dist/core/error/ErrorHandler.cjs +0 -1
  55. package/dist/core/error/ErrorHandler.d.ts +0 -171
  56. package/dist/core/error/ErrorHandler.js +0 -1
  57. package/dist/core/error/index.cjs +0 -1
  58. package/dist/core/error/index.d.ts +0 -7
  59. package/dist/core/error/index.js +0 -1
  60. package/dist/core/event/AppEventBus.cjs +0 -1
  61. package/dist/core/event/AppEventBus.d.ts +0 -178
  62. package/dist/core/event/AppEventBus.js +0 -1
  63. package/dist/core/event/frameworkEvents.cjs +0 -1
  64. package/dist/core/event/frameworkEvents.d.ts +0 -69
  65. package/dist/core/event/frameworkEvents.js +0 -1
  66. package/dist/core/event/hooks.cjs +0 -1
  67. package/dist/core/event/hooks.d.ts +0 -57
  68. package/dist/core/event/hooks.js +0 -1
  69. package/dist/core/event/index.cjs +0 -1
  70. package/dist/core/event/index.d.ts +0 -10
  71. package/dist/core/event/index.js +0 -1
  72. package/dist/core/event/types.cjs +0 -1
  73. package/dist/core/event/types.d.ts +0 -269
  74. package/dist/core/event/types.js +0 -1
  75. package/dist/core/event/useEventBus.cjs +0 -1
  76. package/dist/core/event/useEventBus.d.ts +0 -28
  77. package/dist/core/event/useEventBus.js +0 -1
  78. package/dist/core/index.cjs +0 -1
  79. package/dist/core/index.d.ts +0 -54
  80. package/dist/core/index.js +0 -1
  81. package/dist/core/initialization/InitializationErrorThrower.cjs +0 -1
  82. package/dist/core/initialization/InitializationErrorThrower.d.ts +0 -7
  83. package/dist/core/initialization/InitializationErrorThrower.js +0 -1
  84. package/dist/core/initialization/index.cjs +0 -1
  85. package/dist/core/initialization/index.d.ts +0 -7
  86. package/dist/core/initialization/index.js +0 -1
  87. package/dist/core/initialization/initialization.cjs +0 -1
  88. package/dist/core/initialization/initialization.d.ts +0 -69
  89. package/dist/core/initialization/initialization.js +0 -1
  90. package/dist/core/initialization/initializationErrorState.cjs +0 -1
  91. package/dist/core/initialization/initializationErrorState.d.ts +0 -35
  92. package/dist/core/initialization/initializationErrorState.js +0 -1
  93. package/dist/core/kernel/defaultAdapters.cjs +0 -1
  94. package/dist/core/kernel/defaultAdapters.d.ts +0 -2
  95. package/dist/core/kernel/defaultAdapters.js +0 -1
  96. package/dist/core/kernel/errors.cjs +0 -1
  97. package/dist/core/kernel/errors.d.ts +0 -18
  98. package/dist/core/kernel/errors.js +0 -1
  99. package/dist/core/kernel/index.cjs +0 -1
  100. package/dist/core/kernel/index.d.ts +0 -3
  101. package/dist/core/kernel/index.js +0 -1
  102. package/dist/core/kernel/startKernel.cjs +0 -1
  103. package/dist/core/kernel/startKernel.d.ts +0 -2
  104. package/dist/core/kernel/startKernel.js +0 -1
  105. package/dist/core/kernel/types.cjs +0 -1
  106. package/dist/core/kernel/types.d.ts +0 -114
  107. package/dist/core/kernel/types.js +0 -1
  108. package/dist/core/middleware.cjs +0 -1
  109. package/dist/core/middleware.d.ts +0 -36
  110. package/dist/core/middleware.js +0 -1
  111. package/dist/core/plugin/PluginEventBus.cjs +0 -1
  112. package/dist/core/plugin/PluginEventBus.d.ts +0 -169
  113. package/dist/core/plugin/PluginEventBus.js +0 -1
  114. package/dist/core/plugin/PluginSandbox.cjs +0 -1
  115. package/dist/core/plugin/PluginSandbox.d.ts +0 -101
  116. package/dist/core/plugin/PluginSandbox.js +0 -1
  117. package/dist/core/plugin.cjs +0 -1
  118. package/dist/core/plugin.d.ts +0 -224
  119. package/dist/core/plugin.js +0 -1
  120. package/dist/core/router/RouterManager.cjs +0 -1
  121. package/dist/core/router/RouterManager.d.ts +0 -87
  122. package/dist/core/router/RouterManager.js +0 -1
  123. package/dist/core/router/adapter/AdapterManager.cjs +0 -1
  124. package/dist/core/router/adapter/AdapterManager.d.ts +0 -94
  125. package/dist/core/router/adapter/AdapterManager.js +0 -1
  126. package/dist/core/router/adapter/index.cjs +0 -1
  127. package/dist/core/router/adapter/index.d.ts +0 -6
  128. package/dist/core/router/adapter/index.js +0 -1
  129. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +0 -1
  130. package/dist/core/router/adapter/react-router/ReactRouterAdapter.d.ts +0 -43
  131. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +0 -1
  132. package/dist/core/router/adapter/react-router/index.cjs +0 -1
  133. package/dist/core/router/adapter/react-router/index.d.ts +0 -4
  134. package/dist/core/router/adapter/react-router/index.js +0 -1
  135. package/dist/core/router/adapter/types.cjs +0 -1
  136. package/dist/core/router/adapter/types.d.ts +0 -111
  137. package/dist/core/router/adapter/types.js +0 -1
  138. package/dist/core/router/dev/RouterDevTools.cjs +0 -1
  139. package/dist/core/router/dev/RouterDevTools.d.ts +0 -5
  140. package/dist/core/router/dev/RouterDevTools.js +0 -1
  141. package/dist/core/router/dev/index.cjs +0 -1
  142. package/dist/core/router/dev/index.d.ts +0 -4
  143. package/dist/core/router/dev/index.js +0 -1
  144. package/dist/core/router/dynamic/DynamicRouteManager.cjs +0 -1
  145. package/dist/core/router/dynamic/DynamicRouteManager.d.ts +0 -71
  146. package/dist/core/router/dynamic/DynamicRouteManager.js +0 -1
  147. package/dist/core/router/dynamic/index.cjs +0 -1
  148. package/dist/core/router/dynamic/index.d.ts +0 -4
  149. package/dist/core/router/dynamic/index.js +0 -1
  150. package/dist/core/router/errors/RouterError.cjs +0 -1
  151. package/dist/core/router/errors/RouterError.d.ts +0 -48
  152. package/dist/core/router/errors/RouterError.js +0 -1
  153. package/dist/core/router/errors/index.cjs +0 -1
  154. package/dist/core/router/errors/index.d.ts +0 -4
  155. package/dist/core/router/errors/index.js +0 -1
  156. package/dist/core/router/index.cjs +0 -1
  157. package/dist/core/router/index.d.ts +0 -16
  158. package/dist/core/router/index.js +0 -1
  159. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +0 -1
  160. package/dist/core/router/lifecycle/RouterLifecycleManager.d.ts +0 -56
  161. package/dist/core/router/lifecycle/RouterLifecycleManager.js +0 -1
  162. package/dist/core/router/lifecycle/index.cjs +0 -1
  163. package/dist/core/router/lifecycle/index.d.ts +0 -4
  164. package/dist/core/router/lifecycle/index.js +0 -1
  165. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +0 -1
  166. package/dist/core/router/middleware/RouterMiddlewareManager.d.ts +0 -61
  167. package/dist/core/router/middleware/RouterMiddlewareManager.js +0 -1
  168. package/dist/core/router/middleware/auth.cjs +0 -1
  169. package/dist/core/router/middleware/auth.d.ts +0 -54
  170. package/dist/core/router/middleware/auth.js +0 -1
  171. package/dist/core/router/middleware/index.cjs +0 -1
  172. package/dist/core/router/middleware/index.d.ts +0 -6
  173. package/dist/core/router/middleware/index.js +0 -1
  174. package/dist/core/router/middleware/types.cjs +0 -1
  175. package/dist/core/router/middleware/types.d.ts +0 -82
  176. package/dist/core/router/middleware/types.js +0 -1
  177. package/dist/core/router/monitoring/RouterMonitoring.cjs +0 -1
  178. package/dist/core/router/monitoring/RouterMonitoring.d.ts +0 -134
  179. package/dist/core/router/monitoring/RouterMonitoring.js +0 -1
  180. package/dist/core/router/monitoring/index.cjs +0 -1
  181. package/dist/core/router/monitoring/index.d.ts +0 -4
  182. package/dist/core/router/monitoring/index.js +0 -1
  183. package/dist/core/router/navigation/RouterNavigation.cjs +0 -1
  184. package/dist/core/router/navigation/RouterNavigation.d.ts +0 -43
  185. package/dist/core/router/navigation/RouterNavigation.js +0 -1
  186. package/dist/core/router/navigation/index.cjs +0 -1
  187. package/dist/core/router/navigation/index.d.ts +0 -4
  188. package/dist/core/router/navigation/index.js +0 -1
  189. package/dist/core/router/performance/RouteCache.cjs +0 -1
  190. package/dist/core/router/performance/RouteCache.d.ts +0 -113
  191. package/dist/core/router/performance/RouteCache.js +0 -1
  192. package/dist/core/router/performance/RoutePreloader.cjs +0 -1
  193. package/dist/core/router/performance/RoutePreloader.d.ts +0 -111
  194. package/dist/core/router/performance/RoutePreloader.js +0 -1
  195. package/dist/core/router/performance/index.cjs +0 -1
  196. package/dist/core/router/performance/index.d.ts +0 -5
  197. package/dist/core/router/performance/index.js +0 -1
  198. package/dist/core/router/plugin/RouterPluginManager.cjs +0 -1
  199. package/dist/core/router/plugin/RouterPluginManager.d.ts +0 -74
  200. package/dist/core/router/plugin/RouterPluginManager.js +0 -1
  201. package/dist/core/router/plugin/index.cjs +0 -1
  202. package/dist/core/router/plugin/index.d.ts +0 -5
  203. package/dist/core/router/plugin/index.js +0 -1
  204. package/dist/core/router/plugin/types.cjs +0 -1
  205. package/dist/core/router/plugin/types.d.ts +0 -153
  206. package/dist/core/router/plugin/types.js +0 -1
  207. package/dist/core/router/types.cjs +0 -1
  208. package/dist/core/router/types.d.ts +0 -464
  209. package/dist/core/router/types.js +0 -1
  210. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +0 -1
  211. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.d.ts +0 -2
  212. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +0 -1
  213. package/dist/core/router/utils/adapters/react-router/transform.cjs +0 -1
  214. package/dist/core/router/utils/adapters/react-router/transform.d.ts +0 -5
  215. package/dist/core/router/utils/adapters/react-router/transform.js +0 -1
  216. package/dist/core/router/utils/transform.cjs +0 -1
  217. package/dist/core/router/utils/transform.d.ts +0 -348
  218. package/dist/core/router/utils/transform.js +0 -1
  219. package/dist/core/router/validation/RouterConfigValidator.cjs +0 -2
  220. package/dist/core/router/validation/RouterConfigValidator.d.ts +0 -121
  221. package/dist/core/router/validation/RouterConfigValidator.js +0 -2
  222. package/dist/core/router/validation/index.cjs +0 -1
  223. package/dist/core/router/validation/index.d.ts +0 -5
  224. package/dist/core/router/validation/index.js +0 -1
  225. package/dist/core/router/validation/schema.cjs +0 -1
  226. package/dist/core/router/validation/schema.d.ts +0 -180
  227. package/dist/core/router/validation/schema.js +0 -1
  228. package/dist/core/router/version/RouteVersionManager.cjs +0 -1
  229. package/dist/core/router/version/RouteVersionManager.d.ts +0 -124
  230. package/dist/core/router/version/RouteVersionManager.js +0 -1
  231. package/dist/core/router/version/index.cjs +0 -1
  232. package/dist/core/router/version/index.d.ts +0 -4
  233. package/dist/core/router/version/index.js +0 -1
  234. package/dist/core/splash/SplashScreen.cjs +0 -1
  235. package/dist/core/splash/SplashScreen.d.ts +0 -14
  236. package/dist/core/splash/SplashScreen.js +0 -1
  237. package/dist/core/splash/index.cjs +0 -1
  238. package/dist/core/splash/index.d.ts +0 -5
  239. package/dist/core/splash/index.js +0 -1
  240. package/dist/core/splash/splashScreenUtils.cjs +0 -1
  241. package/dist/core/splash/splashScreenUtils.d.ts +0 -7
  242. package/dist/core/splash/splashScreenUtils.js +0 -1
  243. package/dist/core/startup/AppInstance.cjs +0 -1
  244. package/dist/core/startup/AppInstance.d.ts +0 -138
  245. package/dist/core/startup/AppInstance.js +0 -1
  246. package/dist/core/startup/environment.cjs +0 -1
  247. package/dist/core/startup/environment.d.ts +0 -87
  248. package/dist/core/startup/environment.js +0 -1
  249. package/dist/core/startup/index.cjs +0 -1
  250. package/dist/core/startup/index.d.ts +0 -7
  251. package/dist/core/startup/index.js +0 -1
  252. package/dist/core/startup/initializeServices.cjs +0 -1
  253. package/dist/core/startup/initializeServices.d.ts +0 -68
  254. package/dist/core/startup/initializeServices.js +0 -1
  255. package/dist/core/startup/performanceTracker.cjs +0 -1
  256. package/dist/core/startup/performanceTracker.d.ts +0 -104
  257. package/dist/core/startup/performanceTracker.js +0 -1
  258. package/dist/core/startup/renderApp.cjs +0 -1
  259. package/dist/core/startup/renderApp.d.ts +0 -70
  260. package/dist/core/startup/renderApp.js +0 -1
  261. package/dist/core/startup/startApp.cjs +0 -1
  262. package/dist/core/startup/startApp.d.ts +0 -14
  263. package/dist/core/startup/startApp.js +0 -1
  264. package/dist/core/types.cjs +0 -1
  265. package/dist/core/types.d.ts +0 -501
  266. package/dist/core/types.js +0 -1
  267. package/dist/index.umd.cjs +0 -1
  268. package/dist/index.umd.d.ts +0 -7
@@ -1,8 +1,51 @@
1
1
  import type { LogLevel } from '@vlian/logger';
2
- import type { StartOptions as CoreStartOptions } from '../core/types';
3
2
  import type { StorageOptions } from '../types';
4
- import type { StorageInstance } from "@vlian/utils";
5
- import type { Resource } from "i18next";
3
+ import type { StorageInstance } from '@vlian/utils';
4
+ import type { Resource } from 'i18next';
5
+ /**
6
+ * 生命周期钩子函数类型
7
+ */
8
+ export type ManagerLifecycle = {
9
+ /**
10
+ * 初始化
11
+ */
12
+ initialization?: () => Promise<void> | void;
13
+ };
14
+ /**
15
+ * 启动配置选项
16
+ */
17
+ export interface CoreStartOptions {
18
+ /**
19
+ * 日志级别
20
+ */
21
+ loggerLevel?: LogLevel;
22
+ /**
23
+ * 生命周期钩子
24
+ */
25
+ lifecycle?: ManagerLifecycle;
26
+ /**
27
+ * 国际化
28
+ */
29
+ locale?: I18nSnapshot['resources'];
30
+ /**
31
+ * 存储配置
32
+ */
33
+ storageOptions?: StorageOptions;
34
+ /**
35
+ * 主题配置
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * start({
40
+ * theme: {
41
+ * mode: 'dark',
42
+ * primaryColor: '#1890ff',
43
+ * },
44
+ * });
45
+ * ```
46
+ */
47
+ theme?: Partial<ThemeSnapshot>;
48
+ }
6
49
  export type KernelInstanceId = string;
7
50
  export type KernelStorageDriver = 'localStorage' | 'sessionStorage' | 'indexedDB' | 'none';
8
51
  export interface ThemeSnapshot {
package/dist/state.umd.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @vlian/framework v1.2.60
2
+ * @vlian/framework v1.2.62
3
3
  * Secra Framework - 一个现代化的低代码框架
4
4
  * (c) 2026 Secra Framework Contributors
5
5
  * Licensed under Apache-2.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vlian/framework",
3
- "version": "1.2.61",
3
+ "version": "1.2.63",
4
4
  "private": false,
5
5
  "packageManager": "pnpm@10.27.0",
6
6
  "description": "Secra Framework - 一个现代化的低代码框架",
@@ -20,16 +20,6 @@
20
20
  "import": "./dist/lazy/index.js",
21
21
  "require": "./dist/lazy/index.cjs"
22
22
  },
23
- "./core": {
24
- "types": "./dist/core/index.d.ts",
25
- "import": "./dist/core/index.js",
26
- "require": "./dist/core/index.cjs"
27
- },
28
- "./core/*": {
29
- "types": "./dist/core/*.d.ts",
30
- "import": "./dist/core/*.js",
31
- "require": "./dist/core/*.cjs"
32
- },
33
23
  "./utils": {
34
24
  "types": "./dist/utils/index.d.ts",
35
25
  "import": "./dist/utils/index.js",
@@ -141,18 +131,32 @@
141
131
  }
142
132
  },
143
133
  "files": [
144
- "dist",
134
+ "dist/index.cjs",
135
+ "dist/index.d.ts",
136
+ "dist/index.js",
137
+ "dist/index.umd.js",
138
+ "dist/types.cjs",
139
+ "dist/types.d.ts",
140
+ "dist/types.js",
141
+ "dist/analytics",
142
+ "dist/analytics.umd.js",
143
+ "dist/components",
144
+ "dist/kernel",
145
+ "dist/library",
146
+ "dist/state",
147
+ "dist/state.umd.js",
148
+ "dist/utils",
145
149
  "README.md",
146
150
  "LICENSE"
147
151
  ],
148
152
  "scripts": {
149
- "build": "npm run build:types && npm run build:esm && npm run build:cjs && npm run build:umd",
153
+ "build": "npm run clean && npm run build:types && npm run build:esm && npm run build:cjs && npm run build:umd && npm run build:prune",
150
154
  "build:types": "tsc --emitDeclarationOnly --declarationMap false --sourceMap false",
151
- "build:esm": "swc src -d dist --strip-leading-paths --config-file .swcrc",
152
- "build:cjs": "swc src -d dist-temp --strip-leading-paths --config-file .swcrc.cjs && node scripts/rename-cjs.js && rm -rf dist-temp",
155
+ "build:esm": "swc src -d dist --strip-leading-paths --ignore src/core-bak/** --config-file .swcrc",
156
+ "build:cjs": "swc src -d dist-temp --strip-leading-paths --ignore src/core-bak/** --config-file .swcrc.cjs && node scripts/rename-cjs.js && rm -rf dist-temp",
153
157
  "build:swc": "npm run build:esm",
154
158
  "build:tsc": "tsc",
155
- "dev": "swc src -d dist --strip-leading-paths --watch",
159
+ "dev": "swc src -d dist --strip-leading-paths --ignore src/core-bak/** --watch",
156
160
  "dev:tsc": "tsc --watch",
157
161
  "clean": "rm -rf dist dist-temp",
158
162
  "prepublishOnly": "npm run build && npm version patch --no-git-tag-version",
@@ -167,6 +171,7 @@
167
171
  "build:umd:index": "UMD_TARGET=index rollup -c rollup.config.js",
168
172
  "build:umd:state": "UMD_TARGET=state rollup -c rollup.config.js",
169
173
  "build:umd:analytics": "UMD_TARGET=analytics rollup -c rollup.config.js",
174
+ "build:prune": "rm -rf dist/core dist/core-bak dist/*.umd.cjs dist/*.umd.d.ts",
170
175
  "docs:dev": "dumi dev",
171
176
  "docs:build": "dumi build",
172
177
  "docs:preview": "dumi preview"
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"LocaleSwitch",{enumerable:true,get:function(){return LocaleSwitch}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_default(require("react"));const _core=require("../core");const _persistence=require("./persistence");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const DEFAULT_LOCALE_STORAGE_KEY="vlian:locale";const DEFAULT_LOCALES=["zh-CN","en-US"];const DEFAULT_PERSISTENCE={enabled:true};const DEFAULT_LABELS={"zh-CN":"中文","en-US":"English"};function isLocale(value){return value==="zh-CN"||value==="en-US"}const LocaleSwitch=({locales=DEFAULT_LOCALES,labels=DEFAULT_LABELS,persistence,className,style,onChange,render})=>{const{locale,setLocale,isChanging}=(0,_core.useLocale)();const persistenceOptions=persistence||DEFAULT_PERSISTENCE;const hydratedRef=_react.default.useRef(false);const lastWrittenLocaleRef=_react.default.useRef(undefined);const mergedLabels=_react.default.useMemo(()=>({...DEFAULT_LABELS,...labels}),[labels]);_react.default.useEffect(()=>{if(hydratedRef.current){return}hydratedRef.current=true;const persistedLocale=(0,_persistence.readPersistedValue)(persistenceOptions,DEFAULT_LOCALE_STORAGE_KEY);if(!persistedLocale||!isLocale(persistedLocale)||!locales.includes(persistedLocale)){return}if(persistedLocale!==locale){setLocale(persistedLocale)}},[locale,locales,persistenceOptions,setLocale]);_react.default.useEffect(()=>{if(lastWrittenLocaleRef.current===locale){return}(0,_persistence.writePersistedValue)(locale,persistenceOptions,DEFAULT_LOCALE_STORAGE_KEY);lastWrittenLocaleRef.current=locale},[locale,persistenceOptions]);const handleSetLocale=_react.default.useCallback(nextLocale=>{if(nextLocale===locale){return}setLocale(nextLocale);onChange?.(nextLocale)},[locale,onChange,setLocale]);if(render){return render({locale,isChanging:Boolean(isChanging),setLocale:handleSetLocale,locales,labels:mergedLabels})}return(0,_jsxruntime.jsxs)("label",{className:className,style:style,children:[(0,_jsxruntime.jsx)("span",{style:{display:"none"},children:"Language Switch"}),(0,_jsxruntime.jsx)("select",{"aria-label":"Language Switch",value:locale,onChange:event=>handleSetLocale(event.target.value),disabled:Boolean(isChanging),children:locales.map(item=>(0,_jsxruntime.jsx)("option",{value:item,children:mergedLabels[item]},item))})]})};
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
- import type { CSSProperties, ReactNode } from 'react';
3
- import type { LangType } from '../library/locale/types';
4
- import { type PersistenceOptions } from './persistence';
5
- export interface LocaleSwitchRenderContext {
6
- locale: LangType;
7
- isChanging: boolean;
8
- setLocale: (locale: LangType) => void;
9
- locales: LangType[];
10
- labels: Record<LangType, string>;
11
- }
12
- export interface LocaleSwitchProps {
13
- locales?: LangType[];
14
- labels?: Partial<Record<LangType, string>>;
15
- persistence?: PersistenceOptions;
16
- className?: string;
17
- style?: CSSProperties;
18
- onChange?: (locale: LangType) => void;
19
- render?: (context: LocaleSwitchRenderContext) => ReactNode;
20
- }
21
- export declare const LocaleSwitch: React.FC<LocaleSwitchProps>;
@@ -1 +0,0 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import React from"react";import{useLocale}from"../core";import{readPersistedValue,writePersistedValue}from"./persistence";const DEFAULT_LOCALE_STORAGE_KEY="vlian:locale";const DEFAULT_LOCALES=["zh-CN","en-US"];const DEFAULT_PERSISTENCE={enabled:true};const DEFAULT_LABELS={"zh-CN":"中文","en-US":"English"};function isLocale(value){return value==="zh-CN"||value==="en-US"}export const LocaleSwitch=({locales=DEFAULT_LOCALES,labels=DEFAULT_LABELS,persistence,className,style,onChange,render})=>{const{locale,setLocale,isChanging}=useLocale();const persistenceOptions=persistence||DEFAULT_PERSISTENCE;const hydratedRef=React.useRef(false);const lastWrittenLocaleRef=React.useRef(undefined);const mergedLabels=React.useMemo(()=>({...DEFAULT_LABELS,...labels}),[labels]);React.useEffect(()=>{if(hydratedRef.current){return}hydratedRef.current=true;const persistedLocale=readPersistedValue(persistenceOptions,DEFAULT_LOCALE_STORAGE_KEY);if(!persistedLocale||!isLocale(persistedLocale)||!locales.includes(persistedLocale)){return}if(persistedLocale!==locale){setLocale(persistedLocale)}},[locale,locales,persistenceOptions,setLocale]);React.useEffect(()=>{if(lastWrittenLocaleRef.current===locale){return}writePersistedValue(locale,persistenceOptions,DEFAULT_LOCALE_STORAGE_KEY);lastWrittenLocaleRef.current=locale},[locale,persistenceOptions]);const handleSetLocale=React.useCallback(nextLocale=>{if(nextLocale===locale){return}setLocale(nextLocale);onChange?.(nextLocale)},[locale,onChange,setLocale]);if(render){return render({locale,isChanging:Boolean(isChanging),setLocale:handleSetLocale,locales,labels:mergedLabels})}return _jsxs("label",{className:className,style:style,children:[_jsx("span",{style:{display:"none"},children:"Language Switch"}),_jsx("select",{"aria-label":"Language Switch",value:locale,onChange:event=>handleSetLocale(event.target.value),disabled:Boolean(isChanging),children:locales.map(item=>_jsx("option",{value:item,children:mergedLabels[item]},item))})]})};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ThemeSwitch",{enumerable:true,get:function(){return ThemeSwitch}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_default(require("react"));const _core=require("../core");const _persistence=require("./persistence");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const DEFAULT_THEME_STORAGE_KEY="vlian:theme-mode";const DEFAULT_MODES=["light","dark","system"];const DEFAULT_PERSISTENCE={enabled:true};const DEFAULT_LABELS={light:"浅色",dark:"深色",system:"跟随系统"};function isThemeMode(value){return value==="light"||value==="dark"||value==="system"}const ThemeSwitch=({modes=DEFAULT_MODES,labels=DEFAULT_LABELS,persistence,className,style,onChange,render})=>{const{theme,setTheme}=(0,_core.useTheme)();const persistenceOptions=persistence||DEFAULT_PERSISTENCE;const hydratedRef=_react.default.useRef(false);const lastWrittenModeRef=_react.default.useRef(undefined);const mergedLabels=_react.default.useMemo(()=>({...DEFAULT_LABELS,...labels}),[labels]);_react.default.useEffect(()=>{if(hydratedRef.current){return}hydratedRef.current=true;const persistedMode=(0,_persistence.readPersistedValue)(persistenceOptions,DEFAULT_THEME_STORAGE_KEY);if(!persistedMode||!isThemeMode(persistedMode)||!modes.includes(persistedMode)){return}if(persistedMode!==theme.mode){setTheme(prev=>({...prev,mode:persistedMode}))}},[modes,persistenceOptions,setTheme,theme.mode]);_react.default.useEffect(()=>{const mode=theme.mode;if(!mode||lastWrittenModeRef.current===mode){return}(0,_persistence.writePersistedValue)(mode,persistenceOptions,DEFAULT_THEME_STORAGE_KEY);lastWrittenModeRef.current=mode},[persistenceOptions,theme.mode]);const currentMode=theme.mode||"light";const setMode=_react.default.useCallback(mode=>{if(mode===currentMode){return}setTheme(prev=>({...prev,mode}));onChange?.(mode)},[currentMode,onChange,setTheme]);if(render){return render({mode:currentMode,setMode,modes,labels:mergedLabels})}return(0,_jsxruntime.jsx)("div",{className:className,style:style,role:"group","aria-label":"Theme Switch",children:modes.map(mode=>(0,_jsxruntime.jsx)("button",{type:"button",onClick:()=>setMode(mode),"aria-pressed":currentMode===mode,children:mergedLabels[mode]},mode))})};
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- import type { CSSProperties, ReactNode } from 'react';
3
- import type { ThemeMode } from '../core/kernel';
4
- import { type PersistenceOptions } from './persistence';
5
- export interface ThemeSwitchRenderContext {
6
- mode: ThemeMode;
7
- setMode: (mode: ThemeMode) => void;
8
- modes: ThemeMode[];
9
- labels: Record<ThemeMode, string>;
10
- }
11
- export interface ThemeSwitchProps {
12
- modes?: ThemeMode[];
13
- labels?: Partial<Record<ThemeMode, string>>;
14
- persistence?: PersistenceOptions;
15
- className?: string;
16
- style?: CSSProperties;
17
- onChange?: (mode: ThemeMode) => void;
18
- render?: (context: ThemeSwitchRenderContext) => ReactNode;
19
- }
20
- export declare const ThemeSwitch: React.FC<ThemeSwitchProps>;
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import React from"react";import{useTheme}from"../core";import{readPersistedValue,writePersistedValue}from"./persistence";const DEFAULT_THEME_STORAGE_KEY="vlian:theme-mode";const DEFAULT_MODES=["light","dark","system"];const DEFAULT_PERSISTENCE={enabled:true};const DEFAULT_LABELS={light:"浅色",dark:"深色",system:"跟随系统"};function isThemeMode(value){return value==="light"||value==="dark"||value==="system"}export const ThemeSwitch=({modes=DEFAULT_MODES,labels=DEFAULT_LABELS,persistence,className,style,onChange,render})=>{const{theme,setTheme}=useTheme();const persistenceOptions=persistence||DEFAULT_PERSISTENCE;const hydratedRef=React.useRef(false);const lastWrittenModeRef=React.useRef(undefined);const mergedLabels=React.useMemo(()=>({...DEFAULT_LABELS,...labels}),[labels]);React.useEffect(()=>{if(hydratedRef.current){return}hydratedRef.current=true;const persistedMode=readPersistedValue(persistenceOptions,DEFAULT_THEME_STORAGE_KEY);if(!persistedMode||!isThemeMode(persistedMode)||!modes.includes(persistedMode)){return}if(persistedMode!==theme.mode){setTheme(prev=>({...prev,mode:persistedMode}))}},[modes,persistenceOptions,setTheme,theme.mode]);React.useEffect(()=>{const mode=theme.mode;if(!mode||lastWrittenModeRef.current===mode){return}writePersistedValue(mode,persistenceOptions,DEFAULT_THEME_STORAGE_KEY);lastWrittenModeRef.current=mode},[persistenceOptions,theme.mode]);const currentMode=theme.mode||"light";const setMode=React.useCallback(mode=>{if(mode===currentMode){return}setTheme(prev=>({...prev,mode}));onChange?.(mode)},[currentMode,onChange,setTheme]);if(render){return render({mode:currentMode,setMode,modes,labels:mergedLabels})}return _jsx("div",{className:className,style:style,role:"group","aria-label":"Theme Switch",children:modes.map(mode=>_jsx("button",{type:"button",onClick:()=>setMode(mode),"aria-pressed":currentMode===mode,children:mergedLabels[mode]},mode))})};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_wildcard(require("react"));const _logger=require("@vlian/logger");function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}const App=({onComplete})=>{(0,_react.useEffect)(()=>{_logger.logger.info("App mounted");onComplete()},[]);return(0,_jsxruntime.jsx)("div",{children:"App"})};const _default=App;
@@ -1,5 +0,0 @@
1
- import React from "react";
2
- declare const App: React.FC<{
3
- onComplete: () => void;
4
- }>;
5
- export default App;
package/dist/core/Test.js DELETED
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import React,{useEffect}from"react";import{logger}from"@vlian/logger";const App=({onComplete})=>{useEffect(()=>{logger.info("App mounted");onComplete()},[]);return _jsx("div",{children:"App"})};export default App;
@@ -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:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get AppContextProvider(){return AppContextProvider},get useAppContext(){return useAppContext},get useConfig(){return useConfig},get useLocale(){return useLocale},get useStateManager(){return useStateManager},get useTheme(){return useTheme}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_wildcard(require("react"));const _library=require("../../library");const _AppConfig=require("../config/AppConfig");function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}const ThemeContext=(0,_react.createContext)(undefined);const LocaleContext=(0,_react.createContext)(undefined);const ConfigContext=(0,_react.createContext)(undefined);const StateManagerContext=(0,_react.createContext)(undefined);const ThemeProvider=_react.default.memo(({children,initialTheme})=>{const[theme,setThemeState]=(0,_react.useState)(initialTheme||_AppConfig.appConfig.getTheme());const applyDocumentThemeClass=(0,_react.useCallback)(mode=>{if(typeof window==="undefined"){return}const html=document.documentElement;html.classList.remove("light","dark");const resolvedMode=mode==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":mode||"light";html.classList.add(resolvedMode)},[]);(0,_react.useEffect)(()=>{_AppConfig.appConfig.setTheme(theme)},[theme]);(0,_react.useEffect)(()=>{if(typeof window==="undefined"){return}applyDocumentThemeClass(theme.mode);if(theme.mode!=="system"){return}const mediaQuery=window.matchMedia("(prefers-color-scheme: dark)");const onSystemThemeChange=()=>applyDocumentThemeClass("system");if(typeof mediaQuery.addEventListener==="function"){mediaQuery.addEventListener("change",onSystemThemeChange);return()=>mediaQuery.removeEventListener("change",onSystemThemeChange)}mediaQuery.addListener(onSystemThemeChange);return()=>mediaQuery.removeListener(onSystemThemeChange)},[applyDocumentThemeClass,theme.mode]);const setTheme=(0,_react.useCallback)(newTheme=>{setThemeState(prev=>{return typeof newTheme==="function"?newTheme(prev):newTheme})},[]);const value=(0,_react.useMemo)(()=>({theme,setTheme}),[theme,setTheme]);return(0,_jsxruntime.jsx)(ThemeContext.Provider,{value:value,children:children})});ThemeProvider.displayName="ThemeProvider";const LocaleProvider=_react.default.memo(({children,initialLocale})=>{const[locale,setLocaleState]=(0,_react.useState)(initialLocale||_AppConfig.appConfig.getLocale());const[isChanging,setIsChanging]=(0,_react.useState)(false);(0,_react.useEffect)(()=>{_AppConfig.appConfig.setLocale(locale)},[locale]);const setLocale=(0,_react.useCallback)(newLocale=>{if(newLocale===locale){return}setIsChanging(true);setLocaleState(newLocale);(0,_library.setLang)(newLocale);requestAnimationFrame(()=>{setIsChanging(false)})},[locale]);const value=(0,_react.useMemo)(()=>({locale,setLocale,isChanging}),[locale,setLocale,isChanging]);return(0,_jsxruntime.jsx)(LocaleContext.Provider,{value:value,children:children})});LocaleProvider.displayName="LocaleProvider";const AppConfigProvider=_react.default.memo(({children,initialAntdConfig,initialInitializationContext})=>{const[antdConfig,setAntdConfigState]=(0,_react.useState)(initialAntdConfig||_AppConfig.appConfig.getAntdConfig());const[initializationContext,setInitializationContextState]=(0,_react.useState)(initialInitializationContext||_AppConfig.appConfig.getInitializationContext());(0,_react.useEffect)(()=>{_AppConfig.appConfig.setAntdConfig(antdConfig)},[antdConfig]);(0,_react.useEffect)(()=>{_AppConfig.appConfig.setInitializationContext(initializationContext)},[initializationContext]);const setAntdConfig=(0,_react.useCallback)(config=>{setAntdConfigState(config)},[]);const setInitializationContext=(0,_react.useCallback)(context=>{setInitializationContextState(context)},[]);const value=(0,_react.useMemo)(()=>({antdConfig,initializationContext,setAntdConfig,setInitializationContext}),[antdConfig,initializationContext,setAntdConfig,setInitializationContext]);return(0,_jsxruntime.jsx)(ConfigContext.Provider,{value:value,children:children})});AppConfigProvider.displayName="AppConfigProvider";const StateManagerProvider=_react.default.memo(({children,stateManager})=>{const value=(0,_react.useMemo)(()=>({stateManager:stateManager??null}),[stateManager]);return(0,_jsxruntime.jsx)(StateManagerContext.Provider,{value:value,children:children})});StateManagerProvider.displayName="StateManagerProvider";const AppContextProvider=({children,initialTheme,initialLocale,initialAntdConfig,initialInitializationContext,stateManager,antdApp:_antdApp,uiApp:_uiApp})=>{const initializedRef=_react.default.useRef(false);_react.default.useEffect(()=>{if(!initializedRef.current){_AppConfig.appConfig.initialize({theme:initialTheme,locale:initialLocale,antdConfig:initialAntdConfig,initializationContext:initialInitializationContext});initializedRef.current=true}},[initialTheme,initialLocale,initialAntdConfig,initialInitializationContext]);return(0,_jsxruntime.jsx)(ThemeProvider,{initialTheme:initialTheme,children:(0,_jsxruntime.jsx)(LocaleProvider,{initialLocale:initialLocale,children:(0,_jsxruntime.jsx)(AppConfigProvider,{initialAntdConfig:initialAntdConfig,initialInitializationContext:initialInitializationContext,children:(0,_jsxruntime.jsx)(StateManagerProvider,{stateManager:stateManager,children:children})})})})};const useTheme=()=>{const context=(0,_react.useContext)(ThemeContext);if(context===undefined){throw new Error("useTheme 必须在 AppContextProvider 内使用")}return context};const useLocale=()=>{const context=(0,_react.useContext)(LocaleContext);if(context===undefined){throw new Error("useLocale 必须在 AppContextProvider 内使用")}return context};const useConfig=()=>{const context=(0,_react.useContext)(ConfigContext);if(context===undefined){throw new Error("useConfig 必须在 AppContextProvider 内使用")}return context};const useStateManager=()=>{const context=(0,_react.useContext)(StateManagerContext);if(context===undefined){throw new Error("useStateManager 必须在 AppContextProvider 内使用")}return context.stateManager};const useAppContext=()=>{const themeContext=useTheme();const localeContext=useLocale();const configContext=useConfig();const stateManagerContext=useStateManager();return(0,_react.useMemo)(()=>({theme:themeContext.theme,locale:localeContext.locale,antdConfig:configContext.antdConfig,initializationContext:configContext.initializationContext,stateManager:stateManagerContext,setTheme:themeContext.setTheme,setLocale:localeContext.setLocale,setAntdConfig:configContext.setAntdConfig,setInitializationContext:configContext.setInitializationContext}),[themeContext.theme,localeContext.locale,configContext.antdConfig,configContext.initializationContext,stateManagerContext,themeContext.setTheme,localeContext.setLocale,configContext.setAntdConfig,configContext.setInitializationContext])};
@@ -1,113 +0,0 @@
1
- import React from 'react';
2
- import type { PropsWithChildren } from 'react';
3
- import type { LangType } from '../../library/locale/types';
4
- import type { InitializationContext } from '../initialization';
5
- import type { ThemeContextValue, LocaleContextValue, ConfigContextValue, AppContextValue, ThemeConfig } from './AppContext.types';
6
- import type { StateManager } from '../../state';
7
- import type { UIAppConfig, UIProviderConfig } from '../types';
8
- /**
9
- * 应用上下文 Provider 属性
10
- */
11
- export interface AppContextProviderProps extends PropsWithChildren {
12
- /**
13
- * 初始主题配置
14
- */
15
- initialTheme?: ThemeConfig;
16
- /**
17
- * 初始国际化语言
18
- */
19
- initialLocale?: LangType;
20
- /**
21
- * 初始 Ant Design 配置
22
- */
23
- initialAntdConfig?: UIProviderConfig;
24
- /**
25
- * 初始初始化上下文
26
- */
27
- initialInitializationContext?: InitializationContext;
28
- /**
29
- * 状态管理器实例
30
- */
31
- stateManager?: StateManager | null;
32
- /**
33
- * UI App 基础配置
34
- *
35
- * 用于传递 UI 适配层的应用级配置(如消息、通知、弹窗容器)。
36
- */
37
- antdApp?: UIAppConfig;
38
- /**
39
- * UI App 配置(无框架绑定)
40
- */
41
- uiApp?: UIAppConfig;
42
- }
43
- export declare const AppContextProvider: React.FC<AppContextProviderProps>;
44
- /**
45
- * 使用主题上下文 Hook
46
- *
47
- * @returns 主题上下文值
48
- * @throws 如果不在 ThemeProvider 内使用会抛出错误
49
- *
50
- * @example
51
- * ```tsx
52
- * const { theme, setTheme } = useTheme();
53
- *
54
- * // 切换主题
55
- * setTheme({ mode: 'dark' });
56
- * ```
57
- */
58
- export declare const useTheme: () => ThemeContextValue;
59
- /**
60
- * 使用国际化上下文 Hook
61
- *
62
- * @returns 国际化上下文值
63
- * @throws 如果不在 LocaleProvider 内使用会抛出错误
64
- *
65
- * @example
66
- * ```tsx
67
- * const { locale, setLocale } = useLocale();
68
- *
69
- * // 切换语言
70
- * setLocale('en-US');
71
- * ```
72
- */
73
- export declare const useLocale: () => LocaleContextValue;
74
- /**
75
- * 使用配置上下文 Hook
76
- *
77
- * @returns 配置上下文值
78
- * @throws 如果不在 ConfigProvider 内使用会抛出错误
79
- */
80
- export declare const useConfig: () => ConfigContextValue;
81
- /**
82
- * 使用应用上下文 Hook(聚合所有上下文)
83
- *
84
- * @returns 应用上下文值
85
- * @throws 如果不在 AppContextProvider 内使用会抛出错误
86
- *
87
- * @example
88
- * ```tsx
89
- * const { theme, setTheme, locale, setLocale, antdConfig } = useAppContext();
90
- *
91
- * // 切换主题
92
- * setTheme({ mode: 'dark' });
93
- *
94
- * // 切换语言
95
- * setLocale('en-US');
96
- * ```
97
- */
98
- /**
99
- * 使用状态管理器 Hook
100
- *
101
- * @returns 状态管理器实例
102
- * @throws 如果不在 AppContextProvider 内使用会抛出错误
103
- *
104
- * @example
105
- * ```tsx
106
- * const stateManager = useStateManager();
107
- *
108
- * // 创建状态实例
109
- * const countState = stateManager?.createState(0);
110
- * ```
111
- */
112
- export declare const useStateManager: () => StateManager | null;
113
- export declare const useAppContext: () => AppContextValue;
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import React,{createContext,useContext,useState,useCallback,useMemo,useEffect}from"react";import{setLang}from"../../library";import{appConfig}from"../config/AppConfig";const ThemeContext=createContext(undefined);const LocaleContext=createContext(undefined);const ConfigContext=createContext(undefined);const StateManagerContext=createContext(undefined);const ThemeProvider=React.memo(({children,initialTheme})=>{const[theme,setThemeState]=useState(initialTheme||appConfig.getTheme());const applyDocumentThemeClass=useCallback(mode=>{if(typeof window==="undefined"){return}const html=document.documentElement;html.classList.remove("light","dark");const resolvedMode=mode==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":mode||"light";html.classList.add(resolvedMode)},[]);useEffect(()=>{appConfig.setTheme(theme)},[theme]);useEffect(()=>{if(typeof window==="undefined"){return}applyDocumentThemeClass(theme.mode);if(theme.mode!=="system"){return}const mediaQuery=window.matchMedia("(prefers-color-scheme: dark)");const onSystemThemeChange=()=>applyDocumentThemeClass("system");if(typeof mediaQuery.addEventListener==="function"){mediaQuery.addEventListener("change",onSystemThemeChange);return()=>mediaQuery.removeEventListener("change",onSystemThemeChange)}mediaQuery.addListener(onSystemThemeChange);return()=>mediaQuery.removeListener(onSystemThemeChange)},[applyDocumentThemeClass,theme.mode]);const setTheme=useCallback(newTheme=>{setThemeState(prev=>{return typeof newTheme==="function"?newTheme(prev):newTheme})},[]);const value=useMemo(()=>({theme,setTheme}),[theme,setTheme]);return _jsx(ThemeContext.Provider,{value:value,children:children})});ThemeProvider.displayName="ThemeProvider";const LocaleProvider=React.memo(({children,initialLocale})=>{const[locale,setLocaleState]=useState(initialLocale||appConfig.getLocale());const[isChanging,setIsChanging]=useState(false);useEffect(()=>{appConfig.setLocale(locale)},[locale]);const setLocale=useCallback(newLocale=>{if(newLocale===locale){return}setIsChanging(true);setLocaleState(newLocale);setLang(newLocale);requestAnimationFrame(()=>{setIsChanging(false)})},[locale]);const value=useMemo(()=>({locale,setLocale,isChanging}),[locale,setLocale,isChanging]);return _jsx(LocaleContext.Provider,{value:value,children:children})});LocaleProvider.displayName="LocaleProvider";const AppConfigProvider=React.memo(({children,initialAntdConfig,initialInitializationContext})=>{const[antdConfig,setAntdConfigState]=useState(initialAntdConfig||appConfig.getAntdConfig());const[initializationContext,setInitializationContextState]=useState(initialInitializationContext||appConfig.getInitializationContext());useEffect(()=>{appConfig.setAntdConfig(antdConfig)},[antdConfig]);useEffect(()=>{appConfig.setInitializationContext(initializationContext)},[initializationContext]);const setAntdConfig=useCallback(config=>{setAntdConfigState(config)},[]);const setInitializationContext=useCallback(context=>{setInitializationContextState(context)},[]);const value=useMemo(()=>({antdConfig,initializationContext,setAntdConfig,setInitializationContext}),[antdConfig,initializationContext,setAntdConfig,setInitializationContext]);return _jsx(ConfigContext.Provider,{value:value,children:children})});AppConfigProvider.displayName="AppConfigProvider";const StateManagerProvider=React.memo(({children,stateManager})=>{const value=useMemo(()=>({stateManager:stateManager??null}),[stateManager]);return _jsx(StateManagerContext.Provider,{value:value,children:children})});StateManagerProvider.displayName="StateManagerProvider";export const AppContextProvider=({children,initialTheme,initialLocale,initialAntdConfig,initialInitializationContext,stateManager,antdApp:_antdApp,uiApp:_uiApp})=>{const initializedRef=React.useRef(false);React.useEffect(()=>{if(!initializedRef.current){appConfig.initialize({theme:initialTheme,locale:initialLocale,antdConfig:initialAntdConfig,initializationContext:initialInitializationContext});initializedRef.current=true}},[initialTheme,initialLocale,initialAntdConfig,initialInitializationContext]);return _jsx(ThemeProvider,{initialTheme:initialTheme,children:_jsx(LocaleProvider,{initialLocale:initialLocale,children:_jsx(AppConfigProvider,{initialAntdConfig:initialAntdConfig,initialInitializationContext:initialInitializationContext,children:_jsx(StateManagerProvider,{stateManager:stateManager,children:children})})})})};export const useTheme=()=>{const context=useContext(ThemeContext);if(context===undefined){throw new Error("useTheme 必须在 AppContextProvider 内使用")}return context};export const useLocale=()=>{const context=useContext(LocaleContext);if(context===undefined){throw new Error("useLocale 必须在 AppContextProvider 内使用")}return context};export const useConfig=()=>{const context=useContext(ConfigContext);if(context===undefined){throw new Error("useConfig 必须在 AppContextProvider 内使用")}return context};export const useStateManager=()=>{const context=useContext(StateManagerContext);if(context===undefined){throw new Error("useStateManager 必须在 AppContextProvider 内使用")}return context.stateManager};export const useAppContext=()=>{const themeContext=useTheme();const localeContext=useLocale();const configContext=useConfig();const stateManagerContext=useStateManager();return useMemo(()=>({theme:themeContext.theme,locale:localeContext.locale,antdConfig:configContext.antdConfig,initializationContext:configContext.initializationContext,stateManager:stateManagerContext,setTheme:themeContext.setTheme,setLocale:localeContext.setLocale,setAntdConfig:configContext.setAntdConfig,setInitializationContext:configContext.setInitializationContext}),[themeContext.theme,localeContext.locale,configContext.antdConfig,configContext.initializationContext,stateManagerContext,themeContext.setTheme,localeContext.setLocale,configContext.setAntdConfig,configContext.setInitializationContext])};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});
@@ -1,146 +0,0 @@
1
- import type { LangType } from '../../library/locale/types';
2
- import type { InitializationContext } from '../initialization';
3
- import type { StateManager } from '../../state';
4
- import type { UIProviderConfig } from '../types';
5
- /**
6
- * 主题配置
7
- */
8
- export interface ThemeConfig {
9
- /**
10
- * 主题模式:'light' | 'dark' | 'system'
11
- * - 'light': 浅色主题
12
- * - 'dark': 深色主题
13
- * - 'system': 跟随系统设置
14
- */
15
- mode?: 'light' | 'dark' | 'system';
16
- /**
17
- * 主题色(主色调)
18
- */
19
- primaryColor?: string;
20
- /**
21
- * 自定义主题配置
22
- */
23
- custom?: Record<string, unknown>;
24
- }
25
- /**
26
- * 应用配置接口
27
- */
28
- export interface AppConfig {
29
- /**
30
- * 主题配置
31
- */
32
- theme: ThemeConfig;
33
- /**
34
- * 国际化语言
35
- */
36
- locale: LangType;
37
- /**
38
- * Ant Design 配置
39
- */
40
- antdConfig?: UIProviderConfig;
41
- /**
42
- * 初始化上下文
43
- */
44
- initializationContext?: InitializationContext;
45
- }
46
- /**
47
- * 主题上下文值
48
- */
49
- export interface ThemeContextValue {
50
- /**
51
- * 主题配置
52
- */
53
- theme: ThemeConfig;
54
- /**
55
- * 更新主题
56
- */
57
- setTheme: (theme: ThemeConfig | ((prev: ThemeConfig) => ThemeConfig)) => void;
58
- }
59
- /**
60
- * 国际化上下文值
61
- */
62
- export interface LocaleContextValue {
63
- /**
64
- * 当前语言
65
- */
66
- locale: LangType;
67
- /**
68
- * 更新语言
69
- */
70
- setLocale: (locale: LangType) => void;
71
- /**
72
- * 是否正在切换语言
73
- */
74
- isChanging?: boolean;
75
- }
76
- /**
77
- * 配置上下文值
78
- */
79
- export interface ConfigContextValue {
80
- /**
81
- * Ant Design 配置
82
- */
83
- antdConfig?: UIProviderConfig;
84
- /**
85
- * 初始化上下文
86
- */
87
- initializationContext?: InitializationContext;
88
- /**
89
- * 更新 Ant Design 配置
90
- */
91
- setAntdConfig: (config: UIProviderConfig | undefined) => void;
92
- /**
93
- * 更新初始化上下文
94
- */
95
- setInitializationContext: (context: InitializationContext | undefined) => void;
96
- }
97
- /**
98
- * 状态管理器上下文值
99
- */
100
- export interface StateManagerContextValue {
101
- /**
102
- * 状态管理器实例
103
- */
104
- stateManager: StateManager | null;
105
- }
106
- /**
107
- * 应用全局上下文值(聚合所有上下文)
108
- */
109
- export interface AppContextValue {
110
- /**
111
- * 主题配置
112
- */
113
- theme: ThemeConfig;
114
- /**
115
- * 国际化语言
116
- */
117
- locale: LangType;
118
- /**
119
- * Ant Design 配置
120
- */
121
- antdConfig?: UIProviderConfig;
122
- /**
123
- * 初始化上下文
124
- */
125
- initializationContext?: InitializationContext;
126
- /**
127
- * 状态管理器实例
128
- */
129
- stateManager: StateManager | null;
130
- /**
131
- * 更新主题
132
- */
133
- setTheme: (theme: ThemeConfig | ((prev: ThemeConfig) => ThemeConfig)) => void;
134
- /**
135
- * 更新国际化语言
136
- */
137
- setLocale: (locale: LangType) => void;
138
- /**
139
- * 更新 Ant Design 配置
140
- */
141
- setAntdConfig: (config: UIProviderConfig | undefined) => void;
142
- /**
143
- * 更新初始化上下文
144
- */
145
- setInitializationContext: (context: InitializationContext | undefined) => void;
146
- }
@@ -1 +0,0 @@
1
- export{};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"BasicLayout",{enumerable:true,get:function(){return BasicLayout}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_wildcard(require("react"));const _AppContext=require("./AppContext");function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}const BasicLayout=(0,_react.memo)(({children,configProps:externalConfigProps,globalProvider})=>{const{antdConfig,theme}=(0,_AppContext.useAppContext)();const[isSystemDark,setIsSystemDark]=_react.default.useState(()=>{if(typeof window==="undefined"){return false}return window.matchMedia("(prefers-color-scheme: dark)").matches});const finalConfigProps=antdConfig||externalConfigProps;_react.default.useEffect(()=>{if(typeof window==="undefined"){return}const mediaQuery=window.matchMedia("(prefers-color-scheme: dark)");const updateSystemTheme=event=>{setIsSystemDark(event.matches)};setIsSystemDark(mediaQuery.matches);if(typeof mediaQuery.addEventListener==="function"){mediaQuery.addEventListener("change",updateSystemTheme);return()=>mediaQuery.removeEventListener("change",updateSystemTheme)}mediaQuery.addListener(updateSystemTheme);return()=>mediaQuery.removeListener(updateSystemTheme)},[]);const resolvedMode=theme.mode==="system"?isSystemDark?"dark":"light":theme.mode;const cssVars=_react.default.useMemo(()=>{const vars={};if(theme.primaryColor){vars["--app-primary-color"]=theme.primaryColor}if(finalConfigProps&&typeof finalConfigProps==="object"){const cssVariables=finalConfigProps.cssVariables;if(cssVariables&&typeof cssVariables==="object"){Object.entries(cssVariables).forEach(([key,value])=>{vars[`--${key}`]=String(value)})}}return vars},[finalConfigProps,theme.primaryColor]);const GlobalProvider=_react.default.useMemo(()=>globalProvider?_react.default.lazy(globalProvider):null,[globalProvider]);const renderedContent=_react.default.useMemo(()=>{if(!GlobalProvider){return children}return(0,_jsxruntime.jsx)(_react.default.Suspense,{fallback:null,children:(0,_jsxruntime.jsx)(GlobalProvider,{children:children})})},[GlobalProvider,children]);return(0,_jsxruntime.jsx)("div",{"data-theme-mode":resolvedMode,style:cssVars,children:renderedContent})});BasicLayout.displayName="BasicLayout";
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import type { PropsWithChildren } from 'react';
3
- import type { GlobalProviderLoader, UIProviderConfig } from '../types';
4
- interface BasicLayoutProps {
5
- /**
6
- * 外部传入 UI provider 配置(向后兼容沿用 configProps 命名)
7
- */
8
- configProps?: UIProviderConfig;
9
- /**
10
- * 全局 UI 包裹组件懒加载器
11
- */
12
- globalProvider?: GlobalProviderLoader;
13
- }
14
- declare const BasicLayout: React.FC<PropsWithChildren<BasicLayoutProps>>;
15
- export { BasicLayout };
@@ -1 +0,0 @@
1
- import{jsx as _jsx}from"react/jsx-runtime";import React,{memo}from"react";import{useAppContext}from"./AppContext";const BasicLayout=memo(({children,configProps:externalConfigProps,globalProvider})=>{const{antdConfig,theme}=useAppContext();const[isSystemDark,setIsSystemDark]=React.useState(()=>{if(typeof window==="undefined"){return false}return window.matchMedia("(prefers-color-scheme: dark)").matches});const finalConfigProps=antdConfig||externalConfigProps;React.useEffect(()=>{if(typeof window==="undefined"){return}const mediaQuery=window.matchMedia("(prefers-color-scheme: dark)");const updateSystemTheme=event=>{setIsSystemDark(event.matches)};setIsSystemDark(mediaQuery.matches);if(typeof mediaQuery.addEventListener==="function"){mediaQuery.addEventListener("change",updateSystemTheme);return()=>mediaQuery.removeEventListener("change",updateSystemTheme)}mediaQuery.addListener(updateSystemTheme);return()=>mediaQuery.removeListener(updateSystemTheme)},[]);const resolvedMode=theme.mode==="system"?isSystemDark?"dark":"light":theme.mode;const cssVars=React.useMemo(()=>{const vars={};if(theme.primaryColor){vars["--app-primary-color"]=theme.primaryColor}if(finalConfigProps&&typeof finalConfigProps==="object"){const cssVariables=finalConfigProps.cssVariables;if(cssVariables&&typeof cssVariables==="object"){Object.entries(cssVariables).forEach(([key,value])=>{vars[`--${key}`]=String(value)})}}return vars},[finalConfigProps,theme.primaryColor]);const GlobalProvider=React.useMemo(()=>globalProvider?React.lazy(globalProvider):null,[globalProvider]);const renderedContent=React.useMemo(()=>{if(!GlobalProvider){return children}return _jsx(React.Suspense,{fallback:null,children:_jsx(GlobalProvider,{children:children})})},[GlobalProvider,children]);return _jsx("div",{"data-theme-mode":resolvedMode,style:cssVars,children:renderedContent})});BasicLayout.displayName="BasicLayout";export{BasicLayout};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"DefaultApp",{enumerable:true,get:function(){return DefaultApp}});const _jsxruntime=require("react/jsx-runtime");const _react=require("react");const _library=require("../../library");const cardStyle={background:"rgba(255, 255, 255, 0.96)",borderRadius:10,boxShadow:"0 6px 20px rgba(0, 0, 0, 0.14)",padding:20};const DefaultApp=(0,_react.memo)(({title,description})=>{const displayTitle=title||(0,_library.$t)("defaultApp.title");const displayDescription=description||(0,_library.$t)("defaultApp.description");return(0,_jsxruntime.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",padding:24,background:"linear-gradient(130deg, #274c77 0%, #2c7da0 42%, #61a5c2 100%)"},children:(0,_jsxruntime.jsxs)("div",{style:{maxWidth:860,width:"100%"},children:[(0,_jsxruntime.jsxs)("div",{style:{textAlign:"center",marginBottom:28,color:"#fff"},children:[(0,_jsxruntime.jsx)("div",{style:{fontSize:56,lineHeight:"60px",marginBottom:12},children:"🚀"}),(0,_jsxruntime.jsx)("h1",{style:{margin:0,fontSize:34},children:displayTitle}),(0,_jsxruntime.jsx)("p",{style:{marginTop:12,opacity:.9},children:displayDescription})]}),(0,_jsxruntime.jsxs)("div",{style:{display:"grid",gap:16},children:[(0,_jsxruntime.jsxs)("section",{style:cardStyle,children:[(0,_jsxruntime.jsxs)("h2",{style:{marginTop:0},children:["💻 ",(0,_library.$t)("defaultApp.quickStart.title")]}),(0,_jsxruntime.jsx)("p",{children:(0,_library.$t)("defaultApp.quickStart.description")}),(0,_jsxruntime.jsx)("pre",{style:{margin:0,background:"#f4f6f8",borderRadius:8,padding:12,overflowX:"auto"},children:(0,_library.$t)("defaultApp.quickStart.code")})]}),(0,_jsxruntime.jsxs)("section",{style:cardStyle,children:[(0,_jsxruntime.jsxs)("h2",{style:{marginTop:0},children:["📚 ",(0,_library.$t)("defaultApp.nextSteps.title")]}),(0,_jsxruntime.jsxs)("ul",{style:{paddingLeft:20,marginBottom:0},children:[(0,_jsxruntime.jsx)("li",{children:(0,_library.$t)("defaultApp.nextSteps.step1")}),(0,_jsxruntime.jsx)("li",{children:(0,_library.$t)("defaultApp.nextSteps.step2")}),(0,_jsxruntime.jsx)("li",{children:(0,_library.$t)("defaultApp.nextSteps.step3")})]})]})]}),(0,_jsxruntime.jsx)("p",{style:{textAlign:"center",color:"rgba(255,255,255,0.88)",marginTop:18},children:(0,_library.$t)("defaultApp.footer")})]})})});DefaultApp.displayName="DefaultApp";
@@ -1,10 +0,0 @@
1
- /**
2
- * 默认应用页面组件
3
- * 当用户未提供 app 选项时显示的默认页面
4
- */
5
- interface DefaultAppProps {
6
- title?: string;
7
- description?: string;
8
- }
9
- declare const DefaultApp: import("react").NamedExoticComponent<DefaultAppProps>;
10
- export { DefaultApp };
@@ -1 +0,0 @@
1
- import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{memo}from"react";import{$t}from"../../library";const cardStyle={background:"rgba(255, 255, 255, 0.96)",borderRadius:10,boxShadow:"0 6px 20px rgba(0, 0, 0, 0.14)",padding:20};const DefaultApp=memo(({title,description})=>{const displayTitle=title||$t("defaultApp.title");const displayDescription=description||$t("defaultApp.description");return _jsx("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",padding:24,background:"linear-gradient(130deg, #274c77 0%, #2c7da0 42%, #61a5c2 100%)"},children:_jsxs("div",{style:{maxWidth:860,width:"100%"},children:[_jsxs("div",{style:{textAlign:"center",marginBottom:28,color:"#fff"},children:[_jsx("div",{style:{fontSize:56,lineHeight:"60px",marginBottom:12},children:"🚀"}),_jsx("h1",{style:{margin:0,fontSize:34},children:displayTitle}),_jsx("p",{style:{marginTop:12,opacity:.9},children:displayDescription})]}),_jsxs("div",{style:{display:"grid",gap:16},children:[_jsxs("section",{style:cardStyle,children:[_jsxs("h2",{style:{marginTop:0},children:["💻 ",$t("defaultApp.quickStart.title")]}),_jsx("p",{children:$t("defaultApp.quickStart.description")}),_jsx("pre",{style:{margin:0,background:"#f4f6f8",borderRadius:8,padding:12,overflowX:"auto"},children:$t("defaultApp.quickStart.code")})]}),_jsxs("section",{style:cardStyle,children:[_jsxs("h2",{style:{marginTop:0},children:["📚 ",$t("defaultApp.nextSteps.title")]}),_jsxs("ul",{style:{paddingLeft:20,marginBottom:0},children:[_jsx("li",{children:$t("defaultApp.nextSteps.step1")}),_jsx("li",{children:$t("defaultApp.nextSteps.step2")}),_jsx("li",{children:$t("defaultApp.nextSteps.step3")})]})]})]}),_jsx("p",{style:{textAlign:"center",color:"rgba(255,255,255,0.88)",marginTop:18},children:$t("defaultApp.footer")})]})})});DefaultApp.displayName="DefaultApp";export{DefaultApp};
@@ -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:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get AppContextProvider(){return _AppContext.AppContextProvider},get BasicLayout(){return _BasicLayout.BasicLayout},get DefaultApp(){return _DefaultApp.DefaultApp},get useAppContext(){return _AppContext.useAppContext},get useConfig(){return _AppContext.useConfig},get useLocale(){return _AppContext.useLocale},get useStateManager(){return _AppContext.useStateManager},get useTheme(){return _AppContext.useTheme}});const _AppContext=require("./AppContext");const _DefaultApp=require("./DefaultApp");const _BasicLayout=require("./BasicLayout");
@@ -1,8 +0,0 @@
1
- /**
2
- * 应用核心模块
3
- */
4
- export { AppContextProvider, useAppContext, useTheme, useLocale, useConfig, useStateManager } from './AppContext';
5
- export type { AppContextProviderProps } from './AppContext';
6
- export type { AppContextValue, ThemeContextValue, LocaleContextValue, ConfigContextValue, StateManagerContextValue, ThemeConfig, AppConfig, } from './AppContext.types';
7
- export { DefaultApp } from './DefaultApp';
8
- export { BasicLayout } from './BasicLayout';
@@ -1 +0,0 @@
1
- export{AppContextProvider,useAppContext,useTheme,useLocale,useConfig,useStateManager}from"./AppContext";export{DefaultApp}from"./DefaultApp";export{BasicLayout}from"./BasicLayout";
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"appConfig",{enumerable:true,get:function(){return appConfig}});function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let AppConfigManager=class AppConfigManager{static getInstance(){if(!AppConfigManager.instance){AppConfigManager.instance=new AppConfigManager}return AppConfigManager.instance}initialize(config){this._config={theme:config.theme||{mode:"light"},locale:config.locale||"zh-CN",antdConfig:config.antdConfig,initializationContext:config.initializationContext}}getConfig(){return{...this._config}}getTheme(){return{...this._config.theme}}setTheme(theme){if(typeof theme==="function"){this._config.theme=theme(this._config.theme)}else{this._config.theme={...theme}}}getLocale(){return this._config.locale}setLocale(locale){this._config.locale=locale}getAntdConfig(){return this._config.antdConfig}setAntdConfig(config){this._config.antdConfig=config}getInitializationContext(){return this._config.initializationContext}setInitializationContext(context){this._config.initializationContext=context}constructor(){_define_property(this,"_config",void 0);this._config={theme:{mode:"light"},locale:"zh-CN"}}};_define_property(AppConfigManager,"instance",null);const appConfig=AppConfigManager.getInstance();