@robot-admin/naive-ui-components 0.11.8 → 0.13.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 (310) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +172 -29
  3. package/README_EN.md +171 -28
  4. package/SECURITY.md +1 -0
  5. package/dist/C_ActionBar.cjs +1 -1
  6. package/dist/C_ActionBar.css +67 -67
  7. package/dist/C_ActionBar.d.cts +2 -2
  8. package/dist/C_ActionBar.d.ts +2 -2
  9. package/dist/C_ActionBar.js +1 -1
  10. package/dist/C_ActionBar2.cjs +1 -1
  11. package/dist/C_ActionBar2.js +1 -1
  12. package/dist/C_AntV.css +70 -70
  13. package/dist/C_AntV2.cjs +3 -3
  14. package/dist/C_AntV2.js +3 -3
  15. package/dist/C_AudioPlayer.css +81 -66
  16. package/dist/C_AudioPlayer.d.cts +1 -1
  17. package/dist/C_AudioPlayer.d.ts +1 -1
  18. package/dist/C_AudioPlayer2.cjs +1 -1
  19. package/dist/C_AudioPlayer2.js +1 -1
  20. package/dist/C_AvatarGroup.css +40 -25
  21. package/dist/C_AvatarGroup.d.cts +1 -1
  22. package/dist/C_AvatarGroup.d.ts +1 -1
  23. package/dist/C_AvatarGroup2.cjs +1 -1
  24. package/dist/C_AvatarGroup2.js +1 -1
  25. package/dist/C_Barcode.css +6 -6
  26. package/dist/C_Barcode.d.cts +1 -1
  27. package/dist/C_Barcode.d.ts +1 -1
  28. package/dist/C_Barcode2.cjs +1 -1
  29. package/dist/C_Barcode2.js +1 -1
  30. package/dist/C_Breadcrumb.css +14 -14
  31. package/dist/C_Breadcrumb.d.cts +1 -1
  32. package/dist/C_Breadcrumb.d.ts +1 -1
  33. package/dist/C_Breadcrumb2.cjs +1 -1
  34. package/dist/C_Breadcrumb2.js +1 -1
  35. package/dist/C_Captcha.cjs +1 -1
  36. package/dist/C_Captcha.css +193 -51
  37. package/dist/C_Captcha.d.cts +2 -3
  38. package/dist/C_Captcha.d.ts +2 -3
  39. package/dist/C_Captcha.js +1 -1
  40. package/dist/C_Captcha2.cjs +1 -1
  41. package/dist/C_Captcha2.js +1 -1
  42. package/dist/C_Cascade.css +2 -2
  43. package/dist/C_Cascade.d.cts +1 -1
  44. package/dist/C_Cascade.d.ts +1 -1
  45. package/dist/C_Cascade2.cjs +1 -1
  46. package/dist/C_Cascade2.js +1 -1
  47. package/dist/C_Chat.css +96 -78
  48. package/dist/C_Chat.d.cts +1 -1
  49. package/dist/C_Chat.d.ts +1 -1
  50. package/dist/C_Chat2.cjs +1 -1
  51. package/dist/C_Chat2.js +1 -1
  52. package/dist/C_City.css +52 -28
  53. package/dist/C_City.d.cts +1 -1
  54. package/dist/C_City.d.ts +1 -1
  55. package/dist/C_City2.cjs +1 -1
  56. package/dist/C_City2.js +1 -1
  57. package/dist/C_Code.css +48 -42
  58. package/dist/C_Code.d.cts +1 -1
  59. package/dist/C_Code.d.ts +1 -1
  60. package/dist/C_Code2.cjs +1 -1
  61. package/dist/C_Code2.js +1 -1
  62. package/dist/C_CollapsePanel.css +14 -14
  63. package/dist/C_CollapsePanel2.cjs +1 -1
  64. package/dist/C_CollapsePanel2.js +1 -1
  65. package/dist/C_ContextMenu.css +14 -14
  66. package/dist/C_ContextMenu.d.cts +1 -1
  67. package/dist/C_ContextMenu.d.ts +1 -1
  68. package/dist/C_ContextMenu2.cjs +1 -1
  69. package/dist/C_ContextMenu2.js +1 -1
  70. package/dist/C_Cron.css +94 -55
  71. package/dist/C_Cron2.cjs +1 -1
  72. package/dist/C_Cron2.js +1 -1
  73. package/dist/C_Date.d.cts +1 -1
  74. package/dist/C_Date.d.ts +1 -1
  75. package/dist/C_Date2.cjs +1 -1
  76. package/dist/C_Date2.js +1 -1
  77. package/dist/C_Draggable.css +48 -48
  78. package/dist/C_Draggable2.cjs +1 -1
  79. package/dist/C_Draggable2.js +1 -1
  80. package/dist/C_Editor.css +13 -14
  81. package/dist/C_Editor.d.cts +1 -1
  82. package/dist/C_Editor.d.ts +1 -1
  83. package/dist/C_Editor2.cjs +1 -1
  84. package/dist/C_Editor2.js +1 -1
  85. package/dist/C_FilePreview.css +18 -18
  86. package/dist/C_FilePreview2.cjs +1 -1
  87. package/dist/C_FilePreview2.js +1 -1
  88. package/dist/C_Form.base.css +36 -36
  89. package/dist/C_Form.css +49 -50
  90. package/dist/C_Form2.cjs +1 -1
  91. package/dist/C_Form2.js +1 -1
  92. package/dist/C_FormModal.cjs +1 -0
  93. package/dist/C_FormModal.css +41 -0
  94. package/dist/C_FormModal.d.cts +2 -0
  95. package/dist/C_FormModal.d.ts +3 -0
  96. package/dist/C_FormModal.js +1 -0
  97. package/dist/C_FormModal2.cjs +1 -0
  98. package/dist/C_FormModal2.js +1 -0
  99. package/dist/C_FormSearch.css +45 -45
  100. package/dist/C_FormSearch2.cjs +1 -1
  101. package/dist/C_FormSearch2.js +1 -1
  102. package/dist/C_FormulaEditor.css +94 -55
  103. package/dist/C_FormulaEditor2.cjs +2 -2
  104. package/dist/C_FormulaEditor2.js +2 -2
  105. package/dist/C_FullCalendar.css +8 -1
  106. package/dist/C_FullCalendar2.cjs +1 -1
  107. package/dist/C_FullCalendar2.js +1 -1
  108. package/dist/C_GlobalSearch2.cjs +1 -1
  109. package/dist/C_GlobalSearch2.js +1 -1
  110. package/dist/C_Guide.css +14 -14
  111. package/dist/C_Guide2.cjs +1 -1
  112. package/dist/C_Guide2.js +1 -1
  113. package/dist/C_Icon.css +14 -14
  114. package/dist/C_Icon2.cjs +1 -1
  115. package/dist/C_Icon2.js +1 -1
  116. package/dist/C_ImageCropper.css +22 -22
  117. package/dist/C_ImageCropper2.cjs +1 -1
  118. package/dist/C_ImageCropper2.js +1 -1
  119. package/dist/C_Language.css +14 -14
  120. package/dist/C_Language2.cjs +1 -1
  121. package/dist/C_Language2.js +1 -1
  122. package/dist/C_Login.css +232 -149
  123. package/dist/C_Login2.cjs +1 -1
  124. package/dist/C_Login2.js +1 -1
  125. package/dist/C_Map.css +3 -3
  126. package/dist/C_Map2.cjs +1 -1
  127. package/dist/C_Map2.js +1 -1
  128. package/dist/C_Markdown.css +35 -35
  129. package/dist/C_Markdown2.cjs +1 -1
  130. package/dist/C_Markdown2.js +1 -1
  131. package/dist/C_Menu.d.cts +1 -1
  132. package/dist/C_Menu2.cjs +1 -1
  133. package/dist/C_Menu2.js +1 -1
  134. package/dist/C_NotificationCenter.css +30 -30
  135. package/dist/C_NotificationCenter2.cjs +1 -1
  136. package/dist/C_NotificationCenter2.js +1 -1
  137. package/dist/C_OrgChart.css +4 -0
  138. package/dist/C_OrgChart2.cjs +1 -1
  139. package/dist/C_OrgChart2.js +1 -1
  140. package/dist/C_Progress2.cjs +1 -1
  141. package/dist/C_Progress2.js +1 -1
  142. package/dist/C_QRCode.css +8 -8
  143. package/dist/C_QRCode2.cjs +1 -1
  144. package/dist/C_QRCode2.js +1 -1
  145. package/dist/C_Signature.css +14 -14
  146. package/dist/C_Signature2.cjs +1 -1
  147. package/dist/C_Signature2.js +1 -1
  148. package/dist/C_Skeleton2.cjs +1 -1
  149. package/dist/C_Skeleton2.js +1 -1
  150. package/dist/C_SplitPane.css +39 -39
  151. package/dist/C_SplitPane2.cjs +1 -1
  152. package/dist/C_SplitPane2.js +1 -1
  153. package/dist/C_Steps.css +48 -38
  154. package/dist/C_Steps2.cjs +1 -1
  155. package/dist/C_Steps2.js +1 -1
  156. package/dist/C_Table.base.css +160 -160
  157. package/dist/C_Table.cjs +1 -1
  158. package/dist/C_Table.css +173 -174
  159. package/dist/C_Table.d.ts +4 -3
  160. package/dist/C_Table.js +1 -1
  161. package/dist/C_Tabs.cjs +1 -0
  162. package/dist/C_Tabs.css +1 -0
  163. package/dist/C_Tabs.d.cts +2 -0
  164. package/dist/C_Tabs.d.ts +2 -0
  165. package/dist/C_Tabs.js +1 -0
  166. package/dist/C_TagsView.css +52 -52
  167. package/dist/C_TagsView2.cjs +1 -1
  168. package/dist/C_TagsView2.js +1 -1
  169. package/dist/C_Theme.css +14 -14
  170. package/dist/C_Theme2.cjs +1 -1
  171. package/dist/C_Theme2.js +1 -1
  172. package/dist/C_Time.css +4 -4
  173. package/dist/C_Time2.cjs +1 -1
  174. package/dist/C_Time2.js +1 -1
  175. package/dist/C_Timeline.css +76 -58
  176. package/dist/C_Timeline2.cjs +1 -1
  177. package/dist/C_Timeline2.js +1 -1
  178. package/dist/C_Transfer.css +51 -51
  179. package/dist/C_Transfer2.cjs +1 -1
  180. package/dist/C_Transfer2.js +1 -1
  181. package/dist/C_Tree.css +35 -32
  182. package/dist/C_Tree2.cjs +1 -1
  183. package/dist/C_Tree2.js +1 -1
  184. package/dist/C_Upload.css +53 -50
  185. package/dist/C_Upload2.cjs +1 -1
  186. package/dist/C_Upload2.js +1 -1
  187. package/dist/C_VideoPlayer.css +17 -13
  188. package/dist/C_VideoPlayer2.cjs +2 -2
  189. package/dist/C_VideoPlayer2.js +2 -2
  190. package/dist/C_VtableGantt.css +19 -19
  191. package/dist/C_VtableGantt2.cjs +1 -1
  192. package/dist/C_VtableGantt2.js +1 -1
  193. package/dist/C_WaterFall.css +19 -15
  194. package/dist/C_WaterFall2.cjs +1 -1
  195. package/dist/C_WaterFall2.js +1 -1
  196. package/dist/C_WorkFlow.css +123 -123
  197. package/dist/C_WorkFlow2.cjs +1 -1
  198. package/dist/C_WorkFlow2.js +1 -1
  199. package/dist/constants.d.cts +2 -2
  200. package/dist/constants.d.ts +2 -2
  201. package/dist/constants2.d.cts +3 -3
  202. package/dist/constants2.d.ts +3 -3
  203. package/dist/constants3.d.cts +8 -4
  204. package/dist/constants3.d.ts +8 -4
  205. package/dist/constants4.d.cts +6 -6
  206. package/dist/constants4.d.ts +6 -6
  207. package/dist/constants5.d.cts +2 -2
  208. package/dist/constants5.d.ts +2 -2
  209. package/dist/data.d.cts +108 -0
  210. package/dist/data.d.ts +108 -0
  211. package/dist/data2.cjs +1 -0
  212. package/dist/data2.js +1 -0
  213. package/dist/index.cjs +1 -1
  214. package/dist/index.d.cts +49 -49
  215. package/dist/index.d.ts +51 -49
  216. package/dist/index.js +1 -1
  217. package/dist/index.vue.d.cts +74 -69
  218. package/dist/index.vue.d.ts +74 -69
  219. package/dist/index10.vue.d.cts +80 -39
  220. package/dist/index10.vue.d.ts +68 -77
  221. package/dist/index11.vue.d.cts +68 -77
  222. package/dist/index11.vue.d.ts +54 -69
  223. package/dist/index12.vue.d.cts +54 -69
  224. package/dist/index12.vue.d.ts +52 -58
  225. package/dist/index13.vue.d.cts +52 -58
  226. package/dist/index13.vue.d.ts +1 -1
  227. package/dist/index14.vue.d.cts +1 -1
  228. package/dist/index14.vue.d.ts +14 -47
  229. package/dist/index15.vue.d.cts +14 -47
  230. package/dist/index16.vue.d.ts +15 -12
  231. package/dist/index17.vue.d.cts +15 -12
  232. package/dist/index17.vue.d.ts +4 -4
  233. package/dist/index18.vue.d.cts +4 -4
  234. package/dist/index18.vue.d.ts +2 -2
  235. package/dist/index19.vue.d.cts +1 -1
  236. package/dist/index19.vue.d.ts +1 -1
  237. package/dist/index2.vue.d.cts +70 -65
  238. package/dist/index2.vue.d.ts +70 -65
  239. package/dist/index20.vue.d.cts +1 -1
  240. package/dist/index20.vue.d.ts +1 -1
  241. package/dist/index24.vue.d.cts +3 -3
  242. package/dist/index24.vue.d.ts +3 -3
  243. package/dist/index25.vue.d.cts +1 -1
  244. package/dist/index25.vue.d.ts +1 -1
  245. package/dist/index26.vue.d.cts +5 -5
  246. package/dist/index26.vue.d.ts +5 -5
  247. package/dist/index27.vue.d.cts +1 -1
  248. package/dist/index27.vue.d.ts +1 -1
  249. package/dist/index3.vue.d.cts +30 -80
  250. package/dist/index3.vue.d.ts +30 -80
  251. package/dist/index4.vue.d.cts +130 -30
  252. package/dist/index4.vue.d.ts +22 -30
  253. package/dist/index5.vue.d.cts +18 -126
  254. package/dist/index5.vue.d.ts +22 -19
  255. package/dist/index6.vue.d.cts +22 -19
  256. package/dist/index6.vue.d.ts +117 -22
  257. package/dist/index7.vue.d.cts +117 -22
  258. package/dist/index7.vue.d.ts +17 -110
  259. package/dist/index8.vue.d.cts +17 -110
  260. package/dist/index8.vue.d.ts +37 -24
  261. package/dist/index9.vue.d.cts +37 -24
  262. package/dist/index9.vue.d.ts +80 -39
  263. package/dist/mapUtils.d.cts +2 -2
  264. package/dist/mapUtils.d.ts +2 -2
  265. package/dist/presets.d.cts +96 -0
  266. package/dist/presets.d.ts +96 -0
  267. package/dist/resolver.cjs +1 -1
  268. package/dist/resolver.d.cts +1 -1
  269. package/dist/resolver.d.ts +1 -1
  270. package/dist/resolver.js +1 -1
  271. package/dist/style.css +1735 -1400
  272. package/dist/useCalendarEvents.d.cts +23 -18
  273. package/dist/useCalendarEvents.d.ts +23 -18
  274. package/dist/useCollapsePanel.d.cts +4 -3
  275. package/dist/useCollapsePanel.d.ts +4 -3
  276. package/dist/useCropperCore.d.cts +32 -17
  277. package/dist/useCropperCore.d.ts +32 -17
  278. package/dist/useDraggableLayout.d.cts +2 -2
  279. package/dist/useDraggableLayout.d.ts +2 -2
  280. package/dist/useDynamicFormState.d.cts +7 -2
  281. package/dist/useDynamicFormState.d.ts +7 -2
  282. package/dist/useEdgeInteraction.d.cts +20 -19
  283. package/dist/useEdgeInteraction.d.ts +20 -19
  284. package/dist/useFullscreen.d.cts +6 -6
  285. package/dist/useFullscreen.d.ts +6 -6
  286. package/dist/useInfiniteScroll.d.cts +1 -1
  287. package/dist/useInfiniteScroll.d.ts +1 -1
  288. package/dist/useQRCode.d.cts +5 -4
  289. package/dist/useQRCode.d.ts +5 -4
  290. package/dist/useSearchState.d.cts +9 -9
  291. package/dist/useSearchState.d.ts +9 -9
  292. package/dist/useSignatureHistory.d.cts +18 -10
  293. package/dist/useSignatureHistory.d.ts +18 -10
  294. package/dist/useSplitResize.d.cts +7 -7
  295. package/dist/useSplitResize.d.ts +7 -7
  296. package/dist/useTableQuery.cjs +3 -3
  297. package/dist/useTableQuery.d.cts +12 -5
  298. package/dist/useTableQuery.d.ts +12 -5
  299. package/dist/useTableQuery.js +3 -3
  300. package/dist/useTimeSelection.d.cts +6 -3
  301. package/dist/useTimeSelection.d.ts +6 -3
  302. package/dist/useTreeOperations.d.cts +8 -8
  303. package/dist/useTreeOperations.d.ts +8 -8
  304. package/dist/useWorkflowValidation.d.cts +6 -4
  305. package/dist/useWorkflowValidation.d.ts +6 -4
  306. package/dist/verification.d.cts +71 -6
  307. package/dist/verification.d.ts +71 -6
  308. package/package.json +5 -3
  309. package/dist/types.d.ts +0 -58
  310. package/dist/types2.d.cts +0 -58
