@lobehub/ui 4.33.4 → 4.34.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 (591) hide show
  1. package/README.md +3 -3
  2. package/es/A/index.mjs.map +1 -1
  3. package/es/Accordion/Accordion.d.mts +2 -2
  4. package/es/Accordion/Accordion.mjs +1 -1
  5. package/es/Accordion/Accordion.mjs.map +1 -1
  6. package/es/Accordion/AccordionItem.d.mts +2 -2
  7. package/es/Accordion/AccordionItem.mjs +13 -13
  8. package/es/Accordion/AccordionItem.mjs.map +1 -1
  9. package/es/Accordion/context.mjs +2 -2
  10. package/es/Accordion/context.mjs.map +1 -1
  11. package/es/ActionIcon/ActionIcon.d.mts +2 -2
  12. package/es/ActionIcon/ActionIcon.mjs +2 -2
  13. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  14. package/es/ActionIcon/style.mjs.map +1 -1
  15. package/es/ActionIconGroup/ActionIconGroup.mjs +3 -3
  16. package/es/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  17. package/es/ActionIconGroup/style.mjs.map +1 -1
  18. package/es/Alert/Alert.d.mts +2 -2
  19. package/es/Alert/Alert.mjs +6 -6
  20. package/es/Alert/Alert.mjs.map +1 -1
  21. package/es/Alert/style.mjs.map +1 -1
  22. package/es/AutoComplete/Select.d.mts +2 -2
  23. package/es/AutoComplete/Select.mjs +1 -1
  24. package/es/AutoComplete/Select.mjs.map +1 -1
  25. package/es/AutoComplete/style.mjs.map +1 -1
  26. package/es/Avatar/Avatar.mjs +4 -4
  27. package/es/Avatar/Avatar.mjs.map +1 -1
  28. package/es/Avatar/AvatarGroup/index.d.mts +2 -2
  29. package/es/Avatar/AvatarGroup/index.mjs +5 -5
  30. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  31. package/es/Avatar/index.mjs.map +1 -1
  32. package/es/Avatar/style.mjs.map +1 -1
  33. package/es/Avatar/utils.mjs.map +1 -1
  34. package/es/Block/style.mjs.map +1 -1
  35. package/es/Burger/Burger.d.mts +2 -2
  36. package/es/Burger/Burger.mjs +2 -2
  37. package/es/Burger/Burger.mjs.map +1 -1
  38. package/es/Burger/type.d.mts +1 -1
  39. package/es/Button/Button.mjs +7 -7
  40. package/es/Button/Button.mjs.map +1 -1
  41. package/es/Button/style.mjs.map +1 -1
  42. package/es/Checkbox/Checkbox.mjs +6 -6
  43. package/es/Checkbox/Checkbox.mjs.map +1 -1
  44. package/es/Checkbox/CheckboxGroup.mjs +2 -2
  45. package/es/Checkbox/CheckboxGroup.mjs.map +1 -1
  46. package/es/Checkbox/index.mjs.map +1 -1
  47. package/es/CodeDiff/CodeDiff.d.mts +2 -2
  48. package/es/CodeDiff/CodeDiff.mjs +3 -3
  49. package/es/CodeDiff/CodeDiff.mjs.map +1 -1
  50. package/es/CodeDiff/PatchDiff.d.mts +2 -2
  51. package/es/CodeDiff/PatchDiff.mjs +3 -3
  52. package/es/CodeDiff/PatchDiff.mjs.map +1 -1
  53. package/es/CodeDiff/style.mjs.map +1 -1
  54. package/es/CodeEditor/CodeEditor.d.mts +2 -2
  55. package/es/CodeEditor/CodeEditor.mjs +3 -3
  56. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  57. package/es/CodeEditor/style.mjs.map +1 -1
  58. package/es/Collapse/Collapse.d.mts +2 -2
  59. package/es/Collapse/Collapse.mjs +5 -5
  60. package/es/Collapse/Collapse.mjs.map +1 -1
  61. package/es/Collapse/style.mjs.map +1 -1
  62. package/es/ColorSwatches/ColorSwatches.mjs +9 -9
  63. package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
  64. package/es/ConfigProvider/index.d.mts +3 -3
  65. package/es/ConfigProvider/index.mjs.map +1 -1
  66. package/es/ContextMenu/ContextMenuHost.d.mts +2 -2
  67. package/es/ContextMenu/ContextMenuHost.mjs +10 -3
  68. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  69. package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  70. package/es/ContextMenu/renderItems.d.mts +1 -1
  71. package/es/ContextMenu/renderItems.mjs +39 -14
  72. package/es/ContextMenu/renderItems.mjs.map +1 -1
  73. package/es/ContextMenu/store.d.mts +3 -1
  74. package/es/ContextMenu/store.mjs +1 -0
  75. package/es/ContextMenu/store.mjs.map +1 -1
  76. package/es/CopyButton/CopyButton.d.mts +2 -2
  77. package/es/DatePicker/DatePicker.d.mts +2 -2
  78. package/es/DatePicker/DatePicker.mjs +1 -1
  79. package/es/DatePicker/DatePicker.mjs.map +1 -1
  80. package/es/DatePicker/style.mjs.map +1 -1
  81. package/es/DraggablePanel/DraggablePanel.mjs +7 -7
  82. package/es/DraggablePanel/DraggablePanel.mjs.map +1 -1
  83. package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -2
  84. package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -2
  85. package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -2
  86. package/es/DraggablePanel/components/DraggablePanelFooter.mjs +1 -1
  87. package/es/DraggablePanel/components/DraggablePanelFooter.mjs.map +1 -1
  88. package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -2
  89. package/es/DraggablePanel/components/DraggablePanelHeader.mjs +5 -5
  90. package/es/DraggablePanel/components/DraggablePanelHeader.mjs.map +1 -1
  91. package/es/DraggablePanel/index.mjs +1 -1
  92. package/es/DraggablePanel/index.mjs.map +1 -1
  93. package/es/DraggablePanel/style.mjs.map +1 -1
  94. package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -2
  95. package/es/DraggableSideNav/DraggableSideNav.mjs +3 -3
  96. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  97. package/es/Drawer/Drawer.d.mts +2 -2
  98. package/es/Drawer/Drawer.mjs +5 -5
  99. package/es/Drawer/Drawer.mjs.map +1 -1
  100. package/es/Dropdown/Dropdown.d.mts +2 -2
  101. package/es/DropdownMenu/DropdownMenu.d.mts +2 -2
  102. package/es/DropdownMenu/DropdownMenu.mjs +7 -3
  103. package/es/DropdownMenu/DropdownMenu.mjs.map +1 -1
  104. package/es/DropdownMenu/atoms.d.mts +33 -17
  105. package/es/DropdownMenu/atoms.mjs +20 -6
  106. package/es/DropdownMenu/atoms.mjs.map +1 -1
  107. package/es/DropdownMenu/index.d.mts +2 -2
  108. package/es/DropdownMenu/index.mjs +2 -2
  109. package/es/DropdownMenu/renderItems.d.mts +1 -1
  110. package/es/DropdownMenu/renderItems.mjs +36 -14
  111. package/es/DropdownMenu/renderItems.mjs.map +1 -1
  112. package/es/DropdownMenu/type.d.mts +8 -1
  113. package/es/EditableText/ControlInput.mjs +29 -29
  114. package/es/EditableText/ControlInput.mjs.map +1 -1
  115. package/es/EditableText/EditableText.d.mts +2 -2
  116. package/es/EditableText/EditableText.mjs +14 -14
  117. package/es/EditableText/EditableText.mjs.map +1 -1
  118. package/es/EditorSlashMenu/EditorSlashMenu.mjs +2 -2
  119. package/es/EditorSlashMenu/EditorSlashMenu.mjs.map +1 -1
  120. package/es/EditorSlashMenu/MenuItemRenderer.mjs +1 -1
  121. package/es/EditorSlashMenu/MenuItemRenderer.mjs.map +1 -1
  122. package/es/EditorSlashMenu/atoms.d.mts +22 -13
  123. package/es/EditorSlashMenu/atoms.mjs +3 -4
  124. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  125. package/es/EmojiPicker/AvatarUploader.mjs +5 -5
  126. package/es/EmojiPicker/AvatarUploader.mjs.map +1 -1
  127. package/es/EmojiPicker/EmojiPicker.d.mts +2 -2
  128. package/es/EmojiPicker/EmojiPicker.mjs +20 -20
  129. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  130. package/es/Empty/Empty.mjs +2 -2
  131. package/es/Empty/Empty.mjs.map +1 -1
  132. package/es/FileTypeIcon/components/FileIcon.mjs.map +1 -1
  133. package/es/FileTypeIcon/components/FolderIcon.mjs.map +1 -1
  134. package/es/Flex/FlexBasic.d.mts +2 -2
  135. package/es/FluentEmoji/FluentEmoji.mjs +1 -1
  136. package/es/FluentEmoji/FluentEmoji.mjs.map +1 -1
  137. package/es/FontLoader/index.d.mts +2 -2
  138. package/es/Footer/Footer.d.mts +2 -2
  139. package/es/Footer/Footer.mjs +1 -1
  140. package/es/Footer/Footer.mjs.map +1 -1
  141. package/es/Form/Form.mjs +12 -12
  142. package/es/Form/Form.mjs.map +1 -1
  143. package/es/Form/components/FormGroup.mjs +5 -5
  144. package/es/Form/components/FormGroup.mjs.map +1 -1
  145. package/es/Form/components/FormProvider.mjs.map +1 -1
  146. package/es/Form/components/FormSubmitFooter.mjs +5 -5
  147. package/es/Form/components/FormSubmitFooter.mjs.map +1 -1
  148. package/es/Form/components/FormTitle.mjs +1 -1
  149. package/es/Form/components/FormTitle.mjs.map +1 -1
  150. package/es/Form/components/merge.mjs.map +1 -1
  151. package/es/Form/index.mjs +1 -1
  152. package/es/Form/index.mjs.map +1 -1
  153. package/es/Form/style.mjs.map +1 -1
  154. package/es/Form/type.d.mts +1 -1
  155. package/es/FormModal/FormModal.d.mts +2 -2
  156. package/es/FormModal/FormModal.mjs +10 -10
  157. package/es/FormModal/FormModal.mjs.map +1 -1
  158. package/es/GroupAvatar/style.mjs.map +1 -1
  159. package/es/GroupAvatar/type.d.mts +1 -1
  160. package/es/GuideCard/style.mjs.map +1 -1
  161. package/es/Header/Header.d.mts +2 -2
  162. package/es/Header/Header.mjs +5 -5
  163. package/es/Header/Header.mjs.map +1 -1
  164. package/es/Highlighter/FullFeatured.mjs +9 -9
  165. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  166. package/es/Highlighter/Highlighter.d.mts +2 -2
  167. package/es/Highlighter/Highlighter.mjs +4 -4
  168. package/es/Highlighter/Highlighter.mjs.map +1 -1
  169. package/es/Highlighter/LangSelect.mjs +6 -6
  170. package/es/Highlighter/LangSelect.mjs.map +1 -1
  171. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs +2 -2
  172. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs.map +1 -1
  173. package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -2
  174. package/es/Highlighter/SyntaxHighlighter/style.mjs.map +1 -1
  175. package/es/Highlighter/style.mjs.map +1 -1
  176. package/es/Hotkey/Hotkey.d.mts +2 -2
  177. package/es/Hotkey/Hotkey.mjs +5 -5
  178. package/es/Hotkey/Hotkey.mjs.map +1 -1
  179. package/es/Hotkey/style.mjs.map +1 -1
  180. package/es/HotkeyInput/HotkeyInput.d.mts +2 -2
  181. package/es/HotkeyInput/HotkeyInput.mjs +8 -8
  182. package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
  183. package/es/HotkeyInput/style.mjs.map +1 -1
  184. package/es/Icon/Icon.d.mts +2 -2
  185. package/es/Icon/Icon.mjs.map +1 -1
  186. package/es/Icon/components/IconProvider.d.mts +3 -3
  187. package/es/Icon/components/IconProvider.mjs.map +1 -1
  188. package/es/Icon/style.mjs.map +1 -1
  189. package/es/Image/Image.mjs +3 -3
  190. package/es/Image/Image.mjs.map +1 -1
  191. package/es/Image/PreviewGroup.d.mts +2 -2
  192. package/es/Image/PreviewGroup.mjs.map +1 -1
  193. package/es/Image/components/Preview.mjs.map +1 -1
  194. package/es/Image/components/Toolbar.mjs +1 -1
  195. package/es/Image/components/Toolbar.mjs.map +1 -1
  196. package/es/Image/components/usePreviewGroup.mjs.map +1 -1
  197. package/es/Image/style.mjs.map +1 -1
  198. package/es/ImageSelect/ImageSelect.mjs +5 -5
  199. package/es/ImageSelect/ImageSelect.mjs.map +1 -1
  200. package/es/Img/index.mjs.map +1 -1
  201. package/es/Input/Input.d.mts +2 -2
  202. package/es/Input/Input.mjs +2 -2
  203. package/es/Input/Input.mjs.map +1 -1
  204. package/es/Input/InputNumber.d.mts +2 -2
  205. package/es/Input/InputNumber.mjs +2 -2
  206. package/es/Input/InputNumber.mjs.map +1 -1
  207. package/es/Input/InputOPT.mjs +2 -2
  208. package/es/Input/InputOPT.mjs.map +1 -1
  209. package/es/Input/InputPassword.d.mts +2 -2
  210. package/es/Input/InputPassword.mjs +2 -2
  211. package/es/Input/InputPassword.mjs.map +1 -1
  212. package/es/Input/TextArea.d.mts +2 -2
  213. package/es/Input/TextArea.mjs +2 -2
  214. package/es/Input/TextArea.mjs.map +1 -1
  215. package/es/Input/style.mjs.map +1 -1
  216. package/es/Layout/Layout.mjs +1 -1
  217. package/es/Layout/Layout.mjs.map +1 -1
  218. package/es/Layout/components/LayoutFooter.d.mts +2 -2
  219. package/es/Layout/components/LayoutHeader.d.mts +2 -2
  220. package/es/Layout/components/LayoutMain.d.mts +2 -2
  221. package/es/Layout/components/LayoutSidebar.d.mts +2 -2
  222. package/es/Layout/components/LayoutSidebarInner.d.mts +2 -2
  223. package/es/Layout/components/LayoutToc.d.mts +2 -2
  224. package/es/Layout/index.mjs.map +1 -1
  225. package/es/List/List.mjs +6 -6
  226. package/es/List/List.mjs.map +1 -1
  227. package/es/List/ListItem/index.d.mts +2 -2
  228. package/es/List/ListItem/index.mjs +11 -11
  229. package/es/List/ListItem/index.mjs.map +1 -1
  230. package/es/LobeSelect/LobeSelect.d.mts +2 -2
  231. package/es/LobeSelect/LobeSelect.mjs +16 -16
  232. package/es/LobeSelect/LobeSelect.mjs.map +1 -1
  233. package/es/LobeSelect/atoms.d.mts +19 -19
  234. package/es/LobeSelect/atoms.mjs +1 -1
  235. package/es/LobeSelect/atoms.mjs.map +1 -1
  236. package/es/LobeSwitch/LobeSwitch.d.mts +2 -2
  237. package/es/LobeSwitch/LobeSwitch.mjs +2 -2
  238. package/es/LobeSwitch/LobeSwitch.mjs.map +1 -1
  239. package/es/LobeSwitch/atoms.d.mts +4 -4
  240. package/es/LobeSwitch/atoms.mjs +8 -8
  241. package/es/LobeSwitch/atoms.mjs.map +1 -1
  242. package/es/Markdown/Markdown.d.mts +2 -2
  243. package/es/Markdown/Markdown.mjs +3 -3
  244. package/es/Markdown/Markdown.mjs.map +1 -1
  245. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs.map +1 -1
  246. package/es/Markdown/Typography.d.mts +2 -2
  247. package/es/Markdown/components/CodeBlock.mjs.map +1 -1
  248. package/es/Markdown/components/Footnotes.mjs +3 -3
  249. package/es/Markdown/components/Footnotes.mjs.map +1 -1
  250. package/es/Markdown/components/MarkdownProvider.mjs.map +1 -1
  251. package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs +3 -3
  252. package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs.map +1 -1
  253. package/es/Markdown/components/SearchResultCards/index.d.mts +2 -2
  254. package/es/Markdown/components/SearchResultCards/index.mjs +1 -1
  255. package/es/Markdown/components/SearchResultCards/index.mjs.map +1 -1
  256. package/es/Markdown/plugins/rehypeCustomFootnotes.mjs.map +1 -1
  257. package/es/Markdown/plugins/rehypeKatexDir.mjs.map +1 -1
  258. package/es/Markdown/plugins/rehypeStreamAnimated.mjs.map +1 -1
  259. package/es/Markdown/plugins/remarkColor.mjs +1 -1
  260. package/es/Markdown/plugins/remarkColor.mjs.map +1 -1
  261. package/es/Markdown/plugins/remarkCustomFootnotes.mjs.map +1 -1
  262. package/es/Markdown/plugins/remarkVideo.mjs +3 -3
  263. package/es/Markdown/plugins/remarkVideo.mjs.map +1 -1
  264. package/es/Markdown/style.mjs.map +1 -1
  265. package/es/MaskShadow/MaskShadow.d.mts +2 -2
  266. package/es/MaskShadow/style.mjs.map +1 -1
  267. package/es/Menu/Menu.d.mts +2 -2
  268. package/es/Menu/Menu.mjs.map +1 -1
  269. package/es/Menu/checkboxItem.d.mts +1 -0
  270. package/es/Menu/index.d.mts +2 -2
  271. package/es/Menu/renderUtils.d.mts +4 -1
  272. package/es/Menu/renderUtils.mjs.map +1 -1
  273. package/es/Menu/sharedStyle.d.mts +4 -0
  274. package/es/Menu/sharedStyle.mjs +24 -0
  275. package/es/Menu/sharedStyle.mjs.map +1 -1
  276. package/es/Menu/style.mjs.map +1 -1
  277. package/es/Menu/switchItem.d.mts +1 -0
  278. package/es/Menu/type.d.mts +3 -1
  279. package/es/Mermaid/FullFeatured.mjs +7 -7
  280. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  281. package/es/Mermaid/Mermaid.d.mts +2 -2
  282. package/es/Mermaid/Mermaid.mjs +1 -1
  283. package/es/Mermaid/Mermaid.mjs.map +1 -1
  284. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs +3 -3
  285. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs.map +1 -1
  286. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs +3 -3
  287. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs.map +1 -1
  288. package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -2
  289. package/es/Mermaid/SyntaxMermaid/style.mjs.map +1 -1
  290. package/es/Modal/Modal.d.mts +2 -2
  291. package/es/Modal/Modal.mjs +25 -25
  292. package/es/Modal/Modal.mjs.map +1 -1
  293. package/es/Modal/ModalProvider.d.mts +2 -2
  294. package/es/Modal/ModalStackItem.mjs +1 -1
  295. package/es/Modal/ModalStackItem.mjs.map +1 -1
  296. package/es/Modal/imperative.d.mts +2 -2
  297. package/es/Modal/imperative.mjs +5 -5
  298. package/es/Modal/imperative.mjs.map +1 -1
  299. package/es/MotionProvider/index.d.mts +2 -2
  300. package/es/MotionProvider/index.mjs.map +1 -1
  301. package/es/Popover/ArrowIcon.d.mts +2 -2
  302. package/es/Popover/Popover.mjs +2 -2
  303. package/es/Popover/Popover.mjs.map +1 -1
  304. package/es/Popover/PopoverGroup.mjs +2 -2
  305. package/es/Popover/PopoverGroup.mjs.map +1 -1
  306. package/es/Popover/PopoverInGroup.mjs +2 -2
  307. package/es/Popover/PopoverInGroup.mjs.map +1 -1
  308. package/es/Popover/PopoverStandalone.mjs +1 -1
  309. package/es/Popover/PopoverStandalone.mjs.map +1 -1
  310. package/es/Popover/atoms.d.mts +2 -2
  311. package/es/Popover/atoms.mjs +1 -1
  312. package/es/Popover/atoms.mjs.map +1 -1
  313. package/es/Popover/context.d.mts +2 -2
  314. package/es/Popover/context.mjs.map +1 -1
  315. package/es/Popover/groupContext.mjs.map +1 -1
  316. package/es/ScrollArea/atoms.d.mts +7 -7
  317. package/es/ScrollArea/type.d.mts +1 -1
  318. package/es/ScrollShadow/style.mjs.map +1 -1
  319. package/es/ScrollShadow/useScrollOverflow.mjs.map +1 -1
  320. package/es/SearchBar/SearchBar.d.mts +2 -2
  321. package/es/SearchBar/SearchBar.mjs +12 -12
  322. package/es/SearchBar/SearchBar.mjs.map +1 -1
  323. package/es/Segmented/Segmented.d.mts +2 -2
  324. package/es/Segmented/style.mjs.map +1 -1
  325. package/es/Select/Select.d.mts +2 -2
  326. package/es/Select/Select.mjs +2 -2
  327. package/es/Select/Select.mjs.map +1 -1
  328. package/es/Select/style.mjs.map +1 -1
  329. package/es/SideNav/SideNav.d.mts +2 -2
  330. package/es/Skeleton/Skeleton.mjs +1 -1
  331. package/es/Skeleton/Skeleton.mjs.map +1 -1
  332. package/es/Skeleton/SkeletonBlock.mjs.map +1 -1
  333. package/es/Skeleton/SkeletonTags.mjs +3 -3
  334. package/es/Skeleton/SkeletonTags.mjs.map +1 -1
  335. package/es/Skeleton/SkeletonTitle.mjs +1 -1
  336. package/es/Skeleton/SkeletonTitle.mjs.map +1 -1
  337. package/es/SliderWithInput/SliderWithInput.d.mts +2 -2
  338. package/es/SliderWithInput/SliderWithInput.mjs +3 -3
  339. package/es/SliderWithInput/SliderWithInput.mjs.map +1 -1
  340. package/es/Snippet/Snippet.mjs +1 -1
  341. package/es/Snippet/Snippet.mjs.map +1 -1
  342. package/es/Snippet/style.mjs.map +1 -1
  343. package/es/SortableList/SortableList.mjs +1 -1
  344. package/es/SortableList/SortableList.mjs.map +1 -1
  345. package/es/SortableList/components/DragHandle.d.mts +2 -2
  346. package/es/SortableList/components/DragHandle.mjs +3 -3
  347. package/es/SortableList/components/DragHandle.mjs.map +1 -1
  348. package/es/SortableList/components/SortableItem.d.mts +2 -2
  349. package/es/SortableList/components/SortableItem.mjs +1 -1
  350. package/es/SortableList/components/SortableItem.mjs.map +1 -1
  351. package/es/SortableList/components/SortableOverlay.mjs.map +1 -1
  352. package/es/SortableList/style.mjs.map +1 -1
  353. package/es/SortableList/type.d.mts +2 -2
  354. package/es/Tabs/style.mjs.map +1 -1
  355. package/es/Tag/Tag.mjs +2 -2
  356. package/es/Tag/Tag.mjs.map +1 -1
  357. package/es/Tag/styles.mjs.map +1 -1
  358. package/es/Text/Text.mjs +23 -24
  359. package/es/Text/Text.mjs.map +1 -1
  360. package/es/ThemeProvider/ConfigProvider.mjs.map +1 -1
  361. package/es/ThemeProvider/GlobalStyle/antdOverride.mjs.map +1 -1
  362. package/es/ThemeProvider/GlobalStyle/global.mjs.map +1 -1
  363. package/es/ThemeProvider/ThemeProvider.d.mts +2 -2
  364. package/es/ThemeProvider/ThemeProvider.mjs.map +1 -1
  365. package/es/ThemeSwitch/ThemeSwitch.mjs +4 -4
  366. package/es/ThemeSwitch/ThemeSwitch.mjs.map +1 -1
  367. package/es/Toast/Toast.mjs +3 -3
  368. package/es/Toast/Toast.mjs.map +1 -1
  369. package/es/Toast/imperative.d.mts +3 -3
  370. package/es/Toast/imperative.mjs +1 -1
  371. package/es/Toast/imperative.mjs.map +1 -1
  372. package/es/Toc/Toc.d.mts +2 -2
  373. package/es/Toc/Toc.mjs.map +1 -1
  374. package/es/Toc/TocMobile.mjs +4 -4
  375. package/es/Toc/TocMobile.mjs.map +1 -1
  376. package/es/Toc/utils.mjs.map +1 -1
  377. package/es/Tooltip/Tooltip.mjs +2 -2
  378. package/es/Tooltip/Tooltip.mjs.map +1 -1
  379. package/es/Tooltip/TooltipContent.mjs.map +1 -1
  380. package/es/Tooltip/TooltipGroup.mjs +3 -3
  381. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  382. package/es/Tooltip/TooltipInGroup.mjs +3 -3
  383. package/es/Tooltip/TooltipInGroup.mjs.map +1 -1
  384. package/es/Tooltip/TooltipStandalone.mjs +2 -2
  385. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  386. package/es/Tooltip/groupContext.mjs.map +1 -1
  387. package/es/Tooltip/type.d.mts +1 -1
  388. package/es/Video/index.d.mts +2 -2
  389. package/es/Video/index.mjs +8 -8
  390. package/es/Video/index.mjs.map +1 -1
  391. package/es/Video/style.mjs.map +1 -1
  392. package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +2 -2
  393. package/es/awesome/BottomGradientButton/BottomGradientButton.mjs +1 -1
  394. package/es/awesome/BottomGradientButton/BottomGradientButton.mjs.map +1 -1
  395. package/es/awesome/Features/FeatureItem.mjs +1 -1
  396. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  397. package/es/awesome/Features/Features.d.mts +2 -2
  398. package/es/awesome/Features/Features.mjs +4 -4
  399. package/es/awesome/Features/Features.mjs.map +1 -1
  400. package/es/awesome/Features/type.d.mts +1 -1
  401. package/es/awesome/Giscus/Giscus.d.mts +2 -2
  402. package/es/awesome/GradientButton/GradientButton.d.mts +2 -2
  403. package/es/awesome/GradientButton/GradientButton.mjs +2 -2
  404. package/es/awesome/GradientButton/GradientButton.mjs.map +1 -1
  405. package/es/awesome/GridBackground/GridBackground.d.mts +2 -2
  406. package/es/awesome/GridBackground/GridShowcase.d.mts +2 -2
  407. package/es/awesome/GridBackground/GridShowcase.mjs +5 -5
  408. package/es/awesome/GridBackground/GridShowcase.mjs.map +1 -1
  409. package/es/awesome/GridBackground/components/Grid.mjs.map +1 -1
  410. package/es/awesome/Hero/Hero.d.mts +2 -2
  411. package/es/awesome/Hero/Hero.mjs +3 -3
  412. package/es/awesome/Hero/Hero.mjs.map +1 -1
  413. package/es/awesome/Hero/type.d.mts +1 -1
  414. package/es/awesome/Spline/ParentSize.mjs.map +1 -1
  415. package/es/awesome/Spline/Spine.d.mts +2 -2
  416. package/es/awesome/Spline/Spine.mjs +2 -2
  417. package/es/awesome/Spline/Spine.mjs.map +1 -1
  418. package/es/awesome/Spotlight/Spotlight.d.mts +2 -2
  419. package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -2
  420. package/es/brand/BrandLoading/index.mjs.map +1 -1
  421. package/es/brand/LobeChat/index.d.mts +2 -2
  422. package/es/brand/LobeChat/index.mjs +3 -3
  423. package/es/brand/LobeChat/index.mjs.map +1 -1
  424. package/es/brand/LobeChatText/index.mjs.map +1 -1
  425. package/es/brand/LobeHub/index.d.mts +2 -2
  426. package/es/brand/LobeHub/index.mjs +3 -3
  427. package/es/brand/LobeHub/index.mjs.map +1 -1
  428. package/es/brand/LobeHubText/index.mjs.map +1 -1
  429. package/es/brand/Logo3d/index.mjs.map +1 -1
  430. package/es/brand/LogoThree/Loading.mjs +2 -2
  431. package/es/brand/LogoThree/Loading.mjs.map +1 -1
  432. package/es/brand/LogoThree/LogoSpline.d.mts +2 -2
  433. package/es/brand/LogoThree/LogoSpline.mjs +1 -1
  434. package/es/brand/LogoThree/LogoSpline.mjs.map +1 -1
  435. package/es/brand/LogoThree/index.d.mts +2 -2
  436. package/es/brand/LogoThree/index.mjs +4 -4
  437. package/es/brand/LogoThree/index.mjs.map +1 -1
  438. package/es/brand/components/Divider.mjs.map +1 -1
  439. package/es/chat/BackBottom/BackBottom.d.mts +2 -2
  440. package/es/chat/BackBottom/BackBottom.mjs +2 -2
  441. package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
  442. package/es/chat/ChatHeader/ChatHeader.mjs +6 -6
  443. package/es/chat/ChatHeader/ChatHeader.mjs.map +1 -1
  444. package/es/chat/ChatHeader/ChatHeaderTitle.mjs +4 -4
  445. package/es/chat/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  446. package/es/chat/ChatInputArea/ChatInputArea.mjs +3 -3
  447. package/es/chat/ChatInputArea/ChatInputArea.mjs.map +1 -1
  448. package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs +3 -3
  449. package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs.map +1 -1
  450. package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -2
  451. package/es/chat/ChatInputArea/components/ChatInputAreaInner.mjs +3 -3
  452. package/es/chat/ChatInputArea/components/ChatInputAreaInner.mjs.map +1 -1
  453. package/es/chat/ChatInputArea/components/ChatSendButton.mjs +5 -5
  454. package/es/chat/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  455. package/es/chat/ChatItem/ChatItem.mjs +9 -9
  456. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  457. package/es/chat/ChatItem/components/Actions.mjs.map +1 -1
  458. package/es/chat/ChatItem/components/Avatar.mjs +2 -2
  459. package/es/chat/ChatItem/components/Avatar.mjs.map +1 -1
  460. package/es/chat/ChatItem/components/ErrorContent.mjs +1 -1
  461. package/es/chat/ChatItem/components/ErrorContent.mjs.map +1 -1
  462. package/es/chat/ChatItem/components/Loading.mjs +2 -2
  463. package/es/chat/ChatItem/components/Loading.mjs.map +1 -1
  464. package/es/chat/ChatItem/components/MessageContent.mjs +4 -4
  465. package/es/chat/ChatItem/components/MessageContent.mjs.map +1 -1
  466. package/es/chat/ChatItem/components/Title.mjs.map +1 -1
  467. package/es/chat/ChatList/ChatList.d.mts +2 -2
  468. package/es/chat/ChatList/components/ChatListItem.mjs +14 -14
  469. package/es/chat/ChatList/components/ChatListItem.mjs.map +1 -1
  470. package/es/chat/ChatList/type.d.mts +1 -1
  471. package/es/chat/EditableMessage/EditableMessage.d.mts +2 -2
  472. package/es/chat/EditableMessage/EditableMessage.mjs +15 -15
  473. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  474. package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -2
  475. package/es/chat/EditableMessageList/EditableMessageList.mjs +17 -17
  476. package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
  477. package/es/chat/MessageInput/MessageInput.d.mts +2 -2
  478. package/es/chat/MessageInput/MessageInput.mjs +8 -8
  479. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  480. package/es/chat/MessageModal/MessageModal.d.mts +2 -2
  481. package/es/chat/MessageModal/MessageModal.mjs +12 -12
  482. package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
  483. package/es/chat/TokenTag/TokenTag.mjs +2 -2
  484. package/es/chat/TokenTag/TokenTag.mjs.map +1 -1
  485. package/es/chat/types/error.mjs.map +1 -1
  486. package/es/color/ColorScales/ScaleRow.mjs +3 -3
  487. package/es/color/ColorScales/ScaleRow.mjs.map +1 -1
  488. package/es/color/ColorScales/index.d.mts +2 -2
  489. package/es/color/ColorScales/index.mjs +4 -4
  490. package/es/color/ColorScales/index.mjs.map +1 -1
  491. package/es/color/CssVar/ScaleRow.mjs +4 -4
  492. package/es/color/CssVar/ScaleRow.mjs.map +1 -1
  493. package/es/color/CssVar/VarRow.mjs +2 -2
  494. package/es/color/CssVar/VarRow.mjs.map +1 -1
  495. package/es/color/CssVar/index.d.mts +2 -2
  496. package/es/color/CssVar/index.mjs +4 -4
  497. package/es/color/CssVar/index.mjs.map +1 -1
  498. package/es/color/colors/blue.mjs.map +1 -1
  499. package/es/color/colors/cyan.mjs.map +1 -1
  500. package/es/color/colors/geekblue.mjs.map +1 -1
  501. package/es/color/colors/gold.mjs.map +1 -1
  502. package/es/color/colors/gray.mjs.map +1 -1
  503. package/es/color/colors/green.mjs.map +1 -1
  504. package/es/color/colors/lime.mjs.map +1 -1
  505. package/es/color/colors/magenta.mjs.map +1 -1
  506. package/es/color/colors/orange.mjs.map +1 -1
  507. package/es/color/colors/primary.mjs.map +1 -1
  508. package/es/color/colors/purple.mjs.map +1 -1
  509. package/es/color/colors/red.mjs.map +1 -1
  510. package/es/color/colors/volcano.mjs.map +1 -1
  511. package/es/color/colors/yellow.mjs.map +1 -1
  512. package/es/color/neutrals/mauve.mjs.map +1 -1
  513. package/es/color/neutrals/olive.mjs.map +1 -1
  514. package/es/color/neutrals/sage.mjs.map +1 -1
  515. package/es/color/neutrals/sand.mjs.map +1 -1
  516. package/es/color/neutrals/slate.mjs.map +1 -1
  517. package/es/hooks/useFloatingLayer.mjs +2 -2
  518. package/es/hooks/useFloatingLayer.mjs.map +1 -1
  519. package/es/hooks/useHighlight.mjs.map +1 -1
  520. package/es/hooks/useMarkdown/latex.mjs +12 -12
  521. package/es/hooks/useMarkdown/latex.mjs.map +1 -1
  522. package/es/hooks/useMarkdown/useMarkdownComponents.mjs +1 -1
  523. package/es/hooks/useMarkdown/useMarkdownComponents.mjs.map +1 -1
  524. package/es/hooks/useMarkdown/utils.mjs +4 -4
  525. package/es/hooks/useMarkdown/utils.mjs.map +1 -1
  526. package/es/hooks/useNativeButton.mjs.map +1 -1
  527. package/es/hooks/useStreamHighlight.mjs.map +1 -1
  528. package/es/i18n/context.d.mts +3 -3
  529. package/es/i18n/context.mjs.map +1 -1
  530. package/es/icons/Authelia/components/Color.mjs.map +1 -1
  531. package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -2
  532. package/es/icons/lucideExtra/CreateBotIcon.d.mts +3 -3
  533. package/es/icons/lucideExtra/DiscordIcon.d.mts +2 -2
  534. package/es/icons/lucideExtra/GlobeOffIcon.d.mts +2 -2
  535. package/es/icons/lucideExtra/GroupBotIcon.d.mts +2 -2
  536. package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +3 -3
  537. package/es/icons/lucideExtra/LeftClickIcon.d.mts +3 -3
  538. package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +3 -3
  539. package/es/icons/lucideExtra/McpIcon.d.mts +3 -3
  540. package/es/icons/lucideExtra/ProviderIcon.d.mts +3 -3
  541. package/es/icons/lucideExtra/RightClickIcon.d.mts +3 -3
  542. package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +3 -3
  543. package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +3 -3
  544. package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +2 -2
  545. package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +3 -3
  546. package/es/mdx/Callout/index.mjs +1 -1
  547. package/es/mdx/Callout/index.mjs.map +1 -1
  548. package/es/mdx/Cards/Card.mjs +2 -2
  549. package/es/mdx/Cards/Card.mjs.map +1 -1
  550. package/es/mdx/FileTree/File.mjs +1 -1
  551. package/es/mdx/FileTree/File.mjs.map +1 -1
  552. package/es/mdx/FileTree/Folder.mjs +1 -1
  553. package/es/mdx/FileTree/Folder.mjs.map +1 -1
  554. package/es/mdx/FileTree/index.mjs.map +1 -1
  555. package/es/mdx/Mdx/index.d.mts +2 -2
  556. package/es/mdx/Mdx/index.mjs +3 -3
  557. package/es/mdx/Mdx/index.mjs.map +1 -1
  558. package/es/mdx/Steps/index.mjs.map +1 -1
  559. package/es/mdx/Tabs/Tab.mjs.map +1 -1
  560. package/es/mdx/Tabs/index.mjs +1 -1
  561. package/es/mdx/Tabs/index.mjs.map +1 -1
  562. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs +3 -3
  563. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs.map +1 -1
  564. package/es/mdx/mdxComponents/Citation/index.mjs.map +1 -1
  565. package/es/mdx/mdxComponents/Link.mjs +1 -1
  566. package/es/mdx/mdxComponents/Link.mjs.map +1 -1
  567. package/es/mobile/ChatHeader/ChatHeader.mjs +4 -4
  568. package/es/mobile/ChatHeader/ChatHeader.mjs.map +1 -1
  569. package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -2
  570. package/es/mobile/ChatHeader/ChatHeaderTitle.mjs +5 -5
  571. package/es/mobile/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  572. package/es/mobile/ChatInputArea/ChatInputArea.mjs +9 -9
  573. package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
  574. package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -2
  575. package/es/mobile/ChatInputArea/components/ChatSendButton.mjs +2 -2
  576. package/es/mobile/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  577. package/es/mobile/SafeArea/SafeArea.mjs.map +1 -1
  578. package/es/mobile/TabBar/TabBar.mjs +1 -1
  579. package/es/mobile/TabBar/TabBar.mjs.map +1 -1
  580. package/es/storybook/StoryBook/index.d.mts +2 -2
  581. package/es/storybook/StoryBook/index.mjs.map +1 -1
  582. package/es/styles/theme/algorithms/darkAlgorithm.mjs.map +1 -1
  583. package/es/styles/theme/algorithms/lightAlgorithm.mjs.map +1 -1
  584. package/es/styles/theme/antdTheme.mjs.map +1 -1
  585. package/es/styles/theme/customStylish.mjs.map +1 -1
  586. package/es/styles/theme/customToken.mjs.map +1 -1
  587. package/es/styles/theme/generateColorPalette.mjs.map +1 -1
  588. package/es/styles/theme/token/base.mjs.map +1 -1
  589. package/es/styles/theme/token/dark.mjs.map +1 -1
  590. package/es/styles/theme/token/light.mjs.map +1 -1
  591. package/package.json +79 -1
