@vlian/framework 1.2.57 → 1.2.60

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 (685) hide show
  1. package/README.md +15 -3
  2. package/dist/analytics/index.cjs +1 -24
  3. package/dist/analytics/index.js +1 -3
  4. package/dist/analytics.umd.js +8 -208
  5. package/dist/components/LocaleSwitch.cjs +1 -118
  6. package/dist/components/LocaleSwitch.js +1 -103
  7. package/dist/components/ThemeSwitch.cjs +1 -117
  8. package/dist/components/ThemeSwitch.js +1 -102
  9. package/dist/components/index.cjs +1 -22
  10. package/dist/components/index.js +1 -4
  11. package/dist/components/persistence.cjs +1 -60
  12. package/dist/components/persistence.js +1 -39
  13. package/dist/core/Test.cjs +1 -66
  14. package/dist/core/Test.js +1 -15
  15. package/dist/core/app/AppContext.cjs +1 -350
  16. package/dist/core/app/AppContext.js +1 -339
  17. package/dist/core/app/AppContext.types.cjs +1 -6
  18. package/dist/core/app/AppContext.types.js +1 -5
  19. package/dist/core/app/BasicLayout.cjs +1 -124
  20. package/dist/core/app/BasicLayout.js +1 -74
  21. package/dist/core/app/DefaultApp.cjs +1 -152
  22. package/dist/core/app/DefaultApp.js +1 -143
  23. package/dist/core/app/index.cjs +1 -43
  24. package/dist/core/app/index.js +1 -7
  25. package/dist/core/config/AppConfig.cjs +1 -141
  26. package/dist/core/config/AppConfig.js +1 -133
  27. package/dist/core/config/ConfigLoader.cjs +1 -325
  28. package/dist/core/config/ConfigLoader.js +1 -311
  29. package/dist/core/config/ConfigValidator.cjs +2 -135
  30. package/dist/core/config/ConfigValidator.js +2 -121
  31. package/dist/core/config/index.cjs +1 -30
  32. package/dist/core/config/index.js +1 -7
  33. package/dist/core/dev/DevTools.cjs +1 -228
  34. package/dist/core/dev/DevTools.js +1 -210
  35. package/dist/core/error/ErrorBoundary.cjs +1 -403
  36. package/dist/core/error/ErrorBoundary.js +1 -399
  37. package/dist/core/error/ErrorHandler.cjs +1 -277
  38. package/dist/core/error/ErrorHandler.js +1 -261
  39. package/dist/core/error/index.cjs +1 -36
  40. package/dist/core/error/index.js +1 -6
  41. package/dist/core/event/AppEventBus.cjs +1 -446
  42. package/dist/core/event/AppEventBus.js +1 -438
  43. package/dist/core/event/frameworkEvents.cjs +1 -143
  44. package/dist/core/event/frameworkEvents.js +1 -135
  45. package/dist/core/event/hooks.cjs +1 -71
  46. package/dist/core/event/hooks.js +1 -95
  47. package/dist/core/event/index.cjs +1 -43
  48. package/dist/core/event/index.js +1 -10
  49. package/dist/core/event/types.cjs +1 -64
  50. package/dist/core/event/types.js +1 -56
  51. package/dist/core/event/useEventBus.cjs +1 -27
  52. package/dist/core/event/useEventBus.js +1 -39
  53. package/dist/core/index.cjs +1 -142
  54. package/dist/core/index.js +1 -69
  55. package/dist/core/initialization/InitializationErrorThrower.cjs +1 -77
  56. package/dist/core/initialization/InitializationErrorThrower.js +1 -30
  57. package/dist/core/initialization/index.cjs +1 -28
  58. package/dist/core/initialization/index.js +1 -7
  59. package/dist/core/initialization/initialization.cjs +1 -66
  60. package/dist/core/initialization/initialization.js +1 -78
  61. package/dist/core/initialization/initializationErrorState.cjs +1 -68
  62. package/dist/core/initialization/initializationErrorState.js +1 -60
  63. package/dist/core/kernel/defaultAdapters.cjs +1 -186
  64. package/dist/core/kernel/defaultAdapters.js +1 -176
  65. package/dist/core/kernel/errors.cjs +1 -71
  66. package/dist/core/kernel/errors.js +1 -53
  67. package/dist/core/kernel/index.cjs +1 -22
  68. package/dist/core/kernel/index.js +1 -4
  69. package/dist/core/kernel/startKernel.cjs +1 -202
  70. package/dist/core/kernel/startKernel.js +1 -192
  71. package/dist/core/kernel/types.cjs +1 -6
  72. package/dist/core/kernel/types.js +1 -3
  73. package/dist/core/middleware.cjs +1 -75
  74. package/dist/core/middleware.js +1 -61
  75. package/dist/core/plugin/PluginEventBus.cjs +1 -300
  76. package/dist/core/plugin/PluginEventBus.js +1 -286
  77. package/dist/core/plugin/PluginSandbox.cjs +1 -139
  78. package/dist/core/plugin/PluginSandbox.js +1 -125
  79. package/dist/core/plugin.cjs +1 -496
  80. package/dist/core/plugin.js +1 -438
  81. package/dist/core/router/RouterManager.cjs +1 -288
  82. package/dist/core/router/RouterManager.js +1 -272
  83. package/dist/core/router/adapter/AdapterManager.cjs +1 -237
  84. package/dist/core/router/adapter/AdapterManager.js +1 -221
  85. package/dist/core/router/adapter/index.cjs +1 -24
  86. package/dist/core/router/adapter/index.js +1 -7
  87. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +1 -130
  88. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -116
  89. package/dist/core/router/adapter/react-router/index.cjs +1 -22
  90. package/dist/core/router/adapter/react-router/index.js +1 -5
  91. package/dist/core/router/adapter/types.cjs +1 -8
  92. package/dist/core/router/adapter/types.js +1 -7
  93. package/dist/core/router/dev/RouterDevTools.cjs +1 -262
  94. package/dist/core/router/dev/RouterDevTools.js +1 -211
  95. package/dist/core/router/dev/index.cjs +1 -22
  96. package/dist/core/router/dev/index.js +1 -5
  97. package/dist/core/router/dynamic/DynamicRouteManager.cjs +1 -195
  98. package/dist/core/router/dynamic/DynamicRouteManager.js +1 -179
  99. package/dist/core/router/dynamic/index.cjs +1 -22
  100. package/dist/core/router/dynamic/index.js +1 -5
  101. package/dist/core/router/errors/RouterError.cjs +1 -63
  102. package/dist/core/router/errors/RouterError.js +1 -48
  103. package/dist/core/router/errors/index.cjs +1 -22
  104. package/dist/core/router/errors/index.js +1 -5
  105. package/dist/core/router/index.cjs +1 -38
  106. package/dist/core/router/index.js +1 -32
  107. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +1 -146
  108. package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -130
  109. package/dist/core/router/lifecycle/index.cjs +1 -22
  110. package/dist/core/router/lifecycle/index.js +1 -5
  111. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +1 -195
  112. package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -179
  113. package/dist/core/router/middleware/auth.cjs +1 -68
  114. package/dist/core/router/middleware/auth.js +1 -63
  115. package/dist/core/router/middleware/index.cjs +1 -24
  116. package/dist/core/router/middleware/index.js +1 -7
  117. package/dist/core/router/middleware/types.cjs +1 -8
  118. package/dist/core/router/middleware/types.js +1 -7
  119. package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -229
  120. package/dist/core/router/monitoring/RouterMonitoring.js +1 -213
  121. package/dist/core/router/monitoring/index.cjs +1 -22
  122. package/dist/core/router/monitoring/index.js +1 -5
  123. package/dist/core/router/navigation/RouterNavigation.cjs +1 -241
  124. package/dist/core/router/navigation/RouterNavigation.js +1 -192
  125. package/dist/core/router/navigation/index.cjs +1 -22
  126. package/dist/core/router/navigation/index.js +1 -5
  127. package/dist/core/router/performance/RouteCache.cjs +1 -307
  128. package/dist/core/router/performance/RouteCache.js +1 -291
  129. package/dist/core/router/performance/RoutePreloader.cjs +1 -294
  130. package/dist/core/router/performance/RoutePreloader.js +1 -277
  131. package/dist/core/router/performance/index.cjs +1 -23
  132. package/dist/core/router/performance/index.js +1 -6
  133. package/dist/core/router/plugin/RouterPluginManager.cjs +1 -264
  134. package/dist/core/router/plugin/RouterPluginManager.js +1 -248
  135. package/dist/core/router/plugin/index.cjs +1 -23
  136. package/dist/core/router/plugin/index.js +1 -6
  137. package/dist/core/router/plugin/types.cjs +1 -41
  138. package/dist/core/router/plugin/types.js +1 -33
  139. package/dist/core/router/types.cjs +1 -6
  140. package/dist/core/router/types.js +1 -5
  141. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -131
  142. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +1 -121
  143. package/dist/core/router/utils/adapters/react-router/transform.cjs +1 -252
  144. package/dist/core/router/utils/adapters/react-router/transform.js +1 -242
  145. package/dist/core/router/utils/transform.cjs +1 -782
  146. package/dist/core/router/utils/transform.js +1 -791
  147. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -85
  148. package/dist/core/router/validation/RouterConfigValidator.js +2 -77
  149. package/dist/core/router/validation/index.cjs +1 -23
  150. package/dist/core/router/validation/index.js +1 -6
  151. package/dist/core/router/validation/schema.cjs +1 -161
  152. package/dist/core/router/validation/schema.js +1 -151
  153. package/dist/core/router/version/RouteVersionManager.cjs +1 -207
  154. package/dist/core/router/version/RouteVersionManager.js +1 -191
  155. package/dist/core/router/version/index.cjs +1 -22
  156. package/dist/core/router/version/index.js +1 -5
  157. package/dist/core/splash/SplashScreen.cjs +1 -343
  158. package/dist/core/splash/SplashScreen.js +1 -293
  159. package/dist/core/splash/index.cjs +1 -24
  160. package/dist/core/splash/index.js +1 -6
  161. package/dist/core/splash/splashScreenUtils.cjs +1 -40
  162. package/dist/core/splash/splashScreenUtils.js +1 -30
  163. package/dist/core/startup/AppInstance.cjs +1 -241
  164. package/dist/core/startup/AppInstance.js +1 -226
  165. package/dist/core/startup/environment.cjs +1 -171
  166. package/dist/core/startup/environment.js +1 -154
  167. package/dist/core/startup/index.cjs +1 -25
  168. package/dist/core/startup/index.js +1 -8
  169. package/dist/core/startup/initializeServices.cjs +1 -228
  170. package/dist/core/startup/initializeServices.js +1 -188
  171. package/dist/core/startup/performanceTracker.cjs +1 -181
  172. package/dist/core/startup/performanceTracker.js +1 -167
  173. package/dist/core/startup/renderApp.cjs +1 -316
  174. package/dist/core/startup/renderApp.js +1 -267
  175. package/dist/core/startup/startApp.cjs +1 -319
  176. package/dist/core/startup/startApp.js +1 -315
  177. package/dist/core/types.cjs +1 -6
  178. package/dist/core/types.js +1 -5
  179. package/dist/index.cjs +1 -54
  180. package/dist/index.js +1 -11
  181. package/dist/index.umd.cjs +1 -29
  182. package/dist/index.umd.js +362 -13233
  183. package/dist/kernel/constants.cjs +1 -67
  184. package/dist/kernel/constants.js +1 -43
  185. package/dist/kernel/index.cjs +1 -40
  186. package/dist/kernel/index.js +1 -4
  187. package/dist/kernel/kernel.cjs +1 -297
  188. package/dist/kernel/kernel.js +1 -273
  189. package/dist/kernel/manager/cacheManager.cjs +1 -48
  190. package/dist/kernel/manager/cacheManager.js +1 -38
  191. package/dist/kernel/manager/i18n/I18nManager.cjs +1 -93
  192. package/dist/kernel/manager/i18n/I18nManager.js +1 -83
  193. package/dist/kernel/manager/i18n/i18n.persistence.cjs +1 -62
  194. package/dist/kernel/manager/i18n/i18n.persistence.js +1 -41
  195. package/dist/kernel/manager/i18n/i18n.schema.cjs +1 -88
  196. package/dist/kernel/manager/i18n/i18n.schema.js +1 -64
  197. package/dist/kernel/manager/i18n/index.cjs +1 -13
  198. package/dist/kernel/manager/i18n/index.js +1 -3
  199. package/dist/kernel/manager/i18nManager.cjs +1 -13
  200. package/dist/kernel/manager/i18nManager.js +1 -3
  201. package/dist/kernel/manager/index.cjs +1 -30
  202. package/dist/kernel/manager/index.js +1 -6
  203. package/dist/kernel/manager/logger/LoggerManager.cjs +1 -109
  204. package/dist/kernel/manager/logger/LoggerManager.js +1 -99
  205. package/dist/kernel/manager/logger/index.cjs +1 -13
  206. package/dist/kernel/manager/logger/index.js +1 -3
  207. package/dist/kernel/manager/logger/logger.persistence.cjs +1 -64
  208. package/dist/kernel/manager/logger/logger.persistence.js +1 -43
  209. package/dist/kernel/manager/logger/logger.schema.cjs +1 -76
  210. package/dist/kernel/manager/logger/logger.schema.js +1 -55
  211. package/dist/kernel/manager/loggerManager.cjs +1 -13
  212. package/dist/kernel/manager/loggerManager.js +1 -3
  213. package/dist/kernel/manager/theme/ThemeManager.cjs +1 -86
  214. package/dist/kernel/manager/theme/ThemeManager.js +1 -76
  215. package/dist/kernel/manager/theme/index.cjs +1 -13
  216. package/dist/kernel/manager/theme/index.js +1 -3
  217. package/dist/kernel/manager/theme/theme.dom.cjs +1 -63
  218. package/dist/kernel/manager/theme/theme.dom.js +1 -45
  219. package/dist/kernel/manager/theme/theme.persistence.cjs +1 -59
  220. package/dist/kernel/manager/theme/theme.persistence.js +1 -38
  221. package/dist/kernel/manager/theme/theme.schema.cjs +1 -124
  222. package/dist/kernel/manager/theme/theme.schema.js +1 -97
  223. package/dist/kernel/manager/themeManager.cjs +1 -13
  224. package/dist/kernel/manager/themeManager.js +1 -3
  225. package/dist/kernel/types.cjs +1 -6
  226. package/dist/kernel/types.js +1 -3
  227. package/dist/library/index.cjs +1 -21
  228. package/dist/library/index.js +1 -4
  229. package/dist/library/locale/index.cjs +1 -41
  230. package/dist/library/locale/index.js +1 -12
  231. package/dist/library/locale/langs/en-us/index.cjs +1 -34
  232. package/dist/library/locale/langs/en-us/index.js +1 -24
  233. package/dist/library/locale/langs/zh-cn/index.cjs +1 -34
  234. package/dist/library/locale/langs/zh-cn/index.js +1 -24
  235. package/dist/library/locale/types.cjs +1 -6
  236. package/dist/library/locale/types.js +1 -3
  237. package/dist/library/storage/cache.cjs +1 -245
  238. package/dist/library/storage/cache.js +1 -237
  239. package/dist/library/storage/encryption.cjs +1 -149
  240. package/dist/library/storage/encryption.js +1 -141
  241. package/dist/library/storage/index.cjs +1 -126
  242. package/dist/library/storage/index.js +1 -106
  243. package/dist/state/StateManager.cjs +1 -168
  244. package/dist/state/StateManager.js +1 -160
  245. package/dist/state/adapters/AdapterFactory.cjs +1 -91
  246. package/dist/state/adapters/AdapterFactory.js +1 -85
  247. package/dist/state/adapters/DefaultAdapter.cjs +1 -77
  248. package/dist/state/adapters/DefaultAdapter.js +1 -71
  249. package/dist/state/adapters/ReduxAdapter.cjs +1 -445
  250. package/dist/state/adapters/ReduxAdapter.js +1 -439
  251. package/dist/state/adapters/ZustandAdapter.cjs +1 -71
  252. package/dist/state/adapters/ZustandAdapter.js +1 -70
  253. package/dist/state/adapters/index.cjs +1 -46
  254. package/dist/state/adapters/index.js +1 -9
  255. package/dist/state/adapters/types.cjs +1 -22
  256. package/dist/state/adapters/types.js +1 -5
  257. package/dist/state/core/DerivedStateInstance.cjs +1 -176
  258. package/dist/state/core/DerivedStateInstance.js +1 -173
  259. package/dist/state/core/StateInstance.cjs +1 -172
  260. package/dist/state/core/StateInstance.js +1 -168
  261. package/dist/state/core/StateRegistry.cjs +1 -112
  262. package/dist/state/core/StateRegistry.js +1 -106
  263. package/dist/state/core/StateScope.cjs +1 -139
  264. package/dist/state/core/StateScope.js +1 -133
  265. package/dist/state/core/index.cjs +1 -32
  266. package/dist/state/core/index.js +1 -8
  267. package/dist/state/index.cjs +1 -32
  268. package/dist/state/index.js +1 -12
  269. package/dist/state/types.cjs +1 -14
  270. package/dist/state/types.js +1 -13
  271. package/dist/state.umd.js +22 -1395
  272. package/dist/types.cjs +1 -6
  273. package/dist/types.js +1 -3
  274. package/dist/utils/analytics.cjs +1 -219
  275. package/dist/utils/analytics.js +1 -204
  276. package/dist/utils/configSecurity.cjs +3 -184
  277. package/dist/utils/configSecurity.js +3 -176
  278. package/dist/utils/csrf.cjs +1 -20
  279. package/dist/utils/csrf.js +1 -3
  280. package/dist/utils/errors/ErrorCodes.cjs +1 -27
  281. package/dist/utils/errors/ErrorCodes.js +1 -3
  282. package/dist/utils/errors.cjs +1 -113
  283. package/dist/utils/errors.js +1 -18
  284. package/dist/utils/index.cjs +1 -137
  285. package/dist/utils/index.js +1 -48
  286. package/dist/utils/logger.cjs +1 -27
  287. package/dist/utils/logger.js +1 -3
  288. package/dist/utils/logger.types.cjs +1 -13
  289. package/dist/utils/logger.types.js +1 -3
  290. package/dist/utils/monitoring.cjs +1 -20
  291. package/dist/utils/monitoring.js +1 -3
  292. package/dist/utils/performance.cjs +1 -24
  293. package/dist/utils/performance.js +1 -3
  294. package/dist/utils/resourceLoader.cjs +1 -24
  295. package/dist/utils/resourceLoader.js +1 -3
  296. package/dist/utils/runtimeSecurity.cjs +1 -13
  297. package/dist/utils/runtimeSecurity.js +1 -3
  298. package/dist/utils/security.cjs +1 -21
  299. package/dist/utils/security.js +1 -3
  300. package/dist/utils/traceId.cjs +1 -39
  301. package/dist/utils/traceId.js +1 -3
  302. package/dist/utils/validation.cjs +1 -21
  303. package/dist/utils/validation.js +1 -3
  304. package/package.json +9 -6
  305. package/dist/analytics/index.cjs.map +0 -1
  306. package/dist/analytics/index.js.map +0 -1
  307. package/dist/analytics.umd.js.map +0 -1
  308. package/dist/components/LocaleSwitch.cjs.map +0 -1
  309. package/dist/components/LocaleSwitch.js.map +0 -1
  310. package/dist/components/ThemeSwitch.cjs.map +0 -1
  311. package/dist/components/ThemeSwitch.js.map +0 -1
  312. package/dist/components/index.cjs.map +0 -1
  313. package/dist/components/index.js.map +0 -1
  314. package/dist/components/persistence.cjs.map +0 -1
  315. package/dist/components/persistence.js.map +0 -1
  316. package/dist/core/Test.cjs.map +0 -1
  317. package/dist/core/Test.js.map +0 -1
  318. package/dist/core/app/AppContext.cjs.map +0 -1
  319. package/dist/core/app/AppContext.js.map +0 -1
  320. package/dist/core/app/AppContext.types.cjs.map +0 -1
  321. package/dist/core/app/AppContext.types.js.map +0 -1
  322. package/dist/core/app/BasicLayout.cjs.map +0 -1
  323. package/dist/core/app/BasicLayout.js.map +0 -1
  324. package/dist/core/app/DefaultApp.cjs.map +0 -1
  325. package/dist/core/app/DefaultApp.js.map +0 -1
  326. package/dist/core/app/index.cjs.map +0 -1
  327. package/dist/core/app/index.js.map +0 -1
  328. package/dist/core/config/AppConfig.cjs.map +0 -1
  329. package/dist/core/config/AppConfig.js.map +0 -1
  330. package/dist/core/config/ConfigLoader.cjs.map +0 -1
  331. package/dist/core/config/ConfigLoader.js.map +0 -1
  332. package/dist/core/config/ConfigValidator.cjs.map +0 -1
  333. package/dist/core/config/ConfigValidator.js.map +0 -1
  334. package/dist/core/config/index.cjs.map +0 -1
  335. package/dist/core/config/index.js.map +0 -1
  336. package/dist/core/dev/DevTools.cjs.map +0 -1
  337. package/dist/core/dev/DevTools.js.map +0 -1
  338. package/dist/core/error/ErrorBoundary.cjs.map +0 -1
  339. package/dist/core/error/ErrorBoundary.js.map +0 -1
  340. package/dist/core/error/ErrorHandler.cjs.map +0 -1
  341. package/dist/core/error/ErrorHandler.js.map +0 -1
  342. package/dist/core/error/index.cjs.map +0 -1
  343. package/dist/core/error/index.js.map +0 -1
  344. package/dist/core/event/AppEventBus.cjs.map +0 -1
  345. package/dist/core/event/AppEventBus.js.map +0 -1
  346. package/dist/core/event/frameworkEvents.cjs.map +0 -1
  347. package/dist/core/event/frameworkEvents.js.map +0 -1
  348. package/dist/core/event/hooks.cjs.map +0 -1
  349. package/dist/core/event/hooks.js.map +0 -1
  350. package/dist/core/event/index.cjs.map +0 -1
  351. package/dist/core/event/index.js.map +0 -1
  352. package/dist/core/event/types.cjs.map +0 -1
  353. package/dist/core/event/types.js.map +0 -1
  354. package/dist/core/event/useEventBus.cjs.map +0 -1
  355. package/dist/core/event/useEventBus.js.map +0 -1
  356. package/dist/core/index.cjs.map +0 -1
  357. package/dist/core/index.js.map +0 -1
  358. package/dist/core/initialization/InitializationErrorThrower.cjs.map +0 -1
  359. package/dist/core/initialization/InitializationErrorThrower.js.map +0 -1
  360. package/dist/core/initialization/index.cjs.map +0 -1
  361. package/dist/core/initialization/index.js.map +0 -1
  362. package/dist/core/initialization/initialization.cjs.map +0 -1
  363. package/dist/core/initialization/initialization.js.map +0 -1
  364. package/dist/core/initialization/initializationErrorState.cjs.map +0 -1
  365. package/dist/core/initialization/initializationErrorState.js.map +0 -1
  366. package/dist/core/kernel/defaultAdapters.cjs.map +0 -1
  367. package/dist/core/kernel/defaultAdapters.js.map +0 -1
  368. package/dist/core/kernel/errors.cjs.map +0 -1
  369. package/dist/core/kernel/errors.js.map +0 -1
  370. package/dist/core/kernel/index.cjs.map +0 -1
  371. package/dist/core/kernel/index.js.map +0 -1
  372. package/dist/core/kernel/startKernel.cjs.map +0 -1
  373. package/dist/core/kernel/startKernel.js.map +0 -1
  374. package/dist/core/kernel/types.cjs.map +0 -1
  375. package/dist/core/kernel/types.js.map +0 -1
  376. package/dist/core/middleware.cjs.map +0 -1
  377. package/dist/core/middleware.js.map +0 -1
  378. package/dist/core/plugin/PluginEventBus.cjs.map +0 -1
  379. package/dist/core/plugin/PluginEventBus.js.map +0 -1
  380. package/dist/core/plugin/PluginSandbox.cjs.map +0 -1
  381. package/dist/core/plugin/PluginSandbox.js.map +0 -1
  382. package/dist/core/plugin.cjs.map +0 -1
  383. package/dist/core/plugin.js.map +0 -1
  384. package/dist/core/router/RouterManager.cjs.map +0 -1
  385. package/dist/core/router/RouterManager.js.map +0 -1
  386. package/dist/core/router/adapter/AdapterManager.cjs.map +0 -1
  387. package/dist/core/router/adapter/AdapterManager.js.map +0 -1
  388. package/dist/core/router/adapter/index.cjs.map +0 -1
  389. package/dist/core/router/adapter/index.js.map +0 -1
  390. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +0 -1
  391. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +0 -1
  392. package/dist/core/router/adapter/react-router/index.cjs.map +0 -1
  393. package/dist/core/router/adapter/react-router/index.js.map +0 -1
  394. package/dist/core/router/adapter/types.cjs.map +0 -1
  395. package/dist/core/router/adapter/types.js.map +0 -1
  396. package/dist/core/router/dev/RouterDevTools.cjs.map +0 -1
  397. package/dist/core/router/dev/RouterDevTools.js.map +0 -1
  398. package/dist/core/router/dev/index.cjs.map +0 -1
  399. package/dist/core/router/dev/index.js.map +0 -1
  400. package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +0 -1
  401. package/dist/core/router/dynamic/DynamicRouteManager.js.map +0 -1
  402. package/dist/core/router/dynamic/index.cjs.map +0 -1
  403. package/dist/core/router/dynamic/index.js.map +0 -1
  404. package/dist/core/router/errors/RouterError.cjs.map +0 -1
  405. package/dist/core/router/errors/RouterError.js.map +0 -1
  406. package/dist/core/router/errors/index.cjs.map +0 -1
  407. package/dist/core/router/errors/index.js.map +0 -1
  408. package/dist/core/router/index.cjs.map +0 -1
  409. package/dist/core/router/index.js.map +0 -1
  410. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +0 -1
  411. package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +0 -1
  412. package/dist/core/router/lifecycle/index.cjs.map +0 -1
  413. package/dist/core/router/lifecycle/index.js.map +0 -1
  414. package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +0 -1
  415. package/dist/core/router/middleware/RouterMiddlewareManager.js.map +0 -1
  416. package/dist/core/router/middleware/auth.cjs.map +0 -1
  417. package/dist/core/router/middleware/auth.js.map +0 -1
  418. package/dist/core/router/middleware/index.cjs.map +0 -1
  419. package/dist/core/router/middleware/index.js.map +0 -1
  420. package/dist/core/router/middleware/types.cjs.map +0 -1
  421. package/dist/core/router/middleware/types.js.map +0 -1
  422. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +0 -1
  423. package/dist/core/router/monitoring/RouterMonitoring.js.map +0 -1
  424. package/dist/core/router/monitoring/index.cjs.map +0 -1
  425. package/dist/core/router/monitoring/index.js.map +0 -1
  426. package/dist/core/router/navigation/RouterNavigation.cjs.map +0 -1
  427. package/dist/core/router/navigation/RouterNavigation.js.map +0 -1
  428. package/dist/core/router/navigation/index.cjs.map +0 -1
  429. package/dist/core/router/navigation/index.js.map +0 -1
  430. package/dist/core/router/performance/RouteCache.cjs.map +0 -1
  431. package/dist/core/router/performance/RouteCache.js.map +0 -1
  432. package/dist/core/router/performance/RoutePreloader.cjs.map +0 -1
  433. package/dist/core/router/performance/RoutePreloader.js.map +0 -1
  434. package/dist/core/router/performance/index.cjs.map +0 -1
  435. package/dist/core/router/performance/index.js.map +0 -1
  436. package/dist/core/router/plugin/RouterPluginManager.cjs.map +0 -1
  437. package/dist/core/router/plugin/RouterPluginManager.js.map +0 -1
  438. package/dist/core/router/plugin/index.cjs.map +0 -1
  439. package/dist/core/router/plugin/index.js.map +0 -1
  440. package/dist/core/router/plugin/types.cjs.map +0 -1
  441. package/dist/core/router/plugin/types.js.map +0 -1
  442. package/dist/core/router/types.cjs.map +0 -1
  443. package/dist/core/router/types.js.map +0 -1
  444. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +0 -1
  445. package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +0 -1
  446. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +0 -1
  447. package/dist/core/router/utils/adapters/react-router/transform.js.map +0 -1
  448. package/dist/core/router/utils/transform.cjs.map +0 -1
  449. package/dist/core/router/utils/transform.js.map +0 -1
  450. package/dist/core/router/validation/RouterConfigValidator.cjs.map +0 -1
  451. package/dist/core/router/validation/RouterConfigValidator.js.map +0 -1
  452. package/dist/core/router/validation/index.cjs.map +0 -1
  453. package/dist/core/router/validation/index.js.map +0 -1
  454. package/dist/core/router/validation/schema.cjs.map +0 -1
  455. package/dist/core/router/validation/schema.js.map +0 -1
  456. package/dist/core/router/version/RouteVersionManager.cjs.map +0 -1
  457. package/dist/core/router/version/RouteVersionManager.js.map +0 -1
  458. package/dist/core/router/version/index.cjs.map +0 -1
  459. package/dist/core/router/version/index.js.map +0 -1
  460. package/dist/core/splash/SplashScreen.cjs.map +0 -1
  461. package/dist/core/splash/SplashScreen.js.map +0 -1
  462. package/dist/core/splash/index.cjs.map +0 -1
  463. package/dist/core/splash/index.js.map +0 -1
  464. package/dist/core/splash/splashScreenUtils.cjs.map +0 -1
  465. package/dist/core/splash/splashScreenUtils.js.map +0 -1
  466. package/dist/core/startup/AppInstance.cjs.map +0 -1
  467. package/dist/core/startup/AppInstance.js.map +0 -1
  468. package/dist/core/startup/environment.cjs.map +0 -1
  469. package/dist/core/startup/environment.js.map +0 -1
  470. package/dist/core/startup/index.cjs.map +0 -1
  471. package/dist/core/startup/index.js.map +0 -1
  472. package/dist/core/startup/initializeServices.cjs.map +0 -1
  473. package/dist/core/startup/initializeServices.js.map +0 -1
  474. package/dist/core/startup/performanceTracker.cjs.map +0 -1
  475. package/dist/core/startup/performanceTracker.js.map +0 -1
  476. package/dist/core/startup/renderApp.cjs.map +0 -1
  477. package/dist/core/startup/renderApp.js.map +0 -1
  478. package/dist/core/startup/startApp.cjs.map +0 -1
  479. package/dist/core/startup/startApp.js.map +0 -1
  480. package/dist/core/types.cjs.map +0 -1
  481. package/dist/core/types.js.map +0 -1
  482. package/dist/index.cjs.map +0 -1
  483. package/dist/index.js.map +0 -1
  484. package/dist/index.umd.cjs.map +0 -1
  485. package/dist/index.umd.js.map +0 -1
  486. package/dist/kernel/constants.cjs.map +0 -1
  487. package/dist/kernel/constants.js.map +0 -1
  488. package/dist/kernel/index.cjs.map +0 -1
  489. package/dist/kernel/index.js.map +0 -1
  490. package/dist/kernel/kernel.cjs.map +0 -1
  491. package/dist/kernel/kernel.js.map +0 -1
  492. package/dist/kernel/manager/cacheManager.cjs.map +0 -1
  493. package/dist/kernel/manager/cacheManager.js.map +0 -1
  494. package/dist/kernel/manager/i18n/I18nManager.cjs.map +0 -1
  495. package/dist/kernel/manager/i18n/I18nManager.js.map +0 -1
  496. package/dist/kernel/manager/i18n/i18n.persistence.cjs.map +0 -1
  497. package/dist/kernel/manager/i18n/i18n.persistence.js.map +0 -1
  498. package/dist/kernel/manager/i18n/i18n.schema.cjs.map +0 -1
  499. package/dist/kernel/manager/i18n/i18n.schema.js.map +0 -1
  500. package/dist/kernel/manager/i18n/index.cjs.map +0 -1
  501. package/dist/kernel/manager/i18n/index.js.map +0 -1
  502. package/dist/kernel/manager/i18nManager.cjs.map +0 -1
  503. package/dist/kernel/manager/i18nManager.js.map +0 -1
  504. package/dist/kernel/manager/index.cjs.map +0 -1
  505. package/dist/kernel/manager/index.js.map +0 -1
  506. package/dist/kernel/manager/logger/LoggerManager.cjs.map +0 -1
  507. package/dist/kernel/manager/logger/LoggerManager.js.map +0 -1
  508. package/dist/kernel/manager/logger/index.cjs.map +0 -1
  509. package/dist/kernel/manager/logger/index.js.map +0 -1
  510. package/dist/kernel/manager/logger/logger.persistence.cjs.map +0 -1
  511. package/dist/kernel/manager/logger/logger.persistence.js.map +0 -1
  512. package/dist/kernel/manager/logger/logger.schema.cjs.map +0 -1
  513. package/dist/kernel/manager/logger/logger.schema.js.map +0 -1
  514. package/dist/kernel/manager/loggerManager.cjs.map +0 -1
  515. package/dist/kernel/manager/loggerManager.js.map +0 -1
  516. package/dist/kernel/manager/persistence.cjs +0 -78
  517. package/dist/kernel/manager/persistence.cjs.map +0 -1
  518. package/dist/kernel/manager/persistence.d.ts +0 -3
  519. package/dist/kernel/manager/persistence.js +0 -60
  520. package/dist/kernel/manager/persistence.js.map +0 -1
  521. package/dist/kernel/manager/theme/ThemeManager.cjs.map +0 -1
  522. package/dist/kernel/manager/theme/ThemeManager.js.map +0 -1
  523. package/dist/kernel/manager/theme/index.cjs.map +0 -1
  524. package/dist/kernel/manager/theme/index.js.map +0 -1
  525. package/dist/kernel/manager/theme/theme.dom.cjs.map +0 -1
  526. package/dist/kernel/manager/theme/theme.dom.js.map +0 -1
  527. package/dist/kernel/manager/theme/theme.persistence.cjs.map +0 -1
  528. package/dist/kernel/manager/theme/theme.persistence.js.map +0 -1
  529. package/dist/kernel/manager/theme/theme.schema.cjs.map +0 -1
  530. package/dist/kernel/manager/theme/theme.schema.js.map +0 -1
  531. package/dist/kernel/manager/themeManager.cjs.map +0 -1
  532. package/dist/kernel/manager/themeManager.js.map +0 -1
  533. package/dist/kernel/types.cjs.map +0 -1
  534. package/dist/kernel/types.js.map +0 -1
  535. package/dist/library/index.cjs.map +0 -1
  536. package/dist/library/index.js.map +0 -1
  537. package/dist/library/locale/index.cjs.map +0 -1
  538. package/dist/library/locale/index.js.map +0 -1
  539. package/dist/library/locale/langs/en-us/index.cjs.map +0 -1
  540. package/dist/library/locale/langs/en-us/index.js.map +0 -1
  541. package/dist/library/locale/langs/zh-cn/index.cjs.map +0 -1
  542. package/dist/library/locale/langs/zh-cn/index.js.map +0 -1
  543. package/dist/library/locale/types.cjs.map +0 -1
  544. package/dist/library/locale/types.js.map +0 -1
  545. package/dist/library/storage/cache.cjs.map +0 -1
  546. package/dist/library/storage/cache.js.map +0 -1
  547. package/dist/library/storage/encryption.cjs.map +0 -1
  548. package/dist/library/storage/encryption.js.map +0 -1
  549. package/dist/library/storage/index.cjs.map +0 -1
  550. package/dist/library/storage/index.js.map +0 -1
  551. package/dist/request/adapter/RequestAdapter.d.ts +0 -85
  552. package/dist/request/adapter/RequestAdapter.js +0 -70
  553. package/dist/request/adapter/RequestAdapter.js.map +0 -1
  554. package/dist/request/adapter/axiosAdapter.d.ts +0 -10
  555. package/dist/request/adapter/axiosAdapter.js +0 -115
  556. package/dist/request/adapter/axiosAdapter.js.map +0 -1
  557. package/dist/request/adapter/fetchAdapter.d.ts +0 -10
  558. package/dist/request/adapter/fetchAdapter.js +0 -126
  559. package/dist/request/adapter/fetchAdapter.js.map +0 -1
  560. package/dist/request/adapter/index.d.ts +0 -9
  561. package/dist/request/adapter/index.js +0 -14
  562. package/dist/request/adapter/index.js.map +0 -1
  563. package/dist/request/adapter/kyAdapter.d.ts +0 -10
  564. package/dist/request/adapter/kyAdapter.js +0 -142
  565. package/dist/request/adapter/kyAdapter.js.map +0 -1
  566. package/dist/request/adapter/undiciAdapter.d.ts +0 -10
  567. package/dist/request/adapter/undiciAdapter.js +0 -164
  568. package/dist/request/adapter/undiciAdapter.js.map +0 -1
  569. package/dist/request/adapter.d.ts +0 -1
  570. package/dist/request/core/RequestClient.d.ts +0 -134
  571. package/dist/request/core/RequestClient.js +0 -509
  572. package/dist/request/core/RequestClient.js.map +0 -1
  573. package/dist/request/core/index.d.ts +0 -5
  574. package/dist/request/core/index.js +0 -5
  575. package/dist/request/core/index.js.map +0 -1
  576. package/dist/request/core.d.ts +0 -1
  577. package/dist/request/index.d.ts +0 -1
  578. package/dist/request/index.js +0 -50
  579. package/dist/request/index.js.map +0 -1
  580. package/dist/request/plugin/RequestPlugin.d.ts +0 -170
  581. package/dist/request/plugin/RequestPlugin.js +0 -203
  582. package/dist/request/plugin/RequestPlugin.js.map +0 -1
  583. package/dist/request/plugin/cache.d.ts +0 -33
  584. package/dist/request/plugin/cache.js +0 -264
  585. package/dist/request/plugin/cache.js.map +0 -1
  586. package/dist/request/plugin/csrfPlugin.d.ts +0 -21
  587. package/dist/request/plugin/csrfPlugin.js +0 -44
  588. package/dist/request/plugin/csrfPlugin.js.map +0 -1
  589. package/dist/request/plugin/index.d.ts +0 -11
  590. package/dist/request/plugin/index.js +0 -12
  591. package/dist/request/plugin/index.js.map +0 -1
  592. package/dist/request/plugin/monitoring.d.ts +0 -112
  593. package/dist/request/plugin/monitoring.js +0 -205
  594. package/dist/request/plugin/monitoring.js.map +0 -1
  595. package/dist/request/plugin/queue.d.ts +0 -91
  596. package/dist/request/plugin/queue.js +0 -156
  597. package/dist/request/plugin/queue.js.map +0 -1
  598. package/dist/request/plugin/retry.d.ts +0 -34
  599. package/dist/request/plugin/retry.js +0 -93
  600. package/dist/request/plugin/retry.js.map +0 -1
  601. package/dist/request/plugin/validation.d.ts +0 -26
  602. package/dist/request/plugin/validation.js +0 -116
  603. package/dist/request/plugin/validation.js.map +0 -1
  604. package/dist/request/plugin.d.ts +0 -1
  605. package/dist/request/runtime/RequestContext.d.ts +0 -50
  606. package/dist/request/runtime/RequestContext.js +0 -86
  607. package/dist/request/runtime/RequestContext.js.map +0 -1
  608. package/dist/request/runtime/index.d.ts +0 -4
  609. package/dist/request/runtime/index.js +0 -5
  610. package/dist/request/runtime/index.js.map +0 -1
  611. package/dist/request/runtime.d.ts +0 -1
  612. package/dist/request/types.d.ts +0 -1
  613. package/dist/request/types.js +0 -97
  614. package/dist/request/types.js.map +0 -1
  615. package/dist/request/utils/RequestQueueManager.d.ts +0 -74
  616. package/dist/request/utils/RequestQueueManager.js +0 -160
  617. package/dist/request/utils/RequestQueueManager.js.map +0 -1
  618. package/dist/request/utils/dependencyCheck.d.ts +0 -63
  619. package/dist/request/utils/dependencyCheck.js +0 -192
  620. package/dist/request/utils/dependencyCheck.js.map +0 -1
  621. package/dist/request/utils/index.d.ts +0 -5
  622. package/dist/request/utils/index.js +0 -6
  623. package/dist/request/utils/index.js.map +0 -1
  624. package/dist/request/utils.d.ts +0 -1
  625. package/dist/state/StateManager.cjs.map +0 -1
  626. package/dist/state/StateManager.js.map +0 -1
  627. package/dist/state/adapters/AdapterFactory.cjs.map +0 -1
  628. package/dist/state/adapters/AdapterFactory.js.map +0 -1
  629. package/dist/state/adapters/DefaultAdapter.cjs.map +0 -1
  630. package/dist/state/adapters/DefaultAdapter.js.map +0 -1
  631. package/dist/state/adapters/ReduxAdapter.cjs.map +0 -1
  632. package/dist/state/adapters/ReduxAdapter.js.map +0 -1
  633. package/dist/state/adapters/ZustandAdapter.cjs.map +0 -1
  634. package/dist/state/adapters/ZustandAdapter.js.map +0 -1
  635. package/dist/state/adapters/index.cjs.map +0 -1
  636. package/dist/state/adapters/index.js.map +0 -1
  637. package/dist/state/adapters/types.cjs.map +0 -1
  638. package/dist/state/adapters/types.js.map +0 -1
  639. package/dist/state/core/DerivedStateInstance.cjs.map +0 -1
  640. package/dist/state/core/DerivedStateInstance.js.map +0 -1
  641. package/dist/state/core/StateInstance.cjs.map +0 -1
  642. package/dist/state/core/StateInstance.js.map +0 -1
  643. package/dist/state/core/StateRegistry.cjs.map +0 -1
  644. package/dist/state/core/StateRegistry.js.map +0 -1
  645. package/dist/state/core/StateScope.cjs.map +0 -1
  646. package/dist/state/core/StateScope.js.map +0 -1
  647. package/dist/state/core/index.cjs.map +0 -1
  648. package/dist/state/core/index.js.map +0 -1
  649. package/dist/state/index.cjs.map +0 -1
  650. package/dist/state/index.js.map +0 -1
  651. package/dist/state/types.cjs.map +0 -1
  652. package/dist/state/types.js.map +0 -1
  653. package/dist/state.umd.js.map +0 -1
  654. package/dist/types.cjs.map +0 -1
  655. package/dist/types.js.map +0 -1
  656. package/dist/utils/analytics.cjs.map +0 -1
  657. package/dist/utils/analytics.js.map +0 -1
  658. package/dist/utils/configSecurity.cjs.map +0 -1
  659. package/dist/utils/configSecurity.js.map +0 -1
  660. package/dist/utils/csrf.cjs.map +0 -1
  661. package/dist/utils/csrf.js.map +0 -1
  662. package/dist/utils/errors/ErrorCodes.cjs.map +0 -1
  663. package/dist/utils/errors/ErrorCodes.js.map +0 -1
  664. package/dist/utils/errors.cjs.map +0 -1
  665. package/dist/utils/errors.js.map +0 -1
  666. package/dist/utils/index.cjs.map +0 -1
  667. package/dist/utils/index.js.map +0 -1
  668. package/dist/utils/logger.cjs.map +0 -1
  669. package/dist/utils/logger.js.map +0 -1
  670. package/dist/utils/logger.types.cjs.map +0 -1
  671. package/dist/utils/logger.types.js.map +0 -1
  672. package/dist/utils/monitoring.cjs.map +0 -1
  673. package/dist/utils/monitoring.js.map +0 -1
  674. package/dist/utils/performance.cjs.map +0 -1
  675. package/dist/utils/performance.js.map +0 -1
  676. package/dist/utils/resourceLoader.cjs.map +0 -1
  677. package/dist/utils/resourceLoader.js.map +0 -1
  678. package/dist/utils/runtimeSecurity.cjs.map +0 -1
  679. package/dist/utils/runtimeSecurity.js.map +0 -1
  680. package/dist/utils/security.cjs.map +0 -1
  681. package/dist/utils/security.js.map +0 -1
  682. package/dist/utils/traceId.cjs.map +0 -1
  683. package/dist/utils/traceId.js.map +0 -1
  684. package/dist/utils/validation.cjs.map +0 -1
  685. package/dist/utils/validation.js.map +0 -1