@@ -1 +1 @@
1
- import{i as e,r as t}from"./config.js";import{t as n}from"./export-helper.js";import{computed as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createVNode as s,defineAsyncComponent as c,defineComponent as l,normalizeClass as u,onBeforeUnmount as d,openBlock as f,ref as p,toDisplayString as m,unref as h}from"vue";var g=class extends Error{constructor(e,t,n){super(t),this.code=e,this.cause=n,this.name=`CaptchaVerificationError`}};let _=0;function v(){let e=Date.now();return{token:`puzzle_${e}_${globalThis.crypto?.randomUUID?.()??`${++_}`}`,timestamp:e,type:`puzzle-captcha`}}async function y(e,t={}){let{verifier:n,requireServerVerification:r=!1,signal:i}=t,a=t.timeout??1e4,o=Number.isFinite(a)&&a>0?a:1e4;if(i?.aborted)throw new g(`aborted`,`Verification was cancelled.`);if(!n){if(r)throw new g(`missing-verifier`,`Server verification is required but no verifier was configured.`);return{...e,verifiedBy:`local`}}let s=new AbortController,c=()=>s.abort(i?.reason);i?.addEventListener(`abort`,c,{once:!0});let l,u=new Promise((e,t)=>{l=setTimeout(()=>{s.abort(`timeout`),t(new g(`timeout`,`Verification timed out after ${o}ms.`))},o)}),d=new Promise((e,t)=>{s.signal.addEventListener(`abort`,()=>{s.signal.reason!==`timeout`&&t(new g(`aborted`,`Verification was cancelled.`))},{once:!0})});try{let t=await Promise.race([Promise.resolve(n({...e,signal:s.signal})),u,d]),i=typeof t==`boolean`?{valid:t}:t;if(!i.valid)throw new g(`rejected`,i.message||`Server verification rejected the challenge.`);let a=i.token?.trim();if(r&&!a)throw new g(`missing-token`,`Server verification did not return a trusted token.`);return{...e,token:a||e.token,verifiedBy:`server`}}catch(e){throw e instanceof g?e:new g(`rejected`,`Server verification failed.`,e)}finally{l&&clearTimeout(l),i?.removeEventListener(`abort`,c)}}const b=[`data-theme`],x={class:`captcha-shell`},S=[`disabled`,`aria-busy`,`aria-label`],C={class:`captcha-content`},w={class:`captcha-icon`,"aria-hidden":`true`},T={key:0},E={key:1,class:`success-icon`},D={key:2,class:`error-icon`},O={key:3},k={class:`captcha-text`,"aria-live":`polite`},A={key:0},j={key:1,class:`success-text`},M={key:2,class:`error-text`},N={key:3},P=[`title`,`aria-label`];var F=n(l({name:`C_Captcha`,__name:`index`,props:{triggerText:{},images:{default:()=>[]},disabled:{type:Boolean,default:!1},theme:{default:`dark`},verifier:{},verificationTimeout:{default:1e4},requireServerVerification:{type:Boolean,default:!1},feedback:{},locale:{}},emits:[`success`,`fail`,`verify-error`,`load-error`,`change`,`reset`],setup(n,{expose:l,emit:_}){let F=n,I=_,L=t(()=>F.feedback),{t:R}=e(()=>F.locale),z=typeof window>`u`?()=>null:c({loader:()=>import(`vue3-puzzle-vcode`).then(e=>e.default),onError(e,t,n){L.error(R(`captcha.loadFailed`),e),I(`load-error`,e),n()}}),B=p(!1),V=p(!1),H=p(!1),U=p(!1),W=p(null),G=null,K=null,q=r(()=>F.images.length>0?F.images:void 0),J=r(()=>U.value?R(`captcha.verifying`):V.value?R(`captcha.success`):H.value?R(`captcha.failed`):F.triggerText??R(`captcha.trigger`)),Y=()=>{G&&=(clearTimeout(G),null)},X=(e,t)=>{V.value=!1,H.value=!0,W.value=null,Y(),G=setTimeout(()=>{H.value=!1,G=null},3e3),I(`fail`,e),I(`change`,!1),t&&I(`verify-error`,t)},Z=()=>{F.disabled||U.value||V.value||(H.value=!1,B.value=!0)},Q=async()=>{B.value=!1,H.value=!1,K?.abort();let e=new AbortController;K=e,U.value=!0;try{let t=await y(v(),{verifier:F.verifier,timeout:F.verificationTimeout,requireServerVerification:F.requireServerVerification,signal:e.signal});if(K!==e)return;W.value=t,V.value=!0,I(`success`,t),I(`change`,!0)}catch(t){if(K!==e||t instanceof g&&t.code===`aborted`)return;let n=t instanceof Error?t.message:R(`captcha.failed`);L.error(R(`captcha.verifyFailed`),t),X(n,t)}finally{K===e&&(K=null,U.value=!1)}},ee=()=>{B.value=!1,X(R(`captcha.puzzleFailed`))},te=()=>{B.value=!1},$=()=>{K?.abort(),K=null,U.value=!1,V.value=!1,H.value=!1,B.value=!1,W.value=null,Y(),I(`reset`),I(`change`,!1)};return l({validate:()=>V.value,getToken:()=>W.value?.token??``,getVerificationData:()=>W.value,reset:$,show:Z}),d(()=>{K?.abort(),Y()}),(e,t)=>(f(),a(`div`,{class:`c-captcha-modern`,"data-theme":n.theme},[o(`div`,x,[o(`button`,{type:`button`,class:u([`captcha-trigger`,{verified:V.value,error:H.value,disabled:n.disabled||U.value}]),disabled:n.disabled||U.value||V.value,"aria-busy":U.value,"aria-label":J.value,onClick:Z},[o(`span`,C,[o(`span`,w,[U.value?(f(),a(`span`,T,`…`)):V.value?(f(),a(`span`,E,`✓`)):H.value?(f(),a(`span`,D,`⚠️`)):(f(),a(`span`,O,`🧩`))]),o(`span`,k,[U.value?(f(),a(`span`,A,m(h(R)(`captcha.verifying`)),1)):V.value?(f(),a(`span`,j,m(h(R)(`captcha.success`)),1)):H.value?(f(),a(`span`,M,m(h(R)(`captcha.failed`)),1)):(f(),a(`span`,N,m(n.triggerText??h(R)(`captcha.trigger`)),1))])])],10,S),V.value||H.value?(f(),a(`button`,{key:0,type:`button`,class:`refresh-button`,title:h(R)(`captcha.reset`),"aria-label":h(R)(`captcha.reset`),onClick:$},` ↻ `,8,P)):i(`v-if`,!0)]),s(h(z),{show:B.value,imgs:q.value,onSuccess:Q,onClose:te,onFail:ee},null,8,[`show`,`imgs`])],8,b))}}),[[`__scopeId`,`data-v-29edd4c3`]]);export{y as i,g as n,v as r,F as t};
1
+ import{i as e,r as t}from"./config.js";import{t as n}from"./C_Icon2.js";import{t as r}from"./export-helper.js";import{computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createVNode as l,defineAsyncComponent as u,defineComponent as d,nextTick as ee,normalizeClass as f,onBeforeUnmount as te,onMounted as ne,openBlock as p,ref as m,resolveDynamicComponent as re,toDisplayString as h,unref as g,watch as ie}from"vue";var _=class extends Error{constructor(e,t,n){super(t),this.code=e,this.cause=n,this.name=`CaptchaVerificationError`}};let v=0;function y(){let e=Date.now();return{token:`puzzle_${e}_${globalThis.crypto?.randomUUID?.()??`${++v}`}`,timestamp:e,type:`puzzle-captcha`}}async function b(e,t={}){let{verifier:n,requireServerVerification:r=!1,signal:i}=t,a=t.timeout??1e4,o=Number.isFinite(a)&&a>0?a:1e4;if(i?.aborted)throw new _(`aborted`,`Verification was cancelled.`);if(!n){if(r)throw new _(`missing-verifier`,`Server verification is required but no verifier was configured.`);return{...e,verifiedBy:`local`}}let s=new AbortController,c=()=>s.abort(i?.reason);i?.addEventListener(`abort`,c,{once:!0});let l,u=new Promise((e,t)=>{l=setTimeout(()=>{s.abort(`timeout`),t(new _(`timeout`,`Verification timed out after ${o}ms.`))},o)}),d=new Promise((e,t)=>{s.signal.addEventListener(`abort`,()=>{s.signal.reason!==`timeout`&&t(new _(`aborted`,`Verification was cancelled.`))},{once:!0})});try{let t=await Promise.race([Promise.resolve(n({...e,signal:s.signal})),u,d]),i=typeof t==`boolean`?{valid:t}:t;if(!i.valid)throw new _(`rejected`,i.message||`Server verification rejected the challenge.`);let a=i.token?.trim();if(r&&!a)throw new _(`missing-token`,`Server verification did not return a trusted token.`);return{...e,token:a||e.token,verifiedBy:`server`}}catch(e){throw e instanceof _?e:new _(`rejected`,`Server verification failed.`,e)}finally{l&&clearTimeout(l),i?.removeEventListener(`abort`,c)}}const x=[`data-theme`],ae=[`disabled`,`aria-busy`],oe={class:`captcha-content`},se={class:`captcha-icon`,"aria-hidden":`true`},ce={class:`captcha-text`},le={key:1,class:`captcha-shell`},ue=[`disabled`,`aria-busy`,`aria-label`],de={class:`captcha-content`},fe={class:`captcha-icon`,"aria-hidden":`true`},pe={class:`captcha-text`,"aria-live":`polite`},me={key:0},he={key:1,class:`success-text`},ge={key:2,class:`error-text`},_e={key:3},ve=[`title`,`aria-label`];var S=r(d({name:`C_Captcha`,__name:`index`,props:{provider:{default:`puzzle-captcha`},challengeUrl:{},triggerText:{},images:{default:()=>[]},disabled:{type:Boolean,default:!1},theme:{default:`dark`},verifier:{},verificationTimeout:{default:1e4},requireServerVerification:{type:Boolean,default:!1},feedback:{},locale:{}},emits:[`success`,`fail`,`verify-error`,`load-error`,`change`,`visible-change`,`reset`],setup(r,{expose:d,emit:v}){let S=r,C=v,w=t(()=>S.feedback),{t:T}=e(()=>S.locale),E={default:`M12 2 3 6V12C3 17.25 6.84 22.74 12 24 17.16 22.74 21 17.25 21 12V6L12 2M12 4.18 19 7.3V12C19 16.18 16.2 20.62 12 21.82 7.8 20.62 5 16.18 5 12V7.3L12 4.18M11 8V14.17L8.41 11.59 7 13 12 18 17 13 15.59 11.58 13 14.17V8H11Z`,verifying:`M12 4V2A10 10 0 0 0 2 12H4A8 8 0 0 1 12 4Z`,success:`M12 2 4 5V11C4 16.55 7.84 21.74 12 23 16.16 21.74 20 16.55 20 11V5L12 2M12 4.18 18 6.42V11C18 15.45 15.18 19.69 12 20.82 8.82 19.69 6 15.45 6 11V6.42L12 4.18M10 17 16 11 14.59 9.58 10 13.17 8.41 11.58 7 13 10 17Z`,error:`M12 2C6.48 2 2 6.48 2 12S6.48 22 12 22 22 17.52 22 12 17.52 2 12 2M13 17H11V15H13V17M13 13H11V7H13V13Z`,refresh:`M17.65 6.35C16.2 4.9 14.21 4 12 4 7.58 4 4 7.58 4 12S7.58 20 12 20C15.73 20 18.84 17.45 19.73 14H17.65C16.82 16.33 14.61 18 12 18 8.69 18 6 15.31 6 12S8.69 6 12 6C13.66 6 15.14 6.69 16.22 7.78L13 11H21V3L17.65 6.35Z`},ye=typeof window>`u`?()=>null:u({loader:()=>import(`vue3-puzzle-vcode`).then(e=>e.default),onError(e,t,n){w.error(T(`captcha.loadFailed`),e),C(`load-error`,e),n()}}),D=m(!1),O=m(!1),k=m(!1),A=m(!1),j=m(null),M=m(!1),N=m(null),P=m(null),F=null,I=null,L=null,R=0,z=!1,B=i(()=>S.provider===`altcha`),be=i(()=>S.images.length>0?S.images:void 0),V=i(()=>A.value?{name:`captcha-verifying`,path:E.verifying}:O.value?{name:`captcha-success`,path:E.success}:k.value?{name:`captcha-error`,path:E.error}:{name:`captcha-default`,path:E.default}),xe=i(()=>A.value?T(`captcha.verifying`):O.value?T(`captcha.success`):k.value?T(`captcha.failed`):S.triggerText??T(`captcha.trigger`)),H=()=>{F&&=(clearTimeout(F),null)},U=e=>{z!==e&&(z=e,C(`visible-change`,e))},W=e=>{D.value!==e&&(D.value=e,U(e))},G=(e,t)=>{O.value=!1,k.value=!0,P.value=null,H(),F=setTimeout(()=>{k.value=!1,F=null},3e3),C(`fail`,e),C(`change`,!1),t&&C(`verify-error`,t)},Se=(e,t)=>I!==e||t instanceof _&&t.code===`aborted`,Ce=e=>{I===e&&(I=null,A.value=!1,U(!1))},K=async(e,t=S.requireServerVerification)=>{k.value=!1,I?.abort();let n=new AbortController;I=n,A.value=!0,U(!0);try{let r=await b(e,{verifier:S.verifier,timeout:S.verificationTimeout,requireServerVerification:t,signal:n.signal});if(I!==n)return;P.value=r,O.value=!0,C(`success`,r),C(`change`,!0)}catch(t){if(Se(n,t))return;let r=t instanceof Error?t.message:T(`captcha.failed`);w.error(T(`captcha.verifyFailed`),t),G(r,t),e.type===`altcha`&&L?.reset()}finally{Ce(n)}},we=async()=>{D.value=!1,await K(y())},Te=()=>{W(!1),G(T(`captcha.puzzleFailed`))},Ee=()=>{W(!1)},q=e=>{let t=e.detail?.payload;if(!t?.trim()){G(T(`captcha.failed`)),L?.reset(),U(!1);return}K({token:t,timestamp:Date.now(),type:`altcha`},!0)},J=e=>{let t=e.detail?.state;if(t===`verifying`){U(!0);return}if(t===`error`){G(T(`captcha.failed`)),U(!1);return}t===`expired`&&(O.value=!1,P.value=null,C(`change`,!1),U(!1))},Y=()=>{L&&=(L.removeEventListener(`verified`,q),L.removeEventListener(`statechange`,J),null)},X=(e,t)=>{if(e!==R)return;Y(),M.value=!1;let n=t instanceof Error?t:Error(T(`captcha.loadFailed`));N.value=n,w.error(T(`captcha.loadFailed`),n),C(`load-error`,n)},De=async(e,t)=>{if(await Promise.all([import(`altcha`),import(`altcha/i18n/zh-cn`)]),e!==R||(M.value=!0,await ee(),e!==R))return;let n=j.value?.querySelector(`altcha-widget`);if(!n)throw Error(`ALTCHA widget failed to initialize.`);L=n,n.addEventListener(`verified`,q),n.addEventListener(`statechange`,J),n.setAttribute(`theme`,S.theme),await n.configure({auto:`off`,challenge:t,display:`standard`,hideFooter:!0,hideLogo:!0,language:S.locale?.locale===`en-US`?`en`:`zh-cn`,minDuration:350,timeout:Math.max(S.verificationTimeout,1e3),type:`switch`,workers:1})},Z=async()=>{let e=++R;Y(),M.value=!1,N.value=null;let t=S.challengeUrl?.trim();if(!t){X(e,Error(`ALTCHA provider requires a server-owned challengeUrl.`));return}try{await De(e,t)}catch(t){X(e,t)}},Q=()=>{if(!(S.disabled||A.value||O.value)){if(k.value=!1,B.value){if(!L){Z();return}L.verify().catch(e=>{let t=e instanceof Error?e:Error(String(e));w.error(T(`captcha.verifyFailed`),t),G(t.message,t),U(!1)});return}W(!0)}},$=()=>{I?.abort(),I=null,A.value=!1,O.value=!1,k.value=!1,W(!1),L?.reset(),P.value=null,H(),C(`reset`),C(`change`,!1)};return d({validate:()=>O.value,getToken:()=>P.value?.token??``,getVerificationData:()=>P.value,reset:$,show:Q}),ne(()=>{B.value&&Z()}),ie(()=>[S.provider,S.challengeUrl,S.theme,S.locale?.locale,S.verificationTimeout],()=>{if(B.value){Z();return}++R,Y(),M.value=!1,N.value=null}),te(()=>{++R,Y(),I?.abort(),H()}),(e,t)=>(p(),s(`div`,{class:`c-captcha-modern`,"data-theme":r.theme},[B.value?(p(),s(`div`,{key:0,ref_key:`altchaHost`,ref:j,class:f([`altcha-provider`,{"is-disabled":r.disabled||A.value}])},[M.value?(p(),a(re(`altcha-widget`),{key:0,class:`altcha-widget`})):(p(),s(`button`,{key:1,type:`button`,class:f([`captcha-trigger`,{error:N.value,disabled:r.disabled||!N.value}]),disabled:r.disabled||!N.value,"aria-busy":!N.value,onClick:Z},[c(`span`,oe,[c(`span`,se,[l(n,{name:N.value?`captcha-error`:`captcha-verifying`,type:`svg`,"svg-path":N.value?E.error:E.verifying,size:18,class:f([`captcha-state-icon`,{"is-error":N.value,"is-spinning":!N.value}])},null,8,[`name`,`svg-path`,`class`])]),c(`span`,ce,h(N.value?g(T)(`captcha.loadFailed`):g(T)(`captcha.verifying`)),1)])],10,ae))],2)):(p(),s(`div`,le,[c(`button`,{type:`button`,class:f([`captcha-trigger`,{verified:O.value,error:k.value,disabled:r.disabled||A.value}]),disabled:r.disabled||A.value||O.value,"aria-busy":A.value,"aria-label":xe.value,onClick:Q},[c(`span`,de,[c(`span`,fe,[l(n,{name:V.value.name,type:`svg`,"svg-path":V.value.path,size:20,class:f([`captcha-state-icon`,{"is-spinning":A.value,"is-success":O.value,"is-error":k.value}])},null,8,[`name`,`svg-path`,`class`])]),c(`span`,pe,[A.value?(p(),s(`span`,me,h(g(T)(`captcha.verifying`)),1)):O.value?(p(),s(`span`,he,h(g(T)(`captcha.success`)),1)):k.value?(p(),s(`span`,ge,h(g(T)(`captcha.failed`)),1)):(p(),s(`span`,_e,h(r.triggerText??g(T)(`captcha.trigger`)),1))])])],10,ue),O.value||k.value?(p(),s(`button`,{key:0,type:`button`,class:`refresh-button`,title:g(T)(`captcha.reset`),"aria-label":g(T)(`captcha.reset`),onClick:$},[l(n,{name:`captcha-refresh`,type:`svg`,"svg-path":E.refresh,size:16},null,8,[`svg-path`])],8,ve)):o(`v-if`,!0)])),B.value?o(`v-if`,!0):(p(),a(g(ye),{key:2,show:D.value,imgs:be.value,onSuccess:we,onClose:Ee,onFail:Te},null,8,[`show`,`imgs`]))],8,x))}}),[[`__scopeId`,`data-v-3d56f63e`]]);export{b as i,_ as n,y as r,S as t};
@@ -1,8 +1,8 @@
1
- /* unplugin-vue-components disabled */.n-cascade-selector[data-v-cf9c290b] {
1
+ /* unplugin-vue-components disabled */.n-cascade-selector[data-v-cde7c410] {
2
2
  display: flex;
3
3
  gap: 12px;
4
4
  }
5
- .n-cascade-selector .n-select-item[data-v-cf9c290b] {
5
+ .n-cascade-selector .n-select-item[data-v-cde7c410] {
6
6
  min-width: 140px;
7
7
  flex: 1;
8
8
  }
@@ -1,2 +1,2 @@
1
- import { n as CascadeItem, r as CascadeValue, t as _default } from "./index7.vue.cjs";
1
+ import { n as CascadeItem, r as CascadeValue, t as _default } from "./index6.vue.cjs";
2
2
  export { _default as C_Cascade, type CascadeItem, type CascadeValue };
@@ -1,2 +1,2 @@
1
- import { n as CascadeItem, r as CascadeValue, t as _default } from "./index6.vue.js";
1
+ import { n as CascadeItem, r as CascadeValue, t as _default } from "./index5.vue.js";
2
2
  export { _default as C_Cascade, type CascadeItem, type CascadeValue };
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./export-helper.cjs`);let t=require(`vue`),n=require(`naive-ui`);const r={class:`n-cascade-selector`},i=(0,t.defineComponent)({name:`C_Cascade`,__name:`index`,props:{data:{},placeholders:{default:()=>[`请选择`,`请选择`,`请选择`]},modelValue:{}},emits:[`update:modelValue`,`change`],setup(e,{emit:i}){let a=e,o=i,s=[0,1,2],c=(0,t.ref)([null,null,null]),l=e=>e===0?a.data:c.value[e-1]&&l(e-1).find(t=>t.value===c.value[e-1])?.children||[],u=(0,t.computed)(()=>s.map(e=>l(e).map(e=>({label:e.label,value:e.value})))),d=e=>{c.value.splice(e+1,s.length-e-1,...Array(s.length-e-1).fill(null)),p()},f=e=>{let t=c.value[e];if(!t)return null;let n=l(e).find(e=>e.value===t);return n?{label:n.label,value:n.value}:null},p=()=>{let e={primary:f(0),secondary:f(1),tertiary:f(2)};o(`update:modelValue`,e),o(`change`,e)};return(0,t.watch)(()=>a.modelValue,e=>{c.value=[e?.primary?.value??null,e?.secondary?.value??null,e?.tertiary?.value??null]},{immediate:!0,deep:!0}),(i,a)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,r,[((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(s,(r,i)=>(0,t.createVNode)((0,t.unref)(n.NSelect),{key:i,value:c.value[i],"onUpdate:value":[e=>c.value[i]=e,e=>d(i)],options:u.value[i],clearable:``,placeholder:e.placeholders[i],disabled:i>0&&!c.value[i-1],class:`n-select-item`},null,8,[`value`,`onUpdate:value`,`options`,`placeholder`,`disabled`])),64))]))}});var a=e.t(i,[[`__scopeId`,`data-v-cf9c290b`]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
1
+ require(`./chunk.cjs`);const e=require(`./export-helper.cjs`);let t=require(`vue`),n=require(`naive-ui`);function r(e,t){return e?[e.primary?.value??null,e.secondary?.value??null,e.tertiary?.value??null]:t}function i(e,t,n=[null,null,null]){let i=r(t,n),a=[null,null,null],o=e;for(let e=0;e<a.length;e++){let t=i[e];if(t===null)break;let n=o.find(e=>e.value===t);if(!n)break;a[e]=n.value,o=n.children??[]}return a}const a={class:`n-cascade-selector`},o=(0,t.defineComponent)({name:`C_Cascade`,__name:`index`,props:{data:{},placeholders:{default:()=>[`请选择`,`请选择`,`请选择`]},modelValue:{}},emits:[`update:modelValue`,`change`],setup(e,{emit:r}){let o=e,s=r,c=[0,1,2],l=(0,t.ref)([null,null,null]),u=e=>e===0?o.data:l.value[e-1]===null?[]:u(e-1).find(t=>t.value===l.value[e-1])?.children||[],d=(0,t.computed)(()=>c.map(e=>u(e).map(e=>({label:e.label,value:e.value})))),f=e=>{l.value.splice(e+1,c.length-e-1,...Array(c.length-e-1).fill(null)),m()},p=e=>{let t=l.value[e];if(t===null)return null;let n=u(e).find(e=>e.value===t);return n?{label:n.label,value:n.value}:null},m=()=>{let e={primary:p(0),secondary:p(1),tertiary:p(2)};s(`update:modelValue`,e),s(`change`,e)};return(0,t.watch)(()=>[o.modelValue,o.data],([e,t])=>{l.value=i(t,e,l.value)},{immediate:!0,deep:!0}),(r,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,a,[((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(c,(r,i)=>(0,t.createVNode)((0,t.unref)(n.NSelect),{key:i,value:l.value[i],"onUpdate:value":[e=>l.value[i]=e,e=>f(i)],options:d.value[i],clearable:``,placeholder:e.placeholders[i],disabled:i>0&&l.value[i-1]===null,class:`n-select-item`},null,8,[`value`,`onUpdate:value`,`options`,`placeholder`,`disabled`])),64))]))}});var s=e.t(o,[[`__scopeId`,`data-v-cde7c410`]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
@@ -1 +1 @@
1
- import{t as e}from"./export-helper.js";import{Fragment as t,computed as n,createElementBlock as r,createVNode as i,defineComponent as a,openBlock as o,ref as s,renderList as c,unref as l,watch as u}from"vue";import{NSelect as d}from"naive-ui";const f={class:`n-cascade-selector`};var p=e(a({name:`C_Cascade`,__name:`index`,props:{data:{},placeholders:{default:()=>[`请选择`,`请选择`,`请选择`]},modelValue:{}},emits:[`update:modelValue`,`change`],setup(e,{emit:a}){let p=e,m=a,h=[0,1,2],g=s([null,null,null]),_=e=>e===0?p.data:g.value[e-1]&&_(e-1).find(t=>t.value===g.value[e-1])?.children||[],v=n(()=>h.map(e=>_(e).map(e=>({label:e.label,value:e.value})))),y=e=>{g.value.splice(e+1,h.length-e-1,...Array(h.length-e-1).fill(null)),x()},b=e=>{let t=g.value[e];if(!t)return null;let n=_(e).find(e=>e.value===t);return n?{label:n.label,value:n.value}:null},x=()=>{let e={primary:b(0),secondary:b(1),tertiary:b(2)};m(`update:modelValue`,e),m(`change`,e)};return u(()=>p.modelValue,e=>{g.value=[e?.primary?.value??null,e?.secondary?.value??null,e?.tertiary?.value??null]},{immediate:!0,deep:!0}),(n,a)=>(o(),r(`div`,f,[(o(),r(t,null,c(h,(t,n)=>i(l(d),{key:n,value:g.value[n],"onUpdate:value":[e=>g.value[n]=e,e=>y(n)],options:v.value[n],clearable:``,placeholder:e.placeholders[n],disabled:n>0&&!g.value[n-1],class:`n-select-item`},null,8,[`value`,`onUpdate:value`,`options`,`placeholder`,`disabled`])),64))]))}}),[[`__scopeId`,`data-v-cf9c290b`]]);export{p as t};
1
+ import{t as e}from"./export-helper.js";import{Fragment as t,computed as n,createElementBlock as r,createVNode as i,defineComponent as a,openBlock as o,ref as s,renderList as c,unref as l,watch as u}from"vue";import{NSelect as d}from"naive-ui";function f(e,t){return e?[e.primary?.value??null,e.secondary?.value??null,e.tertiary?.value??null]:t}function p(e,t,n=[null,null,null]){let r=f(t,n),i=[null,null,null],a=e;for(let e=0;e<i.length;e++){let t=r[e];if(t===null)break;let n=a.find(e=>e.value===t);if(!n)break;i[e]=n.value,a=n.children??[]}return i}const m={class:`n-cascade-selector`};var h=e(a({name:`C_Cascade`,__name:`index`,props:{data:{},placeholders:{default:()=>[`请选择`,`请选择`,`请选择`]},modelValue:{}},emits:[`update:modelValue`,`change`],setup(e,{emit:a}){let f=e,h=a,g=[0,1,2],_=s([null,null,null]),v=e=>e===0?f.data:_.value[e-1]===null?[]:v(e-1).find(t=>t.value===_.value[e-1])?.children||[],y=n(()=>g.map(e=>v(e).map(e=>({label:e.label,value:e.value})))),b=e=>{_.value.splice(e+1,g.length-e-1,...Array(g.length-e-1).fill(null)),S()},x=e=>{let t=_.value[e];if(t===null)return null;let n=v(e).find(e=>e.value===t);return n?{label:n.label,value:n.value}:null},S=()=>{let e={primary:x(0),secondary:x(1),tertiary:x(2)};h(`update:modelValue`,e),h(`change`,e)};return u(()=>[f.modelValue,f.data],([e,t])=>{_.value=p(t,e,_.value)},{immediate:!0,deep:!0}),(n,a)=>(o(),r(`div`,m,[(o(),r(t,null,c(g,(t,n)=>i(l(d),{key:n,value:_.value[n],"onUpdate:value":[e=>_.value[n]=e,e=>b(n)],options:y.value[n],clearable:``,placeholder:e.placeholders[n],disabled:n>0&&_.value[n-1]===null,class:`n-select-item`},null,8,[`value`,`onUpdate:value`,`options`,`placeholder`,`disabled`])),64))]))}}),[[`__scopeId`,`data-v-cde7c410`]]);export{h as t};
package/dist/C_Chat.css CHANGED
@@ -1,54 +1,54 @@
1
- /* unplugin-vue-components disabled */.c-icon[data-v-d0d8dba0] {
1
+ /* unplugin-vue-components disabled */.c-icon[data-v-711aedcd] {
2
2
  display: inline-flex;
3
3
  align-items: center;
4
4
  justify-content: center;
5
5
  user-select: none;
6
6
  transition: all 0.2s ease-in-out;
7
7
  }
8
- .c-icon--clickable[data-v-d0d8dba0] {
8
+ .c-icon--clickable[data-v-711aedcd] {
9
9
  cursor: pointer;
10
10
  }
11
- .c-icon--clickable[data-v-d0d8dba0]:hover {
11
+ .c-icon--clickable[data-v-711aedcd]:hover {
12
12
  opacity: 0.8;
13
13
  transform: scale(1.05);
14
14
  }
15
- .c-icon--clickable[data-v-d0d8dba0]:active {
15
+ .c-icon--clickable[data-v-711aedcd]:active {
16
16
  transform: scale(0.95);
17
17
  }
18
- .c-icon--clickable[data-v-d0d8dba0]:focus-visible {
18
+ .c-icon--clickable[data-v-711aedcd]:focus-visible {
19
19
  outline: 2px solid currentColor;
20
20
  outline-offset: 2px;
21
21
  border-radius: 4px;
22
22
  }
23
- .c-icon--loading[data-v-d0d8dba0] {
23
+ .c-icon--loading[data-v-711aedcd] {
24
24
  opacity: 0.6;
25
25
  cursor: wait;
26
26
  }
27
- .c-icon--error[data-v-d0d8dba0] {
27
+ .c-icon--error[data-v-711aedcd] {
28
28
  opacity: 0.5;
29
29
  }
30
- .c-icon__loading[data-v-d0d8dba0] {
30
+ .c-icon__loading[data-v-711aedcd] {
31
31
  position: relative;
32
32
  }
33
- .c-icon__spinner[data-v-d0d8dba0] {
33
+ .c-icon__spinner[data-v-711aedcd] {
34
34
  width: 100%;
35
35
  height: 100%;
36
36
  border: 2px solid currentColor;
37
37
  border-radius: 50%;
38
38
  border-top-color: transparent;
39
- animation: spin-d0d8dba0 1s linear infinite;
39
+ animation: spin-711aedcd 1s linear infinite;
40
40
  }
41
- .c-icon__error[data-v-d0d8dba0] {
41
+ .c-icon__error[data-v-711aedcd] {
42
42
  font-size: 0.8em;
43
43
  opacity: 0.5;
44
44
  }
45
- .c-icon__rotatable[data-v-d0d8dba0] {
45
+ .c-icon__rotatable[data-v-711aedcd] {
46
46
  transition: transform 0.3s ease-in-out;
47
47
  }
48
- .c-icon__flippable[data-v-d0d8dba0] {
48
+ .c-icon__flippable[data-v-711aedcd] {
49
49
  transition: transform 0.3s ease-in-out;
50
50
  }
51
- @keyframes spin-d0d8dba0 {
51
+ @keyframes spin-711aedcd {
52
52
  0% {
53
53
  transform: rotate(0deg);
54
54
  }
@@ -58,7 +58,7 @@
58
58
  }
59
59
 
60
60
  /* unplugin-vue-components disabled *//* ─── CSS 变量(基于项目主题变量,自动适配明暗) ───────────────────────── */
61
- .c-chat[data-v-5b4bf8dc] {
61
+ .c-chat[data-v-281bb0dd] {
62
62
  --chat-bg: var(--card-color);
63
63
  --chat-sidebar-bg: var(--body-color);
64
64
  --chat-sidebar-width: 280px;
@@ -96,7 +96,7 @@
96
96
  }
97
97
 
98
98
  /* ─── 联系人侧栏 ──────────────────────────────────────── */
99
- .c-chat__sidebar[data-v-5b4bf8dc] {
99
+ .c-chat__sidebar[data-v-281bb0dd] {
100
100
  display: flex;
101
101
  flex-direction: column;
102
102
  width: var(--chat-sidebar-width);
@@ -105,7 +105,7 @@
105
105
  border-right: 1px solid var(--chat-border);
106
106
  box-shadow: 2px 0 8px var(--chat-shadow-light);
107
107
  }
108
- .c-chat__sidebar-header[data-v-5b4bf8dc] {
108
+ .c-chat__sidebar-header[data-v-281bb0dd] {
109
109
  display: flex;
110
110
  align-items: center;
111
111
  gap: 8px;
@@ -115,22 +115,22 @@
115
115
  font-weight: 600;
116
116
  font-size: 15px;
117
117
  }
118
- .c-chat__search[data-v-5b4bf8dc] {
118
+ .c-chat__search[data-v-281bb0dd] {
119
119
  padding: 8px 12px;
120
120
  }
121
- .c-chat__contact-list[data-v-5b4bf8dc] {
121
+ .c-chat__contact-list[data-v-281bb0dd] {
122
122
  flex: 1;
123
123
  overflow-y: auto;
124
124
  overscroll-behavior: contain;
125
125
  }
126
- .c-chat__contact-list[data-v-5b4bf8dc]::-webkit-scrollbar {
126
+ .c-chat__contact-list[data-v-281bb0dd]::-webkit-scrollbar {
127
127
  width: 4px;
128
128
  }
129
- .c-chat__contact-list[data-v-5b4bf8dc]::-webkit-scrollbar-thumb {
129
+ .c-chat__contact-list[data-v-281bb0dd]::-webkit-scrollbar-thumb {
130
130
  background: var(--chat-scrollbar-thumb);
131
131
  border-radius: 2px;
132
132
  }
133
- .c-chat__contact[data-v-5b4bf8dc] {
133
+ .c-chat__contact[data-v-281bb0dd] {
134
134
  display: flex;
135
135
  align-items: center;
136
136
  gap: 10px;
@@ -138,24 +138,24 @@
138
138
  cursor: pointer;
139
139
  transition: background 0.15s;
140
140
  }
141
- .c-chat__contact[data-v-5b4bf8dc]:hover {
141
+ .c-chat__contact[data-v-281bb0dd]:hover {
142
142
  background: color-mix(in srgb, var(--primary-color) 6%, transparent);
143
143
  }
144
- .c-chat__contact.is-active[data-v-5b4bf8dc] {
144
+ .c-chat__contact.is-active[data-v-281bb0dd] {
145
145
  background: color-mix(in srgb, var(--primary-color) 12%, transparent);
146
146
  }
147
- .c-chat__contact-avatar[data-v-5b4bf8dc] {
147
+ .c-chat__contact-avatar[data-v-281bb0dd] {
148
148
  position: relative;
149
149
  flex-shrink: 0;
150
150
  }
151
- .c-chat__avatar[data-v-5b4bf8dc] {
151
+ .c-chat__avatar[data-v-281bb0dd] {
152
152
  width: var(--chat-avatar-size);
153
153
  height: var(--chat-avatar-size);
154
154
  border-radius: 50%;
155
155
  object-fit: cover;
156
156
  background: color-mix(in srgb, var(--border-color) 50%, transparent);
157
157
  }
158
- .c-chat__avatar-fallback[data-v-5b4bf8dc] {
158
+ .c-chat__avatar-fallback[data-v-281bb0dd] {
159
159
  width: var(--chat-avatar-size);
160
160
  height: var(--chat-avatar-size);
161
161
  border-radius: 50%;
@@ -167,7 +167,7 @@
167
167
  font-weight: 600;
168
168
  color: var(--app-text-primary);
169
169
  }
170
- .c-chat__online-dot[data-v-5b4bf8dc] {
170
+ .c-chat__online-dot[data-v-281bb0dd] {
171
171
  position: absolute;
172
172
  bottom: 0;
173
173
  right: 0;
@@ -177,24 +177,24 @@
177
177
  background: var(--chat-online-color);
178
178
  border: 2px solid var(--chat-sidebar-bg);
179
179
  }
180
- .c-chat__contact-info[data-v-5b4bf8dc] {
180
+ .c-chat__contact-info[data-v-281bb0dd] {
181
181
  flex: 1;
182
182
  min-width: 0;
183
183
  }
184
- .c-chat__contact-name[data-v-5b4bf8dc] {
184
+ .c-chat__contact-name[data-v-281bb0dd] {
185
185
  display: flex;
186
186
  align-items: center;
187
187
  justify-content: space-between;
188
188
  font-size: 13px;
189
189
  font-weight: 500;
190
190
  }
191
- .c-chat__contact-time[data-v-5b4bf8dc] {
191
+ .c-chat__contact-time[data-v-281bb0dd] {
192
192
  font-size: 11px;
193
193
  color: var(--chat-text-secondary);
194
194
  margin-left: 8px;
195
195
  flex-shrink: 0;
196
196
  }
197
- .c-chat__contact-last[data-v-5b4bf8dc] {
197
+ .c-chat__contact-last[data-v-281bb0dd] {
198
198
  font-size: 12px;
199
199
  color: var(--chat-text-secondary);
200
200
  white-space: nowrap;
@@ -202,7 +202,7 @@
202
202
  text-overflow: ellipsis;
203
203
  margin-top: 2px;
204
204
  }
205
- .c-chat__unread[data-v-5b4bf8dc] {
205
+ .c-chat__unread[data-v-281bb0dd] {
206
206
  min-width: 18px;
207
207
  height: 18px;
208
208
  padding: 0 5px;
@@ -218,13 +218,13 @@
218
218
  }
219
219
 
220
220
  /* ─── 主聊天区域 ──────────────────────────────────────── */
221
- .c-chat__main[data-v-5b4bf8dc] {
221
+ .c-chat__main[data-v-281bb0dd] {
222
222
  flex: 1;
223
223
  display: flex;
224
224
  flex-direction: column;
225
225
  min-width: 0;
226
226
  }
227
- .c-chat__header[data-v-5b4bf8dc] {
227
+ .c-chat__header[data-v-281bb0dd] {
228
228
  display: flex;
229
229
  align-items: center;
230
230
  gap: 10px;
@@ -236,14 +236,14 @@
236
236
  font-weight: 600;
237
237
  font-size: 15px;
238
238
  }
239
- .c-chat__header-status[data-v-5b4bf8dc] {
239
+ .c-chat__header-status[data-v-281bb0dd] {
240
240
  font-size: 12px;
241
241
  font-weight: 400;
242
242
  color: var(--chat-text-secondary);
243
243
  }
244
244
 
245
245
  /* ─── 消息区域 ────────────────────────────────────────── */
246
- .c-chat__messages[data-v-5b4bf8dc] {
246
+ .c-chat__messages[data-v-281bb0dd] {
247
247
  flex: 1;
248
248
  overflow-y: auto;
249
249
  overscroll-behavior: contain;
@@ -253,18 +253,18 @@
253
253
  gap: 12px;
254
254
  background: color-mix(in srgb, var(--body-color) 50%, var(--card-color));
255
255
  }
256
- .c-chat__messages[data-v-5b4bf8dc]::-webkit-scrollbar {
256
+ .c-chat__messages[data-v-281bb0dd]::-webkit-scrollbar {
257
257
  width: 4px;
258
258
  }
259
- .c-chat__messages[data-v-5b4bf8dc]::-webkit-scrollbar-thumb {
259
+ .c-chat__messages[data-v-281bb0dd]::-webkit-scrollbar-thumb {
260
260
  background: var(--chat-scrollbar-thumb);
261
261
  border-radius: 2px;
262
262
  }
263
- .c-chat__load-more[data-v-5b4bf8dc] {
263
+ .c-chat__load-more[data-v-281bb0dd] {
264
264
  text-align: center;
265
265
  padding: 8px;
266
266
  }
267
- .c-chat__empty[data-v-5b4bf8dc] {
267
+ .c-chat__empty[data-v-281bb0dd] {
268
268
  flex: 1;
269
269
  display: flex;
270
270
  align-items: center;
@@ -274,129 +274,147 @@
274
274
  }
275
275
 
276
276
  /* ─── 消息气泡 ────────────────────────────────────────── */
277
- .c-chat__msg[data-v-5b4bf8dc] {
277
+ .c-chat__msg[data-v-281bb0dd] {
278
278
  display: flex;
279
279
  gap: 8px;
280
280
  max-width: 75%;
281
281
  }
282
- .c-chat__msg.is-self[data-v-5b4bf8dc] {
282
+ .c-chat__msg.is-self[data-v-281bb0dd] {
283
283
  margin-left: auto;
284
284
  flex-direction: row-reverse;
285
285
  }
286
- .c-chat__msg.is-system[data-v-5b4bf8dc] {
286
+ .c-chat__msg.is-system[data-v-281bb0dd] {
287
287
  max-width: 100%;
288
288
  justify-content: center;
289
289
  align-self: center;
290
290
  }
291
- .c-chat__msg-avatar[data-v-5b4bf8dc] {
291
+ .c-chat__msg-avatar[data-v-281bb0dd] {
292
292
  flex-shrink: 0;
293
293
  margin-top: 2px;
294
294
  }
295
- .c-chat__msg-body[data-v-5b4bf8dc] {
295
+ .c-chat__msg-body[data-v-281bb0dd] {
296
296
  display: flex;
297
297
  flex-direction: column;
298
298
  }
299
- .c-chat__msg-username[data-v-5b4bf8dc] {
299
+ .c-chat__msg-username[data-v-281bb0dd] {
300
300
  font-size: 12px;
301
301
  color: var(--chat-text-secondary);
302
302
  margin-bottom: 2px;
303
303
  }
304
- .is-self .c-chat__msg-username[data-v-5b4bf8dc] {
304
+ .is-self .c-chat__msg-username[data-v-281bb0dd] {
305
305
  text-align: right;
306
306
  }
307
- .c-chat__bubble[data-v-5b4bf8dc] {
307
+ .c-chat__bubble[data-v-281bb0dd] {
308
308
  padding: 10px 14px;
309
309
  border-radius: 16px;
310
310
  line-height: 1.5;
311
311
  word-break: break-word;
312
312
  white-space: pre-wrap;
313
313
  }
314
- .is-other .c-chat__bubble[data-v-5b4bf8dc] {
314
+ .is-other .c-chat__bubble[data-v-281bb0dd] {
315
315
  background: var(--chat-bubble-other);
316
316
  border: 1px solid var(--chat-border);
317
317
  border-top-left-radius: 4px;
318
318
  }
319
- .is-self .c-chat__bubble[data-v-5b4bf8dc] {
319
+ .is-self .c-chat__bubble[data-v-281bb0dd] {
320
320
  background: var(--chat-bubble-self);
321
321
  color: var(--chat-text-self);
322
322
  border-top-right-radius: 4px;
323
323
  }
324
- .is-system .c-chat__bubble[data-v-5b4bf8dc] {
324
+ .is-system .c-chat__bubble[data-v-281bb0dd] {
325
325
  background: var(--chat-bubble-system);
326
326
  color: var(--chat-text-secondary);
327
327
  font-size: 12px;
328
328
  padding: 4px 12px;
329
329
  }
330
- .c-chat__msg-image[data-v-5b4bf8dc] {
330
+ .c-chat__msg-image-button[data-v-281bb0dd] {
331
+ display: inline-flex;
332
+ align-self: flex-start;
333
+ padding: 0;
334
+ border: 0;
335
+ background: none;
336
+ cursor: pointer;
337
+ }
338
+ .c-chat__msg-image[data-v-281bb0dd] {
331
339
  max-width: 240px;
332
340
  max-height: 180px;
333
341
  border-radius: 12px;
334
342
  cursor: pointer;
335
343
  object-fit: cover;
336
344
  }
337
- .is-self .c-chat__msg-image[data-v-5b4bf8dc] {
345
+ .is-self .c-chat__msg-image[data-v-281bb0dd] {
338
346
  border-top-right-radius: 4px;
339
347
  }
340
- .is-other .c-chat__msg-image[data-v-5b4bf8dc] {
348
+ .is-other .c-chat__msg-image[data-v-281bb0dd] {
341
349
  border-top-left-radius: 4px;
342
350
  }
343
- .c-chat__msg-file[data-v-5b4bf8dc] {
351
+ .c-chat__msg-file[data-v-281bb0dd] {
344
352
  display: flex;
345
353
  align-items: center;
346
354
  gap: 8px;
347
355
  padding: 10px 14px;
348
356
  border-radius: 12px;
349
357
  cursor: pointer;
358
+ font: inherit;
359
+ text-align: left;
360
+ border: 0;
350
361
  }
351
- .is-other .c-chat__msg-file[data-v-5b4bf8dc] {
362
+ .is-other .c-chat__msg-file[data-v-281bb0dd] {
352
363
  background: var(--chat-bubble-other);
353
364
  border: 1px solid var(--chat-border);
354
365
  border-top-left-radius: 4px;
355
366
  }
356
- .is-self .c-chat__msg-file[data-v-5b4bf8dc] {
367
+ .is-self .c-chat__msg-file[data-v-281bb0dd] {
357
368
  background: var(--chat-bubble-self);
358
369
  color: var(--chat-text-self);
359
370
  border-top-right-radius: 4px;
360
371
  }
361
- .c-chat__file-info[data-v-5b4bf8dc] {
372
+ .c-chat__file-info[data-v-281bb0dd] {
362
373
  display: flex;
363
374
  flex-direction: column;
364
375
  min-width: 0;
365
376
  }
366
- .c-chat__file-name[data-v-5b4bf8dc] {
377
+ .c-chat__file-name[data-v-281bb0dd] {
367
378
  font-size: 13px;
368
379
  font-weight: 500;
369
380
  white-space: nowrap;
370
381
  overflow: hidden;
371
382
  text-overflow: ellipsis;
372
383
  }
373
- .c-chat__file-size[data-v-5b4bf8dc] {
384
+ .c-chat__file-size[data-v-281bb0dd] {
374
385
  font-size: 11px;
375
386
  opacity: 0.6;
376
387
  }
377
- .c-chat__msg-time[data-v-5b4bf8dc] {
388
+ .c-chat__msg-time[data-v-281bb0dd] {
378
389
  font-size: 11px;
379
390
  color: var(--chat-text-secondary);
380
391
  margin-top: 4px;
381
392
  }
382
- .is-self .c-chat__msg-time[data-v-5b4bf8dc] {
393
+ .is-self .c-chat__msg-time[data-v-281bb0dd] {
383
394
  text-align: right;
384
395
  }
385
- .c-chat__msg-status[data-v-5b4bf8dc] {
396
+ .c-chat__msg-status[data-v-281bb0dd] {
386
397
  font-size: 11px;
387
398
  margin-top: 2px;
388
399
  text-align: right;
389
400
  }
390
- .c-chat__msg-status.is-sending[data-v-5b4bf8dc] {
401
+ .c-chat__msg-status[data-v-281bb0dd]:is(button) {
402
+ align-self: flex-end;
403
+ padding: 0;
404
+ border: 0;
405
+ background: none;
406
+ font-family: inherit;
407
+ }
408
+ .c-chat__msg-status.is-sending[data-v-281bb0dd] {
391
409
  color: var(--chat-text-secondary);
392
410
  }
393
- .c-chat__msg-status.is-failed[data-v-5b4bf8dc] {
411
+ .c-chat__msg-status.is-failed[data-v-281bb0dd] {
394
412
  color: var(--chat-failed-color);
395
413
  cursor: pointer;
396
414
  }
397
415
 
398
416
  /* ─── 时间分割线 ──────────────────────────────────────── */
399
- .c-chat__time-divider[data-v-5b4bf8dc] {
417
+ .c-chat__time-divider[data-v-281bb0dd] {
400
418
  text-align: center;
401
419
  font-size: 11px;
402
420
  color: var(--chat-text-secondary);
@@ -404,7 +422,7 @@
404
422
  }
405
423
 
406
424
  /* ─── 输入区域 ────────────────────────────────────────── */
407
- .c-chat__input-area[data-v-5b4bf8dc] {
425
+ .c-chat__input-area[data-v-281bb0dd] {
408
426
  display: flex;
409
427
  align-items: center;
410
428
  gap: 8px;
@@ -413,21 +431,21 @@
413
431
  background: var(--chat-input-bg);
414
432
  border-top: 1px solid var(--chat-border);
415
433
  }
416
- .c-chat__input-actions[data-v-5b4bf8dc] {
434
+ .c-chat__input-actions[data-v-281bb0dd] {
417
435
  display: flex;
418
436
  gap: 4px;
419
437
  flex-shrink: 0;
420
438
  }
421
- .c-chat__input-wrap[data-v-5b4bf8dc] {
439
+ .c-chat__input-wrap[data-v-281bb0dd] {
422
440
  flex: 1;
423
441
  min-width: 0;
424
442
  }
425
- .c-chat__send-btn[data-v-5b4bf8dc] {
443
+ .c-chat__send-btn[data-v-281bb0dd] {
426
444
  flex-shrink: 0;
427
445
  }
428
446
 
429
447
  /* ─── 空态 ────────────────────────────────────────────── */
430
- .c-chat__no-chat[data-v-5b4bf8dc] {
448
+ .c-chat__no-chat[data-v-281bb0dd] {
431
449
  flex: 1;
432
450
  display: flex;
433
451
  flex-direction: column;
@@ -436,22 +454,22 @@
436
454
  gap: 12px;
437
455
  color: var(--chat-text-secondary);
438
456
  }
439
- .c-chat__no-chat-icon[data-v-5b4bf8dc] {
457
+ .c-chat__no-chat-icon[data-v-281bb0dd] {
440
458
  font-size: 48px;
441
459
  opacity: 0.3;
442
460
  }
443
461
 
444
462
  /* ─── 响应式 ──────────────────────────────────────────── */
445
463
  @media (max-width: 640px) {
446
- .c-chat[data-v-5b4bf8dc] {
464
+ .c-chat[data-v-281bb0dd] {
447
465
  --chat-sidebar-width: 72px;
448
466
  }
449
- .c-chat__contact-info[data-v-5b4bf8dc],
450
- .c-chat__search[data-v-5b4bf8dc],
451
- .c-chat__unread[data-v-5b4bf8dc] {
467
+ .c-chat__contact-info[data-v-281bb0dd],
468
+ .c-chat__search[data-v-281bb0dd],
469
+ .c-chat__unread[data-v-281bb0dd] {
452
470
  display: none;
453
471
  }
454
- .c-chat__contact[data-v-5b4bf8dc] {
472
+ .c-chat__contact[data-v-281bb0dd] {
455
473
  justify-content: center;
456
474
  padding: 10px 8px;
457
475
  }
package/dist/C_Chat.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as DEFAULT_CHAT_PROPS, c as MessageType, i as ChatProps, n as ChatContact, o as MessageSender, r as ChatMessage, s as MessageStatus, t as _default } from "./index8.vue.cjs";
1
+ import { a as DEFAULT_CHAT_PROPS, c as MessageType, i as ChatProps, n as ChatContact, o as MessageSender, r as ChatMessage, s as MessageStatus, t as _default } from "./index7.vue.cjs";
2
2
  export { _default as C_Chat, type ChatContact, type ChatMessage, type ChatProps, DEFAULT_CHAT_PROPS, type MessageSender, type MessageStatus, type MessageType };
package/dist/C_Chat.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as DEFAULT_CHAT_PROPS, c as MessageType, i as ChatProps, n as ChatContact, o as MessageSender, r as ChatMessage, s as MessageStatus, t as _default } from "./index7.vue.js";
1
+ import { a as DEFAULT_CHAT_PROPS, c as MessageType, i as ChatProps, n as ChatContact, o as MessageSender, r as ChatMessage, s as MessageStatus, t as _default } from "./index6.vue.js";
2
2
  export { _default as C_Chat, type ChatContact, type ChatMessage, type ChatProps, DEFAULT_CHAT_PROPS, type MessageSender, type MessageStatus, type MessageType };
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`);const i={placeholder:`输入消息...`,showContacts:!0,showTimestamp:!0,showSendBtn:!0,loadingHistory:!1,title:`聊天`},a={class:`c-chat`},o={key:0,class:`c-chat__sidebar`},s={class:`c-chat__sidebar-header`},c={class:`c-chat__search`},l={class:`c-chat__contact-list`},u=[`onClick`],d={class:`c-chat__contact-avatar`},f=[`src`,`alt`],p={key:1,class:`c-chat__avatar-fallback`},m={key:2,class:`c-chat__online-dot`},h={class:`c-chat__contact-info`},g={class:`c-chat__contact-name`},ee={key:0,class:`c-chat__contact-time`},te={key:0,class:`c-chat__contact-last`},ne={key:0,class:`c-chat__unread`},re={key:1,class:`c-chat__main`},ie={class:`c-chat__header`},_={key:0,class:`c-chat__header-status`},v={key:0,class:`c-chat__load-more`},y={key:1,class:`c-chat__empty`},b={key:0,class:`c-chat__time-divider`},x={key:0,class:`c-chat__msg-avatar`},S=[`src`],C={key:1,class:`c-chat__avatar-fallback`},w={class:`c-chat__msg-body`},T={key:0,class:`c-chat__msg-username`},E={key:1,class:`c-chat__bubble`},D=[`src`,`onClick`],O=[`onClick`],k={class:`c-chat__file-info`},A={class:`c-chat__file-name`},j={key:0,class:`c-chat__file-size`},M={key:4,class:`c-chat__msg-time`},N=[`onClick`],P={class:`c-chat__input-area`},F={class:`c-chat__input-actions`},I={class:`c-chat__input-wrap`},ae={class:`c-chat__main c-chat__no-chat`},L=(0,n.defineComponent)({__name:`index`,props:{contacts:{default:()=>[]},messages:{default:()=>[]},currentContactId:{default:``},placeholder:{default:i.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},title:{default:i.title}},emits:[`send`,`select-contact`,`load-more`,`image-preview`,`file-click`,`file-upload`,`emoji-click`,`resend`],setup(t,{expose:L,emit:R}){let z=t,B=R,V=(0,n.computed)(()=>({...i,...z})),H=(0,n.ref)(``),U=(0,n.ref)(``),W=(0,n.ref)(null),G=(0,n.computed)(()=>z.contacts??[]),K=(0,n.computed)(()=>z.messages??[]),q=(0,n.computed)(()=>z.currentContactId||G.value[0]?.id||``),J=(0,n.computed)(()=>G.value.find(e=>e.id===q.value)),oe=(0,n.computed)(()=>{if(!U.value)return G.value;let e=U.value.toLowerCase();return G.value.filter(t=>t.name.toLowerCase().includes(e))}),se=e=>{B(`select-contact`,e)},Y=()=>{let e=H.value.trim();e&&(B(`send`,e),H.value=``)},X=()=>{(0,n.nextTick)(()=>{W.value&&(W.value.scrollTop=W.value.scrollHeight)})};(0,n.watch)(()=>z.messages?.length,()=>X(),{flush:`post`});let ce=()=>{W.value&&W.value.scrollTop===0&&!V.value.loadingHistory&&B(`load-more`)},Z=e=>e.sender===`self`&&z.selfAvatar||e.avatar,le=e=>e.sender===`self`?z.selfName||e.username||`Me`:e.username||`未知`,Q=e=>{let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}`},$=e=>{let t=new Date(e),n=new Date;return t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate()?Q(e):`${t.getMonth()+1}/${t.getDate()} ${Q(e)}`},ue=e=>{let t=new Date(e),n=new Date().getTime()-t.getTime();return n<6e4?`刚刚`:n<36e5?`${Math.floor(n/6e4)}分钟前`:n<864e5?Q(e):`${t.getMonth()+1}/${t.getDate()}`},de=e=>e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`,fe=(e,t)=>{if(t===0)return!0;let n=K.value[t-1];return new Date(e.timestamp).getTime()-new Date(n.timestamp).getTime()>300*1e3};return L({scrollToBottom:X}),(t,i)=>{let L=r.NInput,R=r.NSpin,z=r.NButton;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,a,[(0,n.createCommentVNode)(` ===== 联系人侧栏 ===== `),V.value.showContacts&&G.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`aside`,o,[(0,n.createElementVNode)(`div`,s,[(0,n.createVNode)(e.t,{name:`mdi:chat-outline`,size:20}),i[4]||=(0,n.createTextVNode)(` 会话 `,-1)]),(0,n.createCommentVNode)(` 搜索框 `),(0,n.createElementVNode)(`div`,c,[(0,n.createVNode)(L,{value:U.value,"onUpdate:value":i[0]||=e=>U.value=e,placeholder:`搜索联系人`,clearable:``,size:`small`},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`])]),(0,n.createCommentVNode)(` 联系人列表 `),(0,n.createElementVNode)(`div`,l,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(oe.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:e.id,class:(0,n.normalizeClass)([`c-chat__contact`,{"is-active":e.id===q.value}]),onClick:t=>se(e.id)},[(0,n.createElementVNode)(`div`,d,[e.avatar?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.avatar,alt:e.name,class:`c-chat__avatar`},null,8,f)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,p,(0,n.toDisplayString)(e.name.charAt(0)),1)),e.online?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,m)):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createElementVNode)(`div`,h,[(0,n.createElementVNode)(`div`,g,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.name),1),e.lastTime?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,ee,(0,n.toDisplayString)(ue(e.lastTime)),1)):(0,n.createCommentVNode)(`v-if`,!0)]),e.lastMessage?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,te,(0,n.toDisplayString)(e.lastMessage),1)):(0,n.createCommentVNode)(`v-if`,!0)]),e.unread?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,ne,(0,n.toDisplayString)(e.unread>99?`99+`:e.unread),1)):(0,n.createCommentVNode)(`v-if`,!0)],10,u))),128))])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` ===== 主聊天区域 ===== `),J.value||!V.value.showContacts?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,re,[(0,n.createCommentVNode)(` 顶栏 `),(0,n.createElementVNode)(`div`,ie,[(0,n.renderSlot)(t.$slots,`header`,{},()=>[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(J.value?.name||V.value.title),1),J.value?.online?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,_,` 在线 `)):(0,n.createCommentVNode)(`v-if`,!0)],!0)]),(0,n.createCommentVNode)(` 消息列表 `),(0,n.createElementVNode)(`div`,{ref_key:`messagesRef`,ref:W,class:`c-chat__messages`,onScroll:ce},[(0,n.createCommentVNode)(` 加载更多 `),V.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,v,[(0,n.createVNode)(R,{size:`small`})])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 消息为空 `),!K.value.length&&!V.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,y,` 暂无消息,发送第一条吧 `)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 消息列表 `),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(K.value,(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:t.id},[(0,n.createCommentVNode)(` 时间分割 `),fe(t,r)?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,b,(0,n.toDisplayString)($(t.timestamp)),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 消息条目 `),(0,n.createElementVNode)(`div`,{class:(0,n.normalizeClass)([`c-chat__msg`,`is-${t.sender}`])},[(0,n.createCommentVNode)(` 头像 `),t.sender===`system`?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,x,[Z(t)?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:Z(t),class:`c-chat__avatar`},null,8,S)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,C,(0,n.toDisplayString)(le(t).charAt(0)),1))])),(0,n.createCommentVNode)(` 消息体 `),(0,n.createElementVNode)(`div`,w,[t.sender===`other`&&t.username?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,T,(0,n.toDisplayString)(t.username),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 文本消息 `),t.type===`text`||t.type===`system`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,E,(0,n.toDisplayString)(t.content),1)):t.type===`image`?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:2},[(0,n.createCommentVNode)(` 图片消息 `),(0,n.createElementVNode)(`img`,{src:t.content,class:`c-chat__msg-image`,onClick:e=>B(`image-preview`,t.content)},null,8,D)],2112)):t.type===`file`?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:3},[(0,n.createCommentVNode)(` 文件消息 `),(0,n.createElementVNode)(`div`,{class:`c-chat__msg-file`,onClick:e=>B(`file-click`,t)},[(0,n.createVNode)(e.t,{name:`mdi:file-document-outline`,size:28}),(0,n.createElementVNode)(`div`,k,[(0,n.createElementVNode)(`span`,A,(0,n.toDisplayString)(t.fileName||`文件`),1),t.fileSize?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,j,(0,n.toDisplayString)(de(t.fileSize)),1)):(0,n.createCommentVNode)(`v-if`,!0)])],8,O)],2112)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 时间戳 `),V.value.showTimestamp&&t.sender!==`system`?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,M,(0,n.toDisplayString)(Q(t.timestamp)),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 发送状态 `),t.sender===`self`&&t.status?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,{key:5,class:(0,n.normalizeClass)([`c-chat__msg-status`,`is-${t.status}`]),onClick:e=>t.status===`failed`&&B(`resend`,t)},(0,n.toDisplayString)(t.status===`sending`?`发送中...`:t.status===`failed`?`发送失败,点击重试`:``),11,N)):(0,n.createCommentVNode)(`v-if`,!0)])],2)],64))),128))],544),(0,n.createCommentVNode)(` 输入区域 `),(0,n.createElementVNode)(`div`,P,[(0,n.createElementVNode)(`div`,F,[(0,n.renderSlot)(t.$slots,`input-actions`,{},()=>[(0,n.createVNode)(z,{quaternary:``,circle:``,size:`small`,onClick:i[1]||=e=>B(`emoji-click`)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:emoticon-happy-outline`,size:18})]),_:1}),(0,n.createVNode)(z,{quaternary:``,circle:``,size:`small`,onClick:i[2]||=e=>B(`file-upload`)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:paperclip`,size:18})]),_:1})],!0)]),(0,n.createElementVNode)(`div`,I,[(0,n.createVNode)(L,{value:H.value,"onUpdate:value":i[3]||=e=>H.value=e,placeholder:V.value.placeholder,type:`textarea`,autosize:{minRows:1,maxRows:4},onKeydown:(0,n.withKeys)((0,n.withModifiers)(Y,[`exact`,`prevent`]),[`enter`])},null,8,[`value`,`placeholder`,`onKeydown`])]),V.value.showSendBtn?((0,n.openBlock)(),(0,n.createBlock)(z,{key:0,type:`primary`,disabled:!H.value.trim(),class:`c-chat__send-btn`,onClick:Y},{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`,ae,[(0,n.createVNode)(e.t,{name:`mdi:chat-processing-outline`,size:48,class:`c-chat__no-chat-icon`}),i[5]||=(0,n.createElementVNode)(`span`,null,`选择一个会话开始聊天`,-1)])],2112))])}}});var R=t.t(L,[[`__scopeId`,`data-v-5b4bf8dc`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return R}});
1
+ require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={placeholder:`输入消息...`,showContacts:!0,showTimestamp:!0,showSendBtn:!0,loadingHistory:!1,title:`聊天`},a={class:`c-chat`},o={key:0,class:`c-chat__sidebar`},s={class:`c-chat__sidebar-header`},c={class:`c-chat__search`},l={class:`c-chat__contact-list`},u=[`onClick`],d={class:`c-chat__contact-avatar`},f=[`src`,`alt`],p={key:1,class:`c-chat__avatar-fallback`},m={key:2,class:`c-chat__online-dot`},ee={class:`c-chat__contact-info`},te={class:`c-chat__contact-name`},ne={key:0,class:`c-chat__contact-time`},re={key:0,class:`c-chat__contact-last`},h={key:0,class:`c-chat__unread`},ie={key:1,class:`c-chat__main`},ae={class:`c-chat__header`},oe={key:0,class:`c-chat__header-status`},g={key:0,class:`c-chat__load-more`},_={key:1,class:`c-chat__empty`},v={key:0,class:`c-chat__time-divider`},y={key:0,class:`c-chat__msg-avatar`},b=[`src`],x={key:1,class:`c-chat__avatar-fallback`},S={class:`c-chat__msg-body`},C={key:0,class:`c-chat__msg-username`},w={key:1,class:`c-chat__bubble`},T=[`aria-label`,`onClick`],E=[`src`,`alt`],D=[`onClick`],O={class:`c-chat__file-info`},k={class:`c-chat__file-name`},A={key:0,class:`c-chat__file-size`},j={key:4,class:`c-chat__msg-time`},M=[`onClick`],N={key:6,class:`c-chat__msg-status is-sending`},P={class:`c-chat__input-area`},F={class:`c-chat__input-actions`},I={class:`c-chat__input-wrap`},L={class:`c-chat__main c-chat__no-chat`},R=(0,n.defineComponent)({__name:`index`,props:{contacts:{default:()=>[]},messages:{default:()=>[]},currentContactId:{default:``},placeholder:{default:i.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},title:{default:i.title}},emits:[`send`,`select-contact`,`load-more`,`image-preview`,`file-click`,`file-upload`,`emoji-click`,`resend`],setup(t,{expose:R,emit:z}){let B=t,V=z,H=(0,n.computed)(()=>({...i,...B})),U=(0,n.ref)(``),W=(0,n.ref)(``),G=(0,n.ref)(null),K=(0,n.computed)(()=>B.contacts??[]),q=(0,n.computed)(()=>B.messages??[]),J=(0,n.computed)(()=>B.currentContactId||K.value[0]?.id||``),Y=(0,n.computed)(()=>K.value.find(e=>e.id===J.value)),se=(0,n.computed)(()=>{if(!W.value)return K.value;let e=W.value.toLowerCase();return K.value.filter(t=>t.name.toLowerCase().includes(e))}),ce=e=>{V(`select-contact`,e)},X=()=>{let e=U.value.trim();e&&(V(`send`,e),U.value=``)},Z=()=>{(0,n.nextTick)(()=>{G.value&&(G.value.scrollTop=G.value.scrollHeight)})};(0,n.watch)(()=>B.messages?.length,()=>Z(),{flush:`post`});let le=()=>{G.value&&G.value.scrollTop===0&&!H.value.loadingHistory&&V(`load-more`)},Q=e=>e.sender===`self`&&B.selfAvatar||e.avatar,ue=e=>e.sender===`self`?B.selfName||e.username||`Me`:e.username||`未知`,$=e=>{let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}`},de=e=>{let t=new Date(e),n=new Date;return t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate()?$(e):`${t.getMonth()+1}/${t.getDate()} ${$(e)}`},fe=e=>{let t=new Date(e),n=new Date().getTime()-t.getTime();return n<6e4?`刚刚`:n<36e5?`${Math.floor(n/6e4)}分钟前`:n<864e5?$(e):`${t.getMonth()+1}/${t.getDate()}`},pe=e=>e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`,me=(e,t)=>{if(t===0)return!0;let n=q.value[t-1];return new Date(e.timestamp).getTime()-new Date(n.timestamp).getTime()>300*1e3};return R({scrollToBottom:Z}),(t,i)=>{let R=r.NInput,z=r.NSpin,B=r.NButton;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,a,[(0,n.createCommentVNode)(` ===== 联系人侧栏 ===== `),H.value.showContacts&&K.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`aside`,o,[(0,n.createElementVNode)(`div`,s,[(0,n.createVNode)(e.t,{name:`mdi:chat-outline`,size:20}),i[4]||=(0,n.createTextVNode)(` 会话 `,-1)]),(0,n.createCommentVNode)(` 搜索框 `),(0,n.createElementVNode)(`div`,c,[(0,n.createVNode)(R,{value:W.value,"onUpdate:value":i[0]||=e=>W.value=e,placeholder:`搜索联系人`,clearable:``,size:`small`},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`])]),(0,n.createCommentVNode)(` 联系人列表 `),(0,n.createElementVNode)(`div`,l,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(se.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:e.id,class:(0,n.normalizeClass)([`c-chat__contact`,{"is-active":e.id===J.value}]),onClick:t=>ce(e.id)},[(0,n.createElementVNode)(`div`,d,[e.avatar?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:e.avatar,alt:e.name,class:`c-chat__avatar`},null,8,f)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,p,(0,n.toDisplayString)(e.name.charAt(0)),1)),e.online?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,m)):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createElementVNode)(`div`,ee,[(0,n.createElementVNode)(`div`,te,[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(e.name),1),e.lastTime?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,ne,(0,n.toDisplayString)(fe(e.lastTime)),1)):(0,n.createCommentVNode)(`v-if`,!0)]),e.lastMessage?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,re,(0,n.toDisplayString)(e.lastMessage),1)):(0,n.createCommentVNode)(`v-if`,!0)]),e.unread?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,h,(0,n.toDisplayString)(e.unread>99?`99+`:e.unread),1)):(0,n.createCommentVNode)(`v-if`,!0)],10,u))),128))])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` ===== 主聊天区域 ===== `),Y.value||!H.value.showContacts?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ie,[(0,n.createCommentVNode)(` 顶栏 `),(0,n.createElementVNode)(`div`,ae,[(0,n.renderSlot)(t.$slots,`header`,{},()=>[(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(Y.value?.name||H.value.title),1),Y.value?.online?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,oe,` 在线 `)):(0,n.createCommentVNode)(`v-if`,!0)],!0)]),(0,n.createCommentVNode)(` 消息列表 `),(0,n.createElementVNode)(`div`,{ref_key:`messagesRef`,ref:G,class:`c-chat__messages`,onScroll:le},[(0,n.createCommentVNode)(` 加载更多 `),H.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,g,[(0,n.createVNode)(z,{size:`small`})])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 消息为空 `),!q.value.length&&!H.value.loadingHistory?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,_,` 暂无消息,发送第一条吧 `)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 消息列表 `),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(q.value,(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:t.id},[(0,n.createCommentVNode)(` 时间分割 `),me(t,r)?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,v,(0,n.toDisplayString)(de(t.timestamp)),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 消息条目 `),(0,n.createElementVNode)(`div`,{class:(0,n.normalizeClass)([`c-chat__msg`,`is-${t.sender}`])},[(0,n.createCommentVNode)(` 头像 `),t.sender===`system`?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,y,[Q(t)?((0,n.openBlock)(),(0,n.createElementBlock)(`img`,{key:0,src:Q(t),class:`c-chat__avatar`},null,8,b)):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,x,(0,n.toDisplayString)(ue(t).charAt(0)),1))])),(0,n.createCommentVNode)(` 消息体 `),(0,n.createElementVNode)(`div`,S,[t.sender===`other`&&t.username?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,C,(0,n.toDisplayString)(t.username),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 文本消息 `),t.type===`text`||t.type===`system`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,w,(0,n.toDisplayString)(t.content),1)):t.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.username||`聊天`}的图片`,onClick:e=>V(`image-preview`,t.content)},[(0,n.createElementVNode)(`img`,{src:t.content,alt:t.fileName||`聊天图片`,class:`c-chat__msg-image`},null,8,E)],8,T)],2112)):t.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:e=>V(`file-click`,t)},[(0,n.createVNode)(e.t,{name:`mdi:file-document-outline`,size:28}),(0,n.createElementVNode)(`div`,O,[(0,n.createElementVNode)(`span`,k,(0,n.toDisplayString)(t.fileName||`文件`),1),t.fileSize?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,A,(0,n.toDisplayString)(pe(t.fileSize)),1)):(0,n.createCommentVNode)(`v-if`,!0)])],8,D)],2112)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 时间戳 `),H.value.showTimestamp&&t.sender!==`system`?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,j,(0,n.toDisplayString)($(t.timestamp)),1)):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 发送状态 `),t.sender===`self`&&t.status===`failed`?((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:5,type:`button`,class:`c-chat__msg-status is-failed`,onClick:e=>V(`resend`,t)},` 发送失败,点击重试 `,8,M)):t.sender===`self`&&t.status===`sending`?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,N,`发送中...`)):(0,n.createCommentVNode)(`v-if`,!0)])],2)],64))),128))],544),(0,n.createCommentVNode)(` 输入区域 `),(0,n.createElementVNode)(`div`,P,[(0,n.createElementVNode)(`div`,F,[(0,n.renderSlot)(t.$slots,`input-actions`,{},()=>[(0,n.createVNode)(B,{quaternary:``,circle:``,size:`small`,onClick:i[1]||=e=>V(`emoji-click`)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:emoticon-happy-outline`,size:18})]),_:1}),(0,n.createVNode)(B,{quaternary:``,circle:``,size:`small`,onClick:i[2]||=e=>V(`file-upload`)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:paperclip`,size:18})]),_:1})],!0)]),(0,n.createElementVNode)(`div`,I,[(0,n.createVNode)(R,{value:U.value,"onUpdate:value":i[3]||=e=>U.value=e,placeholder:H.value.placeholder,type:`textarea`,autosize:{minRows:1,maxRows:4},onKeydown:(0,n.withKeys)((0,n.withModifiers)(X,[`exact`,`prevent`]),[`enter`])},null,8,[`value`,`placeholder`,`onKeydown`])]),H.value.showSendBtn?((0,n.openBlock)(),(0,n.createBlock)(B,{key:0,type:`primary`,disabled:!U.value.trim(),class:`c-chat__send-btn`,onClick:X},{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`,L,[(0,n.createVNode)(e.t,{name:`mdi:chat-processing-outline`,size:48,class:`c-chat__no-chat-icon`}),i[5]||=(0,n.createElementVNode)(`span`,null,`选择一个会话开始聊天`,-1)])],2112))])}}});var z=t.t(R,[[`__scopeId`,`data-v-281bb0dd`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return z}});