@vlian/framework 1.2.59 → 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.
- package/dist/analytics/index.cjs +1 -22
- package/dist/analytics.umd.js +1 -1
- package/dist/components/LocaleSwitch.cjs +1 -116
- package/dist/components/ThemeSwitch.cjs +1 -115
- package/dist/components/index.cjs +1 -20
- package/dist/components/persistence.cjs +1 -58
- package/dist/core/Test.cjs +1 -64
- package/dist/core/app/AppContext.cjs +1 -348
- package/dist/core/app/AppContext.types.cjs +1 -4
- package/dist/core/app/BasicLayout.cjs +1 -122
- package/dist/core/app/DefaultApp.cjs +1 -150
- package/dist/core/app/index.cjs +1 -41
- package/dist/core/config/AppConfig.cjs +1 -139
- package/dist/core/config/ConfigLoader.cjs +1 -323
- package/dist/core/config/ConfigValidator.cjs +2 -133
- package/dist/core/config/index.cjs +1 -28
- package/dist/core/dev/DevTools.cjs +1 -226
- package/dist/core/error/ErrorBoundary.cjs +1 -401
- package/dist/core/error/ErrorHandler.cjs +1 -275
- package/dist/core/error/index.cjs +1 -34
- package/dist/core/event/AppEventBus.cjs +1 -444
- package/dist/core/event/frameworkEvents.cjs +1 -141
- package/dist/core/event/hooks.cjs +1 -69
- package/dist/core/event/index.cjs +1 -41
- package/dist/core/event/types.cjs +1 -62
- package/dist/core/event/useEventBus.cjs +1 -25
- package/dist/core/index.cjs +1 -140
- package/dist/core/initialization/InitializationErrorThrower.cjs +1 -75
- package/dist/core/initialization/index.cjs +1 -26
- package/dist/core/initialization/initialization.cjs +1 -64
- package/dist/core/initialization/initializationErrorState.cjs +1 -66
- package/dist/core/kernel/defaultAdapters.cjs +1 -184
- package/dist/core/kernel/errors.cjs +1 -69
- package/dist/core/kernel/index.cjs +1 -20
- package/dist/core/kernel/startKernel.cjs +1 -200
- package/dist/core/kernel/types.cjs +1 -4
- package/dist/core/middleware.cjs +1 -73
- package/dist/core/plugin/PluginEventBus.cjs +1 -298
- package/dist/core/plugin/PluginSandbox.cjs +1 -137
- package/dist/core/plugin.cjs +1 -494
- package/dist/core/router/RouterManager.cjs +1 -286
- package/dist/core/router/adapter/AdapterManager.cjs +1 -235
- package/dist/core/router/adapter/index.cjs +1 -22
- package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +1 -128
- package/dist/core/router/adapter/react-router/index.cjs +1 -20
- package/dist/core/router/adapter/types.cjs +1 -6
- package/dist/core/router/dev/RouterDevTools.cjs +1 -260
- package/dist/core/router/dev/index.cjs +1 -20
- package/dist/core/router/dynamic/DynamicRouteManager.cjs +1 -193
- package/dist/core/router/dynamic/index.cjs +1 -20
- package/dist/core/router/errors/RouterError.cjs +1 -61
- package/dist/core/router/errors/index.cjs +1 -20
- package/dist/core/router/index.cjs +1 -36
- package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +1 -144
- package/dist/core/router/lifecycle/index.cjs +1 -20
- package/dist/core/router/middleware/RouterMiddlewareManager.cjs +1 -193
- package/dist/core/router/middleware/auth.cjs +1 -66
- package/dist/core/router/middleware/index.cjs +1 -22
- package/dist/core/router/middleware/types.cjs +1 -6
- package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -227
- package/dist/core/router/monitoring/index.cjs +1 -20
- package/dist/core/router/navigation/RouterNavigation.cjs +1 -239
- package/dist/core/router/navigation/index.cjs +1 -20
- package/dist/core/router/performance/RouteCache.cjs +1 -305
- package/dist/core/router/performance/RoutePreloader.cjs +1 -292
- package/dist/core/router/performance/index.cjs +1 -21
- package/dist/core/router/plugin/RouterPluginManager.cjs +1 -262
- package/dist/core/router/plugin/index.cjs +1 -21
- package/dist/core/router/plugin/types.cjs +1 -39
- package/dist/core/router/types.cjs +1 -4
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +1 -129
- package/dist/core/router/utils/adapters/react-router/transform.cjs +1 -250
- package/dist/core/router/utils/transform.cjs +1 -780
- package/dist/core/router/validation/RouterConfigValidator.cjs +2 -83
- package/dist/core/router/validation/index.cjs +1 -21
- package/dist/core/router/validation/schema.cjs +1 -159
- package/dist/core/router/version/RouteVersionManager.cjs +1 -205
- package/dist/core/router/version/index.cjs +1 -20
- package/dist/core/splash/SplashScreen.cjs +1 -341
- package/dist/core/splash/index.cjs +1 -22
- package/dist/core/splash/splashScreenUtils.cjs +1 -38
- package/dist/core/startup/AppInstance.cjs +1 -239
- package/dist/core/startup/environment.cjs +1 -169
- package/dist/core/startup/index.cjs +1 -23
- package/dist/core/startup/initializeServices.cjs +1 -226
- package/dist/core/startup/performanceTracker.cjs +1 -179
- package/dist/core/startup/renderApp.cjs +1 -314
- package/dist/core/startup/startApp.cjs +1 -317
- package/dist/core/types.cjs +1 -4
- package/dist/index.cjs +1 -52
- package/dist/index.umd.cjs +1 -27
- package/dist/index.umd.js +1 -1
- package/dist/kernel/constants.cjs +1 -65
- package/dist/kernel/index.cjs +1 -38
- package/dist/kernel/kernel.cjs +1 -295
- package/dist/kernel/manager/cacheManager.cjs +1 -46
- package/dist/kernel/manager/i18n/I18nManager.cjs +1 -91
- package/dist/kernel/manager/i18n/i18n.persistence.cjs +1 -60
- package/dist/kernel/manager/i18n/i18n.schema.cjs +1 -86
- package/dist/kernel/manager/i18n/index.cjs +1 -11
- package/dist/kernel/manager/i18nManager.cjs +1 -11
- package/dist/kernel/manager/index.cjs +1 -28
- package/dist/kernel/manager/logger/LoggerManager.cjs +1 -107
- package/dist/kernel/manager/logger/index.cjs +1 -11
- package/dist/kernel/manager/logger/logger.persistence.cjs +1 -62
- package/dist/kernel/manager/logger/logger.schema.cjs +1 -74
- package/dist/kernel/manager/loggerManager.cjs +1 -11
- package/dist/kernel/manager/theme/ThemeManager.cjs +1 -84
- package/dist/kernel/manager/theme/index.cjs +1 -11
- package/dist/kernel/manager/theme/theme.dom.cjs +1 -61
- package/dist/kernel/manager/theme/theme.persistence.cjs +1 -57
- package/dist/kernel/manager/theme/theme.schema.cjs +1 -122
- package/dist/kernel/manager/themeManager.cjs +1 -11
- package/dist/kernel/types.cjs +1 -4
- package/dist/library/index.cjs +1 -19
- package/dist/library/locale/index.cjs +1 -39
- package/dist/library/locale/langs/en-us/index.cjs +1 -32
- package/dist/library/locale/langs/zh-cn/index.cjs +1 -32
- package/dist/library/locale/types.cjs +1 -4
- package/dist/library/storage/cache.cjs +1 -243
- package/dist/library/storage/encryption.cjs +1 -147
- package/dist/library/storage/index.cjs +1 -124
- package/dist/state/StateManager.cjs +1 -166
- package/dist/state/adapters/AdapterFactory.cjs +1 -89
- package/dist/state/adapters/DefaultAdapter.cjs +1 -75
- package/dist/state/adapters/ReduxAdapter.cjs +1 -443
- package/dist/state/adapters/ZustandAdapter.cjs +1 -69
- package/dist/state/adapters/index.cjs +1 -44
- package/dist/state/adapters/types.cjs +1 -20
- package/dist/state/core/DerivedStateInstance.cjs +1 -174
- package/dist/state/core/StateInstance.cjs +1 -170
- package/dist/state/core/StateRegistry.cjs +1 -110
- package/dist/state/core/StateScope.cjs +1 -137
- package/dist/state/core/index.cjs +1 -30
- package/dist/state/index.cjs +1 -30
- package/dist/state/types.cjs +1 -12
- package/dist/state.umd.js +1 -1
- package/dist/types.cjs +1 -4
- package/dist/utils/analytics.cjs +1 -217
- package/dist/utils/configSecurity.cjs +3 -182
- package/dist/utils/csrf.cjs +1 -18
- package/dist/utils/errors/ErrorCodes.cjs +1 -25
- package/dist/utils/errors.cjs +1 -111
- package/dist/utils/index.cjs +1 -135
- package/dist/utils/logger.cjs +1 -25
- package/dist/utils/logger.types.cjs +1 -11
- package/dist/utils/monitoring.cjs +1 -18
- package/dist/utils/performance.cjs +1 -22
- package/dist/utils/resourceLoader.cjs +1 -22
- package/dist/utils/runtimeSecurity.cjs +1 -11
- package/dist/utils/security.cjs +1 -19
- package/dist/utils/traceId.cjs +1 -37
- package/dist/utils/validation.cjs +1 -19
- package/package.json +7 -3
package/dist/analytics/index.cjs
CHANGED
|
@@ -1,22 +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 AnalyticsService () {
|
|
13
|
-
return _analytics.AnalyticsService;
|
|
14
|
-
},
|
|
15
|
-
get getAnalytics () {
|
|
16
|
-
return _analytics.getAnalytics;
|
|
17
|
-
},
|
|
18
|
-
get initAnalytics () {
|
|
19
|
-
return _analytics.initAnalytics;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const _analytics = require("../utils/analytics");
|
|
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 AnalyticsService(){return _analytics.AnalyticsService},get getAnalytics(){return _analytics.getAnalytics},get initAnalytics(){return _analytics.initAnalytics}});const _analytics=require("../utils/analytics");
|
package/dist/analytics.umd.js
CHANGED
|
@@ -1,116 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "LocaleSwitch", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return LocaleSwitch;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _jsxruntime = require("react/jsx-runtime");
|
|
12
|
-
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
13
|
-
const _core = require("../core");
|
|
14
|
-
const _persistence = require("./persistence");
|
|
15
|
-
function _interop_require_default(obj) {
|
|
16
|
-
return obj && obj.__esModule ? obj : {
|
|
17
|
-
default: obj
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
const DEFAULT_LOCALE_STORAGE_KEY = 'vlian:locale';
|
|
21
|
-
const DEFAULT_LOCALES = [
|
|
22
|
-
'zh-CN',
|
|
23
|
-
'en-US'
|
|
24
|
-
];
|
|
25
|
-
const DEFAULT_PERSISTENCE = {
|
|
26
|
-
enabled: true
|
|
27
|
-
};
|
|
28
|
-
const DEFAULT_LABELS = {
|
|
29
|
-
'zh-CN': '中文',
|
|
30
|
-
'en-US': 'English'
|
|
31
|
-
};
|
|
32
|
-
function isLocale(value) {
|
|
33
|
-
return value === 'zh-CN' || value === 'en-US';
|
|
34
|
-
}
|
|
35
|
-
const LocaleSwitch = ({ locales = DEFAULT_LOCALES, labels = DEFAULT_LABELS, persistence, className, style, onChange, render })=>{
|
|
36
|
-
const { locale, setLocale, isChanging } = (0, _core.useLocale)();
|
|
37
|
-
const persistenceOptions = persistence || DEFAULT_PERSISTENCE;
|
|
38
|
-
const hydratedRef = _react.default.useRef(false);
|
|
39
|
-
const lastWrittenLocaleRef = _react.default.useRef(undefined);
|
|
40
|
-
const mergedLabels = _react.default.useMemo(()=>({
|
|
41
|
-
...DEFAULT_LABELS,
|
|
42
|
-
...labels
|
|
43
|
-
}), [
|
|
44
|
-
labels
|
|
45
|
-
]);
|
|
46
|
-
_react.default.useEffect(()=>{
|
|
47
|
-
if (hydratedRef.current) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
hydratedRef.current = true;
|
|
51
|
-
const persistedLocale = (0, _persistence.readPersistedValue)(persistenceOptions, DEFAULT_LOCALE_STORAGE_KEY);
|
|
52
|
-
if (!persistedLocale || !isLocale(persistedLocale) || !locales.includes(persistedLocale)) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
if (persistedLocale !== locale) {
|
|
56
|
-
setLocale(persistedLocale);
|
|
57
|
-
}
|
|
58
|
-
}, [
|
|
59
|
-
locale,
|
|
60
|
-
locales,
|
|
61
|
-
persistenceOptions,
|
|
62
|
-
setLocale
|
|
63
|
-
]);
|
|
64
|
-
_react.default.useEffect(()=>{
|
|
65
|
-
if (lastWrittenLocaleRef.current === locale) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
(0, _persistence.writePersistedValue)(locale, persistenceOptions, DEFAULT_LOCALE_STORAGE_KEY);
|
|
69
|
-
lastWrittenLocaleRef.current = locale;
|
|
70
|
-
}, [
|
|
71
|
-
locale,
|
|
72
|
-
persistenceOptions
|
|
73
|
-
]);
|
|
74
|
-
const handleSetLocale = _react.default.useCallback((nextLocale)=>{
|
|
75
|
-
if (nextLocale === locale) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
setLocale(nextLocale);
|
|
79
|
-
onChange?.(nextLocale);
|
|
80
|
-
}, [
|
|
81
|
-
locale,
|
|
82
|
-
onChange,
|
|
83
|
-
setLocale
|
|
84
|
-
]);
|
|
85
|
-
if (render) {
|
|
86
|
-
return render({
|
|
87
|
-
locale,
|
|
88
|
-
isChanging: Boolean(isChanging),
|
|
89
|
-
setLocale: handleSetLocale,
|
|
90
|
-
locales,
|
|
91
|
-
labels: mergedLabels
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsxs)("label", {
|
|
95
|
-
className: className,
|
|
96
|
-
style: style,
|
|
97
|
-
children: [
|
|
98
|
-
/*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
|
|
99
|
-
style: {
|
|
100
|
-
display: 'none'
|
|
101
|
-
},
|
|
102
|
-
children: "Language Switch"
|
|
103
|
-
}),
|
|
104
|
-
/*#__PURE__*/ (0, _jsxruntime.jsx)("select", {
|
|
105
|
-
"aria-label": "Language Switch",
|
|
106
|
-
value: locale,
|
|
107
|
-
onChange: (event)=>handleSetLocale(event.target.value),
|
|
108
|
-
disabled: Boolean(isChanging),
|
|
109
|
-
children: locales.map((item)=>/*#__PURE__*/ (0, _jsxruntime.jsx)("option", {
|
|
110
|
-
value: item,
|
|
111
|
-
children: mergedLabels[item]
|
|
112
|
-
}, item))
|
|
113
|
-
})
|
|
114
|
-
]
|
|
115
|
-
});
|
|
116
|
-
};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"LocaleSwitch",{enumerable:true,get:function(){return LocaleSwitch}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_default(require("react"));const _core=require("../core");const _persistence=require("./persistence");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const DEFAULT_LOCALE_STORAGE_KEY="vlian:locale";const DEFAULT_LOCALES=["zh-CN","en-US"];const DEFAULT_PERSISTENCE={enabled:true};const DEFAULT_LABELS={"zh-CN":"中文","en-US":"English"};function isLocale(value){return value==="zh-CN"||value==="en-US"}const LocaleSwitch=({locales=DEFAULT_LOCALES,labels=DEFAULT_LABELS,persistence,className,style,onChange,render})=>{const{locale,setLocale,isChanging}=(0,_core.useLocale)();const persistenceOptions=persistence||DEFAULT_PERSISTENCE;const hydratedRef=_react.default.useRef(false);const lastWrittenLocaleRef=_react.default.useRef(undefined);const mergedLabels=_react.default.useMemo(()=>({...DEFAULT_LABELS,...labels}),[labels]);_react.default.useEffect(()=>{if(hydratedRef.current){return}hydratedRef.current=true;const persistedLocale=(0,_persistence.readPersistedValue)(persistenceOptions,DEFAULT_LOCALE_STORAGE_KEY);if(!persistedLocale||!isLocale(persistedLocale)||!locales.includes(persistedLocale)){return}if(persistedLocale!==locale){setLocale(persistedLocale)}},[locale,locales,persistenceOptions,setLocale]);_react.default.useEffect(()=>{if(lastWrittenLocaleRef.current===locale){return}(0,_persistence.writePersistedValue)(locale,persistenceOptions,DEFAULT_LOCALE_STORAGE_KEY);lastWrittenLocaleRef.current=locale},[locale,persistenceOptions]);const handleSetLocale=_react.default.useCallback(nextLocale=>{if(nextLocale===locale){return}setLocale(nextLocale);onChange?.(nextLocale)},[locale,onChange,setLocale]);if(render){return render({locale,isChanging:Boolean(isChanging),setLocale:handleSetLocale,locales,labels:mergedLabels})}return(0,_jsxruntime.jsxs)("label",{className:className,style:style,children:[(0,_jsxruntime.jsx)("span",{style:{display:"none"},children:"Language Switch"}),(0,_jsxruntime.jsx)("select",{"aria-label":"Language Switch",value:locale,onChange:event=>handleSetLocale(event.target.value),disabled:Boolean(isChanging),children:locales.map(item=>(0,_jsxruntime.jsx)("option",{value:item,children:mergedLabels[item]},item))})]})};
|
|
@@ -1,115 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "ThemeSwitch", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return ThemeSwitch;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _jsxruntime = require("react/jsx-runtime");
|
|
12
|
-
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
13
|
-
const _core = require("../core");
|
|
14
|
-
const _persistence = require("./persistence");
|
|
15
|
-
function _interop_require_default(obj) {
|
|
16
|
-
return obj && obj.__esModule ? obj : {
|
|
17
|
-
default: obj
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
const DEFAULT_THEME_STORAGE_KEY = 'vlian:theme-mode';
|
|
21
|
-
const DEFAULT_MODES = [
|
|
22
|
-
'light',
|
|
23
|
-
'dark',
|
|
24
|
-
'system'
|
|
25
|
-
];
|
|
26
|
-
const DEFAULT_PERSISTENCE = {
|
|
27
|
-
enabled: true
|
|
28
|
-
};
|
|
29
|
-
const DEFAULT_LABELS = {
|
|
30
|
-
light: '浅色',
|
|
31
|
-
dark: '深色',
|
|
32
|
-
system: '跟随系统'
|
|
33
|
-
};
|
|
34
|
-
function isThemeMode(value) {
|
|
35
|
-
return value === 'light' || value === 'dark' || value === 'system';
|
|
36
|
-
}
|
|
37
|
-
const ThemeSwitch = ({ modes = DEFAULT_MODES, labels = DEFAULT_LABELS, persistence, className, style, onChange, render })=>{
|
|
38
|
-
const { theme, setTheme } = (0, _core.useTheme)();
|
|
39
|
-
const persistenceOptions = persistence || DEFAULT_PERSISTENCE;
|
|
40
|
-
const hydratedRef = _react.default.useRef(false);
|
|
41
|
-
const lastWrittenModeRef = _react.default.useRef(undefined);
|
|
42
|
-
const mergedLabels = _react.default.useMemo(()=>({
|
|
43
|
-
...DEFAULT_LABELS,
|
|
44
|
-
...labels
|
|
45
|
-
}), [
|
|
46
|
-
labels
|
|
47
|
-
]);
|
|
48
|
-
_react.default.useEffect(()=>{
|
|
49
|
-
if (hydratedRef.current) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
hydratedRef.current = true;
|
|
53
|
-
const persistedMode = (0, _persistence.readPersistedValue)(persistenceOptions, DEFAULT_THEME_STORAGE_KEY);
|
|
54
|
-
if (!persistedMode || !isThemeMode(persistedMode) || !modes.includes(persistedMode)) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
if (persistedMode !== theme.mode) {
|
|
58
|
-
setTheme((prev)=>({
|
|
59
|
-
...prev,
|
|
60
|
-
mode: persistedMode
|
|
61
|
-
}));
|
|
62
|
-
}
|
|
63
|
-
}, [
|
|
64
|
-
modes,
|
|
65
|
-
persistenceOptions,
|
|
66
|
-
setTheme,
|
|
67
|
-
theme.mode
|
|
68
|
-
]);
|
|
69
|
-
_react.default.useEffect(()=>{
|
|
70
|
-
const mode = theme.mode;
|
|
71
|
-
if (!mode || lastWrittenModeRef.current === mode) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
(0, _persistence.writePersistedValue)(mode, persistenceOptions, DEFAULT_THEME_STORAGE_KEY);
|
|
75
|
-
lastWrittenModeRef.current = mode;
|
|
76
|
-
}, [
|
|
77
|
-
persistenceOptions,
|
|
78
|
-
theme.mode
|
|
79
|
-
]);
|
|
80
|
-
const currentMode = theme.mode || 'light';
|
|
81
|
-
const setMode = _react.default.useCallback((mode)=>{
|
|
82
|
-
if (mode === currentMode) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
setTheme((prev)=>({
|
|
86
|
-
...prev,
|
|
87
|
-
mode
|
|
88
|
-
}));
|
|
89
|
-
onChange?.(mode);
|
|
90
|
-
}, [
|
|
91
|
-
currentMode,
|
|
92
|
-
onChange,
|
|
93
|
-
setTheme
|
|
94
|
-
]);
|
|
95
|
-
if (render) {
|
|
96
|
-
return render({
|
|
97
|
-
mode: currentMode,
|
|
98
|
-
setMode,
|
|
99
|
-
modes,
|
|
100
|
-
labels: mergedLabels
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
104
|
-
className: className,
|
|
105
|
-
style: style,
|
|
106
|
-
role: "group",
|
|
107
|
-
"aria-label": "Theme Switch",
|
|
108
|
-
children: modes.map((mode)=>/*#__PURE__*/ (0, _jsxruntime.jsx)("button", {
|
|
109
|
-
type: "button",
|
|
110
|
-
onClick: ()=>setMode(mode),
|
|
111
|
-
"aria-pressed": currentMode === mode,
|
|
112
|
-
children: mergedLabels[mode]
|
|
113
|
-
}, mode))
|
|
114
|
-
});
|
|
115
|
-
};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ThemeSwitch",{enumerable:true,get:function(){return ThemeSwitch}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_default(require("react"));const _core=require("../core");const _persistence=require("./persistence");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const DEFAULT_THEME_STORAGE_KEY="vlian:theme-mode";const DEFAULT_MODES=["light","dark","system"];const DEFAULT_PERSISTENCE={enabled:true};const DEFAULT_LABELS={light:"浅色",dark:"深色",system:"跟随系统"};function isThemeMode(value){return value==="light"||value==="dark"||value==="system"}const ThemeSwitch=({modes=DEFAULT_MODES,labels=DEFAULT_LABELS,persistence,className,style,onChange,render})=>{const{theme,setTheme}=(0,_core.useTheme)();const persistenceOptions=persistence||DEFAULT_PERSISTENCE;const hydratedRef=_react.default.useRef(false);const lastWrittenModeRef=_react.default.useRef(undefined);const mergedLabels=_react.default.useMemo(()=>({...DEFAULT_LABELS,...labels}),[labels]);_react.default.useEffect(()=>{if(hydratedRef.current){return}hydratedRef.current=true;const persistedMode=(0,_persistence.readPersistedValue)(persistenceOptions,DEFAULT_THEME_STORAGE_KEY);if(!persistedMode||!isThemeMode(persistedMode)||!modes.includes(persistedMode)){return}if(persistedMode!==theme.mode){setTheme(prev=>({...prev,mode:persistedMode}))}},[modes,persistenceOptions,setTheme,theme.mode]);_react.default.useEffect(()=>{const mode=theme.mode;if(!mode||lastWrittenModeRef.current===mode){return}(0,_persistence.writePersistedValue)(mode,persistenceOptions,DEFAULT_THEME_STORAGE_KEY);lastWrittenModeRef.current=mode},[persistenceOptions,theme.mode]);const currentMode=theme.mode||"light";const setMode=_react.default.useCallback(mode=>{if(mode===currentMode){return}setTheme(prev=>({...prev,mode}));onChange?.(mode)},[currentMode,onChange,setTheme]);if(render){return render({mode:currentMode,setMode,modes,labels:mergedLabels})}return(0,_jsxruntime.jsx)("div",{className:className,style:style,role:"group","aria-label":"Theme Switch",children:modes.map(mode=>(0,_jsxruntime.jsx)("button",{type:"button",onClick:()=>setMode(mode),"aria-pressed":currentMode===mode,children:mergedLabels[mode]},mode))})};
|
|
@@ -1,20 +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 LocaleSwitch () {
|
|
13
|
-
return _LocaleSwitch.LocaleSwitch;
|
|
14
|
-
},
|
|
15
|
-
get ThemeSwitch () {
|
|
16
|
-
return _ThemeSwitch.ThemeSwitch;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const _ThemeSwitch = require("./ThemeSwitch");
|
|
20
|
-
const _LocaleSwitch = require("./LocaleSwitch");
|
|
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 LocaleSwitch(){return _LocaleSwitch.LocaleSwitch},get ThemeSwitch(){return _ThemeSwitch.ThemeSwitch}});const _ThemeSwitch=require("./ThemeSwitch");const _LocaleSwitch=require("./LocaleSwitch");
|
|
@@ -1,58 +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 readPersistedValue () {
|
|
13
|
-
return readPersistedValue;
|
|
14
|
-
},
|
|
15
|
-
get resolveStorage () {
|
|
16
|
-
return resolveStorage;
|
|
17
|
-
},
|
|
18
|
-
get writePersistedValue () {
|
|
19
|
-
return writePersistedValue;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
function resolveStorage(storage) {
|
|
23
|
-
if (storage) {
|
|
24
|
-
return storage;
|
|
25
|
-
}
|
|
26
|
-
if (typeof window === 'undefined' || !window.localStorage) {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
return window.localStorage;
|
|
30
|
-
}
|
|
31
|
-
function readPersistedValue(options, defaultKey) {
|
|
32
|
-
if (options.enabled === false) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
const targetStorage = resolveStorage(options.storage);
|
|
36
|
-
if (!targetStorage) {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
try {
|
|
40
|
-
return targetStorage.getItem(options.key || defaultKey);
|
|
41
|
-
} catch {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function writePersistedValue(value, options, defaultKey) {
|
|
46
|
-
if (options.enabled === false || !value) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const targetStorage = resolveStorage(options.storage);
|
|
50
|
-
if (!targetStorage) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
try {
|
|
54
|
-
targetStorage.setItem(options.key || defaultKey, value);
|
|
55
|
-
} catch {
|
|
56
|
-
// Ignore storage write failures (private mode / quota / disabled storage).
|
|
57
|
-
}
|
|
58
|
-
}
|
|
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 readPersistedValue(){return readPersistedValue},get resolveStorage(){return resolveStorage},get writePersistedValue(){return writePersistedValue}});function resolveStorage(storage){if(storage){return storage}if(typeof window==="undefined"||!window.localStorage){return null}return window.localStorage}function readPersistedValue(options,defaultKey){if(options.enabled===false){return null}const targetStorage=resolveStorage(options.storage);if(!targetStorage){return null}try{return targetStorage.getItem(options.key||defaultKey)}catch{return null}}function writePersistedValue(value,options,defaultKey){if(options.enabled===false||!value){return}const targetStorage=resolveStorage(options.storage);if(!targetStorage){return}try{targetStorage.setItem(options.key||defaultKey,value)}catch{}}
|
package/dist/core/Test.cjs
CHANGED
|
@@ -1,64 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _jsxruntime = require("react/jsx-runtime");
|
|
12
|
-
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
13
|
-
const _logger = require("@vlian/logger");
|
|
14
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
15
|
-
if (typeof WeakMap !== "function") return null;
|
|
16
|
-
var cacheBabelInterop = new WeakMap();
|
|
17
|
-
var cacheNodeInterop = new WeakMap();
|
|
18
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
19
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
20
|
-
})(nodeInterop);
|
|
21
|
-
}
|
|
22
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
23
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
24
|
-
return obj;
|
|
25
|
-
}
|
|
26
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
27
|
-
return {
|
|
28
|
-
default: obj
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
32
|
-
if (cache && cache.has(obj)) {
|
|
33
|
-
return cache.get(obj);
|
|
34
|
-
}
|
|
35
|
-
var newObj = {
|
|
36
|
-
__proto__: null
|
|
37
|
-
};
|
|
38
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
39
|
-
for(var key in obj){
|
|
40
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
41
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
42
|
-
if (desc && (desc.get || desc.set)) {
|
|
43
|
-
Object.defineProperty(newObj, key, desc);
|
|
44
|
-
} else {
|
|
45
|
-
newObj[key] = obj[key];
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
newObj.default = obj;
|
|
50
|
-
if (cache) {
|
|
51
|
-
cache.set(obj, newObj);
|
|
52
|
-
}
|
|
53
|
-
return newObj;
|
|
54
|
-
}
|
|
55
|
-
const App = ({ onComplete })=>{
|
|
56
|
-
(0, _react.useEffect)(()=>{
|
|
57
|
-
_logger.logger.info('App mounted');
|
|
58
|
-
onComplete();
|
|
59
|
-
}, []);
|
|
60
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
61
|
-
children: "App"
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
const _default = App;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_wildcard(require("react"));const _logger=require("@vlian/logger");function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}const App=({onComplete})=>{(0,_react.useEffect)(()=>{_logger.logger.info("App mounted");onComplete()},[]);return(0,_jsxruntime.jsx)("div",{children:"App"})};const _default=App;
|