@@ -1,24 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get PERFORMANCE_METRIC_UNITS () {
13
- return _utils.PERFORMANCE_METRIC_UNITS;
14
- },
15
- get PerformanceMonitor () {
16
- return _utils.PerformanceMonitor;
17
- },
18
- get convertMetricsToWithUnits () {
19
- return _utils.convertMetricsToWithUnits;
20
- }
21
- });
22
- const _utils = require("@vlian/utils");
23
-
24
- //# sourceMappingURL=performance.js.map
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 PERFORMANCE_METRIC_UNITS(){return _utils.PERFORMANCE_METRIC_UNITS},get PerformanceMonitor(){return _utils.PerformanceMonitor},get convertMetricsToWithUnits(){return _utils.convertMetricsToWithUnits}});const _utils=require("@vlian/utils");
@@ -1,3 +1 @@
1
- export { PerformanceMonitor, PERFORMANCE_METRIC_UNITS, convertMetricsToWithUnits } from "@vlian/utils";
2
-
3
- //# sourceMappingURL=performance.js.map
1
+ export{PerformanceMonitor,PERFORMANCE_METRIC_UNITS,convertMetricsToWithUnits}from"@vlian/utils";
@@ -1,24 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get ResourceLoader () {
13
- return _utils.ResourceLoader;
14
- },
15
- get ResourcePriority () {
16
- return _utils.ResourcePriority;
17
- },
18
- get resourceLoader () {
19
- return _utils.resourceLoader;
20
- }
21
- });
22
- const _utils = require("@vlian/utils");
23
-
24
- //# sourceMappingURL=resourceLoader.js.map
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 ResourceLoader(){return _utils.ResourceLoader},get ResourcePriority(){return _utils.ResourcePriority},get resourceLoader(){return _utils.resourceLoader}});const _utils=require("@vlian/utils");
@@ -1,3 +1 @@
1
- export { ResourceLoader, ResourcePriority, resourceLoader } from "@vlian/utils";
2
-
3
- //# sourceMappingURL=resourceLoader.js.map
1
+ export{ResourceLoader,ResourcePriority,resourceLoader}from"@vlian/utils";
@@ -1,13 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "RuntimeSecurity", {
6
- enumerable: true,
7
- get: function() {
8
- return _utils.RuntimeSecurity;
9
- }
10
- });
11
- const _utils = require("@vlian/utils");
12
-
13
- //# sourceMappingURL=runtimeSecurity.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"RuntimeSecurity",{enumerable:true,get:function(){return _utils.RuntimeSecurity}});const _utils=require("@vlian/utils");
@@ -1,3 +1 @@
1
- export { RuntimeSecurity } from "@vlian/utils";
2
-
3
- //# sourceMappingURL=runtimeSecurity.js.map
1
+ export{RuntimeSecurity}from"@vlian/utils";
@@ -1,21 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get SENSITIVE_FIELDS () {
13
- return _utils.SENSITIVE_FIELDS;
14
- },
15
- get SecurityUtils () {
16
- return _utils.SecurityUtils;
17
- }
18
- });
19
- const _utils = require("@vlian/utils");
20
-
21
- //# sourceMappingURL=security.js.map
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 SENSITIVE_FIELDS(){return _utils.SENSITIVE_FIELDS},get SecurityUtils(){return _utils.SecurityUtils}});const _utils=require("@vlian/utils");
@@ -1,3 +1 @@
1
- export { SecurityUtils, SENSITIVE_FIELDS } from "@vlian/utils";
2
-
3
- //# sourceMappingURL=security.js.map
1
+ export{SecurityUtils,SENSITIVE_FIELDS}from"@vlian/utils";
@@ -1,39 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get TraceIdGenerator () {
13
- return _logger.TraceIdGenerator;
14
- },
15
- get clearCurrentTraceId () {
16
- return _logger.clearCurrentTraceId;
17
- },
18
- get generateTraceId () {
19
- return _logger.generateTraceId;
20
- },
21
- get getCurrentTraceId () {
22
- return _logger.getCurrentTraceId;
23
- },
24
- get getTraceIdGenerator () {
25
- return _logger.getTraceIdGenerator;
26
- },
27
- get initTraceIdGenerator () {
28
- return _logger.initTraceIdGenerator;
29
- },
30
- get parseTraceId () {
31
- return _logger.parseTraceId;
32
- },
33
- get setCurrentTraceId () {
34
- return _logger.setCurrentTraceId;
35
- }
36
- });
37
- const _logger = require("@vlian/logger");
38
-
39
- //# sourceMappingURL=traceId.js.map
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 TraceIdGenerator(){return _logger.TraceIdGenerator},get clearCurrentTraceId(){return _logger.clearCurrentTraceId},get generateTraceId(){return _logger.generateTraceId},get getCurrentTraceId(){return _logger.getCurrentTraceId},get getTraceIdGenerator(){return _logger.getTraceIdGenerator},get initTraceIdGenerator(){return _logger.initTraceIdGenerator},get parseTraceId(){return _logger.parseTraceId},get setCurrentTraceId(){return _logger.setCurrentTraceId}});const _logger=require("@vlian/logger");
@@ -1,3 +1 @@
1
- export { TraceIdGenerator, initTraceIdGenerator, getTraceIdGenerator, generateTraceId, parseTraceId, setCurrentTraceId, getCurrentTraceId, clearCurrentTraceId } from "@vlian/logger";
2
-
3
- //# sourceMappingURL=traceId.js.map
1
+ export{TraceIdGenerator,initTraceIdGenerator,getTraceIdGenerator,generateTraceId,parseTraceId,setCurrentTraceId,getCurrentTraceId,clearCurrentTraceId}from"@vlian/logger";
@@ -1,21 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get Validator () {
13
- return _utils.Validator;
14
- },
15
- get commonSchemas () {
16
- return _utils.commonSchemas;
17
- }
18
- });
19
- const _utils = require("@vlian/utils");
20
-
21
- //# sourceMappingURL=validation.js.map
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 Validator(){return _utils.Validator},get commonSchemas(){return _utils.commonSchemas}});const _utils=require("@vlian/utils");
@@ -1,3 +1 @@
1
- export { Validator, commonSchemas } from "@vlian/utils";
2
-
3
- //# sourceMappingURL=validation.js.map
1
+ export{Validator,commonSchemas}from"@vlian/utils";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vlian/framework",
3
- "version": "1.2.57",
3
+ "version": "1.2.60",
4
4
  "private": false,
