zcw-shared 2.10.0 → 2.12.0

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 (99) hide show
  1. package/assets/materialFileIconMaps.json +3256 -0
  2. package/dist/constants/apiErrorCodes.d.ts +2 -2
  3. package/dist/constants/apiErrorCodes.js +11 -12
  4. package/dist/constants/apiErrorCodes.js.map +1 -1
  5. package/dist/functions/ai/aiLlmModelCapabilities.d.ts +13 -0
  6. package/dist/functions/ai/aiLlmModelCapabilities.js +80 -0
  7. package/dist/functions/ai/aiLlmModelCapabilities.js.map +1 -0
  8. package/dist/functions/browser/shortcutModKeyHint.d.ts +7 -0
  9. package/dist/functions/browser/shortcutModKeyHint.js +21 -0
  10. package/dist/functions/browser/shortcutModKeyHint.js.map +1 -0
  11. package/dist/functions/chat/chatShellTabConfig.d.ts +36 -0
  12. package/dist/functions/chat/chatShellTabConfig.js +222 -0
  13. package/dist/functions/chat/chatShellTabConfig.js.map +1 -0
  14. package/dist/functions/chat/chatShellTabEditor.d.ts +7 -0
  15. package/dist/functions/chat/chatShellTabEditor.js +43 -0
  16. package/dist/functions/chat/chatShellTabEditor.js.map +1 -0
  17. package/dist/functions/code/getLanguageFromExtension.d.ts +5 -0
  18. package/dist/functions/code/getLanguageFromExtension.js +90 -0
  19. package/dist/functions/code/getLanguageFromExtension.js.map +1 -0
  20. package/dist/functions/code/index.d.ts +1 -0
  21. package/dist/functions/code/index.js +2 -0
  22. package/dist/functions/code/index.js.map +1 -0
  23. package/dist/functions/dom/copyHtmlAndPlainToClipboard.d.ts +1 -0
  24. package/dist/functions/dom/copyHtmlAndPlainToClipboard.js +68 -0
  25. package/dist/functions/dom/copyHtmlAndPlainToClipboard.js.map +1 -0
  26. package/dist/functions/dom/copyTextToClipboard.d.ts +1 -0
  27. package/dist/functions/dom/copyTextToClipboard.js +36 -0
  28. package/dist/functions/dom/copyTextToClipboard.js.map +1 -0
  29. package/dist/functions/file/extractVideoCover.d.ts +6 -0
  30. package/dist/functions/file/extractVideoCover.js +57 -0
  31. package/dist/functions/file/extractVideoCover.js.map +1 -0
  32. package/dist/functions/file/index.d.ts +4 -0
  33. package/dist/functions/file/index.js +5 -0
  34. package/dist/functions/file/index.js.map +1 -0
  35. package/dist/functions/file/inferMediaType.d.ts +8 -0
  36. package/dist/functions/file/inferMediaType.js +24 -0
  37. package/dist/functions/file/inferMediaType.js.map +1 -0
  38. package/dist/functions/file/materialFileIcon.d.ts +10 -0
  39. package/dist/functions/file/materialFileIcon.js +36 -0
  40. package/dist/functions/file/materialFileIcon.js.map +1 -0
  41. package/dist/functions/im/forwardBundlePayload.d.ts +23 -0
  42. package/dist/functions/im/forwardBundlePayload.js +59 -0
  43. package/dist/functions/im/forwardBundlePayload.js.map +1 -0
  44. package/dist/functions/im/getActiveMentionQuery.d.ts +4 -0
  45. package/dist/functions/im/getActiveMentionQuery.js +23 -0
  46. package/dist/functions/im/getActiveMentionQuery.js.map +1 -0
  47. package/dist/functions/im/imInlineContentTokens.d.ts +49 -0
  48. package/dist/functions/im/imInlineContentTokens.js +185 -0
  49. package/dist/functions/im/imInlineContentTokens.js.map +1 -0
  50. package/dist/functions/im/imRichClipboardPlain.d.ts +8 -0
  51. package/dist/functions/im/imRichClipboardPlain.js +162 -0
  52. package/dist/functions/im/imRichClipboardPlain.js.map +1 -0
  53. package/dist/functions/im/imRichContentHtml.d.ts +53 -0
  54. package/dist/functions/im/imRichContentHtml.js +476 -0
  55. package/dist/functions/im/imRichContentHtml.js.map +1 -0
  56. package/dist/functions/im/index.d.ts +4 -0
  57. package/dist/functions/im/index.js +5 -0
  58. package/dist/functions/im/index.js.map +1 -0
  59. package/dist/functions/im/parseImMentionSegments.d.ts +8 -4
  60. package/dist/functions/im/parseImMentionSegments.js +39 -3
  61. package/dist/functions/im/parseImMentionSegments.js.map +1 -1
  62. package/dist/functions/path/index.d.ts +4 -0
  63. package/dist/functions/path/index.js +5 -0
  64. package/dist/functions/path/index.js.map +1 -0
  65. package/dist/functions/path/pathBasename.d.ts +1 -0
  66. package/dist/functions/path/pathBasename.js +11 -0
  67. package/dist/functions/path/pathBasename.js.map +1 -0
  68. package/dist/functions/path/pathDirname.d.ts +1 -0
  69. package/dist/functions/path/pathDirname.js +19 -0
  70. package/dist/functions/path/pathDirname.js.map +1 -0
  71. package/dist/functions/path/pathExtname.d.ts +4 -0
  72. package/dist/functions/path/pathExtname.js +15 -0
  73. package/dist/functions/path/pathExtname.js.map +1 -0
  74. package/dist/functions/path/pathLastSegment.d.ts +1 -0
  75. package/dist/functions/path/pathLastSegment.js +11 -0
  76. package/dist/functions/path/pathLastSegment.js.map +1 -0
  77. package/dist/functions/qiankun/createQiankunVueApp.js +94 -18
  78. package/dist/functions/qiankun/createQiankunVueApp.js.map +1 -1
  79. package/dist/functions/tencent-cloud/deploy.tcb.d.ts +0 -1
  80. package/dist/functions/tencent-cloud/deploy.tcb.js +0 -1
  81. package/dist/functions/tencent-cloud/deploy.tcb.js.map +1 -1
  82. package/dist/functions/tree/index.d.ts +1 -0
  83. package/dist/functions/tree/index.js +2 -0
  84. package/dist/functions/tree/index.js.map +1 -0
  85. package/dist/functions/tree/pathsToTreeNodes.d.ts +26 -0
  86. package/dist/functions/tree/pathsToTreeNodes.js +102 -0
  87. package/dist/functions/tree/pathsToTreeNodes.js.map +1 -0
  88. package/dist/schemas/video.schema.d.ts +45 -45
  89. package/dist/schemas/video.schema.js +3 -3
  90. package/dist/schemas/video.schema.js.map +1 -1
  91. package/package.json +24 -2
  92. package/types/ai-llm-model-capabilities.d.ts +25 -0
  93. package/types/assets.d.ts +12 -0
  94. package/types/chat-shell-tab-config.d.ts +64 -0
  95. package/types/im-api.d.ts +11 -1
  96. package/types/im-chat.d.ts +47 -2
  97. package/types/im-forward.d.ts +37 -0
  98. package/types/im-reply.d.ts +6 -0
  99. package/types/video.d.ts +8 -4
