@creekjs/web-components 1.0.9 → 1.0.11

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 (55) hide show
  1. package/.turbo/turbo-father$colon$build.log +27 -28
  2. package/dist/creek-config-provider/CreekConfigContext.d.ts +0 -4
  3. package/dist/creek-config-provider/CreekConfigContext.d.ts.map +1 -1
  4. package/dist/creek-config-provider/CreekConfigContext.js.map +2 -2
  5. package/dist/creek-config-provider/CreekI18nProvider.d.ts +5 -4
  6. package/dist/creek-config-provider/CreekI18nProvider.d.ts.map +1 -1
  7. package/dist/creek-config-provider/CreekI18nProvider.js +53 -30
  8. package/dist/creek-config-provider/CreekI18nProvider.js.map +2 -2
  9. package/dist/creek-config-provider/index.d.ts.map +1 -1
  10. package/dist/creek-config-provider/index.js +5 -1
  11. package/dist/creek-config-provider/index.js.map +3 -3
  12. package/dist/creek-keep-alive/index.js +2 -2
  13. package/dist/creek-keep-alive/index.js.map +3 -3
  14. package/dist/creek-layout/ActionRender/FullScreen.js +2 -2
  15. package/dist/creek-layout/ActionRender/FullScreen.js.map +2 -2
  16. package/dist/creek-layout/index.d.ts.map +1 -1
  17. package/dist/creek-layout/index.js +6 -4
  18. package/dist/creek-layout/index.js.map +3 -3
  19. package/dist/creek-locale-button/index.js +4 -4
  20. package/dist/creek-locale-button/index.js.map +1 -1
  21. package/dist/creek-table/components/DensityIcon.js +2 -2
  22. package/dist/creek-table/components/DensityIcon.js.map +2 -2
  23. package/dist/creek-table/components/EllipsisTooltip.js +2 -2
  24. package/dist/creek-table/components/EllipsisTooltip.js.map +3 -3
  25. package/dist/creek-table/hooks/useIndexColumn.js +2 -2
  26. package/dist/creek-table/hooks/useIndexColumn.js.map +3 -3
  27. package/dist/locales/en_US.d.ts.map +1 -0
  28. package/dist/locales/{en-US.js → en_US.js} +2 -2
  29. package/dist/locales/{en-US.js.map → en_US.js.map} +1 -1
  30. package/dist/locales/zh_CN.d.ts.map +1 -0
  31. package/dist/locales/{zh-CN.js → zh_CN.js} +2 -2
  32. package/dist/locales/{zh-CN.js.map → zh_CN.js.map} +1 -1
  33. package/i18n.config.ts +7 -4
  34. package/package.json +3 -3
  35. package/src/creek-config-provider/CreekConfigContext.tsx +0 -4
  36. package/src/creek-config-provider/CreekI18nProvider.tsx +65 -37
  37. package/src/creek-config-provider/index.tsx +8 -4
  38. package/src/creek-keep-alive/index.tsx +1 -1
  39. package/src/creek-layout/ActionRender/FullScreen.tsx +1 -1
  40. package/src/creek-layout/index.tsx +7 -2
  41. package/src/creek-locale-button/index.tsx +4 -4
  42. package/src/creek-table/components/DensityIcon.tsx +1 -1
  43. package/src/creek-table/components/EllipsisTooltip.tsx +1 -1
  44. package/src/creek-table/hooks/useIndexColumn.tsx +1 -1
  45. package/dist/locales/en-US.d.ts.map +0 -1
  46. package/dist/locales/zh-CN.d.ts.map +0 -1
  47. package/dist/utils/i18n.d.ts +0 -2
  48. package/dist/utils/i18n.d.ts.map +0 -1
  49. package/dist/utils/i18n.js +0 -34
  50. package/dist/utils/i18n.js.map +0 -7
  51. package/src/utils/i18n.ts +0 -4
  52. /package/dist/locales/{en-US.d.ts → en_US.d.ts} +0 -0
  53. /package/dist/locales/{zh-CN.d.ts → zh_CN.d.ts} +0 -0
  54. /package/src/locales/{en-US.ts → en_US.ts} +0 -0
  55. /package/src/locales/{zh-CN.ts → zh_CN.ts} +0 -0
@@ -1,55 +1,54 @@
1
1
 
2
2
  
3
- > @creekjs/web-components@1.0.9 father:build /Users/ernestwang/Documents/code-resoorce/creek/packages/web-components
3
+ > @creekjs/web-components@1.0.10 father:build /Users/ernestwang/Documents/code-resoorce/creek/packages/web-components
4
4
  > father build
5
5
 
6
6
  info - Clean output directories
7
7
  info - Bundless for src directory to cjs format
8
8
  event - Bundless CreekConfigContext.tsx to dist/creek-config-provider/CreekConfigContext.js (with declaration)
9
+ event - Bundless CreekI18nProvider.tsx to dist/creek-config-provider/CreekI18nProvider.js (with declaration)
9
10
  event - Bundless DrawerHelper.tsx to dist/creek-hooks/useApp/DrawerHelper.js (with declaration)
11
+ event - Bundless index.tsx to dist/creek-hooks/useApp/index.js (with declaration)
12
+ event - Bundless index.tsx to dist/creek-config-provider/index.js (with declaration)
10
13
  event - Bundless index.ts to dist/creek-hooks/index.js (with declaration)
11
14
  event - Bundless useViewportHeight.tsx to dist/creek-hooks/useViewportHeight.js (with declaration)
12
- event - Bundless CreekI18nProvider.tsx to dist/creek-config-provider/CreekI18nProvider.js (with declaration)
13
- event - Bundless index.tsx to dist/creek-hooks/useApp/index.js (with declaration)
14
- event - Bundless index.tsx to dist/creek-icon/index.js (with declaration)
15
- event - Bundless types.ts to dist/creek-hooks/useApp/types.js (with declaration)
16
- event - Bundless FullScreen.tsx to dist/creek-layout/ActionRender/FullScreen.js (with declaration)
17
- event - Bundless UserInfo.tsx to dist/creek-layout/ActionRender/UserInfo.js (with declaration)
18
15
  event - Bundless ModalHelper.tsx to dist/creek-hooks/useApp/ModalHelper.js (with declaration)
16
+ event - Bundless types.ts to dist/creek-hooks/useApp/types.js (with declaration)
17
+ event - Bundless index.tsx to dist/creek-icon/index.js (with declaration)
18
+ event - Bundless CollapseButton.tsx to dist/creek-layout/CollapseButton.js (with declaration)
19
19
  event - Bundless index.tsx to dist/creek-keep-alive/index.js (with declaration)
20
+ event - Bundless index.tsx to dist/creek-layout/ActionRender/index.js (with declaration)
21
+ event - Bundless FullScreen.tsx to dist/creek-layout/ActionRender/FullScreen.js (with declaration)
20
22
  event - Bundless index.tsx to dist/creek-layout/Exception/index.js (with declaration)
23
+ event - Bundless UserInfo.tsx to dist/creek-layout/ActionRender/UserInfo.js (with declaration)
24
+ event - Bundless LayoutSettings.tsx to dist/creek-layout/ActionRender/LayoutSettings.js (with declaration)
25
+ event - Bundless index.tsx to dist/creek-loading/index.js (with declaration)
21
26
  event - Bundless NotFound.tsx to dist/creek-layout/Exception/NotFound.js (with declaration)
22
- event - Bundless CollapseButton.tsx to dist/creek-layout/CollapseButton.js (with declaration)
27
+ event - Bundless useLayoutSettingsStore.ts to dist/creek-layout/useLayoutSettingsStore.js (with declaration)
23
28
  event - Bundless NotFoundPage.tsx to dist/creek-layout/Exception/NotFoundPage.js (with declaration)
24
- event - Bundless index.tsx to dist/creek-layout/ActionRender/index.js (with declaration)
25
- event - Bundless index.tsx to dist/creek-loading/index.js (with declaration)
29
+ event - Bundless DensityIcon.tsx to dist/creek-table/components/DensityIcon.js (with declaration)
30
+ event - Bundless EllipsisTooltip.tsx to dist/creek-table/components/EllipsisTooltip.js (with declaration)
26
31
  event - Bundless index.tsx to dist/creek-layout/index.js (with declaration)
27
- event - Bundless LayoutSettings.tsx to dist/creek-layout/ActionRender/LayoutSettings.js (with declaration)
32
+ event - Bundless useElementDistance.tsx to dist/creek-table/hooks/useElementDistance.js (with declaration)
33
+ event - Bundless scrollbar.ts to dist/creek-style/scrollbar.js (with declaration)
28
34
  event - Bundless index.tsx to dist/creek-page-container/index.js (with declaration)
29
- event - Bundless useLayoutSettingsStore.ts to dist/creek-layout/useLayoutSettingsStore.js (with declaration)
30
35
  event - Bundless index.ts to dist/creek-style/index.js (with declaration)
31
- event - Bundless scrollbar.ts to dist/creek-style/scrollbar.js (with declaration)
32
- event - Bundless index.tsx to dist/creek-locale-button/index.js (with declaration)
33
36
  event - Bundless index.tsx to dist/creek-table/components/index.js (with declaration)
37
+ event - Bundless useEllipsisColumns.tsx to dist/creek-table/hooks/useEllipsisColumns.js (with declaration)
34
38
  event - Bundless index.ts to dist/creek-table/hooks/index.js (with declaration)
35
- event - Bundless DensityIcon.tsx to dist/creek-table/components/DensityIcon.js (with declaration)
36
39
  event - Bundless useAdaptiveToolBar.tsx to dist/creek-table/hooks/useAdaptiveToolBar.js (with declaration)
37
40
  event - Bundless useIndexColumn.tsx to dist/creek-table/hooks/useIndexColumn.js (with declaration)
38
- event - Bundless useAutoWidthColumns.tsx to dist/creek-table/hooks/useAutoWidthColumns.js (with declaration)
39
- event - Bundless useEllipsisColumns.tsx to dist/creek-table/hooks/useEllipsisColumns.js (with declaration)
40
- event - Bundless EllipsisTooltip.tsx to dist/creek-table/components/EllipsisTooltip.js (with declaration)
41
- event - Bundless useElementDistance.tsx to dist/creek-table/hooks/useElementDistance.js (with declaration)
42
41
  event - Bundless index.tsx to dist/creek-table/index.js (with declaration)
43
- event - Bundless useTableScrollHeight.tsx to dist/creek-table/hooks/useTableScrollHeight.js (with declaration)
42
+ event - Bundless useAutoWidthColumns.tsx to dist/creek-table/hooks/useAutoWidthColumns.js (with declaration)
44
43
  event - Bundless useTableOptions.tsx to dist/creek-table/hooks/useTableOptions.js (with declaration)
45
- event - Bundless useStatusColumns.tsx to dist/creek-table/hooks/useStatusColumns.js (with declaration)
46
- event - Bundless index.tsx to dist/index.js (with declaration)
47
- event - Bundless zh-CN.ts to dist/locales/zh-CN.js (with declaration)
48
- event - Bundless en-US.ts to dist/locales/en-US.js (with declaration)
44
+ event - Bundless useTableScrollHeight.tsx to dist/creek-table/hooks/useTableScrollHeight.js (with declaration)
49
45
  event - Bundless useResizableColumns.tsx to dist/creek-table/hooks/useResizableColumns.js (with declaration)
50
- event - Bundless i18n.ts to dist/utils/i18n.js (with declaration)
51
- event - Bundless index.tsx to dist/creek-config-provider/index.js (with declaration)
52
- event - Bundless type.ts to dist/creek-table/type.js (with declaration)
46
+ event - Bundless useStatusColumns.tsx to dist/creek-table/hooks/useStatusColumns.js (with declaration)
53
47
  event - Bundless SearchTable.tsx to dist/creek-table/SearchTable.js (with declaration)
48
+ event - Bundless index.tsx to dist/creek-locale-button/index.js (with declaration)
49
+ event - Bundless zh_CN.ts to dist/locales/zh_CN.js (with declaration)
50
+ event - Bundless en_US.ts to dist/locales/en_US.js (with declaration)
51
+ event - Bundless type.ts to dist/creek-table/type.js (with declaration)
52
+ event - Bundless index.tsx to dist/index.js (with declaration)
54
53
  event - Generate declaration files...