@@ -64,13 +64,13 @@ const ChatItem = memo(({ avatarAddon, onAvatarClick, avatarProps, actions, class
64
64
  alt: avatarAlt,
65
65
  avatar,
66
66
  loading,
67
- onClick: onAvatarClick,
68
67
  placement,
69
68
  size: avatarSize,
70
69
  style: {
71
70
  marginTop: showTitle ? -12 : 6,
72
71
  ...avatarProps?.style
73
- }
72
+ },
73
+ onClick: onAvatarClick
74
74
  }),
75
75
  /* @__PURE__ */ jsxs(FlexBasic_default, {
76
76
  align: placement === "left" ? "flex-start" : "flex-end",
@@ -89,8 +89,8 @@ const ChatItem = memo(({ avatarAddon, onAvatarClick, avatarProps, actions, class
89
89
  align: placement === "left" ? "flex-start" : "flex-end",
90
90
  className: messageContentClassName,
91
91
  "data-layout": layoutMode,
92
- direction: layoutMode === "horizontal" ? placement === "left" ? "horizontal" : "horizontal-reverse" : "vertical",
93
92
  gap: 8,
93
+ direction: layoutMode === "horizontal" ? placement === "left" ? "horizontal" : "horizontal-reverse" : "vertical",
94
94
  children: [/* @__PURE__ */ jsx(FlexBasic_default, {
95
95
  ref: contentRef,
96
96
  width: "100%",
@@ -103,6 +103,11 @@ const ChatItem = memo(({ avatarAddon, onAvatarClick, avatarProps, actions, class
103
103
  fontSize,
104
104
  markdownProps,
105
105
  message,
106
+ placement,
107
+ primary,
108
+ renderMessage,
109
+ text,
110
+ variant,
106
111
  messageExtra: /* @__PURE__ */ jsxs(Fragment$1, { children: [error && /* @__PURE__ */ jsx(ErrorContent_default, {
107
112
  error,
108
113
  message: errorMessage,
@@ -110,12 +115,7 @@ const ChatItem = memo(({ avatarAddon, onAvatarClick, avatarProps, actions, class
110
115
  }), messageExtra] }),
111
116
  onChange,
112
117
  onDoubleClick,
113
- onEditingChange,
114
- placement,
115
- primary,
116
- renderMessage,
117
- text,
118
- variant
118
+ onEditingChange
119
119
  })
120
120
  }), actions && /* @__PURE__ */ jsx(Actions_default, {
121
121
  actions,
@@ -1 +1 @@
1
- {"version":3,"file":"ChatItem.mjs","names":["chatMessages","Flexbox","Avatar","Title","ErrorContent","MessageContent","Actions","BorderSpacing"],"sources":["../../../src/chat/ChatItem/ChatItem.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport chatMessages from '@/i18n/resources/en/chat';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport Actions from './components/Actions';\nimport Avatar from './components/Avatar';\nimport BorderSpacing from './components/BorderSpacing';\nimport ErrorContent from './components/ErrorContent';\nimport MessageContent from './components/MessageContent';\nimport Title from './components/Title';\nimport { styles } from './style';\nimport type { ChatItemProps } from './type';\n\nconst MOBILE_AVATAR_SIZE = 32;\n\nconst ChatItem = memo<ChatItemProps>(\n ({\n avatarAddon,\n onAvatarClick,\n avatarProps,\n actions,\n className,\n primary,\n loading,\n message,\n placeholderMessage,\n placement = 'left',\n variant = 'bubble',\n avatar,\n error,\n showTitle,\n time,\n editing,\n onChange,\n onEditingChange,\n messageExtra,\n renderMessage,\n text,\n errorMessage,\n onDoubleClick,\n fontSize,\n aboveMessage,\n belowMessage,\n markdownProps,\n actionsWrapWidth = 54,\n showAvatar = true,\n titleAddon,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const { t } = useTranslation(chatMessages);\n\n const avatarSize = mobile ? MOBILE_AVATAR_SIZE : avatarProps?.size || 40;\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--chat-item-avatar-size': `${avatarSize}px`,\n }),\n [avatarSize],\n );\n\n const hasTime = Boolean(time);\n const placeholderText = placeholderMessage ?? t('chat.placeholder');\n const avatarAlt = avatarProps?.alt || avatar.title || t('chat.avatar');\n\n // 在 ChatItem 组件中添加\n const contentRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [layoutMode, setLayoutMode] = useState<'horizontal' | 'vertical'>(\n variant === 'bubble' ? 'horizontal' : 'vertical',\n );\n\n // 使用 ResizeObserver 监控内容和容器尺寸\n useEffect(() => {\n if (variant === 'docs') {\n setLayoutMode('vertical');\n return;\n }\n\n if (!contentRef.current || !containerRef.current) return;\n\n const observer = new ResizeObserver(() => {\n if (!contentRef.current || !containerRef.current) return;\n\n const containerWidth = containerRef.current.clientWidth;\n const contentWidth = contentRef.current.scrollWidth; // 使用scrollWidth获取实际内容宽度\n\n // 预留给Actions的最小空间 (根据实际Actions大小调整)\n\n // 只有当内容宽度 + Actions最小宽度 > 容器宽度时才切换布局\n setLayoutMode(contentWidth + actionsWrapWidth > containerWidth ? 'vertical' : 'horizontal');\n });\n\n observer.observe(contentRef.current);\n observer.observe(containerRef.current);\n\n return () => observer.disconnect();\n }, [variant, actionsWrapWidth]);\n\n const containerClassName = cx(\n variant === 'docs' ? styles.containerDocs : styles.container,\n className,\n );\n\n const messageContainerClassName = useMemo(() => {\n if (editing) {\n return hasTime ? styles.messageContainerEditingWithTime : styles.messageContainerEditing;\n }\n return hasTime ? styles.messageContainerWithTime : styles.messageContainer;\n }, [editing, hasTime]);\n\n const messageContentClassName = useMemo(() => {\n return editing ? styles.messageContentEditing : styles.messageContent;\n }, [editing]);\n\n return (\n <Flexbox\n className={containerClassName}\n direction={placement === 'left' ? 'horizontal' : 'horizontal-reverse'}\n gap={mobile ? 6 : 12}\n style={cssVariables}\n {...rest}\n >\n {showAvatar && (\n <Avatar\n {...avatarProps}\n addon={avatarAddon}\n alt={avatarAlt}\n avatar={avatar}\n loading={loading}\n onClick={onAvatarClick}\n placement={placement}\n size={avatarSize}\n style={{\n marginTop: showTitle ? -12 : 6,\n ...avatarProps?.style,\n }}\n />\n )}\n <Flexbox\n align={placement === 'left' ? 'flex-start' : 'flex-end'}\n className={messageContainerClassName}\n ref={containerRef}\n >\n <Title\n avatar={avatar}\n placement={placement}\n showTitle={showTitle}\n time={time}\n titleAddon={titleAddon}\n />\n {aboveMessage}\n <Flexbox\n align={placement === 'left' ? 'flex-start' : 'flex-end'}\n className={messageContentClassName}\n data-layout={layoutMode} // 添加数据属性以方便样式选择\n direction={\n layoutMode === 'horizontal'\n ? placement === 'left'\n ? 'horizontal'\n : 'horizontal-reverse'\n : 'vertical'\n }\n gap={8}\n >\n <Flexbox ref={contentRef} width={'100%'}>\n {error && (message === placeholderText || !message) ? (\n <ErrorContent error={error} message={errorMessage} placement={placement} />\n ) : (\n <MessageContent\n editing={editing}\n fontSize={fontSize}\n markdownProps={markdownProps}\n message={message}\n messageExtra={\n <>\n {error && (\n <ErrorContent error={error} message={errorMessage} placement={placement} />\n )}\n {messageExtra}\n </>\n }\n onChange={onChange}\n onDoubleClick={onDoubleClick}\n onEditingChange={onEditingChange}\n placement={placement}\n primary={primary}\n renderMessage={renderMessage}\n text={text}\n variant={variant}\n />\n )}\n </Flexbox>\n {actions && (\n <Actions\n actions={actions}\n editing={editing}\n placement={placement}\n variant={variant}\n />\n )}\n </Flexbox>\n {belowMessage}\n </Flexbox>\n {mobile && variant === 'bubble' && showAvatar && (\n <BorderSpacing borderSpacing={MOBILE_AVATAR_SIZE} />\n )}\n </Flexbox>\n );\n },\n);\n\nexport default ChatItem;\n\nexport type { ChatItemProps } from './type';\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChatItem.mjs","names":["chatMessages","Flexbox","Avatar","Title","ErrorContent","MessageContent","Actions","BorderSpacing"],"sources":["../../../src/chat/ChatItem/ChatItem.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport chatMessages from '@/i18n/resources/en/chat';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport Actions from './components/Actions';\nimport Avatar from './components/Avatar';\nimport BorderSpacing from './components/BorderSpacing';\nimport ErrorContent from './components/ErrorContent';\nimport MessageContent from './components/MessageContent';\nimport Title from './components/Title';\nimport { styles } from './style';\nimport type { ChatItemProps } from './type';\n\nconst MOBILE_AVATAR_SIZE = 32;\n\nconst ChatItem = memo<ChatItemProps>(\n ({\n avatarAddon,\n onAvatarClick,\n avatarProps,\n actions,\n className,\n primary,\n loading,\n message,\n placeholderMessage,\n placement = 'left',\n variant = 'bubble',\n avatar,\n error,\n showTitle,\n time,\n editing,\n onChange,\n onEditingChange,\n messageExtra,\n renderMessage,\n text,\n errorMessage,\n onDoubleClick,\n fontSize,\n aboveMessage,\n belowMessage,\n markdownProps,\n actionsWrapWidth = 54,\n showAvatar = true,\n titleAddon,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const { t } = useTranslation(chatMessages);\n\n const avatarSize = mobile ? MOBILE_AVATAR_SIZE : avatarProps?.size || 40;\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--chat-item-avatar-size': `${avatarSize}px`,\n }),\n [avatarSize],\n );\n\n const hasTime = Boolean(time);\n const placeholderText = placeholderMessage ?? t('chat.placeholder');\n const avatarAlt = avatarProps?.alt || avatar.title || t('chat.avatar');\n\n // 在 ChatItem 组件中添加\n const contentRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [layoutMode, setLayoutMode] = useState<'horizontal' | 'vertical'>(\n variant === 'bubble' ? 'horizontal' : 'vertical',\n );\n\n // 使用 ResizeObserver 监控内容和容器尺寸\n useEffect(() => {\n if (variant === 'docs') {\n setLayoutMode('vertical');\n return;\n }\n\n if (!contentRef.current || !containerRef.current) return;\n\n const observer = new ResizeObserver(() => {\n if (!contentRef.current || !containerRef.current) return;\n\n const containerWidth = containerRef.current.clientWidth;\n const contentWidth = contentRef.current.scrollWidth; // 使用scrollWidth获取实际内容宽度\n\n // 预留给Actions的最小空间 (根据实际Actions大小调整)\n\n // 只有当内容宽度 + Actions最小宽度 > 容器宽度时才切换布局\n setLayoutMode(contentWidth + actionsWrapWidth > containerWidth ? 'vertical' : 'horizontal');\n });\n\n observer.observe(contentRef.current);\n observer.observe(containerRef.current);\n\n return () => observer.disconnect();\n }, [variant, actionsWrapWidth]);\n\n const containerClassName = cx(\n variant === 'docs' ? styles.containerDocs : styles.container,\n className,\n );\n\n const messageContainerClassName = useMemo(() => {\n if (editing) {\n return hasTime ? styles.messageContainerEditingWithTime : styles.messageContainerEditing;\n }\n return hasTime ? styles.messageContainerWithTime : styles.messageContainer;\n }, [editing, hasTime]);\n\n const messageContentClassName = useMemo(() => {\n return editing ? styles.messageContentEditing : styles.messageContent;\n }, [editing]);\n\n return (\n <Flexbox\n className={containerClassName}\n direction={placement === 'left' ? 'horizontal' : 'horizontal-reverse'}\n gap={mobile ? 6 : 12}\n style={cssVariables}\n {...rest}\n >\n {showAvatar && (\n <Avatar\n {...avatarProps}\n addon={avatarAddon}\n alt={avatarAlt}\n avatar={avatar}\n loading={loading}\n placement={placement}\n size={avatarSize}\n style={{\n marginTop: showTitle ? -12 : 6,\n ...avatarProps?.style,\n }}\n onClick={onAvatarClick}\n />\n )}\n <Flexbox\n align={placement === 'left' ? 'flex-start' : 'flex-end'}\n className={messageContainerClassName}\n ref={containerRef}\n >\n <Title\n avatar={avatar}\n placement={placement}\n showTitle={showTitle}\n time={time}\n titleAddon={titleAddon}\n />\n {aboveMessage}\n <Flexbox\n align={placement === 'left' ? 'flex-start' : 'flex-end'}\n className={messageContentClassName}\n data-layout={layoutMode} // 添加数据属性以方便样式选择\n gap={8}\n direction={\n layoutMode === 'horizontal'\n ? placement === 'left'\n ? 'horizontal'\n : 'horizontal-reverse'\n : 'vertical'\n }\n >\n <Flexbox ref={contentRef} width={'100%'}>\n {error && (message === placeholderText || !message) ? (\n <ErrorContent error={error} message={errorMessage} placement={placement} />\n ) : (\n <MessageContent\n editing={editing}\n fontSize={fontSize}\n markdownProps={markdownProps}\n message={message}\n placement={placement}\n primary={primary}\n renderMessage={renderMessage}\n text={text}\n variant={variant}\n messageExtra={\n <>\n {error && (\n <ErrorContent error={error} message={errorMessage} placement={placement} />\n )}\n {messageExtra}\n </>\n }\n onChange={onChange}\n onDoubleClick={onDoubleClick}\n onEditingChange={onEditingChange}\n />\n )}\n </Flexbox>\n {actions && (\n <Actions\n actions={actions}\n editing={editing}\n placement={placement}\n variant={variant}\n />\n )}\n </Flexbox>\n {belowMessage}\n </Flexbox>\n {mobile && variant === 'bubble' && showAvatar && (\n <BorderSpacing borderSpacing={MOBILE_AVATAR_SIZE} />\n )}\n </Flexbox>\n );\n },\n);\n\nexport default ChatItem;\n\nexport type { ChatItemProps } from './type';\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.mjs","names":["Actions: FC<ActionsProps>","Flexbox"],"sources":["../../../../src/chat/ChatItem/components/Actions.tsx"],"sourcesContent":["import { cx } from 'antd-style';\nimport { type FC, type Ref, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport { ChatItemProps } from '@/chat/ChatItem';\n\nimport { styles } from '../style';\n\nexport interface ActionsProps {\n actions: ChatItemProps['actions'];\n editing?: boolean;\n placement?: ChatItemProps['placement'];\n ref?: Ref<HTMLDivElement>;\n variant?: ChatItemProps['variant'];\n}\n\nconst Actions: FC<ActionsProps> = ({\n actions,\n placement = 'left',\n variant = 'bubble',\n editing,\n ref,\n}) => {\n const actionsClassName = useMemo(() => {\n if (variant === 'bubble') {\n return placement === 'left' ? styles.actionsBubbleLeft : styles.actionsBubbleRight;\n }\n return placement === 'left' ? styles.actionsDocsLeft : styles.actionsDocsRight;\n }, [placement, variant]);\n\n return (\n <Flexbox\n align={'flex-start'}\n className={cx(actionsClassName, editing && styles.actionsEditing)}\n ref={ref}\n role=\"menubar\"\n >\n {actions}\n </Flexbox>\n );\n};\n\nexport default Actions;\n"],"mappings":";;;;;;;AAgBA,MAAMA,WAA6B,EACjC,SACA,YAAY,QACZ,UAAU,UACV,SACA,UACI;AAQJ,QACE,oBAACC;EACC,OAAO;EACP,WAAW,GAVU,cAAc;AACrC,OAAI,YAAY,SACd,QAAO,cAAc,SAAS,OAAO,oBAAoB,OAAO;AAElE,UAAO,cAAc,SAAS,OAAO,kBAAkB,OAAO;KAC7D,CAAC,WAAW,QAAQ,CAAC,EAKY,WAAW,OAAO,eAAe;EAC5D;EACL,MAAK;YAEJ;GACO;;AAId,sBAAe"}
1
+ {"version":3,"file":"Actions.mjs","names":["Actions: FC<ActionsProps>","Flexbox"],"sources":["../../../../src/chat/ChatItem/components/Actions.tsx"],"sourcesContent":["import { cx } from 'antd-style';\nimport { type FC, type Ref, useMemo } from 'react';\n\nimport { type ChatItemProps } from '@/chat/ChatItem';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from '../style';\n\nexport interface ActionsProps {\n actions: ChatItemProps['actions'];\n editing?: boolean;\n placement?: ChatItemProps['placement'];\n ref?: Ref<HTMLDivElement>;\n variant?: ChatItemProps['variant'];\n}\n\nconst Actions: FC<ActionsProps> = ({\n actions,\n placement = 'left',\n variant = 'bubble',\n editing,\n ref,\n}) => {\n const actionsClassName = useMemo(() => {\n if (variant === 'bubble') {\n return placement === 'left' ? styles.actionsBubbleLeft : styles.actionsBubbleRight;\n }\n return placement === 'left' ? styles.actionsDocsLeft : styles.actionsDocsRight;\n }, [placement, variant]);\n\n return (\n <Flexbox\n align={'flex-start'}\n className={cx(actionsClassName, editing && styles.actionsEditing)}\n ref={ref}\n role=\"menubar\"\n >\n {actions}\n </Flexbox>\n );\n};\n\nexport default Actions;\n"],"mappings":";;;;;;;AAgBA,MAAMA,WAA6B,EACjC,SACA,YAAY,QACZ,UAAU,UACV,SACA,UACI;AAQJ,QACE,oBAACC;EACC,OAAO;EACP,WAAW,GAVU,cAAc;AACrC,OAAI,YAAY,SACd,QAAO,cAAc,SAAS,OAAO,oBAAoB,OAAO;AAElE,UAAO,cAAc,SAAS,OAAO,kBAAkB,OAAO;KAC7D,CAAC,WAAW,QAAQ,CAAC,EAKY,WAAW,OAAO,eAAe;EAC5D;EACL,MAAK;YAEJ;GACO;;AAId,sBAAe"}
@@ -19,10 +19,10 @@ const Avatar = ({ loading, avatar, placement, unoptimized, addon, onClick, size
19
19
  animation: loading,
20
20
  avatar: avatar.avatar,
21
21
  background: avatar.backgroundColor,
22
- onClick,
23
22
  size,
24
23
  title: avatar.title,
25
- unoptimized
24
+ unoptimized,
25
+ onClick
26
26
  }), /* @__PURE__ */ jsx(Loading_default, {
27
27
  loading,
28
28
  placement
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.mjs","names":["Avatar: FC<AvatarProps>","A","Loading","Flexbox"],"sources":["../../../../src/chat/ChatItem/components/Avatar.tsx"],"sourcesContent":["import { type CSSProperties, type FC, useMemo } from 'react';\n\nimport A from '@/Avatar';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from '../style';\nimport type { ChatItemProps } from '../type';\nimport Loading from './Loading';\n\nexport interface AvatarProps {\n addon?: ChatItemProps['avatarAddon'];\n alt?: string;\n avatar: ChatItemProps['avatar'];\n loading?: ChatItemProps['loading'];\n onClick?: ChatItemProps['onAvatarClick'];\n placement?: ChatItemProps['placement'];\n size?: number;\n style?: CSSProperties;\n unoptimized?: boolean;\n}\n\nconst Avatar: FC<AvatarProps> = ({\n loading,\n avatar,\n placement,\n unoptimized,\n addon,\n onClick,\n size = 40,\n style,\n alt,\n}) => {\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--chat-item-avatar-size': `${size}px`,\n }),\n [size],\n );\n\n const avatarContent = (\n <div className={styles.avatarContainer} style={{ ...cssVariables, ...style }}>\n <A\n alt={alt || avatar.title}\n animation={loading}\n avatar={avatar.avatar}\n background={avatar.backgroundColor}\n onClick={onClick}\n size={size}\n title={avatar.title}\n unoptimized={unoptimized}\n />\n <Loading loading={loading} placement={placement} />\n </div>\n );\n\n if (!addon) return avatarContent;\n return (\n <Flexbox align={'center'} className={styles.avatarGroupContainer} gap={8}>\n {avatarContent}\n {addon}\n </Flexbox>\n );\n};\n\nexport default Avatar;\n"],"mappings":";;;;;;;;AAqBA,MAAMA,UAA2B,EAC/B,SACA,QACA,WACA,aACA,OACA,SACA,OAAO,IACP,OACA,UACI;CACJ,MAAM,eAAe,eACZ,EACL,2BAA2B,GAAG,KAAK,KACpC,GACD,CAAC,KAAK,CACP;CAED,MAAM,gBACJ,qBAAC;EAAI,WAAW,OAAO;EAAiB,OAAO;GAAE,GAAG;GAAc,GAAG;GAAO;aAC1E,oBAACC;GACC,KAAK,OAAO,OAAO;GACnB,WAAW;GACX,QAAQ,OAAO;GACf,YAAY,OAAO;GACV;GACH;GACN,OAAO,OAAO;GACD;IACb,EACF,oBAACC;GAAiB;GAAoB;IAAa;GAC/C;AAGR,KAAI,CAAC,MAAO,QAAO;AACnB,QACE,qBAACC;EAAQ,OAAO;EAAU,WAAW,OAAO;EAAsB,KAAK;aACpE,eACA;GACO;;AAId,qBAAe"}
1
+ {"version":3,"file":"Avatar.mjs","names":["Avatar: FC<AvatarProps>","A","Loading","Flexbox"],"sources":["../../../../src/chat/ChatItem/components/Avatar.tsx"],"sourcesContent":["import { type CSSProperties, type FC, useMemo } from 'react';\n\nimport A from '@/Avatar';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from '../style';\nimport type { ChatItemProps } from '../type';\nimport Loading from './Loading';\n\nexport interface AvatarProps {\n addon?: ChatItemProps['avatarAddon'];\n alt?: string;\n avatar: ChatItemProps['avatar'];\n loading?: ChatItemProps['loading'];\n onClick?: ChatItemProps['onAvatarClick'];\n placement?: ChatItemProps['placement'];\n size?: number;\n style?: CSSProperties;\n unoptimized?: boolean;\n}\n\nconst Avatar: FC<AvatarProps> = ({\n loading,\n avatar,\n placement,\n unoptimized,\n addon,\n onClick,\n size = 40,\n style,\n alt,\n}) => {\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--chat-item-avatar-size': `${size}px`,\n }),\n [size],\n );\n\n const avatarContent = (\n <div className={styles.avatarContainer} style={{ ...cssVariables, ...style }}>\n <A\n alt={alt || avatar.title}\n animation={loading}\n avatar={avatar.avatar}\n background={avatar.backgroundColor}\n size={size}\n title={avatar.title}\n unoptimized={unoptimized}\n onClick={onClick}\n />\n <Loading loading={loading} placement={placement} />\n </div>\n );\n\n if (!addon) return avatarContent;\n return (\n <Flexbox align={'center'} className={styles.avatarGroupContainer} gap={8}>\n {avatarContent}\n {addon}\n </Flexbox>\n );\n};\n\nexport default Avatar;\n"],"mappings":";;;;;;;;AAqBA,MAAMA,UAA2B,EAC/B,SACA,QACA,WACA,aACA,OACA,SACA,OAAO,IACP,OACA,UACI;CACJ,MAAM,eAAe,eACZ,EACL,2BAA2B,GAAG,KAAK,KACpC,GACD,CAAC,KAAK,CACP;CAED,MAAM,gBACJ,qBAAC;EAAI,WAAW,OAAO;EAAiB,OAAO;GAAE,GAAG;GAAc,GAAG;GAAO;aAC1E,oBAACC;GACC,KAAK,OAAO,OAAO;GACnB,WAAW;GACX,QAAQ,OAAO;GACf,YAAY,OAAO;GACb;GACN,OAAO,OAAO;GACD;GACJ;IACT,EACF,oBAACC;GAAiB;GAAoB;IAAa;GAC/C;AAGR,KAAI,CAAC,MAAO,QAAO;AACnB,QACE,qBAACC;EAAQ,OAAO;EAAU,WAAW,OAAO;EAAsB,KAAK;aACpE,eACA;GACO;;AAId,qBAAe"}
@@ -8,9 +8,9 @@ const ErrorContent = ({ message, error }) => {
8
8
  return /* @__PURE__ */ jsx(FlexBasic_default, {
9
9
  className: styles.errorContainer,
10
10
  children: /* @__PURE__ */ jsx(Alert_default, {
11
+ showIcon: true,
11
12
  closable: false,
12
13
  extra: message,
13
- showIcon: true,
14
14
  type: "error",
15
15
  ...error
16
16
  })
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorContent.mjs","names":["ErrorContent: FC<ErrorContentProps>","Flexbox","Alert"],"sources":["../../../../src/chat/ChatItem/components/ErrorContent.tsx"],"sourcesContent":["import { type FC } from 'react';\n\nimport Alert from '@/Alert';\nimport { Flexbox } from '@/Flex';\nimport { ChatItemProps } from '@/chat/ChatItem';\n\nimport { styles } from '../style';\n\nexport interface ErrorContentProps {\n error?: ChatItemProps['error'];\n message?: ChatItemProps['errorMessage'];\n placement?: ChatItemProps['placement'];\n}\n\nconst ErrorContent: FC<ErrorContentProps> = ({ message, error }) => {\n return (\n <Flexbox className={styles.errorContainer}>\n <Alert closable={false} extra={message} showIcon type={'error'} {...error} />\n </Flexbox>\n );\n};\n\nexport default ErrorContent;\n"],"mappings":";;;;;;AAcA,MAAMA,gBAAuC,EAAE,SAAS,YAAY;AAClE,QACE,oBAACC;EAAQ,WAAW,OAAO;YACzB,oBAACC;GAAM,UAAU;GAAO,OAAO;GAAS;GAAS,MAAM;GAAS,GAAI;IAAS;GACrE;;AAId,2BAAe"}
1
+ {"version":3,"file":"ErrorContent.mjs","names":["ErrorContent: FC<ErrorContentProps>","Flexbox","Alert"],"sources":["../../../../src/chat/ChatItem/components/ErrorContent.tsx"],"sourcesContent":["import type { FC } from 'react';\n\nimport Alert from '@/Alert';\nimport { type ChatItemProps } from '@/chat/ChatItem';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from '../style';\n\nexport interface ErrorContentProps {\n error?: ChatItemProps['error'];\n message?: ChatItemProps['errorMessage'];\n placement?: ChatItemProps['placement'];\n}\n\nconst ErrorContent: FC<ErrorContentProps> = ({ message, error }) => {\n return (\n <Flexbox className={styles.errorContainer}>\n <Alert showIcon closable={false} extra={message} type={'error'} {...error} />\n </Flexbox>\n );\n};\n\nexport default ErrorContent;\n"],"mappings":";;;;;;AAcA,MAAMA,gBAAuC,EAAE,SAAS,YAAY;AAClE,QACE,oBAACC;EAAQ,WAAW,OAAO;YACzB,oBAACC;GAAM;GAAS,UAAU;GAAO,OAAO;GAAS,MAAM;GAAS,GAAI;IAAS;GACrE;;AAId,2BAAe"}
@@ -12,12 +12,12 @@ const Loading = ({ loading, placement = "left" }) => {
12
12
  className: placement === "left" ? styles.loadingLeft : styles.loadingRight,
13
13
  justify: "center",
14
14
  children: /* @__PURE__ */ jsx(Icon_default, {
15
+ spin: true,
15
16
  icon: Loader2,
16
17
  size: {
17
18
  size: 12,
18
19
  strokeWidth: 3
19
- },
20
- spin: true
20
+ }
21
21
  })
22
22
  });
23
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Loading.mjs","names":["Loading: FC<LoadingProps>","Flexbox","Icon"],"sources":["../../../../src/chat/ChatItem/components/Loading.tsx"],"sourcesContent":["import { Loader2 } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport { ChatItemProps } from '@/chat/ChatItem';\n\nimport { styles } from '../style';\n\nexport interface LoadingProps {\n loading?: ChatItemProps['loading'];\n placement?: ChatItemProps['placement'];\n}\n\nconst Loading: FC<LoadingProps> = ({ loading, placement = 'left' }) => {\n if (!loading) return null;\n\n return (\n <Flexbox\n align={'center'}\n className={placement === 'left' ? styles.loadingLeft : styles.loadingRight}\n justify={'center'}\n >\n <Icon icon={Loader2} size={{ size: 12, strokeWidth: 3 }} spin />\n </Flexbox>\n );\n};\n\nexport default Loading;\n"],"mappings":";;;;;;;AAcA,MAAMA,WAA6B,EAAE,SAAS,YAAY,aAAa;AACrE,KAAI,CAAC,QAAS,QAAO;AAErB,QACE,oBAACC;EACC,OAAO;EACP,WAAW,cAAc,SAAS,OAAO,cAAc,OAAO;EAC9D,SAAS;YAET,oBAACC;GAAK,MAAM;GAAS,MAAM;IAAE,MAAM;IAAI,aAAa;IAAG;GAAE;IAAO;GACxD;;AAId,sBAAe"}
1
+ {"version":3,"file":"Loading.mjs","names":["Loading: FC<LoadingProps>","Flexbox","Icon"],"sources":["../../../../src/chat/ChatItem/components/Loading.tsx"],"sourcesContent":["import { Loader2 } from 'lucide-react';\nimport type { FC } from 'react';\n\nimport { type ChatItemProps } from '@/chat/ChatItem';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { styles } from '../style';\n\nexport interface LoadingProps {\n loading?: ChatItemProps['loading'];\n placement?: ChatItemProps['placement'];\n}\n\nconst Loading: FC<LoadingProps> = ({ loading, placement = 'left' }) => {\n if (!loading) return null;\n\n return (\n <Flexbox\n align={'center'}\n className={placement === 'left' ? styles.loadingLeft : styles.loadingRight}\n justify={'center'}\n >\n <Icon spin icon={Loader2} size={{ size: 12, strokeWidth: 3 }} />\n </Flexbox>\n );\n};\n\nexport default Loading;\n"],"mappings":";;;;;;;AAcA,MAAMA,WAA6B,EAAE,SAAS,YAAY,aAAa;AACrE,KAAI,CAAC,QAAS,QAAO;AAErB,QACE,oBAACC;EACC,OAAO;EACP,WAAW,cAAc,SAAS,OAAO,cAAc,OAAO;EAC9D,SAAS;YAET,oBAACC;GAAK;GAAK,MAAM;GAAS,MAAM;IAAE,MAAM;IAAI,aAAa;IAAG;IAAI;GACxD;;AAId,sBAAe"}
@@ -16,17 +16,17 @@ const MessageContent = memo(({ editing, onChange, onEditingChange, text, message
16
16
  return variant === "docs" ? styles.editingContainerDocs : styles.editingContainer;
17
17
  }, [variant]);
18
18
  const content = /* @__PURE__ */ jsx(EditableMessage_default, {
19
+ fullFeaturedCodeBlock: true,
19
20
  classNames: { input: styles.editingInput },
20
21
  editButtonSize: "small",
21
22
  editing,
22
23
  fontSize,
23
- fullFeaturedCodeBlock: true,
24
24
  markdownProps,
25
- onChange,
26
- onEditingChange,
27
25
  openModal: mobile ? editing : void 0,
28
26
  text,
29
- value: message ? String(message) : ""
27
+ value: message ? String(message) : "",
28
+ onChange,
29
+ onEditingChange
30
30
  });
31
31
  const messageContent = renderMessage ? renderMessage(content) : content;
32
32
  return /* @__PURE__ */ jsxs(FlexBasic_default, {
@@ -1 +1 @@
1
- {"version":3,"file":"MessageContent.mjs","names":["EditableMessage","Flexbox"],"sources":["../../../../src/chat/ChatItem/components/MessageContent.tsx"],"sourcesContent":["import { cx, useResponsive } from 'antd-style';\nimport { type ReactNode, memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport type { MarkdownProps } from '@/Markdown';\nimport { ChatItemProps } from '@/chat/ChatItem';\nimport EditableMessage from '@/chat/EditableMessage';\n\nimport { styles } from '../style';\n\nexport interface MessageContentProps {\n editing?: ChatItemProps['editing'];\n fontSize?: number;\n markdownProps?: Omit<MarkdownProps, 'className' | 'style' | 'children'>;\n message?: ReactNode;\n messageExtra?: ChatItemProps['messageExtra'];\n onChange?: ChatItemProps['onChange'];\n onDoubleClick?: ChatItemProps['onDoubleClick'];\n onEditingChange?: ChatItemProps['onEditingChange'];\n placement?: ChatItemProps['placement'];\n primary?: ChatItemProps['primary'];\n renderMessage?: ChatItemProps['renderMessage'];\n text?: ChatItemProps['text'];\n variant?: ChatItemProps['variant'];\n}\n\nconst MessageContent = memo<MessageContentProps>(\n ({\n editing,\n onChange,\n onEditingChange,\n text,\n message,\n placement,\n messageExtra,\n renderMessage,\n variant,\n primary,\n onDoubleClick,\n fontSize,\n markdownProps,\n }) => {\n // placement and primary are part of the interface but not used in this component\n void placement;\n void primary;\n const { mobile } = useResponsive();\n\n const messageClassName = useMemo(() => {\n if (variant === 'bubble') return styles.messageBubble;\n // For docs variant, we need title info, but we don't have it here\n // Use withoutTitle as default\n return styles.messageDocsWithoutTitle;\n }, [variant]);\n\n const editingContainerClassName = useMemo(() => {\n return variant === 'docs' ? styles.editingContainerDocs : styles.editingContainer;\n }, [variant]);\n\n const content = (\n <EditableMessage\n classNames={{ input: styles.editingInput }}\n editButtonSize={'small'}\n editing={editing}\n fontSize={fontSize}\n fullFeaturedCodeBlock\n markdownProps={markdownProps}\n onChange={onChange}\n onEditingChange={onEditingChange}\n openModal={mobile ? editing : undefined}\n text={text}\n value={message ? String(message) : ''}\n />\n );\n const messageContent = renderMessage ? renderMessage(content) : content;\n\n return (\n <Flexbox\n className={cx(messageClassName, editing && editingContainerClassName)}\n onDoubleClick={onDoubleClick}\n >\n {messageContent}\n {messageExtra && !editing ? (\n <div className={styles.messageExtra}>{messageExtra}</div>\n ) : null}\n </Flexbox>\n );\n },\n);\n\nexport default MessageContent;\n"],"mappings":";;;;;;;;AA0BA,MAAM,iBAAiB,MACpB,EACC,SACA,UACA,iBACA,MACA,SACA,WACA,cACA,eACA,SACA,SACA,eACA,UACA,oBACI;CAIJ,MAAM,EAAE,WAAW,eAAe;CAElC,MAAM,mBAAmB,cAAc;AACrC,MAAI,YAAY,SAAU,QAAO,OAAO;AAGxC,SAAO,OAAO;IACb,CAAC,QAAQ,CAAC;CAEb,MAAM,4BAA4B,cAAc;AAC9C,SAAO,YAAY,SAAS,OAAO,uBAAuB,OAAO;IAChE,CAAC,QAAQ,CAAC;CAEb,MAAM,UACJ,oBAACA;EACC,YAAY,EAAE,OAAO,OAAO,cAAc;EAC1C,gBAAgB;EACP;EACC;EACV;EACe;EACL;EACO;EACjB,WAAW,SAAS,UAAU;EACxB;EACN,OAAO,UAAU,OAAO,QAAQ,GAAG;GACnC;CAEJ,MAAM,iBAAiB,gBAAgB,cAAc,QAAQ,GAAG;AAEhE,QACE,qBAACC;EACC,WAAW,GAAG,kBAAkB,WAAW,0BAA0B;EACtD;aAEd,gBACA,gBAAgB,CAAC,UAChB,oBAAC;GAAI,WAAW,OAAO;aAAe;IAAmB,GACvD;GACI;EAGf;AAED,6BAAe"}
1
+ {"version":3,"file":"MessageContent.mjs","names":["EditableMessage","Flexbox"],"sources":["../../../../src/chat/ChatItem/components/MessageContent.tsx"],"sourcesContent":["import { cx, useResponsive } from 'antd-style';\nimport { memo, type ReactNode, useMemo } from 'react';\n\nimport { type ChatItemProps } from '@/chat/ChatItem';\nimport EditableMessage from '@/chat/EditableMessage';\nimport { Flexbox } from '@/Flex';\nimport { type MarkdownProps } from '@/Markdown';\n\nimport { styles } from '../style';\n\nexport interface MessageContentProps {\n editing?: ChatItemProps['editing'];\n fontSize?: number;\n markdownProps?: Omit<MarkdownProps, 'className' | 'style' | 'children'>;\n message?: ReactNode;\n messageExtra?: ChatItemProps['messageExtra'];\n onChange?: ChatItemProps['onChange'];\n onDoubleClick?: ChatItemProps['onDoubleClick'];\n onEditingChange?: ChatItemProps['onEditingChange'];\n placement?: ChatItemProps['placement'];\n primary?: ChatItemProps['primary'];\n renderMessage?: ChatItemProps['renderMessage'];\n text?: ChatItemProps['text'];\n variant?: ChatItemProps['variant'];\n}\n\nconst MessageContent = memo<MessageContentProps>(\n ({\n editing,\n onChange,\n onEditingChange,\n text,\n message,\n placement,\n messageExtra,\n renderMessage,\n variant,\n primary,\n onDoubleClick,\n fontSize,\n markdownProps,\n }) => {\n // placement and primary are part of the interface but not used in this component\n void placement;\n void primary;\n const { mobile } = useResponsive();\n\n const messageClassName = useMemo(() => {\n if (variant === 'bubble') return styles.messageBubble;\n // For docs variant, we need title info, but we don't have it here\n // Use withoutTitle as default\n return styles.messageDocsWithoutTitle;\n }, [variant]);\n\n const editingContainerClassName = useMemo(() => {\n return variant === 'docs' ? styles.editingContainerDocs : styles.editingContainer;\n }, [variant]);\n\n const content = (\n <EditableMessage\n fullFeaturedCodeBlock\n classNames={{ input: styles.editingInput }}\n editButtonSize={'small'}\n editing={editing}\n fontSize={fontSize}\n markdownProps={markdownProps}\n openModal={mobile ? editing : undefined}\n text={text}\n value={message ? String(message) : ''}\n onChange={onChange}\n onEditingChange={onEditingChange}\n />\n );\n const messageContent = renderMessage ? renderMessage(content) : content;\n\n return (\n <Flexbox\n className={cx(messageClassName, editing && editingContainerClassName)}\n onDoubleClick={onDoubleClick}\n >\n {messageContent}\n {messageExtra && !editing ? (\n <div className={styles.messageExtra}>{messageExtra}</div>\n ) : null}\n </Flexbox>\n );\n },\n);\n\nexport default MessageContent;\n"],"mappings":";;;;;;;;AA0BA,MAAM,iBAAiB,MACpB,EACC,SACA,UACA,iBACA,MACA,SACA,WACA,cACA,eACA,SACA,SACA,eACA,UACA,oBACI;CAIJ,MAAM,EAAE,WAAW,eAAe;CAElC,MAAM,mBAAmB,cAAc;AACrC,MAAI,YAAY,SAAU,QAAO,OAAO;AAGxC,SAAO,OAAO;IACb,CAAC,QAAQ,CAAC;CAEb,MAAM,4BAA4B,cAAc;AAC9C,SAAO,YAAY,SAAS,OAAO,uBAAuB,OAAO;IAChE,CAAC,QAAQ,CAAC;CAEb,MAAM,UACJ,oBAACA;EACC;EACA,YAAY,EAAE,OAAO,OAAO,cAAc;EAC1C,gBAAgB;EACP;EACC;EACK;EACf,WAAW,SAAS,UAAU;EACxB;EACN,OAAO,UAAU,OAAO,QAAQ,GAAG;EACzB;EACO;GACjB;CAEJ,MAAM,iBAAiB,gBAAgB,cAAc,QAAQ,GAAG;AAEhE,QACE,qBAACC;EACC,WAAW,GAAG,kBAAkB,WAAW,0BAA0B;EACtD;aAEd,gBACA,gBAAgB,CAAC,UAChB,oBAAC;GAAI,WAAW,OAAO;aAAe;IAAmB,GACvD;GACI;EAGf;AAED,6BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"Title.mjs","names":["Title: FC<TitleProps>","Flexbox"],"sources":["../../../../src/chat/ChatItem/components/Title.tsx"],"sourcesContent":["import { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport { ChatItemProps } from '@/chat/ChatItem';\nimport { formatTime } from '@/utils/formatTime';\n\nimport { styles } from '../style';\n\nexport interface TitleProps {\n avatar: ChatItemProps['avatar'];\n placement?: ChatItemProps['placement'];\n showTitle?: ChatItemProps['showTitle'];\n time?: ChatItemProps['time'];\n titleAddon?: ChatItemProps['titleAddon'];\n}\n\nconst Title: FC<TitleProps> = ({ showTitle, placement = 'left', time, avatar, titleAddon }) => {\n return (\n <Flexbox\n align={'center'}\n className={placement === 'left' ? styles.nameLeft : styles.nameRight}\n direction={placement === 'left' ? 'horizontal' : 'horizontal-reverse'}\n gap={4}\n >\n {showTitle ? avatar.title || 'untitled' : undefined}\n {showTitle ? titleAddon : undefined}\n {time && <time>{formatTime(time)}</time>}\n </Flexbox>\n );\n};\n\nexport default Title;\n"],"mappings":";;;;;;AAgBA,MAAMA,SAAyB,EAAE,WAAW,YAAY,QAAQ,MAAM,QAAQ,iBAAiB;AAC7F,QACE,qBAACC;EACC,OAAO;EACP,WAAW,cAAc,SAAS,OAAO,WAAW,OAAO;EAC3D,WAAW,cAAc,SAAS,eAAe;EACjD,KAAK;;GAEJ,YAAY,OAAO,SAAS,aAAa;GACzC,YAAY,aAAa;GACzB,QAAQ,oBAAC,oBAAM,WAAW,KAAK,GAAQ;;GAChC;;AAId,oBAAe"}
1
+ {"version":3,"file":"Title.mjs","names":["Title: FC<TitleProps>","Flexbox"],"sources":["../../../../src/chat/ChatItem/components/Title.tsx"],"sourcesContent":["import type { FC } from 'react';\n\nimport { type ChatItemProps } from '@/chat/ChatItem';\nimport { Flexbox } from '@/Flex';\nimport { formatTime } from '@/utils/formatTime';\n\nimport { styles } from '../style';\n\nexport interface TitleProps {\n avatar: ChatItemProps['avatar'];\n placement?: ChatItemProps['placement'];\n showTitle?: ChatItemProps['showTitle'];\n time?: ChatItemProps['time'];\n titleAddon?: ChatItemProps['titleAddon'];\n}\n\nconst Title: FC<TitleProps> = ({ showTitle, placement = 'left', time, avatar, titleAddon }) => {\n return (\n <Flexbox\n align={'center'}\n className={placement === 'left' ? styles.nameLeft : styles.nameRight}\n direction={placement === 'left' ? 'horizontal' : 'horizontal-reverse'}\n gap={4}\n >\n {showTitle ? avatar.title || 'untitled' : undefined}\n {showTitle ? titleAddon : undefined}\n {time && <time>{formatTime(time)}</time>}\n </Flexbox>\n );\n};\n\nexport default Title;\n"],"mappings":";;;;;;AAgBA,MAAMA,SAAyB,EAAE,WAAW,YAAY,QAAQ,MAAM,QAAQ,iBAAiB;AAC7F,QACE,qBAACC;EACC,OAAO;EACP,WAAW,cAAc,SAAS,OAAO,WAAW,OAAO;EAC3D,WAAW,cAAc,SAAS,eAAe;EACjD,KAAK;;GAEJ,YAAY,OAAO,SAAS,aAAa;GACzC,YAAY,aAAa;GACzB,QAAQ,oBAAC,oBAAM,WAAW,KAAK,GAAQ;;GAChC;;AAId,oBAAe"}
@@ -1,8 +1,8 @@
1
1
  import { ChatListProps } from "./type.mjs";
2
- import * as react132 from "react";
2
+ import * as react129 from "react";
3
3
 
4
4
  //#region src/chat/ChatList/ChatList.d.ts
5
- declare const ChatList: react132.NamedExoticComponent<ChatListProps>;
5
+ declare const ChatList: react129.NamedExoticComponent<ChatListProps>;
6
6
  //#endregion
7
7
  export { ChatList };
8
8
  //# sourceMappingURL=ChatList.d.mts.map
@@ -63,8 +63,8 @@ const ChatListItem = memo((props) => {
63
63
  };
64
64
  return /* @__PURE__ */ jsx(RenderFunction, {
65
65
  ...data,
66
- onActionClick: (actionKey) => handleActionClick?.(actionKey, data),
67
- text
66
+ text,
67
+ onActionClick: (actionKey) => handleActionClick?.(actionKey, data)
68
68
  });
69
69
  }, [
70
70
  renderActions?.[item.role],
@@ -92,24 +92,24 @@ const ChatListItem = memo((props) => {
92
92
  loading,
93
93
  message: item.content,
94
94
  messageExtra: /* @__PURE__ */ jsx(MessageExtra, { data: item }),
95
- onAvatarClick: onAvatarsClick?.(item.role),
96
- onChange: (value) => onMessageChange?.(item.id, value),
97
- onDoubleClick: (e) => {
98
- if (item.id === "default" || item.error) return;
99
- if (item.role && ["assistant", "user"].includes(item.role) && e.altKey) setEditing(true);
100
- },
101
- onEditingChange: setEditing,
102
95
  placement: variant === "bubble" ? item.role === "user" ? "right" : "left" : "left",
103
96
  primary: item.role === "user",
104
- renderMessage: (editableContent) => /* @__PURE__ */ jsx(RenderMessage, {
105
- data: item,
106
- editableContent
107
- }),
108
97
  showAvatar,
109
98
  showTitle,
110
99
  text,
111
100
  time: item.updateAt || item.createAt,
112
- variant
101
+ variant,
102
+ renderMessage: (editableContent) => /* @__PURE__ */ jsx(RenderMessage, {
103
+ data: item,
104
+ editableContent
105
+ }),
106
+ onAvatarClick: onAvatarsClick?.(item.role),
107
+ onChange: (value) => onMessageChange?.(item.id, value),
108
+ onEditingChange: setEditing,
109
+ onDoubleClick: (e) => {
110
+ if (item.id === "default" || item.error) return;
111
+ if (item.role && ["assistant", "user"].includes(item.role) && e.altKey) setEditing(true);
112
+ }
113
113
  });
114
114
  });
115
115
  ChatListItem.displayName = "ChatListItem";
@@ -1 +1 @@
1
- {"version":3,"file":"ChatListItem.mjs","names":["ChatActionsBar","handleActionClick: ListItemProps['onActionsClick']","data","message","ChatItem"],"sources":["../../../../src/chat/ChatList/components/ChatListItem.tsx"],"sourcesContent":["import { App } from 'antd';\nimport { ReactNode, memo, useCallback, useMemo, useState } from 'react';\n\nimport type { AlertProps } from '@/Alert';\nimport ChatItem from '@/chat/ChatItem';\nimport type { ChatMessage } from '@/chat/types';\nimport { copyToClipboard } from '@/utils/copyToClipboard';\n\nimport type { ChatListItemProps, ListItemProps } from '../type';\nimport ChatActionsBar from './ChatActionsBar';\n\nconst ChatListItem = memo<ChatListItemProps>((props) => {\n const {\n renderMessagesExtra,\n showTitle,\n onActionsClick,\n onAvatarsClick,\n onMessageChange,\n variant,\n text,\n renderMessages,\n renderErrorMessages,\n renderActions,\n loading,\n groupNav,\n renderItems,\n showAvatar,\n ...item\n } = props;\n\n const [editing, setEditing] = useState(false);\n\n const { message } = App.useApp();\n\n const RenderItem = useMemo(() => {\n if (!renderItems || !item?.role) return;\n let renderFunction;\n if (renderItems?.[item.role]) renderFunction = renderItems[item.role];\n if (!renderFunction && renderItems?.['default']) renderFunction = renderItems['default'];\n if (!renderFunction) return;\n return renderFunction;\n }, [renderItems?.[item.role]]);\n\n const RenderMessage = useCallback(\n ({ editableContent, data }: { data: ChatMessage; editableContent: ReactNode }) => {\n if (!renderMessages || !item?.role) return;\n let RenderFunction;\n if (renderMessages?.[item.role]) RenderFunction = renderMessages[item.role];\n if (!RenderFunction && renderMessages?.['default'])\n RenderFunction = renderMessages['default'];\n if (!RenderFunction) return;\n return <RenderFunction {...data} editableContent={editableContent} />;\n },\n [renderMessages?.[item.role]],\n );\n\n const MessageExtra = useCallback(\n ({ data }: { data: ChatMessage }) => {\n if (!renderMessagesExtra || !item?.role) return;\n let RenderFunction;\n if (renderMessagesExtra?.[item.role]) RenderFunction = renderMessagesExtra[item.role];\n if (renderMessagesExtra?.['default']) RenderFunction = renderMessagesExtra['default'];\n if (!RenderFunction) return;\n return <RenderFunction {...data} />;\n },\n [renderMessagesExtra?.[item.role]],\n );\n\n const ErrorMessage = useCallback(\n ({ data }: { data: ChatMessage }) => {\n if (!renderErrorMessages || !item?.error?.type) return;\n let RenderFunction;\n if (renderErrorMessages?.[item.error.type])\n RenderFunction = renderErrorMessages[item.error.type].Render;\n if (!RenderFunction && renderErrorMessages?.['default'])\n RenderFunction = renderErrorMessages['default'].Render;\n if (!RenderFunction) return;\n return <RenderFunction {...data} />;\n },\n [renderErrorMessages],\n );\n\n const Actions = useCallback(\n ({ data }: { data: ChatMessage }) => {\n if (!renderActions || !item?.role) return;\n let RenderFunction;\n if (renderActions?.[item.role]) RenderFunction = renderActions[item.role];\n if (renderActions?.['default']) RenderFunction = renderActions['default'];\n if (!RenderFunction) RenderFunction = ChatActionsBar;\n\n const handleActionClick: ListItemProps['onActionsClick'] = async (action, data) => {\n switch (action.key) {\n case 'copy': {\n await copyToClipboard(data.content);\n message.success(text?.copySuccess || 'Copy Success');\n break;\n }\n case 'edit': {\n setEditing(true);\n }\n }\n\n onActionsClick?.(action, data);\n };\n\n return (\n <RenderFunction\n {...data}\n onActionClick={(actionKey) => handleActionClick?.(actionKey, data)}\n text={text}\n />\n );\n },\n [renderActions?.[item.role], text, onActionsClick],\n );\n\n const error = useMemo(() => {\n if (!item.error) return;\n const message = item.error?.message;\n let alertConfig = {};\n if (item.error.type && renderErrorMessages?.[item.error.type]) {\n alertConfig = renderErrorMessages[item.error.type]?.config as AlertProps;\n }\n return {\n message,\n ...alertConfig,\n };\n }, [renderErrorMessages, item.error]);\n\n if (RenderItem) return <RenderItem key={item.id} {...props} />;\n\n return (\n <ChatItem\n actions={<Actions data={item} />}\n avatar={item.meta}\n avatarAddon={groupNav}\n editing={editing}\n error={error}\n errorMessage={<ErrorMessage data={item} />}\n loading={loading}\n message={item.content}\n messageExtra={<MessageExtra data={item} />}\n onAvatarClick={onAvatarsClick?.(item.role)}\n onChange={(value) => onMessageChange?.(item.id, value)}\n onDoubleClick={(e) => {\n if (item.id === 'default' || item.error) return;\n if (item.role && ['assistant', 'user'].includes(item.role) && e.altKey) {\n setEditing(true);\n }\n }}\n onEditingChange={setEditing}\n placement={variant === 'bubble' ? (item.role === 'user' ? 'right' : 'left') : 'left'}\n primary={item.role === 'user'}\n renderMessage={(editableContent) => (\n <RenderMessage data={item} editableContent={editableContent} />\n )}\n showAvatar={showAvatar}\n showTitle={showTitle}\n text={text}\n time={item.updateAt || item.createAt}\n variant={variant}\n />\n );\n});\n\nChatListItem.displayName = 'ChatListItem';\n\nexport default ChatListItem;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChatListItem.mjs","names":["ChatActionsBar","handleActionClick: ListItemProps['onActionsClick']","data","message","ChatItem"],"sources":["../../../../src/chat/ChatList/components/ChatListItem.tsx"],"sourcesContent":["import { App } from 'antd';\nimport { memo, type ReactNode, useCallback, useMemo, useState } from 'react';\n\nimport { type AlertProps } from '@/Alert';\nimport ChatItem from '@/chat/ChatItem';\nimport { type ChatMessage } from '@/chat/types';\nimport { copyToClipboard } from '@/utils/copyToClipboard';\n\nimport { type ChatListItemProps, type ListItemProps } from '../type';\nimport ChatActionsBar from './ChatActionsBar';\n\nconst ChatListItem = memo<ChatListItemProps>((props) => {\n const {\n renderMessagesExtra,\n showTitle,\n onActionsClick,\n onAvatarsClick,\n onMessageChange,\n variant,\n text,\n renderMessages,\n renderErrorMessages,\n renderActions,\n loading,\n groupNav,\n renderItems,\n showAvatar,\n ...item\n } = props;\n\n const [editing, setEditing] = useState(false);\n\n const { message } = App.useApp();\n\n const RenderItem = useMemo(() => {\n if (!renderItems || !item?.role) return;\n let renderFunction;\n if (renderItems?.[item.role]) renderFunction = renderItems[item.role];\n if (!renderFunction && renderItems?.['default']) renderFunction = renderItems['default'];\n if (!renderFunction) return;\n return renderFunction;\n }, [renderItems?.[item.role]]);\n\n const RenderMessage = useCallback(\n ({ editableContent, data }: { data: ChatMessage; editableContent: ReactNode }) => {\n if (!renderMessages || !item?.role) return;\n let RenderFunction;\n if (renderMessages?.[item.role]) RenderFunction = renderMessages[item.role];\n if (!RenderFunction && renderMessages?.['default'])\n RenderFunction = renderMessages['default'];\n if (!RenderFunction) return;\n return <RenderFunction {...data} editableContent={editableContent} />;\n },\n [renderMessages?.[item.role]],\n );\n\n const MessageExtra = useCallback(\n ({ data }: { data: ChatMessage }) => {\n if (!renderMessagesExtra || !item?.role) return;\n let RenderFunction;\n if (renderMessagesExtra?.[item.role]) RenderFunction = renderMessagesExtra[item.role];\n if (renderMessagesExtra?.['default']) RenderFunction = renderMessagesExtra['default'];\n if (!RenderFunction) return;\n return <RenderFunction {...data} />;\n },\n [renderMessagesExtra?.[item.role]],\n );\n\n const ErrorMessage = useCallback(\n ({ data }: { data: ChatMessage }) => {\n if (!renderErrorMessages || !item?.error?.type) return;\n let RenderFunction;\n if (renderErrorMessages?.[item.error.type])\n RenderFunction = renderErrorMessages[item.error.type].Render;\n if (!RenderFunction && renderErrorMessages?.['default'])\n RenderFunction = renderErrorMessages['default'].Render;\n if (!RenderFunction) return;\n return <RenderFunction {...data} />;\n },\n [renderErrorMessages],\n );\n\n const Actions = useCallback(\n ({ data }: { data: ChatMessage }) => {\n if (!renderActions || !item?.role) return;\n let RenderFunction;\n if (renderActions?.[item.role]) RenderFunction = renderActions[item.role];\n if (renderActions?.['default']) RenderFunction = renderActions['default'];\n if (!RenderFunction) RenderFunction = ChatActionsBar;\n\n const handleActionClick: ListItemProps['onActionsClick'] = async (action, data) => {\n switch (action.key) {\n case 'copy': {\n await copyToClipboard(data.content);\n message.success(text?.copySuccess || 'Copy Success');\n break;\n }\n case 'edit': {\n setEditing(true);\n }\n }\n\n onActionsClick?.(action, data);\n };\n\n return (\n <RenderFunction\n {...data}\n text={text}\n onActionClick={(actionKey) => handleActionClick?.(actionKey, data)}\n />\n );\n },\n [renderActions?.[item.role], text, onActionsClick],\n );\n\n const error = useMemo(() => {\n if (!item.error) return;\n const message = item.error?.message;\n let alertConfig = {};\n if (item.error.type && renderErrorMessages?.[item.error.type]) {\n alertConfig = renderErrorMessages[item.error.type]?.config as AlertProps;\n }\n return {\n message,\n ...alertConfig,\n };\n }, [renderErrorMessages, item.error]);\n\n if (RenderItem) return <RenderItem key={item.id} {...props} />;\n\n return (\n <ChatItem\n actions={<Actions data={item} />}\n avatar={item.meta}\n avatarAddon={groupNav}\n editing={editing}\n error={error}\n errorMessage={<ErrorMessage data={item} />}\n loading={loading}\n message={item.content}\n messageExtra={<MessageExtra data={item} />}\n placement={variant === 'bubble' ? (item.role === 'user' ? 'right' : 'left') : 'left'}\n primary={item.role === 'user'}\n showAvatar={showAvatar}\n showTitle={showTitle}\n text={text}\n time={item.updateAt || item.createAt}\n variant={variant}\n renderMessage={(editableContent) => (\n <RenderMessage data={item} editableContent={editableContent} />\n )}\n onAvatarClick={onAvatarsClick?.(item.role)}\n onChange={(value) => onMessageChange?.(item.id, value)}\n onEditingChange={setEditing}\n onDoubleClick={(e) => {\n if (item.id === 'default' || item.error) return;\n if (item.role && ['assistant', 'user'].includes(item.role) && e.altKey) {\n setEditing(true);\n }\n }}\n />\n );\n});\n\nChatListItem.displayName = 'ChatListItem';\n\nexport default ChatListItem;\n"],"mappings":"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"}
@@ -23,8 +23,8 @@ type RenderMessage = FC<ChatMessage & {
23
23
  }>;
24
24
  type RenderMessageExtra = FC<ChatMessage>;
25
25
  interface RenderErrorMessage {
26
- Render?: FC<ChatMessage>;
27
26
  config?: AlertProps;
27
+ Render?: FC<ChatMessage>;
28
28
  }
29
29
  type RenderAction = FC<ChatActionsBarProps & ChatMessage>;
30
30
  interface ListItemProps {
@@ -1,8 +1,8 @@
1
1
  import { EditableMessageProps } from "./type.mjs";
2
- import * as react136 from "react";
2
+ import * as react132 from "react";
3
3
 
4
4
  //#region src/chat/EditableMessage/EditableMessage.d.ts
5
- declare const EditableMessage: react136.NamedExoticComponent<EditableMessageProps>;
5
+ declare const EditableMessage: react132.NamedExoticComponent<EditableMessageProps>;
6
6
  //#endregion
7
7
  export { EditableMessage };
8
8
  //# sourceMappingURL=EditableMessage.d.mts.map
@@ -20,38 +20,38 @@ const EditableMessage = memo(({ value, onChange, classNames = {}, onEditingChang
20
20
  });
21
21
  const isAutoSize = height === "auto";
22
22
  const input = /* @__PURE__ */ jsx(MessageInput_default, {
23
+ shortcut: true,
23
24
  className: cx(className, classNames?.input),
24
25
  classNames,
25
26
  defaultValue: value,
26
27
  editButtonSize,
27
28
  height,
28
29
  language,
29
- onCancel: () => setTyping(false),
30
- onConfirm: (text$1) => {
31
- onChange?.(text$1);
32
- setTyping(false);
33
- },
34
30
  placeholder,
35
- shortcut: true,
31
+ styles: customStyles,
32
+ text,
33
+ variant,
36
34
  style: {
37
35
  ...style,
38
36
  ...customStyles?.input
39
37
  },
40
- styles: customStyles,
41
- text,
42
- variant
38
+ onCancel: () => setTyping(false),
39
+ onConfirm: (text$1) => {
40
+ onChange?.(text$1);
41
+ setTyping(false);
42
+ }
43
43
  });
44
44
  if (!value && showEditWhenEmpty) return input;
45
45
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [!expand && isEdit ? input : /* @__PURE__ */ jsx(Markdown_default, {
46
46
  className: cx(className, classNames?.markdown),
47
47
  fontSize,
48
48
  fullFeaturedCodeBlock,
49
+ variant: "chat",
49
50
  style: {
50
51
  height: isAutoSize ? "unset" : height,
51
52
  ...style,
52
53
  ...customStyles?.markdown
53
54
  },
54
- variant: "chat",
55
55
  ...markdownProps,
56
56
  children: value || placeholder || ""
57
57
  }), expand && /* @__PURE__ */ jsx(MessageModal_default, {
@@ -60,16 +60,16 @@ const EditableMessage = memo(({ value, onChange, classNames = {}, onEditingChang
60
60
  footer: model?.footer,
61
61
  height,
62
62
  language,
63
+ open: expand,
64
+ placeholder,
65
+ text,
66
+ value,
63
67
  onChange,
64
68
  onEditingChange: setTyping,
65
69
  onOpenChange: (e) => {
66
70
  setExpand(e);
67
71
  setTyping(false);
68
- },
69
- open: expand,
70
- placeholder,
71
- text,
72
- value
72
+ }
73
73
  })] });
74
74
  });
75
75
  EditableMessage.displayName = "EditableMessage";
@@ -1 +1 @@
1
- {"version":3,"file":"EditableMessage.mjs","names":["useControlledState","MessageInput","text","Markdown","MessageModal"],"sources":["../../../src/chat/EditableMessage/EditableMessage.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport Markdown from '@/Markdown';\nimport MessageInput from '@/chat/MessageInput';\nimport MessageModal from '@/chat/MessageModal';\n\nimport type { EditableMessageProps } from './type';\n\nconst EditableMessage = memo<EditableMessageProps>(\n ({\n value,\n onChange,\n classNames = {},\n onEditingChange,\n editing,\n openModal,\n onOpenChange,\n placeholder,\n showEditWhenEmpty = false,\n styles: customStyles,\n className,\n style,\n height,\n variant,\n editButtonSize,\n text,\n fullFeaturedCodeBlock,\n model,\n fontSize,\n language = 'markdown',\n markdownProps,\n }) => {\n const [isEdit, setTyping] = useControlledState(false, {\n onChange: onEditingChange,\n value: editing,\n });\n\n const [expand, setExpand] = useControlledState<boolean>(false, {\n onChange: onOpenChange,\n value: openModal,\n });\n\n const isAutoSize = height === 'auto';\n\n const input = (\n <MessageInput\n className={cx(className, classNames?.input)}\n classNames={classNames}\n defaultValue={value}\n editButtonSize={editButtonSize}\n height={height}\n language={language}\n onCancel={() => setTyping(false)}\n onConfirm={(text) => {\n onChange?.(text);\n setTyping(false);\n }}\n placeholder={placeholder}\n shortcut\n style={{\n ...style,\n ...customStyles?.input,\n }}\n styles={customStyles}\n text={text}\n variant={variant}\n />\n );\n\n if (!value && showEditWhenEmpty) return input;\n\n return (\n <>\n {!expand && isEdit ? (\n input\n ) : (\n <Markdown\n className={cx(className, classNames?.markdown)}\n fontSize={fontSize}\n fullFeaturedCodeBlock={fullFeaturedCodeBlock}\n style={{\n height: isAutoSize ? 'unset' : height,\n ...style,\n ...customStyles?.markdown,\n }}\n variant={'chat'}\n {...markdownProps}\n >\n {value || placeholder || ''}\n </Markdown>\n )}\n {expand && (\n <MessageModal\n editing={isEdit}\n extra={model?.extra}\n footer={model?.footer}\n height={height}\n language={language}\n onChange={onChange}\n onEditingChange={setTyping}\n onOpenChange={(e) => {\n setExpand(e);\n setTyping(false);\n }}\n open={expand}\n placeholder={placeholder}\n text={text}\n value={value}\n />\n )}\n </>\n );\n },\n);\n\nEditableMessage.displayName = 'EditableMessage';\n\nexport default EditableMessage;\n"],"mappings":";;;;;;;;;;;AAYA,MAAM,kBAAkB,MACrB,EACC,OACA,UACA,aAAa,EAAE,EACf,iBACA,SACA,WACA,cACA,aACA,oBAAoB,OACpB,QAAQ,cACR,WACA,OACA,QACA,SACA,gBACA,MACA,uBACA,OACA,UACA,WAAW,YACX,oBACI;CACJ,MAAM,CAAC,QAAQ,aAAaA,cAAmB,OAAO;EACpD,UAAU;EACV,OAAO;EACR,CAAC;CAEF,MAAM,CAAC,QAAQ,aAAaA,cAA4B,OAAO;EAC7D,UAAU;EACV,OAAO;EACR,CAAC;CAEF,MAAM,aAAa,WAAW;CAE9B,MAAM,QACJ,oBAACC;EACC,WAAW,GAAG,WAAW,YAAY,MAAM;EAC/B;EACZ,cAAc;EACE;EACR;EACE;EACV,gBAAgB,UAAU,MAAM;EAChC,YAAY,WAAS;AACnB,cAAWC,OAAK;AAChB,aAAU,MAAM;;EAEL;EACb;EACA,OAAO;GACL,GAAG;GACH,GAAG,cAAc;GAClB;EACD,QAAQ;EACF;EACG;GACT;AAGJ,KAAI,CAAC,SAAS,kBAAmB,QAAO;AAExC,QACE,8CACG,CAAC,UAAU,SACV,QAEA,oBAACC;EACC,WAAW,GAAG,WAAW,YAAY,SAAS;EACpC;EACa;EACvB,OAAO;GACL,QAAQ,aAAa,UAAU;GAC/B,GAAG;GACH,GAAG,cAAc;GAClB;EACD,SAAS;EACT,GAAI;YAEH,SAAS,eAAe;GAChB,EAEZ,UACC,oBAACC;EACC,SAAS;EACT,OAAO,OAAO;EACd,QAAQ,OAAO;EACP;EACE;EACA;EACV,iBAAiB;EACjB,eAAe,MAAM;AACnB,aAAU,EAAE;AACZ,aAAU,MAAM;;EAElB,MAAM;EACO;EACP;EACC;GACP,IAEH;EAGR;AAED,gBAAgB,cAAc;AAE9B,8BAAe"}
1
+ {"version":3,"file":"EditableMessage.mjs","names":["useControlledState","MessageInput","text","Markdown","MessageModal"],"sources":["../../../src/chat/EditableMessage/EditableMessage.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport MessageInput from '@/chat/MessageInput';\nimport MessageModal from '@/chat/MessageModal';\nimport Markdown from '@/Markdown';\n\nimport { type EditableMessageProps } from './type';\n\nconst EditableMessage = memo<EditableMessageProps>(\n ({\n value,\n onChange,\n classNames = {},\n onEditingChange,\n editing,\n openModal,\n onOpenChange,\n placeholder,\n showEditWhenEmpty = false,\n styles: customStyles,\n className,\n style,\n height,\n variant,\n editButtonSize,\n text,\n fullFeaturedCodeBlock,\n model,\n fontSize,\n language = 'markdown',\n markdownProps,\n }) => {\n const [isEdit, setTyping] = useControlledState(false, {\n onChange: onEditingChange,\n value: editing,\n });\n\n const [expand, setExpand] = useControlledState<boolean>(false, {\n onChange: onOpenChange,\n value: openModal,\n });\n\n const isAutoSize = height === 'auto';\n\n const input = (\n <MessageInput\n shortcut\n className={cx(className, classNames?.input)}\n classNames={classNames}\n defaultValue={value}\n editButtonSize={editButtonSize}\n height={height}\n language={language}\n placeholder={placeholder}\n styles={customStyles}\n text={text}\n variant={variant}\n style={{\n ...style,\n ...customStyles?.input,\n }}\n onCancel={() => setTyping(false)}\n onConfirm={(text) => {\n onChange?.(text);\n setTyping(false);\n }}\n />\n );\n\n if (!value && showEditWhenEmpty) return input;\n\n return (\n <>\n {!expand && isEdit ? (\n input\n ) : (\n <Markdown\n className={cx(className, classNames?.markdown)}\n fontSize={fontSize}\n fullFeaturedCodeBlock={fullFeaturedCodeBlock}\n variant={'chat'}\n style={{\n height: isAutoSize ? 'unset' : height,\n ...style,\n ...customStyles?.markdown,\n }}\n {...markdownProps}\n >\n {value || placeholder || ''}\n </Markdown>\n )}\n {expand && (\n <MessageModal\n editing={isEdit}\n extra={model?.extra}\n footer={model?.footer}\n height={height}\n language={language}\n open={expand}\n placeholder={placeholder}\n text={text}\n value={value}\n onChange={onChange}\n onEditingChange={setTyping}\n onOpenChange={(e) => {\n setExpand(e);\n setTyping(false);\n }}\n />\n )}\n </>\n );\n },\n);\n\nEditableMessage.displayName = 'EditableMessage';\n\nexport default EditableMessage;\n"],"mappings":";;;;;;;;;;;AAYA,MAAM,kBAAkB,MACrB,EACC,OACA,UACA,aAAa,EAAE,EACf,iBACA,SACA,WACA,cACA,aACA,oBAAoB,OACpB,QAAQ,cACR,WACA,OACA,QACA,SACA,gBACA,MACA,uBACA,OACA,UACA,WAAW,YACX,oBACI;CACJ,MAAM,CAAC,QAAQ,aAAaA,cAAmB,OAAO;EACpD,UAAU;EACV,OAAO;EACR,CAAC;CAEF,MAAM,CAAC,QAAQ,aAAaA,cAA4B,OAAO;EAC7D,UAAU;EACV,OAAO;EACR,CAAC;CAEF,MAAM,aAAa,WAAW;CAE9B,MAAM,QACJ,oBAACC;EACC;EACA,WAAW,GAAG,WAAW,YAAY,MAAM;EAC/B;EACZ,cAAc;EACE;EACR;EACE;EACG;EACb,QAAQ;EACF;EACG;EACT,OAAO;GACL,GAAG;GACH,GAAG,cAAc;GAClB;EACD,gBAAgB,UAAU,MAAM;EAChC,YAAY,WAAS;AACnB,cAAWC,OAAK;AAChB,aAAU,MAAM;;GAElB;AAGJ,KAAI,CAAC,SAAS,kBAAmB,QAAO;AAExC,QACE,8CACG,CAAC,UAAU,SACV,QAEA,oBAACC;EACC,WAAW,GAAG,WAAW,YAAY,SAAS;EACpC;EACa;EACvB,SAAS;EACT,OAAO;GACL,QAAQ,aAAa,UAAU;GAC/B,GAAG;GACH,GAAG,cAAc;GAClB;EACD,GAAI;YAEH,SAAS,eAAe;GAChB,EAEZ,UACC,oBAACC;EACC,SAAS;EACT,OAAO,OAAO;EACd,QAAQ,OAAO;EACP;EACE;EACV,MAAM;EACO;EACP;EACC;EACG;EACV,iBAAiB;EACjB,eAAe,MAAM;AACnB,aAAU,EAAE;AACZ,aAAU,MAAM;;GAElB,IAEH;EAGR;AAED,gBAAgB,cAAc;AAE9B,8BAAe"}
@@ -1,8 +1,8 @@
1
1
  import { EditableMessageListProps } from "./type.mjs";
2
- import * as react133 from "react";
2
+ import * as react135 from "react";
3
3
 
4
4
  //#region src/chat/EditableMessageList/EditableMessageList.d.ts
5
- declare const EditableMessageList: react133.NamedExoticComponent<EditableMessageListProps>;
5
+ declare const EditableMessageList: react135.NamedExoticComponent<EditableMessageListProps>;
6
6
  //#endregion
7
7
  export { EditableMessageList };
8
8
  //# sourceMappingURL=EditableMessageList.d.mts.map
@@ -30,20 +30,16 @@ const EditableMessageList = memo(({ disabled, dataSources, onChange, texts }) =>
30
30
  return dataSources ? /* @__PURE__ */ jsxs(FlexBasic_default, {
31
31
  gap: 12,
32
32
  children: [chatMessages.map((item, index) => /* @__PURE__ */ jsxs(FlexBasic_default, {
33
+ horizontal: true,
33
34
  align: "center",
34
35
  gap: 8,
35
- horizontal: true,
36
36
  width: "100%",
37
37
  children: [
38
38
  /* @__PURE__ */ jsx(Select_default, {
39
39
  disabled,
40
- onChange: (value) => {
41
- dispatch({
42
- index,
43
- role: value,
44
- type: "updateMessageRole"
45
- });
46
- },
40
+ style: { width: 120 },
41
+ styles: { popup: { root: { zIndex: 100 } } },
42
+ value: item.role,
47
43
  options: [
48
44
  {
49
45
  label: systemText,
@@ -58,32 +54,36 @@ const EditableMessageList = memo(({ disabled, dataSources, onChange, texts }) =>
58
54
  value: "assistant"
59
55
  }
60
56
  ],
61
- style: { width: 120 },
62
- styles: { popup: { root: { zIndex: 100 } } },
63
- value: item.role
57
+ onChange: (value) => {
58
+ dispatch({
59
+ index,
60
+ role: value,
61
+ type: "updateMessageRole"
62
+ });
63
+ }
64
64
  }),
65
65
  /* @__PURE__ */ jsx(ControlInput_default, {
66
66
  disabled,
67
+ placeholder: item.role === "user" ? inputPlaceholderText : outputPlaceholderText,
68
+ value: item.content,
67
69
  onChange: (e) => {
68
70
  dispatch({
69
71
  index,
70
72
  message: e,
71
73
  type: "updateMessage"
72
74
  });
73
- },
74
- placeholder: item.role === "user" ? inputPlaceholderText : outputPlaceholderText,
75
- value: item.content
75
+ }
76
76
  }),
77
77
  /* @__PURE__ */ jsx(ActionIcon_default, {
78
78
  icon: Trash,
79
+ title: deleteText,
80
+ variant: "filled",
79
81
  onClick: () => {
80
82
  dispatch({
81
83
  index,
82
84
  type: "deleteMessage"
83
85
  });
84
- },
85
- title: deleteText,
86
- variant: "filled"
86
+ }
87
87
  })
88
88
  ]
89
89
  }, `${index}-${item.content}`)), /* @__PURE__ */ jsx(Button_default, {
@@ -1 +1 @@
1
- {"version":3,"file":"EditableMessageList.mjs","names":["editableMessageMessages","Flexbox","Select","ControlInput","ActionIcon","Button"],"sources":["../../../src/chat/EditableMessageList/EditableMessageList.tsx"],"sourcesContent":["'use client';\n\nimport isEqual from 'fast-deep-equal';\nimport { Plus, Trash } from 'lucide-react';\nimport { memo, useEffect, useReducer } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport Button from '@/Button';\nimport ControlInput from '@/EditableText/ControlInput';\nimport { Flexbox } from '@/Flex';\nimport Select from '@/Select';\nimport editableMessageMessages from '@/i18n/resources/en/editableMessage';\nimport { useTranslation } from '@/i18n/useTranslation';\n\nimport { messagesReducer } from './messageReducer';\nimport type { EditableMessageListProps } from './type';\n\nconst EditableMessageList = memo<EditableMessageListProps>(\n ({ disabled, dataSources, onChange, texts }) => {\n const [chatMessages, dispatch] = useReducer(messagesReducer, dataSources);\n const { t } = useTranslation(editableMessageMessages);\n\n const addPropsText = texts?.addProps ?? t('editableMessage.addProps');\n const deleteText = texts?.delete ?? t('editableMessage.delete');\n const inputPlaceholderText = texts?.inputPlaceholder ?? t('editableMessage.inputPlaceholder');\n const outputPlaceholderText =\n texts?.outputPlaceholder ?? t('editableMessage.outputPlaceholder');\n const systemText = texts?.system ?? t('editableMessage.system');\n const inputText = texts?.input ?? t('editableMessage.input');\n const outputText = texts?.output ?? t('editableMessage.output');\n\n useEffect(() => {\n if (!isEqual(dataSources, chatMessages)) {\n onChange?.(chatMessages);\n }\n }, [chatMessages]);\n\n return dataSources ? (\n <Flexbox gap={12}>\n {chatMessages.map((item, index) => (\n <Flexbox\n align={'center'}\n gap={8}\n horizontal\n key={`${index}-${item.content}`}\n width={'100%'}\n >\n <Select\n disabled={disabled}\n onChange={(value) => {\n dispatch({ index, role: value, type: 'updateMessageRole' });\n }}\n options={[\n { label: systemText, value: 'system' },\n { label: inputText, value: 'user' },\n { label: outputText, value: 'assistant' },\n ]}\n style={{ width: 120 }}\n styles={{ popup: { root: { zIndex: 100 } } }}\n value={item.role}\n />\n <ControlInput\n disabled={disabled}\n onChange={(e) => {\n dispatch({ index, message: e, type: 'updateMessage' });\n }}\n placeholder={item.role === 'user' ? inputPlaceholderText : outputPlaceholderText}\n value={item.content}\n />\n <ActionIcon\n icon={Trash}\n onClick={() => {\n dispatch({ index, type: 'deleteMessage' });\n }}\n title={deleteText}\n variant={'filled'}\n />\n </Flexbox>\n ))}\n\n <Button\n block\n disabled={disabled}\n icon={Plus}\n onClick={() => {\n const lastMeg = chatMessages.at(-1);\n\n dispatch({\n message: { content: '', role: lastMeg?.role === 'user' ? 'assistant' : 'user' },\n type: 'addMessage',\n });\n }}\n >\n {addPropsText}\n </Button>\n </Flexbox>\n ) : undefined;\n },\n isEqual,\n);\n\nEditableMessageList.displayName = 'EditableMessageList';\n\nexport default EditableMessageList;\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,MAAM,sBAAsB,MACzB,EAAE,UAAU,aAAa,UAAU,YAAY;CAC9C,MAAM,CAAC,cAAc,YAAY,WAAW,iBAAiB,YAAY;CACzE,MAAM,EAAE,MAAM,eAAeA,wBAAwB;CAErD,MAAM,eAAe,OAAO,YAAY,EAAE,2BAA2B;CACrE,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;CAC/D,MAAM,uBAAuB,OAAO,oBAAoB,EAAE,mCAAmC;CAC7F,MAAM,wBACJ,OAAO,qBAAqB,EAAE,oCAAoC;CACpE,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;CAC/D,MAAM,YAAY,OAAO,SAAS,EAAE,wBAAwB;CAC5D,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;AAE/D,iBAAgB;AACd,MAAI,CAAC,QAAQ,aAAa,aAAa,CACrC,YAAW,aAAa;IAEzB,CAAC,aAAa,CAAC;AAElB,QAAO,cACL,qBAACC;EAAQ,KAAK;aACX,aAAa,KAAK,MAAM,UACvB,qBAACA;GACC,OAAO;GACP,KAAK;GACL;GAEA,OAAO;;IAEP,oBAACC;KACW;KACV,WAAW,UAAU;AACnB,eAAS;OAAE;OAAO,MAAM;OAAO,MAAM;OAAqB,CAAC;;KAE7D,SAAS;MACP;OAAE,OAAO;OAAY,OAAO;OAAU;MACtC;OAAE,OAAO;OAAW,OAAO;OAAQ;MACnC;OAAE,OAAO;OAAY,OAAO;OAAa;MAC1C;KACD,OAAO,EAAE,OAAO,KAAK;KACrB,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE,EAAE;KAC5C,OAAO,KAAK;MACZ;IACF,oBAACC;KACW;KACV,WAAW,MAAM;AACf,eAAS;OAAE;OAAO,SAAS;OAAG,MAAM;OAAiB,CAAC;;KAExD,aAAa,KAAK,SAAS,SAAS,uBAAuB;KAC3D,OAAO,KAAK;MACZ;IACF,oBAACC;KACC,MAAM;KACN,eAAe;AACb,eAAS;OAAE;OAAO,MAAM;OAAiB,CAAC;;KAE5C,OAAO;KACP,SAAS;MACT;;KAhCG,GAAG,MAAM,GAAG,KAAK,UAiCd,CACV,EAEF,oBAACC;GACC;GACU;GACV,MAAM;GACN,eAAe;AAGb,aAAS;KACP,SAAS;MAAE,SAAS;MAAI,MAHV,aAAa,GAAG,GAAG,EAGM,SAAS,SAAS,cAAc;MAAQ;KAC/E,MAAM;KACP,CAAC;;aAGH;IACM;GACD,GACR;GAEN,QACD;AAED,oBAAoB,cAAc;AAElC,kCAAe"}
1
+ {"version":3,"file":"EditableMessageList.mjs","names":["editableMessageMessages","Flexbox","Select","ControlInput","ActionIcon","Button"],"sources":["../../../src/chat/EditableMessageList/EditableMessageList.tsx"],"sourcesContent":["'use client';\n\nimport isEqual from 'fast-deep-equal';\nimport { Plus, Trash } from 'lucide-react';\nimport { memo, useEffect, useReducer } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport Button from '@/Button';\nimport ControlInput from '@/EditableText/ControlInput';\nimport { Flexbox } from '@/Flex';\nimport editableMessageMessages from '@/i18n/resources/en/editableMessage';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Select from '@/Select';\n\nimport { messagesReducer } from './messageReducer';\nimport { type EditableMessageListProps } from './type';\n\nconst EditableMessageList = memo<EditableMessageListProps>(\n ({ disabled, dataSources, onChange, texts }) => {\n const [chatMessages, dispatch] = useReducer(messagesReducer, dataSources);\n const { t } = useTranslation(editableMessageMessages);\n\n const addPropsText = texts?.addProps ?? t('editableMessage.addProps');\n const deleteText = texts?.delete ?? t('editableMessage.delete');\n const inputPlaceholderText = texts?.inputPlaceholder ?? t('editableMessage.inputPlaceholder');\n const outputPlaceholderText =\n texts?.outputPlaceholder ?? t('editableMessage.outputPlaceholder');\n const systemText = texts?.system ?? t('editableMessage.system');\n const inputText = texts?.input ?? t('editableMessage.input');\n const outputText = texts?.output ?? t('editableMessage.output');\n\n useEffect(() => {\n if (!isEqual(dataSources, chatMessages)) {\n onChange?.(chatMessages);\n }\n }, [chatMessages]);\n\n return dataSources ? (\n <Flexbox gap={12}>\n {chatMessages.map((item, index) => (\n <Flexbox\n horizontal\n align={'center'}\n gap={8}\n key={`${index}-${item.content}`}\n width={'100%'}\n >\n <Select\n disabled={disabled}\n style={{ width: 120 }}\n styles={{ popup: { root: { zIndex: 100 } } }}\n value={item.role}\n options={[\n { label: systemText, value: 'system' },\n { label: inputText, value: 'user' },\n { label: outputText, value: 'assistant' },\n ]}\n onChange={(value) => {\n dispatch({ index, role: value, type: 'updateMessageRole' });\n }}\n />\n <ControlInput\n disabled={disabled}\n placeholder={item.role === 'user' ? inputPlaceholderText : outputPlaceholderText}\n value={item.content}\n onChange={(e) => {\n dispatch({ index, message: e, type: 'updateMessage' });\n }}\n />\n <ActionIcon\n icon={Trash}\n title={deleteText}\n variant={'filled'}\n onClick={() => {\n dispatch({ index, type: 'deleteMessage' });\n }}\n />\n </Flexbox>\n ))}\n\n <Button\n block\n disabled={disabled}\n icon={Plus}\n onClick={() => {\n const lastMeg = chatMessages.at(-1);\n\n dispatch({\n message: { content: '', role: lastMeg?.role === 'user' ? 'assistant' : 'user' },\n type: 'addMessage',\n });\n }}\n >\n {addPropsText}\n </Button>\n </Flexbox>\n ) : undefined;\n },\n isEqual,\n);\n\nEditableMessageList.displayName = 'EditableMessageList';\n\nexport default EditableMessageList;\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,MAAM,sBAAsB,MACzB,EAAE,UAAU,aAAa,UAAU,YAAY;CAC9C,MAAM,CAAC,cAAc,YAAY,WAAW,iBAAiB,YAAY;CACzE,MAAM,EAAE,MAAM,eAAeA,wBAAwB;CAErD,MAAM,eAAe,OAAO,YAAY,EAAE,2BAA2B;CACrE,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;CAC/D,MAAM,uBAAuB,OAAO,oBAAoB,EAAE,mCAAmC;CAC7F,MAAM,wBACJ,OAAO,qBAAqB,EAAE,oCAAoC;CACpE,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;CAC/D,MAAM,YAAY,OAAO,SAAS,EAAE,wBAAwB;CAC5D,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;AAE/D,iBAAgB;AACd,MAAI,CAAC,QAAQ,aAAa,aAAa,CACrC,YAAW,aAAa;IAEzB,CAAC,aAAa,CAAC;AAElB,QAAO,cACL,qBAACC;EAAQ,KAAK;aACX,aAAa,KAAK,MAAM,UACvB,qBAACA;GACC;GACA,OAAO;GACP,KAAK;GAEL,OAAO;;IAEP,oBAACC;KACW;KACV,OAAO,EAAE,OAAO,KAAK;KACrB,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE,EAAE;KAC5C,OAAO,KAAK;KACZ,SAAS;MACP;OAAE,OAAO;OAAY,OAAO;OAAU;MACtC;OAAE,OAAO;OAAW,OAAO;OAAQ;MACnC;OAAE,OAAO;OAAY,OAAO;OAAa;MAC1C;KACD,WAAW,UAAU;AACnB,eAAS;OAAE;OAAO,MAAM;OAAO,MAAM;OAAqB,CAAC;;MAE7D;IACF,oBAACC;KACW;KACV,aAAa,KAAK,SAAS,SAAS,uBAAuB;KAC3D,OAAO,KAAK;KACZ,WAAW,MAAM;AACf,eAAS;OAAE;OAAO,SAAS;OAAG,MAAM;OAAiB,CAAC;;MAExD;IACF,oBAACC;KACC,MAAM;KACN,OAAO;KACP,SAAS;KACT,eAAe;AACb,eAAS;OAAE;OAAO,MAAM;OAAiB,CAAC;;MAE5C;;KAhCG,GAAG,MAAM,GAAG,KAAK,UAiCd,CACV,EAEF,oBAACC;GACC;GACU;GACV,MAAM;GACN,eAAe;AAGb,aAAS;KACP,SAAS;MAAE,SAAS;MAAI,MAHV,aAAa,GAAG,GAAG,EAGM,SAAS,SAAS,cAAc;MAAQ;KAC/E,MAAM;KACP,CAAC;;aAGH;IACM;GACD,GACR;GAEN,QACD;AAED,oBAAoB,cAAc;AAElC,kCAAe"}
@@ -1,8 +1,8 @@
1
1
  import { MessageInputProps } from "./type.mjs";
2
- import * as react134 from "react";
2
+ import * as react133 from "react";
3
3
 
4
4
  //#region src/chat/MessageInput/MessageInput.d.ts
5
- declare const MessageInput: react134.NamedExoticComponent<MessageInputProps>;
5
+ declare const MessageInput: react133.NamedExoticComponent<MessageInputProps>;
6
6
  //#endregion
7
7
  export { MessageInput };
8
8
  //# sourceMappingURL=MessageInput.d.mts.map