@robot-admin/naive-ui-components 0.20.0 → 0.21.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 (178) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +5 -5
  3. package/README_EN.md +5 -5
  4. package/SECURITY.md +39 -0
  5. package/dist/C_AntV.css +31 -31
  6. package/dist/C_AntV2.cjs +1 -1
  7. package/dist/C_AntV2.js +1 -1
  8. package/dist/C_Chat.css +90 -90
  9. package/dist/C_Chat2.cjs +1 -1
  10. package/dist/C_Chat2.js +1 -1
  11. package/dist/C_CollapsePanel2.cjs +1 -1
  12. package/dist/C_CollapsePanel2.js +1 -1
  13. package/dist/C_Draggable.css +53 -53
  14. package/dist/C_Draggable2.cjs +1 -1
  15. package/dist/C_Draggable2.js +1 -1
  16. package/dist/C_FilePreview.css +98 -98
  17. package/dist/C_FilePreview.d.cts +2 -2
  18. package/dist/C_FilePreview.d.ts +2 -2
  19. package/dist/C_FilePreview2.cjs +1 -1
  20. package/dist/C_FilePreview2.js +1 -1
  21. package/dist/C_Form.base.css +9 -9
  22. package/dist/C_Form.css +9 -9
  23. package/dist/C_FormSearch.css +52 -52
  24. package/dist/C_FormSearch2.cjs +1 -1
  25. package/dist/C_FormSearch2.js +1 -1
  26. package/dist/C_Language.css +2 -2
  27. package/dist/C_Language2.cjs +1 -1
  28. package/dist/C_Language2.js +1 -1
  29. package/dist/C_Login.css +79 -79
  30. package/dist/C_Login2.cjs +1 -1
  31. package/dist/C_Login2.js +1 -1
  32. package/dist/C_Menu.css +1 -1
  33. package/dist/C_Menu.d.cts +2 -2
  34. package/dist/C_Menu.d.ts +2 -2
  35. package/dist/C_Menu2.cjs +1 -1
  36. package/dist/C_Menu2.js +1 -1
  37. package/dist/C_NotificationCenter.css +124 -124
  38. package/dist/C_NotificationCenter.d.cts +2 -2
  39. package/dist/C_NotificationCenter.d.ts +2 -2
  40. package/dist/C_NotificationCenter2.cjs +1 -1
  41. package/dist/C_NotificationCenter2.js +1 -1
  42. package/dist/C_Skeleton.css +2 -2
  43. package/dist/C_Skeleton2.cjs +1 -1
  44. package/dist/C_Skeleton2.js +1 -1
  45. package/dist/C_SplitPane.css +66 -66
  46. package/dist/C_SplitPane2.cjs +1 -1
  47. package/dist/C_SplitPane2.js +1 -1
  48. package/dist/C_Table.base.css +9 -9
  49. package/dist/C_Table.css +9 -9
  50. package/dist/C_Table.d.ts +1 -0
  51. package/dist/C_Theme2.cjs +1 -1
  52. package/dist/C_Theme2.js +1 -1
  53. package/dist/C_Timeline.css +46 -46
  54. package/dist/C_Timeline2.cjs +1 -1
  55. package/dist/C_Timeline2.js +1 -1
  56. package/dist/C_Transfer.css +26 -26
  57. package/dist/C_Transfer2.cjs +1 -1
  58. package/dist/C_Transfer2.js +1 -1
  59. package/dist/C_Tree.css +23 -23
  60. package/dist/C_Tree.d.ts +1 -0
  61. package/dist/C_Tree2.cjs +1 -1
  62. package/dist/C_Tree2.js +1 -1
  63. package/dist/C_Upload2.cjs +1 -1
  64. package/dist/C_Upload2.js +1 -1
  65. package/dist/C_VideoPlayer.d.cts +2 -2
  66. package/dist/C_VideoPlayer.d.ts +2 -2
  67. package/dist/C_VideoPlayer2.cjs +2 -2
  68. package/dist/C_VideoPlayer2.js +2 -2
  69. package/dist/C_WaterFall.css +31 -29
  70. package/dist/C_WaterFall2.cjs +1 -1
  71. package/dist/C_WaterFall2.js +1 -1
  72. package/dist/C_WorkFlow.css +111 -111
  73. package/dist/C_WorkFlow2.cjs +1 -1
  74. package/dist/C_WorkFlow2.js +1 -1
  75. package/dist/config.cjs +1 -0
  76. package/dist/config.d.cts +8 -0
  77. package/dist/config.d.ts +8 -0
  78. package/dist/config.js +1 -0
  79. package/dist/constants3.d.cts +34 -11
  80. package/dist/constants3.d.ts +34 -11
  81. package/dist/constants4.d.cts +20 -9
  82. package/dist/constants4.d.ts +20 -9
  83. package/dist/constants5.d.cts +22 -18
  84. package/dist/constants5.d.ts +22 -18
  85. package/dist/data.d.cts +8 -8
  86. package/dist/data.d.ts +8 -8
  87. package/dist/dateRange.d.cts +2 -0
  88. package/dist/dateRange.d.ts +2 -0
  89. package/dist/feedback.cjs +1 -1
  90. package/dist/feedback.js +1 -1
  91. package/dist/helpers.cjs +1 -1
  92. package/dist/helpers.js +1 -1
  93. package/dist/index.cjs +1 -1
  94. package/dist/index.d.cts +7 -6
  95. package/dist/index.d.ts +8 -6
  96. package/dist/index.js +1 -1
  97. package/dist/index.vue.d.cts +6 -6
  98. package/dist/index.vue.d.ts +6 -6
  99. package/dist/index10.vue.d.cts +3 -3
  100. package/dist/index10.vue.d.ts +5 -5
  101. package/dist/index11.vue.d.cts +5 -5
  102. package/dist/index11.vue.d.ts +2 -2
  103. package/dist/index12.vue.d.cts +2 -2
  104. package/dist/index12.vue.d.ts +5 -5
  105. package/dist/index13.vue.d.cts +5 -5
  106. package/dist/index13.vue.d.ts +6 -6
  107. package/dist/index14.vue.d.cts +6 -6
  108. package/dist/index14.vue.d.ts +0 -1
  109. package/dist/index15.vue.d.cts +0 -1
  110. package/dist/index15.vue.d.ts +1 -1
  111. package/dist/index16.vue.d.cts +1 -1
  112. package/dist/index17.vue.d.ts +2 -2
  113. package/dist/index18.vue.d.cts +2 -2
  114. package/dist/index18.vue.d.ts +44 -40
  115. package/dist/index19.vue.d.cts +1 -1
  116. package/dist/index19.vue.d.ts +1 -1
  117. package/dist/index2.vue.d.cts +3 -3
  118. package/dist/index2.vue.d.ts +3 -3
  119. package/dist/index20.vue.d.cts +1 -1
  120. package/dist/index20.vue.d.ts +1 -1
  121. package/dist/index21.vue.d.cts +1 -1
  122. package/dist/index21.vue.d.ts +1 -1
  123. package/dist/index22.vue.d.cts +2 -2
  124. package/dist/index22.vue.d.ts +2 -2
  125. package/dist/index25.vue.d.cts +5 -6
  126. package/dist/index25.vue.d.ts +5 -6
  127. package/dist/index26.vue.d.cts +3 -3
  128. package/dist/index26.vue.d.ts +3 -3
  129. package/dist/index3.vue.d.cts +5 -5
  130. package/dist/index3.vue.d.ts +5 -5
  131. package/dist/index4.vue.d.cts +44 -40
  132. package/dist/index6.vue.d.ts +2 -4
  133. package/dist/index7.vue.d.cts +2 -4
  134. package/dist/index9.vue.d.ts +3 -3
  135. package/dist/mapUtils.d.cts +1 -1
  136. package/dist/mapUtils.d.ts +1 -1
  137. package/dist/style.css +846 -844
  138. package/dist/useCalendarEvents.d.cts +1 -1
  139. package/dist/useCalendarEvents.d.ts +1 -1
  140. package/dist/useCollapsePanel.d.cts +1 -1
  141. package/dist/useCollapsePanel.d.ts +1 -1
  142. package/dist/useComponentLocale.cjs +1 -1
  143. package/dist/useComponentLocale.js +1 -1
  144. package/dist/useCropperCore.d.cts +8 -8
  145. package/dist/useCropperCore.d.ts +8 -8
  146. package/dist/useDraggableLayout.d.cts +1 -0
  147. package/dist/useDraggableLayout.d.ts +1 -0
  148. package/dist/useDynamicFormState.d.cts +2 -2
  149. package/dist/useDynamicFormState.d.ts +2 -2
  150. package/dist/useEdgeInteraction.d.cts +1 -1
  151. package/dist/useEdgeInteraction.d.ts +1 -1
  152. package/dist/useFullscreen.d.cts +41 -23
  153. package/dist/useFullscreen.d.ts +41 -23
  154. package/dist/useGlobalSearch.d.cts +1 -1
  155. package/dist/useGlobalSearch.d.ts +1 -1
  156. package/dist/useInfiniteScroll.d.cts +7 -5
  157. package/dist/useInfiniteScroll.d.ts +7 -5
  158. package/dist/useQRCode.d.cts +3 -3
  159. package/dist/useQRCode.d.ts +3 -3
  160. package/dist/useSignatureHistory.d.cts +5 -5
  161. package/dist/useSignatureHistory.d.ts +5 -5
  162. package/dist/useSplitResize.d.cts +10 -11
  163. package/dist/useSplitResize.d.ts +10 -11
  164. package/dist/useTableQuery.cjs +1 -1
  165. package/dist/useTableQuery.d.cts +12 -16
  166. package/dist/useTableQuery.d.ts +12 -16
  167. package/dist/useTableQuery.js +1 -1
  168. package/dist/useWorkflowValidation.d.cts +91 -83
  169. package/dist/useWorkflowValidation.d.ts +91 -83
  170. package/dist/verification.d.cts +4 -4
  171. package/dist/verification.d.ts +4 -4
  172. package/docs/architecture.en.md +3 -1
  173. package/docs/architecture.md +3 -1
  174. package/docs/guides/usage.en.md +16 -0
  175. package/docs/guides/usage.md +56 -0
  176. package/package.json +27 -10
  177. package/dist/context.cjs +0 -1
  178. package/dist/context.js +0 -1