55
- event - Transformed successfully in 3948 ms (46 files)
54
+ event - Transformed successfully in 4255 ms (45 files)
@@ -1,9 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  export type CreekConfigContextProps = {
3
3
  iconFontCNs?: string[];
4
- /**
5
- * 国际化语言包
6
- */
7
- locale?: Record<string, string>;
8
4
  };
9
5
  export declare const CreekConfigContext: import("react").Context<CreekConfigContextProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"CreekConfigContext.d.ts","sourceRoot":"","sources":["../../src/creek-config-provider/CreekConfigContext.tsx"],"names":[],"mappings":";AAEA,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,kDAA6C,CAAC"}
1
+ {"version":3,"file":"CreekConfigContext.d.ts","sourceRoot":"","sources":["../../src/creek-config-provider/CreekConfigContext.tsx"],"names":[],"mappings":";AAEA,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,kDAA6C,CAAC"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/creek-config-provider/CreekConfigContext.tsx"],
4
- "sourcesContent": ["import { createContext } from 'react';\n\nexport type CreekConfigContextProps = {\n iconFontCNs?: string[];\n /**\n * 国际化语言包\n */\n locale?: Record<string, string>;\n};\n\nexport const CreekConfigContext = createContext<CreekConfigContextProps>({});\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAUvB,IAAM,yBAAqB,4BAAuC,CAAC,CAAC;",
4
+ "sourcesContent": ["import { createContext } from 'react';\n\nexport type CreekConfigContextProps = {\n iconFontCNs?: string[];\n};\n\nexport const CreekConfigContext = createContext<CreekConfigContextProps>({});\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAMvB,IAAM,yBAAqB,4BAAuC,CAAC,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,22 +1,23 @@
1
1
  import type { ReactNode } from 'react';
2
+ export type LocaleCode = 'en_US' | 'zh_CN';
2
3
  export interface CreekI18nProviderProps {
3
4
  children?: ReactNode;
4
5
  /**
5
6
  * 语言标识
6
- * @default 'zh-CN'
7
+ * @default 'zh_CN'
7
8
  */
8
- locale?: string;
9
+ locale?: LocaleCode;
9
10
  /**
10
11
  * 国际化语言包,透传给 react-intl
11
12
  */
12
13
  messages?: Record<string, string>;
13
14
  }
14
15
  export declare const LocaleContext: import("react").Context<{
15
- locale: string;
16
+ locale: LocaleCode;
16
17
  changeLocale: (lang: string) => void;
17
18
  }>;
18
19
  export declare const useAppLocale: () => {
19
- locale: string;
20
+ locale: LocaleCode;
20
21
  changeLocale: (lang: string) => void;
21
22
  };
22
23
  export declare const CreekI18nProvider: (props: CreekI18nProviderProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"CreekI18nProvider.d.ts","sourceRoot":"","sources":["../../src/creek-config-provider/CreekI18nProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAOD,eAAO,MAAM,aAAa;;yBAEH,MAAM;EAC3B,CAAC;AAEH,eAAO,MAAM,YAAY;;yBAHF,MAAM;CAG8B,CAAC;AAE5D,eAAO,MAAM,iBAAiB,UAAW,sBAAsB,4CAmD9D,CAAC"}
1
+ {"version":3,"file":"CreekI18nProvider.d.ts","sourceRoot":"","sources":["../../src/creek-config-provider/CreekI18nProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAU3C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAOD,eAAO,MAAM,aAAa;;yBAEH,MAAM;EAC3B,CAAC;AAEH,eAAO,MAAM,YAAY;;yBAHF,MAAM;CAG8B,CAAC;AAE5D,eAAO,MAAM,iBAAiB,UAAW,sBAAsB,4CAqE9D,CAAC"}
@@ -36,52 +36,75 @@ __export(CreekI18nProvider_exports, {
36
36
  module.exports = __toCommonJS(CreekI18nProvider_exports);
37
37
  var import_react = require("react");
38
38
  var import_react2 = require("@creekjs/i18n/react");
39
- var import_en_US = __toESM(require("../locales/en-US"));
40
- var import_zh_CN = __toESM(require("../locales/zh-CN"));
39
+ var import_en_US = __toESM(require("../locales/en_US"));
40
+ var import_zh_CN = __toESM(require("../locales/zh_CN"));
41
41
  var import_jsx_runtime = require("react/jsx-runtime");
42
- var DEFAULT_LOCALE = "zh-CN";
42
+ var DEFAULT_LOCALE = "zh_CN";
43
+ var SUPPORTED_LOCALES = ["zh_CN", "en_US"];
44
+ var toUnderscoreLocale = (input) => {
45
+ if (!input)
46
+ return DEFAULT_LOCALE;
47
+ const normalized = input.replace("-", "_");
48
+ return SUPPORTED_LOCALES.includes(normalized) ? normalized : DEFAULT_LOCALE;
49
+ };
43
50
  var MESSAGES_MAP = {
44
- [DEFAULT_LOCALE]: import_zh_CN.default,
45
- "en-US": import_en_US.default
51
+ zh_CN: import_zh_CN.default,
52
+ en_US: import_en_US.default
46
53
  };
47
54
  var LocaleContext = (0, import_react.createContext)({
48
- locale: (0, import_react2.getLocale)() || DEFAULT_LOCALE,
55
+ locale: toUnderscoreLocale((0, import_react2.getLocale)()),
49
56
  changeLocale: (lang) => {
50
57
  }
51
58
  });
52
59
  var useAppLocale = () => (0, import_react.useContext)(LocaleContext);
53
60
  var CreekI18nProvider = (props) => {
54
- var _a;
55
61
  const { children, locale, messages } = props;
56
62
  const parentIntl = (0, import_react.useContext)(import_react2.IntlContext);
57
- const [intl, setIntl] = (0, import_react.useState)(() => (0, import_react2.getIntl)());
63
+ const [internalLocale, setInternalLocale] = (0, import_react.useState)();
58
64
  const changeLocale = (0, import_react.useCallback)((lang) => {
59
- (0, import_react2.setLocale)(lang, false);
60
- setIntl((0, import_react2.getIntl)());
65
+ const underscore = toUnderscoreLocale(lang);
66
+ (0, import_react2.setLocale)(underscore, false);
67
+ setInternalLocale(underscore);
61
68
  }, []);
62
- const currentLocale = (intl == null ? void 0 : intl.locale) || locale || (parentIntl == null ? void 0 : parentIntl.locale) || DEFAULT_LOCALE;
63
- const intlConfig = parentIntl || intl || {};
64
- const safeConfig = {
65
- formats: intlConfig.formats,
66
- defaultLocale: intlConfig.defaultLocale,
67
- defaultFormats: intlConfig.defaultFormats,
68
- onError: intlConfig.onError
69
- };
70
- let baseMessages = {};
71
- if (parentIntl && parentIntl.locale === currentLocale) {
72
- baseMessages = parentIntl.messages;
73
- } else {
74
- baseMessages = ((_a = (0, import_react2.getIntl)()) == null ? void 0 : _a.messages) || {};
75
- }
76
- const finalMessages = {
77
- ...baseMessages,
78
- ...MESSAGES_MAP[currentLocale] || import_zh_CN.default,
79
- ...messages || {}
80
- };
69
+ const currentLocale = (0, import_react.useMemo)(() => {
70
+ var _a;
71
+ const rawLocale = internalLocale || locale || (parentIntl == null ? void 0 : parentIntl.locale) || ((_a = (0, import_react2.getIntl)()) == null ? void 0 : _a.locale) || DEFAULT_LOCALE;
72
+ return toUnderscoreLocale(rawLocale);
73
+ }, [internalLocale, locale, parentIntl == null ? void 0 : parentIntl.locale]);
74
+ const safeConfig = (0, import_react.useMemo)(() => {
75
+ const intlConfig = parentIntl || (0, import_react2.getIntl)() || {};
76
+ return {
77
+ formats: intlConfig.formats,
78
+ defaultLocale: intlConfig.defaultLocale,
79
+ defaultFormats: intlConfig.defaultFormats,
80
+ onError: intlConfig.onError
81
+ };
82
+ }, [parentIntl]);
83
+ const finalMessages = (0, import_react.useMemo)(() => {
84
+ var _a, _b;
85
+ let baseMessages = {};
86
+ if (parentIntl && parentIntl.locale === currentLocale.replace("_", "-")) {
87
+ baseMessages = parentIntl.messages;
88
+ } else {
89
+ baseMessages = ((_a = import_react2.appLocales) == null ? void 0 : _a[currentLocale]) || ((_b = (0, import_react2.getIntl)()) == null ? void 0 : _b.messages) || {};
90
+ }
91
+ return {
92
+ ...baseMessages,
93
+ ...MESSAGES_MAP[currentLocale] || import_zh_CN.default,
94
+ ...messages || {}
95
+ };
96
+ }, [parentIntl, currentLocale, messages]);
81
97
  (0, import_react.useEffect)(() => {
82
98
  (0, import_react2.setLocaleMessages)(currentLocale, finalMessages);
83
99
  }, [currentLocale, finalMessages]);
84
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react2.IntlProvider, { ...safeConfig, locale: currentLocale, messages: finalMessages, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LocaleContext.Provider, { value: { locale: currentLocale, changeLocale }, children }) });
100
+ const contextValue = (0, import_react.useMemo)(
101
+ () => ({
102
+ locale: currentLocale,
103
+ changeLocale
104
+ }),
105
+ [currentLocale, changeLocale]
106
+ );
107
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react2.IntlProvider, { ...safeConfig, locale: currentLocale.replace("_", "-"), messages: finalMessages, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LocaleContext.Provider, { value: contextValue, children }) });
85
108
  };
86
109
  // Annotate the CommonJS export names for ESM import in node:
87
110
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/creek-config-provider/CreekI18nProvider.tsx"],
4
- "sourcesContent": ["import type { ReactNode } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useState } from 'react';\n\nimport { IntlContext, IntlProvider, getIntl, getLocale, setLocale, setLocaleMessages } from '@creekjs/i18n/react';\n\nimport enUS from '../locales/en-US';\nimport zhCN from '../locales/zh-CN';\n\nconst DEFAULT_LOCALE = 'zh-CN';\n\nexport interface CreekI18nProviderProps {\n children?: ReactNode;\n /**\n * 语言标识\n * @default 'zh-CN'\n */\n locale?: string;\n /**\n * 国际化语言包,透传给 react-intl\n */\n messages?: Record<string, string>;\n}\n\nconst MESSAGES_MAP: Record<string, Record<string, string>> = {\n [DEFAULT_LOCALE]: zhCN,\n 'en-US': enUS,\n};\n\nexport const LocaleContext = createContext({\n locale: getLocale() || DEFAULT_LOCALE,\n changeLocale: (lang: string) => {},\n});\n\nexport const useAppLocale = () => useContext(LocaleContext);\n\nexport const CreekI18nProvider = (props: CreekI18nProviderProps) => {\n const { children, locale, messages } = props;\n\n // Try to get parent intl context\n const parentIntl = useContext(IntlContext);\n\n const [intl, setIntl] = useState(() => getIntl());\n\n const changeLocale = useCallback((lang: string) => {\n setLocale(lang, false);\n setIntl(getIntl());\n }, []);\n\n // 1. 确定最终生效的 locale\n // 优先级:当前组件内部的 state > props.locale > parentIntl.locale > 全局默认\n const currentLocale = intl?.locale || locale || parentIntl?.locale || DEFAULT_LOCALE;\n\n // 2. 提取父级上下文的安全配置 (避免将 IntlShape 的内部方法直接传给 IntlProvider)\n const intlConfig = parentIntl || intl || {};\n const safeConfig = {\n formats: intlConfig.formats,\n defaultLocale: intlConfig.defaultLocale,\n defaultFormats: intlConfig.defaultFormats,\n onError: intlConfig.onError,\n };\n\n // 3. 确定最终的 messages\n // 避免使用 stale 的 parentIntl.messages\n let baseMessages = {};\n if (parentIntl && parentIntl.locale === currentLocale) {\n baseMessages = parentIntl.messages;\n } else {\n baseMessages = getIntl()?.messages || {};\n }\n\n const finalMessages = {\n ...baseMessages,\n ...(MESSAGES_MAP[currentLocale] || zhCN),\n ...(messages || {}),\n };\n\n // 4. 同步给全局 globalIntl,确保非 React 组件能够拿到\n useEffect(() => {\n setLocaleMessages(currentLocale, finalMessages);\n }, [currentLocale, finalMessages]);\n\n return (\n <IntlProvider {...safeConfig} locale={currentLocale} messages={finalMessages}>\n <LocaleContext.Provider value={{ locale: currentLocale, changeLocale }}>{children}</LocaleContext.Provider>\n </IntlProvider>\n );\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA4E;AAE5E,IAAAA,gBAA4F;AAE5F,mBAAiB;AACjB,mBAAiB;AA6EX;AA3EN,IAAM,iBAAiB;AAevB,IAAM,eAAuD;AAAA,EAC3D,CAAC,cAAc,GAAG,aAAAC;AAAA,EAClB,SAAS,aAAAC;AACX;AAEO,IAAM,oBAAgB,4BAAc;AAAA,EACzC,YAAQ,yBAAU,KAAK;AAAA,EACvB,cAAc,CAAC,SAAiB;AAAA,EAAC;AACnC,CAAC;AAEM,IAAM,eAAe,UAAM,yBAAW,aAAa;AAEnD,IAAM,oBAAoB,CAAC,UAAkC;AAnCpE;AAoCE,QAAM,EAAE,UAAU,QAAQ,SAAS,IAAI;AAGvC,QAAM,iBAAa,yBAAW,yBAAW;AAEzC,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,UAAM,uBAAQ,CAAC;AAEhD,QAAM,mBAAe,0BAAY,CAAC,SAAiB;AACjD,iCAAU,MAAM,KAAK;AACrB,gBAAQ,uBAAQ,CAAC;AAAA,EACnB,GAAG,CAAC,CAAC;AAIL,QAAM,iBAAgB,6BAAM,WAAU,WAAU,yCAAY,WAAU;AAGtE,QAAM,aAAa,cAAc,QAAQ,CAAC;AAC1C,QAAM,aAAa;AAAA,IACjB,SAAS,WAAW;AAAA,IACpB,eAAe,WAAW;AAAA,IAC1B,gBAAgB,WAAW;AAAA,IAC3B,SAAS,WAAW;AAAA,EACtB;AAIA,MAAI,eAAe,CAAC;AACpB,MAAI,cAAc,WAAW,WAAW,eAAe;AACrD,mBAAe,WAAW;AAAA,EAC5B,OAAO;AACL,qBAAe,gCAAQ,MAAR,mBAAW,aAAY,CAAC;AAAA,EACzC;AAEA,QAAM,gBAAgB;AAAA,IACpB,GAAG;AAAA,IACH,GAAI,aAAa,aAAa,KAAK,aAAAD;AAAA,IACnC,GAAI,YAAY,CAAC;AAAA,EACnB;AAGA,8BAAU,MAAM;AACd,yCAAkB,eAAe,aAAa;AAAA,EAChD,GAAG,CAAC,eAAe,aAAa,CAAC;AAEjC,SACE,4CAAC,8BAAc,GAAG,YAAY,QAAQ,eAAe,UAAU,eAC7D,sDAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,QAAQ,eAAe,aAAa,GAAI,UAAS,GACpF;AAEJ;",
4
+ "sourcesContent": ["import type { ReactNode } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { IntlContext, IntlProvider, appLocales, getIntl, getLocale, setLocale, setLocaleMessages } from '@creekjs/i18n/react';\n\nimport enUS from '../locales/en_US';\nimport zhCN from '../locales/zh_CN';\n\nconst DEFAULT_LOCALE = 'zh_CN';\n\nexport type LocaleCode = 'en_US' | 'zh_CN';\n\nconst SUPPORTED_LOCALES: LocaleCode[] = ['zh_CN', 'en_US'];\n\nconst toUnderscoreLocale = (input?: string): LocaleCode => {\n if (!input) return DEFAULT_LOCALE;\n const normalized = input.replace('-', '_') as LocaleCode;\n return SUPPORTED_LOCALES.includes(normalized) ? normalized : DEFAULT_LOCALE;\n};\n\nexport interface CreekI18nProviderProps {\n children?: ReactNode;\n /**\n * 语言标识\n * @default 'zh_CN'\n */\n locale?: LocaleCode;\n /**\n * 国际化语言包,透传给 react-intl\n */\n messages?: Record<string, string>;\n}\n\nconst MESSAGES_MAP: Record<LocaleCode, Record<string, string>> = {\n zh_CN: zhCN,\n en_US: enUS,\n};\n\nexport const LocaleContext = createContext({\n locale: toUnderscoreLocale(getLocale()),\n changeLocale: (lang: string) => {},\n});\n\nexport const useAppLocale = () => useContext(LocaleContext);\n\nexport const CreekI18nProvider = (props: CreekI18nProviderProps) => {\n const { children, locale, messages } = props;\n\n // 获取父级 intl context\n const parentIntl = useContext(IntlContext);\n\n // 内部维护的 locale 状态,仅在调用 changeLocale 时更新\n const [internalLocale, setInternalLocale] = useState<string>();\n\n const changeLocale = useCallback((lang: string) => {\n const underscore = toUnderscoreLocale(lang);\n setLocale(underscore, false);\n setInternalLocale(underscore);\n }, []);\n\n // 1. 确定最终生效的 locale\n // 优先级:当前组件内部的 state > props.locale > parentIntl.locale > 全局默认\n const currentLocale = useMemo(() => {\n const rawLocale = internalLocale || locale || parentIntl?.locale || getIntl()?.locale || DEFAULT_LOCALE;\n return toUnderscoreLocale(rawLocale);\n }, [internalLocale, locale, parentIntl?.locale]);\n\n // 2. 提取父级上下文的安全配置 (避免将 IntlShape 的内部方法直接传给 IntlProvider)\n const safeConfig = useMemo(() => {\n const intlConfig = parentIntl || getIntl() || {};\n return {\n formats: intlConfig.formats,\n defaultLocale: intlConfig.defaultLocale,\n defaultFormats: intlConfig.defaultFormats,\n onError: intlConfig.onError,\n };\n }, [parentIntl]);\n\n // 3. 确定最终的 messages\n // 避免使用 stale 的 parentIntl.messages\n const finalMessages = useMemo(() => {\n let baseMessages: Record<string, any> = {};\n if (parentIntl && parentIntl.locale === currentLocale.replace('_', '-')) {\n baseMessages = parentIntl.messages;\n } else {\n // 优先从 appLocales 中获取对应语言的 messages\n baseMessages = appLocales?.[currentLocale] || getIntl()?.messages || {};\n }\n\n return {\n ...baseMessages,\n ...(MESSAGES_MAP[currentLocale] || zhCN),\n ...(messages || {}),\n };\n }, [parentIntl, currentLocale, messages]);\n\n // 4. 同步给全局 globalIntl,确保非 React 组件能够拿到\n useEffect(() => {\n setLocaleMessages(currentLocale, finalMessages);\n }, [currentLocale, finalMessages]);\n\n const contextValue = useMemo(\n () => ({\n locale: currentLocale,\n changeLocale,\n }),\n [currentLocale, changeLocale],\n );\n\n return (\n <IntlProvider {...safeConfig} locale={currentLocale.replace('_', '-')} messages={finalMessages}>\n <LocaleContext.Provider value={contextValue}>{children}</LocaleContext.Provider>\n </IntlProvider>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAqF;AAErF,IAAAA,gBAAwG;AAExG,mBAAiB;AACjB,mBAAiB;AAyGX;AAvGN,IAAM,iBAAiB;AAIvB,IAAM,oBAAkC,CAAC,SAAS,OAAO;AAEzD,IAAM,qBAAqB,CAAC,UAA+B;AACzD,MAAI,CAAC;AAAO,WAAO;AACnB,QAAM,aAAa,MAAM,QAAQ,KAAK,GAAG;AACzC,SAAO,kBAAkB,SAAS,UAAU,IAAI,aAAa;AAC/D;AAeA,IAAM,eAA2D;AAAA,EAC/D,OAAO,aAAAC;AAAA,EACP,OAAO,aAAAC;AACT;AAEO,IAAM,oBAAgB,4BAAc;AAAA,EACzC,QAAQ,uBAAmB,yBAAU,CAAC;AAAA,EACtC,cAAc,CAAC,SAAiB;AAAA,EAAC;AACnC,CAAC;AAEM,IAAM,eAAe,UAAM,yBAAW,aAAa;AAEnD,IAAM,oBAAoB,CAAC,UAAkC;AAClE,QAAM,EAAE,UAAU,QAAQ,SAAS,IAAI;AAGvC,QAAM,iBAAa,yBAAW,yBAAW;AAGzC,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,uBAAiB;AAE7D,QAAM,mBAAe,0BAAY,CAAC,SAAiB;AACjD,UAAM,aAAa,mBAAmB,IAAI;AAC1C,iCAAU,YAAY,KAAK;AAC3B,sBAAkB,UAAU;AAAA,EAC9B,GAAG,CAAC,CAAC;AAIL,QAAM,oBAAgB,sBAAQ,MAAM;AA9DtC;AA+DI,UAAM,YAAY,kBAAkB,WAAU,yCAAY,aAAU,gCAAQ,MAAR,mBAAW,WAAU;AACzF,WAAO,mBAAmB,SAAS;AAAA,EACrC,GAAG,CAAC,gBAAgB,QAAQ,yCAAY,MAAM,CAAC;AAG/C,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,UAAM,aAAa,kBAAc,uBAAQ,KAAK,CAAC;AAC/C,WAAO;AAAA,MACL,SAAS,WAAW;AAAA,MACpB,eAAe,WAAW;AAAA,MAC1B,gBAAgB,WAAW;AAAA,MAC3B,SAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAIf,QAAM,oBAAgB,sBAAQ,MAAM;AAhFtC;AAiFI,QAAI,eAAoC,CAAC;AACzC,QAAI,cAAc,WAAW,WAAW,cAAc,QAAQ,KAAK,GAAG,GAAG;AACvE,qBAAe,WAAW;AAAA,IAC5B,OAAO;AAEL,uBAAe,qDAAa,qBAAkB,gCAAQ,MAAR,mBAAW,aAAY,CAAC;AAAA,IACxE;AAEA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,aAAa,aAAa,KAAK,aAAAD;AAAA,MACnC,GAAI,YAAY,CAAC;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,YAAY,eAAe,QAAQ,CAAC;AAGxC,8BAAU,MAAM;AACd,yCAAkB,eAAe,aAAa;AAAA,EAChD,GAAG,CAAC,eAAe,aAAa,CAAC;AAEjC,QAAM,mBAAe;AAAA,IACnB,OAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAAC,eAAe,YAAY;AAAA,EAC9B;AAEA,SACE,4CAAC,8BAAc,GAAG,YAAY,QAAQ,cAAc,QAAQ,KAAK,GAAG,GAAG,UAAU,eAC/E,sDAAC,cAAc,UAAd,EAAuB,OAAO,cAAe,UAAS,GACzD;AAEJ;",
6
6
  "names": ["import_react", "zhCN", "enUS"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/creek-config-provider/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAQhD,OAAO,EAAsB,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7G,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,GAAG,sBAAsB,CAAC;AAE9H,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAoCvC,eAAO,MAAM,mBAAmB;YAAW,wBAAwB;;CAQlE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/creek-config-provider/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAQhD,OAAO,EAAsB,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAc,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOzH,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,GAAG,sBAAsB,CAAC;AAE9H,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAmCvC,eAAO,MAAM,mBAAmB;YAAW,wBAAwB;;CAQlE,CAAC"}
@@ -44,6 +44,10 @@ var import_useLayoutSettingsStore = require("../creek-layout/useLayoutSettingsSt
44
44
  var import_CreekConfigContext = require("./CreekConfigContext");
45
45
  var import_CreekI18nProvider = require("./CreekI18nProvider");
46
46
  var import_jsx_runtime = require("react/jsx-runtime");
47
+ var ANTD_LOCALE_MAP = {
48
+ zh_CN: import_zh_CN.default,
49
+ en_US: import_en_US.default
50
+ };
47
51
  var InnerConfigProvider = (props) => {
48
52
  var _a;
49
53
  const { children, theme, ...more } = props;
@@ -62,7 +66,7 @@ var InnerConfigProvider = (props) => {
62
66
  }
63
67
  } : {}
64
68
  );
65
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.ConfigProvider, { locale: locale === "en-US" ? import_en_US.default : import_zh_CN.default, theme: finalTheme, ...more, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_CreekConfigContext.CreekConfigContext.Provider, { value: more, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.App, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_creek_hooks.AppProvider, { children }) }) }) });
69
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.ConfigProvider, { locale: ANTD_LOCALE_MAP[locale] || import_zh_CN.default, theme: finalTheme, ...more, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_CreekConfigContext.CreekConfigContext.Provider, { value: more, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.App, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_creek_hooks.AppProvider, { children }) }) }) });
66
70
  };
