@composy/chat-core 0.0.1 → 0.0.2

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 (168) hide show
  1. package/README.md +187 -123
  2. package/dist/index.js +2018 -1035
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.min.js +1370 -1644
  5. package/dist/index.min.js.map +1 -0
  6. package/es/.dts-output-manifest.json +1 -0
  7. package/es/.dts.tsbuildinfo +1 -0
  8. package/es/constants/dom.d.ts +3 -19
  9. package/es/constants/dom.js +4 -4
  10. package/es/constants/dom.js.map +1 -1
  11. package/es/core/chat-manager.d.ts +33 -22
  12. package/es/core/chat-manager.js +174 -50
  13. package/es/core/chat-manager.js.map +1 -1
  14. package/es/core/event-emitter.d.ts +0 -1
  15. package/es/core/event-emitter.js +14 -7
  16. package/es/core/event-emitter.js.map +1 -1
  17. package/es/core/mention-engine.d.ts +1 -2
  18. package/es/core/mention-engine.js +9 -9
  19. package/es/core/mention-engine.js.map +1 -1
  20. package/es/core/message-schema.d.ts +19 -0
  21. package/es/core/message-schema.js +197 -0
  22. package/es/core/message-schema.js.map +1 -0
  23. package/es/core/outbox.d.ts +63 -0
  24. package/es/core/outbox.js +160 -0
  25. package/es/core/outbox.js.map +1 -0
  26. package/es/core/transport.d.ts +79 -0
  27. package/es/core/transport.js +102 -0
  28. package/es/core/transport.js.map +1 -0
  29. package/es/index.d.ts +12 -7
  30. package/es/index.js +167 -36
  31. package/es/index.js.map +1 -1
  32. package/es/renderer/dom-renderer.d.ts +16 -4
  33. package/es/renderer/dom-renderer.js +316 -61
  34. package/es/renderer/dom-renderer.js.map +1 -1
  35. package/es/renderer/style-manager.d.ts +14 -38
  36. package/es/renderer/style-manager.js +92 -63
  37. package/es/renderer/style-manager.js.map +1 -1
  38. package/es/theme/theme-manager.d.ts +4 -3
  39. package/es/theme/theme-manager.js +19 -9
  40. package/es/theme/theme-manager.js.map +1 -1
  41. package/es/theme/tokens.d.ts +0 -1
  42. package/es/theme/tokens.js +92 -92
  43. package/es/theme/tokens.js.map +1 -1
  44. package/es/types/index.d.ts +104 -24
  45. package/es/types/index.js +8 -3
  46. package/es/types/index.js.map +1 -0
  47. package/esm/constants/dom.d.ts +3 -19
  48. package/esm/constants/dom.js +4 -4
  49. package/esm/constants/dom.js.map +1 -1
  50. package/esm/core/chat-manager.d.ts +33 -22
  51. package/esm/core/chat-manager.js +174 -50
  52. package/esm/core/chat-manager.js.map +1 -1
  53. package/esm/core/event-emitter.d.ts +0 -1
  54. package/esm/core/event-emitter.js +14 -7
  55. package/esm/core/event-emitter.js.map +1 -1
  56. package/esm/core/mention-engine.d.ts +1 -2
  57. package/esm/core/mention-engine.js +9 -9
  58. package/esm/core/mention-engine.js.map +1 -1
  59. package/esm/core/message-schema.d.ts +19 -0
  60. package/esm/core/message-schema.js +197 -0
  61. package/esm/core/message-schema.js.map +1 -0
  62. package/esm/core/outbox.d.ts +63 -0
  63. package/esm/core/outbox.js +160 -0
  64. package/esm/core/outbox.js.map +1 -0
  65. package/esm/core/transport.d.ts +79 -0
  66. package/esm/core/transport.js +102 -0
  67. package/esm/core/transport.js.map +1 -0
  68. package/esm/index.d.ts +12 -7
  69. package/esm/index.js +169 -38
  70. package/esm/index.js.map +1 -1
  71. package/esm/renderer/dom-renderer.d.ts +16 -4
  72. package/esm/renderer/dom-renderer.js +316 -61
  73. package/esm/renderer/dom-renderer.js.map +1 -1
  74. package/esm/renderer/style-manager.d.ts +14 -38
  75. package/esm/renderer/style-manager.js +92 -63
  76. package/esm/renderer/style-manager.js.map +1 -1
  77. package/esm/theme/theme-manager.d.ts +4 -3
  78. package/esm/theme/theme-manager.js +19 -9
  79. package/esm/theme/theme-manager.js.map +1 -1
  80. package/esm/theme/tokens.d.ts +0 -1
  81. package/esm/theme/tokens.js +92 -92
  82. package/esm/theme/tokens.js.map +1 -1
  83. package/esm/types/index.d.ts +104 -24
  84. package/esm/types/index.js +8 -3
  85. package/esm/types/index.js.map +1 -0
  86. package/lib/constants/dom.cjs +4 -4
  87. package/lib/constants/dom.cjs.map +1 -1
  88. package/lib/constants/dom.d.cts +25 -0
  89. package/lib/constants/dom.d.ts +3 -19
  90. package/lib/core/chat-manager.cjs +174 -50
  91. package/lib/core/chat-manager.cjs.map +1 -1
  92. package/lib/core/chat-manager.d.cts +45 -0
  93. package/lib/core/chat-manager.d.ts +33 -22
  94. package/lib/core/event-emitter.cjs +14 -7
  95. package/lib/core/event-emitter.cjs.map +1 -1
  96. package/lib/core/event-emitter.d.cts +47 -0
  97. package/lib/core/event-emitter.d.ts +0 -1
  98. package/lib/core/mention-engine.cjs +9 -9
  99. package/lib/core/mention-engine.cjs.map +1 -1
  100. package/lib/core/mention-engine.d.cts +40 -0
  101. package/lib/core/mention-engine.d.ts +1 -2
  102. package/lib/core/message-schema.cjs +202 -0
  103. package/lib/core/message-schema.cjs.map +1 -0
  104. package/lib/core/message-schema.d.cts +19 -0
  105. package/lib/core/message-schema.d.ts +19 -0
  106. package/lib/core/outbox.cjs +162 -0
  107. package/lib/core/outbox.cjs.map +1 -0
  108. package/lib/core/outbox.d.cts +63 -0
  109. package/lib/core/outbox.d.ts +63 -0
  110. package/lib/core/transport.cjs +103 -0
  111. package/lib/core/transport.cjs.map +1 -0
  112. package/lib/core/transport.d.cts +79 -0
  113. package/lib/core/transport.d.ts +79 -0
  114. package/lib/index.cjs +175 -35
  115. package/lib/index.cjs.map +1 -1
  116. package/lib/index.d.cts +33 -0
  117. package/lib/index.d.ts +12 -7
  118. package/lib/renderer/dom-renderer.cjs +316 -61
  119. package/lib/renderer/dom-renderer.cjs.map +1 -1
  120. package/lib/renderer/dom-renderer.d.cts +91 -0
  121. package/lib/renderer/dom-renderer.d.ts +16 -4
  122. package/lib/renderer/style-manager.cjs +92 -62
  123. package/lib/renderer/style-manager.cjs.map +1 -1
  124. package/lib/renderer/style-manager.d.cts +34 -0
  125. package/lib/renderer/style-manager.d.ts +14 -38
  126. package/lib/theme/theme-manager.cjs +19 -9
  127. package/lib/theme/theme-manager.cjs.map +1 -1
  128. package/lib/theme/theme-manager.d.cts +34 -0
  129. package/lib/theme/theme-manager.d.ts +4 -3
  130. package/lib/theme/tokens.cjs +92 -92
  131. package/lib/theme/tokens.cjs.map +1 -1
  132. package/lib/theme/tokens.d.cts +56 -0
  133. package/lib/theme/tokens.d.ts +0 -1
  134. package/lib/types/index.cjs +8 -3
  135. package/lib/types/index.cjs.map +1 -0
  136. package/lib/types/index.d.cts +284 -0
  137. package/lib/types/index.d.ts +104 -24
  138. package/package.json +16 -13
  139. package/es/constants/dom.d.ts.map +0 -1
  140. package/es/core/chat-manager.d.ts.map +0 -1
  141. package/es/core/event-emitter.d.ts.map +0 -1
  142. package/es/core/mention-engine.d.ts.map +0 -1
  143. package/es/index.d.ts.map +0 -1
  144. package/es/renderer/dom-renderer.d.ts.map +0 -1
  145. package/es/renderer/style-manager.d.ts.map +0 -1
  146. package/es/theme/theme-manager.d.ts.map +0 -1
  147. package/es/theme/tokens.d.ts.map +0 -1
  148. package/es/types/index.d.ts.map +0 -1
  149. package/esm/constants/dom.d.ts.map +0 -1
  150. package/esm/core/chat-manager.d.ts.map +0 -1
  151. package/esm/core/event-emitter.d.ts.map +0 -1
  152. package/esm/core/mention-engine.d.ts.map +0 -1
  153. package/esm/index.d.ts.map +0 -1
  154. package/esm/renderer/dom-renderer.d.ts.map +0 -1
  155. package/esm/renderer/style-manager.d.ts.map +0 -1
  156. package/esm/theme/theme-manager.d.ts.map +0 -1
  157. package/esm/theme/tokens.d.ts.map +0 -1
  158. package/esm/types/index.d.ts.map +0 -1
  159. package/lib/constants/dom.d.ts.map +0 -1
  160. package/lib/core/chat-manager.d.ts.map +0 -1
  161. package/lib/core/event-emitter.d.ts.map +0 -1
  162. package/lib/core/mention-engine.d.ts.map +0 -1
  163. package/lib/index.d.ts.map +0 -1
  164. package/lib/renderer/dom-renderer.d.ts.map +0 -1
  165. package/lib/renderer/style-manager.d.ts.map +0 -1
  166. package/lib/theme/theme-manager.d.ts.map +0 -1
  167. package/lib/theme/tokens.d.ts.map +0 -1
  168. package/lib/types/index.d.ts.map +0 -1
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * 主题管理器
3
3
  */