package/dist/C_Chat.css CHANGED
@@ -65,14 +65,14 @@
65
65
  .transform[data-v-075758a0]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
66
66
  .px[data-v-075758a0]{padding-left:1rem;padding-right:1rem;}
67
67
 
68
- .c-chat__avatar[data-v-de62a9e6] {
68
+ .c-chat__avatar[data-v-66c19394] {
69
69
  width: var(--chat-avatar-size);
70
70
  height: var(--chat-avatar-size);
71
71
  border-radius: 50%;
72
72
  object-fit: cover;
73
73
  background: color-mix(in srgb, var(--c-border, var(--border-color, #e5e7eb)) 50%, transparent);
74
74
  }
75
- .c-chat__avatar-fallback[data-v-de62a9e6] {
75
+ .c-chat__avatar-fallback[data-v-66c19394] {
76
76
  width: var(--chat-avatar-size);
77
77
  height: var(--chat-avatar-size);
78
78
  border-radius: 50%;
@@ -84,7 +84,7 @@
84
84
  font-weight: 600;
85
85
  color: var(--c-text-1, var(--text-color-1, #262626));
86
86
  }
87
- .c-chat__contact[data-v-de62a9e6] {
87
+ .c-chat__contact[data-v-66c19394] {
88
88
  display: flex;
89
89
  align-items: center;
90
90
  gap: 10px;
@@ -92,17 +92,17 @@
92
92
  cursor: pointer;
93
93
  transition: background 0.15s;
94
94
  }
95
- .c-chat__contact[data-v-de62a9e6]:hover {
95
+ .c-chat__contact[data-v-66c19394]:hover {
96
96
  background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 6%, transparent);
97
97
  }
98
- .c-chat__contact.is-active[data-v-de62a9e6] {
98
+ .c-chat__contact.is-active[data-v-66c19394] {
99
99
  background: color-mix(in srgb, var(--c-primary, var(--primary-color, #2080f0)) 12%, transparent);
100
100
  }
101
- .c-chat__contact-avatar[data-v-de62a9e6] {
101
+ .c-chat__contact-avatar[data-v-66c19394] {
102
102
  position: relative;
103
103
  flex-shrink: 0;
104
104
  }
105
- .c-chat__online-dot[data-v-de62a9e6] {
105
+ .c-chat__online-dot[data-v-66c19394] {
106
106
  position: absolute;
107
107
  bottom: 0;
108
108
  right: 0;
@@ -112,24 +112,24 @@
112
112
  background: var(--chat-online-color);
113
113
  border: 2px solid var(--chat-sidebar-bg);
114
114
  }
115
- .c-chat__contact-info[data-v-de62a9e6] {
115
+ .c-chat__contact-info[data-v-66c19394] {
116
116
  flex: 1;
117
117
  min-width: 0;
118
118
  }
119
- .c-chat__contact-name[data-v-de62a9e6] {
119
+ .c-chat__contact-name[data-v-66c19394] {
120
120
  display: flex;
121
121
  align-items: center;
122
122
  justify-content: space-between;
123
123
  font-size: 13px;
124
124
  font-weight: 500;
125
125
  }
126
- .c-chat__contact-time[data-v-de62a9e6] {
126
+ .c-chat__contact-time[data-v-66c19394] {
127
127
  font-size: 11px;
128
128
  color: var(--chat-text-secondary);
129
129
  margin-left: 8px;
130
130
  flex-shrink: 0;
131
131
  }
132
- .c-chat__contact-last[data-v-de62a9e6] {
132
+ .c-chat__contact-last[data-v-66c19394] {
133
133
  font-size: 12px;
134
134
  color: var(--chat-text-secondary);
135
135
  white-space: nowrap;
@@ -137,7 +137,7 @@
137
137
  text-overflow: ellipsis;
138
138
  margin-top: 2px;
139
139
  }
140
- .c-chat__unread[data-v-de62a9e6] {
140
+ .c-chat__unread[data-v-66c19394] {
141
141
  min-width: 18px;
142
142
  height: 18px;
143
143
  padding: 0 5px;
@@ -151,7 +151,7 @@
151
151
  justify-content: center;
152
152
  flex-shrink: 0;
153
153
  }
154
- .c-chat__contact[data-v-de62a9e6] {
154
+ .c-chat__contact[data-v-66c19394] {
155
155
  width: 100%;
156
156
  border: 0;
157
157
  background: transparent;
@@ -160,33 +160,33 @@
160
160
  font: inherit;
161
161
  }
162
162
  @media (max-width: 640px) {
163
- .c-chat__contact-info[data-v-de62a9e6],
164
- .c-chat__unread[data-v-de62a9e6] {
163
+ .c-chat__contact-info[data-v-66c19394],
164
+ .c-chat__unread[data-v-66c19394] {
165
165
  display: none;
166
166
  }
167
- .c-chat__contact[data-v-de62a9e6] {
167
+ .c-chat__contact[data-v-66c19394] {
168
168
  justify-content: center;
169
169
  padding: 10px 8px;
170
170
  }
171
171
  }
172
172
 
173
173
  /* layer: default */
174
- .absolute[data-v-de62a9e6]{position:absolute;}
175
- .relative[data-v-de62a9e6]{position:relative;}
176
- .hidden[data-v-de62a9e6]{display:none;}
177
- .flex[data-v-de62a9e6]{display:flex;}
178
- .flex-shrink[data-v-de62a9e6]{flex-shrink:1;}
179
- .border[data-v-de62a9e6]{border-width:1px;}
180
- .transition[data-v-de62a9e6]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
174
+ .absolute[data-v-66c19394]{position:absolute;}
175
+ .relative[data-v-66c19394]{position:relative;}
176
+ .hidden[data-v-66c19394]{display:none;}
177
+ .flex[data-v-66c19394]{display:flex;}
178
+ .flex-shrink[data-v-66c19394]{flex-shrink:1;}
179
+ .border[data-v-66c19394]{border-width:1px;}
180
+ .transition[data-v-66c19394]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
181
181
 
182
- .c-chat__avatar[data-v-f86c73f0] {
182
+ .c-chat__avatar[data-v-47cd7e6f] {
183
183
  width: var(--chat-avatar-size);
184
184
  height: var(--chat-avatar-size);
185
185
  border-radius: 50%;
186
186
  object-fit: cover;
187
187
  background: color-mix(in srgb, var(--c-border, var(--border-color, #e5e7eb)) 50%, transparent);
188
188
  }
189
- .c-chat__avatar-fallback[data-v-f86c73f0] {
189
+ .c-chat__avatar-fallback[data-v-47cd7e6f] {
190
190
  width: var(--chat-avatar-size);
191
191
  height: var(--chat-avatar-size);
192
192
  border-radius: 50%;
@@ -200,60 +200,60 @@
200
200
  }
201
201
 
202
202
  /* ─── 消息气泡 ────────────────────────────────────────── */
203
- .c-chat__msg[data-v-f86c73f0] {
203
+ .c-chat__msg[data-v-47cd7e6f] {
204
204
  display: flex;
205
205
  gap: 8px;
206
206
  max-width: 75%;
207
207
  }
208
- .c-chat__msg.is-self[data-v-f86c73f0] {
208
+ .c-chat__msg.is-self[data-v-47cd7e6f] {
209
209
  margin-left: auto;
210
210
  flex-direction: row-reverse;
211
211
  }
212
- .c-chat__msg.is-system[data-v-f86c73f0] {
212
+ .c-chat__msg.is-system[data-v-47cd7e6f] {
213
213
  max-width: 100%;
214
214
  justify-content: center;
215
215
  align-self: center;
216
216
  }
217
- .c-chat__msg-avatar[data-v-f86c73f0] {
217
+ .c-chat__msg-avatar[data-v-47cd7e6f] {
218
218
  flex-shrink: 0;
219
219
  margin-top: 2px;
220
220
  }
221
- .c-chat__msg-body[data-v-f86c73f0] {
221
+ .c-chat__msg-body[data-v-47cd7e6f] {
222
222
  display: flex;
223
223
  flex-direction: column;
224
224
  }
225
- .c-chat__msg-username[data-v-f86c73f0] {
225
+ .c-chat__msg-username[data-v-47cd7e6f] {
226
226
  font-size: 12px;
227
227
  color: var(--chat-text-secondary);
228
228
  margin-bottom: 2px;
229
229
  }
230
- .is-self .c-chat__msg-username[data-v-f86c73f0] {
230
+ .is-self .c-chat__msg-username[data-v-47cd7e6f] {
231
231
  text-align: right;
232
232
  }
233
- .c-chat__bubble[data-v-f86c73f0] {
233
+ .c-chat__bubble[data-v-47cd7e6f] {
234
234
  padding: 10px 14px;
235
235
  border-radius: 16px;
236
236
  line-height: 1.5;
237
237
  word-break: break-word;
238
238
  white-space: pre-wrap;
239
239
  }
240
- .is-other .c-chat__bubble[data-v-f86c73f0] {
240
+ .is-other .c-chat__bubble[data-v-47cd7e6f] {
241
241
  background: var(--chat-bubble-other);
242
242
  border: 1px solid var(--chat-border);
243
243
  border-top-left-radius: 4px;
244
244
  }
245
- .is-self .c-chat__bubble[data-v-f86c73f0] {
245
+ .is-self .c-chat__bubble[data-v-47cd7e6f] {
246
246
  background: var(--chat-bubble-self);
247
247
  color: var(--chat-text-self);
248
248
  border-top-right-radius: 4px;
249
249
  }
250
- .is-system .c-chat__bubble[data-v-f86c73f0] {
250
+ .is-system .c-chat__bubble[data-v-47cd7e6f] {
251
251
  background: var(--chat-bubble-system);
252
252
  color: var(--chat-text-secondary);
253
253
  font-size: 12px;
254
254
  padding: 4px 12px;
255
255
  }
256
- .c-chat__msg-image-button[data-v-f86c73f0] {
256
+ .c-chat__msg-image-button[data-v-47cd7e6f] {
257
257
  display: inline-flex;
258
258
  align-self: flex-start;
259
259
  padding: 0;
@@ -261,20 +261,20 @@
261
261
  background: none;
262
262
  cursor: pointer;
263
263
  }
264
- .c-chat__msg-image[data-v-f86c73f0] {
264
+ .c-chat__msg-image[data-v-47cd7e6f] {
265
265
  max-width: 240px;
266
266
  max-height: 180px;
267
267
  border-radius: 12px;
268
268
  cursor: pointer;
269
269
  object-fit: cover;
270
270
  }
271
- .is-self .c-chat__msg-image[data-v-f86c73f0] {
271
+ .is-self .c-chat__msg-image[data-v-47cd7e6f] {
272
272
  border-top-right-radius: 4px;
273
273
  }
274
- .is-other .c-chat__msg-image[data-v-f86c73f0] {
274
+ .is-other .c-chat__msg-image[data-v-47cd7e6f] {
275
275
  border-top-left-radius: 4px;
276
276
  }
277
- .c-chat__msg-file[data-v-f86c73f0] {
277
+ .c-chat__msg-file[data-v-47cd7e6f] {
278
278
  display: flex;
279
279
  align-items: center;
280
280
  gap: 8px;
@@ -285,90 +285,90 @@
285
285
  text-align: left;
286
286
  border: 0;
287
287
  }
288
- .is-other .c-chat__msg-file[data-v-f86c73f0] {
288
+ .is-other .c-chat__msg-file[data-v-47cd7e6f] {
289
289
  background: var(--chat-bubble-other);
290
290
  border: 1px solid var(--chat-border);
291
291
  border-top-left-radius: 4px;
292
292
  }
293
- .is-self .c-chat__msg-file[data-v-f86c73f0] {
293
+ .is-self .c-chat__msg-file[data-v-47cd7e6f] {
294
294
  background: var(--chat-bubble-self);
295
295
  color: var(--chat-text-self);
296
296
  border-top-right-radius: 4px;
297
297
  }
298
- .c-chat__file-info[data-v-f86c73f0] {
298
+ .c-chat__file-info[data-v-47cd7e6f] {
299
299
  display: flex;
300
300
  flex-direction: column;
301
301
  min-width: 0;
302
302
  }
303
- .c-chat__file-name[data-v-f86c73f0] {
303
+ .c-chat__file-name[data-v-47cd7e6f] {
304
304
  font-size: 13px;
305
305
  font-weight: 500;
306
306
  white-space: nowrap;
307
307
  overflow: hidden;
308
308
  text-overflow: ellipsis;
309
309
  }
310
- .c-chat__file-size[data-v-f86c73f0] {
310
+ .c-chat__file-size[data-v-47cd7e6f] {
311
311
  font-size: 11px;
312
312
  opacity: 0.6;
313
313
  }
314
- .c-chat__msg-time[data-v-f86c73f0] {
314
+ .c-chat__msg-time[data-v-47cd7e6f] {
315
315
  font-size: 11px;
316
316
  color: var(--chat-text-secondary);
317
317
  margin-top: 4px;
318
318
  }
319
- .is-self .c-chat__msg-time[data-v-f86c73f0] {
319
+ .is-self .c-chat__msg-time[data-v-47cd7e6f] {
320
320
  text-align: right;
321
321
  }
322
- .c-chat__msg-status[data-v-f86c73f0] {
322
+ .c-chat__msg-status[data-v-47cd7e6f] {
323
323
  font-size: 11px;
324
324
  margin-top: 2px;
325
325
  text-align: right;
326
326
  }
327
- .c-chat__msg-status[data-v-f86c73f0]:is(button) {
327
+ .c-chat__msg-status[data-v-47cd7e6f]:is(button) {
328
328
  align-self: flex-end;
329
329
  padding: 0;
330
330
  border: 0;
331
331
  background: none;
332
332
  font-family: inherit;
333
333
  }
334
- .c-chat__msg-status.is-sending[data-v-f86c73f0] {
334
+ .c-chat__msg-status.is-sending[data-v-47cd7e6f] {
335
335
  color: var(--chat-text-secondary);
336
336
  }
337
- .c-chat__msg-status.is-failed[data-v-f86c73f0] {
337
+ .c-chat__msg-status.is-failed[data-v-47cd7e6f] {
338
338
  color: var(--chat-failed-color);
339
339
  cursor: pointer;
340
340
  }
341
341
 
342
342
  /* ─── 时间分割线 ──────────────────────────────────────── */
343
- .c-chat__time-divider[data-v-f86c73f0] {
343
+ .c-chat__time-divider[data-v-47cd7e6f] {
344
344
  text-align: center;
345
345
  font-size: 11px;
346
346
  color: var(--chat-text-secondary);
347
347
  padding: 4px 0;
348
348
  }
349
- .c-chat__message-row[data-v-f86c73f0] {
349
+ .c-chat__message-row[data-v-47cd7e6f] {
350
350
  flex-shrink: 0;
351
351
  padding-bottom: 12px;
352
352
  }
353
- .c-chat__time-divider[data-v-f86c73f0] {
353
+ .c-chat__time-divider[data-v-47cd7e6f] {
354
354
  margin-bottom: 12px;
355
355
  }
356
- .c-chat__msg-body[data-v-f86c73f0] {
356
+ .c-chat__msg-body[data-v-47cd7e6f] {
357
357
  min-width: 0;
358
358
  }
359
- .c-chat__msg-image[data-v-f86c73f0] {
359
+ .c-chat__msg-image[data-v-47cd7e6f] {
360
360
  max-width: min(240px, 100%);
361
361
  }
362
362
 
363
363
  /* layer: default */
364
- .hidden[data-v-f86c73f0]{display:none;}
365
- .flex[data-v-f86c73f0]{display:flex;}
366
- .inline-flex[data-v-f86c73f0]{display:inline-flex;}
367
- .flex-shrink[data-v-f86c73f0]{flex-shrink:1;}
368
- .border[data-v-f86c73f0]{border-width:1px;}
364
+ .hidden[data-v-47cd7e6f]{display:none;}
365
+ .flex[data-v-47cd7e6f]{display:flex;}
366
+ .inline-flex[data-v-47cd7e6f]{display:inline-flex;}
367
+ .flex-shrink[data-v-47cd7e6f]{flex-shrink:1;}
368
+ .border[data-v-47cd7e6f]{border-width:1px;}
369
369
 
370
370
  /* ─── CSS 变量(基于项目主题变量,自动适配明暗) ───────────────────────── */
371
- .c-chat[data-v-4e22902a] {
371
+ .c-chat[data-v-96dfa0d2] {
372
372
  --chat-bg: var(--c-bg-card, var(--card-color, #fff));
373
373
  --chat-sidebar-bg: var(--c-bg-body, var(--body-color, #f8fafc));
374
374
  --chat-sidebar-width: 280px;
@@ -410,7 +410,7 @@
410
410
  }
411
411
 
412
412
  /* ─── 联系人侧栏 ──────────────────────────────────────── */
413
- .c-chat__sidebar[data-v-4e22902a] {
413
+ .c-chat__sidebar[data-v-96dfa0d2] {
414
414
  display: flex;
415
415
  flex-direction: column;
416
416
  width: var(--chat-sidebar-width);
@@ -419,7 +419,7 @@
419
419
  border-right: 1px solid var(--chat-border);
420
420
  box-shadow: 2px 0 8px var(--chat-shadow-light);
421
421
  }
422
- .c-chat__sidebar-header[data-v-4e22902a] {
422
+ .c-chat__sidebar-header[data-v-96dfa0d2] {
423
423
  display: flex;
424
424
  align-items: center;
425
425
  gap: 8px;
@@ -429,30 +429,30 @@
429
429
  font-weight: 600;
430
430
  font-size: 15px;
431
431
  }
432
- .c-chat__search[data-v-4e22902a] {
432
+ .c-chat__search[data-v-96dfa0d2] {
433
433
  padding: 8px 12px;
434
434
  }
435
- .c-chat__contact-list[data-v-4e22902a],[data-v-4e22902a] .c-chat__contact-list.v-vl {
435
+ .c-chat__contact-list[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__contact-list.v-vl {
436
436
  flex: 1;
437
437
  overflow-y: auto;
438
438
  overscroll-behavior: contain;
439
439
  }
440
- .c-chat__contact-list[data-v-4e22902a]::-webkit-scrollbar,[data-v-4e22902a] .c-chat__contact-list.v-vl::-webkit-scrollbar {
440
+ .c-chat__contact-list[data-v-96dfa0d2]::-webkit-scrollbar,[data-v-96dfa0d2] .c-chat__contact-list.v-vl::-webkit-scrollbar {
441
441
  width: 4px;
442
442
  }
443
- .c-chat__contact-list[data-v-4e22902a]::-webkit-scrollbar-thumb,[data-v-4e22902a] .c-chat__contact-list.v-vl::-webkit-scrollbar-thumb {
443
+ .c-chat__contact-list[data-v-96dfa0d2]::-webkit-scrollbar-thumb,[data-v-96dfa0d2] .c-chat__contact-list.v-vl::-webkit-scrollbar-thumb {
444
444
  background: var(--chat-scrollbar-thumb);
445
445
  border-radius: 2px;
446
446
  }
447
447
 
448
448
  /* ─── 主聊天区域 ──────────────────────────────────────── */
449
- .c-chat__main[data-v-4e22902a] {
449
+ .c-chat__main[data-v-96dfa0d2] {
450
450
  flex: 1;
451
451
  display: flex;
452
452
  flex-direction: column;
453
453
  min-width: 0;
454
454
  }
455
- .c-chat__header[data-v-4e22902a] {
455
+ .c-chat__header[data-v-96dfa0d2] {
456
456
  display: flex;
457
457
  align-items: center;
458
458
  gap: 10px;
@@ -464,14 +464,14 @@
464
464
  font-weight: 600;
465
465
  font-size: 15px;
466
466
  }
467
- .c-chat__header-status[data-v-4e22902a] {
467
+ .c-chat__header-status[data-v-96dfa0d2] {
468
468
  font-size: 12px;
469
469
  font-weight: 400;
470
470
  color: var(--chat-text-secondary);
471
471
  }
472
472
 
473
473
  /* ─── 消息区域 ────────────────────────────────────────── */
474
- .c-chat__messages[data-v-4e22902a],[data-v-4e22902a] .c-chat__messages--virtual {
474
+ .c-chat__messages[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__messages--virtual {
475
475
  flex: 1;
476
476
  overflow-y: auto;
477
477
  overscroll-behavior: contain;
@@ -480,18 +480,18 @@
480
480
  flex-direction: column;
481
481
  background: color-mix(in srgb, var(--c-bg-body, var(--body-color, #f8fafc)) 50%, var(--c-bg-card, var(--card-color, #fff)));
482
482
  }
483
- .c-chat__messages[data-v-4e22902a]::-webkit-scrollbar,[data-v-4e22902a] .c-chat__messages--virtual::-webkit-scrollbar {
483
+ .c-chat__messages[data-v-96dfa0d2]::-webkit-scrollbar,[data-v-96dfa0d2] .c-chat__messages--virtual::-webkit-scrollbar {
484
484
  width: 4px;
485
485
  }
486
- .c-chat__messages[data-v-4e22902a]::-webkit-scrollbar-thumb,[data-v-4e22902a] .c-chat__messages--virtual::-webkit-scrollbar-thumb {
486
+ .c-chat__messages[data-v-96dfa0d2]::-webkit-scrollbar-thumb,[data-v-96dfa0d2] .c-chat__messages--virtual::-webkit-scrollbar-thumb {
487
487
  background: var(--chat-scrollbar-thumb);
488
488
  border-radius: 2px;
489
489
  }
490
- .c-chat__load-more[data-v-4e22902a] {
490
+ .c-chat__load-more[data-v-96dfa0d2] {
491
491
  text-align: center;
492
492
  padding: 8px;
493
493
  }
494
- .c-chat__empty[data-v-4e22902a] {
494
+ .c-chat__empty[data-v-96dfa0d2] {
495
495
  flex: 1;
496
496
  display: flex;
497
497
  align-items: center;
@@ -501,7 +501,7 @@
501
501
  }
502
502
 
503
503
  /* ─── 输入区域 ────────────────────────────────────────── */
504
- .c-chat__input-area[data-v-4e22902a] {
504
+ .c-chat__input-area[data-v-96dfa0d2] {
505
505
  display: flex;
506
506
  align-items: center;
507
507
  gap: 8px;
@@ -510,21 +510,21 @@
510
510
  background: var(--chat-input-bg);
511
511
  border-top: 1px solid var(--chat-border);
512
512
  }
513
- .c-chat__input-actions[data-v-4e22902a] {
513
+ .c-chat__input-actions[data-v-96dfa0d2] {
514
514
  display: flex;
515
515
  gap: 4px;
516
516
  flex-shrink: 0;
517
517
  }
518
- .c-chat__input-wrap[data-v-4e22902a] {
518
+ .c-chat__input-wrap[data-v-96dfa0d2] {
519
519
  flex: 1;
520
520
  min-width: 0;
521
521
  }
522
- .c-chat__send-btn[data-v-4e22902a] {
522
+ .c-chat__send-btn[data-v-96dfa0d2] {
523
523
  flex-shrink: 0;
524
524
  }
525
525
 
526
526
  /* ─── 空态 ────────────────────────────────────────────── */
527
- .c-chat__no-chat[data-v-4e22902a] {
527
+ .c-chat__no-chat[data-v-96dfa0d2] {
528
528
  flex: 1;
529
529
  display: flex;
530
530
  flex-direction: column;
@@ -533,36 +533,36 @@
533
533
  gap: 12px;
534
534
  color: var(--chat-text-secondary);
535
535
  }
536
- .c-chat__no-chat-icon[data-v-4e22902a] {
536
+ .c-chat__no-chat-icon[data-v-96dfa0d2] {
537
537
  font-size: 48px;
538
538
  opacity: 0.3;
539
539
  }
540
540
 
541
541
  /* ─── 响应式 ──────────────────────────────────────────── */
542
542
  @media (max-width: 640px) {
543
- .c-chat[data-v-4e22902a] {
543
+ .c-chat[data-v-96dfa0d2] {
544
544
  --chat-sidebar-width: 72px;
545
545
  }
546
- .c-chat__search[data-v-4e22902a] {
546
+ .c-chat__search[data-v-96dfa0d2] {
547
547
  display: none;
548
548
  }
549
549
  }
550
- .c-chat__main[data-v-4e22902a] {
550
+ .c-chat__main[data-v-96dfa0d2] {
551
551
  min-height: 0;
552
552
  }
553
- .c-chat__messages[data-v-4e22902a],[data-v-4e22902a] .c-chat__messages--virtual {
553
+ .c-chat__messages[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__messages--virtual {
554
554
  min-height: 0;
555
555
  }
556
- .c-chat__messages--virtual[data-v-4e22902a],[data-v-4e22902a] .c-chat__messages--virtual {
556
+ .c-chat__messages--virtual[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__messages--virtual {
557
557
  display: block;
558
558
  padding: 0;
559
559
  overflow-anchor: none;
560
560
  }
561
- .c-chat__message-items[data-v-4e22902a] {
561
+ .c-chat__message-items[data-v-96dfa0d2] {
562
562
  flex: 1;
563
563
  display: flex;
564
564
  flex-direction: column;
565
565
  }
566
- .c-chat__contact-list[data-v-4e22902a],[data-v-4e22902a] .c-chat__contact-list.v-vl {
566
+ .c-chat__contact-list[data-v-96dfa0d2],[data-v-96dfa0d2] .c-chat__contact-list.v-vl {
567
567
  min-height: 0;
568
568
  }
package/dist/C_Chat2.cjs CHANGED
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`),i=require(`vueuc`);const a=[`data-message-id`],o={key:0,class:`c-chat__time-divider`},s={key:0,class:`c-chat__msg-avatar`},c=[`src`],l={key:1,class:`c-chat__avatar-fallback`},u={class:`c-chat__msg-body`},d={key:0,class:`c-chat__msg-username`},f={key:1,class:`c-chat__bubble`},p=[`aria-label`],m=[`src`,`alt`],h={class:`c-chat__file-info`},g={class:`c-chat__file-name`},_={key:0,class:`c-chat__file-size`},v={key:4,class:`c-chat__msg-time`},y={key:6,class:`c-chat__msg-status is-sending`},b=(0,n.defineComponent)({__name:`ChatMessageItem`,props:{msg:{},previous:{},selfAvatar:{},selfName:{},showTimestamp:{type:Boolean}},emits:[`image-preview`,`file-click`,`resend`],setup(t,{emit:r}){let i=t,b=r,x=(0,n.computed)(()=>!i.previous||new Date(i.msg.timestamp).getTime()-new Date(i.previous.timestamp).getTime()>3e5),S=e=>e.sender===`self`&&i.selfAvatar||e.avatar,C=e=>e.sender===`self`?i.selfName||e.username||`Me`:e.username||`未知`;function w(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function T(e){let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?w(e):`${t.getMonth()+1}/${t.getDate()} ${w(e)}`}function E(e){return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`}return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`c-chat__message-row`,"data-message-id":t.msg.id},[(0,n.createCommentVNode)(` 时间分割 `),x.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,o,(0,n.toDisplayString)(T(t.msg.timestamp)),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 消息条目 `),(0,n.createElementVNode)(`div`,{class:(0,n.normalizeClass)([`c-chat__msg`,`is-${t.msg.sender}`])},[(0,n.createCommentVNode)(` 头像 `),t.msg.sender===`system`?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,s,[S(t.msg)?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:S(t.msg),class:`c-chat__avatar`},null,8,c)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,l,(0,n.toDisplayString)(C(t.msg).charAt(0)),1))])),(0,n.createCommentVNode)(` 消息体 `),(0,n.createElementVNode)(`div`,u,[t.msg.sender===`other`&&t.msg.username?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,d,(0,n.toDisplayString)(t.msg.username),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 文本消息 `),t.msg.type===`text`||t.msg.type===`system`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,f,(0,n.toDisplayString)(t.msg.content),1)):t.msg.type===`image`?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:2},[(0,n.createCommentVNode)(` 图片消息 `),(0,n.createElementVNode)(`button`,{type:`button`,class:`c-chat__msg-image-button`,"aria-label":`预览${t.msg.username||`聊天`}的图片`,onClick:i[0]||=e=>b(`image-preview`,t.msg.content)},[(0,n.createElementVNode)(`img`,{src:t.msg.content,alt:t.msg.fileName||`聊天图片`,class:`c-chat__msg-image`},null,8,m)],8,p)],2112)):t.msg.type===`file`?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:3},[(0,n.createCommentVNode)(` 文件消息 `),(0,n.createElementVNode)(`button`,{type:`button`,class:`c-chat__msg-file`,onClick:i[1]||=e=>b(`file-click`,t.msg)},[(0,n.createVNode)(e.t,{name:`mdi:file-document-outline`,size:28}),(0,n.createElementVNode)(`div`,h,[(0,n.createElementVNode)(`span`,g,(0,n.toDisplayString)(t.msg.fileName||`文件`),1),t.msg.fileSize?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,_,(0,n.toDisplayString)(E(t.msg.fileSize)),1)):(0,n.createCommentVNode)(`v-if`,!0)])])],2112)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 时间戳 `),t.showTimestamp&&t.msg.sender!==`system`?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,v,(0,n.toDisplayString)(w(t.msg.timestamp)),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 发送状态 `),t.msg.sender===`self`&&t.msg.status===`failed`?((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:5,type:`button`,class:`c-chat__msg-status is-failed`,onClick:i[2]||=e=>b(`resend`,t.msg)},` 发送失败,点击重试 `)):t.msg.sender===`self`&&t.msg.status===`sending`?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,y,`发送中...`)):(0,n.createCommentVNode)(`v-if`,!0)])],2)],8,a))}});var x=t.t(b,[[`__scopeId`,`data-v-f86c73f0`]]);const S=[`data-contact-id`],C={class:`c-chat__contact-avatar`},w=[`src`,`alt`],T={key:1,class:`c-chat__avatar-fallback`},E={key:2,class:`c-chat__online-dot`},D={class:`c-chat__contact-info`},O={class:`c-chat__contact-name`},k={key:0,class:`c-chat__contact-time`},A={key:0,class:`c-chat__contact-last`},j={key:0,class:`c-chat__unread`},M=(0,n.defineComponent)({__name:`ChatContactItem`,props:{contact:{},active:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let r=t;function i(e){let t=new Date(e),n=Date.now()-t.getTime();if(n<6e4)return`刚刚`;if(n<36e5)return`${Math.floor(n/6e4)}分钟前`;let r=`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`;return n<864e5?r:`${t.getMonth()+1}/${t.getDate()} ${r}`}return(t,a)=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{type:`button`,class:(0,n.normalizeClass)([`c-chat__contact`,{"is-active":e.active}]),"data-contact-id":e.contact.id,onClick:a[0]||=t=>r(`select`,e.contact.id)},[(0,n.createElementVNode)(`div`,C,[e.contact.avatar?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.contact.avatar,alt:e.contact.name,class:`c-chat__avatar`},null,8,w)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,T,(0,n.toDisplayString)(e.contact.name.charAt(0)),1)),e.contact.online?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,E)):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createElementVNode)(`div`,D,[(0,n.createElementVNode)(`div`,O,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.contact.name),1),e.contact.lastTime?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,k,(0,n.toDisplayString)(i(e.contact.lastTime)),1)):(0,n.createCommentVNode)(`v-if`,!0)]),e.contact.lastMessage?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,A,(0,n.toDisplayString)(e.contact.lastMessage),1)):(0,n.createCommentVNode)(`v-if`,!0)]),e.contact.unread?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,j,(0,n.toDisplayString)(e.contact.unread>99?`99+`:e.contact.unread),1)):(0,n.createCommentVNode)(`v-if`,!0)],10,S))}});var N=t.t(M,[[`__scopeId`,`data-v-de62a9e6`]]);function P(e){let t=!1,r=0,i,a,o,s=!0,c=!1,l=!1,u=0,d=0,f,p=()=>e.virtualRef.value?.listElRef??e.normalRef.value,m=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=64,h=e=>Array.from(e.querySelectorAll(`[data-message-id]`));function g(){i!==void 0&&cancelAnimationFrame(i),i=void 0}function _(e,n){if(g(),typeof requestAnimationFrame>`u`){n();return}i=requestAnimationFrame(()=>{i=void 0,!t&&e===r&&n()})}function v(e){let i=++r;g(),(0,n.nextTick)(()=>{!t&&i===r&&e(i)})}function y(t){let n=e.virtualRef.value;n?n.scrollTo({top:t,debounce:!1}):e.normalRef.value&&(e.normalRef.value.scrollTop=t)}function b(){let t=e.virtualRef.value;t?t.scrollTo({position:`bottom`}):e.normalRef.value&&(e.normalRef.value.scrollTop=e.normalRef.value.scrollHeight)}function x(){s=!0,l=!1,c=!0,f=void 0,v(e=>{b(),_(e,()=>{b(),c=!1})})}function S(e){let{top:t}=e.getBoundingClientRect(),n=h(e).find(e=>e.getBoundingClientRect().bottom>t);return n?.dataset.messageId?{id:n.dataset.messageId,offset:n.getBoundingClientRect().top-t}:void 0}function C(e,t){let n=p();if(!n||!f)return;let r=h(n).find(e=>e.dataset.messageId===f?.id);if(r){let e=r.getBoundingClientRect().top-n.getBoundingClientRect().top;y(Math.max(0,n.scrollTop+e-f.offset))}t>0?_(e,()=>C(e,t-1)):f=void 0}function w(t){f=t,s=!1,c=!1,v(n=>{e.virtualRef.value?.scrollTo({key:t.id,debounce:!1}),C(n,3)})}function T(e,t){s=!1,c=!1,f=void 0,v(()=>{let n=p();n&&y(Math.max(0,e+n.scrollHeight-t))})}function E(){s=!1,c=!1,r++,g()}function D(){l=!0,f=void 0,E(),a!==void 0&&cancelAnimationFrame(a),a=requestAnimationFrame(()=>{if(a=void 0,t||!l)return;l=!1;let e=p();e&&!f&&(s=m(e))})}function O(e){return u>0&&(u!==e.scrollHeight||d!==e.clientHeight)}function k(e){let t=O(e);if(u=e.scrollHeight,d=e.clientHeight,!(c||f)){if(s&&t&&!l){x();return}l=!1,s=m(e)}}function A(){let t=p();t&&(k(t),t.scrollTop===0&&!e.loadingHistory.value&&e.onLoadMore())}function j(){if(!t)if(f){let e=r;_(e,()=>C(e,1))}else s&&x()}(0,n.watch)(()=>e.virtualRef.value?.itemsElRef??e.normalRef.value?.firstElementChild,e=>{if(o?.disconnect(),o=void 0,e&&typeof ResizeObserver<`u`){o=new ResizeObserver(j),o.observe(e);let t=p();t&&t!==e&&o.observe(t)}},{flush:`post`});let M=()=>{let t=e.messages.value;return[e.contactId.value,t.length,t[0]?.id,t[t.length-1]?.id,t[t.length-1]?.content,e.loadingHistory.value,e.virtual.value]},N=(t,n)=>t[1]>n[1]&&n[1]>0&&t[2]!==n[2]&&(t[3]===n[3]||e.messages.value.some(e=>e.id===n[2])),P=(e,t)=>e[1]>0&&t[1]>0&&e[2]!==t[2]&&e[3]!==t[3];function F(e,t,n){let r=e[6]||t[6]?S(n):void 0;r?w(r):T(n.scrollTop,n.scrollHeight)}let I=(e,t,n)=>P(e,t)||t[1]===0||!l&&(m(n)||s&&O(n));function L(e,t,n){I(e,t,n)?x():F(e,t,n)}return(0,n.watch)(M,(e,t)=>{let n=p();if(!t||e[0]!==t[0]||!n){x();return}N(e,t)||e[5]!==t[5]?F(e,t,n):e[6]===t[6]?I(e,t,n)?x():f||E():L(e,t,n)},{immediate:!0,flush:`pre`}),(0,n.onBeforeUnmount)(()=>{t=!0,r++,g(),a!==void 0&&cancelAnimationFrame(a),o?.disconnect()}),{scrollToBottom:x,handleMessagesScroll:A,handleScrollIntent:D}}const F={placeholder:`输入消息...`,showContacts:!0,showTimestamp:!0,showSendBtn:!0,loadingHistory:!1,title:`聊天`},I={class:`c-chat`},L={key:0,class:`c-chat__sidebar`},R={class:`c-chat__sidebar-header`},z={class:`c-chat__search`},B={key:1,class:`c-chat__contact-list`},V={key:1,class:`c-chat__main`},H={class:`c-chat__header`},U={key:0,class:`c-chat__header-status`},W={key:0,class:`c-chat__load-more`},G={class:`c-chat__message-items`},K={key:0,class:`c-chat__load-more`},q={key:1,class:`c-chat__empty`},J={class:`c-chat__input-area`},Y={class:`c-chat__input-actions`},X={class:`c-chat__input-wrap`},Z={class:`c-chat__main c-chat__no-chat`},Q=(0,n.defineComponent)({__name:`index`,props:{contacts:{default:()=>[]},messages:{default:()=>[]},currentContactId:{default:``},placeholder:{default:F.placeholder},showContacts:{type:Boolean,default:F.showContacts},showTimestamp:{type:Boolean,default:F.showTimestamp},selfAvatar:{default:``},selfName:{default:``},showSendBtn:{type:Boolean,default:F.showSendBtn},loadingHistory:{type:Boolean,default:F.loadingHistory},virtualScroll:{type:Boolean,default:!0},title:{default:F.title}},emits:[`send`,`select-contact`,`load-more`,`image-preview`,`file-click`,`file-upload`,`emoji-click`,`resend`],setup(t,{expose:a,emit:o}){let s=t,c=o,l=(0,n.computed)(()=>({...F,...s})),u=(0,n.ref)(``),d=(0,n.ref)(``),f=(0,n.ref)(null),p=(0,n.ref)(null),m=(0,n.computed)(()=>s.contacts??[]),h=(0,n.computed)(()=>s.messages??[]),g=(0,n.computed)(()=>s.currentContactId||m.value[0]?.id||``),_=(0,n.computed)(()=>m.value.find(e=>e.id===g.value)),v=(0,n.computed)(()=>{if(!d.value)return m.value;let e=d.value.toLowerCase();return m.value.filter(t=>t.name.toLowerCase().includes(e))}),y=(0,n.computed)(()=>s.virtualScroll&&h.value.length>=200),b=(0,n.computed)(()=>s.virtualScroll&&v.value.length>=100),S=e=>{c(`select-contact`,e)},C=e=>{if(e instanceof KeyboardEvent&&(e.isComposing||e.keyCode===229))return;e?.preventDefault();let t=u.value.trim();t&&(c(`send`,t),u.value=``)},{scrollToBottom:w,handleMessagesScroll:T,handleScrollIntent:E}=P({messages:h,contactId:g,virtual:y,loadingHistory:(0,n.computed)(()=>l.value.loadingHistory),normalRef:f,virtualRef:p,onLoadMore:()=>c(`load-more`)});return a({scrollToBottom:w}),(a,o)=>{let s=r.NInput,w=r.NSpin,D=r.NButton;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,I,[(0,n.createCommentVNode)(` ===== 联系人侧栏 ===== `),l.value.showContacts&&m.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`aside`,L,[(0,n.createElementVNode)(`div`,R,[(0,n.createVNode)(e.t,{name:`mdi:chat-outline`,size:20}),o[14]||=(0,n.createTextVNode)(` 会话 `,-1)]),(0,n.createCommentVNode)(` 搜索框 `),(0,n.createElementVNode)(`div`,z,[(0,n.createVNode)(s,{value:d.value,"onUpdate:value":o[0]||=e=>d.value=e,placeholder:`搜索联系人`,clearable:``,size:`small`},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`])]),b.value?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(i.VVirtualList),{key:0,class:`c-chat__contact-list`,items:v.value,"key-field":`id`,"item-size":56,"item-resizable":``},{default:(0,n.withCtx)(({index:e})=>[(0,n.createVNode)(N,{contact:v.value[e],active:v.value[e].id===g.value,onSelect:S},null,8,[`contact`,`active`])]),_:1},8,[`items`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,B,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(v.value,e=>((0,n.openBlock)(),(0,n.createBlock)(N,{key:e.id,contact:e,active:e.id===g.value,onSelect:S},null,8,[`contact`,`active`]))),128))]))])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` ===== 主聊天区域 ===== `),_.value||!l.value.showContacts?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,V,[(0,n.createCommentVNode)(` 顶栏 `),(0,n.createElementVNode)(`div`,H,[(0,n.renderSlot)(a.$slots,`header`,{},()=>[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(_.value?.name||l.value.title),1),_.value?.online?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,U,` 在线 `)):(0,n.createCommentVNode)(`v-if`,!0)],!0)]),y.value?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(i.VVirtualList),{key:g.value,ref_key:`virtualMessagesRef`,ref:p,class:`c-chat__messages c-chat__messages--virtual`,items:h.value,"key-field":`id`,"item-size":32,"item-resizable":``,"padding-top":16,"padding-bottom":16,"items-style":{paddingLeft:`20px`,paddingRight:`20px`},onScroll:(0,n.unref)(T),onWheel:(0,n.unref)(E),onPointerdown:(0,n.unref)(E),onKeydown:(0,n.unref)(E)},{default:(0,n.withCtx)(({index:e})=>[(0,n.createElementVNode)(`div`,null,[e===0&&l.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,W,[(0,n.createVNode)(w,{size:`small`})])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createVNode)(x,{msg:h.value[e],previous:h.value[e-1],"self-avatar":t.selfAvatar,"self-name":t.selfName,"show-timestamp":l.value.showTimestamp,onImagePreview:o[1]||=e=>c(`image-preview`,e),onFileClick:o[2]||=e=>c(`file-click`,e),onResend:o[3]||=e=>c(`resend`,e)},null,8,[`msg`,`previous`,`self-avatar`,`self-name`,`show-timestamp`])])]),_:1},8,[`items`,`onScroll`,`onWheel`,`onPointerdown`,`onKeydown`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:1,ref_key:`messagesRef`,ref:f,class:`c-chat__messages`,onScroll:o[7]||=(...e)=>(0,n.unref)(T)&&(0,n.unref)(T)(...e),onWheel:o[8]||=(...e)=>(0,n.unref)(E)&&(0,n.unref)(E)(...e),onPointerdown:o[9]||=(...e)=>(0,n.unref)(E)&&(0,n.unref)(E)(...e),onKeydown:o[10]||=(...e)=>(0,n.unref)(E)&&(0,n.unref)(E)(...e)},[(0,n.createElementVNode)(`div`,G,[l.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,K,[(0,n.createVNode)(w,{size:`small`})])):(0,n.createCommentVNode)(`v-if`,!0),!h.value.length&&!l.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,q,`暂无消息,发送第一条吧`)):(0,n.createCommentVNode)(`v-if`,!0),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(h.value,(e,r)=>((0,n.openBlock)(),(0,n.createBlock)(x,{key:e.id,msg:e,previous:h.value[r-1],"self-avatar":t.selfAvatar,"self-name":t.selfName,"show-timestamp":l.value.showTimestamp,onImagePreview:o[4]||=e=>c(`image-preview`,e),onFileClick:o[5]||=e=>c(`file-click`,e),onResend:o[6]||=e=>c(`resend`,e)},null,8,[`msg`,`previous`,`self-avatar`,`self-name`,`show-timestamp`]))),128))])],544)),(0,n.createCommentVNode)(` 输入区域 `),(0,n.createElementVNode)(`div`,J,[(0,n.createElementVNode)(`div`,Y,[(0,n.renderSlot)(a.$slots,`input-actions`,{},()=>[(0,n.createVNode)(D,{quaternary:``,circle:``,size:`small`,onClick:o[11]||=e=>c(`emoji-click`)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:emoticon-happy-outline`,size:18})]),_:1}),(0,n.createVNode)(D,{quaternary:``,circle:``,size:`small`,onClick:o[12]||=e=>c(`file-upload`)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:paperclip`,size:18})]),_:1})],!0)]),(0,n.createElementVNode)(`div`,X,[(0,n.createVNode)(s,{value:u.value,"onUpdate:value":o[13]||=e=>u.value=e,placeholder:l.value.placeholder,type:`textarea`,autosize:{minRows:1,maxRows:4},onKeydown:(0,n.withKeys)((0,n.withModifiers)(C,[`exact`]),[`enter`])},null,8,[`value`,`placeholder`,`onKeydown`])]),l.value.showSendBtn?((0,n.openBlock)(),(0,n.createBlock)(D,{key:0,type:`primary`,disabled:!u.value.trim(),class:`c-chat__send-btn`,onClick:C},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:send`,size:16})]),_:1},8,[`disabled`])):(0,n.createCommentVNode)(`v-if`,!0)])])):((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:2},[(0,n.createCommentVNode)(` ===== 未选中联系人空态 ===== `),(0,n.createElementVNode)(`div`,Z,[(0,n.createVNode)(e.t,{name:`mdi:chat-processing-outline`,size:48,class:`c-chat__no-chat-icon`}),o[15]||=(0,n.createElementVNode)(`span`,null,`选择一个会话开始聊天`,-1)])],2112))])}}});var $=t.t(Q,[[`__scopeId`,`data-v-4e22902a`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return $}});
1
+ require(`./chunk.cjs`);const e=require(`./useComponentLocale.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`vueuc`);const o=[`data-message-id`],s={key:0,class:`c-chat__time-divider`},c={key:0,class:`c-chat__msg-avatar`},l=[`src`],u={key:1,class:`c-chat__avatar-fallback`},d={class:`c-chat__msg-body`},f={key:0,class:`c-chat__msg-username`},p={key:1,class:`c-chat__bubble`},m=[`aria-label`],h=[`src`,`alt`],g={class:`c-chat__file-info`},_={class:`c-chat__file-name`},v={key:0,class:`c-chat__file-size`},y={key:4,class:`c-chat__msg-time`},b={key:6,class:`c-chat__msg-status is-sending`},x=(0,r.defineComponent)({__name:`ChatMessageItem`,props:{msg:{},previous:{},selfAvatar:{},selfName:{},showTimestamp:{type:Boolean}},emits:[`image-preview`,`file-click`,`resend`],setup(n,{emit:i}){let{t:a}=e.t(),x=n,S=i,C=(0,r.computed)(()=>!x.previous||new Date(x.msg.timestamp).getTime()-new Date(x.previous.timestamp).getTime()>3e5),w=e=>e.sender===`self`&&x.selfAvatar||e.avatar,T=e=>e.sender===`self`?x.selfName||e.username||a(`chat.self`):e.username||a(`common.unknown`);function E(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function D(e){let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?E(e):`${t.getMonth()+1}/${t.getDate()} ${E(e)}`}function O(e){return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`}return(e,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{class:`c-chat__message-row`,"data-message-id":n.msg.id},[(0,r.createCommentVNode)(` 时间分割 `),C.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,s,(0,r.toDisplayString)(D(n.msg.timestamp)),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 消息条目 `),(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`c-chat__msg`,`is-${n.msg.sender}`])},[(0,r.createCommentVNode)(` 头像 `),n.msg.sender===`system`?(0,r.createCommentVNode)(`v-if`,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,c,[w(n.msg)?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:w(n.msg),class:`c-chat__avatar`},null,8,l)):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,u,(0,r.toDisplayString)(T(n.msg).charAt(0)),1))])),(0,r.createCommentVNode)(` 消息体 `),(0,r.createElementVNode)(`div`,d,[n.msg.sender===`other`&&n.msg.username?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,f,(0,r.toDisplayString)(n.msg.username),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 文本消息 `),n.msg.type===`text`||n.msg.type===`system`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,p,(0,r.toDisplayString)(n.msg.content),1)):n.msg.type===`image`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 图片消息 `),(0,r.createElementVNode)(`button`,{type:`button`,class:`c-chat__msg-image-button`,"aria-label":(0,r.unref)(a)(`chat.imagePreview`,{name:n.msg.username||(0,r.unref)(a)(`chat.title`)}),onClick:i[0]||=e=>S(`image-preview`,n.msg.content)},[(0,r.createElementVNode)(`img`,{src:n.msg.content,alt:n.msg.fileName||(0,r.unref)(a)(`chat.image`),class:`c-chat__msg-image`},null,8,h)],8,m)],2112)):n.msg.type===`file`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:3},[(0,r.createCommentVNode)(` 文件消息 `),(0,r.createElementVNode)(`button`,{type:`button`,class:`c-chat__msg-file`,onClick:i[1]||=e=>S(`file-click`,n.msg)},[(0,r.createVNode)(t.t,{name:`mdi:file-document-outline`,size:28}),(0,r.createElementVNode)(`div`,g,[(0,r.createElementVNode)(`span`,_,(0,r.toDisplayString)(n.msg.fileName||(0,r.unref)(a)(`chat.file`)),1),n.msg.fileSize?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,v,(0,r.toDisplayString)(O(n.msg.fileSize)),1)):(0,r.createCommentVNode)(`v-if`,!0)])])],2112)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 时间戳 `),n.showTimestamp&&n.msg.sender!==`system`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,y,(0,r.toDisplayString)(E(n.msg.timestamp)),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 发送状态 `),n.msg.sender===`self`&&n.msg.status===`failed`?((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:5,type:`button`,class:`c-chat__msg-status is-failed`,onClick:i[2]||=e=>S(`resend`,n.msg)},(0,r.toDisplayString)((0,r.unref)(a)(`chat.failed`)),1)):n.msg.sender===`self`&&n.msg.status===`sending`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,b,(0,r.toDisplayString)((0,r.unref)(a)(`chat.sending`)),1)):(0,r.createCommentVNode)(`v-if`,!0)])],2)],8,o))}});var S=n.t(x,[[`__scopeId`,`data-v-47cd7e6f`]]);const C=[`data-contact-id`],w={class:`c-chat__contact-avatar`},T=[`src`,`alt`],E={key:1,class:`c-chat__avatar-fallback`},D={key:2,class:`c-chat__online-dot`},O={class:`c-chat__contact-info`},k={class:`c-chat__contact-name`},A={key:0,class:`c-chat__contact-time`},j={key:0,class:`c-chat__contact-last`},M={key:0,class:`c-chat__unread`},N=(0,r.defineComponent)({__name:`ChatContactItem`,props:{contact:{},active:{type:Boolean}},emits:[`select`],setup(t,{emit:n}){let{t:i}=e.t(),a=n;function o(e){let t=new Date(e),n=Date.now()-t.getTime();if(n<6e4)return i(`time.now`);if(n<36e5)return i(`time.minutes`,{count:Math.floor(n/6e4)});let r=`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`;return n<864e5?r:`${t.getMonth()+1}/${t.getDate()} ${r}`}return(e,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{type:`button`,class:(0,r.normalizeClass)([`c-chat__contact`,{"is-active":t.active}]),"data-contact-id":t.contact.id,onClick:n[0]||=e=>a(`select`,t.contact.id)},[(0,r.createElementVNode)(`div`,w,[t.contact.avatar?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:t.contact.avatar,alt:t.contact.name,class:`c-chat__avatar`},null,8,T)):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,E,(0,r.toDisplayString)(t.contact.name.charAt(0)),1)),t.contact.online?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,D)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createElementVNode)(`div`,O,[(0,r.createElementVNode)(`div`,k,[(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(t.contact.name),1),t.contact.lastTime?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,A,(0,r.toDisplayString)(o(t.contact.lastTime)),1)):(0,r.createCommentVNode)(`v-if`,!0)]),t.contact.lastMessage?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,j,(0,r.toDisplayString)(t.contact.lastMessage),1)):(0,r.createCommentVNode)(`v-if`,!0)]),t.contact.unread?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,M,(0,r.toDisplayString)(t.contact.unread>99?`99+`:t.contact.unread),1)):(0,r.createCommentVNode)(`v-if`,!0)],10,C))}});var P=n.t(N,[[`__scopeId`,`data-v-66c19394`]]);function F(e){let t=!1,n=0,i,a,o,s=!0,c=!1,l=!1,u=0,d=0,f,p=()=>e.virtualRef.value?.listElRef??e.normalRef.value,m=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=64,h=e=>Array.from(e.querySelectorAll(`[data-message-id]`));function g(){i!==void 0&&cancelAnimationFrame(i),i=void 0}function _(e,r){if(g(),typeof requestAnimationFrame>`u`){r();return}i=requestAnimationFrame(()=>{i=void 0,!t&&e===n&&r()})}function v(e){let i=++n;g(),(0,r.nextTick)(()=>{!t&&i===n&&e(i)})}function y(t){let n=e.virtualRef.value;n?n.scrollTo({top:t,debounce:!1}):e.normalRef.value&&(e.normalRef.value.scrollTop=t)}function b(){let t=e.virtualRef.value;t?t.scrollTo({position:`bottom`}):e.normalRef.value&&(e.normalRef.value.scrollTop=e.normalRef.value.scrollHeight)}function x(){s=!0,l=!1,c=!0,f=void 0,v(e=>{b(),_(e,()=>{b(),c=!1})})}function S(e){let{top:t}=e.getBoundingClientRect(),n=h(e).find(e=>e.getBoundingClientRect().bottom>t);return n?.dataset.messageId?{id:n.dataset.messageId,offset:n.getBoundingClientRect().top-t}:void 0}function C(e,t){let n=p();if(!n||!f)return;let r=h(n).find(e=>e.dataset.messageId===f?.id);if(r){let e=r.getBoundingClientRect().top-n.getBoundingClientRect().top;y(Math.max(0,n.scrollTop+e-f.offset))}t>0?_(e,()=>C(e,t-1)):f=void 0}function w(t){f=t,s=!1,c=!1,v(n=>{e.virtualRef.value?.scrollTo({key:t.id,debounce:!1}),C(n,3)})}function T(e,t){s=!1,c=!1,f=void 0,v(()=>{let n=p();n&&y(Math.max(0,e+n.scrollHeight-t))})}function E(){s=!1,c=!1,n++,g()}function D(){l=!0,f=void 0,E(),a!==void 0&&cancelAnimationFrame(a),a=requestAnimationFrame(()=>{if(a=void 0,t||!l)return;l=!1;let e=p();e&&!f&&(s=m(e))})}function O(e){return u>0&&(u!==e.scrollHeight||d!==e.clientHeight)}function k(e){let t=O(e);if(u=e.scrollHeight,d=e.clientHeight,!(c||f)){if(s&&t&&!l){x();return}l=!1,s=m(e)}}function A(){let t=p();t&&(k(t),t.scrollTop===0&&!e.loadingHistory.value&&e.onLoadMore())}function j(){if(!t)if(f){let e=n;_(e,()=>C(e,1))}else s&&x()}(0,r.watch)(()=>e.virtualRef.value?.itemsElRef??e.normalRef.value?.firstElementChild,e=>{if(o?.disconnect(),o=void 0,e&&typeof ResizeObserver<`u`){o=new ResizeObserver(j),o.observe(e);let t=p();t&&t!==e&&o.observe(t)}},{flush:`post`});let M=()=>{let t=e.messages.value;return[e.contactId.value,t.length,t[0]?.id,t[t.length-1]?.id,t[t.length-1]?.content,e.loadingHistory.value,e.virtual.value]},N=(t,n)=>t[1]>n[1]&&n[1]>0&&t[2]!==n[2]&&(t[3]===n[3]||e.messages.value.some(e=>e.id===n[2])),P=(e,t)=>e[1]>0&&t[1]>0&&e[2]!==t[2]&&e[3]!==t[3];function F(e,t,n){let r=e[6]||t[6]?S(n):void 0;r?w(r):T(n.scrollTop,n.scrollHeight)}let I=(e,t,n)=>P(e,t)||t[1]===0||!l&&(m(n)||s&&O(n));function L(e,t,n){I(e,t,n)?x():F(e,t,n)}return(0,r.watch)(M,(e,t)=>{let n=p();if(!t||e[0]!==t[0]||!n){x();return}N(e,t)||e[5]!==t[5]?F(e,t,n):e[6]===t[6]?I(e,t,n)?x():f||E():L(e,t,n)},{immediate:!0,flush:`pre`}),(0,r.onBeforeUnmount)(()=>{t=!0,n++,g(),a!==void 0&&cancelAnimationFrame(a),o?.disconnect()}),{scrollToBottom:x,handleMessagesScroll:A,handleScrollIntent:D}}const I={placeholder:`输入消息...`,showContacts:!0,showTimestamp:!0,showSendBtn:!0,loadingHistory:!1,title:`聊天`},L={class:`c-chat`},R={key:0,class:`c-chat__sidebar`},z={class:`c-chat__sidebar-header`},B={class:`c-chat__search`},V={key:1,class:`c-chat__contact-list`},H={key:1,class:`c-chat__main`},U={class:`c-chat__header`},W={key:0,class:`c-chat__header-status`},G={key:0,class:`c-chat__load-more`},K={class:`c-chat__message-items`},q={key:0,class:`c-chat__load-more`},J={key:1,class:`c-chat__empty`},Y={class:`c-chat__input-area`},X={class:`c-chat__input-actions`},Z={class:`c-chat__input-wrap`},Q={class:`c-chat__main c-chat__no-chat`},$=(0,r.defineComponent)({__name:`index`,props:{contacts:{default:()=>[]},messages:{default:()=>[]},currentContactId:{default:``},placeholder:{},showContacts:{type:Boolean,default:I.showContacts},showTimestamp:{type:Boolean,default:I.showTimestamp},selfAvatar:{default:``},selfName:{default:``},showSendBtn:{type:Boolean,default:I.showSendBtn},loadingHistory:{type:Boolean,default:I.loadingHistory},virtualScroll:{type:Boolean,default:!0},title:{}},emits:[`send`,`select-contact`,`load-more`,`image-preview`,`file-click`,`file-upload`,`emoji-click`,`resend`],setup(n,{expose:o,emit:s}){let{t:c}=e.t(),l=n,u=s,d=(0,r.computed)(()=>({...I,...l,placeholder:l.placeholder??c(`chat.placeholder`),title:l.title??c(`chat.title`)})),f=(0,r.ref)(``),p=(0,r.ref)(``),m=(0,r.ref)(null),h=(0,r.ref)(null),g=(0,r.computed)(()=>l.contacts??[]),_=(0,r.computed)(()=>l.messages??[]),v=(0,r.computed)(()=>l.currentContactId||g.value[0]?.id||``),y=new Map;(0,r.watch)(v,(e,t)=>{let n=f.value,r=y.get(e)??``;for(y.delete(e),y.delete(t),n&&(l.contacts?.some(e=>e.id===t)||!l.showContacts)&&y.set(t,n);y.size>50;)y.delete(y.keys().next().value);f.value=r},{flush:`sync`}),(0,r.watch)(()=>l.contacts?.map(e=>e.id),e=>{if(!l.showContacts)return;let t=new Set(e);t.has(v.value)||(f.value=``);for(let e of y.keys())t.has(e)||y.delete(e)});let b=(0,r.computed)(()=>g.value.find(e=>e.id===v.value)),x=(0,r.computed)(()=>{if(!p.value)return g.value;let e=p.value.toLowerCase();return g.value.filter(t=>t.name.toLowerCase().includes(e))}),C=(0,r.computed)(()=>l.virtualScroll&&_.value.length>=200),w=(0,r.computed)(()=>l.virtualScroll&&x.value.length>=100),T=e=>{u(`select-contact`,e)},E=e=>{if(e instanceof KeyboardEvent&&(e.isComposing||e.keyCode===229))return;e?.preventDefault();let t=f.value.trim();t&&(u(`send`,t),f.value=``)},{scrollToBottom:D,handleMessagesScroll:O,handleScrollIntent:k}=F({messages:_,contactId:v,virtual:C,loadingHistory:(0,r.computed)(()=>d.value.loadingHistory),normalRef:m,virtualRef:h,onLoadMore:()=>u(`load-more`)});return o({scrollToBottom:D}),(e,o)=>{let s=i.NInput,l=i.NSpin,y=i.NButton;return(0,r.openBlock)(),(0,r.createElementBlock)(`div`,L,[(0,r.createCommentVNode)(` ===== 联系人侧栏 ===== `),d.value.showContacts&&g.value.length?((0,r.openBlock)(),(0,r.createElementBlock)(`aside`,R,[(0,r.createElementVNode)(`div`,z,[(0,r.createVNode)(t.t,{name:`mdi:chat-outline`,size:20}),(0,r.createTextVNode)(` `+(0,r.toDisplayString)((0,r.unref)(c)(`chat.sessions`)),1)]),(0,r.createCommentVNode)(` 搜索框 `),(0,r.createElementVNode)(`div`,B,[(0,r.createVNode)(s,{value:p.value,"onUpdate:value":o[0]||=e=>p.value=e,placeholder:(0,r.unref)(c)(`chat.search`),clearable:``,size:`small`},{prefix:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`,`placeholder`])]),w.value?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(a.VVirtualList),{key:0,class:`c-chat__contact-list`,items:x.value,"key-field":`id`,"item-size":56,"item-resizable":``},{default:(0,r.withCtx)(({index:e})=>[(0,r.createVNode)(P,{contact:x.value[e],active:x.value[e].id===v.value,onSelect:T},null,8,[`contact`,`active`])]),_:1},8,[`items`])):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(x.value,e=>((0,r.openBlock)(),(0,r.createBlock)(P,{key:e.id,contact:e,active:e.id===v.value,onSelect:T},null,8,[`contact`,`active`]))),128))]))])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` ===== 主聊天区域 ===== `),b.value||!d.value.showContacts?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,H,[(0,r.createCommentVNode)(` 顶栏 `),(0,r.createElementVNode)(`div`,U,[(0,r.renderSlot)(e.$slots,`header`,{},()=>[(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(b.value?.name||d.value.title),1),b.value?.online?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,W,(0,r.toDisplayString)((0,r.unref)(c)(`chat.online`)),1)):(0,r.createCommentVNode)(`v-if`,!0)],!0)]),C.value?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(a.VVirtualList),{key:v.value,ref_key:`virtualMessagesRef`,ref:h,class:`c-chat__messages c-chat__messages--virtual`,items:_.value,"key-field":`id`,"item-size":32,"item-resizable":``,"padding-top":16,"padding-bottom":16,"items-style":{paddingLeft:`20px`,paddingRight:`20px`},onScroll:(0,r.unref)(O),onWheel:(0,r.unref)(k),onPointerdown:(0,r.unref)(k),onKeydown:(0,r.unref)(k)},{default:(0,r.withCtx)(({index:e})=>[(0,r.createElementVNode)(`div`,null,[e===0&&d.value.loadingHistory?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[(0,r.createVNode)(l,{size:`small`})])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)(S,{msg:_.value[e],previous:_.value[e-1],"self-avatar":n.selfAvatar,"self-name":n.selfName,"show-timestamp":d.value.showTimestamp,onImagePreview:o[1]||=e=>u(`image-preview`,e),onFileClick:o[2]||=e=>u(`file-click`,e),onResend:o[3]||=e=>u(`resend`,e)},null,8,[`msg`,`previous`,`self-avatar`,`self-name`,`show-timestamp`])])]),_:1},8,[`items`,`onScroll`,`onWheel`,`onPointerdown`,`onKeydown`])):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:1,ref_key:`messagesRef`,ref:m,class:`c-chat__messages`,onScroll:o[7]||=(...e)=>(0,r.unref)(O)&&(0,r.unref)(O)(...e),onWheel:o[8]||=(...e)=>(0,r.unref)(k)&&(0,r.unref)(k)(...e),onPointerdown:o[9]||=(...e)=>(0,r.unref)(k)&&(0,r.unref)(k)(...e),onKeydown:o[10]||=(...e)=>(0,r.unref)(k)&&(0,r.unref)(k)(...e)},[(0,r.createElementVNode)(`div`,K,[d.value.loadingHistory?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,q,[(0,r.createVNode)(l,{size:`small`})])):(0,r.createCommentVNode)(`v-if`,!0),!_.value.length&&!d.value.loadingHistory?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,J,(0,r.toDisplayString)((0,r.unref)(c)(`chat.empty`)),1)):(0,r.createCommentVNode)(`v-if`,!0),((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(_.value,(e,t)=>((0,r.openBlock)(),(0,r.createBlock)(S,{key:e.id,msg:e,previous:_.value[t-1],"self-avatar":n.selfAvatar,"self-name":n.selfName,"show-timestamp":d.value.showTimestamp,onImagePreview:o[4]||=e=>u(`image-preview`,e),onFileClick:o[5]||=e=>u(`file-click`,e),onResend:o[6]||=e=>u(`resend`,e)},null,8,[`msg`,`previous`,`self-avatar`,`self-name`,`show-timestamp`]))),128))])],544)),(0,r.createCommentVNode)(` 输入区域 `),(0,r.createElementVNode)(`div`,Y,[(0,r.createElementVNode)(`div`,X,[(0,r.renderSlot)(e.$slots,`input-actions`,{},()=>[(0,r.createVNode)(y,{quaternary:``,circle:``,size:`small`,"aria-label":(0,r.unref)(c)(`chat.emoji`),onClick:o[11]||=e=>u(`emoji-click`)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:emoticon-happy-outline`,size:18})]),_:1},8,[`aria-label`]),(0,r.createVNode)(y,{quaternary:``,circle:``,size:`small`,"aria-label":(0,r.unref)(c)(`chat.attach`),onClick:o[12]||=e=>u(`file-upload`)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:paperclip`,size:18})]),_:1},8,[`aria-label`])],!0)]),(0,r.createElementVNode)(`div`,Z,[(0,r.createVNode)(s,{value:f.value,"onUpdate:value":o[13]||=e=>f.value=e,placeholder:d.value.placeholder,type:`textarea`,autosize:{minRows:1,maxRows:4},onKeydown:(0,r.withKeys)((0,r.withModifiers)(E,[`exact`]),[`enter`])},null,8,[`value`,`placeholder`,`onKeydown`])]),d.value.showSendBtn?((0,r.openBlock)(),(0,r.createBlock)(y,{key:0,type:`primary`,disabled:!f.value.trim(),class:`c-chat__send-btn`,"aria-label":(0,r.unref)(c)(`chat.send`),onClick:E},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:send`,size:16})]),_:1},8,[`disabled`,`aria-label`])):(0,r.createCommentVNode)(`v-if`,!0)])])):((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` ===== 未选中联系人空态 ===== `),(0,r.createElementVNode)(`div`,Q,[(0,r.createVNode)(t.t,{name:`mdi:chat-processing-outline`,size:48,class:`c-chat__no-chat-icon`}),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)((0,r.unref)(c)(`chat.choose`)),1)])],2112))])}}});var ee=n.t($,[[`__scopeId`,`data-v-96dfa0d2`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ee}});