67
71
  var CreekConfigProvider = (props) => {
68
72
  const { children, locale, messages, ...more } = props;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/creek-config-provider/index.tsx"],
4
- "sourcesContent": ["import type { ConfigProviderProps } from 'antd';\nimport { App, ConfigProvider } from 'antd';\nimport enUS_antd from 'antd/locale/en_US';\nimport zhCN_antd from 'antd/locale/zh_CN';\nimport merge from 'lodash/merge';\n\nimport { AppProvider } from '../creek-hooks';\nimport { useLayoutSettingsStore } from '../creek-layout/useLayoutSettingsStore';\nimport { CreekConfigContext, CreekConfigContextProps } from './CreekConfigContext';\nimport { CreekI18nProvider, CreekI18nProviderProps, LocaleContext, useAppLocale } from './CreekI18nProvider';\n\nexport type CreekConfigProviderProps = CreekConfigContextProps & Omit<ConfigProviderProps, 'locale'> & CreekI18nProviderProps;\n\nexport { CreekI18nProvider, LocaleContext, useAppLocale };\nexport type { CreekI18nProviderProps };\n\nconst InnerConfigProvider = (props: Omit<CreekConfigProviderProps, 'locale' | 'messages'>) => {\n const { children, theme, ...more } = props;\n const { locale } = useAppLocale();\n const settingsStore = useLayoutSettingsStore();\n\n const activeColorPrimary = settingsStore.colorPrimary || theme?.token?.colorPrimary;\n\n let finalTheme = merge(\n {},\n theme,\n activeColorPrimary\n ? {\n token: {\n colorPrimary: activeColorPrimary,\n colorLink: activeColorPrimary,\n colorLinkHover: activeColorPrimary,\n colorLinkActive: activeColorPrimary,\n },\n }\n : {}\n );\n\n\n return (\n <ConfigProvider locale={locale === 'en-US' ? enUS_antd : zhCN_antd} theme={finalTheme} {...more}>\n <CreekConfigContext.Provider value={more as any}>\n <App>\n <AppProvider>{children}</AppProvider>\n </App>\n </CreekConfigContext.Provider>\n </ConfigProvider>\n );\n};\n\nexport const CreekConfigProvider = (props: CreekConfigProviderProps) => {\n const { children, locale, messages, ...more } = props;\n\n return (\n <CreekI18nProvider locale={locale} messages={messages}>\n <InnerConfigProvider {...more}>{children}</InnerConfigProvider>\n </CreekI18nProvider>\n );\n};\n\nCreekConfigProvider.CreekConfigContext = CreekConfigContext;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAoC;AACpC,mBAAsB;AACtB,mBAAsB;AACtB,mBAAkB;AAElB,yBAA4B;AAC5B,oCAAuC;AACvC,gCAA4D;AAC5D,+BAAuF;AAkC7E;AA3BV,IAAM,sBAAsB,CAAC,UAAiE;AAhB9F;AAiBE,QAAM,EAAE,UAAU,OAAO,GAAG,KAAK,IAAI;AACrC,QAAM,EAAE,OAAO,QAAI,uCAAa;AAChC,QAAM,oBAAgB,sDAAuB;AAE7C,QAAM,qBAAqB,cAAc,kBAAgB,oCAAO,UAAP,mBAAc;AAEvE,MAAI,iBAAa,aAAAA;AAAA,IACf,CAAC;AAAA,IACD;AAAA,IACA,qBACI;AAAA,MACE,OAAO;AAAA,QACL,cAAc;AAAA,QACd,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MACnB;AAAA,IACF,IACA,CAAC;AAAA,EACP;AAGA,SACE,4CAAC,8BAAe,QAAQ,WAAW,UAAU,aAAAC,UAAY,aAAAC,SAAW,OAAO,YAAa,GAAG,MACzF,sDAAC,6CAAmB,UAAnB,EAA4B,OAAO,MAClC,sDAAC,mBACC,sDAAC,kCAAa,UAAS,GACzB,GACF,GACF;AAEJ;AAEO,IAAM,sBAAsB,CAAC,UAAoC;AACtE,QAAM,EAAE,UAAU,QAAQ,UAAU,GAAG,KAAK,IAAI;AAEhD,SACE,4CAAC,8CAAkB,QAAgB,UACjC,sDAAC,uBAAqB,GAAG,MAAO,UAAS,GAC3C;AAEJ;AAEA,oBAAoB,qBAAqB;",
6
- "names": ["merge", "enUS_antd", "zhCN_antd"]
4
+ "sourcesContent": ["import type { ConfigProviderProps } from 'antd';\nimport { App, ConfigProvider } from 'antd';\nimport enUS_antd from 'antd/locale/en_US';\nimport zhCN_antd from 'antd/locale/zh_CN';\nimport merge from 'lodash/merge';\n\nimport { AppProvider } from '../creek-hooks';\nimport { useLayoutSettingsStore } from '../creek-layout/useLayoutSettingsStore';\nimport { CreekConfigContext, CreekConfigContextProps } from './CreekConfigContext';\nimport { CreekI18nProvider, CreekI18nProviderProps, LocaleCode, LocaleContext, useAppLocale } from './CreekI18nProvider';\n\nconst ANTD_LOCALE_MAP: Record<LocaleCode, any> = {\n zh_CN: zhCN_antd,\n en_US: enUS_antd,\n};\n\nexport type CreekConfigProviderProps = CreekConfigContextProps & Omit<ConfigProviderProps, 'locale'> & CreekI18nProviderProps;\n\nexport { CreekI18nProvider, LocaleContext, useAppLocale };\nexport type { CreekI18nProviderProps };\n\nconst InnerConfigProvider = (props: Omit<CreekConfigProviderProps, 'locale' | 'messages'>) => {\n const { children, theme, ...more } = props;\n const { locale } = useAppLocale();\n const settingsStore = useLayoutSettingsStore();\n\n const activeColorPrimary = settingsStore.colorPrimary || theme?.token?.colorPrimary;\n\n let finalTheme = merge(\n {},\n theme,\n activeColorPrimary\n ? {\n token: {\n colorPrimary: activeColorPrimary,\n colorLink: activeColorPrimary,\n colorLinkHover: activeColorPrimary,\n colorLinkActive: activeColorPrimary,\n },\n }\n : {},\n );\n\n return (\n <ConfigProvider locale={ANTD_LOCALE_MAP[locale] || zhCN_antd} theme={finalTheme} {...more}>\n <CreekConfigContext.Provider value={more as any}>\n <App>\n <AppProvider>{children}</AppProvider>\n </App>\n </CreekConfigContext.Provider>\n </ConfigProvider>\n );\n};\n\nexport const CreekConfigProvider = (props: CreekConfigProviderProps) => {\n const { children, locale, messages, ...more } = props;\n\n return (\n <CreekI18nProvider locale={locale} messages={messages}>\n <InnerConfigProvider {...more}>{children}</InnerConfigProvider>\n </CreekI18nProvider>\n );\n};\n\nCreekConfigProvider.CreekConfigContext = CreekConfigContext;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAoC;AACpC,mBAAsB;AACtB,mBAAsB;AACtB,mBAAkB;AAElB,yBAA4B;AAC5B,oCAAuC;AACvC,gCAA4D;AAC5D,+BAAmG;AAsCzF;AApCV,IAAM,kBAA2C;AAAA,EAC/C,OAAO,aAAAA;AAAA,EACP,OAAO,aAAAC;AACT;AAOA,IAAM,sBAAsB,CAAC,UAAiE;AArB9F;AAsBE,QAAM,EAAE,UAAU,OAAO,GAAG,KAAK,IAAI;AACrC,QAAM,EAAE,OAAO,QAAI,uCAAa;AAChC,QAAM,oBAAgB,sDAAuB;AAE7C,QAAM,qBAAqB,cAAc,kBAAgB,oCAAO,UAAP,mBAAc;AAEvE,MAAI,iBAAa,aAAAC;AAAA,IACf,CAAC;AAAA,IACD;AAAA,IACA,qBACI;AAAA,MACE,OAAO;AAAA,QACL,cAAc;AAAA,QACd,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MACnB;AAAA,IACF,IACA,CAAC;AAAA,EACP;AAEA,SACE,4CAAC,8BAAe,QAAQ,gBAAgB,MAAM,KAAK,aAAAC,SAAW,OAAO,YAAa,GAAG,MACnF,sDAAC,6CAAmB,UAAnB,EAA4B,OAAO,MAClC,sDAAC,mBACC,sDAAC,kCAAa,UAAS,GACzB,GACF,GACF;AAEJ;AAEO,IAAM,sBAAsB,CAAC,UAAoC;AACtE,QAAM,EAAE,UAAU,QAAQ,UAAU,GAAG,KAAK,IAAI;AAEhD,SACE,4CAAC,8CAAkB,QAAgB,UACjC,sDAAC,uBAAqB,GAAG,MAAO,UAAS,GAC3C;AAEJ;AAEA,oBAAoB,qBAAqB;",
6
+ "names": ["zhCN_antd", "enUS_antd", "merge", "zhCN_antd"]
7
7
  }
@@ -27,11 +27,11 @@ var import_antd = require("antd");
27
27
  var import_lodash = require("lodash");
28
28
  var import_react = require("react");
29
29
  var import_react_router_dom = require("react-router-dom");
30
- var import_i18n = require("../utils/i18n");
30
+ var import_react2 = require("@creekjs/i18n/react");
31
31
  var import_jsx_runtime = require("react/jsx-runtime");
32
32
  var CreekKeepAlive = (props) => {
33
33
  const { exclude = [], getTabTitle, homePath = "/", tabBarStyle, maxTabCount = 20 } = props;
34
- const t = (0, import_i18n.useT)();
34
+ const t = (0, import_react2.useT)();
35
35
  const outlet = (0, import_react_router_dom.useOutlet)();
36
36
  const location = (0, import_react_router_dom.useLocation)();
37
37
  const navigate = (0, import_react_router_dom.useNavigate)();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/creek-keep-alive/index.tsx"],
4
- "sourcesContent": ["import { useMemoizedFn } from 'ahooks';\nimport { Dropdown, MenuProps, Tabs } from 'antd';\nimport { isRegExp, isString, omit } from 'lodash';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate, useOutlet } from 'react-router-dom';\n\nimport { useT } from '@/utils/i18n';\n\nexport interface CreekKeepAliveProps {\n /**\n * 不需要缓存的路径\n */\n exclude?: (string | RegExp)[];\n /**\n * 自定义Tab标题获取方法\n */\n getTabTitle?: (pathname: string) => React.ReactNode;\n /**\n * 默认首页路径\n */\n homePath?: string;\n /**\n * Tabs的样式\n */\n tabBarStyle?: React.CSSProperties;\n /**\n * 最大缓存数量,默认为 20\n */\n maxTabCount?: number;\n}\n\ninterface TabItem {\n key: string;\n label: React.ReactNode;\n closable?: boolean;\n}\n\nexport const CreekKeepAlive: React.FC<CreekKeepAliveProps> = (props) => {\n const { exclude = [], getTabTitle, homePath = '/', tabBarStyle, maxTabCount = 20 } = props;\n\n const t = useT();\n const outlet = useOutlet();\n const location = useLocation();\n const navigate = useNavigate();\n\n const [tabItems, setTabItems] = useState<TabItem[]>([]);\n const [activeKey, setActiveKey] = useState<string>('');\n const [cachedPages, setCachedPages] = useState<Record<string, React.ReactNode>>({});\n\n // 判断是否不需要缓存\n const isPathExcluded = (path: string) => {\n return exclude.some((item) => {\n if (isString(item)) {\n return item === path;\n }\n if (isRegExp(item)) {\n return item.test(path);\n }\n return false;\n });\n };\n\n // 初始化或路由变化时更新\n useEffect(() => {\n const currentPath = location.pathname;\n setActiveKey(currentPath);\n\n // 更新页面内容缓存\n setCachedPages((prev) => {\n if (prev[currentPath]) {\n return prev;\n }\n return {\n ...prev,\n [currentPath]: outlet,\n };\n });\n\n // 更新 Tab 列表\n setTabItems((prev) => {\n if (prev.find((i) => i.key === currentPath)) {\n return prev;\n }\n const title = getTabTitle?.(currentPath) || currentPath;\n const newItems = [...prev, { key: currentPath, label: title, closable: currentPath !== homePath }];\n\n // 超过最大数量限制\n if (newItems.length > maxTabCount) {\n // 找到第一个可以关闭的 Tab(非首页、非当前页)\n // 这里策略是移除最早加入的那个可关闭 Tab。prev[0] 是最早的。\n // 但要注意不要移除当前页(currentPath),虽然 currentPath 是刚加进去的,但在极端情况下(比如 max=1)\n // 简单策略:移除第一个 closable 且 key !== currentPath 的 item\n const indexToRemove = newItems.findIndex((item) => item.closable && item.key !== currentPath);\n if (indexToRemove !== -1) {\n const itemToRemove = newItems[indexToRemove];\n // 顺便移除缓存\n setCachedPages((currentCached) => omit(currentCached, [itemToRemove.key]));\n newItems.splice(indexToRemove, 1);\n }\n }\n return newItems;\n });\n }, [location.pathname, outlet, getTabTitle, homePath, maxTabCount]);\n\n // 清理不需要缓存的页面\n useEffect(() => {\n // 监听路由离开\n // 这里比较 tricky,因为 useEffect 拿到的 activeKey 已经是新的了\n // 我们需要知道\"上一个\"路径\n // 简化处理:每次 render 时,检查 pages 里哪些是不需要缓存且不处于 active 状态的,将其移除?\n // 但如果在 setState 里做会导致死循环。\n // 另一种策略:不缓存 = 离开时销毁。\n // 我们可以在 pages 渲染时控制。\n }, []);\n\n const closeTab = useMemoizedFn((targetKey: string) => {\n const targetIndex = tabItems.findIndex((item) => item.key === targetKey);\n const newTabItems = tabItems.filter((item) => item.key !== targetKey);\n\n // 移除缓存\n setCachedPages((prev) => omit(prev, [targetKey]));\n setTabItems(newTabItems);\n\n // 如果关闭的是当前页,跳转到临近页\n if (targetKey === activeKey) {\n if (newTabItems.length > 0) {\n // 尝试跳到右边,没有则左边\n const nextIndex = targetIndex >= newTabItems.length ? newTabItems.length - 1 : targetIndex;\n const nextKey = newTabItems[nextIndex].key;\n navigate(nextKey);\n } else {\n navigate(homePath);\n }\n }\n });\n\n const closeOtherTabs = useMemoizedFn((currentKey: string) => {\n const newTabItems = tabItems.filter((item) => item.key === currentKey || item.key === homePath);\n setTabItems(newTabItems);\n\n const keepKeys = newTabItems.map((i) => i.key);\n setCachedPages((prev) => {\n const newCachedPages: Record<string, React.ReactNode> = {};\n keepKeys.forEach((k) => {\n if (prev[k]) newCachedPages[k] = prev[k];\n });\n return newCachedPages;\n });\n\n if (activeKey !== currentKey) {\n navigate(currentKey);\n }\n });\n\n const closeRightTabs = useMemoizedFn((currentKey: string) => {\n const currentIndex = tabItems.findIndex((i) => i.key === currentKey);\n const rightItems = tabItems.slice(currentIndex + 1);\n const rightKeys = rightItems.map((i) => i.key);\n\n const newTabItems = tabItems.filter((i) => !rightKeys.includes(i.key));\n setTabItems(newTabItems);\n\n setCachedPages((prev) => omit(prev, rightKeys));\n\n if (rightKeys.includes(activeKey)) {\n navigate(currentKey);\n }\n });\n\n const handleTabEdit = (targetKey: React.MouseEvent | React.KeyboardEvent | string, action: 'add' | 'remove') => {\n if (action === 'remove' && isString(targetKey)) {\n closeTab(targetKey);\n }\n };\n\n const handleTabClick = (key: string) => {\n navigate(key);\n };\n\n const renderTabLabel = (item: TabItem) => {\n const menuItems: MenuProps['items'] = [\n {\n key: 'close',\n label: t('creek-keep-alive.index.guanBiDangQian', '关闭当前'),\n disabled: item.key === homePath,\n onClick: () => closeTab(item.key),\n },\n {\n key: 'closeOthers',\n label: t('creek-keep-alive.index.guanBiQiTa', '关闭其他'),\n onClick: () => closeOtherTabs(item.key),\n },\n {\n key: 'closeRight',\n label: t('creek-keep-alive.index.guanBiYouCe', '关闭右侧'),\n onClick: () => closeRightTabs(item.key),\n },\n ];\n\n return (\n <Dropdown menu={{ items: menuItems }} trigger={['contextMenu']}>\n <span>{item.label}</span>\n </Dropdown>\n );\n };\n\n return (\n <div className=\"creek-keep-alive\">\n <Tabs\n activeKey={activeKey}\n type=\"editable-card\"\n hideAdd\n onChange={handleTabClick}\n onEdit={handleTabEdit}\n tabBarStyle={{ margin: 0, ...tabBarStyle }}\n items={tabItems.map((item) => ({\n ...item,\n label: renderTabLabel(item),\n children: (\n <div key={item.key} style={{ height: '100%', display: activeKey === item.key ? 'block' : 'none' }}>\n {/* 如果是不缓存的页面,且不是当前页,则不渲染(销毁) */}\n {/* 如果是缓存页面,或者是当前页,则渲染 */}\n {!isPathExcluded(item.key) || activeKey === item.key ? cachedPages[item.key] : null}\n </div>\n ),\n }))}\n />\n </div>\n );\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA8B;AAC9B,kBAA0C;AAC1C,oBAAyC;AACzC,mBAA2C;AAC3C,8BAAoD;AAEpD,kBAAqB;AAmMb;AApKD,IAAM,iBAAgD,CAAC,UAAU;AACtE,QAAM,EAAE,UAAU,CAAC,GAAG,aAAa,WAAW,KAAK,aAAa,cAAc,GAAG,IAAI;AAErF,QAAM,QAAI,kBAAK;AACf,QAAM,aAAS,mCAAU;AACzB,QAAM,eAAW,qCAAY;AAC7B,QAAM,eAAW,qCAAY;AAE7B,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAoB,CAAC,CAAC;AACtD,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAiB,EAAE;AACrD,QAAM,CAAC,aAAa,cAAc,QAAI,uBAA0C,CAAC,CAAC;AAGlF,QAAM,iBAAiB,CAAC,SAAiB;AACvC,WAAO,QAAQ,KAAK,CAAC,SAAS;AAC5B,cAAI,wBAAS,IAAI,GAAG;AAClB,eAAO,SAAS;AAAA,MAClB;AACA,cAAI,wBAAS,IAAI,GAAG;AAClB,eAAO,KAAK,KAAK,IAAI;AAAA,MACvB;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAGA,8BAAU,MAAM;AACd,UAAM,cAAc,SAAS;AAC7B,iBAAa,WAAW;AAGxB,mBAAe,CAAC,SAAS;AACvB,UAAI,KAAK,WAAW,GAAG;AACrB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,WAAW,GAAG;AAAA,MACjB;AAAA,IACF,CAAC;AAGD,gBAAY,CAAC,SAAS;AACpB,UAAI,KAAK,KAAK,CAAC,MAAM,EAAE,QAAQ,WAAW,GAAG;AAC3C,eAAO;AAAA,MACT;AACA,YAAM,SAAQ,2CAAc,iBAAgB;AAC5C,YAAM,WAAW,CAAC,GAAG,MAAM,EAAE,KAAK,aAAa,OAAO,OAAO,UAAU,gBAAgB,SAAS,CAAC;AAGjG,UAAI,SAAS,SAAS,aAAa;AAKjC,cAAM,gBAAgB,SAAS,UAAU,CAAC,SAAS,KAAK,YAAY,KAAK,QAAQ,WAAW;AAC5F,YAAI,kBAAkB,IAAI;AACxB,gBAAM,eAAe,SAAS,aAAa;AAE3C,yBAAe,CAAC,sBAAkB,oBAAK,eAAe,CAAC,aAAa,GAAG,CAAC,CAAC;AACzE,mBAAS,OAAO,eAAe,CAAC;AAAA,QAClC;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,SAAS,UAAU,QAAQ,aAAa,UAAU,WAAW,CAAC;AAGlE,8BAAU,MAAM;AAAA,EAQhB,GAAG,CAAC,CAAC;AAEL,QAAM,eAAW,6BAAc,CAAC,cAAsB;AACpD,UAAM,cAAc,SAAS,UAAU,CAAC,SAAS,KAAK,QAAQ,SAAS;AACvE,UAAM,cAAc,SAAS,OAAO,CAAC,SAAS,KAAK,QAAQ,SAAS;AAGpE,mBAAe,CAAC,aAAS,oBAAK,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,gBAAY,WAAW;AAGvB,QAAI,cAAc,WAAW;AAC3B,UAAI,YAAY,SAAS,GAAG;AAE1B,cAAM,YAAY,eAAe,YAAY,SAAS,YAAY,SAAS,IAAI;AAC/E,cAAM,UAAU,YAAY,SAAS,EAAE;AACvC,iBAAS,OAAO;AAAA,MAClB,OAAO;AACL,iBAAS,QAAQ;AAAA,MACnB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,qBAAiB,6BAAc,CAAC,eAAuB;AAC3D,UAAM,cAAc,SAAS,OAAO,CAAC,SAAS,KAAK,QAAQ,cAAc,KAAK,QAAQ,QAAQ;AAC9F,gBAAY,WAAW;AAEvB,UAAM,WAAW,YAAY,IAAI,CAAC,MAAM,EAAE,GAAG;AAC7C,mBAAe,CAAC,SAAS;AACvB,YAAM,iBAAkD,CAAC;AACzD,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,KAAK,CAAC;AAAG,yBAAe,CAAC,IAAI,KAAK,CAAC;AAAA,MACzC,CAAC;AACD,aAAO;AAAA,IACT,CAAC;AAED,QAAI,cAAc,YAAY;AAC5B,eAAS,UAAU;AAAA,IACrB;AAAA,EACF,CAAC;AAED,QAAM,qBAAiB,6BAAc,CAAC,eAAuB;AAC3D,UAAM,eAAe,SAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,UAAU;AACnE,UAAM,aAAa,SAAS,MAAM,eAAe,CAAC;AAClD,UAAM,YAAY,WAAW,IAAI,CAAC,MAAM,EAAE,GAAG;AAE7C,UAAM,cAAc,SAAS,OAAO,CAAC,MAAM,CAAC,UAAU,SAAS,EAAE,GAAG,CAAC;AACrE,gBAAY,WAAW;AAEvB,mBAAe,CAAC,aAAS,oBAAK,MAAM,SAAS,CAAC;AAE9C,QAAI,UAAU,SAAS,SAAS,GAAG;AACjC,eAAS,UAAU;AAAA,IACrB;AAAA,EACF,CAAC;AAED,QAAM,gBAAgB,CAAC,WAA4D,WAA6B;AAC9G,QAAI,WAAW,gBAAY,wBAAS,SAAS,GAAG;AAC9C,eAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,iBAAiB,CAAC,QAAgB;AACtC,aAAS,GAAG;AAAA,EACd;AAEA,QAAM,iBAAiB,CAAC,SAAkB;AACxC,UAAM,YAAgC;AAAA,MACpC;AAAA,QACE,KAAK;AAAA,QACL,OAAO,EAAE,yCAAyC,MAAM;AAAA,QACxD,UAAU,KAAK,QAAQ;AAAA,QACvB,SAAS,MAAM,SAAS,KAAK,GAAG;AAAA,MAClC;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,OAAO,EAAE,qCAAqC,MAAM;AAAA,QACpD,SAAS,MAAM,eAAe,KAAK,GAAG;AAAA,MACxC;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,OAAO,EAAE,sCAAsC,MAAM;AAAA,QACrD,SAAS,MAAM,eAAe,KAAK,GAAG;AAAA,MACxC;AAAA,IACF;AAEA,WACE,4CAAC,wBAAS,MAAM,EAAE,OAAO,UAAU,GAAG,SAAS,CAAC,aAAa,GAC3D,sDAAC,UAAM,eAAK,OAAM,GACpB;AAAA,EAEJ;AAEA,SACE,4CAAC,SAAI,WAAU,oBACb;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,SAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,aAAa,EAAE,QAAQ,GAAG,GAAG,YAAY;AAAA,MACzC,OAAO,SAAS,IAAI,CAAC,UAAU;AAAA,QAC7B,GAAG;AAAA,QACH,OAAO,eAAe,IAAI;AAAA,QAC1B,UACE,4CAAC,SAAmB,OAAO,EAAE,QAAQ,QAAQ,SAAS,cAAc,KAAK,MAAM,UAAU,OAAO,GAG7F,WAAC,eAAe,KAAK,GAAG,KAAK,cAAc,KAAK,MAAM,YAAY,KAAK,GAAG,IAAI,QAHvE,KAAK,GAIf;AAAA,MAEJ,EAAE;AAAA;AAAA,EACJ,GACF;AAEJ;",
6
- "names": []
4
+ "sourcesContent": ["import { useMemoizedFn } from 'ahooks';\nimport { Dropdown, MenuProps, Tabs } from 'antd';\nimport { isRegExp, isString, omit } from 'lodash';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate, useOutlet } from 'react-router-dom';\n\nimport { useT } from '@creekjs/i18n/react';\n\nexport interface CreekKeepAliveProps {\n /**\n * 不需要缓存的路径\n */\n exclude?: (string | RegExp)[];\n /**\n * 自定义Tab标题获取方法\n */\n getTabTitle?: (pathname: string) => React.ReactNode;\n /**\n * 默认首页路径\n */\n homePath?: string;\n /**\n * Tabs的样式\n */\n tabBarStyle?: React.CSSProperties;\n /**\n * 最大缓存数量,默认为 20\n */\n maxTabCount?: number;\n}\n\ninterface TabItem {\n key: string;\n label: React.ReactNode;\n closable?: boolean;\n}\n\nexport const CreekKeepAlive: React.FC<CreekKeepAliveProps> = (props) => {\n const { exclude = [], getTabTitle, homePath = '/', tabBarStyle, maxTabCount = 20 } = props;\n\n const t = useT();\n const outlet = useOutlet();\n const location = useLocation();\n const navigate = useNavigate();\n\n const [tabItems, setTabItems] = useState<TabItem[]>([]);\n const [activeKey, setActiveKey] = useState<string>('');\n const [cachedPages, setCachedPages] = useState<Record<string, React.ReactNode>>({});\n\n // 判断是否不需要缓存\n const isPathExcluded = (path: string) => {\n return exclude.some((item) => {\n if (isString(item)) {\n return item === path;\n }\n if (isRegExp(item)) {\n return item.test(path);\n }\n return false;\n });\n };\n\n // 初始化或路由变化时更新\n useEffect(() => {\n const currentPath = location.pathname;\n setActiveKey(currentPath);\n\n // 更新页面内容缓存\n setCachedPages((prev) => {\n if (prev[currentPath]) {\n return prev;\n }\n return {\n ...prev,\n [currentPath]: outlet,\n };\n });\n\n // 更新 Tab 列表\n setTabItems((prev) => {\n if (prev.find((i) => i.key === currentPath)) {\n return prev;\n }\n const title = getTabTitle?.(currentPath) || currentPath;\n const newItems = [...prev, { key: currentPath, label: title, closable: currentPath !== homePath }];\n\n // 超过最大数量限制\n if (newItems.length > maxTabCount) {\n // 找到第一个可以关闭的 Tab(非首页、非当前页)\n // 这里策略是移除最早加入的那个可关闭 Tab。prev[0] 是最早的。\n // 但要注意不要移除当前页(currentPath),虽然 currentPath 是刚加进去的,但在极端情况下(比如 max=1)\n // 简单策略:移除第一个 closable 且 key !== currentPath 的 item\n const indexToRemove = newItems.findIndex((item) => item.closable && item.key !== currentPath);\n if (indexToRemove !== -1) {\n const itemToRemove = newItems[indexToRemove];\n // 顺便移除缓存\n setCachedPages((currentCached) => omit(currentCached, [itemToRemove.key]));\n newItems.splice(indexToRemove, 1);\n }\n }\n return newItems;\n });\n }, [location.pathname, outlet, getTabTitle, homePath, maxTabCount]);\n\n // 清理不需要缓存的页面\n useEffect(() => {\n // 监听路由离开\n // 这里比较 tricky,因为 useEffect 拿到的 activeKey 已经是新的了\n // 我们需要知道\"上一个\"路径\n // 简化处理:每次 render 时,检查 pages 里哪些是不需要缓存且不处于 active 状态的,将其移除?\n // 但如果在 setState 里做会导致死循环。\n // 另一种策略:不缓存 = 离开时销毁。\n // 我们可以在 pages 渲染时控制。\n }, []);\n\n const closeTab = useMemoizedFn((targetKey: string) => {\n const targetIndex = tabItems.findIndex((item) => item.key === targetKey);\n const newTabItems = tabItems.filter((item) => item.key !== targetKey);\n\n // 移除缓存\n setCachedPages((prev) => omit(prev, [targetKey]));\n setTabItems(newTabItems);\n\n // 如果关闭的是当前页,跳转到临近页\n if (targetKey === activeKey) {\n if (newTabItems.length > 0) {\n // 尝试跳到右边,没有则左边\n const nextIndex = targetIndex >= newTabItems.length ? newTabItems.length - 1 : targetIndex;\n const nextKey = newTabItems[nextIndex].key;\n navigate(nextKey);\n } else {\n navigate(homePath);\n }\n }\n });\n\n const closeOtherTabs = useMemoizedFn((currentKey: string) => {\n const newTabItems = tabItems.filter((item) => item.key === currentKey || item.key === homePath);\n setTabItems(newTabItems);\n\n const keepKeys = newTabItems.map((i) => i.key);\n setCachedPages((prev) => {\n const newCachedPages: Record<string, React.ReactNode> = {};\n keepKeys.forEach((k) => {\n if (prev[k]) newCachedPages[k] = prev[k];\n });\n return newCachedPages;\n });\n\n if (activeKey !== currentKey) {\n navigate(currentKey);\n }\n });\n\n const closeRightTabs = useMemoizedFn((currentKey: string) => {\n const currentIndex = tabItems.findIndex((i) => i.key === currentKey);\n const rightItems = tabItems.slice(currentIndex + 1);\n const rightKeys = rightItems.map((i) => i.key);\n\n const newTabItems = tabItems.filter((i) => !rightKeys.includes(i.key));\n setTabItems(newTabItems);\n\n setCachedPages((prev) => omit(prev, rightKeys));\n\n if (rightKeys.includes(activeKey)) {\n navigate(currentKey);\n }\n });\n\n const handleTabEdit = (targetKey: React.MouseEvent | React.KeyboardEvent | string, action: 'add' | 'remove') => {\n if (action === 'remove' && isString(targetKey)) {\n closeTab(targetKey);\n }\n };\n\n const handleTabClick = (key: string) => {\n navigate(key);\n };\n\n const renderTabLabel = (item: TabItem) => {\n const menuItems: MenuProps['items'] = [\n {\n key: 'close',\n label: t('creek-keep-alive.index.guanBiDangQian', '关闭当前'),\n disabled: item.key === homePath,\n onClick: () => closeTab(item.key),\n },\n {\n key: 'closeOthers',\n label: t('creek-keep-alive.index.guanBiQiTa', '关闭其他'),\n onClick: () => closeOtherTabs(item.key),\n },\n {\n key: 'closeRight',\n label: t('creek-keep-alive.index.guanBiYouCe', '关闭右侧'),\n onClick: () => closeRightTabs(item.key),\n },\n ];\n\n return (\n <Dropdown menu={{ items: menuItems }} trigger={['contextMenu']}>\n <span>{item.label}</span>\n </Dropdown>\n );\n };\n\n return (\n <div className=\"creek-keep-alive\">\n <Tabs\n activeKey={activeKey}\n type=\"editable-card\"\n hideAdd\n onChange={handleTabClick}\n onEdit={handleTabEdit}\n tabBarStyle={{ margin: 0, ...tabBarStyle }}\n items={tabItems.map((item) => ({\n ...item,\n label: renderTabLabel(item),\n children: (\n <div key={item.key} style={{ height: '100%', display: activeKey === item.key ? 'block' : 'none' }}>\n {/* 如果是不缓存的页面,且不是当前页,则不渲染(销毁) */}\n {/* 如果是缓存页面,或者是当前页,则渲染 */}\n {!isPathExcluded(item.key) || activeKey === item.key ? cachedPages[item.key] : null}\n </div>\n ),\n }))}\n />\n </div>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react"]
7
7
  }
@@ -27,7 +27,7 @@ var import_icons = require("@ant-design/icons");
27
27
  var import_ahooks = require("ahooks");
28
28
  var import_antd = require("antd");
29
29
  var import_zustand = require("zustand");
30
- var import_i18n = require("../../utils/i18n");
30
+ var import_react = require("@creekjs/i18n/react");
31
31
  var import_jsx_runtime = require("react/jsx-runtime");
32
32
  var useFullScreenStore = (0, import_zustand.create)((set, get) => {
33
33
  return {
@@ -41,7 +41,7 @@ var useFullScreenStore = (0, import_zustand.create)((set, get) => {
41
41
  };
42
42
  });
43
43
  var FullScreen = () => {
44
- const t = (0, import_i18n.useT)();
44
+ const t = (0, import_react.useT)();
45
45
  const [, { toggleFullscreen }] = (0, import_ahooks.useFullscreen)(document.body);
46
46
  const { isFullScreen, changeFullScreen } = useFullScreenStore.getState();
47
47
  const handleFullScreen = (0, import_ahooks.useMemoizedFn)(() => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/creek-layout/ActionRender/FullScreen.tsx"],
4
- "sourcesContent": ["import { FullscreenExitOutlined, FullscreenOutlined } from '@ant-design/icons';\nimport { useFullscreen, useMemoizedFn } from 'ahooks';\nimport { Tooltip } from 'antd';\n\nimport { create } from 'zustand';\n\nimport { useT } from '@/utils/i18n';\n\nexport type FullScreenStore = {\n isFullScreen: boolean;\n changeFullScreen: () => void;\n};\n\nexport const useFullScreenStore = create<FullScreenStore>((set, get) => {\n return {\n isFullScreen: false,\n changeFullScreen: () => {\n const _isFullScreen = get().isFullScreen;\n set({\n isFullScreen: !_isFullScreen,\n });\n },\n };\n});\n\nexport const FullScreen = () => {\n const t = useT();\n const [, { toggleFullscreen }] = useFullscreen(document.body);\n\n const { isFullScreen, changeFullScreen } = useFullScreenStore.getState();\n\n const handleFullScreen = useMemoizedFn(() => {\n toggleFullscreen();\n changeFullScreen();\n });\n\n return (\n <>\n {isFullScreen ? (\n <Tooltip title={t('creek-layout.ActionRender.FullScreen.tuiChuQuanPing', '退出全屏')} placement=\"top\">\n <FullscreenExitOutlined onClick={handleFullScreen} />\n </Tooltip>\n ) : (\n <Tooltip title={t('creek-layout.ActionRender.FullScreen.quanPing', '全屏')} placement=\"top\">\n <FullscreenOutlined onClick={handleFullScreen} />\n </Tooltip>\n )}\n </>\n );\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2D;AAC3D,oBAA6C;AAC7C,kBAAwB;AAExB,qBAAuB;AAEvB,kBAAqB;AA+BjB;AAxBG,IAAM,yBAAqB,uBAAwB,CAAC,KAAK,QAAQ;AACtE,SAAO;AAAA,IACL,cAAc;AAAA,IACd,kBAAkB,MAAM;AACtB,YAAM,gBAAgB,IAAI,EAAE;AAC5B,UAAI;AAAA,QACF,cAAc,CAAC;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,aAAa,MAAM;AAC9B,QAAM,QAAI,kBAAK;AACf,QAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,QAAI,6BAAc,SAAS,IAAI;AAE5D,QAAM,EAAE,cAAc,iBAAiB,IAAI,mBAAmB,SAAS;AAEvE,QAAM,uBAAmB,6BAAc,MAAM;AAC3C,qBAAiB;AACjB,qBAAiB;AAAA,EACnB,CAAC;AAED,SACE,2EACG,yBACC,4CAAC,uBAAQ,OAAO,EAAE,uDAAuD,MAAM,GAAG,WAAU,OAC1F,sDAAC,uCAAuB,SAAS,kBAAkB,GACrD,IAEA,4CAAC,uBAAQ,OAAO,EAAE,iDAAiD,IAAI,GAAG,WAAU,OAClF,sDAAC,mCAAmB,SAAS,kBAAkB,GACjD,GAEJ;AAEJ;",
4
+ "sourcesContent": ["import { FullscreenExitOutlined, FullscreenOutlined } from '@ant-design/icons';\nimport { useFullscreen, useMemoizedFn } from 'ahooks';\nimport { Tooltip } from 'antd';\n\nimport { create } from 'zustand';\n\nimport { useT } from '@creekjs/i18n/react';\n\nexport type FullScreenStore = {\n isFullScreen: boolean;\n changeFullScreen: () => void;\n};\n\nexport const useFullScreenStore = create<FullScreenStore>((set, get) => {\n return {\n isFullScreen: false,\n changeFullScreen: () => {\n const _isFullScreen = get().isFullScreen;\n set({\n isFullScreen: !_isFullScreen,\n });\n },\n };\n});\n\nexport const FullScreen = () => {\n const t = useT();\n const [, { toggleFullscreen }] = useFullscreen(document.body);\n\n const { isFullScreen, changeFullScreen } = useFullScreenStore.getState();\n\n const handleFullScreen = useMemoizedFn(() => {\n toggleFullscreen();\n changeFullScreen();\n });\n\n return (\n <>\n {isFullScreen ? (\n <Tooltip title={t('creek-layout.ActionRender.FullScreen.tuiChuQuanPing', '退出全屏')} placement=\"top\">\n <FullscreenExitOutlined onClick={handleFullScreen} />\n </Tooltip>\n ) : (\n <Tooltip title={t('creek-layout.ActionRender.FullScreen.quanPing', '全屏')} placement=\"top\">\n <FullscreenOutlined onClick={handleFullScreen} />\n </Tooltip>\n )}\n </>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2D;AAC3D,oBAA6C;AAC7C,kBAAwB;AAExB,qBAAuB;AAEvB,mBAAqB;AA+BjB;AAxBG,IAAM,yBAAqB,uBAAwB,CAAC,KAAK,QAAQ;AACtE,SAAO;AAAA,IACL,cAAc;AAAA,IACd,kBAAkB,MAAM;AACtB,YAAM,gBAAgB,IAAI,EAAE;AAC5B,UAAI;AAAA,QACF,cAAc,CAAC;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAEM,IAAM,aAAa,MAAM;AAC9B,QAAM,QAAI,mBAAK;AACf,QAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,QAAI,6BAAc,SAAS,IAAI;AAE5D,QAAM,EAAE,cAAc,iBAAiB,IAAI,mBAAmB,SAAS;AAEvE,QAAM,uBAAmB,6BAAc,MAAM;AAC3C,qBAAiB;AACjB,qBAAiB;AAAA,EACnB,CAAC;AAED,SACE,2EACG,yBACC,4CAAC,uBAAQ,OAAO,EAAE,uDAAuD,MAAM,GAAG,WAAU,OAC1F,sDAAC,uCAAuB,SAAS,kBAAkB,GACrD,IAEA,4CAAC,uBAAQ,OAAO,EAAE,iDAAiD,IAAI,GAAG,WAAU,OAClF,sDAAC,mCAAmB,SAAS,kBAAkB,GACjD,GAEJ;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/creek-layout/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,cAAc,EAAE,MAAM,4BAA4B,CAAC;AASvE,OAAO,EAAkB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ1E,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG;IACzC,aAAa,EAAE,cAAc,CAAC;IAC9B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE;QACZ,YAAY,EAAE,GAAG,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,IAAI,CAAC;KAC7B,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;IAC1C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;CAClC,CAAC;AAQF,eAAO,MAAM,WAAW,UAAW,WAAW,4CAqI7C,CAAC;AAEF,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/creek-layout/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAUvE,OAAO,EAAkB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ1E,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG;IACzC,aAAa,EAAE,cAAc,CAAC;IAC9B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE;QACZ,YAAY,EAAE,GAAG,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,IAAI,CAAC;KAC7B,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;IAC1C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;CAClC,CAAC;AAQF,eAAO,MAAM,WAAW,UAAW,WAAW,4CAyI7C,CAAC;AAEF,cAAc,aAAa,CAAC"}
@@ -37,8 +37,9 @@ var import_pro_components = require("@ant-design/pro-components");
37
37
  var import_ahooks = require("ahooks");
38
38
  var import_antd = require("antd");
39
39
  var import_lodash = __toESM(require("lodash"));
40
+ var import_react = require("react");
40
41
  var import_classnames = __toESM(require("classnames"));
41
- var import_react = require("@creekjs/i18n/react");
42
+ var import_react2 = require("@creekjs/i18n/react");
42
43
  var import_creek_keep_alive = require("../creek-keep-alive");
43
44
  var import_creek_locale_button = require("../creek-locale-button");
44
45
  var import_scrollbar = require("../creek-style/scrollbar");
@@ -49,7 +50,7 @@ var import_useLayoutSettingsStore = require("./useLayoutSettingsStore");
49
50
  __reExport(creek_layout_exports, require("./Exception"), module.exports);
50
51
  var import_jsx_runtime = require("react/jsx-runtime");
51
52
  var MenuName = ({ name, path }) => {
52
- const t = (0, import_react.useT)();
53
+ const t = (0, import_react2.useT)();
53
54
  const key = !path || path === "/" ? "menu.home" : `menu${path.replace(/\//g, ".")}`;
54
55
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: t(key, name) });
55
56
  };
@@ -77,9 +78,10 @@ var CreekLayout = (props) => {
77
78
  const colorPrimary = settingsStore.colorPrimary || token.colorPrimary;
78
79
  const actualKeepAlive = settingsStore.keepAlive ?? keepAlive;
79
80
  const _userConfig = { ...userConfig, ...runtimeConfig };
81
+ const intlContext = (0, import_react.useContext)(import_react2.IntlContext);
82
+ const hasI18n = !!intlContext;
80
83
  const menuDataRender = (0, import_ahooks.useMemoizedFn)((menuData) => {
81
- var _a, _b;
82
- const isLocaleEnabled = ((_a = more.menu) == null ? void 0 : _a.locale) !== false && ((_b = _userConfig.menu) == null ? void 0 : _b.locale) !== false;
84
+ const isLocaleEnabled = hasI18n;
83
85
  const mapMenu = (items) => {
84
86
  return items.map((item) => {
85
87
  return {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/creek-layout/index.tsx"],
4
- "sourcesContent": ["import { ProLayout, ProLayoutProps } from '@ant-design/pro-components';\nimport { useMemoizedFn } from 'ahooks';\nimport { theme } from 'antd';\nimport _ from 'lodash';\n\nimport classnames from 'classnames';\n\nimport { useT } from '@creekjs/i18n/react';\n\nimport { CreekKeepAlive, CreekKeepAliveProps } from '../creek-keep-alive';\nimport { CreekLocaleButton } from '../creek-locale-button';\nimport { GlobalScrollbarStyle } from '../creek-style/scrollbar';\nimport { FullScreen, LayoutSettings } from './ActionRender';\nimport { CollapsedButton, useCollapsedStore } from './CollapseButton';\nimport { Exception } from './Exception';\nimport { useLayoutSettingsStore } from './useLayoutSettingsStore';\n\nexport type LayoutProps = ProLayoutProps & {\n runtimeConfig: ProLayoutProps;\n userConfig?: ProLayoutProps;\n navigate?: (path?: string | number) => void;\n showFullScreen?: boolean;\n showLocaleButton?: boolean;\n showSettingsButton?: boolean;\n initialInfo?: {\n initialState: any;\n loading: boolean;\n setInitialState: () => void;\n };\n keepAlive?: boolean | CreekKeepAliveProps;\n extraActions?: React.ReactNode[];\n};\n\nconst MenuName = ({ name, path }: { name: string; path?: string }) => {\n const t = useT();\n const key = !path || path === '/' ? 'menu.home' : `menu${path.replace(/\\//g, '.')}`;\n return <>{t(key, name)}</>;\n};\n\nexport const CreekLayout = (props: LayoutProps) => {\n const {\n route,\n userConfig,\n runtimeConfig,\n children,\n location,\n navigate,\n showFullScreen = false,\n showLocaleButton = false,\n showSettingsButton = false,\n keepAlive = false,\n extraActions = [],\n ...more\n } = props;\n\n const { useToken } = theme;\n const { token } = useToken();\n\n const { collapsed } = useCollapsedStore();\n const settingsStore = useLayoutSettingsStore();\n\n const actualShowFullScreen = settingsStore.showFullScreen ?? showFullScreen;\n const actualShowLocaleButton = settingsStore.showLocaleButton ?? showLocaleButton;\n const colorPrimary = settingsStore.colorPrimary || token.colorPrimary;\n const actualKeepAlive = settingsStore.keepAlive ?? keepAlive;\n\n const _userConfig = { ...userConfig, ...runtimeConfig };\n\n const menuDataRender = useMemoizedFn((menuData: any[]) => {\n const isLocaleEnabled = more.menu?.locale !== false && _userConfig.menu?.locale !== false;\n\n const mapMenu = (items: any[]): any[] => {\n return items.map((item) => {\n return {\n ...item,\n name: isLocaleEnabled ? <MenuName name={item.name} path={item.path} /> : item.name,\n children: item.children ? mapMenu(item.children) : undefined,\n };\n });\n };\n return mapMenu(menuData);\n });\n\n const menuItemRender: ProLayoutProps['menuItemRender'] = useMemoizedFn((itemProps, defaultDom) => {\n return (\n <span\n onClick={() => {\n if (navigate) {\n navigate(itemProps.path);\n }\n }}\n >\n {defaultDom}\n </span>\n );\n });\n\n const getTabTitle = useMemoizedFn((pathname: string) => {\n const findTitle = (routes: any[]): string | React.ReactNode | undefined => {\n for (const r of routes) {\n if (r.path === pathname) return r.name || r.title;\n if (r.children) {\n const found = findTitle(r.children);\n if (found) return found;\n }\n }\n return undefined;\n };\n return findTitle(route?.routes || []) || pathname;\n });\n\n const actions: React.ReactNode[] = [...extraActions];\n\n if (actualShowFullScreen) {\n actions.push(<FullScreen key=\"full-screen\" />);\n }\n\n if (actualShowLocaleButton) {\n actions.push(<CreekLocaleButton key=\"locale-button\" />);\n }\n\n if (showSettingsButton) {\n actions.push(<LayoutSettings key=\"settings\" defaultShowFullScreen={showFullScreen} defaultShowLocaleButton={showLocaleButton} defaultKeepAlive={_.isBoolean(keepAlive) ? keepAlive : true} />);\n }\n\n const keepAliveProps = _.isBoolean(keepAlive) ? {} : keepAlive;\n\n const layoutContent = (\n <ProLayout\n className={classnames('creek-layout-container', _userConfig?.className)}\n route={route}\n title={_userConfig?.title}\n siderWidth={200}\n location={location}\n menuDataRender={menuDataRender}\n menuItemRender={menuItemRender}\n actionsRender={() => actions}\n token={{\n header: {\n colorBgHeader: '#fff',\n colorHeaderTitle: 'rgba(0, 0, 0, 0.80);',\n colorTextMenuSelected: colorPrimary,\n heightLayoutHeader: 48,\n },\n sider: {\n colorMenuBackground: '#f7f8fa',\n colorBgMenuItemSelected: 'transparent',\n colorTextMenuActive: colorPrimary,\n colorTextMenuSelected: colorPrimary,\n colorTextMenuItemHover: colorPrimary,\n colorTextMenu: '#333',\n },\n pageContainer: {\n paddingBlockPageContainerContent: 0,\n paddingInlinePageContainerContent: 0,\n colorBgPageContainer: 'linear-gradient(180deg, #F7F9FF 0%, #FFF 45.59%);',\n },\n }}\n fixSiderbar\n fixedHeader\n collapsed={collapsed}\n collapsedButtonRender={(collapsed) => {\n return <CollapsedButton collapsed={collapsed} />;\n }}\n {...more}\n >\n <GlobalScrollbarStyle />\n <Exception>{actualKeepAlive ? <CreekKeepAlive getTabTitle={getTabTitle} {...keepAliveProps} /> : children}</Exception>\n </ProLayout>\n );\n\n return layoutContent;\n};\n\nexport * from './Exception';\n"],
5
- "mappings": "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",
6
- "names": ["_", "classnames", "collapsed"]
4
+ "sourcesContent": ["import { ProLayout, ProLayoutProps } from '@ant-design/pro-components';\nimport { useMemoizedFn } from 'ahooks';\nimport { theme } from 'antd';\nimport _ from 'lodash';\nimport { useContext } from 'react';\n\nimport classnames from 'classnames';\n\nimport { IntlContext, useT } from '@creekjs/i18n/react';\n\nimport { CreekKeepAlive, CreekKeepAliveProps } from '../creek-keep-alive';\nimport { CreekLocaleButton } from '../creek-locale-button';\nimport { GlobalScrollbarStyle } from '../creek-style/scrollbar';\nimport { FullScreen, LayoutSettings } from './ActionRender';\nimport { CollapsedButton, useCollapsedStore } from './CollapseButton';\nimport { Exception } from './Exception';\nimport { useLayoutSettingsStore } from './useLayoutSettingsStore';\n\nexport type LayoutProps = ProLayoutProps & {\n runtimeConfig: ProLayoutProps;\n userConfig?: ProLayoutProps;\n navigate?: (path?: string | number) => void;\n showFullScreen?: boolean;\n showLocaleButton?: boolean;\n showSettingsButton?: boolean;\n initialInfo?: {\n initialState: any;\n loading: boolean;\n setInitialState: () => void;\n };\n keepAlive?: boolean | CreekKeepAliveProps;\n extraActions?: React.ReactNode[];\n};\n\nconst MenuName = ({ name, path }: { name: string; path?: string }) => {\n const t = useT();\n const key = !path || path === '/' ? 'menu.home' : `menu${path.replace(/\\//g, '.')}`;\n return <>{t(key, name)}</>;\n};\n\nexport const CreekLayout = (props: LayoutProps) => {\n const {\n route,\n userConfig,\n runtimeConfig,\n children,\n location,\n navigate,\n showFullScreen = false,\n showLocaleButton = false,\n showSettingsButton = false,\n keepAlive = false,\n extraActions = [],\n ...more\n } = props;\n\n const { useToken } = theme;\n const { token } = useToken();\n\n const { collapsed } = useCollapsedStore();\n const settingsStore = useLayoutSettingsStore();\n\n const actualShowFullScreen = settingsStore.showFullScreen ?? showFullScreen;\n const actualShowLocaleButton = settingsStore.showLocaleButton ?? showLocaleButton;\n const colorPrimary = settingsStore.colorPrimary || token.colorPrimary;\n const actualKeepAlive = settingsStore.keepAlive ?? keepAlive;\n\n const _userConfig = { ...userConfig, ...runtimeConfig };\n\n const intlContext = useContext(IntlContext);\n const hasI18n = !!intlContext;\n\n const menuDataRender = useMemoizedFn((menuData: any[]) => {\n // 根据当前是否开启了国际化(上下文是否存在)以及用户配置来判断是否包裹菜单翻译\n const isLocaleEnabled = hasI18n;\n\n const mapMenu = (items: any[]): any[] => {\n return items.map((item) => {\n return {\n ...item,\n name: isLocaleEnabled ? <MenuName name={item.name} path={item.path} /> : item.name,\n children: item.children ? mapMenu(item.children) : undefined,\n };\n });\n };\n return mapMenu(menuData);\n });\n\n const menuItemRender: ProLayoutProps['menuItemRender'] = useMemoizedFn((itemProps, defaultDom) => {\n return (\n <span\n onClick={() => {\n if (navigate) {\n navigate(itemProps.path);\n }\n }}\n >\n {defaultDom}\n </span>\n );\n });\n\n const getTabTitle = useMemoizedFn((pathname: string) => {\n const findTitle = (routes: any[]): string | React.ReactNode | undefined => {\n for (const r of routes) {\n if (r.path === pathname) return r.name || r.title;\n if (r.children) {\n const found = findTitle(r.children);\n if (found) return found;\n }\n }\n return undefined;\n };\n return findTitle(route?.routes || []) || pathname;\n });\n\n const actions: React.ReactNode[] = [...extraActions];\n\n if (actualShowFullScreen) {\n actions.push(<FullScreen key=\"full-screen\" />);\n }\n\n if (actualShowLocaleButton) {\n actions.push(<CreekLocaleButton key=\"locale-button\" />);\n }\n\n if (showSettingsButton) {\n actions.push(<LayoutSettings key=\"settings\" defaultShowFullScreen={showFullScreen} defaultShowLocaleButton={showLocaleButton} defaultKeepAlive={_.isBoolean(keepAlive) ? keepAlive : true} />);\n }\n\n const keepAliveProps = _.isBoolean(keepAlive) ? {} : keepAlive;\n\n const layoutContent = (\n <ProLayout\n className={classnames('creek-layout-container', _userConfig?.className)}\n route={route}\n title={_userConfig?.title}\n siderWidth={200}\n location={location}\n menuDataRender={menuDataRender}\n menuItemRender={menuItemRender}\n actionsRender={() => actions}\n token={{\n header: {\n colorBgHeader: '#fff',\n colorHeaderTitle: 'rgba(0, 0, 0, 0.80);',\n colorTextMenuSelected: colorPrimary,\n heightLayoutHeader: 48,\n },\n sider: {\n colorMenuBackground: '#f7f8fa',\n colorBgMenuItemSelected: 'transparent',\n colorTextMenuActive: colorPrimary,\n colorTextMenuSelected: colorPrimary,\n colorTextMenuItemHover: colorPrimary,\n colorTextMenu: '#333',\n },\n pageContainer: {\n paddingBlockPageContainerContent: 0,\n paddingInlinePageContainerContent: 0,\n colorBgPageContainer: 'linear-gradient(180deg, #F7F9FF 0%, #FFF 45.59%);',\n },\n }}\n fixSiderbar\n fixedHeader\n collapsed={collapsed}\n collapsedButtonRender={(collapsed) => {\n return <CollapsedButton collapsed={collapsed} />;\n }}\n {...more}\n >\n <GlobalScrollbarStyle />\n <Exception>{actualKeepAlive ? <CreekKeepAlive getTabTitle={getTabTitle} {...keepAliveProps} /> : children}</Exception>\n </ProLayout>\n );\n\n return layoutContent;\n};\n\nexport * from './Exception';\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "_", "classnames", "collapsed"]
7
7
  }
@@ -33,14 +33,14 @@ var CreekLocaleButton = () => {
33
33
  const { locale, changeLocale } = (0, import_creek_config_provider.useAppLocale)();
34
34
  const items = [
35
35
  {
36
- key: "zh-CN",
36
+ key: "zh_CN",
37
37
  label: t("creek-locale-button.index.jianTiZhongWen", "简体中文"),
38
- disabled: locale === "zh-CN"
38
+ disabled: locale === "zh_CN"
39
39
  },
40
40
  {
41
- key: "en-US",
41
+ key: "en_US",
42
42
  label: "English",
43
- disabled: locale === "en-US"
43
+ disabled: locale === "en_US"
44
44
  }
45
45
  ];
46
46
  const currentLabel = ((_a = items.find((item) => item.key === locale)) == null ? void 0 : _a.label) || "Language";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/creek-locale-button/index.tsx"],
4
- "sourcesContent": ["import { GlobalOutlined } from '@ant-design/icons';\nimport { Dropdown, Space, Typography } from 'antd';\n\nimport { useT } from '@creekjs/i18n/react';\n\nimport { useAppLocale } from '../creek-config-provider';\n\nexport const CreekLocaleButton = () => {\n const t = useT();\n\n const { locale, changeLocale } = useAppLocale();\n\n const items = [\n {\n key: 'zh-CN',\n label: t('creek-locale-button.index.jianTiZhongWen', '简体中文'),\n disabled: locale === 'zh-CN',\n },\n {\n key: 'en-US',\n label: 'English',\n disabled: locale === 'en-US',\n },\n ];\n\n const currentLabel = items.find((item) => item.key === locale)?.label || 'Language';\n\n return (\n <Dropdown\n menu={{\n items,\n onClick: (e) => changeLocale(e.key),\n }}\n placement=\"bottomRight\"\n >\n <Space size=\"small\" align=\"center\">\n <GlobalOutlined />\n <Typography.Text>{currentLabel}</Typography.Text>\n </Space>\n </Dropdown>\n );\n};\n"],
4
+ "sourcesContent": ["import { GlobalOutlined } from '@ant-design/icons';\nimport { Dropdown, Space, Typography } from 'antd';\n\nimport { useT } from '@creekjs/i18n/react';\n\nimport { useAppLocale } from '../creek-config-provider';\n\nexport const CreekLocaleButton = () => {\n const t = useT();\n\n const { locale, changeLocale } = useAppLocale();\n\n const items = [\n {\n key: 'zh_CN',\n label: t('creek-locale-button.index.jianTiZhongWen', '简体中文'),\n disabled: locale === 'zh_CN',\n },\n {\n key: 'en_US',\n label: 'English',\n disabled: locale === 'en_US',\n },\n ];\n\n const currentLabel = items.find((item) => item.key === locale)?.label || 'Language';\n\n return (\n <Dropdown\n menu={{\n items,\n onClick: (e) => changeLocale(e.key),\n }}\n placement=\"bottomRight\"\n >\n <Space size=\"small\" align=\"center\">\n <GlobalOutlined />\n <Typography.Text>{currentLabel}</Typography.Text>\n </Space>\n </Dropdown>\n );\n};\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+B;AAC/B,kBAA4C;AAE5C,mBAAqB;AAErB,mCAA6B;AA8BvB;AA5BC,IAAM,oBAAoB,MAAM;AAPvC;AAQE,QAAM,QAAI,mBAAK;AAEf,QAAM,EAAE,QAAQ,aAAa,QAAI,2CAAa;AAE9C,QAAM,QAAQ;AAAA,IACZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO,EAAE,4CAA4C,MAAM;AAAA,MAC3D,UAAU,WAAW;AAAA,IACvB;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU,WAAW;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,iBAAe,WAAM,KAAK,CAAC,SAAS,KAAK,QAAQ,MAAM,MAAxC,mBAA2C,UAAS;AAEzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,QACJ;AAAA,QACA,SAAS,CAAC,MAAM,aAAa,EAAE,GAAG;AAAA,MACpC;AAAA,MACA,WAAU;AAAA,MAEV,uDAAC,qBAAM,MAAK,SAAQ,OAAM,UACxB;AAAA,oDAAC,+BAAe;AAAA,QAChB,4CAAC,uBAAW,MAAX,EAAiB,wBAAa;AAAA,SACjC;AAAA;AAAA,EACF;AAEJ;",
6
6
  "names": []
7
7
  }