@@ -13,5 +13,5 @@ export declare const API_HTTP_STATUS: {
13
13
  readonly INTERNAL_SERVER_ERROR: 500;
14
14
  readonly SERVICE_UNAVAILABLE: 503;
15
15
  };
16
- export declare const API_ERROR_MESSAGES: Record<number, string>;
17
- export declare function getApiErrorMessage(statusCode: number, body?: ApiErrorResponse | null): string;
16
+ export declare const HTTP_ERROR_PAGE_DEFAULT_MESSAGES: Partial<Record<(typeof API_HTTP_STATUS)[keyof typeof API_HTTP_STATUS], string>>;
17
+ export declare function getApiErrorMessage(_statusCode: number, body?: ApiErrorResponse | null): string;
@@ -7,20 +7,19 @@ export const API_HTTP_STATUS = {
7
7
  INTERNAL_SERVER_ERROR: 500,
8
8
  SERVICE_UNAVAILABLE: 503,
9
9
  };
10
- export const API_ERROR_MESSAGES = {
11
- [API_HTTP_STATUS.BAD_REQUEST]: '请求参数错误',
12
- [API_HTTP_STATUS.UNAUTHORIZED]: '未授权,请重新登录',
10
+ export const HTTP_ERROR_PAGE_DEFAULT_MESSAGES = {
13
11
  [API_HTTP_STATUS.FORBIDDEN]: '没有权限访问此资源',
14
- [API_HTTP_STATUS.NOT_FOUND]: '请求的资源不存在',
15
- [API_HTTP_STATUS.INTERNAL_SERVER_ERROR]: '服务器错误,请稍后重试',
16
- [API_HTTP_STATUS.SERVICE_UNAVAILABLE]: '服务暂不可用,请稍后重试',
17
12
  };
18
- const DEFAULT_MESSAGE = '请求失败';
19
- export function getApiErrorMessage(statusCode, body) {
20
- if (body?.message != null) {
21
- const msg = body.message;
22
- return Array.isArray(msg) ? msg[0] ?? DEFAULT_MESSAGE : msg;
13
+ export function getApiErrorMessage(_statusCode, body) {
14
+ if (body?.message == null)
15
+ return '';
16
+ const msg = body.message;
17
+ if (Array.isArray(msg)) {
18
+ return msg
19
+ .map((s) => String(s).trim())
20
+ .filter(Boolean)
21
+ .join(';');
23
22
  }
24
- return API_ERROR_MESSAGES[statusCode] ?? DEFAULT_MESSAGE;
23
+ return String(msg).trim();
25
24
  }
26
25
  //# sourceMappingURL=apiErrorCodes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiErrorCodes.js","sourceRoot":"","sources":["../../src/constants/apiErrorCodes.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,GAAG;IACd,qBAAqB,EAAE,GAAG;IAC1B,mBAAmB,EAAE,GAAG;CAChB,CAAA;AAGV,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,QAAQ;IACvC,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,WAAW;IAC3C,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,WAAW;IACxC,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,UAAU;IACvC,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,aAAa;IACtD,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,cAAc;CACtD,CAAA;AAED,MAAM,eAAe,GAAG,MAAM,CAAA;AAK9B,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,IAA8B;IAE9B,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAA;QACxB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,CAAA;IAC7D,CAAC;IACD,OAAO,kBAAkB,CAAC,UAAU,CAAC,IAAI,eAAe,CAAA;AAC1D,CAAC"}
1
+ {"version":3,"file":"apiErrorCodes.js","sourceRoot":"","sources":["../../src/constants/apiErrorCodes.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,GAAG;IACd,qBAAqB,EAAE,GAAG;IAC1B,mBAAmB,EAAE,GAAG;CAChB,CAAA;AAMV,MAAM,CAAC,MAAM,gCAAgC,GAEzC;IACF,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,WAAW;CACzC,CAAA;AAKD,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,IAA8B;IAE9B,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI;QAAE,OAAO,EAAE,CAAA;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAA;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG;aACP,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { AiLlmModelCapabilities, AiLlmModelCapabilitiesFormFlags } from '../../../types/ai-llm-model-capabilities';
2
+ export declare const DEFAULT_AI_LLM_MODEL_CAPABILITIES: AiLlmModelCapabilities;
3
+ export declare function normalizeAiLlmModelCapabilities(raw: unknown): AiLlmModelCapabilities;
4
+ export declare function capabilitiesFromDbRow(row: Record<string, unknown>): AiLlmModelCapabilities;
5
+ export declare function capabilitiesFlagsFromCapabilitiesRaw(capabilities: unknown): AiLlmModelCapabilitiesFormFlags;
6
+ export declare function capabilitiesFlagsFromModelRow(row: {
7
+ capabilities?: unknown;
8
+ }): AiLlmModelCapabilitiesFormFlags;
9
+ export declare function buildCapabilitiesPayload(flags: AiLlmModelCapabilitiesFormFlags): AiLlmModelCapabilities;
10
+ export declare function modelCallModeLabelFromCapabilities(capabilities: unknown): string;
11
+ export declare function modelCallModeLabelFromModelRow(row: {
12
+ capabilities?: unknown;
13
+ }): string;
@@ -0,0 +1,80 @@
1
+ export const DEFAULT_AI_LLM_MODEL_CAPABILITIES = {
2
+ attachments: false,
3
+ imageInput: false,
4
+ streaming: true,
5
+ parameters: {
6
+ temperature: { enabled: true, min: 0, max: 2, default: 0.7 },
7
+ maxTokens: { enabled: false, min: 256, max: 8192, default: 4096 },
8
+ },
9
+ };
10
+ export function normalizeAiLlmModelCapabilities(raw) {
11
+ const base = {
12
+ ...DEFAULT_AI_LLM_MODEL_CAPABILITIES,
13
+ parameters: { ...DEFAULT_AI_LLM_MODEL_CAPABILITIES.parameters },
14
+ };
15
+ if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {
16
+ return base;
17
+ }
18
+ const o = raw;
19
+ if (typeof o.attachments === 'boolean')
20
+ base.attachments = o.attachments;
21
+ if (typeof o.imageInput === 'boolean')
22
+ base.imageInput = o.imageInput;
23
+ if (typeof o.streaming === 'boolean')
24
+ base.streaming = o.streaming;
25
+ const params = o.parameters;
26
+ if (params != null && typeof params === 'object' && !Array.isArray(params)) {
27
+ const p = params;
28
+ for (const key of ['temperature', 'maxTokens']) {
29
+ const spec = p[key];
30
+ if (spec != null && typeof spec === 'object' && !Array.isArray(spec)) {
31
+ const s = spec;
32
+ base.parameters[key] = {
33
+ enabled: s.enabled === true,
34
+ min: typeof s.min === 'number' ? s.min : undefined,
35
+ max: typeof s.max === 'number' ? s.max : undefined,
36
+ default: typeof s.default === 'number' ? s.default : undefined,
37
+ };
38
+ }
39
+ }
40
+ }
41
+ return base;
42
+ }
43
+ export function capabilitiesFromDbRow(row) {
44
+ return normalizeAiLlmModelCapabilities(row.capabilities);
45
+ }
46
+ export function capabilitiesFlagsFromCapabilitiesRaw(capabilities) {
47
+ const cap = normalizeAiLlmModelCapabilities(capabilities);
48
+ return {
49
+ attachments: cap.attachments,
50
+ imageInput: cap.imageInput,
51
+ temperature: cap.parameters.temperature?.enabled === true,
52
+ streaming: cap.streaming,
53
+ };
54
+ }
55
+ export function capabilitiesFlagsFromModelRow(row) {
56
+ return capabilitiesFlagsFromCapabilitiesRaw(row.capabilities);
57
+ }
58
+ export function buildCapabilitiesPayload(flags) {
59
+ return {
60
+ attachments: flags.attachments,
61
+ imageInput: flags.imageInput,
62
+ streaming: flags.streaming,
63
+ parameters: {
64
+ temperature: {
65
+ enabled: flags.temperature,
66
+ min: 0,
67
+ max: 2,
68
+ default: 0.7,
69
+ },
70
+ },
71
+ };
72
+ }
73
+ export function modelCallModeLabelFromCapabilities(capabilities) {
74
+ const cap = normalizeAiLlmModelCapabilities(capabilities);
75
+ return cap.streaming ? 'SSE 流式' : 'HTTP 同步';
76
+ }
77
+ export function modelCallModeLabelFromModelRow(row) {
78
+ return modelCallModeLabelFromCapabilities(row.capabilities);
79
+ }
80
+ //# sourceMappingURL=aiLlmModelCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiLlmModelCapabilities.js","sourceRoot":"","sources":["../../../src/functions/ai/aiLlmModelCapabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface ShortcutModKeyHint {
2
+ modKeyLabel: string;
3
+ ariaKeyshortcuts: string;
4
+ title: string;
5
+ }
6
+ export declare function prefersMetaModifierInShortcutUi(userAgent: string): boolean;
7
+ export declare function getShortcutModKeyHint(userAgent: string | undefined): ShortcutModKeyHint;
@@ -0,0 +1,21 @@
1
+ import { detectOS } from './detectOS';
2
+ const META_HINT = {
3
+ modKeyLabel: '⌘',
4
+ ariaKeyshortcuts: 'Meta+K',
5
+ title: '快捷键 Command K',
6
+ };
7
+ const CTRL_HINT = {
8
+ modKeyLabel: 'Ctrl',
9
+ ariaKeyshortcuts: 'Control+K',
10
+ title: '快捷键 Control K',
11
+ };
12
+ export function prefersMetaModifierInShortcutUi(userAgent) {
13
+ const os = detectOS({ userAgent });
14
+ return os === 'macOS' || os === 'iOS';
15
+ }
16
+ export function getShortcutModKeyHint(userAgent) {
17
+ if (!userAgent)
18
+ return CTRL_HINT;
19
+ return prefersMetaModifierInShortcutUi(userAgent) ? META_HINT : CTRL_HINT;
20
+ }
21
+ //# sourceMappingURL=shortcutModKeyHint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcutModKeyHint.js","sourceRoot":"","sources":["../../../src/functions/browser/shortcutModKeyHint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAQrC,MAAM,SAAS,GAAuB;IACpC,WAAW,EAAE,GAAG;IAChB,gBAAgB,EAAE,QAAQ;IAC1B,KAAK,EAAE,eAAe;CACvB,CAAA;AAED,MAAM,SAAS,GAAuB;IACpC,WAAW,EAAE,MAAM;IACnB,gBAAgB,EAAE,WAAW;IAC7B,KAAK,EAAE,eAAe;CACvB,CAAA;AAGD,MAAM,UAAU,+BAA+B,CAAC,SAAiB;IAC/D,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAClC,OAAO,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,KAAK,CAAA;AACvC,CAAC;AAGD,MAAM,UAAU,qBAAqB,CAAC,SAA6B;IACjE,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAChC,OAAO,+BAA+B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3E,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { ChatShellDisplaysConfig, ChatShellTabConfig, ChatShellTabbarItem } from '../../../types/chat-shell-tab-config';
2
+ export type { ChatShellDisplaysConfig, ChatShellTabConfig, ChatShellTabbarItem };
3
+ export declare const DEFAULT_CHAT_SHELL_TABS: ChatShellTabConfig[];
4
+ export declare class ChatShellTabsConfigError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare function isChatShellTabShellDark(tabs: ChatShellTabConfig[], activeKey: string): boolean;
8
+ export declare function isChatShellTabHideTabbar(tabs: ChatShellTabConfig[], activeKey: string): boolean;
9
+ export declare function parseChatShellTabsFromDisplays(displays: unknown): ChatShellTabConfig[];
10
+ export declare function filterChatShellTabsForRuntime(tabs: ChatShellTabConfig[], opts: {
11
+ isElectron: boolean;
12
+ }): ChatShellTabConfig[];
13
+ export declare function findChatShellDesktopFooterTab(tabs: ChatShellTabConfig[]): ChatShellTabConfig | undefined;
14
+ export declare function isChatShellMineTab(tab: {
15
+ key?: string;
16
+ useMineAvatar?: boolean;
17
+ }): boolean;
18
+ export type ChatShellNavTabbarItem = ChatShellTabbarItem & {
19
+ tooltip?: string;
20
+ };
21
+ export declare function buildChatShellNavTabbarItems(tabs: ChatShellTabConfig[]): ChatShellNavTabbarItem[];
22
+ export declare function buildChatShellMobileTabbarItems(tabs: ChatShellTabConfig[]): ChatShellTabbarItem[];
23
+ export declare function resolveChatShellTabRouteTarget(tab: ChatShellTabConfig): {
24
+ name: string;
25
+ } | {
26
+ path: string;
27
+ } | null;
28
+ export declare function toChatShellTabbarItem(tab: ChatShellTabConfig): ChatShellTabbarItem;
29
+ export declare function tabMatchesRoute(tab: ChatShellTabConfig, route: {
30
+ name?: string | symbol | null;
31
+ path?: string;
32
+ }): boolean;
33
+ export declare function resolveActiveTabKey(tabs: ChatShellTabConfig[], route: {
34
+ name?: string | symbol | null;
35
+ path?: string;
36
+ }): string;
@@ -0,0 +1,222 @@
1
+ export const DEFAULT_CHAT_SHELL_TABS = [
2
+ {
3
+ key: 'messages',
4
+ label: '会话',
5
+ icon: 'a-huihuakuang',
6
+ iconActive: 'a-huihuakuang-filled',
7
+ route: '/messages',
8
+ routeName: 'chat',
9
+ desktopNav: true,
10
+ mobile: true,
11
+ },
12
+ {
13
+ key: 'ai',
14
+ label: 'AI',
15
+ icon: 'cebian_liaotiancebianlan',
16
+ iconActive: 'ai',
17
+ route: '/ai',
18
+ routeName: 'chat-ai',
19
+ desktopNav: true,
20
+ mobile: true,
21
+ shellDark: true,
22
+ },
23
+ {
24
+ key: 'contacts',
25
+ label: '通讯录',
26
+ icon: 'pengyou',
27
+ route: '/contacts',
28
+ routeName: 'chat-contacts',
29
+ desktopNav: true,
30
+ mobile: true,
31
+ },
32
+ {
33
+ key: 'org',
34
+ label: '组织',
35
+ icon: 'zuzhi',
36
+ route: '/org',
37
+ routeName: 'chat-org',
38
+ desktopNav: true,
39
+ mobile: true,
40
+ },
41
+ {
42
+ key: 'short-video',
43
+ label: '短视频',
44
+ icon: 'Video',
45
+ route: '/short-video',
46
+ routeName: 'chat-short-video',
47
+ desktopNav: true,
48
+ mobile: true,
49
+ },
50
+ {
51
+ key: 'docs',
52
+ label: '文档',
53
+ icon: 'wendang',
54
+ route: '/docs/home',
55
+ routeName: 'chat-docs-home',
56
+ routeNamePrefix: 'chat-doc',
57
+ desktopNav: true,
58
+ mobile: true,
59
+ },
60
+ {
61
+ key: 'code',
62
+ label: '代码',
63
+ icon: 'code',
64
+ route: '/code',
65
+ routeName: 'chat-code',
66
+ routeNamePrefix: 'chat-code',
67
+ electronOnly: true,
68
+ desktopNav: true,
69
+ mobile: false,
70
+ },
71
+ {
72
+ key: 'mine',
73
+ label: '我的',
74
+ route: '/mine',
75
+ routeName: 'chat-mine',
76
+ relatedRouteNames: ['chat-wallet'],
77
+ hideLabel: true,
78
+ useMineAvatar: true,
79
+ desktopNav: false,
80
+ desktopFooter: true,
81
+ mobile: true,
82
+ },
83
+ ];
84
+ export class ChatShellTabsConfigError extends Error {
85
+ constructor(message) {
86
+ super(message);
87
+ this.name = 'ChatShellTabsConfigError';
88
+ }
89
+ }
90
+ function normalizeTab(raw) {
91
+ if (raw == null || typeof raw !== 'object' || Array.isArray(raw))
92
+ return null;
93
+ const o = raw;
94
+ const key = String(o.key ?? '').trim();
95
+ if (!key)
96
+ return null;
97
+ const label = String(o.label ?? key).trim();
98
+ return {
99
+ key,
100
+ label,
101
+ icon: o.icon != null ? String(o.icon).trim() : undefined,
102
+ iconActive: o.iconActive != null ? String(o.iconActive).trim() : undefined,
103
+ route: o.route != null ? String(o.route).trim() : undefined,
104
+ routeName: o.routeName != null ? String(o.routeName).trim() : undefined,
105
+ routeNamePrefix: o.routeNamePrefix != null ? String(o.routeNamePrefix).trim() : undefined,
106
+ relatedRouteNames: Array.isArray(o.relatedRouteNames)
107
+ ? o.relatedRouteNames.map((n) => String(n).trim()).filter(Boolean)
108
+ : undefined,
109
+ hideLabel: o.hideLabel === true,
110
+ desktopHideLabel: o.desktopHideLabel === false
111
+ ? false
112
+ : o.desktopHideLabel === true
113
+ ? true
114
+ : undefined,
115
+ electronOnly: o.electronOnly === true,
116
+ desktopNav: o.desktopNav !== false,
117
+ desktopFooter: o.desktopFooter === true,
118
+ mobile: o.mobile !== false,
119
+ useMineAvatar: o.useMineAvatar === true,
120
+ shellDark: o.shellDark === true ? true : undefined,
121
+ hideTabbar: o.hideTabbar === true ? true : undefined,
122
+ };
123
+ }
124
+ function findChatShellTabByKey(tabs, activeKey) {
125
+ return tabs.find((t) => t.key === activeKey);
126
+ }
127
+ export function isChatShellTabShellDark(tabs, activeKey) {
128
+ return findChatShellTabByKey(tabs, activeKey)?.shellDark === true;
129
+ }
130
+ export function isChatShellTabHideTabbar(tabs, activeKey) {
131
+ return findChatShellTabByKey(tabs, activeKey)?.hideTabbar === true;
132
+ }
133
+ export function parseChatShellTabsFromDisplays(displays) {
134
+ if (displays == null || typeof displays !== 'object' || Array.isArray(displays)) {
135
+ throw new ChatShellTabsConfigError('page-config displays 缺失,无法解析 chatShell.tabs');
136
+ }
137
+ const shell = displays.chatShell;
138
+ const fromShell = shell?.tabs;
139
+ if (!Array.isArray(fromShell) || fromShell.length === 0) {
140
+ throw new ChatShellTabsConfigError('displays.chatShell.tabs 未配置或为空');
141
+ }
142
+ const parsed = fromShell
143
+ .map((t) => normalizeTab(t))
144
+ .filter((t) => t != null);
145
+ if (parsed.length === 0) {
146
+ throw new ChatShellTabsConfigError('displays.chatShell.tabs 无有效 Tab 项');
147
+ }
148
+ return parsed;
149
+ }
150
+ export function filterChatShellTabsForRuntime(tabs, opts) {
151
+ return tabs.filter((t) => {
152
+ if (t.electronOnly && !opts.isElectron)
153
+ return false;
154
+ return true;
155
+ });
156
+ }
157
+ export function findChatShellDesktopFooterTab(tabs) {
158
+ return tabs.find((t) => t.desktopFooter === true);
159
+ }
160
+ export function isChatShellMineTab(tab) {
161
+ return tab.useMineAvatar === true;
162
+ }
163
+ export function buildChatShellNavTabbarItems(tabs) {
164
+ return tabs
165
+ .filter((t) => t.desktopNav !== false && !t.desktopFooter)
166
+ .map((t) => {
167
+ const item = toChatShellTabbarItem(t);
168
+ const hideLabelOnDesktop = t.desktopHideLabel !== false;
169
+ const tip = (item.label || item.ariaLabel || '').trim() || undefined;
170
+ return {
171
+ ...item,
172
+ hideLabel: hideLabelOnDesktop,
173
+ tooltip: hideLabelOnDesktop ? tip : undefined,
174
+ };
175
+ });
176
+ }
177
+ export function buildChatShellMobileTabbarItems(tabs) {
178
+ return tabs.filter((t) => t.mobile !== false).map((t) => toChatShellTabbarItem(t));
179
+ }
180
+ export function resolveChatShellTabRouteTarget(tab) {
181
+ const routeName = tab.routeName?.trim();
182
+ if (routeName)
183
+ return { name: routeName };
184
+ const path = tab.route?.trim();
185
+ if (!path)
186
+ return null;
187
+ return path.startsWith('/') ? { path } : { path: `/${path}` };
188
+ }
189
+ export function toChatShellTabbarItem(tab) {
190
+ return {
191
+ key: tab.key,
192
+ label: tab.label,
193
+ icon: '',
194
+ iconName: tab.icon,
195
+ iconActiveName: tab.iconActive || tab.icon,
196
+ hideLabel: tab.hideLabel,
197
+ ariaLabel: tab.hideLabel ? tab.label || tab.key : undefined,
198
+ useMineAvatar: tab.useMineAvatar,
199
+ };
200
+ }
201
+ export function tabMatchesRoute(tab, route) {
202
+ const name = route.name != null ? String(route.name) : '';
203
+ const path = route.path ?? '';
204
+ if (tab.routeName && name === tab.routeName)
205
+ return true;
206
+ if (tab.routeNamePrefix && name.startsWith(tab.routeNamePrefix))
207
+ return true;
208
+ if (tab.relatedRouteNames?.includes(name))
209
+ return true;
210
+ const r = tab.route?.trim();
211
+ if (r) {
212
+ const p = r.startsWith('/') ? r : `/${r}`;
213
+ if (path === p || path.startsWith(`${p}/`))
214
+ return true;
215
+ }
216
+ return false;
217
+ }
218
+ export function resolveActiveTabKey(tabs, route) {
219
+ const hit = tabs.find((t) => tabMatchesRoute(t, route));
220
+ return hit?.key ?? tabs[0]?.key ?? '';
221
+ }
222
+ //# sourceMappingURL=chatShellTabConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatShellTabConfig.js","sourceRoot":"","sources":["../../../src/functions/chat/chatShellTabConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ChatShellTabConfig } from '../../../types/chat-shell-tab-config';
2
+ export type EditableChatShellTab = ChatShellTabConfig & {
3
+ _localId: string;
4
+ };
5
+ export declare function resetChatShellTabEditorLocalIds(): void;
6
+ export declare function toEditableChatShellTabs(tabs: ChatShellTabConfig[]): EditableChatShellTab[];
7
+ export declare function stripEditableChatShellTabs(tabs: EditableChatShellTab[]): ChatShellTabConfig[];
@@ -0,0 +1,43 @@
1
+ let localIdSeq = 0;
2
+ function nextLocalId() {
3
+ localIdSeq += 1;
4
+ return `tab-${localIdSeq}`;
5
+ }
6
+ export function resetChatShellTabEditorLocalIds() {
7
+ localIdSeq = 0;
8
+ }
9
+ export function toEditableChatShellTabs(tabs) {
10
+ return tabs.map((t) => ({
11
+ ...t,
12
+ _localId: nextLocalId(),
13
+ desktopNav: t.desktopNav !== false,
14
+ mobile: t.mobile !== false,
15
+ }));
16
+ }
17
+ export function stripEditableChatShellTabs(tabs) {
18
+ return tabs.map(({ _localId: _, ...rest }) => {
19
+ const tab = {
20
+ key: rest.key.trim(),
21
+ label: rest.label.trim(),
22
+ icon: rest.icon?.trim() || undefined,
23
+ iconActive: rest.iconActive?.trim() || undefined,
24
+ route: rest.route?.trim() || undefined,
25
+ routeName: rest.routeName?.trim() || undefined,
26
+ routeNamePrefix: rest.routeNamePrefix?.trim() || undefined,
27
+ relatedRouteNames: rest.relatedRouteNames && rest.relatedRouteNames.length > 0
28
+ ? rest.relatedRouteNames
29
+ : undefined,
30
+ electronOnly: rest.electronOnly === true ? true : undefined,
31
+ desktopNav: rest.desktopNav === false ? false : undefined,
32
+ desktopFooter: rest.desktopFooter === true ? true : undefined,
33
+ mobile: rest.mobile === false ? false : undefined,
34
+ useMineAvatar: rest.useMineAvatar === true ? true : undefined,
35
+ hideLabel: rest.hideLabel === true ? true : undefined,
36
+ desktopHideLabel: rest.desktopHideLabel === false ? false : undefined,
37
+ shellDark: rest.shellDark === true ? true : undefined,
38
+ hideTabbar: rest.hideTabbar === true ? true : undefined,
39
+ };
40
+ return tab;
41
+ });
42
+ }
43
+ //# sourceMappingURL=chatShellTabEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatShellTabEditor.js","sourceRoot":"","sources":["../../../src/functions/chat/chatShellTabEditor.ts"],"names":[],"mappings":"AAKA,IAAI,UAAU,GAAG,CAAC,CAAA;AAClB,SAAS,WAAW;IAClB,UAAU,IAAI,CAAC,CAAA;IACf,OAAO,OAAO,UAAU,EAAE,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,UAAU,GAAG,CAAC,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAA0B;IAE1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,GAAG,CAAC;QACJ,QAAQ,EAAE,WAAW,EAAE;QACvB,UAAU,EAAE,CAAC,CAAC,UAAU,KAAK,KAAK;QAClC,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,KAAK;KAC3B,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,IAA4B;IAE5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAuB;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,SAAS;YACpC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,SAAS;YAChD,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS;YACtC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,SAAS;YAC9C,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,SAAS;YAC1D,iBAAiB,EACf,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;gBACzD,CAAC,CAAC,IAAI,CAAC,iBAAiB;gBACxB,CAAC,CAAC,SAAS;YACf,YAAY,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC3D,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACzD,aAAa,EAAE,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC7D,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACjD,aAAa,EAAE,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC7D,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACrD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACrE,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACrD,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SACxD,CAAA;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type CodeLanguage = 'typescript' | 'javascript' | 'json' | 'css' | 'html' | 'vue' | 'markdown' | 'python' | 'sql' | 'xml' | 'yaml' | 'java' | 'cpp' | 'plaintext';
2
+ export declare function getLanguageFromExtension(path: string | null | undefined): CodeLanguage;
3
+ export declare function getCodeMirrorLanguage(path: string | null | undefined): string;
4
+ export declare function isFrontendLanguage(path: string | null | undefined): boolean;
5
+ export declare function isHighlightable(path: string | null | undefined): boolean;
@@ -0,0 +1,90 @@
1
+ const EXTENSION_TO_LANGUAGE = {
2
+ ts: 'typescript',
3
+ tsx: 'typescript',
4
+ mts: 'typescript',
5
+ cts: 'typescript',
6
+ js: 'javascript',
7
+ jsx: 'javascript',
8
+ mjs: 'javascript',
9
+ cjs: 'javascript',
10
+ json: 'json',
11
+ jsonc: 'json',
12
+ json5: 'json',
13
+ css: 'css',
14
+ scss: 'css',
15
+ sass: 'css',
16
+ less: 'css',
17
+ styl: 'css',
18
+ stylus: 'css',
19
+ html: 'html',
20
+ htm: 'html',
21
+ hbs: 'html',
22
+ handlebars: 'html',
23
+ vue: 'vue',
24
+ md: 'markdown',
25
+ mdx: 'markdown',
26
+ markdown: 'markdown',
27
+ py: 'python',
28
+ pyw: 'python',
29
+ pyi: 'python',
30
+ sql: 'sql',
31
+ mysql: 'sql',
32
+ pgsql: 'sql',
33
+ plsql: 'sql',
34
+ xml: 'xml',
35
+ svg: 'xml',
36
+ xsd: 'xml',
37
+ xsl: 'xml',
38
+ xslt: 'xml',
39
+ wsdl: 'xml',
40
+ yaml: 'yaml',
41
+ yml: 'yaml',
42
+ java: 'java',
43
+ cpp: 'cpp',
44
+ cc: 'cpp',
45
+ cxx: 'cpp',
46
+ hpp: 'cpp',
47
+ c: 'cpp',
48
+ h: 'cpp',
49
+ hh: 'cpp',
50
+ };
51
+ export function getLanguageFromExtension(path) {
52
+ if (!path) {
53
+ return 'plaintext';
54
+ }
55
+ const basename = path.split('/').pop() ?? path;
56
+ const lastDotIndex = basename.lastIndexOf('.');
57
+ if (lastDotIndex <= 0) {
58
+ return 'plaintext';
59
+ }
60
+ const ext = basename.slice(lastDotIndex + 1).toLowerCase();
61
+ return EXTENSION_TO_LANGUAGE[ext] ?? 'plaintext';
62
+ }
63
+ export function getCodeMirrorLanguage(path) {
64
+ const lang = getLanguageFromExtension(path);
65
+ const codemirrorMap = {
66
+ typescript: 'typescript',
67
+ javascript: 'javascript',
68
+ json: 'json',
69
+ css: 'css',
70
+ html: 'html',
71
+ vue: 'vue',
72
+ markdown: 'markdown',
73
+ python: 'python',
74
+ sql: 'sql',
75
+ xml: 'xml',
76
+ yaml: 'yaml',
77
+ java: 'java',
78
+ cpp: 'cpp',
79
+ plaintext: 'plaintext',
80
+ };
81
+ return codemirrorMap[lang];
82
+ }
83
+ export function isFrontendLanguage(path) {
84
+ const lang = getLanguageFromExtension(path);
85
+ return ['typescript', 'javascript', 'vue', 'css', 'html'].includes(lang);
86
+ }
87
+ export function isHighlightable(path) {
88
+ return getLanguageFromExtension(path) !== 'plaintext';
89
+ }
90
+ //# sourceMappingURL=getLanguageFromExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLanguageFromExtension.js","sourceRoot":"","sources":["../../../src/functions/code/getLanguageFromExtension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { getLanguageFromExtension, getCodeMirrorLanguage, isFrontendLanguage, isHighlightable, type CodeLanguage, } from './getLanguageFromExtension';
@@ -0,0 +1,2 @@
1
+ export { getLanguageFromExtension, getCodeMirrorLanguage, isFrontendLanguage, isHighlightable, } from './getLanguageFromExtension';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,GAEhB,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1 @@
1
+ export declare function copyHtmlAndPlainToClipboard(html: string, plain: string): Promise<boolean>;