4
+ import type { EventEmitter } from '../core/event-emitter';
4
5
  import type { ThemeMode } from '../types';
5
6
  import type { ThemeTokens } from './tokens';
6
- import { EventEmitter } from '../core/event-emitter';
7
7
  /**
8
8
  * ThemeManager - Theme Manager class
9
9
  */
@@ -12,7 +12,9 @@ export declare class ThemeManager {
12
12
  private emitter;
13
13
  private mediaQuery;
14
14
  private mediaHandler;
15
- constructor(emitter: EventEmitter, mode?: ThemeMode);
15
+ private view;
16
+ private destroyed;
17
+ constructor(emitter: EventEmitter, mode?: ThemeMode, view?: Window | null);
16
18
  /** 获取当前模式 */
17
19
  getMode(): ThemeMode;
18
20
  /** 获取当前实际主题(auto 时解析为 light/dark) */
@@ -30,4 +32,3 @@ export declare class ThemeManager {
30
32
  /** 销毁 */
31
33
  destroy(): void;
32
34
  }
33
- //# sourceMappingURL=theme-manager.d.ts.map
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * ***********************************
3
- * @composy/chat-core v0.0.1 *
3
+ * @composy/chat-core v0.0.2 *
4
4
  * Built with rollup *
5
- * Build time: 2024-08-17 11:30:32 *
5
+ * Build time: 2024-10-12 21:52:18 *
6
6
  * Build mode: production *
7
7
  * Minified: No *
8
8
  * ***********************************
@@ -10,98 +10,98 @@
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
11
11
  //#region src/theme/tokens.ts
12
12
  const lightTokens = {
13
- bgPrimary: "var(--color-gray-50)",
14
- bgSecondary: "var(--color-gray-100)",
15
- bgBubbleOutgoing: "var(--color-primary-default)",
16
- bgBubbleIncoming: "var(--color-gray-100)",
17
- bgInput: "var(--color-gray-50)",
18
- bgMention: "var(--color-gray-50)",
19
- bgMentionHover: "var(--color-primary-50)",
20
- bgMentionActive: "var(--color-primary-100)",
21
- bgLoadMore: "var(--color-gray-100)",
22
- bgSystemMessage: "var(--color-gray-100)",
23
- bgDropOverlay: "color-mix(in srgb, var(--color-primary-default) 10%, var(--color-gray-50))",
24
- bgDangerSoft: "color-mix(in srgb, var(--color-danger-default) 12%, var(--color-gray-50))",
25
- textPrimary: "var(--color-gray-900)",
26
- textSecondary: "var(--color-gray-600)",
27
- textBubbleOutgoing: "var(--color-gray-50)",
28
- textBubbleIncoming: "var(--color-gray-900)",
29
- textMention: "var(--color-gray-900)",
30
- textMentionTag: "var(--color-primary-default)",
31
- textTimestamp: "var(--color-gray-500)",
32
- textSystem: "var(--color-gray-600)",
33
- textPlaceholder: "var(--color-gray-400)",
34
- borderPrimary: "var(--color-gray-200)",
35
- borderInput: "var(--color-gray-300)",
36
- borderInputFocus: "var(--color-primary-default)",
37
- borderMention: "var(--color-gray-200)",
38
- colorSending: "var(--color-gray-400)",
39
- colorSent: "var(--color-gray-500)",
40
- colorDelivered: "var(--color-primary-default)",
41
- colorRead: "var(--color-success-default)",
42
- colorFailed: "var(--color-danger-default)",
43
- colorLink: "var(--color-primary-default)",
44
- shadowPanel: "var(--size-shadow-2)",
45
- shadowMention: "var(--size-shadow-4)",
46
- avatarBg: "var(--color-primary-default)",
47
- avatarText: "var(--color-gray-50)",
48
- btnPrimaryBg: "var(--color-primary-default)",
49
- btnPrimaryText: "var(--color-gray-50)",
50
- btnPrimaryHover: "var(--color-primary-hover)",
51
- scrollbarThumb: "var(--color-gray-300)",
52
- scrollbarTrack: "var(--color-gray-100)",
53
- bgToolbar: "var(--color-gray-100)",
54
- borderToolbar: "var(--color-gray-200)",
55
- toolbarIconColor: "var(--color-gray-600)",
56
- toolbarIconHover: "var(--color-primary-default)",
57
- toolbarVoiceActive: "var(--color-danger-default)"
13
+ bgPrimary: "var(--ld-bg-surface)",
14
+ bgSecondary: "var(--ld-bg-surface-soft)",
15
+ bgBubbleOutgoing: "var(--ld-primary-default)",
16
+ bgBubbleIncoming: "var(--ld-bg-surface-soft)",
17
+ bgInput: "var(--ld-bg-surface)",
18
+ bgMention: "var(--ld-bg-surface)",
19
+ bgMentionHover: "var(--ld-primary-50)",
20
+ bgMentionActive: "var(--ld-primary-100)",
21
+ bgLoadMore: "var(--ld-bg-surface-soft)",
22
+ bgSystemMessage: "var(--ld-bg-surface-soft)",
23
+ bgDropOverlay: "color-mix(in srgb, var(--ld-primary-default) 10%, var(--ld-bg-surface))",
24
+ bgDangerSoft: "color-mix(in srgb, var(--ld-danger-default) 12%, var(--ld-bg-surface))",
25
+ textPrimary: "var(--ld-text-primary)",
26
+ textSecondary: "var(--ld-text-secondary)",
27
+ textBubbleOutgoing: "var(--ld-gray-50)",
28
+ textBubbleIncoming: "var(--ld-text-primary)",
29
+ textMention: "var(--ld-text-primary)",
30
+ textMentionTag: "var(--ld-primary-default)",
31
+ textTimestamp: "var(--ld-text-muted)",
32
+ textSystem: "var(--ld-text-secondary)",
33
+ textPlaceholder: "var(--ld-text-muted)",
34
+ borderPrimary: "var(--ld-border)",
35
+ borderInput: "var(--ld-gray-300)",
36
+ borderInputFocus: "var(--ld-primary-default)",
37
+ borderMention: "var(--ld-border)",
38
+ colorSending: "var(--ld-gray-400)",
39
+ colorSent: "var(--ld-gray-500)",
40
+ colorDelivered: "var(--ld-primary-default)",
41
+ colorRead: "var(--ld-success-default)",
42
+ colorFailed: "var(--ld-danger-default)",
43
+ colorLink: "var(--ld-primary-default)",
44
+ shadowPanel: "none",
45
+ shadowMention: "none",
46
+ avatarBg: "var(--ld-primary-default)",
47
+ avatarText: "var(--ld-gray-50)",
48
+ btnPrimaryBg: "var(--ld-primary-default)",
49
+ btnPrimaryText: "var(--ld-gray-50)",
50
+ btnPrimaryHover: "var(--ld-primary-hover)",
51
+ scrollbarThumb: "var(--ld-gray-300)",
52
+ scrollbarTrack: "var(--ld-gray-100)",
53
+ bgToolbar: "var(--ld-bg-surface-soft)",
54
+ borderToolbar: "var(--ld-border)",
55
+ toolbarIconColor: "var(--ld-text-secondary)",
56
+ toolbarIconHover: "var(--ld-primary-default)",
57
+ toolbarVoiceActive: "var(--ld-danger-default)"
58
58
  };
59
59
  const darkTokens = {
60
- bgPrimary: "var(--color-gray-900)",
61
- bgSecondary: "var(--color-gray-800)",
62
- bgBubbleOutgoing: "var(--color-primary-default)",
63
- bgBubbleIncoming: "var(--color-gray-800)",
64
- bgInput: "var(--color-gray-900)",
65
- bgMention: "var(--color-gray-900)",
66
- bgMentionHover: "var(--color-gray-800)",
67
- bgMentionActive: "var(--color-primary-900)",
68
- bgLoadMore: "var(--color-gray-800)",
69
- bgSystemMessage: "var(--color-gray-800)",
70
- bgDropOverlay: "color-mix(in srgb, var(--color-primary-default) 16%, var(--color-gray-900))",
71
- bgDangerSoft: "color-mix(in srgb, var(--color-danger-default) 18%, var(--color-gray-900))",
72
- textPrimary: "var(--color-gray-50)",
73
- textSecondary: "var(--color-gray-300)",
74
- textBubbleOutgoing: "var(--color-gray-50)",
75
- textBubbleIncoming: "var(--color-gray-50)",
76
- textMention: "var(--color-gray-50)",
77
- textMentionTag: "var(--color-primary-300)",
78
- textTimestamp: "var(--color-gray-400)",
79
- textSystem: "var(--color-gray-300)",
80
- textPlaceholder: "var(--color-gray-500)",
81
- borderPrimary: "var(--color-gray-700)",
82
- borderInput: "var(--color-gray-700)",
83
- borderInputFocus: "var(--color-primary-default)",
84
- borderMention: "var(--color-gray-700)",
85
- colorSending: "var(--color-gray-500)",
86
- colorSent: "var(--color-gray-400)",
87
- colorDelivered: "var(--color-primary-300)",
88
- colorRead: "var(--color-success-default)",
89
- colorFailed: "var(--color-danger-default)",
90
- colorLink: "var(--color-primary-300)",
91
- shadowPanel: "var(--size-shadow-3)",
92
- shadowMention: "var(--size-shadow-6)",
93
- avatarBg: "var(--color-primary-default)",
94
- avatarText: "var(--color-gray-50)",
95
- btnPrimaryBg: "var(--color-primary-default)",
96
- btnPrimaryText: "var(--color-gray-50)",
97
- btnPrimaryHover: "var(--color-primary-hover)",
98
- scrollbarThumb: "var(--color-gray-700)",
99
- scrollbarTrack: "var(--color-gray-800)",
100
- bgToolbar: "var(--color-gray-800)",
101
- borderToolbar: "var(--color-gray-700)",
102
- toolbarIconColor: "var(--color-gray-300)",
103
- toolbarIconHover: "var(--color-primary-300)",
104
- toolbarVoiceActive: "var(--color-danger-default)"
60
+ bgPrimary: "var(--ld-gray-900)",
61
+ bgSecondary: "var(--ld-gray-800)",
62
+ bgBubbleOutgoing: "var(--ld-primary-default)",
63
+ bgBubbleIncoming: "var(--ld-gray-800)",
64
+ bgInput: "var(--ld-gray-900)",
65
+ bgMention: "var(--ld-gray-900)",
66
+ bgMentionHover: "var(--ld-gray-800)",
67
+ bgMentionActive: "var(--ld-primary-900)",
68
+ bgLoadMore: "var(--ld-gray-800)",
69
+ bgSystemMessage: "var(--ld-gray-800)",
70
+ bgDropOverlay: "color-mix(in srgb, var(--ld-primary-default) 16%, var(--ld-gray-900))",
71
+ bgDangerSoft: "color-mix(in srgb, var(--ld-danger-default) 18%, var(--ld-gray-900))",
72
+ textPrimary: "var(--ld-gray-50)",
73
+ textSecondary: "var(--ld-gray-300)",
74
+ textBubbleOutgoing: "var(--ld-gray-50)",
75
+ textBubbleIncoming: "var(--ld-gray-50)",
76
+ textMention: "var(--ld-gray-50)",
77
+ textMentionTag: "var(--ld-primary-300)",
78
+ textTimestamp: "var(--ld-gray-400)",
79
+ textSystem: "var(--ld-gray-300)",
80
+ textPlaceholder: "var(--ld-gray-500)",
81
+ borderPrimary: "var(--ld-gray-700)",
82
+ borderInput: "var(--ld-gray-700)",
83
+ borderInputFocus: "var(--ld-primary-default)",
84
+ borderMention: "var(--ld-gray-700)",
85
+ colorSending: "var(--ld-gray-500)",
86
+ colorSent: "var(--ld-gray-400)",
87
+ colorDelivered: "var(--ld-primary-300)",
88
+ colorRead: "var(--ld-success-default)",
89
+ colorFailed: "var(--ld-danger-default)",
90
+ colorLink: "var(--ld-primary-300)",
91
+ shadowPanel: "none",
92
+ shadowMention: "none",
93
+ avatarBg: "var(--ld-primary-default)",
94
+ avatarText: "var(--ld-gray-50)",
95
+ btnPrimaryBg: "var(--ld-primary-default)",
96
+ btnPrimaryText: "var(--ld-gray-50)",
97
+ btnPrimaryHover: "var(--ld-primary-hover)",
98
+ scrollbarThumb: "var(--ld-gray-700)",
99
+ scrollbarTrack: "var(--ld-gray-800)",
100
+ bgToolbar: "var(--ld-gray-800)",
101
+ borderToolbar: "var(--ld-gray-700)",
102
+ toolbarIconColor: "var(--ld-gray-300)",
103
+ toolbarIconHover: "var(--ld-primary-300)",
104
+ toolbarVoiceActive: "var(--ld-danger-default)"
105
105
  };
106
106
  //#endregion
107
107
  exports.darkTokens = darkTokens;
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.cjs","names":[],"sources":["../../src/theme/tokens.ts"],"sourcesContent":["/**\n * @file tokens.ts\n * @description tokens 模块\n */\n\n/**\n * ThemeTokens interface\n */\nexport interface ThemeTokens {\n bgPrimary: string;\n bgSecondary: string;\n bgBubbleOutgoing: string;\n bgBubbleIncoming: string;\n bgInput: string;\n bgMention: string;\n bgMentionHover: string;\n bgMentionActive: string;\n bgLoadMore: string;\n bgSystemMessage: string;\n bgDropOverlay: string;\n bgDangerSoft: string;\n\n textPrimary: string;\n textSecondary: string;\n textBubbleOutgoing: string;\n textBubbleIncoming: string;\n textMention: string;\n textMentionTag: string;\n textTimestamp: string;\n textSystem: string;\n textPlaceholder: string;\n\n borderPrimary: string;\n borderInput: string;\n borderInputFocus: string;\n borderMention: string;\n\n colorSending: string;\n colorSent: string;\n colorDelivered: string;\n colorRead: string;\n colorFailed: string;\n colorLink: string;\n\n shadowPanel: string;\n shadowMention: string;\n\n avatarBg: string;\n avatarText: string;\n\n btnPrimaryBg: string;\n btnPrimaryText: string;\n btnPrimaryHover: string;\n\n scrollbarThumb: string;\n scrollbarTrack: string;\n\n bgToolbar: string;\n borderToolbar: string;\n toolbarIconColor: string;\n toolbarIconHover: string;\n toolbarVoiceActive: string;\n}\n\nexport const lightTokens: ThemeTokens = {\n bgPrimary: 'var(--color-gray-50)',\n bgSecondary: 'var(--color-gray-100)',\n bgBubbleOutgoing: 'var(--color-primary-default)',\n bgBubbleIncoming: 'var(--color-gray-100)',\n bgInput: 'var(--color-gray-50)',\n bgMention: 'var(--color-gray-50)',\n bgMentionHover: 'var(--color-primary-50)',\n bgMentionActive: 'var(--color-primary-100)',\n bgLoadMore: 'var(--color-gray-100)',\n bgSystemMessage: 'var(--color-gray-100)',\n bgDropOverlay: 'color-mix(in srgb, var(--color-primary-default) 10%, var(--color-gray-50))',\n bgDangerSoft: 'color-mix(in srgb, var(--color-danger-default) 12%, var(--color-gray-50))',\n\n textPrimary: 'var(--color-gray-900)',\n textSecondary: 'var(--color-gray-600)',\n textBubbleOutgoing: 'var(--color-gray-50)',\n textBubbleIncoming: 'var(--color-gray-900)',\n textMention: 'var(--color-gray-900)',\n textMentionTag: 'var(--color-primary-default)',\n textTimestamp: 'var(--color-gray-500)',\n textSystem: 'var(--color-gray-600)',\n textPlaceholder: 'var(--color-gray-400)',\n\n borderPrimary: 'var(--color-gray-200)',\n borderInput: 'var(--color-gray-300)',\n borderInputFocus: 'var(--color-primary-default)',\n borderMention: 'var(--color-gray-200)',\n\n colorSending: 'var(--color-gray-400)',\n colorSent: 'var(--color-gray-500)',\n colorDelivered: 'var(--color-primary-default)',\n colorRead: 'var(--color-success-default)',\n colorFailed: 'var(--color-danger-default)',\n colorLink: 'var(--color-primary-default)',\n\n shadowPanel: 'var(--size-shadow-2)',\n shadowMention: 'var(--size-shadow-4)',\n\n avatarBg: 'var(--color-primary-default)',\n avatarText: 'var(--color-gray-50)',\n\n btnPrimaryBg: 'var(--color-primary-default)',\n btnPrimaryText: 'var(--color-gray-50)',\n btnPrimaryHover: 'var(--color-primary-hover)',\n\n scrollbarThumb: 'var(--color-gray-300)',\n scrollbarTrack: 'var(--color-gray-100)',\n\n bgToolbar: 'var(--color-gray-100)',\n borderToolbar: 'var(--color-gray-200)',\n toolbarIconColor: 'var(--color-gray-600)',\n toolbarIconHover: 'var(--color-primary-default)',\n toolbarVoiceActive: 'var(--color-danger-default)',\n};\n\nexport const darkTokens: ThemeTokens = {\n bgPrimary: 'var(--color-gray-900)',\n bgSecondary: 'var(--color-gray-800)',\n bgBubbleOutgoing: 'var(--color-primary-default)',\n bgBubbleIncoming: 'var(--color-gray-800)',\n bgInput: 'var(--color-gray-900)',\n bgMention: 'var(--color-gray-900)',\n bgMentionHover: 'var(--color-gray-800)',\n bgMentionActive: 'var(--color-primary-900)',\n bgLoadMore: 'var(--color-gray-800)',\n bgSystemMessage: 'var(--color-gray-800)',\n bgDropOverlay: 'color-mix(in srgb, var(--color-primary-default) 16%, var(--color-gray-900))',\n bgDangerSoft: 'color-mix(in srgb, var(--color-danger-default) 18%, var(--color-gray-900))',\n\n textPrimary: 'var(--color-gray-50)',\n textSecondary: 'var(--color-gray-300)',\n textBubbleOutgoing: 'var(--color-gray-50)',\n textBubbleIncoming: 'var(--color-gray-50)',\n textMention: 'var(--color-gray-50)',\n textMentionTag: 'var(--color-primary-300)',\n textTimestamp: 'var(--color-gray-400)',\n textSystem: 'var(--color-gray-300)',\n textPlaceholder: 'var(--color-gray-500)',\n\n borderPrimary: 'var(--color-gray-700)',\n borderInput: 'var(--color-gray-700)',\n borderInputFocus: 'var(--color-primary-default)',\n borderMention: 'var(--color-gray-700)',\n\n colorSending: 'var(--color-gray-500)',\n colorSent: 'var(--color-gray-400)',\n colorDelivered: 'var(--color-primary-300)',\n colorRead: 'var(--color-success-default)',\n colorFailed: 'var(--color-danger-default)',\n colorLink: 'var(--color-primary-300)',\n\n shadowPanel: 'var(--size-shadow-3)',\n shadowMention: 'var(--size-shadow-6)',\n\n avatarBg: 'var(--color-primary-default)',\n avatarText: 'var(--color-gray-50)',\n\n btnPrimaryBg: 'var(--color-primary-default)',\n btnPrimaryText: 'var(--color-gray-50)',\n btnPrimaryHover: 'var(--color-primary-hover)',\n\n scrollbarThumb: 'var(--color-gray-700)',\n scrollbarTrack: 'var(--color-gray-800)',\n\n bgToolbar: 'var(--color-gray-800)',\n borderToolbar: 'var(--color-gray-700)',\n toolbarIconColor: 'var(--color-gray-300)',\n toolbarIconHover: 'var(--color-primary-300)',\n toolbarVoiceActive: 'var(--color-danger-default)',\n};\n"],"mappings":";;;;;;;;;;;AAgEO,MAAM,cAA2B;CACtC,WAAW;CACX,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,SAAS;CACT,WAAW;CACX,gBAAgB;CAChB,iBAAiB;CACjB,YAAY;CACZ,iBAAiB;CACjB,eAAe;CACf,cAAc;CAEd,aAAa;CACb,eAAe;CACf,oBAAoB;CACpB,oBAAoB;CACpB,aAAa;CACb,gBAAgB;CAChB,eAAe;CACf,YAAY;CACZ,iBAAiB;CAEjB,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB,eAAe;CAEf,cAAc;CACd,WAAW;CACX,gBAAgB;CAChB,WAAW;CACX,aAAa;CACb,WAAW;CAEX,aAAa;CACb,eAAe;CAEf,UAAU;CACV,YAAY;CAEZ,cAAc;CACd,gBAAgB;CAChB,iBAAiB;CAEjB,gBAAgB;CAChB,gBAAgB;CAEhB,WAAW;CACX,eAAe;CACf,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;AACtB;AAEO,MAAM,aAA0B;CACrC,WAAW;CACX,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,SAAS;CACT,WAAW;CACX,gBAAgB;CAChB,iBAAiB;CACjB,YAAY;CACZ,iBAAiB;CACjB,eAAe;CACf,cAAc;CAEd,aAAa;CACb,eAAe;CACf,oBAAoB;CACpB,oBAAoB;CACpB,aAAa;CACb,gBAAgB;CAChB,eAAe;CACf,YAAY;CACZ,iBAAiB;CAEjB,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB,eAAe;CAEf,cAAc;CACd,WAAW;CACX,gBAAgB;CAChB,WAAW;CACX,aAAa;CACb,WAAW;CAEX,aAAa;CACb,eAAe;CAEf,UAAU;CACV,YAAY;CAEZ,cAAc;CACd,gBAAgB;CAChB,iBAAiB;CAEjB,gBAAgB;CAChB,gBAAgB;CAEhB,WAAW;CACX,eAAe;CACf,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;AACtB"}
1
+ {"version":3,"file":"tokens.cjs","names":[],"sources":["../../src/theme/tokens.ts"],"sourcesContent":["/**\r\n * @file tokens.ts\r\n * @description tokens 模块\r\n */\r\n\r\n/**\r\n * ThemeTokens interface\r\n */\r\nexport interface ThemeTokens {\r\n bgPrimary: string\r\n bgSecondary: string\r\n bgBubbleOutgoing: string\r\n bgBubbleIncoming: string\r\n bgInput: string\r\n bgMention: string\r\n bgMentionHover: string\r\n bgMentionActive: string\r\n bgLoadMore: string\r\n bgSystemMessage: string\r\n bgDropOverlay: string\r\n bgDangerSoft: string\r\n\r\n textPrimary: string\r\n textSecondary: string\r\n textBubbleOutgoing: string\r\n textBubbleIncoming: string\r\n textMention: string\r\n textMentionTag: string\r\n textTimestamp: string\r\n textSystem: string\r\n textPlaceholder: string\r\n\r\n borderPrimary: string\r\n borderInput: string\r\n borderInputFocus: string\r\n borderMention: string\r\n\r\n colorSending: string\r\n colorSent: string\r\n colorDelivered: string\r\n colorRead: string\r\n colorFailed: string\r\n colorLink: string\r\n\r\n shadowPanel: string\r\n shadowMention: string\r\n\r\n avatarBg: string\r\n avatarText: string\r\n\r\n btnPrimaryBg: string\r\n btnPrimaryText: string\r\n btnPrimaryHover: string\r\n\r\n scrollbarThumb: string\r\n scrollbarTrack: string\r\n\r\n bgToolbar: string\r\n borderToolbar: string\r\n toolbarIconColor: string\r\n toolbarIconHover: string\r\n toolbarVoiceActive: string\r\n}\r\n\r\nexport const lightTokens: ThemeTokens = {\r\n bgPrimary: 'var(--ld-bg-surface)',\r\n bgSecondary: 'var(--ld-bg-surface-soft)',\r\n bgBubbleOutgoing: 'var(--ld-primary-default)',\r\n bgBubbleIncoming: 'var(--ld-bg-surface-soft)',\r\n bgInput: 'var(--ld-bg-surface)',\r\n bgMention: 'var(--ld-bg-surface)',\r\n bgMentionHover: 'var(--ld-primary-50)',\r\n bgMentionActive: 'var(--ld-primary-100)',\r\n bgLoadMore: 'var(--ld-bg-surface-soft)',\r\n bgSystemMessage: 'var(--ld-bg-surface-soft)',\r\n bgDropOverlay:\r\n 'color-mix(in srgb, var(--ld-primary-default) 10%, var(--ld-bg-surface))',\r\n bgDangerSoft:\r\n 'color-mix(in srgb, var(--ld-danger-default) 12%, var(--ld-bg-surface))',\r\n\r\n textPrimary: 'var(--ld-text-primary)',\r\n textSecondary: 'var(--ld-text-secondary)',\r\n textBubbleOutgoing: 'var(--ld-gray-50)',\r\n textBubbleIncoming: 'var(--ld-text-primary)',\r\n textMention: 'var(--ld-text-primary)',\r\n textMentionTag: 'var(--ld-primary-default)',\r\n textTimestamp: 'var(--ld-text-muted)',\r\n textSystem: 'var(--ld-text-secondary)',\r\n textPlaceholder: 'var(--ld-text-muted)',\r\n\r\n borderPrimary: 'var(--ld-border)',\r\n borderInput: 'var(--ld-gray-300)',\r\n borderInputFocus: 'var(--ld-primary-default)',\r\n borderMention: 'var(--ld-border)',\r\n\r\n colorSending: 'var(--ld-gray-400)',\r\n colorSent: 'var(--ld-gray-500)',\r\n colorDelivered: 'var(--ld-primary-default)',\r\n colorRead: 'var(--ld-success-default)',\r\n colorFailed: 'var(--ld-danger-default)',\r\n colorLink: 'var(--ld-primary-default)',\r\n\r\n shadowPanel: 'none',\r\n shadowMention: 'none',\r\n\r\n avatarBg: 'var(--ld-primary-default)',\r\n avatarText: 'var(--ld-gray-50)',\r\n\r\n btnPrimaryBg: 'var(--ld-primary-default)',\r\n btnPrimaryText: 'var(--ld-gray-50)',\r\n btnPrimaryHover: 'var(--ld-primary-hover)',\r\n\r\n scrollbarThumb: 'var(--ld-gray-300)',\r\n scrollbarTrack: 'var(--ld-gray-100)',\r\n\r\n bgToolbar: 'var(--ld-bg-surface-soft)',\r\n borderToolbar: 'var(--ld-border)',\r\n toolbarIconColor: 'var(--ld-text-secondary)',\r\n toolbarIconHover: 'var(--ld-primary-default)',\r\n toolbarVoiceActive: 'var(--ld-danger-default)',\r\n}\r\n\r\nexport const darkTokens: ThemeTokens = {\r\n bgPrimary: 'var(--ld-gray-900)',\r\n bgSecondary: 'var(--ld-gray-800)',\r\n bgBubbleOutgoing: 'var(--ld-primary-default)',\r\n bgBubbleIncoming: 'var(--ld-gray-800)',\r\n bgInput: 'var(--ld-gray-900)',\r\n bgMention: 'var(--ld-gray-900)',\r\n bgMentionHover: 'var(--ld-gray-800)',\r\n bgMentionActive: 'var(--ld-primary-900)',\r\n bgLoadMore: 'var(--ld-gray-800)',\r\n bgSystemMessage: 'var(--ld-gray-800)',\r\n bgDropOverlay:\r\n 'color-mix(in srgb, var(--ld-primary-default) 16%, var(--ld-gray-900))',\r\n bgDangerSoft:\r\n 'color-mix(in srgb, var(--ld-danger-default) 18%, var(--ld-gray-900))',\r\n\r\n textPrimary: 'var(--ld-gray-50)',\r\n textSecondary: 'var(--ld-gray-300)',\r\n textBubbleOutgoing: 'var(--ld-gray-50)',\r\n textBubbleIncoming: 'var(--ld-gray-50)',\r\n textMention: 'var(--ld-gray-50)',\r\n textMentionTag: 'var(--ld-primary-300)',\r\n textTimestamp: 'var(--ld-gray-400)',\r\n textSystem: 'var(--ld-gray-300)',\r\n textPlaceholder: 'var(--ld-gray-500)',\r\n\r\n borderPrimary: 'var(--ld-gray-700)',\r\n borderInput: 'var(--ld-gray-700)',\r\n borderInputFocus: 'var(--ld-primary-default)',\r\n borderMention: 'var(--ld-gray-700)',\r\n\r\n colorSending: 'var(--ld-gray-500)',\r\n colorSent: 'var(--ld-gray-400)',\r\n colorDelivered: 'var(--ld-primary-300)',\r\n colorRead: 'var(--ld-success-default)',\r\n colorFailed: 'var(--ld-danger-default)',\r\n colorLink: 'var(--ld-primary-300)',\r\n\r\n shadowPanel: 'none',\r\n shadowMention: 'none',\r\n\r\n avatarBg: 'var(--ld-primary-default)',\r\n avatarText: 'var(--ld-gray-50)',\r\n\r\n btnPrimaryBg: 'var(--ld-primary-default)',\r\n btnPrimaryText: 'var(--ld-gray-50)',\r\n btnPrimaryHover: 'var(--ld-primary-hover)',\r\n\r\n scrollbarThumb: 'var(--ld-gray-700)',\r\n scrollbarTrack: 'var(--ld-gray-800)',\r\n\r\n bgToolbar: 'var(--ld-gray-800)',\r\n borderToolbar: 'var(--ld-gray-700)',\r\n toolbarIconColor: 'var(--ld-gray-300)',\r\n toolbarIconHover: 'var(--ld-primary-300)',\r\n toolbarVoiceActive: 'var(--ld-danger-default)',\r\n}\r\n"],"mappings":";;;;;;;;;;;AAgEO,MAAM,cAA2B;CACtC,WAAW;CACX,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,SAAS;CACT,WAAW;CACX,gBAAgB;CAChB,iBAAiB;CACjB,YAAY;CACZ,iBAAiB;CACjB,eACE;CACF,cACE;CAEF,aAAa;CACb,eAAe;CACf,oBAAoB;CACpB,oBAAoB;CACpB,aAAa;CACb,gBAAgB;CAChB,eAAe;CACf,YAAY;CACZ,iBAAiB;CAEjB,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB,eAAe;CAEf,cAAc;CACd,WAAW;CACX,gBAAgB;CAChB,WAAW;CACX,aAAa;CACb,WAAW;CAEX,aAAa;CACb,eAAe;CAEf,UAAU;CACV,YAAY;CAEZ,cAAc;CACd,gBAAgB;CAChB,iBAAiB;CAEjB,gBAAgB;CAChB,gBAAgB;CAEhB,WAAW;CACX,eAAe;CACf,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;AACtB;AAEO,MAAM,aAA0B;CACrC,WAAW;CACX,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,SAAS;CACT,WAAW;CACX,gBAAgB;CAChB,iBAAiB;CACjB,YAAY;CACZ,iBAAiB;CACjB,eACE;CACF,cACE;CAEF,aAAa;CACb,eAAe;CACf,oBAAoB;CACpB,oBAAoB;CACpB,aAAa;CACb,gBAAgB;CAChB,eAAe;CACf,YAAY;CACZ,iBAAiB;CAEjB,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB,eAAe;CAEf,cAAc;CACd,WAAW;CACX,gBAAgB;CAChB,WAAW;CACX,aAAa;CACb,WAAW;CAEX,aAAa;CACb,eAAe;CAEf,UAAU;CACV,YAAY;CAEZ,cAAc;CACd,gBAAgB;CAChB,iBAAiB;CAEjB,gBAAgB;CAChB,gBAAgB;CAEhB,WAAW;CACX,eAAe;CACf,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;AACtB"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @file tokens.ts
3
+ * @description tokens 模块
4
+ */
5
+ /**
6
+ * ThemeTokens interface
7
+ */
8
+ export interface ThemeTokens {
9
+ bgPrimary: string;
10
+ bgSecondary: string;
11
+ bgBubbleOutgoing: string;
12
+ bgBubbleIncoming: string;
13
+ bgInput: string;
14
+ bgMention: string;
15
+ bgMentionHover: string;
16
+ bgMentionActive: string;
17
+ bgLoadMore: string;
18
+ bgSystemMessage: string;
19
+ bgDropOverlay: string;
20
+ bgDangerSoft: string;
21
+ textPrimary: string;
22
+ textSecondary: string;
23
+ textBubbleOutgoing: string;
24
+ textBubbleIncoming: string;
25
+ textMention: string;
26
+ textMentionTag: string;
27
+ textTimestamp: string;
28
+ textSystem: string;
29
+ textPlaceholder: string;
30
+ borderPrimary: string;
31
+ borderInput: string;
32
+ borderInputFocus: string;
33
+ borderMention: string;
34
+ colorSending: string;
35
+ colorSent: string;
36
+ colorDelivered: string;
37
+ colorRead: string;
38
+ colorFailed: string;
39
+ colorLink: string;
40
+ shadowPanel: string;
41
+ shadowMention: string;
42
+ avatarBg: string;
43
+ avatarText: string;
44
+ btnPrimaryBg: string;
45
+ btnPrimaryText: string;
46
+ btnPrimaryHover: string;
47
+ scrollbarThumb: string;
48
+ scrollbarTrack: string;
49
+ bgToolbar: string;
50
+ borderToolbar: string;
51
+ toolbarIconColor: string;
52
+ toolbarIconHover: string;
53
+ toolbarVoiceActive: string;
54
+ }
55
+ export declare const lightTokens: ThemeTokens;
56
+ export declare const darkTokens: ThemeTokens;
@@ -54,4 +54,3 @@ export interface ThemeTokens {
54
54
  }
55
55
  export declare const lightTokens: ThemeTokens;
56
56
  export declare const darkTokens: ThemeTokens;
57
- //# sourceMappingURL=tokens.d.ts.map
@@ -1,11 +1,16 @@
1
1
  /*!
2
2
  * ***********************************
3
- * @composy/chat-core v0.0.1 *
3
+ * @composy/chat-core v0.0.2 *
4
4
  * Built with rollup *
5
- * Build time: 2024-08-17 11:30:32 *
5
+ * Build time: 2024-10-12 21:52:18 *
6
6
  * Build mode: production *
7
7
  * Minified: No *
8
8
  * ***********************************
9
9
  */
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
11
- /*! End of @composy/chat-core | Powered by @composy/builder */
11
+ //#region src/types/index.ts
12
+ const CHAT_MESSAGE_SCHEMA_VERSION = 1;
13
+ //#endregion
14
+ exports.CHAT_MESSAGE_SCHEMA_VERSION = CHAT_MESSAGE_SCHEMA_VERSION;
15
+ /*! End of @composy/chat-core | Powered by @composy/builder */
16
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/types/index.ts"],"sourcesContent":["/**\r\n * @composy/chat-core types\r\n */\r\n\r\n// ==================== 消息相关 ====================\r\n\r\n/** 消息类型 */\r\nexport type MessageType = 'text' | 'image' | 'file' | 'system' | 'custom'\r\n\r\n/** 工具栏按钮类型 */\r\nexport type ToolbarAction = 'image' | 'file' | 'voice'\r\n\r\n/** 消息发送状态 */\r\nexport type MessageStatus = 'sending' | 'sent' | 'delivered' | 'read' | 'failed'\r\n\r\n/** 消息方向 */\r\nexport type MessageDirection = 'incoming' | 'outgoing'\r\n\r\n/** 用户信息 */\r\nexport interface ChatUser {\r\n /** 用户 ID */\r\n id: string\r\n /** 昵称 */\r\n nickname: string\r\n /** 头像 URL */\r\n avatar?: string\r\n}\r\n\r\n/** @提及项 */\r\nexport interface MentionItem {\r\n /** 用户 ID */\r\n id: string\r\n /** 显示名称 */\r\n name: string\r\n /** 头像 */\r\n avatar?: string\r\n}\r\n\r\n/** 文件附件 */\r\nexport interface FileAttachment {\r\n /** 文件名 */\r\n name: string\r\n /** 文件大小(字节) */\r\n size: number\r\n /** 文件 URL */\r\n url: string\r\n /** MIME 类型 */\r\n mimeType?: string\r\n}\r\n\r\n/** 图片附件 */\r\nexport interface ImageAttachment {\r\n /** 图片 URL */\r\n url: string\r\n /** 缩略图 URL */\r\n thumbUrl?: string\r\n /** 宽度 */\r\n width?: number\r\n /** 高度 */\r\n height?: number\r\n}\r\n\r\n/** 结构化消息内容块。未知块应在上游归一化时降级,不得直接执行 HTML。 */\r\nexport type ChatContentBlock =\r\n | { type: 'text'; text: string }\r\n | { type: 'mention'; id: string; label: string }\r\n | { type: 'link'; url: string; label?: string }\r\n | { type: 'code'; code: string; language?: string }\r\n | {\r\n type: 'image'\r\n src: string\r\n alt?: string\r\n width?: number\r\n height?: number\r\n }\r\n | {\r\n type: 'file'\r\n url: string\r\n name: string\r\n size?: number\r\n mimeType?: string\r\n }\r\n | { type: 'break' }\r\n | {\r\n type: 'custom'\r\n kind: string\r\n data: Record<string, unknown>\r\n fallback?: string\r\n }\r\n\r\n/** 当前消息 schema 版本。 */\r\nexport const CHAT_MESSAGE_SCHEMA_VERSION = 1\r\n\r\n/** 聊天消息 */\r\nexport interface ChatMessage {\r\n /** 消息唯一 ID */\r\n id: string\r\n /** 消息类型 */\r\n type: MessageType\r\n /** 消息方向 */\r\n direction: MessageDirection\r\n /** 发送者信息 */\r\n sender: ChatUser\r\n /** 文本内容(text 类型) */\r\n content?: string\r\n /** 图片附件(image 类型) */\r\n image?: ImageAttachment\r\n /** 文件附件(file 类型) */\r\n file?: FileAttachment\r\n /** 自定义数据(custom 类型) */\r\n customData?: Record<string, unknown>\r\n /** 自定义 HTML(custom 类型);渲染时会过滤脚本、事件属性、样式和不安全 URL,仅保留受支持的基础标签 */\r\n customHtml?: string\r\n /** 提及列表 */\r\n mentions?: MentionItem[]\r\n /** 发送状态 */\r\n status?: MessageStatus\r\n /** 消息时间戳(毫秒) */\r\n timestamp: number\r\n /** 是否已撤回 */\r\n revoked?: boolean\r\n /** 是否正在流式输出(AI 风格) */\r\n streaming?: boolean\r\n /** 规范化内容块;未提供时使用 content/image/file 等兼容字段。 */\r\n contentBlocks?: ChatContentBlock[]\r\n /** 消息 schema 版本,便于跨 transport 与持久化迁移。 */\r\n schemaVersion?: number\r\n /** 会话标识,用于多会话 transport 复用。 */\r\n conversationId?: string\r\n /** 客户端幂等标识,服务端 ack 与离线 outbox 使用。 */\r\n clientMessageId?: string\r\n /** 服务端单调序号,用于乱序与重复消息过滤。 */\r\n sequence?: number\r\n /** 服务端同步游标。 */\r\n cursor?: string\r\n}\r\n\r\n// ==================== 主题相关 ====================\r\n\r\n/** 主题模式 */\r\nexport type ThemeMode = 'light' | 'dark' | 'auto'\r\n\r\n// ==================== 工具栏配置 ====================\r\n\r\n/** 工具栏配置 */\r\nexport interface ToolbarConfig {\r\n /** 启用图片上传按钮 */\r\n image?: boolean\r\n /** 启用文件上传按钮 */\r\n file?: boolean\r\n /** 启用语音输入按钮 */\r\n voice?: boolean\r\n}\r\n\r\n// ==================== 配置相关 ====================\r\n\r\n/** 聊天组件配置 */\r\nexport interface ChatConfig {\r\n /** 挂载容器 */\r\n container: HTMLElement | string\r\n /** 当前用户 ID(用于判断消息方向) */\r\n currentUserId: string\r\n /** 初始消息列表 */\r\n messages?: ChatMessage[]\r\n /** 主题模式 */\r\n theme?: ThemeMode\r\n /** 是否显示头像 */\r\n showAvatar?: boolean\r\n /** 是否显示昵称 */\r\n showNickname?: boolean\r\n /** 是否显示时间 */\r\n showTimestamp?: boolean\r\n /** 时间分组间隔(毫秒),默认 300000 (5分钟) */\r\n timeGroupInterval?: number\r\n /** 是否显示消息状态 */\r\n showStatus?: boolean\r\n /** 是否显示输入框 */\r\n showInput?: boolean\r\n /** 输入框占位文本 */\r\n inputPlaceholder?: string\r\n /** 是否启用 @提及 */\r\n enableMention?: boolean\r\n /** @提及候选人列表 */\r\n mentionMembers?: MentionItem[]\r\n /** 是否支持加载更多 */\r\n enableLoadMore?: boolean\r\n /** 加载更多文本 */\r\n loadMoreText?: string\r\n /** CSS class 前缀 */\r\n classPrefix?: string\r\n enterToSend?: boolean\r\n clearInputOnSend?: boolean\r\n maxInputLength?: number\r\n voiceLang?: string\r\n /** 日期格式化函数 */\r\n formatTime?: (timestamp: number) => string\r\n /** 是否启用工具栏 */\r\n enableToolbar?: boolean\r\n /** 工具栏配置 */\r\n toolbarConfig?: ToolbarConfig\r\n /** 可选消息 transport;不配置时 Core 仍保持纯本地模式。 */\r\n transport?: import('../core/transport').ChatTransport\r\n /** transport 使用的会话标识。 */\r\n conversationId?: string\r\n /** 创建实例后自动连接 transport。 */\r\n autoConnect?: boolean\r\n /** transport 初始同步游标。 */\r\n transportCursor?: string\r\n /** 可选离线 outbox,用于保存发送中的消息并在连接恢复后重试。 */\r\n outbox?: import('../core/outbox').ChatOutbox\r\n\r\n // 回调\r\n /** 发送消息回调 */\r\n onSend?: (content: string, mentions: MentionItem[]) => void\r\n /** 加载更多回调 */\r\n onLoadMore?: () => void | Promise<void>\r\n /** 消息点击回调 */\r\n onMessageClick?: (message: ChatMessage) => void\r\n /** @提及选择回调 */\r\n onMentionSelect?: (member: MentionItem) => void\r\n /** 图片上传回调(接收 File 列表) */\r\n onImageUpload?: (files: File[]) => void\r\n /** 文件上传回调(接收 File 列表) */\r\n onFileUpload?: (files: File[]) => void\r\n /** 粘贴回调(接收文件列表) */\r\n onPaste?: (files: File[]) => void\r\n /** 拖放回调(接收文件列表) */\r\n onDrop?: (files: File[]) => void\r\n /** 语音开始回调 */\r\n onVoiceStart?: () => void\r\n /** 语音结束回调(接收识别文本) */\r\n onVoiceEnd?: (transcript: string) => void\r\n onVoiceUnsupported?: () => void\r\n onVoiceError?: (error: unknown) => void\r\n onInputChange?: (content: string) => void\r\n}\r\n\r\n/** 聊天实例 */\r\nexport interface ChatInstance {\r\n /** 添加消息 */\r\n addMessage: (message: ChatMessage) => void\r\n /** 批量添加消息(在列表顶部插入,用于加载更多) */\r\n prependMessages: (messages: ChatMessage[]) => void\r\n /** 更新消息 */\r\n updateMessage: (id: string, updates: Partial<ChatMessage>) => void\r\n /** 删除消息 */\r\n removeMessage: (id: string) => void\r\n /** 设置完整消息列表 */\r\n setMessages: (messages: ChatMessage[]) => void\r\n /** 清空所有消息 */\r\n clearMessages: () => void\r\n /** 滚动到底部 */\r\n scrollToBottom: (smooth?: boolean) => void\r\n /** 设置主题 */\r\n setTheme: (theme: ThemeMode) => void\r\n /** 更新 @提及候选人 */\r\n setMentionMembers: (members: MentionItem[]) => void\r\n /** 设置加载更多状态 */\r\n setLoadingMore: (loading: boolean) => void\r\n /** 聚焦输入框 */\r\n focusInput: () => void\r\n /** 设置输入框内容 */\r\n setInputContent: (content: string) => void\r\n /** 获取输入框内容 */\r\n getInputContent: () => string\r\n clearInput: () => void\r\n isAtBottom: (threshold?: number) => boolean\r\n /** 监听事件 */\r\n on: (event: string, handler: (...args: unknown[]) => void) => () => void\r\n /** 获取所有消息 */\r\n getMessages: () => ChatMessage[]\r\n /** 追加流式消息内容(AI 模式);可用 generation/sequence 防止旧 chunk 覆盖新流。 */\r\n appendMessageContent: (\r\n id: string,\r\n chunk: string,\r\n options?: { generation?: string; sequence?: number }\r\n ) => boolean\r\n /** 完成流式消息 */\r\n finishStreaming: (id: string, generation?: string) => boolean\r\n /** 开始一个新的流式 generation,旧 generation 的 chunk 会被丢弃。 */\r\n beginStreaming: (id: string, generation?: string) => string | null\r\n /** 取消当前流式 generation。 */\r\n cancelStreaming: (id: string, generation?: string) => boolean\r\n /** 合并远端消息,按消息 ID/clientMessageId 去重并按 sequence 忽略旧版本。 */\r\n mergeMessage: (\r\n message: ChatMessage,\r\n sequence?: number\r\n ) => 'added' | 'updated' | 'ignored'\r\n /** 连接 transport。 */\r\n connectTransport: (signal?: AbortSignal) => Promise<void>\r\n /** 断开 transport。 */\r\n disconnectTransport: () => Promise<void>\r\n /** 获取当前 transport 状态。 */\r\n getTransportStatus: () => import('../core/transport').ChatTransportStatus\r\n /** 通过 transport 发送消息,失败时保留 failed 状态并交给 outbox 重试。 */\r\n sendMessage: (\r\n message: ChatMessage,\r\n options?: { signal?: AbortSignal }\r\n ) => Promise<import('../core/transport').ChatTransportAck | void>\r\n /** 刷新离线 outbox。 */\r\n flushOutbox: (\r\n options?: import('../core/outbox').ChatOutboxFlushOptions\r\n ) => Promise<import('../core/outbox').ChatOutboxFlushResult>\r\n getMessage: (id: string) => ChatMessage | undefined\r\n /** 销毁实例 */\r\n destroy: () => void\r\n}\r\n"],"mappings":";;;;;;;;;;;AA2FO,MAAM,8BAA8B"}