5
5
  "packageManager": "pnpm@10.27.0",
6
6
  "description": "Secra Framework - 一个现代化的低代码框架",
@@ -82,6 +82,11 @@
82
82
  "import": "./dist/components/*.js",
83
83
  "require": "./dist/components/*.cjs"
84
84
  },
85
+ "./kernel/*": {
86
+ "types": "./dist/kernel/index.d.ts",
87
+ "import": "./dist/kernel/index.js",
88
+ "require": "./dist/kernel/index.cjs"
89
+ },
85
90
  "./package.json": "./package.json"
86
91
  },
87
92
  "typesVersions": {
@@ -183,7 +188,6 @@
183
188
  "@swc/core": "^1.15.8",
184
189
  "@testing-library/jest-dom": "^6.9.1",
185
190
  "@testing-library/react": "^16.3.1",
186
- "@types/dompurify": "^3.2.0",
187
191
  "@types/node": "^20.0.0",
188
192
  "@types/react": "^19.2.7",
189
193
  "@types/react-dom": "^19.2.3",
@@ -196,6 +200,7 @@
196
200
  "jsdom": "^27.4.0",
197
201
  "react": "^19.2.3",
198
202
  "react-dom": "^19.2.3",
203
+ "react-error-boundary": "^6.0.2",
199
204
  "react-i18next": "^16.5.8",
200
205
  "react-router-dom": "^7.12.0",
201
206
  "rollup": "^4.55.1",
@@ -214,16 +219,14 @@
214
219
  "react-dom": "^18.0.0 || ^19.0.0",
215
220
  "react-i18next": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
216
221
  "react-router-dom": "^7.0.0",
222
+ "react-error-boundary": "^6.0.0",
217
223
  "@vlian/csrf": "^0.1.2",
218
224
  "@vlian/logger": "^0.1.0",
219
225
  "@vlian/monitoring": "^0.1.0",
220
226
  "@vlian/request": "^0.1.0",
221
- "@vlian/utils": "^1.0.6"
227
+ "@vlian/utils": "^2.0.1"
222
228
  },
223
229
  "dependencies": {
224
- "@vlian/router": "^1.0.16",
225
- "dompurify": "^3.3.1",
226
- "react-error-boundary": "^6.0.2",
227
230
  "zod": "^4.3.5"
228
231
  },
229
232
  "publishConfig": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/analytics/index.ts"],"sourcesContent":["export { AnalyticsService, initAnalytics, getAnalytics } from '../utils/analytics';\nexport type { AnalyticsConfig, AnalyticsEvent, AnalyticsEventType } from '../utils/analytics';\n"],"names":["AnalyticsService","getAnalytics","initAnalytics"],"mappings":";;;;;;;;;;;QAASA;eAAAA,2BAAgB;;QAAiBC;eAAAA,uBAAY;;QAA3BC;eAAAA,wBAAa;;;2BAAsB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/analytics/index.ts"],"sourcesContent":["export { AnalyticsService, initAnalytics, getAnalytics } from '../utils/analytics';\nexport type { AnalyticsConfig, AnalyticsEvent, AnalyticsEventType } from '../utils/analytics';\n"],"names":["AnalyticsService","initAnalytics","getAnalytics"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,aAAa,EAAEC,YAAY,QAAQ,qBAAqB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.umd.js","sources":["utils/analytics.js"],"sourcesContent":["function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { logger } from \"./logger\";\nimport { SecurityUtils } from \"./security\";\n/**\n * 分析服务类\n */ export class AnalyticsService {\n /**\n * 启动批量上报定时器\n */ startBatchTimer() {\n if (this.batchTimer) {\n return;\n }\n this.batchTimer = setInterval(()=>{\n this.flush();\n }, this.config.batchInterval);\n }\n /**\n * 停止批量上报定时器\n */ stopBatchTimer() {\n if (this.batchTimer) {\n clearInterval(this.batchTimer);\n this.batchTimer = null;\n }\n }\n /**\n * 记录事件\n */ track(event) {\n if (!this.config.enabled) {\n return;\n }\n // 采样检查\n if (Math.random() > this.config.sampleRate) {\n return;\n }\n // 匿名化处理\n const anonymizedEvent = {\n ...event,\n timestamp: Date.now(),\n properties: this.anonymizeProperties(event.properties)\n };\n // 添加到队列\n this.eventQueue.push(anonymizedEvent);\n // 立即上报单个事件\n if (this.config.onEvent) {\n this.config.onEvent(anonymizedEvent);\n }\n // 检查是否需要批量上报\n if (this.eventQueue.length >= this.config.batchSize) {\n this.flush();\n }\n }\n /**\n * 记录页面浏览\n */ trackPageView(page, properties) {\n this.track({\n type: 'pageview',\n name: 'page_view',\n properties: {\n page,\n ...properties\n }\n });\n }\n /**\n * 记录点击事件\n */ trackClick(element, properties) {\n this.track({\n type: 'click',\n name: 'click',\n properties: {\n element,\n ...properties\n }\n });\n }\n /**\n * 记录自定义事件\n */ trackCustom(name, properties) {\n this.track({\n type: 'custom',\n name,\n properties\n });\n }\n /**\n * 记录错误事件\n */ trackError(error, properties) {\n this.track({\n type: 'error',\n name: 'error',\n properties: {\n errorName: error.name,\n errorMessage: error.message,\n errorStack: error.stack,\n ...properties\n }\n });\n }\n /**\n * 记录性能事件\n */ trackPerformance(metrics, properties) {\n this.track({\n type: 'performance',\n name: 'performance',\n properties: {\n ...metrics,\n ...properties\n }\n });\n }\n /**\n * 匿名化属性(使用深度脱敏)\n */ anonymizeProperties(properties) {\n if (!this.config.anonymize || !properties) {\n return properties;\n }\n // 使用深度脱敏处理\n return SecurityUtils.deepSanitize(properties);\n }\n /**\n * 刷新队列(批量上报)\n */ flush() {\n if (this.eventQueue.length === 0) {\n return;\n }\n const events = [\n ...this.eventQueue\n ];\n this.eventQueue = [];\n if (this.config.onBatch) {\n this.config.onBatch(events);\n }\n logger.debug(`分析服务批量上报 ${events.length} 个事件`);\n }\n /**\n * 启用分析\n */ enable() {\n this.config.enabled = true;\n this.startBatchTimer();\n }\n /**\n * 禁用分析\n */ disable() {\n this.config.enabled = false;\n this.stopBatchTimer();\n this.flush();\n }\n /**\n * 销毁服务\n */ destroy() {\n this.stopBatchTimer();\n this.flush();\n }\n constructor(config = {}){\n _define_property(this, \"config\", void 0);\n _define_property(this, \"eventQueue\", []);\n _define_property(this, \"batchTimer\", null);\n this.config = {\n enabled: config.enabled ?? true,\n sampleRate: config.sampleRate ?? 1.0,\n anonymize: config.anonymize ?? true,\n onEvent: config.onEvent ?? (()=>{}),\n onBatch: config.onBatch ?? (()=>{}),\n batchSize: config.batchSize ?? 10,\n batchInterval: config.batchInterval ?? 5000\n };\n if (this.config.enabled) {\n this.startBatchTimer();\n }\n }\n}\n/**\n * 默认分析服务实例\n */ let defaultAnalyticsService = null;\n/**\n * 初始化默认分析服务\n */ export function initAnalytics(config) {\n if (!defaultAnalyticsService) {\n defaultAnalyticsService = new AnalyticsService(config);\n }\n return defaultAnalyticsService;\n}\n/**\n * 获取默认分析服务\n */ export function getAnalytics() {\n if (!defaultAnalyticsService) {\n return initAnalytics();\n }\n return defaultAnalyticsService;\n}\n\n//# sourceMappingURL=analytics.js.map"],"names":["SecurityUtils","logger"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/LocaleSwitch.tsx"],"sourcesContent":["import React from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { useLocale } from '../core';\nimport type { LangType } from '../library/locale/types';\nimport {\n type PersistenceOptions,\n readPersistedValue,\n writePersistedValue,\n} from './persistence';\n\nconst DEFAULT_LOCALE_STORAGE_KEY = 'vlian:locale';\nconst DEFAULT_LOCALES: LangType[] = ['zh-CN', 'en-US'];\nconst DEFAULT_PERSISTENCE: PersistenceOptions = { enabled: true };\n\nconst DEFAULT_LABELS: Record<LangType, string> = {\n 'zh-CN': '中文',\n 'en-US': 'English',\n};\n\nexport interface LocaleSwitchRenderContext {\n locale: LangType;\n isChanging: boolean;\n setLocale: (locale: LangType) => void;\n locales: LangType[];\n labels: Record<LangType, string>;\n}\n\nexport interface LocaleSwitchProps {\n locales?: LangType[];\n labels?: Partial<Record<LangType, string>>;\n persistence?: PersistenceOptions;\n className?: string;\n style?: CSSProperties;\n onChange?: (locale: LangType) => void;\n render?: (context: LocaleSwitchRenderContext) => ReactNode;\n}\n\nfunction isLocale(value: string): value is LangType {\n return value === 'zh-CN' || value === 'en-US';\n}\n\nexport const LocaleSwitch: React.FC<LocaleSwitchProps> = ({\n locales = DEFAULT_LOCALES,\n labels = DEFAULT_LABELS,\n persistence,\n className,\n style,\n onChange,\n render,\n}) => {\n const { locale, setLocale, isChanging } = useLocale();\n const persistenceOptions = persistence || DEFAULT_PERSISTENCE;\n const hydratedRef = React.useRef(false);\n const lastWrittenLocaleRef = React.useRef<LangType | undefined>(undefined);\n\n const mergedLabels = React.useMemo<Record<LangType, string>>(\n () => ({\n ...DEFAULT_LABELS,\n ...labels,\n }),\n [labels]\n );\n\n React.useEffect(() => {\n if (hydratedRef.current) {\n return;\n }\n hydratedRef.current = true;\n\n const persistedLocale = readPersistedValue(persistenceOptions, DEFAULT_LOCALE_STORAGE_KEY);\n if (!persistedLocale || !isLocale(persistedLocale) || !locales.includes(persistedLocale)) {\n return;\n }\n\n if (persistedLocale !== locale) {\n setLocale(persistedLocale);\n }\n }, [locale, locales, persistenceOptions, setLocale]);\n\n React.useEffect(() => {\n if (lastWrittenLocaleRef.current === locale) {\n return;\n }\n\n writePersistedValue(locale, persistenceOptions, DEFAULT_LOCALE_STORAGE_KEY);\n lastWrittenLocaleRef.current = locale;\n }, [locale, persistenceOptions]);\n\n const handleSetLocale = React.useCallback(\n (nextLocale: LangType) => {\n if (nextLocale === locale) {\n return;\n }\n setLocale(nextLocale);\n onChange?.(nextLocale);\n },\n [locale, onChange, setLocale]\n );\n\n if (render) {\n return render({\n locale,\n isChanging: Boolean(isChanging),\n setLocale: handleSetLocale,\n locales,\n labels: mergedLabels,\n });\n }\n\n return (\n <label className={className} style={style}>\n <span style={{ display: 'none' }}>Language Switch</span>\n <select\n aria-label=\"Language Switch\"\n value={locale}\n onChange={(event) => handleSetLocale(event.target.value as LangType)}\n disabled={Boolean(isChanging)}\n >\n {locales.map((item) => (\n <option key={item} value={item}>\n {mergedLabels[item]}\n </option>\n ))}\n </select>\n </label>\n );\n};\n"],"names":["LocaleSwitch","DEFAULT_LOCALE_STORAGE_KEY","DEFAULT_LOCALES","DEFAULT_PERSISTENCE","enabled","DEFAULT_LABELS","isLocale","value","locales","labels","persistence","className","style","onChange","render","locale","setLocale","isChanging","useLocale","persistenceOptions","hydratedRef","React","useRef","lastWrittenLocaleRef","undefined","mergedLabels","useMemo","useEffect","current","persistedLocale","readPersistedValue","includes","writePersistedValue","handleSetLocale","useCallback","nextLocale","Boolean","label","span","display","select","aria-label","event","target","disabled","map","item","option"],"mappings":";;;;+BAyCaA;;;eAAAA;;;;8DAzCK;sBAEQ;6BAMnB;;;;;;AAEP,MAAMC,6BAA6B;AACnC,MAAMC,kBAA8B;IAAC;IAAS;CAAQ;AACtD,MAAMC,sBAA0C;IAAEC,SAAS;AAAK;AAEhE,MAAMC,iBAA2C;IAC/C,SAAS;IACT,SAAS;AACX;AAoBA,SAASC,SAASC,KAAa;IAC7B,OAAOA,UAAU,WAAWA,UAAU;AACxC;AAEO,MAAMP,eAA4C,CAAC,EACxDQ,UAAUN,eAAe,EACzBO,SAASJ,cAAc,EACvBK,WAAW,EACXC,SAAS,EACTC,KAAK,EACLC,QAAQ,EACRC,MAAM,EACP;IACC,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAEC,UAAU,EAAE,GAAGC,IAAAA,eAAS;IACnD,MAAMC,qBAAqBT,eAAeP;IAC1C,MAAMiB,cAAcC,cAAK,CAACC,MAAM,CAAC;IACjC,MAAMC,uBAAuBF,cAAK,CAACC,MAAM,CAAuBE;IAEhE,MAAMC,eAAeJ,cAAK,CAACK,OAAO,CAChC,IAAO,CAAA;YACL,GAAGrB,cAAc;YACjB,GAAGI,MAAM;QACX,CAAA,GACA;QAACA;KAAO;IAGVY,cAAK,CAACM,SAAS,CAAC;QACd,IAAIP,YAAYQ,OAAO,EAAE;YACvB;QACF;QACAR,YAAYQ,OAAO,GAAG;QAEtB,MAAMC,kBAAkBC,IAAAA,+BAAkB,EAACX,oBAAoBlB;QAC/D,IAAI,CAAC4B,mBAAmB,CAACvB,SAASuB,oBAAoB,CAACrB,QAAQuB,QAAQ,CAACF,kBAAkB;YACxF;QACF;QAEA,IAAIA,oBAAoBd,QAAQ;YAC9BC,UAAUa;QACZ;IACF,GAAG;QAACd;QAAQP;QAASW;QAAoBH;KAAU;IAEnDK,cAAK,CAACM,SAAS,CAAC;QACd,IAAIJ,qBAAqBK,OAAO,KAAKb,QAAQ;YAC3C;QACF;QAEAiB,IAAAA,gCAAmB,EAACjB,QAAQI,oBAAoBlB;QAChDsB,qBAAqBK,OAAO,GAAGb;IACjC,GAAG;QAACA;QAAQI;KAAmB;IAE/B,MAAMc,kBAAkBZ,cAAK,CAACa,WAAW,CACvC,CAACC;QACC,IAAIA,eAAepB,QAAQ;YACzB;QACF;QACAC,UAAUmB;QACVtB,WAAWsB;IACb,GACA;QAACpB;QAAQF;QAAUG;KAAU;IAG/B,IAAIF,QAAQ;QACV,OAAOA,OAAO;YACZC;YACAE,YAAYmB,QAAQnB;YACpBD,WAAWiB;YACXzB;YACAC,QAAQgB;QACV;IACF;IAEA,qBACE,sBAACY;QAAM1B,WAAWA;QAAWC,OAAOA;;0BAClC,qBAAC0B;gBAAK1B,OAAO;oBAAE2B,SAAS;gBAAO;0BAAG;;0BAClC,qBAACC;gBACCC,cAAW;gBACXlC,OAAOQ;gBACPF,UAAU,CAAC6B,QAAUT,gBAAgBS,MAAMC,MAAM,CAACpC,KAAK;gBACvDqC,UAAUR,QAAQnB;0BAEjBT,QAAQqC,GAAG,CAAC,CAACC,qBACZ,qBAACC;wBAAkBxC,OAAOuC;kCACvBrB,YAAY,CAACqB,KAAK;uBADRA;;;;AAOvB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/LocaleSwitch.tsx"],"sourcesContent":["import React from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { useLocale } from '../core';\nimport type { LangType } from '../library/locale/types';\nimport {\n type PersistenceOptions,\n readPersistedValue,\n writePersistedValue,\n} from './persistence';\n\nconst DEFAULT_LOCALE_STORAGE_KEY = 'vlian:locale';\nconst DEFAULT_LOCALES: LangType[] = ['zh-CN', 'en-US'];\nconst DEFAULT_PERSISTENCE: PersistenceOptions = { enabled: true };\n\nconst DEFAULT_LABELS: Record<LangType, string> = {\n 'zh-CN': '中文',\n 'en-US': 'English',\n};\n\nexport interface LocaleSwitchRenderContext {\n locale: LangType;\n isChanging: boolean;\n setLocale: (locale: LangType) => void;\n locales: LangType[];\n labels: Record<LangType, string>;\n}\n\nexport interface LocaleSwitchProps {\n locales?: LangType[];\n labels?: Partial<Record<LangType, string>>;\n persistence?: PersistenceOptions;\n className?: string;\n style?: CSSProperties;\n onChange?: (locale: LangType) => void;\n render?: (context: LocaleSwitchRenderContext) => ReactNode;\n}\n\nfunction isLocale(value: string): value is LangType {\n return value === 'zh-CN' || value === 'en-US';\n}\n\nexport const LocaleSwitch: React.FC<LocaleSwitchProps> = ({\n locales = DEFAULT_LOCALES,\n labels = DEFAULT_LABELS,\n persistence,\n className,\n style,\n onChange,\n render,\n}) => {\n const { locale, setLocale, isChanging } = useLocale();\n const persistenceOptions = persistence || DEFAULT_PERSISTENCE;\n const hydratedRef = React.useRef(false);\n const lastWrittenLocaleRef = React.useRef<LangType | undefined>(undefined);\n\n const mergedLabels = React.useMemo<Record<LangType, string>>(\n () => ({\n ...DEFAULT_LABELS,\n ...labels,\n }),\n [labels]\n );\n\n React.useEffect(() => {\n if (hydratedRef.current) {\n return;\n }\n hydratedRef.current = true;\n\n const persistedLocale = readPersistedValue(persistenceOptions, DEFAULT_LOCALE_STORAGE_KEY);\n if (!persistedLocale || !isLocale(persistedLocale) || !locales.includes(persistedLocale)) {\n return;\n }\n\n if (persistedLocale !== locale) {\n setLocale(persistedLocale);\n }\n }, [locale, locales, persistenceOptions, setLocale]);\n\n React.useEffect(() => {\n if (lastWrittenLocaleRef.current === locale) {\n return;\n }\n\n writePersistedValue(locale, persistenceOptions, DEFAULT_LOCALE_STORAGE_KEY);\n lastWrittenLocaleRef.current = locale;\n }, [locale, persistenceOptions]);\n\n const handleSetLocale = React.useCallback(\n (nextLocale: LangType) => {\n if (nextLocale === locale) {\n return;\n }\n setLocale(nextLocale);\n onChange?.(nextLocale);\n },\n [locale, onChange, setLocale]\n );\n\n if (render) {\n return render({\n locale,\n isChanging: Boolean(isChanging),\n setLocale: handleSetLocale,\n locales,\n labels: mergedLabels,\n });\n }\n\n return (\n <label className={className} style={style}>\n <span style={{ display: 'none' }}>Language Switch</span>\n <select\n aria-label=\"Language Switch\"\n value={locale}\n onChange={(event) => handleSetLocale(event.target.value as LangType)}\n disabled={Boolean(isChanging)}\n >\n {locales.map((item) => (\n <option key={item} value={item}>\n {mergedLabels[item]}\n </option>\n ))}\n </select>\n </label>\n );\n};\n"],"names":["React","useLocale","readPersistedValue","writePersistedValue","DEFAULT_LOCALE_STORAGE_KEY","DEFAULT_LOCALES","DEFAULT_PERSISTENCE","enabled","DEFAULT_LABELS","isLocale","value","LocaleSwitch","locales","labels","persistence","className","style","onChange","render","locale","setLocale","isChanging","persistenceOptions","hydratedRef","useRef","lastWrittenLocaleRef","undefined","mergedLabels","useMemo","useEffect","current","persistedLocale","includes","handleSetLocale","useCallback","nextLocale","Boolean","label","span","display","select","aria-label","event","target","disabled","map","item","option"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAE1B,SAASC,SAAS,QAAQ,UAAU;AAEpC,SAEEC,kBAAkB,EAClBC,mBAAmB,QACd,gBAAgB;AAEvB,MAAMC,6BAA6B;AACnC,MAAMC,kBAA8B;IAAC;IAAS;CAAQ;AACtD,MAAMC,sBAA0C;IAAEC,SAAS;AAAK;AAEhE,MAAMC,iBAA2C;IAC/C,SAAS;IACT,SAAS;AACX;AAoBA,SAASC,SAASC,KAAa;IAC7B,OAAOA,UAAU,WAAWA,UAAU;AACxC;AAEA,OAAO,MAAMC,eAA4C,CAAC,EACxDC,UAAUP,eAAe,EACzBQ,SAASL,cAAc,EACvBM,WAAW,EACXC,SAAS,EACTC,KAAK,EACLC,QAAQ,EACRC,MAAM,EACP;IACC,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAEC,UAAU,EAAE,GAAGpB;IAC1C,MAAMqB,qBAAqBR,eAAeR;IAC1C,MAAMiB,cAAcvB,MAAMwB,MAAM,CAAC;IACjC,MAAMC,uBAAuBzB,MAAMwB,MAAM,CAAuBE;IAEhE,MAAMC,eAAe3B,MAAM4B,OAAO,CAChC,IAAO,CAAA;YACL,GAAGpB,cAAc;YACjB,GAAGK,MAAM;QACX,CAAA,GACA;QAACA;KAAO;IAGVb,MAAM6B,SAAS,CAAC;QACd,IAAIN,YAAYO,OAAO,EAAE;YACvB;QACF;QACAP,YAAYO,OAAO,GAAG;QAEtB,MAAMC,kBAAkB7B,mBAAmBoB,oBAAoBlB;QAC/D,IAAI,CAAC2B,mBAAmB,CAACtB,SAASsB,oBAAoB,CAACnB,QAAQoB,QAAQ,CAACD,kBAAkB;YACxF;QACF;QAEA,IAAIA,oBAAoBZ,QAAQ;YAC9BC,UAAUW;QACZ;IACF,GAAG;QAACZ;QAAQP;QAASU;QAAoBF;KAAU;IAEnDpB,MAAM6B,SAAS,CAAC;QACd,IAAIJ,qBAAqBK,OAAO,KAAKX,QAAQ;YAC3C;QACF;QAEAhB,oBAAoBgB,QAAQG,oBAAoBlB;QAChDqB,qBAAqBK,OAAO,GAAGX;IACjC,GAAG;QAACA;QAAQG;KAAmB;IAE/B,MAAMW,kBAAkBjC,MAAMkC,WAAW,CACvC,CAACC;QACC,IAAIA,eAAehB,QAAQ;YACzB;QACF;QACAC,UAAUe;QACVlB,WAAWkB;IACb,GACA;QAAChB;QAAQF;QAAUG;KAAU;IAG/B,IAAIF,QAAQ;QACV,OAAOA,OAAO;YACZC;YACAE,YAAYe,QAAQf;YACpBD,WAAWa;YACXrB;YACAC,QAAQc;QACV;IACF;IAEA,qBACE,MAACU;QAAMtB,WAAWA;QAAWC,OAAOA;;0BAClC,KAACsB;gBAAKtB,OAAO;oBAAEuB,SAAS;gBAAO;0BAAG;;0BAClC,KAACC;gBACCC,cAAW;gBACX/B,OAAOS;gBACPF,UAAU,CAACyB,QAAUT,gBAAgBS,MAAMC,MAAM,CAACjC,KAAK;gBACvDkC,UAAUR,QAAQf;0BAEjBT,QAAQiC,GAAG,CAAC,CAACC,qBACZ,KAACC;wBAAkBrC,OAAOoC;kCACvBnB,YAAY,CAACmB,KAAK;uBADRA;;;;AAOvB,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/ThemeSwitch.tsx"],"sourcesContent":["import React from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { useTheme } from '../core';\nimport type { ThemeMode } from '../core/kernel';\nimport {\n type PersistenceOptions,\n readPersistedValue,\n writePersistedValue,\n} from './persistence';\n\nconst DEFAULT_THEME_STORAGE_KEY = 'vlian:theme-mode';\nconst DEFAULT_MODES: ThemeMode[] = ['light', 'dark', 'system'];\nconst DEFAULT_PERSISTENCE: PersistenceOptions = { enabled: true };\n\nconst DEFAULT_LABELS: Record<ThemeMode, string> = {\n light: '浅色',\n dark: '深色',\n system: '跟随系统',\n};\n\nexport interface ThemeSwitchRenderContext {\n mode: ThemeMode;\n setMode: (mode: ThemeMode) => void;\n modes: ThemeMode[];\n labels: Record<ThemeMode, string>;\n}\n\nexport interface ThemeSwitchProps {\n modes?: ThemeMode[];\n labels?: Partial<Record<ThemeMode, string>>;\n persistence?: PersistenceOptions;\n className?: string;\n style?: CSSProperties;\n onChange?: (mode: ThemeMode) => void;\n render?: (context: ThemeSwitchRenderContext) => ReactNode;\n}\n\nfunction isThemeMode(value: string): value is ThemeMode {\n return value === 'light' || value === 'dark' || value === 'system';\n}\n\nexport const ThemeSwitch: React.FC<ThemeSwitchProps> = ({\n modes = DEFAULT_MODES,\n labels = DEFAULT_LABELS,\n persistence,\n className,\n style,\n onChange,\n render,\n}) => {\n const { theme, setTheme } = useTheme();\n const persistenceOptions = persistence || DEFAULT_PERSISTENCE;\n const hydratedRef = React.useRef(false);\n const lastWrittenModeRef = React.useRef<ThemeMode | undefined>(undefined);\n\n const mergedLabels = React.useMemo<Record<ThemeMode, string>>(\n () => ({\n ...DEFAULT_LABELS,\n ...labels,\n }),\n [labels]\n );\n\n React.useEffect(() => {\n if (hydratedRef.current) {\n return;\n }\n hydratedRef.current = true;\n\n const persistedMode = readPersistedValue(persistenceOptions, DEFAULT_THEME_STORAGE_KEY);\n if (!persistedMode || !isThemeMode(persistedMode) || !modes.includes(persistedMode)) {\n return;\n }\n\n if (persistedMode !== theme.mode) {\n setTheme((prev) => ({\n ...prev,\n mode: persistedMode,\n }));\n }\n }, [modes, persistenceOptions, setTheme, theme.mode]);\n\n React.useEffect(() => {\n const mode = theme.mode;\n if (!mode || lastWrittenModeRef.current === mode) {\n return;\n }\n\n writePersistedValue(mode, persistenceOptions, DEFAULT_THEME_STORAGE_KEY);\n lastWrittenModeRef.current = mode;\n }, [persistenceOptions, theme.mode]);\n\n const currentMode: ThemeMode = (theme.mode || 'light') as ThemeMode;\n\n const setMode = React.useCallback(\n (mode: ThemeMode) => {\n if (mode === currentMode) {\n return;\n }\n setTheme((prev) => ({\n ...prev,\n mode,\n }));\n onChange?.(mode);\n },\n [currentMode, onChange, setTheme]\n );\n\n if (render) {\n return render({\n mode: currentMode,\n setMode,\n modes,\n labels: mergedLabels,\n });\n }\n\n return (\n <div className={className} style={style} role=\"group\" aria-label=\"Theme Switch\">\n {modes.map((mode) => (\n <button\n key={mode}\n type=\"button\"\n onClick={() => setMode(mode)}\n aria-pressed={currentMode === mode}\n >\n {mergedLabels[mode]}\n </button>\n ))}\n </div>\n );\n};\n"],"names":["ThemeSwitch","DEFAULT_THEME_STORAGE_KEY","DEFAULT_MODES","DEFAULT_PERSISTENCE","enabled","DEFAULT_LABELS","light","dark","system","isThemeMode","value","modes","labels","persistence","className","style","onChange","render","theme","setTheme","useTheme","persistenceOptions","hydratedRef","React","useRef","lastWrittenModeRef","undefined","mergedLabels","useMemo","useEffect","current","persistedMode","readPersistedValue","includes","mode","prev","writePersistedValue","currentMode","setMode","useCallback","div","role","aria-label","map","button","type","onClick","aria-pressed"],"mappings":";;;;+BAyCaA;;;eAAAA;;;;8DAzCK;sBAEO;6BAMlB;;;;;;AAEP,MAAMC,4BAA4B;AAClC,MAAMC,gBAA6B;IAAC;IAAS;IAAQ;CAAS;AAC9D,MAAMC,sBAA0C;IAAEC,SAAS;AAAK;AAEhE,MAAMC,iBAA4C;IAChDC,OAAO;IACPC,MAAM;IACNC,QAAQ;AACV;AAmBA,SAASC,YAAYC,KAAa;IAChC,OAAOA,UAAU,WAAWA,UAAU,UAAUA,UAAU;AAC5D;AAEO,MAAMV,cAA0C,CAAC,EACtDW,QAAQT,aAAa,EACrBU,SAASP,cAAc,EACvBQ,WAAW,EACXC,SAAS,EACTC,KAAK,EACLC,QAAQ,EACRC,MAAM,EACP;IACC,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGC,IAAAA,cAAQ;IACpC,MAAMC,qBAAqBR,eAAeV;IAC1C,MAAMmB,cAAcC,cAAK,CAACC,MAAM,CAAC;IACjC,MAAMC,qBAAqBF,cAAK,CAACC,MAAM,CAAwBE;IAE/D,MAAMC,eAAeJ,cAAK,CAACK,OAAO,CAChC,IAAO,CAAA;YACL,GAAGvB,cAAc;YACjB,GAAGO,MAAM;QACX,CAAA,GACA;QAACA;KAAO;IAGVW,cAAK,CAACM,SAAS,CAAC;QACd,IAAIP,YAAYQ,OAAO,EAAE;YACvB;QACF;QACAR,YAAYQ,OAAO,GAAG;QAEtB,MAAMC,gBAAgBC,IAAAA,+BAAkB,EAACX,oBAAoBpB;QAC7D,IAAI,CAAC8B,iBAAiB,CAACtB,YAAYsB,kBAAkB,CAACpB,MAAMsB,QAAQ,CAACF,gBAAgB;YACnF;QACF;QAEA,IAAIA,kBAAkBb,MAAMgB,IAAI,EAAE;YAChCf,SAAS,CAACgB,OAAU,CAAA;oBAClB,GAAGA,IAAI;oBACPD,MAAMH;gBACR,CAAA;QACF;IACF,GAAG;QAACpB;QAAOU;QAAoBF;QAAUD,MAAMgB,IAAI;KAAC;IAEpDX,cAAK,CAACM,SAAS,CAAC;QACd,MAAMK,OAAOhB,MAAMgB,IAAI;QACvB,IAAI,CAACA,QAAQT,mBAAmBK,OAAO,KAAKI,MAAM;YAChD;QACF;QAEAE,IAAAA,gCAAmB,EAACF,MAAMb,oBAAoBpB;QAC9CwB,mBAAmBK,OAAO,GAAGI;IAC/B,GAAG;QAACb;QAAoBH,MAAMgB,IAAI;KAAC;IAEnC,MAAMG,cAA0BnB,MAAMgB,IAAI,IAAI;IAE9C,MAAMI,UAAUf,cAAK,CAACgB,WAAW,CAC/B,CAACL;QACC,IAAIA,SAASG,aAAa;YACxB;QACF;QACAlB,SAAS,CAACgB,OAAU,CAAA;gBAClB,GAAGA,IAAI;gBACPD;YACF,CAAA;QACAlB,WAAWkB;IACb,GACA;QAACG;QAAarB;QAAUG;KAAS;IAGnC,IAAIF,QAAQ;QACV,OAAOA,OAAO;YACZiB,MAAMG;YACNC;YACA3B;YACAC,QAAQe;QACV;IACF;IAEA,qBACE,qBAACa;QAAI1B,WAAWA;QAAWC,OAAOA;QAAO0B,MAAK;QAAQC,cAAW;kBAC9D/B,MAAMgC,GAAG,CAAC,CAACT,qBACV,qBAACU;gBAECC,MAAK;gBACLC,SAAS,IAAMR,QAAQJ;gBACvBa,gBAAcV,gBAAgBH;0BAE7BP,YAAY,CAACO,KAAK;eALdA;;AAUf"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/ThemeSwitch.tsx"],"sourcesContent":["import React from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { useTheme } from '../core';\nimport type { ThemeMode } from '../core/kernel';\nimport {\n type PersistenceOptions,\n readPersistedValue,\n writePersistedValue,\n} from './persistence';\n\nconst DEFAULT_THEME_STORAGE_KEY = 'vlian:theme-mode';\nconst DEFAULT_MODES: ThemeMode[] = ['light', 'dark', 'system'];\nconst DEFAULT_PERSISTENCE: PersistenceOptions = { enabled: true };\n\nconst DEFAULT_LABELS: Record<ThemeMode, string> = {\n light: '浅色',\n dark: '深色',\n system: '跟随系统',\n};\n\nexport interface ThemeSwitchRenderContext {\n mode: ThemeMode;\n setMode: (mode: ThemeMode) => void;\n modes: ThemeMode[];\n labels: Record<ThemeMode, string>;\n}\n\nexport interface ThemeSwitchProps {\n modes?: ThemeMode[];\n labels?: Partial<Record<ThemeMode, string>>;\n persistence?: PersistenceOptions;\n className?: string;\n style?: CSSProperties;\n onChange?: (mode: ThemeMode) => void;\n render?: (context: ThemeSwitchRenderContext) => ReactNode;\n}\n\nfunction isThemeMode(value: string): value is ThemeMode {\n return value === 'light' || value === 'dark' || value === 'system';\n}\n\nexport const ThemeSwitch: React.FC<ThemeSwitchProps> = ({\n modes = DEFAULT_MODES,\n labels = DEFAULT_LABELS,\n persistence,\n className,\n style,\n onChange,\n render,\n}) => {\n const { theme, setTheme } = useTheme();\n const persistenceOptions = persistence || DEFAULT_PERSISTENCE;\n const hydratedRef = React.useRef(false);\n const lastWrittenModeRef = React.useRef<ThemeMode | undefined>(undefined);\n\n const mergedLabels = React.useMemo<Record<ThemeMode, string>>(\n () => ({\n ...DEFAULT_LABELS,\n ...labels,\n }),\n [labels]\n );\n\n React.useEffect(() => {\n if (hydratedRef.current) {\n return;\n }\n hydratedRef.current = true;\n\n const persistedMode = readPersistedValue(persistenceOptions, DEFAULT_THEME_STORAGE_KEY);\n if (!persistedMode || !isThemeMode(persistedMode) || !modes.includes(persistedMode)) {\n return;\n }\n\n if (persistedMode !== theme.mode) {\n setTheme((prev) => ({\n ...prev,\n mode: persistedMode,\n }));\n }\n }, [modes, persistenceOptions, setTheme, theme.mode]);\n\n React.useEffect(() => {\n const mode = theme.mode;\n if (!mode || lastWrittenModeRef.current === mode) {\n return;\n }\n\n writePersistedValue(mode, persistenceOptions, DEFAULT_THEME_STORAGE_KEY);\n lastWrittenModeRef.current = mode;\n }, [persistenceOptions, theme.mode]);\n\n const currentMode: ThemeMode = (theme.mode || 'light') as ThemeMode;\n\n const setMode = React.useCallback(\n (mode: ThemeMode) => {\n if (mode === currentMode) {\n return;\n }\n setTheme((prev) => ({\n ...prev,\n mode,\n }));\n onChange?.(mode);\n },\n [currentMode, onChange, setTheme]\n );\n\n if (render) {\n return render({\n mode: currentMode,\n setMode,\n modes,\n labels: mergedLabels,\n });\n }\n\n return (\n <div className={className} style={style} role=\"group\" aria-label=\"Theme Switch\">\n {modes.map((mode) => (\n <button\n key={mode}\n type=\"button\"\n onClick={() => setMode(mode)}\n aria-pressed={currentMode === mode}\n >\n {mergedLabels[mode]}\n </button>\n ))}\n </div>\n );\n};\n"],"names":["React","useTheme","readPersistedValue","writePersistedValue","DEFAULT_THEME_STORAGE_KEY","DEFAULT_MODES","DEFAULT_PERSISTENCE","enabled","DEFAULT_LABELS","light","dark","system","isThemeMode","value","ThemeSwitch","modes","labels","persistence","className","style","onChange","render","theme","setTheme","persistenceOptions","hydratedRef","useRef","lastWrittenModeRef","undefined","mergedLabels","useMemo","useEffect","current","persistedMode","includes","mode","prev","currentMode","setMode","useCallback","div","role","aria-label","map","button","type","onClick","aria-pressed"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAE1B,SAASC,QAAQ,QAAQ,UAAU;AAEnC,SAEEC,kBAAkB,EAClBC,mBAAmB,QACd,gBAAgB;AAEvB,MAAMC,4BAA4B;AAClC,MAAMC,gBAA6B;IAAC;IAAS;IAAQ;CAAS;AAC9D,MAAMC,sBAA0C;IAAEC,SAAS;AAAK;AAEhE,MAAMC,iBAA4C;IAChDC,OAAO;IACPC,MAAM;IACNC,QAAQ;AACV;AAmBA,SAASC,YAAYC,KAAa;IAChC,OAAOA,UAAU,WAAWA,UAAU,UAAUA,UAAU;AAC5D;AAEA,OAAO,MAAMC,cAA0C,CAAC,EACtDC,QAAQV,aAAa,EACrBW,SAASR,cAAc,EACvBS,WAAW,EACXC,SAAS,EACTC,KAAK,EACLC,QAAQ,EACRC,MAAM,EACP;IACC,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGtB;IAC5B,MAAMuB,qBAAqBP,eAAeX;IAC1C,MAAMmB,cAAczB,MAAM0B,MAAM,CAAC;IACjC,MAAMC,qBAAqB3B,MAAM0B,MAAM,CAAwBE;IAE/D,MAAMC,eAAe7B,MAAM8B,OAAO,CAChC,IAAO,CAAA;YACL,GAAGtB,cAAc;YACjB,GAAGQ,MAAM;QACX,CAAA,GACA;QAACA;KAAO;IAGVhB,MAAM+B,SAAS,CAAC;QACd,IAAIN,YAAYO,OAAO,EAAE;YACvB;QACF;QACAP,YAAYO,OAAO,GAAG;QAEtB,MAAMC,gBAAgB/B,mBAAmBsB,oBAAoBpB;QAC7D,IAAI,CAAC6B,iBAAiB,CAACrB,YAAYqB,kBAAkB,CAAClB,MAAMmB,QAAQ,CAACD,gBAAgB;YACnF;QACF;QAEA,IAAIA,kBAAkBX,MAAMa,IAAI,EAAE;YAChCZ,SAAS,CAACa,OAAU,CAAA;oBAClB,GAAGA,IAAI;oBACPD,MAAMF;gBACR,CAAA;QACF;IACF,GAAG;QAAClB;QAAOS;QAAoBD;QAAUD,MAAMa,IAAI;KAAC;IAEpDnC,MAAM+B,SAAS,CAAC;QACd,MAAMI,OAAOb,MAAMa,IAAI;QACvB,IAAI,CAACA,QAAQR,mBAAmBK,OAAO,KAAKG,MAAM;YAChD;QACF;QAEAhC,oBAAoBgC,MAAMX,oBAAoBpB;QAC9CuB,mBAAmBK,OAAO,GAAGG;IAC/B,GAAG;QAACX;QAAoBF,MAAMa,IAAI;KAAC;IAEnC,MAAME,cAA0Bf,MAAMa,IAAI,IAAI;IAE9C,MAAMG,UAAUtC,MAAMuC,WAAW,CAC/B,CAACJ;QACC,IAAIA,SAASE,aAAa;YACxB;QACF;QACAd,SAAS,CAACa,OAAU,CAAA;gBAClB,GAAGA,IAAI;gBACPD;YACF,CAAA;QACAf,WAAWe;IACb,GACA;QAACE;QAAajB;QAAUG;KAAS;IAGnC,IAAIF,QAAQ;QACV,OAAOA,OAAO;YACZc,MAAME;YACNC;YACAvB;YACAC,QAAQa;QACV;IACF;IAEA,qBACE,KAACW;QAAItB,WAAWA;QAAWC,OAAOA;QAAOsB,MAAK;QAAQC,cAAW;kBAC9D3B,MAAM4B,GAAG,CAAC,CAACR,qBACV,KAACS;gBAECC,MAAK;gBACLC,SAAS,IAAMR,QAAQH;gBACvBY,gBAAcV,gBAAgBF;0BAE7BN,YAAY,CAACM,KAAK;eALdA;;AAUf,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["export { ThemeSwitch } from './ThemeSwitch';\nexport type { ThemeSwitchProps, ThemeSwitchRenderContext } from './ThemeSwitch';\n\nexport { LocaleSwitch } from './LocaleSwitch';\nexport type { LocaleSwitchProps, LocaleSwitchRenderContext } from './LocaleSwitch';\n\nexport type { PersistenceOptions, StorageLike } from './persistence';\n"],"names":["LocaleSwitch","ThemeSwitch"],"mappings":";;;;;;;;;;;QAGSA;eAAAA,0BAAY;;QAHZC;eAAAA,wBAAW;;;6BAAQ;8BAGC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["export { ThemeSwitch } from './ThemeSwitch';\nexport type { ThemeSwitchProps, ThemeSwitchRenderContext } from './ThemeSwitch';\n\nexport { LocaleSwitch } from './LocaleSwitch';\nexport type { LocaleSwitchProps, LocaleSwitchRenderContext } from './LocaleSwitch';\n\nexport type { PersistenceOptions, StorageLike } from './persistence';\n"],"names":["ThemeSwitch","LocaleSwitch"],"mappings":"AAAA,SAASA,WAAW,QAAQ,gBAAgB;AAG5C,SAASC,YAAY,QAAQ,iBAAiB"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/persistence.ts"],"sourcesContent":["export interface StorageLike {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n}\n\nexport interface PersistenceOptions {\n enabled?: boolean;\n key?: string;\n storage?: StorageLike;\n}\n\nexport function resolveStorage(storage?: StorageLike): StorageLike | null {\n if (storage) {\n return storage;\n }\n\n if (typeof window === 'undefined' || !window.localStorage) {\n return null;\n }\n\n return window.localStorage;\n}\n\nexport function readPersistedValue(\n options: PersistenceOptions,\n defaultKey: string\n): string | null {\n if (options.enabled === false) {\n return null;\n }\n\n const targetStorage = resolveStorage(options.storage);\n if (!targetStorage) {\n return null;\n }\n\n try {\n return targetStorage.getItem(options.key || defaultKey);\n } catch {\n return null;\n }\n}\n\nexport function writePersistedValue(\n value: string | undefined,\n options: PersistenceOptions,\n defaultKey: string\n): void {\n if (options.enabled === false || !value) {\n return;\n }\n\n const targetStorage = resolveStorage(options.storage);\n if (!targetStorage) {\n return;\n }\n\n try {\n targetStorage.setItem(options.key || defaultKey, value);\n } catch {\n // Ignore storage write failures (private mode / quota / disabled storage).\n }\n}\n"],"names":["readPersistedValue","resolveStorage","writePersistedValue","storage","window","localStorage","options","defaultKey","enabled","targetStorage","getItem","key","value","setItem"],"mappings":";;;;;;;;;;;QAuBgBA;eAAAA;;QAZAC;eAAAA;;QAgCAC;eAAAA;;;AAhCT,SAASD,eAAeE,OAAqB;IAClD,IAAIA,SAAS;QACX,OAAOA;IACT;IAEA,IAAI,OAAOC,WAAW,eAAe,CAACA,OAAOC,YAAY,EAAE;QACzD,OAAO;IACT;IAEA,OAAOD,OAAOC,YAAY;AAC5B;AAEO,SAASL,mBACdM,OAA2B,EAC3BC,UAAkB;IAElB,IAAID,QAAQE,OAAO,KAAK,OAAO;QAC7B,OAAO;IACT;IAEA,MAAMC,gBAAgBR,eAAeK,QAAQH,OAAO;IACpD,IAAI,CAACM,eAAe;QAClB,OAAO;IACT;IAEA,IAAI;QACF,OAAOA,cAAcC,OAAO,CAACJ,QAAQK,GAAG,IAAIJ;IAC9C,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAEO,SAASL,oBACdU,KAAyB,EACzBN,OAA2B,EAC3BC,UAAkB;IAElB,IAAID,QAAQE,OAAO,KAAK,SAAS,CAACI,OAAO;QACvC;IACF;IAEA,MAAMH,gBAAgBR,eAAeK,QAAQH,OAAO;IACpD,IAAI,CAACM,eAAe;QAClB;IACF;IAEA,IAAI;QACFA,cAAcI,OAAO,CAACP,QAAQK,GAAG,IAAIJ,YAAYK;IACnD,EAAE,OAAM;IACN,2EAA2E;IAC7E;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/persistence.ts"],"sourcesContent":["export interface StorageLike {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n}\n\nexport interface PersistenceOptions {\n enabled?: boolean;\n key?: string;\n storage?: StorageLike;\n}\n\nexport function resolveStorage(storage?: StorageLike): StorageLike | null {\n if (storage) {\n return storage;\n }\n\n if (typeof window === 'undefined' || !window.localStorage) {\n return null;\n }\n\n return window.localStorage;\n}\n\nexport function readPersistedValue(\n options: PersistenceOptions,\n defaultKey: string\n): string | null {\n if (options.enabled === false) {\n return null;\n }\n\n const targetStorage = resolveStorage(options.storage);\n if (!targetStorage) {\n return null;\n }\n\n try {\n return targetStorage.getItem(options.key || defaultKey);\n } catch {\n return null;\n }\n}\n\nexport function writePersistedValue(\n value: string | undefined,\n options: PersistenceOptions,\n defaultKey: string\n): void {\n if (options.enabled === false || !value) {\n return;\n }\n\n const targetStorage = resolveStorage(options.storage);\n if (!targetStorage) {\n return;\n }\n\n try {\n targetStorage.setItem(options.key || defaultKey, value);\n } catch {\n // Ignore storage write failures (private mode / quota / disabled storage).\n }\n}\n"],"names":["resolveStorage","storage","window","localStorage","readPersistedValue","options","defaultKey","enabled","targetStorage","getItem","key","writePersistedValue","value","setItem"],"mappings":"AAWA,OAAO,SAASA,eAAeC,OAAqB;IAClD,IAAIA,SAAS;QACX,OAAOA;IACT;IAEA,IAAI,OAAOC,WAAW,eAAe,CAACA,OAAOC,YAAY,EAAE;QACzD,OAAO;IACT;IAEA,OAAOD,OAAOC,YAAY;AAC5B;AAEA,OAAO,SAASC,mBACdC,OAA2B,EAC3BC,UAAkB;IAElB,IAAID,QAAQE,OAAO,KAAK,OAAO;QAC7B,OAAO;IACT;IAEA,MAAMC,gBAAgBR,eAAeK,QAAQJ,OAAO;IACpD,IAAI,CAACO,eAAe;QAClB,OAAO;IACT;IAEA,IAAI;QACF,OAAOA,cAAcC,OAAO,CAACJ,QAAQK,GAAG,IAAIJ;IAC9C,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAEA,OAAO,SAASK,oBACdC,KAAyB,EACzBP,OAA2B,EAC3BC,UAAkB;IAElB,IAAID,QAAQE,OAAO,KAAK,SAAS,CAACK,OAAO;QACvC;IACF;IAEA,MAAMJ,gBAAgBR,eAAeK,QAAQJ,OAAO;IACpD,IAAI,CAACO,eAAe;QAClB;IACF;IAEA,IAAI;QACFA,cAAcK,OAAO,CAACR,QAAQK,GAAG,IAAIJ,YAAYM;IACnD,EAAE,OAAM;IACN,2EAA2E;IAC7E;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/Test.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { logger } from '@vlian/logger';\n\nconst App: React.FC<{onComplete: () => void}> = ({onComplete}) => {\n useEffect(() => {\n logger.info('App mounted');\n onComplete()\n }, []);\n return (\n <div>App</div>\n );\n}\n\nexport default App;\n"],"names":["App","onComplete","useEffect","logger","info","div"],"mappings":";;;;+BAaA;;;eAAA;;;;+DAbiC;wBACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvB,MAAMA,MAA0C,CAAC,EAACC,UAAU,EAAC;IACzDC,IAAAA,gBAAS,EAAC;QACPC,cAAM,CAACC,IAAI,CAAC;QACXH;IACJ,GAAG,EAAE;IACL,qBACI,qBAACI;kBAAI;;AAEb;MAEA,WAAeL"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/Test.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { logger } from '@vlian/logger';\n\nconst App: React.FC<{onComplete: () => void}> = ({onComplete}) => {\n useEffect(() => {\n logger.info('App mounted');\n onComplete()\n }, []);\n return (\n <div>App</div>\n );\n}\n\nexport default App;\n"],"names":["React","useEffect","logger","App","onComplete","info","div"],"mappings":";AAAA,OAAOA,SAASC,SAAS,QAAQ,QAAQ;AACzC,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAMC,MAA0C,CAAC,EAACC,UAAU,EAAC;IACzDH,UAAU;QACPC,OAAOG,IAAI,CAAC;QACXD;IACJ,GAAG,EAAE;IACL,qBACI,KAACE;kBAAI;;AAEb;AAEA,eAAeH,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/AppContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback, useMemo, useEffect } from 'react';\nimport type { PropsWithChildren } from 'react';\nimport { setLang } from '../../library';\nimport type { LangType } from '../../library/locale/types';\nimport type { InitializationContext } from '../initialization';\nimport type {\n ThemeContextValue,\n LocaleContextValue,\n ConfigContextValue,\n AppContextValue,\n ThemeConfig,\n} from './AppContext.types';\nimport { appConfig } from '../config/AppConfig';\nimport type { StateManager } from '../../state';\nimport type { UIAppConfig, UIProviderConfig } from '../types';\n\n/**\n * 主题上下文\n */\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\n/**\n * 国际化上下文\n */\nconst LocaleContext = createContext<LocaleContextValue | undefined>(undefined);\n\n/**\n * 配置上下文\n */\nconst ConfigContext = createContext<ConfigContextValue | undefined>(undefined);\n\n/**\n * 状态管理器上下文\n */\nconst StateManagerContext = createContext<import('./AppContext.types').StateManagerContextValue | undefined>(undefined);\n\n/**\n * 主题 Provider 属性\n */\ninterface ThemeProviderProps extends PropsWithChildren {\n /**\n * 初始主题配置\n */\n initialTheme?: ThemeConfig;\n}\n\n/**\n * 主题 Provider 组件\n */\nconst ThemeProvider: React.FC<ThemeProviderProps> = React.memo(({ children, initialTheme }) => {\n const [theme, setThemeState] = useState<ThemeConfig>(initialTheme || appConfig.getTheme());\n\n const applyDocumentThemeClass = useCallback((mode?: ThemeConfig['mode']) => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const html = document.documentElement;\n html.classList.remove('light', 'dark');\n\n const resolvedMode = mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : (mode || 'light');\n\n html.classList.add(resolvedMode);\n }, []);\n\n // 同步到单例\n useEffect(() => {\n appConfig.setTheme(theme);\n }, [theme]);\n\n // 同步到文档 class,确保首屏与刷新时也能正确反映主题\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n applyDocumentThemeClass(theme.mode);\n\n if (theme.mode !== 'system') {\n return;\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const onSystemThemeChange = () => applyDocumentThemeClass('system');\n\n if (typeof mediaQuery.addEventListener === 'function') {\n mediaQuery.addEventListener('change', onSystemThemeChange);\n return () => mediaQuery.removeEventListener('change', onSystemThemeChange);\n }\n\n mediaQuery.addListener(onSystemThemeChange);\n return () => mediaQuery.removeListener(onSystemThemeChange);\n }, [applyDocumentThemeClass, theme.mode]);\n\n // 更新主题\n const setTheme = useCallback((newTheme: ThemeConfig | ((prev: ThemeConfig) => ThemeConfig)) => {\n setThemeState((prev) => {\n return typeof newTheme === 'function' ? newTheme(prev) : newTheme;\n });\n }, []);\n\n const value: ThemeContextValue = useMemo(\n () => ({\n theme,\n setTheme,\n }),\n [theme, setTheme]\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n});\n\nThemeProvider.displayName = 'ThemeProvider';\n\n/**\n * 国际化 Provider 属性\n */\ninterface LocaleProviderProps extends PropsWithChildren {\n /**\n * 初始语言\n */\n initialLocale?: LangType;\n}\n\n/**\n * 国际化 Provider 组件\n */\nconst LocaleProvider: React.FC<LocaleProviderProps> = React.memo(({ children, initialLocale }) => {\n const [locale, setLocaleState] = useState<LangType>(initialLocale || appConfig.getLocale());\n const [isChanging, setIsChanging] = useState(false);\n\n // 同步到单例\n useEffect(() => {\n appConfig.setLocale(locale);\n }, [locale]);\n\n // 更新语言,添加加载状态\n const setLocale = useCallback(\n (newLocale: LangType) => {\n if (newLocale === locale) {\n return;\n }\n setIsChanging(true);\n setLocaleState(newLocale);\n setLang(newLocale);\n // 使用 requestAnimationFrame 确保状态更新在下一帧\n requestAnimationFrame(() => {\n setIsChanging(false);\n });\n },\n [locale]\n );\n\n const value: LocaleContextValue = useMemo(\n () => ({\n locale,\n setLocale,\n isChanging,\n }),\n [locale, setLocale, isChanging]\n );\n\n return <LocaleContext.Provider value={value}>{children}</LocaleContext.Provider>;\n});\n\nLocaleProvider.displayName = 'LocaleProvider';\n\n/**\n * 配置 Provider 属性\n */\ninterface AppConfigProviderProps extends PropsWithChildren {\n /**\n * 初始 Ant Design 配置\n */\n initialAntdConfig?: UIProviderConfig;\n /**\n * 初始初始化上下文\n */\n initialInitializationContext?: InitializationContext;\n}\n\n/**\n * 配置 Provider 组件\n */\nconst AppConfigProvider: React.FC<AppConfigProviderProps> = React.memo(({\n children,\n initialAntdConfig,\n initialInitializationContext,\n}) => {\n const [antdConfig, setAntdConfigState] = useState<UIProviderConfig | undefined>(\n initialAntdConfig || appConfig.getAntdConfig()\n );\n const [initializationContext, setInitializationContextState] = useState<\n InitializationContext | undefined\n >(initialInitializationContext || appConfig.getInitializationContext());\n\n // 同步到单例\n useEffect(() => {\n appConfig.setAntdConfig(antdConfig);\n }, [antdConfig]);\n\n useEffect(() => {\n appConfig.setInitializationContext(initializationContext);\n }, [initializationContext]);\n\n // 更新 Ant Design 配置\n const setAntdConfig = useCallback((config: UIProviderConfig | undefined) => {\n setAntdConfigState(config);\n }, []);\n\n // 更新初始化上下文\n const setInitializationContext = useCallback((context: InitializationContext | undefined) => {\n setInitializationContextState(context);\n }, []);\n\n const value: ConfigContextValue = useMemo(\n () => ({\n antdConfig,\n initializationContext,\n setAntdConfig,\n setInitializationContext,\n }),\n [antdConfig, initializationContext, setAntdConfig, setInitializationContext]\n );\n\n return <ConfigContext.Provider value={value}>{children}</ConfigContext.Provider>;\n});\n\nAppConfigProvider.displayName = 'AppConfigProvider';\n\n/**\n * 应用上下文 Provider 属性\n */\nexport interface AppContextProviderProps extends PropsWithChildren {\n /**\n * 初始主题配置\n */\n initialTheme?: ThemeConfig;\n /**\n * 初始国际化语言\n */\n initialLocale?: LangType;\n /**\n * 初始 Ant Design 配置\n */\n initialAntdConfig?: UIProviderConfig;\n /**\n * 初始初始化上下文\n */\n initialInitializationContext?: InitializationContext;\n /**\n * 状态管理器实例\n */\n stateManager?: StateManager | null;\n /**\n * UI App 基础配置\n * \n * 用于传递 UI 适配层的应用级配置(如消息、通知、弹窗容器)。\n */\n antdApp?: UIAppConfig;\n /**\n * UI App 配置(无框架绑定)\n */\n uiApp?: UIAppConfig;\n}\n\n/**\n * 应用上下文 Provider 组件\n * \n * 组合所有 Provider,提供统一的全局上下文\n * \n * @example\n * ```tsx\n * <AppContextProvider\n * initialTheme={{ mode: 'light', primaryColor: '#1890ff' }}\n * initialLocale=\"zh-CN\"\n * >\n * <App />\n * </AppContextProvider>\n * ```\n */\n/**\n * 状态管理器 Provider 组件\n */\nconst StateManagerProvider: React.FC<PropsWithChildren<{ stateManager?: StateManager | null }>> = React.memo(({ children, stateManager }) => {\n const value = useMemo(\n () => ({\n stateManager: stateManager ?? null,\n }),\n [stateManager]\n );\n\n return <StateManagerContext.Provider value={value}>{children}</StateManagerContext.Provider>;\n});\n\nStateManagerProvider.displayName = 'StateManagerProvider';\n\nexport const AppContextProvider: React.FC<AppContextProviderProps> = ({\n children,\n initialTheme,\n initialLocale,\n initialAntdConfig,\n initialInitializationContext,\n stateManager,\n antdApp: _antdApp,\n uiApp: _uiApp,\n}) => {\n // 初始化单例配置(仅执行一次)\n const initializedRef = React.useRef(false);\n React.useEffect(() => {\n if (!initializedRef.current) {\n appConfig.initialize({\n theme: initialTheme,\n locale: initialLocale,\n antdConfig: initialAntdConfig,\n initializationContext: initialInitializationContext,\n });\n initializedRef.current = true;\n }\n }, [initialTheme, initialLocale, initialAntdConfig, initialInitializationContext]);\n\n return (\n <ThemeProvider initialTheme={initialTheme}>\n <LocaleProvider initialLocale={initialLocale}>\n <AppConfigProvider\n initialAntdConfig={initialAntdConfig}\n initialInitializationContext={initialInitializationContext}\n >\n <StateManagerProvider stateManager={stateManager}>\n {children}\n </StateManagerProvider>\n </AppConfigProvider>\n </LocaleProvider>\n </ThemeProvider>\n );\n};\n\n/**\n * 使用主题上下文 Hook\n * \n * @returns 主题上下文值\n * @throws 如果不在 ThemeProvider 内使用会抛出错误\n * \n * @example\n * ```tsx\n * const { theme, setTheme } = useTheme();\n * \n * // 切换主题\n * setTheme({ mode: 'dark' });\n * ```\n */\nexport const useTheme = (): ThemeContextValue => {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error('useTheme 必须在 AppContextProvider 内使用');\n }\n return context;\n};\n\n/**\n * 使用国际化上下文 Hook\n * \n * @returns 国际化上下文值\n * @throws 如果不在 LocaleProvider 内使用会抛出错误\n * \n * @example\n * ```tsx\n * const { locale, setLocale } = useLocale();\n * \n * // 切换语言\n * setLocale('en-US');\n * ```\n */\nexport const useLocale = (): LocaleContextValue => {\n const context = useContext(LocaleContext);\n if (context === undefined) {\n throw new Error('useLocale 必须在 AppContextProvider 内使用');\n }\n return context;\n};\n\n/**\n * 使用配置上下文 Hook\n * \n * @returns 配置上下文值\n * @throws 如果不在 ConfigProvider 内使用会抛出错误\n */\nexport const useConfig = (): ConfigContextValue => {\n const context = useContext(ConfigContext);\n if (context === undefined) {\n throw new Error('useConfig 必须在 AppContextProvider 内使用');\n }\n return context;\n};\n\n/**\n * 使用应用上下文 Hook(聚合所有上下文)\n * \n * @returns 应用上下文值\n * @throws 如果不在 AppContextProvider 内使用会抛出错误\n * \n * @example\n * ```tsx\n * const { theme, setTheme, locale, setLocale, antdConfig } = useAppContext();\n * \n * // 切换主题\n * setTheme({ mode: 'dark' });\n * \n * // 切换语言\n * setLocale('en-US');\n * ```\n */\n/**\n * 使用状态管理器 Hook\n * \n * @returns 状态管理器实例\n * @throws 如果不在 AppContextProvider 内使用会抛出错误\n * \n * @example\n * ```tsx\n * const stateManager = useStateManager();\n * \n * // 创建状态实例\n * const countState = stateManager?.createState(0);\n * ```\n */\nexport const useStateManager = (): StateManager | null => {\n const context = useContext(StateManagerContext);\n if (context === undefined) {\n throw new Error('useStateManager 必须在 AppContextProvider 内使用');\n }\n return context.stateManager;\n};\n\nexport const useAppContext = (): AppContextValue => {\n const themeContext = useTheme();\n const localeContext = useLocale();\n const configContext = useConfig();\n const stateManagerContext = useStateManager();\n\n // 优化:使用更细粒度的依赖项,避免不必要的重新计算\n // 只依赖实际变化的值,函数引用是稳定的\n return useMemo(\n () => ({\n theme: themeContext.theme,\n locale: localeContext.locale,\n antdConfig: configContext.antdConfig,\n initializationContext: configContext.initializationContext,\n stateManager: stateManagerContext,\n setTheme: themeContext.setTheme,\n setLocale: localeContext.setLocale,\n setAntdConfig: configContext.setAntdConfig,\n setInitializationContext: configContext.setInitializationContext,\n }),\n [\n themeContext.theme,\n localeContext.locale,\n configContext.antdConfig,\n configContext.initializationContext,\n stateManagerContext,\n // 函数引用是稳定的,不需要作为依赖\n themeContext.setTheme,\n localeContext.setLocale,\n configContext.setAntdConfig,\n configContext.setInitializationContext,\n ]\n );\n};\n"],"names":["AppContextProvider","useAppContext","useConfig","useLocale","useStateManager","useTheme","ThemeContext","createContext","undefined","LocaleContext","ConfigContext","StateManagerContext","ThemeProvider","React","memo","children","initialTheme","theme","setThemeState","useState","appConfig","getTheme","applyDocumentThemeClass","useCallback","mode","window","html","document","documentElement","classList","remove","resolvedMode","matchMedia","matches","add","useEffect","setTheme","mediaQuery","onSystemThemeChange","addEventListener","removeEventListener","addListener","removeListener","newTheme","prev","value","useMemo","Provider","displayName","LocaleProvider","initialLocale","locale","setLocaleState","getLocale","isChanging","setIsChanging","setLocale","newLocale","setLang","requestAnimationFrame","AppConfigProvider","initialAntdConfig","initialInitializationContext","antdConfig","setAntdConfigState","getAntdConfig","initializationContext","setInitializationContextState","getInitializationContext","setAntdConfig","setInitializationContext","config","context","StateManagerProvider","stateManager","antdApp","_antdApp","uiApp","_uiApp","initializedRef","useRef","current","initialize","useContext","Error","themeContext","localeContext","configContext","stateManagerContext"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/AppContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback, useMemo, useEffect } from 'react';\nimport type { PropsWithChildren } from 'react';\nimport { setLang } from '../../library';\nimport type { LangType } from '../../library/locale/types';\nimport type { InitializationContext } from '../initialization';\nimport type {\n ThemeContextValue,\n LocaleContextValue,\n ConfigContextValue,\n AppContextValue,\n ThemeConfig,\n} from './AppContext.types';\nimport { appConfig } from '../config/AppConfig';\nimport type { StateManager } from '../../state';\nimport type { UIAppConfig, UIProviderConfig } from '../types';\n\n/**\n * 主题上下文\n */\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\n/**\n * 国际化上下文\n */\nconst LocaleContext = createContext<LocaleContextValue | undefined>(undefined);\n\n/**\n * 配置上下文\n */\nconst ConfigContext = createContext<ConfigContextValue | undefined>(undefined);\n\n/**\n * 状态管理器上下文\n */\nconst StateManagerContext = createContext<import('./AppContext.types').StateManagerContextValue | undefined>(undefined);\n\n/**\n * 主题 Provider 属性\n */\ninterface ThemeProviderProps extends PropsWithChildren {\n /**\n * 初始主题配置\n */\n initialTheme?: ThemeConfig;\n}\n\n/**\n * 主题 Provider 组件\n */\nconst ThemeProvider: React.FC<ThemeProviderProps> = React.memo(({ children, initialTheme }) => {\n const [theme, setThemeState] = useState<ThemeConfig>(initialTheme || appConfig.getTheme());\n\n const applyDocumentThemeClass = useCallback((mode?: ThemeConfig['mode']) => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const html = document.documentElement;\n html.classList.remove('light', 'dark');\n\n const resolvedMode = mode === 'system'\n ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')\n : (mode || 'light');\n\n html.classList.add(resolvedMode);\n }, []);\n\n // 同步到单例\n useEffect(() => {\n appConfig.setTheme(theme);\n }, [theme]);\n\n // 同步到文档 class,确保首屏与刷新时也能正确反映主题\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n applyDocumentThemeClass(theme.mode);\n\n if (theme.mode !== 'system') {\n return;\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const onSystemThemeChange = () => applyDocumentThemeClass('system');\n\n if (typeof mediaQuery.addEventListener === 'function') {\n mediaQuery.addEventListener('change', onSystemThemeChange);\n return () => mediaQuery.removeEventListener('change', onSystemThemeChange);\n }\n\n mediaQuery.addListener(onSystemThemeChange);\n return () => mediaQuery.removeListener(onSystemThemeChange);\n }, [applyDocumentThemeClass, theme.mode]);\n\n // 更新主题\n const setTheme = useCallback((newTheme: ThemeConfig | ((prev: ThemeConfig) => ThemeConfig)) => {\n setThemeState((prev) => {\n return typeof newTheme === 'function' ? newTheme(prev) : newTheme;\n });\n }, []);\n\n const value: ThemeContextValue = useMemo(\n () => ({\n theme,\n setTheme,\n }),\n [theme, setTheme]\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n});\n\nThemeProvider.displayName = 'ThemeProvider';\n\n/**\n * 国际化 Provider 属性\n */\ninterface LocaleProviderProps extends PropsWithChildren {\n /**\n * 初始语言\n */\n initialLocale?: LangType;\n}\n\n/**\n * 国际化 Provider 组件\n */\nconst LocaleProvider: React.FC<LocaleProviderProps> = React.memo(({ children, initialLocale }) => {\n const [locale, setLocaleState] = useState<LangType>(initialLocale || appConfig.getLocale());\n const [isChanging, setIsChanging] = useState(false);\n\n // 同步到单例\n useEffect(() => {\n appConfig.setLocale(locale);\n }, [locale]);\n\n // 更新语言,添加加载状态\n const setLocale = useCallback(\n (newLocale: LangType) => {\n if (newLocale === locale) {\n return;\n }\n setIsChanging(true);\n setLocaleState(newLocale);\n setLang(newLocale);\n // 使用 requestAnimationFrame 确保状态更新在下一帧\n requestAnimationFrame(() => {\n setIsChanging(false);\n });\n },\n [locale]\n );\n\n const value: LocaleContextValue = useMemo(\n () => ({\n locale,\n setLocale,\n isChanging,\n }),\n [locale, setLocale, isChanging]\n );\n\n return <LocaleContext.Provider value={value}>{children}</LocaleContext.Provider>;\n});\n\nLocaleProvider.displayName = 'LocaleProvider';\n\n/**\n * 配置 Provider 属性\n */\ninterface AppConfigProviderProps extends PropsWithChildren {\n /**\n * 初始 Ant Design 配置\n */\n initialAntdConfig?: UIProviderConfig;\n /**\n * 初始初始化上下文\n */\n initialInitializationContext?: InitializationContext;\n}\n\n/**\n * 配置 Provider 组件\n */\nconst AppConfigProvider: React.FC<AppConfigProviderProps> = React.memo(({\n children,\n initialAntdConfig,\n initialInitializationContext,\n}) => {\n const [antdConfig, setAntdConfigState] = useState<UIProviderConfig | undefined>(\n initialAntdConfig || appConfig.getAntdConfig()\n );\n const [initializationContext, setInitializationContextState] = useState<\n InitializationContext | undefined\n >(initialInitializationContext || appConfig.getInitializationContext());\n\n // 同步到单例\n useEffect(() => {\n appConfig.setAntdConfig(antdConfig);\n }, [antdConfig]);\n\n useEffect(() => {\n appConfig.setInitializationContext(initializationContext);\n }, [initializationContext]);\n\n // 更新 Ant Design 配置\n const setAntdConfig = useCallback((config: UIProviderConfig | undefined) => {\n setAntdConfigState(config);\n }, []);\n\n // 更新初始化上下文\n const setInitializationContext = useCallback((context: InitializationContext | undefined) => {\n setInitializationContextState(context);\n }, []);\n\n const value: ConfigContextValue = useMemo(\n () => ({\n antdConfig,\n initializationContext,\n setAntdConfig,\n setInitializationContext,\n }),\n [antdConfig, initializationContext, setAntdConfig, setInitializationContext]\n );\n\n return <ConfigContext.Provider value={value}>{children}</ConfigContext.Provider>;\n});\n\nAppConfigProvider.displayName = 'AppConfigProvider';\n\n/**\n * 应用上下文 Provider 属性\n */\nexport interface AppContextProviderProps extends PropsWithChildren {\n /**\n * 初始主题配置\n */\n initialTheme?: ThemeConfig;\n /**\n * 初始国际化语言\n */\n initialLocale?: LangType;\n /**\n * 初始 Ant Design 配置\n */\n initialAntdConfig?: UIProviderConfig;\n /**\n * 初始初始化上下文\n */\n initialInitializationContext?: InitializationContext;\n /**\n * 状态管理器实例\n */\n stateManager?: StateManager | null;\n /**\n * UI App 基础配置\n * \n * 用于传递 UI 适配层的应用级配置(如消息、通知、弹窗容器)。\n */\n antdApp?: UIAppConfig;\n /**\n * UI App 配置(无框架绑定)\n */\n uiApp?: UIAppConfig;\n}\n\n/**\n * 应用上下文 Provider 组件\n * \n * 组合所有 Provider,提供统一的全局上下文\n * \n * @example\n * ```tsx\n * <AppContextProvider\n * initialTheme={{ mode: 'light', primaryColor: '#1890ff' }}\n * initialLocale=\"zh-CN\"\n * >\n * <App />\n * </AppContextProvider>\n * ```\n */\n/**\n * 状态管理器 Provider 组件\n */\nconst StateManagerProvider: React.FC<PropsWithChildren<{ stateManager?: StateManager | null }>> = React.memo(({ children, stateManager }) => {\n const value = useMemo(\n () => ({\n stateManager: stateManager ?? null,\n }),\n [stateManager]\n );\n\n return <StateManagerContext.Provider value={value}>{children}</StateManagerContext.Provider>;\n});\n\nStateManagerProvider.displayName = 'StateManagerProvider';\n\nexport const AppContextProvider: React.FC<AppContextProviderProps> = ({\n children,\n initialTheme,\n initialLocale,\n initialAntdConfig,\n initialInitializationContext,\n stateManager,\n antdApp: _antdApp,\n uiApp: _uiApp,\n}) => {\n // 初始化单例配置(仅执行一次)\n const initializedRef = React.useRef(false);\n React.useEffect(() => {\n if (!initializedRef.current) {\n appConfig.initialize({\n theme: initialTheme,\n locale: initialLocale,\n antdConfig: initialAntdConfig,\n initializationContext: initialInitializationContext,\n });\n initializedRef.current = true;\n }\n }, [initialTheme, initialLocale, initialAntdConfig, initialInitializationContext]);\n\n return (\n <ThemeProvider initialTheme={initialTheme}>\n <LocaleProvider initialLocale={initialLocale}>\n <AppConfigProvider\n initialAntdConfig={initialAntdConfig}\n initialInitializationContext={initialInitializationContext}\n >\n <StateManagerProvider stateManager={stateManager}>\n {children}\n </StateManagerProvider>\n </AppConfigProvider>\n </LocaleProvider>\n </ThemeProvider>\n );\n};\n\n/**\n * 使用主题上下文 Hook\n * \n * @returns 主题上下文值\n * @throws 如果不在 ThemeProvider 内使用会抛出错误\n * \n * @example\n * ```tsx\n * const { theme, setTheme } = useTheme();\n * \n * // 切换主题\n * setTheme({ mode: 'dark' });\n * ```\n */\nexport const useTheme = (): ThemeContextValue => {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error('useTheme 必须在 AppContextProvider 内使用');\n }\n return context;\n};\n\n/**\n * 使用国际化上下文 Hook\n * \n * @returns 国际化上下文值\n * @throws 如果不在 LocaleProvider 内使用会抛出错误\n * \n * @example\n * ```tsx\n * const { locale, setLocale } = useLocale();\n * \n * // 切换语言\n * setLocale('en-US');\n * ```\n */\nexport const useLocale = (): LocaleContextValue => {\n const context = useContext(LocaleContext);\n if (context === undefined) {\n throw new Error('useLocale 必须在 AppContextProvider 内使用');\n }\n return context;\n};\n\n/**\n * 使用配置上下文 Hook\n * \n * @returns 配置上下文值\n * @throws 如果不在 ConfigProvider 内使用会抛出错误\n */\nexport const useConfig = (): ConfigContextValue => {\n const context = useContext(ConfigContext);\n if (context === undefined) {\n throw new Error('useConfig 必须在 AppContextProvider 内使用');\n }\n return context;\n};\n\n/**\n * 使用应用上下文 Hook(聚合所有上下文)\n * \n * @returns 应用上下文值\n * @throws 如果不在 AppContextProvider 内使用会抛出错误\n * \n * @example\n * ```tsx\n * const { theme, setTheme, locale, setLocale, antdConfig } = useAppContext();\n * \n * // 切换主题\n * setTheme({ mode: 'dark' });\n * \n * // 切换语言\n * setLocale('en-US');\n * ```\n */\n/**\n * 使用状态管理器 Hook\n * \n * @returns 状态管理器实例\n * @throws 如果不在 AppContextProvider 内使用会抛出错误\n * \n * @example\n * ```tsx\n * const stateManager = useStateManager();\n * \n * // 创建状态实例\n * const countState = stateManager?.createState(0);\n * ```\n */\nexport const useStateManager = (): StateManager | null => {\n const context = useContext(StateManagerContext);\n if (context === undefined) {\n throw new Error('useStateManager 必须在 AppContextProvider 内使用');\n }\n return context.stateManager;\n};\n\nexport const useAppContext = (): AppContextValue => {\n const themeContext = useTheme();\n const localeContext = useLocale();\n const configContext = useConfig();\n const stateManagerContext = useStateManager();\n\n // 优化:使用更细粒度的依赖项,避免不必要的重新计算\n // 只依赖实际变化的值,函数引用是稳定的\n return useMemo(\n () => ({\n theme: themeContext.theme,\n locale: localeContext.locale,\n antdConfig: configContext.antdConfig,\n initializationContext: configContext.initializationContext,\n stateManager: stateManagerContext,\n setTheme: themeContext.setTheme,\n setLocale: localeContext.setLocale,\n setAntdConfig: configContext.setAntdConfig,\n setInitializationContext: configContext.setInitializationContext,\n }),\n [\n themeContext.theme,\n localeContext.locale,\n configContext.antdConfig,\n configContext.initializationContext,\n stateManagerContext,\n // 函数引用是稳定的,不需要作为依赖\n themeContext.setTheme,\n localeContext.setLocale,\n configContext.setAntdConfig,\n configContext.setInitializationContext,\n ]\n );\n};\n"],"names":["React","createContext","useContext","useState","useCallback","useMemo","useEffect","setLang","appConfig","ThemeContext","undefined","LocaleContext","ConfigContext","StateManagerContext","ThemeProvider","memo","children","initialTheme","theme","setThemeState","getTheme","applyDocumentThemeClass","mode","window","html","document","documentElement","classList","remove","resolvedMode","matchMedia","matches","add","setTheme","mediaQuery","onSystemThemeChange","addEventListener","removeEventListener","addListener","removeListener","newTheme","prev","value","Provider","displayName","LocaleProvider","initialLocale","locale","setLocaleState","getLocale","isChanging","setIsChanging","setLocale","newLocale","requestAnimationFrame","AppConfigProvider","initialAntdConfig","initialInitializationContext","antdConfig","setAntdConfigState","getAntdConfig","initializationContext","setInitializationContextState","getInitializationContext","setAntdConfig","setInitializationContext","config","context","StateManagerProvider","stateManager","AppContextProvider","antdApp","_antdApp","uiApp","_uiApp","initializedRef","useRef","current","initialize","useTheme","Error","useLocale","useConfig","useStateManager","useAppContext","themeContext","localeContext","configContext","stateManagerContext"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/AppContext.types.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/AppContext.types.ts"],"sourcesContent":["import type { LangType } from '../../library/locale/types';\nimport type { InitializationContext } from '../initialization';\nimport type { StateManager } from '../../state';\nimport type { UIProviderConfig } from '../types';\n\n/**\n * 主题配置\n */\nexport interface ThemeConfig {\n /**\n * 主题模式:'light' | 'dark' | 'system'\n * - 'light': 浅色主题\n * - 'dark': 深色主题\n * - 'system': 跟随系统设置\n */\n mode?: 'light' | 'dark' | 'system';\n\n /**\n * 主题色(主色调)\n */\n primaryColor?: string;\n\n /**\n * 自定义主题配置\n */\n custom?: Record<string, unknown>;\n}\n\n/**\n * 应用配置接口\n */\nexport interface AppConfig {\n /**\n * 主题配置\n */\n theme: ThemeConfig;\n\n /**\n * 国际化语言\n */\n locale: LangType;\n\n /**\n * Ant Design 配置\n */\n antdConfig?: UIProviderConfig;\n\n /**\n * 初始化上下文\n */\n initializationContext?: InitializationContext;\n}\n\n/**\n * 主题上下文值\n */\nexport interface ThemeContextValue {\n /**\n * 主题配置\n */\n theme: ThemeConfig;\n\n /**\n * 更新主题\n */\n setTheme: (theme: ThemeConfig | ((prev: ThemeConfig) => ThemeConfig)) => void;\n}\n\n/**\n * 国际化上下文值\n */\nexport interface LocaleContextValue {\n /**\n * 当前语言\n */\n locale: LangType;\n\n /**\n * 更新语言\n */\n setLocale: (locale: LangType) => void;\n\n /**\n * 是否正在切换语言\n */\n isChanging?: boolean;\n}\n\n/**\n * 配置上下文值\n */\nexport interface ConfigContextValue {\n /**\n * Ant Design 配置\n */\n antdConfig?: UIProviderConfig;\n\n /**\n * 初始化上下文\n */\n initializationContext?: InitializationContext;\n\n /**\n * 更新 Ant Design 配置\n */\n setAntdConfig: (config: UIProviderConfig | undefined) => void;\n\n /**\n * 更新初始化上下文\n */\n setInitializationContext: (context: InitializationContext | undefined) => void;\n}\n\n/**\n * 状态管理器上下文值\n */\nexport interface StateManagerContextValue {\n /**\n * 状态管理器实例\n */\n stateManager: StateManager | null;\n}\n\n/**\n * 应用全局上下文值(聚合所有上下文)\n */\nexport interface AppContextValue {\n /**\n * 主题配置\n */\n theme: ThemeConfig;\n\n /**\n * 国际化语言\n */\n locale: LangType;\n\n /**\n * Ant Design 配置\n */\n antdConfig?: UIProviderConfig;\n\n /**\n * 初始化上下文\n */\n initializationContext?: InitializationContext;\n\n /**\n * 状态管理器实例\n */\n stateManager: StateManager | null;\n\n /**\n * 更新主题\n */\n setTheme: (theme: ThemeConfig | ((prev: ThemeConfig) => ThemeConfig)) => void;\n\n /**\n * 更新国际化语言\n */\n setLocale: (locale: LangType) => void;\n\n /**\n * 更新 Ant Design 配置\n */\n setAntdConfig: (config: UIProviderConfig | undefined) => void;\n\n /**\n * 更新初始化上下文\n */\n setInitializationContext: (context: InitializationContext | undefined) => void;\n}\n"],"names":[],"mappings":"AA2HA;;CAEC,GACD,WA6CC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/BasicLayout.tsx"],"sourcesContent":["import React, { memo } from 'react';\nimport type { PropsWithChildren } from 'react';\nimport { useAppContext } from './AppContext';\nimport type { GlobalProviderLoader, UIProviderConfig } from '../types';\n\ninterface BasicLayoutProps {\n /**\n * 外部传入 UI provider 配置(向后兼容沿用 configProps 命名)\n */\n configProps?: UIProviderConfig;\n /**\n * 全局 UI 包裹组件懒加载器\n */\n globalProvider?: GlobalProviderLoader;\n}\n\nconst BasicLayout: React.FC<PropsWithChildren<BasicLayoutProps>> = memo(({\n children,\n configProps: externalConfigProps,\n globalProvider,\n}) => {\n const { antdConfig, theme } = useAppContext();\n const [isSystemDark, setIsSystemDark] = React.useState<boolean>(() => {\n if (typeof window === 'undefined') {\n return false;\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n });\n\n const finalConfigProps = antdConfig || externalConfigProps;\n\n React.useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const updateSystemTheme = (event: MediaQueryListEvent) => {\n setIsSystemDark(event.matches);\n };\n\n setIsSystemDark(mediaQuery.matches);\n if (typeof mediaQuery.addEventListener === 'function') {\n mediaQuery.addEventListener('change', updateSystemTheme);\n return () => mediaQuery.removeEventListener('change', updateSystemTheme);\n }\n\n mediaQuery.addListener(updateSystemTheme);\n return () => mediaQuery.removeListener(updateSystemTheme);\n }, []);\n\n const resolvedMode = theme.mode === 'system' ? (isSystemDark ? 'dark' : 'light') : theme.mode;\n\n const cssVars = React.useMemo<Record<string, string>>(() => {\n const vars: Record<string, string> = {};\n\n if (theme.primaryColor) {\n vars['--app-primary-color'] = theme.primaryColor;\n }\n\n if (finalConfigProps && typeof finalConfigProps === 'object') {\n const cssVariables = (finalConfigProps as Record<string, unknown>).cssVariables;\n if (cssVariables && typeof cssVariables === 'object') {\n Object.entries(cssVariables as Record<string, unknown>).forEach(([key, value]) => {\n vars[`--${key}`] = String(value);\n });\n }\n }\n\n return vars;\n }, [finalConfigProps, theme.primaryColor]);\n\n const GlobalProvider = React.useMemo(\n () => (globalProvider ? React.lazy(globalProvider) : null),\n [globalProvider]\n );\n\n const renderedContent = React.useMemo(() => {\n if (!GlobalProvider) {\n return children;\n }\n\n return (\n <React.Suspense fallback={null}>\n <GlobalProvider>{children}</GlobalProvider>\n </React.Suspense>\n );\n }, [GlobalProvider, children]);\n\n return (\n <div\n data-theme-mode={resolvedMode}\n style={cssVars as React.CSSProperties}\n >\n {renderedContent}\n </div>\n );\n});\n\nBasicLayout.displayName = 'BasicLayout';\n\nexport { BasicLayout };\n"],"names":["BasicLayout","memo","children","configProps","externalConfigProps","globalProvider","antdConfig","theme","useAppContext","isSystemDark","setIsSystemDark","React","useState","window","matchMedia","matches","finalConfigProps","useEffect","mediaQuery","updateSystemTheme","event","addEventListener","removeEventListener","addListener","removeListener","resolvedMode","mode","cssVars","useMemo","vars","primaryColor","cssVariables","Object","entries","forEach","key","value","String","GlobalProvider","lazy","renderedContent","Suspense","fallback","div","data-theme-mode","style","displayName"],"mappings":";;;;+BAqGSA;;;eAAAA;;;;+DArGmB;4BAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAc9B,MAAMA,4BAA6DC,IAAAA,WAAI,EAAC,CAAC,EACvEC,QAAQ,EACRC,aAAaC,mBAAmB,EAChCC,cAAc,EACf;IACC,MAAM,EAAEC,UAAU,EAAEC,KAAK,EAAE,GAAGC,IAAAA,yBAAa;IAC3C,MAAM,CAACC,cAAcC,gBAAgB,GAAGC,cAAK,CAACC,QAAQ,CAAU;QAC9D,IAAI,OAAOC,WAAW,aAAa;YACjC,OAAO;QACT;QACA,OAAOA,OAAOC,UAAU,CAAC,gCAAgCC,OAAO;IAClE;IAEA,MAAMC,mBAAmBV,cAAcF;IAEvCO,cAAK,CAACM,SAAS,CAAC;QACd,IAAI,OAAOJ,WAAW,aAAa;YACjC;QACF;QAEA,MAAMK,aAAaL,OAAOC,UAAU,CAAC;QACrC,MAAMK,oBAAoB,CAACC;YACzBV,gBAAgBU,MAAML,OAAO;QAC/B;QAEAL,gBAAgBQ,WAAWH,OAAO;QAClC,IAAI,OAAOG,WAAWG,gBAAgB,KAAK,YAAY;YACrDH,WAAWG,gBAAgB,CAAC,UAAUF;YACtC,OAAO,IAAMD,WAAWI,mBAAmB,CAAC,UAAUH;QACxD;QAEAD,WAAWK,WAAW,CAACJ;QACvB,OAAO,IAAMD,WAAWM,cAAc,CAACL;IACzC,GAAG,EAAE;IAEL,MAAMM,eAAelB,MAAMmB,IAAI,KAAK,WAAYjB,eAAe,SAAS,UAAWF,MAAMmB,IAAI;IAE7F,MAAMC,UAAUhB,cAAK,CAACiB,OAAO,CAAyB;QACpD,MAAMC,OAA+B,CAAC;QAEtC,IAAItB,MAAMuB,YAAY,EAAE;YACtBD,IAAI,CAAC,sBAAsB,GAAGtB,MAAMuB,YAAY;QAClD;QAEA,IAAId,oBAAoB,OAAOA,qBAAqB,UAAU;YAC5D,MAAMe,eAAe,AAACf,iBAA6Ce,YAAY;YAC/E,IAAIA,gBAAgB,OAAOA,iBAAiB,UAAU;gBACpDC,OAAOC,OAAO,CAACF,cAAyCG,OAAO,CAAC,CAAC,CAACC,KAAKC,MAAM;oBAC3EP,IAAI,CAAC,CAAC,EAAE,EAAEM,KAAK,CAAC,GAAGE,OAAOD;gBAC5B;YACF;QACF;QAEA,OAAOP;IACT,GAAG;QAACb;QAAkBT,MAAMuB,YAAY;KAAC;IAEzC,MAAMQ,iBAAiB3B,cAAK,CAACiB,OAAO,CAClC,IAAOvB,+BAAiBM,cAAK,CAAC4B,IAAI,CAAClC,kBAAkB,MACrD;QAACA;KAAe;IAGlB,MAAMmC,kBAAkB7B,cAAK,CAACiB,OAAO,CAAC;QACpC,IAAI,CAACU,gBAAgB;YACnB,OAAOpC;QACT;QAEA,qBACE,qBAACS,cAAK,CAAC8B,QAAQ;YAACC,UAAU;sBACxB,cAAA,qBAACJ;0BAAgBpC;;;IAGvB,GAAG;QAACoC;QAAgBpC;KAAS;IAE7B,qBACE,qBAACyC;QACCC,mBAAiBnB;QACjBoB,OAAOlB;kBAENa;;AAGP;AAEAxC,YAAY8C,WAAW,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/BasicLayout.tsx"],"sourcesContent":["import React, { memo } from 'react';\nimport type { PropsWithChildren } from 'react';\nimport { useAppContext } from './AppContext';\nimport type { GlobalProviderLoader, UIProviderConfig } from '../types';\n\ninterface BasicLayoutProps {\n /**\n * 外部传入 UI provider 配置(向后兼容沿用 configProps 命名)\n */\n configProps?: UIProviderConfig;\n /**\n * 全局 UI 包裹组件懒加载器\n */\n globalProvider?: GlobalProviderLoader;\n}\n\nconst BasicLayout: React.FC<PropsWithChildren<BasicLayoutProps>> = memo(({\n children,\n configProps: externalConfigProps,\n globalProvider,\n}) => {\n const { antdConfig, theme } = useAppContext();\n const [isSystemDark, setIsSystemDark] = React.useState<boolean>(() => {\n if (typeof window === 'undefined') {\n return false;\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n });\n\n const finalConfigProps = antdConfig || externalConfigProps;\n\n React.useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const updateSystemTheme = (event: MediaQueryListEvent) => {\n setIsSystemDark(event.matches);\n };\n\n setIsSystemDark(mediaQuery.matches);\n if (typeof mediaQuery.addEventListener === 'function') {\n mediaQuery.addEventListener('change', updateSystemTheme);\n return () => mediaQuery.removeEventListener('change', updateSystemTheme);\n }\n\n mediaQuery.addListener(updateSystemTheme);\n return () => mediaQuery.removeListener(updateSystemTheme);\n }, []);\n\n const resolvedMode = theme.mode === 'system' ? (isSystemDark ? 'dark' : 'light') : theme.mode;\n\n const cssVars = React.useMemo<Record<string, string>>(() => {\n const vars: Record<string, string> = {};\n\n if (theme.primaryColor) {\n vars['--app-primary-color'] = theme.primaryColor;\n }\n\n if (finalConfigProps && typeof finalConfigProps === 'object') {\n const cssVariables = (finalConfigProps as Record<string, unknown>).cssVariables;\n if (cssVariables && typeof cssVariables === 'object') {\n Object.entries(cssVariables as Record<string, unknown>).forEach(([key, value]) => {\n vars[`--${key}`] = String(value);\n });\n }\n }\n\n return vars;\n }, [finalConfigProps, theme.primaryColor]);\n\n const GlobalProvider = React.useMemo(\n () => (globalProvider ? React.lazy(globalProvider) : null),\n [globalProvider]\n );\n\n const renderedContent = React.useMemo(() => {\n if (!GlobalProvider) {\n return children;\n }\n\n return (\n <React.Suspense fallback={null}>\n <GlobalProvider>{children}</GlobalProvider>\n </React.Suspense>\n );\n }, [GlobalProvider, children]);\n\n return (\n <div\n data-theme-mode={resolvedMode}\n style={cssVars as React.CSSProperties}\n >\n {renderedContent}\n </div>\n );\n});\n\nBasicLayout.displayName = 'BasicLayout';\n\nexport { BasicLayout };\n"],"names":["React","memo","useAppContext","BasicLayout","children","configProps","externalConfigProps","globalProvider","antdConfig","theme","isSystemDark","setIsSystemDark","useState","window","matchMedia","matches","finalConfigProps","useEffect","mediaQuery","updateSystemTheme","event","addEventListener","removeEventListener","addListener","removeListener","resolvedMode","mode","cssVars","useMemo","vars","primaryColor","cssVariables","Object","entries","forEach","key","value","String","GlobalProvider","lazy","renderedContent","Suspense","fallback","div","data-theme-mode","style","displayName"],"mappings":";AAAA,OAAOA,SAASC,IAAI,QAAQ,QAAQ;AAEpC,SAASC,aAAa,QAAQ,eAAe;AAc7C,MAAMC,4BAA6DF,KAAK,CAAC,EACvEG,QAAQ,EACRC,aAAaC,mBAAmB,EAChCC,cAAc,EACf;IACC,MAAM,EAAEC,UAAU,EAAEC,KAAK,EAAE,GAAGP;IAC9B,MAAM,CAACQ,cAAcC,gBAAgB,GAAGX,MAAMY,QAAQ,CAAU;QAC9D,IAAI,OAAOC,WAAW,aAAa;YACjC,OAAO;QACT;QACA,OAAOA,OAAOC,UAAU,CAAC,gCAAgCC,OAAO;IAClE;IAEA,MAAMC,mBAAmBR,cAAcF;IAEvCN,MAAMiB,SAAS,CAAC;QACd,IAAI,OAAOJ,WAAW,aAAa;YACjC;QACF;QAEA,MAAMK,aAAaL,OAAOC,UAAU,CAAC;QACrC,MAAMK,oBAAoB,CAACC;YACzBT,gBAAgBS,MAAML,OAAO;QAC/B;QAEAJ,gBAAgBO,WAAWH,OAAO;QAClC,IAAI,OAAOG,WAAWG,gBAAgB,KAAK,YAAY;YACrDH,WAAWG,gBAAgB,CAAC,UAAUF;YACtC,OAAO,IAAMD,WAAWI,mBAAmB,CAAC,UAAUH;QACxD;QAEAD,WAAWK,WAAW,CAACJ;QACvB,OAAO,IAAMD,WAAWM,cAAc,CAACL;IACzC,GAAG,EAAE;IAEL,MAAMM,eAAehB,MAAMiB,IAAI,KAAK,WAAYhB,eAAe,SAAS,UAAWD,MAAMiB,IAAI;IAE7F,MAAMC,UAAU3B,MAAM4B,OAAO,CAAyB;QACpD,MAAMC,OAA+B,CAAC;QAEtC,IAAIpB,MAAMqB,YAAY,EAAE;YACtBD,IAAI,CAAC,sBAAsB,GAAGpB,MAAMqB,YAAY;QAClD;QAEA,IAAId,oBAAoB,OAAOA,qBAAqB,UAAU;YAC5D,MAAMe,eAAe,AAACf,iBAA6Ce,YAAY;YAC/E,IAAIA,gBAAgB,OAAOA,iBAAiB,UAAU;gBACpDC,OAAOC,OAAO,CAACF,cAAyCG,OAAO,CAAC,CAAC,CAACC,KAAKC,MAAM;oBAC3EP,IAAI,CAAC,CAAC,EAAE,EAAEM,KAAK,CAAC,GAAGE,OAAOD;gBAC5B;YACF;QACF;QAEA,OAAOP;IACT,GAAG;QAACb;QAAkBP,MAAMqB,YAAY;KAAC;IAEzC,MAAMQ,iBAAiBtC,MAAM4B,OAAO,CAClC,IAAOrB,+BAAiBP,MAAMuC,IAAI,CAAChC,kBAAkB,MACrD;QAACA;KAAe;IAGlB,MAAMiC,kBAAkBxC,MAAM4B,OAAO,CAAC;QACpC,IAAI,CAACU,gBAAgB;YACnB,OAAOlC;QACT;QAEA,qBACE,KAACJ,MAAMyC,QAAQ;YAACC,UAAU;sBACxB,cAAA,KAACJ;0BAAgBlC;;;IAGvB,GAAG;QAACkC;QAAgBlC;KAAS;IAE7B,qBACE,KAACuC;QACCC,mBAAiBnB;QACjBoB,OAAOlB;kBAENa;;AAGP;AAEArC,YAAY2C,WAAW,GAAG;AAE1B,SAAS3C,WAAW,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/DefaultApp.tsx"],"sourcesContent":["/**\n * 默认应用页面组件\n * 当用户未提供 app 选项时显示的默认页面\n */\n\nimport { memo } from 'react';\nimport { $t } from '../../library';\n\ninterface DefaultAppProps {\n title?: string;\n description?: string;\n}\n\nconst cardStyle: React.CSSProperties = {\n background: 'rgba(255, 255, 255, 0.96)',\n borderRadius: 10,\n boxShadow: '0 6px 20px rgba(0, 0, 0, 0.14)',\n padding: 20,\n};\n\nconst DefaultApp = memo<DefaultAppProps>(({ title, description }) => {\n const displayTitle = title || $t('defaultApp.title');\n const displayDescription = description || $t('defaultApp.description');\n\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 24,\n background: 'linear-gradient(130deg, #274c77 0%, #2c7da0 42%, #61a5c2 100%)',\n }}\n >\n <div style={{ maxWidth: 860, width: '100%' }}>\n <div style={{ textAlign: 'center', marginBottom: 28, color: '#fff' }}>\n <div style={{ fontSize: 56, lineHeight: '60px', marginBottom: 12 }}>🚀</div>\n <h1 style={{ margin: 0, fontSize: 34 }}>{displayTitle}</h1>\n <p style={{ marginTop: 12, opacity: 0.9 }}>{displayDescription}</p>\n </div>\n\n <div style={{ display: 'grid', gap: 16 }}>\n <section style={cardStyle}>\n <h2 style={{ marginTop: 0 }}>💻 {$t('defaultApp.quickStart.title')}</h2>\n <p>{$t('defaultApp.quickStart.description')}</p>\n <pre\n style={{\n margin: 0,\n background: '#f4f6f8',\n borderRadius: 8,\n padding: 12,\n overflowX: 'auto',\n }}\n >\n {$t('defaultApp.quickStart.code')}\n </pre>\n </section>\n\n <section style={cardStyle}>\n <h2 style={{ marginTop: 0 }}>📚 {$t('defaultApp.nextSteps.title')}</h2>\n <ul style={{ paddingLeft: 20, marginBottom: 0 }}>\n <li>{$t('defaultApp.nextSteps.step1')}</li>\n <li>{$t('defaultApp.nextSteps.step2')}</li>\n <li>{$t('defaultApp.nextSteps.step3')}</li>\n </ul>\n </section>\n </div>\n\n <p style={{ textAlign: 'center', color: 'rgba(255,255,255,0.88)', marginTop: 18 }}>\n {$t('defaultApp.footer')}\n </p>\n </div>\n </div>\n );\n});\n\nDefaultApp.displayName = 'DefaultApp';\n\nexport { DefaultApp };\n"],"names":["DefaultApp","cardStyle","background","borderRadius","boxShadow","padding","memo","title","description","displayTitle","$t","displayDescription","div","style","minHeight","display","alignItems","justifyContent","maxWidth","width","textAlign","marginBottom","color","fontSize","lineHeight","h1","margin","p","marginTop","opacity","gap","section","h2","pre","overflowX","ul","paddingLeft","li","displayName"],"mappings":"AAAA;;;CAGC;;;;+BA4EQA;;;eAAAA;;;;uBA1EY;yBACF;AAOnB,MAAMC,YAAiC;IACrCC,YAAY;IACZC,cAAc;IACdC,WAAW;IACXC,SAAS;AACX;AAEA,MAAML,2BAAaM,IAAAA,WAAI,EAAkB,CAAC,EAAEC,KAAK,EAAEC,WAAW,EAAE;IAC9D,MAAMC,eAAeF,SAASG,IAAAA,WAAE,EAAC;IACjC,MAAMC,qBAAqBH,eAAeE,IAAAA,WAAE,EAAC;IAE7C,qBACE,qBAACE;QACCC,OAAO;YACLC,WAAW;YACXC,SAAS;YACTC,YAAY;YACZC,gBAAgB;YAChBZ,SAAS;YACTH,YAAY;QACd;kBAEA,cAAA,sBAACU;YAAIC,OAAO;gBAAEK,UAAU;gBAAKC,OAAO;YAAO;;8BACzC,sBAACP;oBAAIC,OAAO;wBAAEO,WAAW;wBAAUC,cAAc;wBAAIC,OAAO;oBAAO;;sCACjE,qBAACV;4BAAIC,OAAO;gCAAEU,UAAU;gCAAIC,YAAY;gCAAQH,cAAc;4BAAG;sCAAG;;sCACpE,qBAACI;4BAAGZ,OAAO;gCAAEa,QAAQ;gCAAGH,UAAU;4BAAG;sCAAId;;sCACzC,qBAACkB;4BAAEd,OAAO;gCAAEe,WAAW;gCAAIC,SAAS;4BAAI;sCAAIlB;;;;8BAG9C,sBAACC;oBAAIC,OAAO;wBAAEE,SAAS;wBAAQe,KAAK;oBAAG;;sCACrC,sBAACC;4BAAQlB,OAAOZ;;8CACd,sBAAC+B;oCAAGnB,OAAO;wCAAEe,WAAW;oCAAE;;wCAAG;wCAAIlB,IAAAA,WAAE,EAAC;;;8CACpC,qBAACiB;8CAAGjB,IAAAA,WAAE,EAAC;;8CACP,qBAACuB;oCACCpB,OAAO;wCACLa,QAAQ;wCACRxB,YAAY;wCACZC,cAAc;wCACdE,SAAS;wCACT6B,WAAW;oCACb;8CAECxB,IAAAA,WAAE,EAAC;;;;sCAIR,sBAACqB;4BAAQlB,OAAOZ;;8CACd,sBAAC+B;oCAAGnB,OAAO;wCAAEe,WAAW;oCAAE;;wCAAG;wCAAIlB,IAAAA,WAAE,EAAC;;;8CACpC,sBAACyB;oCAAGtB,OAAO;wCAAEuB,aAAa;wCAAIf,cAAc;oCAAE;;sDAC5C,qBAACgB;sDAAI3B,IAAAA,WAAE,EAAC;;sDACR,qBAAC2B;sDAAI3B,IAAAA,WAAE,EAAC;;sDACR,qBAAC2B;sDAAI3B,IAAAA,WAAE,EAAC;;;;;;;;8BAKd,qBAACiB;oBAAEd,OAAO;wBAAEO,WAAW;wBAAUE,OAAO;wBAA0BM,WAAW;oBAAG;8BAC7ElB,IAAAA,WAAE,EAAC;;;;;AAKd;AAEAV,WAAWsC,WAAW,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/DefaultApp.tsx"],"sourcesContent":["/**\n * 默认应用页面组件\n * 当用户未提供 app 选项时显示的默认页面\n */\n\nimport { memo } from 'react';\nimport { $t } from '../../library';\n\ninterface DefaultAppProps {\n title?: string;\n description?: string;\n}\n\nconst cardStyle: React.CSSProperties = {\n background: 'rgba(255, 255, 255, 0.96)',\n borderRadius: 10,\n boxShadow: '0 6px 20px rgba(0, 0, 0, 0.14)',\n padding: 20,\n};\n\nconst DefaultApp = memo<DefaultAppProps>(({ title, description }) => {\n const displayTitle = title || $t('defaultApp.title');\n const displayDescription = description || $t('defaultApp.description');\n\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 24,\n background: 'linear-gradient(130deg, #274c77 0%, #2c7da0 42%, #61a5c2 100%)',\n }}\n >\n <div style={{ maxWidth: 860, width: '100%' }}>\n <div style={{ textAlign: 'center', marginBottom: 28, color: '#fff' }}>\n <div style={{ fontSize: 56, lineHeight: '60px', marginBottom: 12 }}>🚀</div>\n <h1 style={{ margin: 0, fontSize: 34 }}>{displayTitle}</h1>\n <p style={{ marginTop: 12, opacity: 0.9 }}>{displayDescription}</p>\n </div>\n\n <div style={{ display: 'grid', gap: 16 }}>\n <section style={cardStyle}>\n <h2 style={{ marginTop: 0 }}>💻 {$t('defaultApp.quickStart.title')}</h2>\n <p>{$t('defaultApp.quickStart.description')}</p>\n <pre\n style={{\n margin: 0,\n background: '#f4f6f8',\n borderRadius: 8,\n padding: 12,\n overflowX: 'auto',\n }}\n >\n {$t('defaultApp.quickStart.code')}\n </pre>\n </section>\n\n <section style={cardStyle}>\n <h2 style={{ marginTop: 0 }}>📚 {$t('defaultApp.nextSteps.title')}</h2>\n <ul style={{ paddingLeft: 20, marginBottom: 0 }}>\n <li>{$t('defaultApp.nextSteps.step1')}</li>\n <li>{$t('defaultApp.nextSteps.step2')}</li>\n <li>{$t('defaultApp.nextSteps.step3')}</li>\n </ul>\n </section>\n </div>\n\n <p style={{ textAlign: 'center', color: 'rgba(255,255,255,0.88)', marginTop: 18 }}>\n {$t('defaultApp.footer')}\n </p>\n </div>\n </div>\n );\n});\n\nDefaultApp.displayName = 'DefaultApp';\n\nexport { DefaultApp };\n"],"names":["memo","$t","cardStyle","background","borderRadius","boxShadow","padding","DefaultApp","title","description","displayTitle","displayDescription","div","style","minHeight","display","alignItems","justifyContent","maxWidth","width","textAlign","marginBottom","color","fontSize","lineHeight","h1","margin","p","marginTop","opacity","gap","section","h2","pre","overflowX","ul","paddingLeft","li","displayName"],"mappings":";AAAA;;;CAGC,GAED,SAASA,IAAI,QAAQ,QAAQ;AAC7B,SAASC,EAAE,QAAQ,gBAAgB;AAOnC,MAAMC,YAAiC;IACrCC,YAAY;IACZC,cAAc;IACdC,WAAW;IACXC,SAAS;AACX;AAEA,MAAMC,2BAAaP,KAAsB,CAAC,EAAEQ,KAAK,EAAEC,WAAW,EAAE;IAC9D,MAAMC,eAAeF,SAASP,GAAG;IACjC,MAAMU,qBAAqBF,eAAeR,GAAG;IAE7C,qBACE,KAACW;QACCC,OAAO;YACLC,WAAW;YACXC,SAAS;YACTC,YAAY;YACZC,gBAAgB;YAChBX,SAAS;YACTH,YAAY;QACd;kBAEA,cAAA,MAACS;YAAIC,OAAO;gBAAEK,UAAU;gBAAKC,OAAO;YAAO;;8BACzC,MAACP;oBAAIC,OAAO;wBAAEO,WAAW;wBAAUC,cAAc;wBAAIC,OAAO;oBAAO;;sCACjE,KAACV;4BAAIC,OAAO;gCAAEU,UAAU;gCAAIC,YAAY;gCAAQH,cAAc;4BAAG;sCAAG;;sCACpE,KAACI;4BAAGZ,OAAO;gCAAEa,QAAQ;gCAAGH,UAAU;4BAAG;sCAAIb;;sCACzC,KAACiB;4BAAEd,OAAO;gCAAEe,WAAW;gCAAIC,SAAS;4BAAI;sCAAIlB;;;;8BAG9C,MAACC;oBAAIC,OAAO;wBAAEE,SAAS;wBAAQe,KAAK;oBAAG;;sCACrC,MAACC;4BAAQlB,OAAOX;;8CACd,MAAC8B;oCAAGnB,OAAO;wCAAEe,WAAW;oCAAE;;wCAAG;wCAAI3B,GAAG;;;8CACpC,KAAC0B;8CAAG1B,GAAG;;8CACP,KAACgC;oCACCpB,OAAO;wCACLa,QAAQ;wCACRvB,YAAY;wCACZC,cAAc;wCACdE,SAAS;wCACT4B,WAAW;oCACb;8CAECjC,GAAG;;;;sCAIR,MAAC8B;4BAAQlB,OAAOX;;8CACd,MAAC8B;oCAAGnB,OAAO;wCAAEe,WAAW;oCAAE;;wCAAG;wCAAI3B,GAAG;;;8CACpC,MAACkC;oCAAGtB,OAAO;wCAAEuB,aAAa;wCAAIf,cAAc;oCAAE;;sDAC5C,KAACgB;sDAAIpC,GAAG;;sDACR,KAACoC;sDAAIpC,GAAG;;sDACR,KAACoC;sDAAIpC,GAAG;;;;;;;;8BAKd,KAAC0B;oBAAEd,OAAO;wBAAEO,WAAW;wBAAUE,OAAO;wBAA0BM,WAAW;oBAAG;8BAC7E3B,GAAG;;;;;AAKd;AAEAM,WAAW+B,WAAW,GAAG;AAEzB,SAAS/B,UAAU,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/index.ts"],"sourcesContent":["/**\n * 应用核心模块\n */\n\nexport { AppContextProvider, useAppContext, useTheme, useLocale, useConfig, useStateManager } from './AppContext';\nexport type { AppContextProviderProps } from './AppContext';\nexport type {\n AppContextValue,\n ThemeContextValue,\n LocaleContextValue,\n ConfigContextValue,\n StateManagerContextValue,\n ThemeConfig,\n AppConfig,\n} from './AppContext.types';\nexport { DefaultApp } from './DefaultApp';\nexport { BasicLayout } from './BasicLayout';\n"],"names":["AppContextProvider","BasicLayout","DefaultApp","useAppContext","useConfig","useLocale","useStateManager","useTheme"],"mappings":"AAAA;;CAEC;;;;;;;;;;;QAEQA;eAAAA,8BAAkB;;QAYlBC;eAAAA,wBAAW;;QADXC;eAAAA,sBAAU;;QAXUC;eAAAA,yBAAa;;QAAuBC;eAAAA,qBAAS;;QAApBC;eAAAA,qBAAS;;QAAaC;eAAAA,2BAAe;;QAA/CC;eAAAA,oBAAQ;;;4BAA+C;4BAWxE;6BACC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/app/index.ts"],"sourcesContent":["/**\n * 应用核心模块\n */\n\nexport { AppContextProvider, useAppContext, useTheme, useLocale, useConfig, useStateManager } from './AppContext';\nexport type { AppContextProviderProps } from './AppContext';\nexport type {\n AppContextValue,\n ThemeContextValue,\n LocaleContextValue,\n ConfigContextValue,\n StateManagerContextValue,\n ThemeConfig,\n AppConfig,\n} from './AppContext.types';\nexport { DefaultApp } from './DefaultApp';\nexport { BasicLayout } from './BasicLayout';\n"],"names":["AppContextProvider","useAppContext","useTheme","useLocale","useConfig","useStateManager","DefaultApp","BasicLayout"],"mappings":"AAAA;;CAEC,GAED,SAASA,kBAAkB,EAAEC,aAAa,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,SAAS,EAAEC,eAAe,QAAQ,eAAe;AAWlH,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,WAAW,QAAQ,gBAAgB"}