@lobehub/ui 5.23.5 → 5.25.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 (375) hide show
  1. package/es/A/index.mjs +2 -1
  2. package/es/A/index.mjs.map +1 -1
  3. package/es/Accordion/Accordion.mjs.map +1 -1
  4. package/es/Accordion/AccordionItem.mjs +0 -1
  5. package/es/Accordion/AccordionItem.mjs.map +1 -1
  6. package/es/Accordion/ArrowIcon.mjs.map +1 -1
  7. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  8. package/es/ActionIcon/components/utils.mjs +7 -9
  9. package/es/ActionIcon/components/utils.mjs.map +1 -1
  10. package/es/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  11. package/es/Alert/Alert.mjs.map +1 -1
  12. package/es/Avatar/Avatar.mjs.map +1 -1
  13. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  14. package/es/Burger/Burger.mjs.map +1 -1
  15. package/es/Checkbox/Checkbox.mjs.map +1 -1
  16. package/es/Checkbox/CheckboxGroup.mjs +4 -2
  17. package/es/Checkbox/CheckboxGroup.mjs.map +1 -1
  18. package/es/CodeDiff/CodeDiff.mjs +20 -18
  19. package/es/CodeDiff/CodeDiff.mjs.map +1 -1
  20. package/es/CodeDiff/DiffPanel.mjs.map +1 -1
  21. package/es/CodeDiff/PatchDiff.mjs +18 -16
  22. package/es/CodeDiff/PatchDiff.mjs.map +1 -1
  23. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  24. package/es/Collapse/Collapse.mjs.map +1 -1
  25. package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
  26. package/es/ConfigProvider/index.mjs.map +1 -1
  27. package/es/ContextMenu/index.d.mts +2 -2
  28. package/es/ContextMenu/index.mjs +2 -2
  29. package/es/CopyButton/CopyButton.mjs +2 -1
  30. package/es/CopyButton/CopyButton.mjs.map +1 -1
  31. package/es/DraggablePanel/DraggablePanel.mjs.map +1 -1
  32. package/es/DraggablePanel/components/DraggablePanelHeader.mjs.map +1 -1
  33. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  34. package/es/Drawer/Drawer.mjs.map +1 -1
  35. package/es/Dropdown/Dropdown.mjs.map +1 -1
  36. package/es/EditableText/ControlInput.mjs.map +1 -1
  37. package/es/EditableText/EditableText.mjs.map +1 -1
  38. package/es/EditorSlashMenu/EditorSlashMenu.mjs.map +1 -1
  39. package/es/EditorSlashMenu/MenuItemRenderer.mjs.map +1 -1
  40. package/es/EmojiPicker/AvatarUploader.mjs.map +1 -1
  41. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  42. package/es/Empty/Empty.mjs.map +1 -1
  43. package/es/FileTypeIcon/FileTypeIcon.mjs.map +1 -1
  44. package/es/FileTypeIcon/components/FileIcon.mjs.map +1 -1
  45. package/es/FileTypeIcon/components/FolderIcon.mjs.map +1 -1
  46. package/es/FluentEmoji/FluentEmoji.mjs.map +1 -1
  47. package/es/Footer/Footer.mjs.map +1 -1
  48. package/es/Form/Form.mjs.map +1 -1
  49. package/es/Form/components/FormGroup.mjs.map +1 -1
  50. package/es/Form/components/FormSubmitFooter.mjs.map +1 -1
  51. package/es/Form/components/FormTitle.mjs.map +1 -1
  52. package/es/FormModal/FormModal.mjs.map +1 -1
  53. package/es/Freeze/Freeze.mjs.map +1 -1
  54. package/es/GroupAvatar/GroupAvatar.mjs.map +1 -1
  55. package/es/GuideCard/GuideCard.mjs.map +1 -1
  56. package/es/Header/Header.mjs.map +1 -1
  57. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  58. package/es/Highlighter/Highlighter.mjs.map +1 -1
  59. package/es/Highlighter/LangSelect.mjs +41 -40
  60. package/es/Highlighter/LangSelect.mjs.map +1 -1
  61. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs +2 -1
  62. package/es/Highlighter/SyntaxHighlighter/StaticRenderer.mjs.map +1 -1
  63. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
  64. package/es/Highlighter/SyntaxHighlighter/style.mjs +2 -2
  65. package/es/Highlighter/SyntaxHighlighter/style.mjs.map +1 -1
  66. package/es/Hotkey/Hotkey.mjs.map +1 -1
  67. package/es/HotkeyInput/HotkeyInput.mjs +3 -1
  68. package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
  69. package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
  70. package/es/HtmlPreview/Iframe.mjs.map +1 -1
  71. package/es/HtmlPreview/const.mjs +1 -1
  72. package/es/HtmlPreview/const.mjs.map +1 -1
  73. package/es/Icon/Icon.mjs.map +1 -1
  74. package/es/Icon/components/utils.mjs +7 -9
  75. package/es/Icon/components/utils.mjs.map +1 -1
  76. package/es/Image/Image.mjs.map +1 -1
  77. package/es/Image/components/Toolbar.mjs +2 -1
  78. package/es/Image/components/Toolbar.mjs.map +1 -1
  79. package/es/Image/components/usePreview.mjs.map +1 -1
  80. package/es/Image/components/usePreviewGroup.mjs.map +1 -1
  81. package/es/ImageSelect/ImageSelect.mjs.map +1 -1
  82. package/es/Img/index.mjs +2 -1
  83. package/es/Img/index.mjs.map +1 -1
  84. package/es/Layout/Layout.mjs.map +1 -1
  85. package/es/List/List.mjs.map +1 -1
  86. package/es/List/ListItem/index.mjs.map +1 -1
  87. package/es/Markdown/Markdown.mjs.map +1 -1
  88. package/es/Markdown/SyntaxMarkdown/MarkdownRender.mjs.map +1 -1
  89. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs +2 -1
  90. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs.map +1 -1
  91. package/es/Markdown/SyntaxMarkdown/style.mjs.map +1 -1
  92. package/es/Markdown/SyntaxMarkdown/useSmoothStreamContent.mjs +2 -2
  93. package/es/Markdown/SyntaxMarkdown/useSmoothStreamContent.mjs.map +1 -1
  94. package/es/Markdown/components/CodeBlock.mjs.map +1 -1
  95. package/es/Markdown/components/Footnotes.mjs.map +1 -1
  96. package/es/Markdown/components/MarkdownTable/index.mjs.map +1 -1
  97. package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs.map +1 -1
  98. package/es/Markdown/components/SearchResultCards/index.mjs.map +1 -1
  99. package/es/MaterialFileTypeIcon/MaterialFileTypeIcon.mjs.map +1 -1
  100. package/es/Menu/Menu.mjs.map +1 -1
  101. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  102. package/es/Mermaid/Mermaid.mjs.map +1 -1
  103. package/es/Mermaid/SyntaxMermaid/MermaidFallback.mjs +35 -0
  104. package/es/Mermaid/SyntaxMermaid/MermaidFallback.mjs.map +1 -0
  105. package/es/Mermaid/SyntaxMermaid/MermaidSvg.mjs +52 -0
  106. package/es/Mermaid/SyntaxMermaid/MermaidSvg.mjs.map +1 -0
  107. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs +13 -42
  108. package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs.map +1 -1
  109. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs +13 -43
  110. package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs.map +1 -1
  111. package/es/Mermaid/SyntaxMermaid/prepareInlineSvg.mjs +52 -0
  112. package/es/Mermaid/SyntaxMermaid/prepareInlineSvg.mjs.map +1 -0
  113. package/es/Mermaid/SyntaxMermaid/prepareMermaidSvg.mjs +20 -0
  114. package/es/Mermaid/SyntaxMermaid/prepareMermaidSvg.mjs.map +1 -0
  115. package/es/Mermaid/SyntaxMermaid/style.mjs +11 -0
  116. package/es/Mermaid/SyntaxMermaid/style.mjs.map +1 -1
  117. package/es/Mermaid/const.mjs +10 -31
  118. package/es/Mermaid/const.mjs.map +1 -1
  119. package/es/Mermaid/index.d.mts +2 -1
  120. package/es/Mermaid/index.mjs +2 -1
  121. package/es/Mermaid/type.d.mts +2 -2
  122. package/es/Modal/Modal.mjs.map +1 -1
  123. package/es/Modal/ModalStackItem.mjs.map +1 -1
  124. package/es/Modal/RawModalStackItem.mjs +6 -5
  125. package/es/Modal/RawModalStackItem.mjs.map +1 -1
  126. package/es/Modal/imperative.mjs +4 -2
  127. package/es/Modal/imperative.mjs.map +1 -1
  128. package/es/Modal/style.mjs.map +1 -1
  129. package/es/NeuralNetworkLoading/NeuralNetworkLoading.mjs +1 -1
  130. package/es/NeuralNetworkLoading/NeuralNetworkLoading.mjs.map +1 -1
  131. package/es/ScrollShadow/ScrollShadow.mjs +13 -12
  132. package/es/ScrollShadow/ScrollShadow.mjs.map +1 -1
  133. package/es/SearchBar/SearchBar.mjs.map +1 -1
  134. package/es/SideNav/SideNav.mjs.map +1 -1
  135. package/es/Skeleton/Skeleton.mjs.map +1 -1
  136. package/es/Skeleton/SkeletonButton.mjs +2 -1
  137. package/es/Skeleton/SkeletonButton.mjs.map +1 -1
  138. package/es/Skeleton/SkeletonParagraph.mjs.map +1 -1
  139. package/es/Skeleton/SkeletonTags.mjs.map +1 -1
  140. package/es/SliderWithInput/SliderWithInput.mjs.map +1 -1
  141. package/es/Snippet/Snippet.mjs.map +1 -1
  142. package/es/SortableList/SortableList.mjs +5 -1
  143. package/es/SortableList/SortableList.mjs.map +1 -1
  144. package/es/SortableList/components/SortableItem.mjs.map +1 -1
  145. package/es/Text/Text.mjs +22 -21
  146. package/es/Text/Text.mjs.map +1 -1
  147. package/es/ThemeProvider/ThemeProvider.mjs +4 -3
  148. package/es/ThemeProvider/ThemeProvider.mjs.map +1 -1
  149. package/es/ThemeSwitch/ThemeSwitch.mjs.map +1 -1
  150. package/es/Toc/Toc.mjs.map +1 -1
  151. package/es/Toc/TocMobile.mjs.map +1 -1
  152. package/es/Video/index.mjs.map +1 -1
  153. package/es/awesome/AuroraBackground/AuroraBackground.mjs.map +1 -1
  154. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  155. package/es/awesome/Giscus/Giscus.mjs.map +1 -1
  156. package/es/awesome/GradientButton/GradientButton.mjs +1 -3
  157. package/es/awesome/GradientButton/GradientButton.mjs.map +1 -1
  158. package/es/awesome/GridBackground/GridBackground.mjs.map +1 -1
  159. package/es/awesome/GridBackground/GridShowcase.mjs.map +1 -1
  160. package/es/awesome/GridBackground/components/Grid.mjs.map +1 -1
  161. package/es/awesome/Hero/Hero.mjs.map +1 -1
  162. package/es/awesome/Spline/ParentSize.mjs.map +1 -1
  163. package/es/awesome/Spline/Spine.mjs.map +1 -1
  164. package/es/awesome/Spotlight/Spotlight.mjs +2 -1
  165. package/es/awesome/Spotlight/Spotlight.mjs.map +1 -1
  166. package/es/awesome/SpotlightCard/SpotlightCard.mjs.map +1 -1
  167. package/es/awesome/SpotlightCard/SpotlightCardItem.mjs.map +1 -1
  168. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
  169. package/es/base-ui/AutoComplete/AutoComplete.mjs.map +1 -1
  170. package/es/base-ui/Button/Button.mjs +13 -11
  171. package/es/base-ui/Button/Button.mjs.map +1 -1
  172. package/es/base-ui/Button/SplitButton.mjs +2 -1
  173. package/es/base-ui/Button/SplitButton.mjs.map +1 -1
  174. package/es/base-ui/Checkbox/Checkbox.mjs.map +1 -1
  175. package/es/base-ui/Checkbox/CheckboxGroup.mjs.map +1 -1
  176. package/es/base-ui/ContextMenu/ContextMenuHost.mjs.map +1 -1
  177. package/es/base-ui/ContextMenu/ContextMenuTrigger.mjs +2 -1
  178. package/es/base-ui/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  179. package/es/base-ui/ContextMenu/imperative.d.mts +2 -2
  180. package/es/base-ui/ContextMenu/index.d.mts +2 -2
  181. package/es/base-ui/ContextMenu/renderItems.mjs +2 -1
  182. package/es/base-ui/ContextMenu/renderItems.mjs.map +1 -1
  183. package/es/base-ui/ContextMenu/store.d.mts +13 -1
  184. package/es/base-ui/ContextMenu/store.mjs +29 -4
  185. package/es/base-ui/ContextMenu/store.mjs.map +1 -1
  186. package/es/base-ui/Drawer/Drawer.d.mts +6 -0
  187. package/es/base-ui/Drawer/Drawer.mjs +152 -0
  188. package/es/base-ui/Drawer/Drawer.mjs.map +1 -0
  189. package/es/base-ui/Drawer/DrawerLayerContext.mjs +10 -0
  190. package/es/base-ui/Drawer/DrawerLayerContext.mjs.map +1 -0
  191. package/es/base-ui/Drawer/DrawerPushContext.mjs +27 -0
  192. package/es/base-ui/Drawer/DrawerPushContext.mjs.map +1 -0
  193. package/es/base-ui/Drawer/atoms.d.mts +58 -0
  194. package/es/base-ui/Drawer/atoms.mjs +262 -0
  195. package/es/base-ui/Drawer/atoms.mjs.map +1 -0
  196. package/es/base-ui/Drawer/constants.d.mts +17 -0
  197. package/es/base-ui/Drawer/constants.mjs +72 -0
  198. package/es/base-ui/Drawer/constants.mjs.map +1 -0
  199. package/es/base-ui/Drawer/index.d.mts +5 -0
  200. package/es/base-ui/Drawer/style.mjs +295 -0
  201. package/es/base-ui/Drawer/style.mjs.map +1 -0
  202. package/es/base-ui/Drawer/type.d.mts +65 -0
  203. package/es/base-ui/DropdownMenu/DropdownMenu.mjs +2 -1
  204. package/es/base-ui/DropdownMenu/DropdownMenu.mjs.map +1 -1
  205. package/es/base-ui/DropdownMenu/atoms.mjs +2 -1
  206. package/es/base-ui/DropdownMenu/atoms.mjs.map +1 -1
  207. package/es/base-ui/DropdownMenu/renderItems.mjs +2 -1
  208. package/es/base-ui/DropdownMenu/renderItems.mjs.map +1 -1
  209. package/es/base-ui/DropdownMenu/sharedStyle.mjs +3 -0
  210. package/es/base-ui/DropdownMenu/sharedStyle.mjs.map +1 -1
  211. package/es/base-ui/FloatingPanel/FloatingPanel.mjs.map +1 -1
  212. package/es/base-ui/FloatingSheet/FloatingSheet.mjs +4 -1
  213. package/es/base-ui/FloatingSheet/FloatingSheet.mjs.map +1 -1
  214. package/es/base-ui/FloatingSheet/FloatingSheetHeader.mjs.map +1 -1
  215. package/es/base-ui/Form/Form.mjs.map +1 -1
  216. package/es/base-ui/Form/components/FormField.mjs.map +1 -1
  217. package/es/base-ui/Form/components/FormGroup.mjs.map +1 -1
  218. package/es/base-ui/Form/components/FormSubmitFooter.mjs.map +1 -1
  219. package/es/base-ui/Form/components/FormTitle.mjs.map +1 -1
  220. package/es/base-ui/Input/Input.mjs.map +1 -1
  221. package/es/base-ui/Input/InputNumber.mjs.map +1 -1
  222. package/es/base-ui/Input/InputOTP.mjs.map +1 -1
  223. package/es/base-ui/Input/InputPassword.mjs.map +1 -1
  224. package/es/base-ui/Input/TextArea.mjs.map +1 -1
  225. package/es/base-ui/Modal/Modal.mjs.map +1 -1
  226. package/es/base-ui/Modal/atoms.mjs +7 -5
  227. package/es/base-ui/Modal/atoms.mjs.map +1 -1
  228. package/es/base-ui/Modal/imperative.mjs +2 -1
  229. package/es/base-ui/Modal/imperative.mjs.map +1 -1
  230. package/es/base-ui/Popover/ArrowIcon.mjs.map +1 -1
  231. package/es/base-ui/Popover/PopoverGroup.mjs.map +1 -1
  232. package/es/base-ui/Popover/PopoverStandalone.mjs.map +1 -1
  233. package/es/base-ui/Popover/atoms.mjs +2 -1
  234. package/es/base-ui/Popover/atoms.mjs.map +1 -1
  235. package/es/base-ui/Popover/context.mjs +4 -2
  236. package/es/base-ui/Popover/context.mjs.map +1 -1
  237. package/es/base-ui/Radio/Radio.mjs.map +1 -1
  238. package/es/base-ui/Radio/RadioGroup.mjs.map +1 -1
  239. package/es/base-ui/ScrollArea/ScrollArea.mjs.map +1 -1
  240. package/es/base-ui/Segmented/Segmented.mjs.map +1 -1
  241. package/es/base-ui/Select/Select.mjs.map +1 -1
  242. package/es/base-ui/Select/atoms.mjs +2 -1
  243. package/es/base-ui/Select/atoms.mjs.map +1 -1
  244. package/es/base-ui/Select/parts.mjs.map +1 -1
  245. package/es/base-ui/Select/renderOptions.mjs.map +1 -1
  246. package/es/base-ui/Slider/Slider.mjs.map +1 -1
  247. package/es/base-ui/Slider/SliderWithInput.mjs.map +1 -1
  248. package/es/base-ui/SubmenuArrowIcon.mjs.map +1 -1
  249. package/es/base-ui/Switch/Switch.mjs.map +1 -1
  250. package/es/base-ui/Switch/atoms.d.mts +3 -3
  251. package/es/base-ui/Switch/atoms.mjs +99 -50
  252. package/es/base-ui/Switch/atoms.mjs.map +1 -1
  253. package/es/base-ui/Switch/style.mjs +44 -1
  254. package/es/base-ui/Switch/style.mjs.map +1 -1
  255. package/es/base-ui/Switch/type.d.mts +3 -7
  256. package/es/base-ui/Tabs/Tabs.mjs.map +1 -1
  257. package/es/base-ui/Tabs/atoms.mjs.map +1 -1
  258. package/es/base-ui/Toast/Toast.mjs.map +1 -1
  259. package/es/base-ui/Toast/imperative.mjs.map +1 -1
  260. package/es/base-ui/Tooltip/ArrowIcon.mjs.map +1 -1
  261. package/es/base-ui/Tooltip/TooltipGroup.mjs.map +1 -1
  262. package/es/base-ui/Tooltip/TooltipStandalone.mjs.map +1 -1
  263. package/es/base-ui/index.d.mts +7 -2
  264. package/es/base-ui/index.mjs +5 -2
  265. package/es/brand/LobeChat/index.mjs +0 -1
  266. package/es/brand/LobeChat/index.mjs.map +1 -1
  267. package/es/brand/LobeChatText/index.mjs.map +1 -1
  268. package/es/brand/LobeHub/index.mjs +0 -1
  269. package/es/brand/LobeHub/index.mjs.map +1 -1
  270. package/es/brand/LobeHubText/index.mjs.map +1 -1
  271. package/es/brand/Logo3d/index.mjs +2 -1
  272. package/es/brand/Logo3d/index.mjs.map +1 -1
  273. package/es/brand/LogoThree/Loading.mjs.map +1 -1
  274. package/es/brand/LogoThree/LogoSpline.mjs.map +1 -1
  275. package/es/brand/LogoThree/index.mjs.map +1 -1
  276. package/es/brand/components/Divider.mjs.map +1 -1
  277. package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
  278. package/es/chat/ChatHeader/ChatHeader.mjs.map +1 -1
  279. package/es/chat/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  280. package/es/chat/ChatInputArea/ChatInputArea.mjs.map +1 -1
  281. package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs.map +1 -1
  282. package/es/chat/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
  283. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  284. package/es/chat/ChatItem/components/Actions.mjs +5 -4
  285. package/es/chat/ChatItem/components/Actions.mjs.map +1 -1
  286. package/es/chat/ChatItem/components/Avatar.mjs.map +1 -1
  287. package/es/chat/ChatItem/components/ErrorContent.mjs.map +1 -1
  288. package/es/chat/ChatItem/components/Loading.mjs.map +1 -1
  289. package/es/chat/ChatItem/components/MessageContent.mjs.map +1 -1
  290. package/es/chat/ChatItem/components/Title.mjs.map +1 -1
  291. package/es/chat/ChatList/ChatList.mjs +2 -1
  292. package/es/chat/ChatList/ChatList.mjs.map +1 -1
  293. package/es/chat/ChatList/components/HistoryDivider.mjs.map +1 -1
  294. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  295. package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
  296. package/es/chat/LoadingDots/LoadingDots.mjs.map +1 -1
  297. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  298. package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
  299. package/es/color/ColorScales/ScaleRow.mjs +0 -2
  300. package/es/color/ColorScales/ScaleRow.mjs.map +1 -1
  301. package/es/color/ColorScales/index.mjs.map +1 -1
  302. package/es/color/CssVar/ScaleRow.mjs.map +1 -1
  303. package/es/color/CssVar/VarRow.mjs.map +1 -1
  304. package/es/color/CssVar/index.mjs.map +1 -1
  305. package/es/hooks/useMarkdown/latex.mjs.map +1 -1
  306. package/es/hooks/useMarkdown/useMarkdownContent.mjs.map +1 -1
  307. package/es/hooks/useMermaid.mjs +81 -116
  308. package/es/hooks/useMermaid.mjs.map +1 -1
  309. package/es/hooks/useMermaidCdn.d.mts +10 -0
  310. package/es/hooks/useMermaidCdn.mjs +97 -0
  311. package/es/hooks/useMermaidCdn.mjs.map +1 -0
  312. package/es/hooks/useStreamMermaid.mjs +19 -70
  313. package/es/hooks/useStreamMermaid.mjs.map +1 -1
  314. package/es/icons/Auth0/components/Mono.mjs.map +1 -1
  315. package/es/icons/Authelia/components/Color.mjs.map +1 -1
  316. package/es/icons/Authelia/components/Mono.mjs.map +1 -1
  317. package/es/icons/Authentik/components/Color.mjs.map +1 -1
  318. package/es/icons/Authentik/components/Mono.mjs.map +1 -1
  319. package/es/icons/Casdoor/components/Color.mjs.map +1 -1
  320. package/es/icons/Casdoor/components/Mono.mjs.map +1 -1
  321. package/es/icons/Clerk/components/Color.mjs.map +1 -1
  322. package/es/icons/Clerk/components/Mono.mjs.map +1 -1
  323. package/es/icons/DingTalk/components/Color.mjs.map +1 -1
  324. package/es/icons/DingTalk/components/Mono.mjs.map +1 -1
  325. package/es/icons/Discord/components/Color.mjs.map +1 -1
  326. package/es/icons/Discord/components/Mono.mjs.map +1 -1
  327. package/es/icons/GoogleChat/components/Color.mjs.map +1 -1
  328. package/es/icons/GoogleChat/components/Mono.mjs.map +1 -1
  329. package/es/icons/IMessage/components/Color.mjs.map +1 -1
  330. package/es/icons/IMessage/components/Inner.mjs.map +1 -1
  331. package/es/icons/IMessage/components/Mono.mjs.map +1 -1
  332. package/es/icons/Lark/components/Color.mjs.map +1 -1
  333. package/es/icons/Lark/components/Mono.mjs.map +1 -1
  334. package/es/icons/Line/components/Color.mjs.map +1 -1
  335. package/es/icons/Line/components/Mono.mjs.map +1 -1
  336. package/es/icons/Logto/components/Color.mjs.map +1 -1
  337. package/es/icons/Logto/components/Mono.mjs.map +1 -1
  338. package/es/icons/MicrosoftEntra/components/Color.mjs.map +1 -1
  339. package/es/icons/MicrosoftEntra/components/Mono.mjs.map +1 -1
  340. package/es/icons/MicrosoftTeams/components/Color.mjs.map +1 -1
  341. package/es/icons/MicrosoftTeams/components/Mono.mjs.map +1 -1
  342. package/es/icons/NextAuth/components/Color.mjs.map +1 -1
  343. package/es/icons/NextAuth/components/Mono.mjs.map +1 -1
  344. package/es/icons/QQ/components/Color.mjs.map +1 -1
  345. package/es/icons/QQ/components/Mono.mjs.map +1 -1
  346. package/es/icons/Slack/components/Color.mjs.map +1 -1
  347. package/es/icons/Slack/components/Mono.mjs.map +1 -1
  348. package/es/icons/Telegram/components/Color.mjs.map +1 -1
  349. package/es/icons/Telegram/components/Inner.mjs.map +1 -1
  350. package/es/icons/Telegram/components/Mono.mjs.map +1 -1
  351. package/es/icons/WeChat/components/Color.mjs.map +1 -1
  352. package/es/icons/WeChat/components/Mono.mjs.map +1 -1
  353. package/es/icons/WhatsApp/components/Color.mjs.map +1 -1
  354. package/es/icons/WhatsApp/components/Mono.mjs.map +1 -1
  355. package/es/icons/Zitadel/components/Color.mjs.map +1 -1
  356. package/es/icons/Zitadel/components/Mono.mjs.map +1 -1
  357. package/es/index.d.mts +2 -2
  358. package/es/index.mjs +2 -2
  359. package/es/mdx/Callout/index.mjs.map +1 -1
  360. package/es/mdx/Cards/Card.mjs.map +1 -1
  361. package/es/mdx/FileTree/File.mjs.map +1 -1
  362. package/es/mdx/FileTree/Folder.mjs.map +1 -1
  363. package/es/mdx/Mdx/index.mjs.map +1 -1
  364. package/es/mdx/Tabs/Tab.mjs.map +1 -1
  365. package/es/mdx/Tabs/index.mjs.map +1 -1
  366. package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs.map +1 -1
  367. package/es/mdx/mdxComponents/Citation/index.mjs.map +1 -1
  368. package/es/mdx/mdxComponents/CodeBlock.mjs.map +1 -1
  369. package/es/mdx/mdxComponents/Link.mjs.map +1 -1
  370. package/es/mobile/ChatHeader/ChatHeader.mjs.map +1 -1
  371. package/es/mobile/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
  372. package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
  373. package/es/mobile/TabBar/TabBar.mjs.map +1 -1
  374. package/es/storybook/StoryBook/index.mjs.map +1 -1
  375. package/package.json +3 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["LogoFlat","LogoMono","LogoText","Flexbox"],"sources":["../../../src/brand/LobeHub/index.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar } from 'antd-style';\nimport { memo, type ReactNode } from 'react';\n\nimport Divider from '@/brand/components/Divider';\nimport LogoText from '@/brand/LobeHubText';\nimport Logo3d from '@/brand/Logo3d';\nimport LogoFlat from '@/brand/LogoFlat';\nimport LogoMono from '@/brand/LogoMono';\nimport { Flexbox } from '@/Flex';\nimport { type DivProps } from '@/types';\n\nimport { styles } from './style';\n\nexport interface LobeHubProps extends DivProps {\n extra?: ReactNode;\n size?: number;\n type?: '3d' | 'flat' | 'mono' | 'text' | 'combine';\n}\n\nconst LobeHub = memo<LobeHubProps>(\n ({ type = '3d', size = 32, style, extra, className, ...rest }) => {\n let logoComponent: ReactNode;\n\n switch (type) {\n case '3d': {\n logoComponent = <Logo3d size={size} {...rest} />;\n break;\n }\n case 'flat': {\n logoComponent = <LogoFlat size={size} style={style} />;\n break;\n }\n case 'mono': {\n logoComponent = <LogoMono size={size} style={style} />;\n break;\n }\n case 'text': {\n logoComponent = (\n <LogoText className={className} size={size} style={style} {...(rest as any)} />\n );\n break;\n }\n case 'combine': {\n logoComponent = (\n <>\n <Logo3d alt=\"LobeChat\" size={size} />\n <LogoText size={size} style={{ marginLeft: Math.round(size / 4) }} />\n </>\n );\n\n if (!extra)\n logoComponent = (\n <Flexbox horizontal align={'center'} className={className} flex={'none'} style={style}>\n {logoComponent}\n </Flexbox>\n );\n\n break;\n }\n }\n\n if (!extra) return logoComponent;\n\n const extraSize = Math.round((size / 3) * 1.9);\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={className}\n flex={'none'}\n style={style}\n {...rest}\n >\n {logoComponent}\n <Divider size={extraSize} style={{ color: cssVar.colorFill }} />\n <div className={styles.extraTitle} style={{ fontSize: extraSize }}>\n {extra}\n </div>\n </Flexbox>\n );\n },\n);\n\nLobeHub.displayName = 'LobeHubBrand';\n\nexport default LobeHub;\n"],"mappings":";;;;;;;;;;;;AAqBA,MAAM,UAAU,MACb,EAAE,OAAO,MAAM,OAAO,IAAI,OAAO,OAAO,WAAW,GAAG,WAAW;CAChE,IAAI;CAEJ,QAAQ,MAAR;EACE,KAAK;GACH,gBAAgB,oBAAC,QAAD;IAAc;IAAM,GAAI;GAAO,CAAA;GAC/C;EAEF,KAAK;GACH,gBAAgB,oBAACA,kBAAD;IAAgB;IAAa;GAAQ,CAAA;GACrD;EAEF,KAAK;GACH,gBAAgB,oBAACC,eAAD;IAAgB;IAAa;GAAQ,CAAA;GACrD;EAEF,KAAK;GACH,gBACE,oBAACC,aAAD;IAAqB;IAAiB;IAAa;IAAO,GAAK;GAAe,CAAA;GAEhF;EAEF,KAAK;GACH,gBACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;IAAQ,KAAI;IAAiB;GAAO,CAAA,GACpC,oBAACA,aAAD;IAAgB;IAAM,OAAO,EAAE,YAAY,KAAK,MAAM,OAAO,CAAC,EAAE;GAAI,CAAA,CACpE,EAAA,CAAA;GAGJ,IAAI,CAAC,OACH,gBACE,oBAACC,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAqB;IAAW,MAAM;IAAe;cAC7E;GACM,CAAA;GAGb;CAEJ;CAEA,IAAI,CAAC,OAAO,OAAO;CAEnB,MAAM,YAAY,KAAK,MAAO,OAAO,IAAK,GAAG;CAE7C,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACI;EACX,MAAM;EACC;EACP,GAAI;YANN;GAQG;GACD,oBAAC,SAAD;IAAS,MAAM;IAAW,OAAO,EAAE,OAAO,OAAO,UAAU;GAAI,CAAA;GAC/D,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAY,OAAO,EAAE,UAAU,UAAU;cAC7D;GACE,CAAA;EACE;;AAEb,CACF;AAEA,QAAQ,cAAc"}
1
+ {"version":3,"file":"index.mjs","names":["LogoFlat","LogoMono","LogoText","Flexbox"],"sources":["../../../src/brand/LobeHub/index.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar } from 'antd-style';\nimport { memo, type ReactNode } from 'react';\n\nimport Divider from '@/brand/components/Divider';\nimport LogoText from '@/brand/LobeHubText';\nimport Logo3d from '@/brand/Logo3d';\nimport LogoFlat from '@/brand/LogoFlat';\nimport LogoMono from '@/brand/LogoMono';\nimport { Flexbox } from '@/Flex';\nimport { type DivProps } from '@/types';\n\nimport { styles } from './style';\n\nexport interface LobeHubProps extends DivProps {\n extra?: ReactNode;\n size?: number;\n type?: '3d' | 'flat' | 'mono' | 'text' | 'combine';\n}\n\nconst LobeHub = memo<LobeHubProps>(\n ({ type = '3d', size = 32, style, extra, className, ...rest }) => {\n let logoComponent: ReactNode;\n\n switch (type) {\n case '3d': {\n logoComponent = <Logo3d size={size} {...rest} />;\n break;\n }\n case 'flat': {\n logoComponent = <LogoFlat size={size} style={style} />;\n break;\n }\n case 'mono': {\n logoComponent = <LogoMono size={size} style={style} />;\n break;\n }\n case 'text': {\n logoComponent = (\n <LogoText className={className} size={size} style={style} {...(rest as any)} />\n );\n break;\n }\n case 'combine': {\n logoComponent = (\n <>\n <Logo3d alt=\"LobeChat\" size={size} />\n <LogoText size={size} style={{ marginLeft: Math.round(size / 4) }} />\n </>\n );\n\n if (!extra)\n logoComponent = (\n <Flexbox horizontal align={'center'} className={className} flex={'none'} style={style}>\n {logoComponent}\n </Flexbox>\n );\n\n break;\n }\n }\n\n if (!extra) return logoComponent;\n\n const extraSize = Math.round((size / 3) * 1.9);\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={className}\n flex={'none'}\n style={style}\n {...rest}\n >\n {logoComponent}\n <Divider size={extraSize} style={{ color: cssVar.colorFill }} />\n <div className={styles.extraTitle} style={{ fontSize: extraSize }}>\n {extra}\n </div>\n </Flexbox>\n );\n },\n);\n\nLobeHub.displayName = 'LobeHubBrand';\n\nexport default LobeHub;\n"],"mappings":";;;;;;;;;;;;AAqBA,MAAM,UAAU,MACb,EAAE,OAAO,MAAM,OAAO,IAAI,OAAO,OAAO,WAAW,GAAG,WAAW;CAChE,IAAI;CAEJ,QAAQ,MAAR;EACE,KAAK;GACH,gBAAgB,oBAAC,QAAD;IAAc;IAAM,GAAI;GAAO,CAAA;GAC/C;EAEF,KAAK;GACH,gBAAgB,oBAACA,kBAAD;IAAgB;IAAa;GAAQ,CAAA;GACrD;EAEF,KAAK;GACH,gBAAgB,oBAACC,eAAD;IAAgB;IAAa;GAAQ,CAAA;GACrD;EAEF,KAAK;GACH,gBACE,oBAACC,aAAD;IAAqB;IAAiB;IAAa;IAAO,GAAK;GAAe,CAAA;GAEhF;EAEF,KAAK;GACH,gBACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;IAAQ,KAAI;IAAiB;GAAO,CAAA,GACpC,oBAACA,aAAD;IAAgB;IAAM,OAAO,EAAE,YAAY,KAAK,MAAM,OAAO,CAAC,EAAE;GAAI,CAAA,CACpE,EAAA,CAAA;GAGJ,IAAI,CAAC,OACH,gBACE,oBAACC,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAqB;IAAW,MAAM;IAAe;IAC7E,UAAA;GACM,CAAA;CAKjB;CAEA,IAAI,CAAC,OAAO,OAAO;CAEnB,MAAM,YAAY,KAAK,MAAO,OAAO,IAAK,GAAG;CAE7C,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACI;EACX,MAAM;EACC;EACP,GAAI;EANN,UAAA;GAQG;GACD,oBAAC,SAAD;IAAS,MAAM;IAAW,OAAO,EAAE,OAAO,OAAO,UAAU;GAAI,CAAA;GAC/D,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAY,OAAO,EAAE,UAAU,UAAU;IAC7D,UAAA;GACE,CAAA;EACE;;AAEb,CACF;AAEA,QAAQ,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/brand/LobeHubText/index.tsx"],"sourcesContent":["import type { FC } from 'react';\n\nimport type { DivProps, SvgProps } from '@/types';\n\nconst LobeHubText: FC<SvgProps & DivProps & { size?: number }> = ({\n size = '1em',\n style,\n ...rest\n}) => (\n <svg\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n height={size}\n style={{ flex: 'none', lineHeight: 1, ...style }}\n viewBox=\"0 0 940 320\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <title>LobeHub</title>\n <path d=\"M15 240.035V87.172h39.24V205.75h66.192v34.285H15zM183.731 242c-11.759 0-22.196-2.621-31.313-7.862-9.116-5.241-16.317-12.447-21.601-21.619-5.153-9.317-7.729-19.945-7.729-31.883 0-11.937 2.576-22.492 7.729-31.664 5.164-8.963 12.159-15.98 20.982-21.05l.619-.351c9.117-5.241 19.554-7.861 31.313-7.861s22.196 2.62 31.313 7.861c9.248 5.096 16.449 12.229 21.601 21.401 5.153 9.172 7.729 19.727 7.729 31.664 0 11.938-2.576 22.566-7.729 31.883-5.152 9.172-12.353 16.378-21.601 21.619-9.117 5.241-19.554 7.862-31.313 7.862zm0-32.975c4.36 0 8.191-1.092 11.494-3.275 3.436-2.184 6.144-5.387 8.126-9.609 1.982-4.367 2.973-9.536 2.973-15.505 0-5.968-.991-10.991-2.973-15.067-1.906-4.06-4.483-7.177-7.733-9.352l-.393-.257c-3.303-2.184-7.134-3.276-11.494-3.276-4.228 0-8.059 1.092-11.495 3.276-3.303 2.184-6.011 5.387-8.125 9.609-1.982 4.076-2.973 9.099-2.973 15.067 0 5.969.991 11.138 2.973 15.505 2.114 4.222 4.822 7.425 8.125 9.609 3.436 2.183 7.267 3.275 11.495 3.275zM295.508 78l-.001 54.042a34.071 34.071 0 016.541-5.781c6.474-4.367 14.269-6.551 23.385-6.551 9.777 0 18.629 2.475 26.557 7.424 7.872 4.835 14.105 11.684 18.7 20.546l.325.637c4.756 9.026 7.135 19.799 7.135 32.319 0 12.666-2.379 23.585-7.135 32.757-4.624 9.026-10.966 16.087-19.025 21.182-7.928 4.95-16.78 7.425-26.557 7.425-9.644 0-17.704-2.184-24.178-6.551-2.825-1.946-5.336-4.355-7.532-7.226l.001 11.812h-35.87V78h37.654zm21.998 74.684c-4.228 0-8.059 1.092-11.494 3.276-3.303 2.184-6.012 5.387-8.126 9.609-1.982 4.076-2.972 9.099-2.972 15.067 0 5.969.99 11.138 2.972 15.505 2.114 4.222 4.823 7.425 8.126 9.609 3.435 2.183 7.266 3.275 11.494 3.275s7.994-1.092 11.297-3.275c3.435-2.184 6.143-5.387 8.125-9.609 2.114-4.367 3.171-9.536 3.171-15.505 0-5.968-1.057-10.991-3.171-15.067-1.906-4.06-4.483-7.177-7.732-9.352l-.393-.257c-3.303-2.184-7.069-3.276-11.297-3.276zm105.335 38.653l.084.337a27.857 27.857 0 002.057 5.559c2.246 4.222 5.417 7.498 9.513 9.827 4.096 2.184 8.984 3.276 14.665 3.276 5.285 0 9.777-.801 13.477-2.403 3.579-1.632 7.1-4.025 10.564-7.182l.732-.679 19.818 22.711c-5.153 6.26-11.494 11.064-19.025 14.413-7.531 3.203-16.449 4.804-26.755 4.804-12.683 0-23.782-2.621-33.294-7.862-9.381-5.386-16.713-12.665-21.998-21.837-5.153-9.317-7.729-19.872-7.729-31.665 0-11.792 2.51-22.274 7.53-31.446 5.036-9.105 11.902-16.195 20.596-21.268l.61-.351c8.984-5.241 19.091-7.861 30.322-7.861 10.311 0 19.743 2.286 28.294 6.859l.64.347c8.72 4.659 15.656 11.574 20.809 20.746 5.153 9.172 7.729 20.309 7.729 33.411 0 1.294-.052 2.761-.156 4.4l-.042.623-.17 2.353c-.075 1.01-.151 1.973-.227 2.888h-78.044zm21.365-42.147c-4.492 0-8.456 1.092-11.891 3.276-3.303 2.184-5.879 5.314-7.729 9.39a26.04 26.04 0 00-1.117 2.79 30.164 30.164 0 00-1.121 4.499l-.058.354h43.96l-.015-.106c-.401-2.638-1.122-5.055-2.163-7.252l-.246-.503c-1.776-3.774-4.282-6.742-7.519-8.906l-.409-.266c-3.303-2.184-7.2-3.276-11.692-3.276zm111.695-62.018l-.001 57.432h53.51V87.172h39.24v152.863h-39.24v-59.617H555.9l.001 59.617h-39.24V87.172h39.24zM715.766 242c-8.72 0-16.581-1.893-23.583-5.678-6.87-3.785-12.287-9.681-16.251-17.688-3.832-8.153-5.747-18.417-5.747-30.791v-66.168h37.654v59.398c0 9.172 1.519 15.723 4.558 19.654 3.171 3.931 7.597 5.896 13.278 5.896 3.7 0 7.069-.946 10.108-2.839 3.038-1.892 5.483-4.877 7.332-8.953 1.85-4.222 2.775-9.609 2.775-16.16v-56.996h37.654v118.36h-35.871l.004-12.38c-2.642 3.197-5.682 5.868-9.12 8.012-7.002 4.222-14.599 6.333-22.791 6.333zM841.489 78l-.001 54.041a34.1 34.1 0 016.541-5.78c6.474-4.367 14.269-6.551 23.385-6.551 9.777 0 18.629 2.475 26.556 7.424 7.873 4.835 14.106 11.684 18.701 20.546l.325.637c4.756 9.026 7.134 19.799 7.134 32.319 0 12.666-2.378 23.585-7.134 32.757-4.624 9.026-10.966 16.087-19.026 21.182-7.927 4.95-16.779 7.425-26.556 7.425-9.645 0-17.704-2.184-24.178-6.551-2.825-1.946-5.336-4.354-7.531-7.224v11.81h-35.87V78h37.654zm21.998 74.684c-4.228 0-8.059 1.092-11.495 3.276-3.303 2.184-6.011 5.387-8.125 9.609-1.982 4.076-2.973 9.099-2.973 15.067 0 5.969.991 11.138 2.973 15.505 2.114 4.222 4.822 7.425 8.125 9.609 3.436 2.183 7.267 3.275 11.495 3.275 4.228 0 7.993-1.092 11.296-3.275 3.435-2.184 6.144-5.387 8.126-9.609 2.114-4.367 3.171-9.536 3.171-15.505 0-5.968-1.057-10.991-3.171-15.067-1.906-4.06-4.484-7.177-7.733-9.352l-.393-.257c-3.303-2.184-7.068-3.276-11.296-3.276z\" />\n </svg>\n);\n\nLobeHubText.displayName = 'LobeHubText';\n\nexport default LobeHubText;\n"],"mappings":";;AAIA,MAAM,eAA4D,EAChE,OAAO,OACP,OACA,GAAG,WAEH,qBAAC,OAAD;CACE,MAAK;CACL,UAAS;CACT,QAAQ;CACR,OAAO;EAAE,MAAM;EAAQ,YAAY;EAAG,GAAG;CAAM;CAC/C,SAAQ;CACR,OAAM;CACN,GAAI;WAPN,CASE,oBAAC,SAAD,EAAA,UAAO,UAAc,CAAA,GACrB,oBAAC,QAAD,EAAM,GAAE,6qIAA8qI,CAAA,CACnrI;;AAGP,YAAY,cAAc"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/brand/LobeHubText/index.tsx"],"sourcesContent":["import type { FC } from 'react';\n\nimport type { DivProps, SvgProps } from '@/types';\n\nconst LobeHubText: FC<SvgProps & DivProps & { size?: number }> = ({\n size = '1em',\n style,\n ...rest\n}) => (\n <svg\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n height={size}\n style={{ flex: 'none', lineHeight: 1, ...style }}\n viewBox=\"0 0 940 320\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <title>LobeHub</title>\n <path d=\"M15 240.035V87.172h39.24V205.75h66.192v34.285H15zM183.731 242c-11.759 0-22.196-2.621-31.313-7.862-9.116-5.241-16.317-12.447-21.601-21.619-5.153-9.317-7.729-19.945-7.729-31.883 0-11.937 2.576-22.492 7.729-31.664 5.164-8.963 12.159-15.98 20.982-21.05l.619-.351c9.117-5.241 19.554-7.861 31.313-7.861s22.196 2.62 31.313 7.861c9.248 5.096 16.449 12.229 21.601 21.401 5.153 9.172 7.729 19.727 7.729 31.664 0 11.938-2.576 22.566-7.729 31.883-5.152 9.172-12.353 16.378-21.601 21.619-9.117 5.241-19.554 7.862-31.313 7.862zm0-32.975c4.36 0 8.191-1.092 11.494-3.275 3.436-2.184 6.144-5.387 8.126-9.609 1.982-4.367 2.973-9.536 2.973-15.505 0-5.968-.991-10.991-2.973-15.067-1.906-4.06-4.483-7.177-7.733-9.352l-.393-.257c-3.303-2.184-7.134-3.276-11.494-3.276-4.228 0-8.059 1.092-11.495 3.276-3.303 2.184-6.011 5.387-8.125 9.609-1.982 4.076-2.973 9.099-2.973 15.067 0 5.969.991 11.138 2.973 15.505 2.114 4.222 4.822 7.425 8.125 9.609 3.436 2.183 7.267 3.275 11.495 3.275zM295.508 78l-.001 54.042a34.071 34.071 0 016.541-5.781c6.474-4.367 14.269-6.551 23.385-6.551 9.777 0 18.629 2.475 26.557 7.424 7.872 4.835 14.105 11.684 18.7 20.546l.325.637c4.756 9.026 7.135 19.799 7.135 32.319 0 12.666-2.379 23.585-7.135 32.757-4.624 9.026-10.966 16.087-19.025 21.182-7.928 4.95-16.78 7.425-26.557 7.425-9.644 0-17.704-2.184-24.178-6.551-2.825-1.946-5.336-4.355-7.532-7.226l.001 11.812h-35.87V78h37.654zm21.998 74.684c-4.228 0-8.059 1.092-11.494 3.276-3.303 2.184-6.012 5.387-8.126 9.609-1.982 4.076-2.972 9.099-2.972 15.067 0 5.969.99 11.138 2.972 15.505 2.114 4.222 4.823 7.425 8.126 9.609 3.435 2.183 7.266 3.275 11.494 3.275s7.994-1.092 11.297-3.275c3.435-2.184 6.143-5.387 8.125-9.609 2.114-4.367 3.171-9.536 3.171-15.505 0-5.968-1.057-10.991-3.171-15.067-1.906-4.06-4.483-7.177-7.732-9.352l-.393-.257c-3.303-2.184-7.069-3.276-11.297-3.276zm105.335 38.653l.084.337a27.857 27.857 0 002.057 5.559c2.246 4.222 5.417 7.498 9.513 9.827 4.096 2.184 8.984 3.276 14.665 3.276 5.285 0 9.777-.801 13.477-2.403 3.579-1.632 7.1-4.025 10.564-7.182l.732-.679 19.818 22.711c-5.153 6.26-11.494 11.064-19.025 14.413-7.531 3.203-16.449 4.804-26.755 4.804-12.683 0-23.782-2.621-33.294-7.862-9.381-5.386-16.713-12.665-21.998-21.837-5.153-9.317-7.729-19.872-7.729-31.665 0-11.792 2.51-22.274 7.53-31.446 5.036-9.105 11.902-16.195 20.596-21.268l.61-.351c8.984-5.241 19.091-7.861 30.322-7.861 10.311 0 19.743 2.286 28.294 6.859l.64.347c8.72 4.659 15.656 11.574 20.809 20.746 5.153 9.172 7.729 20.309 7.729 33.411 0 1.294-.052 2.761-.156 4.4l-.042.623-.17 2.353c-.075 1.01-.151 1.973-.227 2.888h-78.044zm21.365-42.147c-4.492 0-8.456 1.092-11.891 3.276-3.303 2.184-5.879 5.314-7.729 9.39a26.04 26.04 0 00-1.117 2.79 30.164 30.164 0 00-1.121 4.499l-.058.354h43.96l-.015-.106c-.401-2.638-1.122-5.055-2.163-7.252l-.246-.503c-1.776-3.774-4.282-6.742-7.519-8.906l-.409-.266c-3.303-2.184-7.2-3.276-11.692-3.276zm111.695-62.018l-.001 57.432h53.51V87.172h39.24v152.863h-39.24v-59.617H555.9l.001 59.617h-39.24V87.172h39.24zM715.766 242c-8.72 0-16.581-1.893-23.583-5.678-6.87-3.785-12.287-9.681-16.251-17.688-3.832-8.153-5.747-18.417-5.747-30.791v-66.168h37.654v59.398c0 9.172 1.519 15.723 4.558 19.654 3.171 3.931 7.597 5.896 13.278 5.896 3.7 0 7.069-.946 10.108-2.839 3.038-1.892 5.483-4.877 7.332-8.953 1.85-4.222 2.775-9.609 2.775-16.16v-56.996h37.654v118.36h-35.871l.004-12.38c-2.642 3.197-5.682 5.868-9.12 8.012-7.002 4.222-14.599 6.333-22.791 6.333zM841.489 78l-.001 54.041a34.1 34.1 0 016.541-5.78c6.474-4.367 14.269-6.551 23.385-6.551 9.777 0 18.629 2.475 26.556 7.424 7.873 4.835 14.106 11.684 18.701 20.546l.325.637c4.756 9.026 7.134 19.799 7.134 32.319 0 12.666-2.378 23.585-7.134 32.757-4.624 9.026-10.966 16.087-19.026 21.182-7.927 4.95-16.779 7.425-26.556 7.425-9.645 0-17.704-2.184-24.178-6.551-2.825-1.946-5.336-4.354-7.531-7.224v11.81h-35.87V78h37.654zm21.998 74.684c-4.228 0-8.059 1.092-11.495 3.276-3.303 2.184-6.011 5.387-8.125 9.609-1.982 4.076-2.973 9.099-2.973 15.067 0 5.969.991 11.138 2.973 15.505 2.114 4.222 4.822 7.425 8.125 9.609 3.436 2.183 7.267 3.275 11.495 3.275 4.228 0 7.993-1.092 11.296-3.275 3.435-2.184 6.144-5.387 8.126-9.609 2.114-4.367 3.171-9.536 3.171-15.505 0-5.968-1.057-10.991-3.171-15.067-1.906-4.06-4.484-7.177-7.733-9.352l-.393-.257c-3.303-2.184-7.068-3.276-11.296-3.276z\" />\n </svg>\n);\n\nLobeHubText.displayName = 'LobeHubText';\n\nexport default LobeHubText;\n"],"mappings":";;AAIA,MAAM,eAA4D,EAChE,OAAO,OACP,OACA,GAAG,WAEH,qBAAC,OAAD;CACE,MAAK;CACL,UAAS;CACT,QAAQ;CACR,OAAO;EAAE,MAAM;EAAQ,YAAY;EAAG,GAAG;CAAM;CAC/C,SAAQ;CACR,OAAM;CACN,GAAI;CAPN,UAAA,CASE,oBAAC,SAAD,EAAA,UAAO,UAAc,CAAA,GACrB,oBAAC,QAAD,EAAM,GAAE,6qIAA8qI,CAAA,CACnrI;;AAGP,YAAY,cAAc"}
@@ -5,10 +5,11 @@ import { LOGO_3D } from "../LobeHub/style.mjs";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/brand/Logo3d/index.tsx
7
7
  const Logo3d = ({ size = "1em", style, alt = "LobeHub", ...rest }) => {
8
+ const genCdnUrl = useCdnFn();
8
9
  return /* @__PURE__ */ jsx(Img, {
9
10
  alt,
10
11
  height: size,
11
- src: useCdnFn()(LOGO_3D),
12
+ src: genCdnUrl(LOGO_3D),
12
13
  style,
13
14
  width: size,
14
15
  ...rest
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/brand/Logo3d/index.tsx"],"sourcesContent":["'use client';\n\nimport type { ImageProps } from 'antd';\nimport { type FC } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\nimport Img from '@/Img';\nimport type { ImgProps } from '@/types';\n\nimport { LOGO_3D } from '../LobeHub/style';\n\ntype Logo3dProps = Omit<ImgProps & ImageProps, 'width' | 'height' | 'src'> & {\n size?: number | string;\n};\n\nconst Logo3d: FC<Logo3dProps> = ({ size = '1em', style, alt = 'LobeHub', ...rest }) => {\n const genCdnUrl = useCdnFn();\n return (\n <Img alt={alt} height={size} src={genCdnUrl(LOGO_3D)} style={style} width={size} {...rest} />\n );\n};\n\nLogo3d.displayName = 'LobeHubLogo3d';\n\nexport default Logo3d;\n"],"mappings":";;;;;;AAeA,MAAM,UAA2B,EAAE,OAAO,OAAO,OAAO,MAAM,WAAW,GAAG,WAAW;CAErF,OACE,oBAAC,KAAD;EAAU;EAAK,QAAQ;EAAM,KAFb,SAE0B,CAAC,CAAC,OAAO;EAAU;EAAO,OAAO;EAAM,GAAI;CAAO,CAAA;AAEhG;AAEA,OAAO,cAAc"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/brand/Logo3d/index.tsx"],"sourcesContent":["'use client';\n\nimport type { ImageProps } from 'antd';\nimport { type FC } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\nimport Img from '@/Img';\nimport type { ImgProps } from '@/types';\n\nimport { LOGO_3D } from '../LobeHub/style';\n\ntype Logo3dProps = Omit<ImgProps & ImageProps, 'width' | 'height' | 'src'> & {\n size?: number | string;\n};\n\nconst Logo3d: FC<Logo3dProps> = ({ size = '1em', style, alt = 'LobeHub', ...rest }) => {\n const genCdnUrl = useCdnFn();\n return (\n <Img alt={alt} height={size} src={genCdnUrl(LOGO_3D)} style={style} width={size} {...rest} />\n );\n};\n\nLogo3d.displayName = 'LobeHubLogo3d';\n\nexport default Logo3d;\n"],"mappings":";;;;;;AAeA,MAAM,UAA2B,EAAE,OAAO,OAAO,OAAO,MAAM,WAAW,GAAG,WAAW;CACrF,MAAM,YAAY,SAAS;CAC3B,OACE,oBAAC,KAAD;EAAU;EAAK,QAAQ;EAAM,KAAK,UAAU,OAAO;EAAU;EAAO,OAAO;EAAM,GAAI;CAAO,CAAA;AAEhG;AAEA,OAAO,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Loading.mjs","names":[],"sources":["../../../src/brand/LogoThree/Loading.tsx"],"sourcesContent":["import { Loader2 } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport { Center } from '@/Flex';\nimport Icon from '@/Icon';\n\nconst Loading: FC<{ size?: number }> = ({ size = 32 }) => {\n return (\n <Center height={'100%'} justify={'center'} style={{ position: 'absolute' }} width={'100%'}>\n <Icon spin icon={Loader2} size={size} />\n </Center>\n );\n};\n\nexport default Loading;\n"],"mappings":";;;;;AAMA,MAAM,WAAkC,EAAE,OAAO,SAAS;CACxD,OACE,oBAAC,QAAD;EAAQ,QAAQ;EAAQ,SAAS;EAAU,OAAO,EAAE,UAAU,WAAW;EAAG,OAAO;YACjF,oBAAC,MAAD;GAAM,MAAA;GAAK,MAAM;GAAe;EAAO,CAAA;CACjC,CAAA;AAEZ"}
1
+ {"version":3,"file":"Loading.mjs","names":[],"sources":["../../../src/brand/LogoThree/Loading.tsx"],"sourcesContent":["import { Loader2 } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport { Center } from '@/Flex';\nimport Icon from '@/Icon';\n\nconst Loading: FC<{ size?: number }> = ({ size = 32 }) => {\n return (\n <Center height={'100%'} justify={'center'} style={{ position: 'absolute' }} width={'100%'}>\n <Icon spin icon={Loader2} size={size} />\n </Center>\n );\n};\n\nexport default Loading;\n"],"mappings":";;;;;AAMA,MAAM,WAAkC,EAAE,OAAO,SAAS;CACxD,OACE,oBAAC,QAAD;EAAQ,QAAQ;EAAQ,SAAS;EAAU,OAAO,EAAE,UAAU,WAAW;EAAG,OAAO;EACjF,UAAA,oBAAC,MAAD;GAAM,MAAA;GAAK,MAAM;GAAe;EAAO,CAAA;CACjC,CAAA;AAEZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"LogoSpline.mjs","names":[],"sources":["../../../src/brand/LogoThree/LogoSpline.tsx"],"sourcesContent":["import { useThemeMode } from 'antd-style';\nimport { type CSSProperties, memo, useState } from 'react';\n\nimport Spline, { type SplineProps } from '@/awesome/Spline';\n\nimport Loading from './Loading';\n\nconst LIGHT = 'https://hub-apac-1.lobeobjects.space/light.splinecode';\nconst DARK = 'https://hub-apac-1.lobeobjects.space/dark.splinecode';\n\nexport interface LogoSplineProps extends Partial<SplineProps> {\n className?: string;\n height?: number | string;\n style?: CSSProperties;\n width?: number | string;\n}\n\nconst LogoSpline = memo<LogoSplineProps>(({ className, style, width, height, onLoad, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n const [loading, setLoading] = useState(true);\n return (\n <div className={className} style={{ height, position: 'relative', width, ...style }}>\n {loading && <Loading />}\n <Spline\n scene={isDarkMode ? DARK : LIGHT}\n onLoad={(splineApp) => {\n setLoading(false);\n onLoad?.(splineApp);\n }}\n {...rest}\n />\n </div>\n );\n});\n\nexport default LogoSpline;\n"],"mappings":";;;;;;AAOA,MAAM,QAAQ;AACd,MAAM,OAAO;AASb,MAAM,aAAa,MAAuB,EAAE,WAAW,OAAO,OAAO,QAAQ,QAAQ,GAAG,WAAW;CACjG,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,CAAC,SAAS,cAAc,SAAS,IAAI;CAC3C,OACE,qBAAC,OAAD;EAAgB;EAAW,OAAO;GAAE;GAAQ,UAAU;GAAY;GAAO,GAAG;EAAM;YAAlF,CACG,WAAW,oBAAC,SAAD,CAAU,CAAA,GACtB,oBAAC,QAAD;GACE,OAAO,aAAa,OAAO;GAC3B,SAAS,cAAc;IACrB,WAAW,KAAK;IAChB,SAAS,SAAS;GACpB;GACA,GAAI;EACL,CAAA,CACE;;AAET,CAAC"}
1
+ {"version":3,"file":"LogoSpline.mjs","names":[],"sources":["../../../src/brand/LogoThree/LogoSpline.tsx"],"sourcesContent":["import { useThemeMode } from 'antd-style';\nimport { type CSSProperties, memo, useState } from 'react';\n\nimport Spline, { type SplineProps } from '@/awesome/Spline';\n\nimport Loading from './Loading';\n\nconst LIGHT = 'https://hub-apac-1.lobeobjects.space/light.splinecode';\nconst DARK = 'https://hub-apac-1.lobeobjects.space/dark.splinecode';\n\nexport interface LogoSplineProps extends Partial<SplineProps> {\n className?: string;\n height?: number | string;\n style?: CSSProperties;\n width?: number | string;\n}\n\nconst LogoSpline = memo<LogoSplineProps>(({ className, style, width, height, onLoad, ...rest }) => {\n const { isDarkMode } = useThemeMode();\n const [loading, setLoading] = useState(true);\n return (\n <div className={className} style={{ height, position: 'relative', width, ...style }}>\n {loading && <Loading />}\n <Spline\n scene={isDarkMode ? DARK : LIGHT}\n onLoad={(splineApp) => {\n setLoading(false);\n onLoad?.(splineApp);\n }}\n {...rest}\n />\n </div>\n );\n});\n\nexport default LogoSpline;\n"],"mappings":";;;;;;AAOA,MAAM,QAAQ;AACd,MAAM,OAAO;AASb,MAAM,aAAa,MAAuB,EAAE,WAAW,OAAO,OAAO,QAAQ,QAAQ,GAAG,WAAW;CACjG,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,CAAC,SAAS,cAAc,SAAS,IAAI;CAC3C,OACE,qBAAC,OAAD;EAAgB;EAAW,OAAO;GAAE;GAAQ,UAAU;GAAY;GAAO,GAAG;EAAM;EAAlF,UAAA,CACG,WAAW,oBAAC,SAAD,CAAU,CAAA,GACtB,oBAAC,QAAD;GACE,OAAO,aAAa,OAAO;GAC3B,SAAS,cAAc;IACrB,WAAW,KAAK;IAChB,SAAS,SAAS;GACpB;GACA,GAAI;EACL,CAAA,CACE;;AAET,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["Flexbox"],"sources":["../../../src/brand/LogoThree/index.tsx"],"sourcesContent":["'use client';\n\nimport { type CSSProperties, memo, useState } from 'react';\n\nimport Spline, { type SplineProps } from '@/awesome/Spline';\nimport { useCdnFn } from '@/ConfigProvider';\nimport { Flexbox } from '@/Flex';\nimport Img from '@/Img';\n\nconst LOGO_3D = {\n path: 'assets/logo-3d.webp',\n pkg: '@lobehub/assets-logo',\n version: '1.2.0',\n};\n\nexport interface LogoThreeProps extends Partial<SplineProps> {\n className?: string;\n size?: number;\n style?: CSSProperties;\n}\n\nconst LogoThree = memo<LogoThreeProps>(({ className, style, size = 128, onLoad, ...rest }) => {\n const genCdnUrl = useCdnFn();\n const [loading, setLoading] = useState(true);\n return (\n <Flexbox\n align={'center'}\n className={className}\n flex={'none'}\n justify={'center'}\n style={{ height: size, overflow: 'hidden', position: 'relative', width: size, ...style }}\n >\n {loading && (\n <Img\n alt={'logo'}\n height={size * 0.75}\n src={genCdnUrl(LOGO_3D)}\n style={{ position: 'absolute' }}\n width={size * 0.75}\n />\n )}\n <Spline\n scene={'https://hub-apac-1.lobeobjects.space/logo.splinecode'}\n style={{\n flex: 'none',\n height: size,\n width: size,\n }}\n onLoad={(splineApp) => {\n setLoading(false);\n onLoad?.(splineApp);\n }}\n {...rest}\n />\n </Flexbox>\n );\n});\n\nLogoThree.displayName = 'LobeHubLogoThree';\n\nexport default LogoThree;\n"],"mappings":";;;;;;;;AASA,MAAM,UAAU;CACd,MAAM;CACN,KAAK;CACL,SAAS;AACX;AAQA,MAAM,YAAY,MAAsB,EAAE,WAAW,OAAO,OAAO,KAAK,QAAQ,GAAG,WAAW;CAC5F,MAAM,YAAY,SAAS;CAC3B,MAAM,CAAC,SAAS,cAAc,SAAS,IAAI;CAC3C,OACE,qBAACA,mBAAD;EACE,OAAO;EACI;EACX,MAAM;EACN,SAAS;EACT,OAAO;GAAE,QAAQ;GAAM,UAAU;GAAU,UAAU;GAAY,OAAO;GAAM,GAAG;EAAM;YALzF,CAOG,WACC,oBAAC,KAAD;GACE,KAAK;GACL,QAAQ,OAAO;GACf,KAAK,UAAU,OAAO;GACtB,OAAO,EAAE,UAAU,WAAW;GAC9B,OAAO,OAAO;EACf,CAAA,GAEH,oBAAC,QAAD;GACE,OAAO;GACP,OAAO;IACL,MAAM;IACN,QAAQ;IACR,OAAO;GACT;GACA,SAAS,cAAc;IACrB,WAAW,KAAK;IAChB,SAAS,SAAS;GACpB;GACA,GAAI;EACL,CAAA,CACM;;AAEb,CAAC;AAED,UAAU,cAAc"}
1
+ {"version":3,"file":"index.mjs","names":["Flexbox"],"sources":["../../../src/brand/LogoThree/index.tsx"],"sourcesContent":["'use client';\n\nimport { type CSSProperties, memo, useState } from 'react';\n\nimport Spline, { type SplineProps } from '@/awesome/Spline';\nimport { useCdnFn } from '@/ConfigProvider';\nimport { Flexbox } from '@/Flex';\nimport Img from '@/Img';\n\nconst LOGO_3D = {\n path: 'assets/logo-3d.webp',\n pkg: '@lobehub/assets-logo',\n version: '1.2.0',\n};\n\nexport interface LogoThreeProps extends Partial<SplineProps> {\n className?: string;\n size?: number;\n style?: CSSProperties;\n}\n\nconst LogoThree = memo<LogoThreeProps>(({ className, style, size = 128, onLoad, ...rest }) => {\n const genCdnUrl = useCdnFn();\n const [loading, setLoading] = useState(true);\n return (\n <Flexbox\n align={'center'}\n className={className}\n flex={'none'}\n justify={'center'}\n style={{ height: size, overflow: 'hidden', position: 'relative', width: size, ...style }}\n >\n {loading && (\n <Img\n alt={'logo'}\n height={size * 0.75}\n src={genCdnUrl(LOGO_3D)}\n style={{ position: 'absolute' }}\n width={size * 0.75}\n />\n )}\n <Spline\n scene={'https://hub-apac-1.lobeobjects.space/logo.splinecode'}\n style={{\n flex: 'none',\n height: size,\n width: size,\n }}\n onLoad={(splineApp) => {\n setLoading(false);\n onLoad?.(splineApp);\n }}\n {...rest}\n />\n </Flexbox>\n );\n});\n\nLogoThree.displayName = 'LobeHubLogoThree';\n\nexport default LogoThree;\n"],"mappings":";;;;;;;;AASA,MAAM,UAAU;CACd,MAAM;CACN,KAAK;CACL,SAAS;AACX;AAQA,MAAM,YAAY,MAAsB,EAAE,WAAW,OAAO,OAAO,KAAK,QAAQ,GAAG,WAAW;CAC5F,MAAM,YAAY,SAAS;CAC3B,MAAM,CAAC,SAAS,cAAc,SAAS,IAAI;CAC3C,OACE,qBAACA,mBAAD;EACE,OAAO;EACI;EACX,MAAM;EACN,SAAS;EACT,OAAO;GAAE,QAAQ;GAAM,UAAU;GAAU,UAAU;GAAY,OAAO;GAAM,GAAG;EAAM;EALzF,UAAA,CAOG,WACC,oBAAC,KAAD;GACE,KAAK;GACL,QAAQ,OAAO;GACf,KAAK,UAAU,OAAO;GACtB,OAAO,EAAE,UAAU,WAAW;GAC9B,OAAO,OAAO;EACf,CAAA,GAEH,oBAAC,QAAD;GACE,OAAO;GACP,OAAO;IACL,MAAM;IACN,QAAQ;IACR,OAAO;GACT;GACA,SAAS,cAAc;IACrB,WAAW,KAAK;IAChB,SAAS,SAAS;GACpB;GACA,GAAI;EACL,CAAA,CACM;;AAEb,CAAC;AAED,UAAU,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Divider.mjs","names":[],"sources":["../../../src/brand/components/Divider.tsx"],"sourcesContent":["import { type FC } from 'react';\n\nimport type { DivProps, SvgProps } from '@/types';\n\nconst Divider: FC<SvgProps & DivProps & { size?: number }> = ({ size = '1em', style, ...rest }) => (\n <svg\n fill=\"none\"\n height={size}\n shapeRendering=\"geometricPrecision\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ flex: 'none', lineHeight: 1, ...style }}\n viewBox=\"0 0 24 24\"\n width={size}\n {...rest}\n >\n <path d=\"M16.88 3.549L7.12 20.451\" />\n </svg>\n);\n\nexport default Divider;\n"],"mappings":";;AAIA,MAAM,WAAwD,EAAE,OAAO,OAAO,OAAO,GAAG,WACtF,oBAAC,OAAD;CACE,MAAK;CACL,QAAQ;CACR,gBAAe;CACf,QAAO;CACP,eAAc;CACd,gBAAe;CACf,OAAO;EAAE,MAAM;EAAQ,YAAY;EAAG,GAAG;CAAM;CAC/C,SAAQ;CACR,OAAO;CACP,GAAI;WAEJ,oBAAC,QAAD,EAAM,GAAE,2BAA4B,CAAA;AACjC,CAAA"}
1
+ {"version":3,"file":"Divider.mjs","names":[],"sources":["../../../src/brand/components/Divider.tsx"],"sourcesContent":["import { type FC } from 'react';\n\nimport type { DivProps, SvgProps } from '@/types';\n\nconst Divider: FC<SvgProps & DivProps & { size?: number }> = ({ size = '1em', style, ...rest }) => (\n <svg\n fill=\"none\"\n height={size}\n shapeRendering=\"geometricPrecision\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ flex: 'none', lineHeight: 1, ...style }}\n viewBox=\"0 0 24 24\"\n width={size}\n {...rest}\n >\n <path d=\"M16.88 3.549L7.12 20.451\" />\n </svg>\n);\n\nexport default Divider;\n"],"mappings":";;AAIA,MAAM,WAAwD,EAAE,OAAO,OAAO,OAAO,GAAG,WACtF,oBAAC,OAAD;CACE,MAAK;CACL,QAAQ;CACR,gBAAe;CACf,QAAO;CACP,eAAc;CACd,gBAAe;CACf,OAAO;EAAE,MAAM;EAAQ,YAAY;EAAG,GAAG;CAAM;CAC/C,SAAQ;CACR,OAAO;CACP,GAAI;CAEJ,UAAA,oBAAC,QAAD,EAAM,GAAE,2BAA4B,CAAA;AACjC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackBottom.mjs","names":[],"sources":["../../../src/chat/BackBottom/BackBottom.tsx"],"sourcesContent":["'use client';\n\nimport { useScroll } from 'ahooks';\nimport { cx } from 'antd-style';\nimport { ListEnd } from 'lucide-react';\nimport { memo, type MouseEventHandler, useEffect, useRef, useState } from 'react';\n\nimport Button from '@/Button';\n\nimport { styles } from './style';\nimport { type BackBottomProps } from './type';\n\nconst BackBottom = memo<BackBottomProps>(\n ({ visibilityHeight = 240, target, onClick, style, className, text }) => {\n const [visible, setVisible] = useState<boolean>(false);\n const ref = useRef<HTMLButtonElement>(null);\n const current = (target as any)?.current;\n const scrollHeight = current?.scrollHeight || 0;\n const clientHeight = current?.clientHeight || 0;\n const scroll = useScroll(target);\n\n useEffect(() => {\n if (scroll?.top) {\n setVisible(scroll?.top + clientHeight + visibilityHeight < scrollHeight);\n }\n }, [scrollHeight, scroll, visibilityHeight]);\n\n const scrollToBottom: MouseEventHandler<HTMLDivElement> = (e) => {\n (target as any)?.current?.scrollTo({ behavior: 'smooth', left: 0, top: scrollHeight });\n onClick?.(e);\n };\n\n return (\n <Button\n glass\n className={cx(visible ? styles.visible : styles.hidden, className)}\n icon={ListEnd}\n ref={ref}\n shape={'round'}\n size={'small'}\n style={style}\n variant={'filled'}\n onClick={scrollToBottom}\n >\n {text || 'Back to bottom'}\n </Button>\n );\n },\n);\n\nBackBottom.displayName = 'BackBottom';\n\nexport default BackBottom;\n"],"mappings":";;;;;;;;;AAYA,MAAM,aAAa,MAChB,EAAE,mBAAmB,KAAK,QAAQ,SAAS,OAAO,WAAW,WAAW;CACvE,MAAM,CAAC,SAAS,cAAc,SAAkB,KAAK;CACrD,MAAM,MAAM,OAA0B,IAAI;CAC1C,MAAM,UAAW,QAAgB;CACjC,MAAM,eAAe,SAAS,gBAAgB;CAC9C,MAAM,eAAe,SAAS,gBAAgB;CAC9C,MAAM,SAAS,UAAU,MAAM;CAE/B,gBAAgB;EACd,IAAI,QAAQ,KACV,WAAW,QAAQ,MAAM,eAAe,mBAAmB,YAAY;CAE3E,GAAG;EAAC;EAAc;EAAQ;CAAgB,CAAC;CAE3C,MAAM,kBAAqD,MAAM;EAC/D,QAAiB,SAAS,SAAS;GAAE,UAAU;GAAU,MAAM;GAAG,KAAK;EAAa,CAAC;EACrF,UAAU,CAAC;CACb;CAEA,OACE,oBAAC,QAAD;EACE,OAAA;EACA,WAAW,GAAG,UAAU,OAAO,UAAU,OAAO,QAAQ,SAAS;EACjE,MAAM;EACD;EACL,OAAO;EACP,MAAM;EACC;EACP,SAAS;EACT,SAAS;YAER,QAAQ;CACH,CAAA;AAEZ,CACF;AAEA,WAAW,cAAc"}
1
+ {"version":3,"file":"BackBottom.mjs","names":[],"sources":["../../../src/chat/BackBottom/BackBottom.tsx"],"sourcesContent":["'use client';\n\nimport { useScroll } from 'ahooks';\nimport { cx } from 'antd-style';\nimport { ListEnd } from 'lucide-react';\nimport { memo, type MouseEventHandler, useEffect, useRef, useState } from 'react';\n\nimport Button from '@/Button';\n\nimport { styles } from './style';\nimport { type BackBottomProps } from './type';\n\nconst BackBottom = memo<BackBottomProps>(\n ({ visibilityHeight = 240, target, onClick, style, className, text }) => {\n const [visible, setVisible] = useState<boolean>(false);\n const ref = useRef<HTMLButtonElement>(null);\n const current = (target as any)?.current;\n const scrollHeight = current?.scrollHeight || 0;\n const clientHeight = current?.clientHeight || 0;\n const scroll = useScroll(target);\n\n useEffect(() => {\n if (scroll?.top) {\n setVisible(scroll?.top + clientHeight + visibilityHeight < scrollHeight);\n }\n }, [scrollHeight, scroll, visibilityHeight]);\n\n const scrollToBottom: MouseEventHandler<HTMLDivElement> = (e) => {\n (target as any)?.current?.scrollTo({ behavior: 'smooth', left: 0, top: scrollHeight });\n onClick?.(e);\n };\n\n return (\n <Button\n glass\n className={cx(visible ? styles.visible : styles.hidden, className)}\n icon={ListEnd}\n ref={ref}\n shape={'round'}\n size={'small'}\n style={style}\n variant={'filled'}\n onClick={scrollToBottom}\n >\n {text || 'Back to bottom'}\n </Button>\n );\n },\n);\n\nBackBottom.displayName = 'BackBottom';\n\nexport default BackBottom;\n"],"mappings":";;;;;;;;;AAYA,MAAM,aAAa,MAChB,EAAE,mBAAmB,KAAK,QAAQ,SAAS,OAAO,WAAW,WAAW;CACvE,MAAM,CAAC,SAAS,cAAc,SAAkB,KAAK;CACrD,MAAM,MAAM,OAA0B,IAAI;CAC1C,MAAM,UAAW,QAAgB;CACjC,MAAM,eAAe,SAAS,gBAAgB;CAC9C,MAAM,eAAe,SAAS,gBAAgB;CAC9C,MAAM,SAAS,UAAU,MAAM;CAE/B,gBAAgB;EACd,IAAI,QAAQ,KACV,WAAW,QAAQ,MAAM,eAAe,mBAAmB,YAAY;CAE3E,GAAG;EAAC;EAAc;EAAQ;CAAgB,CAAC;CAE3C,MAAM,kBAAqD,MAAM;EAC/D,QAAiB,SAAS,SAAS;GAAE,UAAU;GAAU,MAAM;GAAG,KAAK;EAAa,CAAC;EACrF,UAAU,CAAC;CACb;CAEA,OACE,oBAAC,QAAD;EACE,OAAA;EACA,WAAW,GAAG,UAAU,OAAO,UAAU,OAAO,QAAQ,SAAS;EACjE,MAAM;EACD;EACL,OAAO;EACP,MAAM;EACC;EACP,SAAS;EACT,SAAS;EAER,UAAA,QAAQ;CACH,CAAA;AAEZ,CACF;AAEA,WAAW,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatHeader.mjs","names":["Flexbox"],"sources":["../../../src/chat/ChatHeader/ChatHeader.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronLeft } from 'lucide-react';\nimport { memo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { ChatHeaderProps } from './type';\n\nconst ChatHeader = memo<ChatHeaderProps>(\n ({\n left,\n right,\n className,\n styles: contentStyles,\n gaps,\n classNames,\n showBackButton,\n onBackClick,\n children,\n gap = 16,\n ...rest\n }) => {\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.container, className)}\n distribution={'space-between'}\n gap={gap}\n paddingInline={16}\n {...rest}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.left, classNames?.left)}\n gap={gaps?.left || 12}\n justify={'flex-start'}\n style={contentStyles?.left}\n >\n {showBackButton && (\n <ActionIcon\n icon={ChevronLeft}\n style={{ marginRight: gaps?.left ? -gaps.left / 2 : -6 }}\n onClick={() => onBackClick?.()}\n />\n )}\n {left}\n </Flexbox>\n {children && (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.center, classNames?.center)}\n gap={gaps?.center || 8}\n justify={'center'}\n style={contentStyles?.center}\n >\n {children}\n </Flexbox>\n )}\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.right, classNames?.right)}\n gap={gaps?.right || 8}\n justify={'flex-end'}\n style={contentStyles?.right}\n >\n {right}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nChatHeader.displayName = 'ChatHeader';\n\nexport default ChatHeader;\n"],"mappings":";;;;;;;;;AAYA,MAAM,aAAa,MAChB,EACC,MACA,OACA,WACA,QAAQ,eACR,MACA,YACA,gBACA,aACA,UACA,MAAM,IACN,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAW,GAAG,OAAO,WAAW,SAAS;EACzC,cAAc;EACT;EACL,eAAe;EACf,GAAI;YAPN;GASE,qBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,MAAM,YAAY,IAAI;IAC3C,KAAK,MAAM,QAAQ;IACnB,SAAS;IACT,OAAO,eAAe;cANxB,CAQG,kBACC,oBAAC,YAAD;KACE,MAAM;KACN,OAAO,EAAE,aAAa,MAAM,OAAO,CAAC,KAAK,OAAO,IAAI,GAAG;KACvD,eAAe,cAAc;IAC9B,CAAA,GAEF,IACM;;GACR,YACC,oBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,QAAQ,YAAY,MAAM;IAC/C,KAAK,MAAM,UAAU;IACrB,SAAS;IACT,OAAO,eAAe;IAErB;GACM,CAAA;GAEX,oBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;IAC7C,KAAK,MAAM,SAAS;IACpB,SAAS;IACT,OAAO,eAAe;cAErB;GACM,CAAA;EACF;;AAEb,CACF;AAEA,WAAW,cAAc"}
1
+ {"version":3,"file":"ChatHeader.mjs","names":["Flexbox"],"sources":["../../../src/chat/ChatHeader/ChatHeader.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronLeft } from 'lucide-react';\nimport { memo } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { ChatHeaderProps } from './type';\n\nconst ChatHeader = memo<ChatHeaderProps>(\n ({\n left,\n right,\n className,\n styles: contentStyles,\n gaps,\n classNames,\n showBackButton,\n onBackClick,\n children,\n gap = 16,\n ...rest\n }) => {\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.container, className)}\n distribution={'space-between'}\n gap={gap}\n paddingInline={16}\n {...rest}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.left, classNames?.left)}\n gap={gaps?.left || 12}\n justify={'flex-start'}\n style={contentStyles?.left}\n >\n {showBackButton && (\n <ActionIcon\n icon={ChevronLeft}\n style={{ marginRight: gaps?.left ? -gaps.left / 2 : -6 }}\n onClick={() => onBackClick?.()}\n />\n )}\n {left}\n </Flexbox>\n {children && (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.center, classNames?.center)}\n gap={gaps?.center || 8}\n justify={'center'}\n style={contentStyles?.center}\n >\n {children}\n </Flexbox>\n )}\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.right, classNames?.right)}\n gap={gaps?.right || 8}\n justify={'flex-end'}\n style={contentStyles?.right}\n >\n {right}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nChatHeader.displayName = 'ChatHeader';\n\nexport default ChatHeader;\n"],"mappings":";;;;;;;;;AAYA,MAAM,aAAa,MAChB,EACC,MACA,OACA,WACA,QAAQ,eACR,MACA,YACA,gBACA,aACA,UACA,MAAM,IACN,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAW,GAAG,OAAO,WAAW,SAAS;EACzC,cAAc;EACT;EACL,eAAe;EACf,GAAI;EAPN,UAAA;GASE,qBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,MAAM,YAAY,IAAI;IAC3C,KAAK,MAAM,QAAQ;IACnB,SAAS;IACT,OAAO,eAAe;IANxB,UAAA,CAQG,kBACC,oBAAC,YAAD;KACE,MAAM;KACN,OAAO,EAAE,aAAa,MAAM,OAAO,CAAC,KAAK,OAAO,IAAI,GAAG;KACvD,eAAe,cAAc;IAC9B,CAAA,GAEF,IACM;;GACR,YACC,oBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,QAAQ,YAAY,MAAM;IAC/C,KAAK,MAAM,UAAU;IACrB,SAAS;IACT,OAAO,eAAe;IAErB;GACM,CAAA;GAEX,oBAACA,mBAAD;IACE,YAAA;IACA,OAAO;IACP,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;IAC7C,KAAK,MAAM,SAAS;IACpB,SAAS;IACT,OAAO,eAAe;IAErB,UAAA;GACM,CAAA;EACF;;AAEb,CACF;AAEA,WAAW,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatHeaderTitle.mjs","names":["Flexbox","styles"],"sources":["../../../src/chat/ChatHeader/ChatHeaderTitle.tsx"],"sourcesContent":["import { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { titleStyles as styles } from './style';\nimport type { ChatHeaderTitleProps } from './type';\n\nconst ChatHeaderTitle: FC<ChatHeaderTitleProps> = ({ title, desc, tag }) => {\n const tagContent = tag && (\n <Flexbox horizontal align={'center'} className={styles.tag}>\n {tag}\n </Flexbox>\n );\n\n if (desc)\n return (\n <Flexbox className={styles.container} gap={4}>\n <Flexbox horizontal align={'center'} className={styles.titleContainer} gap={8}>\n <div className={styles.titleWithDesc}>{title}</div>\n {tagContent}\n </Flexbox>\n <Flexbox horizontal align={'center'} className={styles.desc}>\n {desc}\n </Flexbox>\n </Flexbox>\n );\n return (\n <Flexbox horizontal align={'center'} className={styles.container} gap={8}>\n <div className={styles.title}>{title}</div>\n {tagContent}\n </Flexbox>\n );\n};\n\nexport default ChatHeaderTitle;\n"],"mappings":";;;;AAOA,MAAM,mBAA6C,EAAE,OAAO,MAAM,UAAU;CAC1E,MAAM,aAAa,OACjB,oBAACA,mBAAD;EAAS,YAAA;EAAW,OAAO;EAAU,WAAWC,YAAO;YACpD;CACM,CAAA;CAGX,IAAI,MACF,OACE,qBAACD,mBAAD;EAAS,WAAWC,YAAO;EAAW,KAAK;YAA3C,CACE,qBAACD,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,WAAWC,YAAO;GAAgB,KAAK;aAA5E,CACE,oBAAC,OAAD;IAAK,WAAWA,YAAO;cAAgB;GAAW,CAAA,GACjD,UACM;MACT,oBAACD,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,WAAWC,YAAO;aACpD;EACM,CAAA,CACF;;CAEb,OACE,qBAACD,mBAAD;EAAS,YAAA;EAAW,OAAO;EAAU,WAAWC,YAAO;EAAW,KAAK;YAAvE,CACE,oBAAC,OAAD;GAAK,WAAWA,YAAO;aAAQ;EAAW,CAAA,GACzC,UACM;;AAEb"}
1
+ {"version":3,"file":"ChatHeaderTitle.mjs","names":["Flexbox","styles"],"sources":["../../../src/chat/ChatHeader/ChatHeaderTitle.tsx"],"sourcesContent":["import { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { titleStyles as styles } from './style';\nimport type { ChatHeaderTitleProps } from './type';\n\nconst ChatHeaderTitle: FC<ChatHeaderTitleProps> = ({ title, desc, tag }) => {\n const tagContent = tag && (\n <Flexbox horizontal align={'center'} className={styles.tag}>\n {tag}\n </Flexbox>\n );\n\n if (desc)\n return (\n <Flexbox className={styles.container} gap={4}>\n <Flexbox horizontal align={'center'} className={styles.titleContainer} gap={8}>\n <div className={styles.titleWithDesc}>{title}</div>\n {tagContent}\n </Flexbox>\n <Flexbox horizontal align={'center'} className={styles.desc}>\n {desc}\n </Flexbox>\n </Flexbox>\n );\n return (\n <Flexbox horizontal align={'center'} className={styles.container} gap={8}>\n <div className={styles.title}>{title}</div>\n {tagContent}\n </Flexbox>\n );\n};\n\nexport default ChatHeaderTitle;\n"],"mappings":";;;;AAOA,MAAM,mBAA6C,EAAE,OAAO,MAAM,UAAU;CAC1E,MAAM,aAAa,OACjB,oBAACA,mBAAD;EAAS,YAAA;EAAW,OAAO;EAAU,WAAWC,YAAO;EACpD,UAAA;CACM,CAAA;CAGX,IAAI,MACF,OACE,qBAACD,mBAAD;EAAS,WAAWC,YAAO;EAAW,KAAK;EAA3C,UAAA,CACE,qBAACD,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,WAAWC,YAAO;GAAgB,KAAK;GAA5E,UAAA,CACE,oBAAC,OAAD;IAAK,WAAWA,YAAO;IAAgB,UAAA;GAAW,CAAA,GACjD,UACM;EACT,CAAA,GAAA,oBAACD,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,WAAWC,YAAO;GACpD,UAAA;EACM,CAAA,CACF;;CAEb,OACE,qBAACD,mBAAD;EAAS,YAAA;EAAW,OAAO;EAAU,WAAWC,YAAO;EAAW,KAAK;EAAvE,UAAA,CACE,oBAAC,OAAD;GAAK,WAAWA,YAAO;GAAQ,UAAA;EAAW,CAAA,GACzC,UACM;;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInputArea.mjs","names":[],"sources":["../../../src/chat/ChatInputArea/ChatInputArea.tsx"],"sourcesContent":["'use client';\n\nimport { memo } from 'react';\n\nimport DraggablePanel from '@/DraggablePanel';\n\nimport ChatInputAreaInner from './components/ChatInputAreaInner';\nimport { styles } from './style';\nimport type { ChatInputAreaProps } from './type';\n\nconst ChatInputArea = memo<ChatInputAreaProps>(\n ({\n ref,\n className,\n style,\n classNames,\n expand = true,\n setExpand,\n bottomAddons,\n topAddons,\n onSizeChange,\n heights,\n onSend,\n ...rest\n }) => {\n return (\n <DraggablePanel\n className={className}\n classNames={classNames}\n fullscreen={expand}\n headerHeight={heights?.headerHeight}\n maxHeight={heights?.maxHeight}\n minHeight={heights?.minHeight}\n placement=\"bottom\"\n size={{ height: heights?.inputHeight, width: '100%' }}\n style={{ zIndex: 10, ...style }}\n onSizeChange={onSizeChange}\n >\n <section className={styles.container} style={{ minHeight: heights?.minHeight }}>\n {topAddons}\n <div className={styles.textareaContainer}>\n <ChatInputAreaInner\n className={styles.textarea}\n ref={ref}\n style={{\n paddingInline: 16,\n }}\n onSend={() => {\n onSend?.();\n setExpand?.(false);\n }}\n {...rest}\n />\n </div>\n {bottomAddons}\n </section>\n </DraggablePanel>\n );\n },\n);\n\nexport default ChatInputArea;\n"],"mappings":";;;;;;;AAUA,MAAM,gBAAgB,MACnB,EACC,KACA,WACA,OACA,YACA,SAAS,MACT,WACA,cACA,WACA,cACA,SACA,QACA,GAAG,WACC;CACJ,OACE,oBAAC,gBAAD;EACa;EACC;EACZ,YAAY;EACZ,cAAc,SAAS;EACvB,WAAW,SAAS;EACpB,WAAW,SAAS;EACpB,WAAU;EACV,MAAM;GAAE,QAAQ,SAAS;GAAa,OAAO;EAAO;EACpD,OAAO;GAAE,QAAQ;GAAI,GAAG;EAAM;EAChB;YAEd,qBAAC,WAAD;GAAS,WAAW,OAAO;GAAW,OAAO,EAAE,WAAW,SAAS,UAAU;aAA7E;IACG;IACD,oBAAC,OAAD;KAAK,WAAW,OAAO;eACrB,oBAAC,oBAAD;MACE,WAAW,OAAO;MACb;MACL,OAAO,EACL,eAAe,GACjB;MACA,cAAc;OACZ,SAAS;OACT,YAAY,KAAK;MACnB;MACA,GAAI;KACL,CAAA;IACE,CAAA;IACJ;GACM;;CACK,CAAA;AAEpB,CACF"}
1
+ {"version":3,"file":"ChatInputArea.mjs","names":[],"sources":["../../../src/chat/ChatInputArea/ChatInputArea.tsx"],"sourcesContent":["'use client';\n\nimport { memo } from 'react';\n\nimport DraggablePanel from '@/DraggablePanel';\n\nimport ChatInputAreaInner from './components/ChatInputAreaInner';\nimport { styles } from './style';\nimport type { ChatInputAreaProps } from './type';\n\nconst ChatInputArea = memo<ChatInputAreaProps>(\n ({\n ref,\n className,\n style,\n classNames,\n expand = true,\n setExpand,\n bottomAddons,\n topAddons,\n onSizeChange,\n heights,\n onSend,\n ...rest\n }) => {\n return (\n <DraggablePanel\n className={className}\n classNames={classNames}\n fullscreen={expand}\n headerHeight={heights?.headerHeight}\n maxHeight={heights?.maxHeight}\n minHeight={heights?.minHeight}\n placement=\"bottom\"\n size={{ height: heights?.inputHeight, width: '100%' }}\n style={{ zIndex: 10, ...style }}\n onSizeChange={onSizeChange}\n >\n <section className={styles.container} style={{ minHeight: heights?.minHeight }}>\n {topAddons}\n <div className={styles.textareaContainer}>\n <ChatInputAreaInner\n className={styles.textarea}\n ref={ref}\n style={{\n paddingInline: 16,\n }}\n onSend={() => {\n onSend?.();\n setExpand?.(false);\n }}\n {...rest}\n />\n </div>\n {bottomAddons}\n </section>\n </DraggablePanel>\n );\n },\n);\n\nexport default ChatInputArea;\n"],"mappings":";;;;;;;AAUA,MAAM,gBAAgB,MACnB,EACC,KACA,WACA,OACA,YACA,SAAS,MACT,WACA,cACA,WACA,cACA,SACA,QACA,GAAG,WACC;CACJ,OACE,oBAAC,gBAAD;EACa;EACC;EACZ,YAAY;EACZ,cAAc,SAAS;EACvB,WAAW,SAAS;EACpB,WAAW,SAAS;EACpB,WAAU;EACV,MAAM;GAAE,QAAQ,SAAS;GAAa,OAAO;EAAO;EACpD,OAAO;GAAE,QAAQ;GAAI,GAAG;EAAM;EAChB;EAEd,UAAA,qBAAC,WAAD;GAAS,WAAW,OAAO;GAAW,OAAO,EAAE,WAAW,SAAS,UAAU;GAA7E,UAAA;IACG;IACD,oBAAC,OAAD;KAAK,WAAW,OAAO;KACrB,UAAA,oBAAC,oBAAD;MACE,WAAW,OAAO;MACb;MACL,OAAO,EACL,eAAe,GACjB;MACA,cAAc;OACZ,SAAS;OACT,YAAY,KAAK;MACnB;MACA,GAAI;KACL,CAAA;IACE,CAAA;IACJ;GACM;;CACK,CAAA;AAEpB,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInputActionBar.mjs","names":["Flexbox","styles"],"sources":["../../../../src/chat/ChatInputArea/components/ChatInputActionBar.tsx"],"sourcesContent":["'use client';\n\nimport { useResponsive } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { actionBarStyles as styles } from '../style';\nimport type { ChatInputActionBarProps } from '../type';\n\nconst ChatInputActionBar: FC<ChatInputActionBarProps> = ({\n ref,\n padding = '0 16px',\n leftAddons,\n rightAddons,\n ...rest\n}) => {\n const { mobile } = useResponsive();\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={styles.root}\n flex={'none'}\n justify={'space-between'}\n padding={padding}\n ref={ref}\n {...rest}\n >\n <Flexbox horizontal align={'center'} className={styles.left} flex={1} gap={mobile ? 0 : 4}>\n {leftAddons}\n </Flexbox>\n <Flexbox\n horizontal\n align={'center'}\n className={styles.right}\n flex={0}\n gap={mobile ? 0 : 4}\n justify={'flex-end'}\n >\n {rightAddons}\n </Flexbox>\n </Flexbox>\n );\n};\n\nChatInputActionBar.displayName = 'ChatInputActionBar';\n\nexport default ChatInputActionBar;\n"],"mappings":";;;;;;AAUA,MAAM,sBAAmD,EACvD,KACA,UAAU,UACV,YACA,aACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAWC,gBAAO;EAClB,MAAM;EACN,SAAS;EACA;EACJ;EACL,GAAI;YARN,CAUE,oBAACD,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,WAAWC,gBAAO;GAAM,MAAM;GAAG,KAAK,SAAS,IAAI;aACrF;EACM,CAAA,GACT,oBAACD,mBAAD;GACE,YAAA;GACA,OAAO;GACP,WAAWC,gBAAO;GAClB,MAAM;GACN,KAAK,SAAS,IAAI;GAClB,SAAS;aAER;EACM,CAAA,CACF;;AAEb;AAEA,mBAAmB,cAAc"}
1
+ {"version":3,"file":"ChatInputActionBar.mjs","names":["Flexbox","styles"],"sources":["../../../../src/chat/ChatInputArea/components/ChatInputActionBar.tsx"],"sourcesContent":["'use client';\n\nimport { useResponsive } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { actionBarStyles as styles } from '../style';\nimport type { ChatInputActionBarProps } from '../type';\n\nconst ChatInputActionBar: FC<ChatInputActionBarProps> = ({\n ref,\n padding = '0 16px',\n leftAddons,\n rightAddons,\n ...rest\n}) => {\n const { mobile } = useResponsive();\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={styles.root}\n flex={'none'}\n justify={'space-between'}\n padding={padding}\n ref={ref}\n {...rest}\n >\n <Flexbox horizontal align={'center'} className={styles.left} flex={1} gap={mobile ? 0 : 4}>\n {leftAddons}\n </Flexbox>\n <Flexbox\n horizontal\n align={'center'}\n className={styles.right}\n flex={0}\n gap={mobile ? 0 : 4}\n justify={'flex-end'}\n >\n {rightAddons}\n </Flexbox>\n </Flexbox>\n );\n};\n\nChatInputActionBar.displayName = 'ChatInputActionBar';\n\nexport default ChatInputActionBar;\n"],"mappings":";;;;;;AAUA,MAAM,sBAAmD,EACvD,KACA,UAAU,UACV,YACA,aACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAWC,gBAAO;EAClB,MAAM;EACN,SAAS;EACA;EACJ;EACL,GAAI;EARN,UAAA,CAUE,oBAACD,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,WAAWC,gBAAO;GAAM,MAAM;GAAG,KAAK,SAAS,IAAI;GACrF,UAAA;EACM,CAAA,GACT,oBAACD,mBAAD;GACE,YAAA;GACA,OAAO;GACP,WAAWC,gBAAO;GAClB,MAAM;GACN,KAAK,SAAS,IAAI;GAClB,SAAS;GAER,UAAA;EACM,CAAA,CACF;;AAEb;AAEA,mBAAmB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatSendButton.mjs","names":["Flexbox"],"sources":["../../../../src/chat/ChatInputArea/components/ChatSendButton.tsx"],"sourcesContent":["import { cssVar } from 'antd-style';\nimport { ArrowBigUp, CornerDownLeft, Loader2 } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport Button from '@/Button';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport type { ChatSendButtonProps } from '../type';\n\nconst ChatSendButton: FC<ChatSendButtonProps> = ({\n ref,\n leftAddons,\n rightAddons,\n texts,\n onSend,\n loading,\n onStop,\n ...rest\n}) => {\n return (\n <Flexbox\n horizontal\n align={'end'}\n distribution={'space-between'}\n flex={'none'}\n gap={8}\n paddingInline={16}\n ref={ref}\n {...rest}\n >\n <Flexbox horizontal align={'center'} gap={8}>\n {leftAddons}\n </Flexbox>\n <Flexbox horizontal align={'center'} gap={8}>\n <Flexbox\n horizontal\n gap={4}\n style={{ color: cssVar.colorTextDescription, fontSize: 12, marginRight: 12 }}\n >\n <Icon icon={CornerDownLeft} />\n <span>{texts?.send || 'Send'}</span>\n <span>/</span>\n <Flexbox horizontal>\n <Icon icon={ArrowBigUp} />\n <Icon icon={CornerDownLeft} />\n </Flexbox>\n <span>{texts?.warp || 'Warp'}</span>\n </Flexbox>\n {rightAddons}\n {loading ? (\n <Button icon={loading && Loader2} onClick={onStop}>\n {texts?.stop || 'Stop'}\n </Button>\n ) : (\n <Button type={'primary'} onClick={onSend}>\n {texts?.send || 'Send'}\n </Button>\n )}\n </Flexbox>\n </Flexbox>\n );\n};\n\nChatSendButton.displayName = 'ChatSendButton';\n\nexport default ChatSendButton;\n"],"mappings":";;;;;;;AAUA,MAAM,kBAA2C,EAC/C,KACA,YACA,aACA,OACA,QACA,SACA,QACA,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,cAAc;EACd,MAAM;EACN,KAAK;EACL,eAAe;EACV;EACL,GAAI;YARN,CAUE,oBAACA,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,KAAK;aACvC;EACM,CAAA,GACT,qBAACA,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,KAAK;aAA1C;IACE,qBAACA,mBAAD;KACE,YAAA;KACA,KAAK;KACL,OAAO;MAAE,OAAO,OAAO;MAAsB,UAAU;MAAI,aAAa;KAAG;eAH7E;MAKE,oBAAC,MAAD,EAAM,MAAM,eAAiB,CAAA;MAC7B,oBAAC,QAAD,EAAA,UAAO,OAAO,QAAQ,OAAa,CAAA;MACnC,oBAAC,QAAD,EAAA,UAAM,IAAO,CAAA;MACb,qBAACA,mBAAD;OAAS,YAAA;iBAAT,CACE,oBAAC,MAAD,EAAM,MAAM,WAAa,CAAA,GACzB,oBAAC,MAAD,EAAM,MAAM,eAAiB,CAAA,CACtB;;MACT,oBAAC,QAAD,EAAA,UAAO,OAAO,QAAQ,OAAa,CAAA;KAC5B;;IACR;IACA,UACC,oBAAC,QAAD;KAAQ,MAAM,WAAW;KAAS,SAAS;eACxC,OAAO,QAAQ;IACV,CAAA,IAER,oBAAC,QAAD;KAAQ,MAAM;KAAW,SAAS;eAC/B,OAAO,QAAQ;IACV,CAAA;GAEH;IACF;;AAEb;AAEA,eAAe,cAAc"}
1
+ {"version":3,"file":"ChatSendButton.mjs","names":["Flexbox"],"sources":["../../../../src/chat/ChatInputArea/components/ChatSendButton.tsx"],"sourcesContent":["import { cssVar } from 'antd-style';\nimport { ArrowBigUp, CornerDownLeft, Loader2 } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport Button from '@/Button';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport type { ChatSendButtonProps } from '../type';\n\nconst ChatSendButton: FC<ChatSendButtonProps> = ({\n ref,\n leftAddons,\n rightAddons,\n texts,\n onSend,\n loading,\n onStop,\n ...rest\n}) => {\n return (\n <Flexbox\n horizontal\n align={'end'}\n distribution={'space-between'}\n flex={'none'}\n gap={8}\n paddingInline={16}\n ref={ref}\n {...rest}\n >\n <Flexbox horizontal align={'center'} gap={8}>\n {leftAddons}\n </Flexbox>\n <Flexbox horizontal align={'center'} gap={8}>\n <Flexbox\n horizontal\n gap={4}\n style={{ color: cssVar.colorTextDescription, fontSize: 12, marginRight: 12 }}\n >\n <Icon icon={CornerDownLeft} />\n <span>{texts?.send || 'Send'}</span>\n <span>/</span>\n <Flexbox horizontal>\n <Icon icon={ArrowBigUp} />\n <Icon icon={CornerDownLeft} />\n </Flexbox>\n <span>{texts?.warp || 'Warp'}</span>\n </Flexbox>\n {rightAddons}\n {loading ? (\n <Button icon={loading && Loader2} onClick={onStop}>\n {texts?.stop || 'Stop'}\n </Button>\n ) : (\n <Button type={'primary'} onClick={onSend}>\n {texts?.send || 'Send'}\n </Button>\n )}\n </Flexbox>\n </Flexbox>\n );\n};\n\nChatSendButton.displayName = 'ChatSendButton';\n\nexport default ChatSendButton;\n"],"mappings":";;;;;;;AAUA,MAAM,kBAA2C,EAC/C,KACA,YACA,aACA,OACA,QACA,SACA,QACA,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,cAAc;EACd,MAAM;EACN,KAAK;EACL,eAAe;EACV;EACL,GAAI;EARN,UAAA,CAUE,oBAACA,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,KAAK;GACvC,UAAA;EACM,CAAA,GACT,qBAACA,mBAAD;GAAS,YAAA;GAAW,OAAO;GAAU,KAAK;GAA1C,UAAA;IACE,qBAACA,mBAAD;KACE,YAAA;KACA,KAAK;KACL,OAAO;MAAE,OAAO,OAAO;MAAsB,UAAU;MAAI,aAAa;KAAG;KAH7E,UAAA;MAKE,oBAAC,MAAD,EAAM,MAAM,eAAiB,CAAA;MAC7B,oBAAC,QAAD,EAAA,UAAO,OAAO,QAAQ,OAAa,CAAA;MACnC,oBAAC,QAAD,EAAA,UAAM,IAAO,CAAA;MACb,qBAACA,mBAAD;OAAS,YAAA;OAAT,UAAA,CACE,oBAAC,MAAD,EAAM,MAAM,WAAa,CAAA,GACzB,oBAAC,MAAD,EAAM,MAAM,eAAiB,CAAA,CACtB;;MACT,oBAAC,QAAD,EAAA,UAAO,OAAO,QAAQ,OAAa,CAAA;KAC5B;;IACR;IACA,UACC,oBAAC,QAAD;KAAQ,MAAM,WAAW;KAAS,SAAS;KACxC,UAAA,OAAO,QAAQ;IACV,CAAA,IAER,oBAAC,QAAD;KAAQ,MAAM;KAAW,SAAS;KAC/B,UAAA,OAAO,QAAQ;IACV,CAAA;GAEH;EACF,CAAA,CAAA;;AAEb;AAEA,eAAe,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatItem.mjs","names":["chatMessages","Flexbox"],"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":";;;;;;;;;;;;;;;AAkBA,MAAM,qBAAqB;AAE3B,MAAM,WAAW,MACd,EACC,aACA,eACA,aACA,SACA,WACA,SACA,SACA,SACA,oBACA,YAAY,QACZ,UAAU,UACV,QACA,OACA,WACA,MACA,SACA,UACA,iBACA,cACA,eACA,MACA,cACA,eACA,UACA,cACA,cACA,eACA,mBAAmB,IACnB,aAAa,MACb,YACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,EAAE,MAAM,eAAeA,YAAY;CAEzC,MAAM,aAAa,SAAS,qBAAqB,aAAa,QAAQ;CACtE,MAAM,eAAe,eACZ,EACL,2BAA2B,GAAG,WAAW,IAC3C,IACA,CAAC,UAAU,CACb;CAEA,MAAM,UAAU,QAAQ,IAAI;CAC5B,MAAM,kBAAkB,sBAAsB,EAAE,kBAAkB;CAClE,MAAM,YAAY,aAAa,OAAO,OAAO,SAAS,EAAE,aAAa;CAGrE,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,eAAe,OAAuB,IAAI;CAChD,MAAM,CAAC,YAAY,iBAAiB,SAClC,YAAY,WAAW,eAAe,UACxC;CAGA,gBAAgB;EACd,IAAI,YAAY,QAAQ;GACtB,cAAc,UAAU;GACxB;EACF;EAEA,IAAI,CAAC,WAAW,WAAW,CAAC,aAAa,SAAS;EAElD,MAAM,WAAW,IAAI,qBAAqB;GACxC,IAAI,CAAC,WAAW,WAAW,CAAC,aAAa,SAAS;GAElD,MAAM,iBAAiB,aAAa,QAAQ;GAC5C,MAAM,eAAe,WAAW,QAAQ;GAKxC,cAAc,eAAe,mBAAmB,iBAAiB,aAAa,YAAY;EAC5F,CAAC;EAED,SAAS,QAAQ,WAAW,OAAO;EACnC,SAAS,QAAQ,aAAa,OAAO;EAErC,aAAa,SAAS,WAAW;CACnC,GAAG,CAAC,SAAS,gBAAgB,CAAC;CAE9B,MAAM,qBAAqB,GACzB,YAAY,SAAS,OAAO,gBAAgB,OAAO,WACnD,SACF;CAEA,MAAM,4BAA4B,cAAc;EAC9C,IAAI,SACF,OAAO,UAAU,OAAO,kCAAkC,OAAO;EAEnE,OAAO,UAAU,OAAO,2BAA2B,OAAO;CAC5D,GAAG,CAAC,SAAS,OAAO,CAAC;CAErB,MAAM,0BAA0B,cAAc;EAC5C,OAAO,UAAU,OAAO,wBAAwB,OAAO;CACzD,GAAG,CAAC,OAAO,CAAC;CAEZ,OACE,qBAACC,mBAAD;EACE,WAAW;EACX,WAAW,cAAc,SAAS,eAAe;EACjD,KAAK,SAAS,IAAI;EAClB,OAAO;EACP,GAAI;YALN;GAOG,cACC,oBAAC,QAAD;IACE,GAAI;IACJ,OAAO;IACP,KAAK;IACG;IACC;IACE;IACX,MAAM;IACN,OAAO;KACL,WAAW,YAAY,MAAM;KAC7B,GAAG,aAAa;IAClB;IACA,SAAS;GACV,CAAA;GAEH,qBAACA,mBAAD;IACE,OAAO,cAAc,SAAS,eAAe;IAC7C,WAAW;IACX,KAAK;cAHP;KAKE,oBAAC,OAAD;MACU;MACG;MACA;MACL;MACM;KACb,CAAA;KACA;KACD,qBAACA,mBAAD;MACE,OAAO,cAAc,SAAS,eAAe;MAC7C,WAAW;MACX,eAAa;MACb,KAAK;MACL,WACE,eAAe,eACX,cAAc,SACZ,eACA,uBACF;gBAVR,CAaE,oBAACA,mBAAD;OAAS,KAAK;OAAY,OAAO;iBAC9B,UAAU,YAAY,mBAAmB,CAAC,WACzC,oBAAC,cAAD;QAAqB;QAAO,SAAS;QAAyB;OAAY,CAAA,IAE1E,oBAAC,gBAAD;QACW;QACC;QACK;QACN;QACE;QACF;QACM;QACT;QACG;QACT,cACE,qBAAA,YAAA,EAAA,UAAA,CACG,SACC,oBAAC,cAAD;SAAqB;SAAO,SAAS;SAAyB;QAAY,CAAA,GAE3E,YACD,EAAA,CAAA;QAEM;QACK;QACE;OAClB,CAAA;MAEI,CAAA,GACR,WACC,oBAAC,SAAD;OACW;OACA;OACE;OACF;MACV,CAAA,CAEI;;KACR;IACM;;GACR,UAAU,YAAY,YAAY,cACjC,oBAAC,eAAD,EAAe,eAAe,mBAAqB,CAAA;EAE9C;;AAEb,CACF"}
1
+ {"version":3,"file":"ChatItem.mjs","names":["chatMessages","Flexbox"],"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":";;;;;;;;;;;;;;;AAkBA,MAAM,qBAAqB;AAE3B,MAAM,WAAW,MACd,EACC,aACA,eACA,aACA,SACA,WACA,SACA,SACA,SACA,oBACA,YAAY,QACZ,UAAU,UACV,QACA,OACA,WACA,MACA,SACA,UACA,iBACA,cACA,eACA,MACA,cACA,eACA,UACA,cACA,cACA,eACA,mBAAmB,IACnB,aAAa,MACb,YACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,EAAE,MAAM,eAAeA,YAAY;CAEzC,MAAM,aAAa,SAAS,qBAAqB,aAAa,QAAQ;CACtE,MAAM,eAAe,eACZ,EACL,2BAA2B,GAAG,WAAW,IAC3C,IACA,CAAC,UAAU,CACb;CAEA,MAAM,UAAU,QAAQ,IAAI;CAC5B,MAAM,kBAAkB,sBAAsB,EAAE,kBAAkB;CAClE,MAAM,YAAY,aAAa,OAAO,OAAO,SAAS,EAAE,aAAa;CAGrE,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,eAAe,OAAuB,IAAI;CAChD,MAAM,CAAC,YAAY,iBAAiB,SAClC,YAAY,WAAW,eAAe,UACxC;CAGA,gBAAgB;EACd,IAAI,YAAY,QAAQ;GACtB,cAAc,UAAU;GACxB;EACF;EAEA,IAAI,CAAC,WAAW,WAAW,CAAC,aAAa,SAAS;EAElD,MAAM,WAAW,IAAI,qBAAqB;GACxC,IAAI,CAAC,WAAW,WAAW,CAAC,aAAa,SAAS;GAElD,MAAM,iBAAiB,aAAa,QAAQ;GAC5C,MAAM,eAAe,WAAW,QAAQ;GAKxC,cAAc,eAAe,mBAAmB,iBAAiB,aAAa,YAAY;EAC5F,CAAC;EAED,SAAS,QAAQ,WAAW,OAAO;EACnC,SAAS,QAAQ,aAAa,OAAO;EAErC,aAAa,SAAS,WAAW;CACnC,GAAG,CAAC,SAAS,gBAAgB,CAAC;CAE9B,MAAM,qBAAqB,GACzB,YAAY,SAAS,OAAO,gBAAgB,OAAO,WACnD,SACF;CAEA,MAAM,4BAA4B,cAAc;EAC9C,IAAI,SACF,OAAO,UAAU,OAAO,kCAAkC,OAAO;EAEnE,OAAO,UAAU,OAAO,2BAA2B,OAAO;CAC5D,GAAG,CAAC,SAAS,OAAO,CAAC;CAErB,MAAM,0BAA0B,cAAc;EAC5C,OAAO,UAAU,OAAO,wBAAwB,OAAO;CACzD,GAAG,CAAC,OAAO,CAAC;CAEZ,OACE,qBAACC,mBAAD;EACE,WAAW;EACX,WAAW,cAAc,SAAS,eAAe;EACjD,KAAK,SAAS,IAAI;EAClB,OAAO;EACP,GAAI;EALN,UAAA;GAOG,cACC,oBAAC,QAAD;IACE,GAAI;IACJ,OAAO;IACP,KAAK;IACG;IACC;IACE;IACX,MAAM;IACN,OAAO;KACL,WAAW,YAAY,MAAM;KAC7B,GAAG,aAAa;IAClB;IACA,SAAS;GACV,CAAA;GAEH,qBAACA,mBAAD;IACE,OAAO,cAAc,SAAS,eAAe;IAC7C,WAAW;IACX,KAAK;IAHP,UAAA;KAKE,oBAAC,OAAD;MACU;MACG;MACA;MACL;MACM;KACb,CAAA;KACA;KACD,qBAACA,mBAAD;MACE,OAAO,cAAc,SAAS,eAAe;MAC7C,WAAW;MACX,eAAa;MACb,KAAK;MACL,WACE,eAAe,eACX,cAAc,SACZ,eACA,uBACF;MAVR,UAAA,CAaE,oBAACA,mBAAD;OAAS,KAAK;OAAY,OAAO;OAC9B,UAAA,UAAU,YAAY,mBAAmB,CAAC,WACzC,oBAAC,cAAD;QAAqB;QAAO,SAAS;QAAyB;OAAY,CAAA,IAE1E,oBAAC,gBAAD;QACW;QACC;QACK;QACN;QACE;QACF;QACM;QACT;QACG;QACT,cACE,qBAAA,YAAA,EAAA,UAAA,CACG,SACC,oBAAC,cAAD;SAAqB;SAAO,SAAS;SAAyB;QAAY,CAAA,GAE3E,YACD,EAAA,CAAA;QAEM;QACK;QACE;OAClB,CAAA;MAEI,CAAA,GACR,WACC,oBAAC,SAAD;OACW;OACA;OACE;OACF;MACV,CAAA,CAEI;;KACR;IACM;;GACR,UAAU,YAAY,YAAY,cACjC,oBAAC,eAAD,EAAe,eAAe,mBAAqB,CAAA;EAE9C;;AAEb,CACF"}
@@ -5,12 +5,13 @@ import { jsx } from "react/jsx-runtime";
5
5
  import { cx } from "antd-style";
6
6
  //#region src/chat/ChatItem/components/Actions.tsx
7
7
  const Actions = ({ actions, placement = "left", variant = "bubble", editing, ref }) => {
8
+ const actionsClassName = useMemo(() => {
9
+ if (variant === "bubble") return placement === "left" ? styles.actionsBubbleLeft : styles.actionsBubbleRight;
10
+ return placement === "left" ? styles.actionsDocsLeft : styles.actionsDocsRight;
11
+ }, [placement, variant]);
8
12
  return /* @__PURE__ */ jsx(FlexBasic_default, {
9
13
  align: "flex-start",
10
- className: cx(useMemo(() => {
11
- if (variant === "bubble") return placement === "left" ? styles.actionsBubbleLeft : styles.actionsBubbleRight;
12
- return placement === "left" ? styles.actionsDocsLeft : styles.actionsDocsRight;
13
- }, [placement, variant]), editing && styles.actionsEditing),
14
+ className: cx(actionsClassName, editing && styles.actionsEditing),
14
15
  ref,
15
16
  role: "menubar",
16
17
  children: actions
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.mjs","names":["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,MAAM,WAA6B,EACjC,SACA,YAAY,QACZ,UAAU,UACV,SACA,UACI;CAQJ,OACE,oBAACA,mBAAD;EACE,OAAO;EACP,WAAW,GAVU,cAAc;GACrC,IAAI,YAAY,UACd,OAAO,cAAc,SAAS,OAAO,oBAAoB,OAAO;GAElE,OAAO,cAAc,SAAS,OAAO,kBAAkB,OAAO;EAChE,GAAG,CAAC,WAAW,OAAO,CAKW,GAAG,WAAW,OAAO,cAAc;EAC3D;EACL,MAAK;YAEJ;CACM,CAAA;AAEb"}
1
+ {"version":3,"file":"Actions.mjs","names":["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,MAAM,WAA6B,EACjC,SACA,YAAY,QACZ,UAAU,UACV,SACA,UACI;CACJ,MAAM,mBAAmB,cAAc;EACrC,IAAI,YAAY,UACd,OAAO,cAAc,SAAS,OAAO,oBAAoB,OAAO;EAElE,OAAO,cAAc,SAAS,OAAO,kBAAkB,OAAO;CAChE,GAAG,CAAC,WAAW,OAAO,CAAC;CAEvB,OACE,oBAACA,mBAAD;EACE,OAAO;EACP,WAAW,GAAG,kBAAkB,WAAW,OAAO,cAAc;EAC3D;EACL,MAAK;EAEJ,UAAA;CACM,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.mjs","names":["A","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,MAAM,UAA2B,EAC/B,SACA,QACA,WACA,aACA,OACA,SACA,OAAO,IACP,OACA,UACI;CACJ,MAAM,eAAe,eACZ,EACL,2BAA2B,GAAG,KAAK,IACrC,IACA,CAAC,IAAI,CACP;CAEA,MAAM,gBACJ,qBAAC,OAAD;EAAK,WAAW,OAAO;EAAiB,OAAO;GAAE,GAAG;GAAc,GAAG;EAAM;YAA3E,CACE,oBAACA,UAAD;GACE,KAAK,OAAO,OAAO;GACnB,WAAW;GACX,QAAQ,OAAO;GACf,YAAY,OAAO;GACb;GACN,OAAO,OAAO;GACD;GACJ;EACV,CAAA,GACD,oBAAC,SAAD;GAAkB;GAAoB;EAAY,CAAA,CAC/C;;CAGP,IAAI,CAAC,OAAO,OAAO;CACnB,OACE,qBAACC,mBAAD;EAAS,OAAO;EAAU,WAAW,OAAO;EAAsB,KAAK;YAAvE,CACG,eACA,KACM;;AAEb"}
1
+ {"version":3,"file":"Avatar.mjs","names":["A","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,MAAM,UAA2B,EAC/B,SACA,QACA,WACA,aACA,OACA,SACA,OAAO,IACP,OACA,UACI;CACJ,MAAM,eAAe,eACZ,EACL,2BAA2B,GAAG,KAAK,IACrC,IACA,CAAC,IAAI,CACP;CAEA,MAAM,gBACJ,qBAAC,OAAD;EAAK,WAAW,OAAO;EAAiB,OAAO;GAAE,GAAG;GAAc,GAAG;EAAM;EAA3E,UAAA,CACE,oBAACA,UAAD;GACE,KAAK,OAAO,OAAO;GACnB,WAAW;GACX,QAAQ,OAAO;GACf,YAAY,OAAO;GACb;GACN,OAAO,OAAO;GACD;GACJ;EACV,CAAA,GACD,oBAAC,SAAD;GAAkB;GAAoB;EAAY,CAAA,CAC/C;;CAGP,IAAI,CAAC,OAAO,OAAO;CACnB,OACE,qBAACC,mBAAD;EAAS,OAAO;EAAU,WAAW,OAAO;EAAsB,KAAK;EAAvE,UAAA,CACG,eACA,KACM;;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorContent.mjs","names":["Flexbox"],"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,MAAM,gBAAuC,EAAE,SAAS,YAAY;CAClE,OACE,oBAACA,mBAAD;EAAS,WAAW,OAAO;YACzB,oBAAC,OAAD;GAAO,UAAA;GAAS,UAAU;GAAO,OAAO;GAAS,MAAM;GAAS,GAAI;EAAQ,CAAA;CACrE,CAAA;AAEb"}
1
+ {"version":3,"file":"ErrorContent.mjs","names":["Flexbox"],"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,MAAM,gBAAuC,EAAE,SAAS,YAAY;CAClE,OACE,oBAACA,mBAAD;EAAS,WAAW,OAAO;EACzB,UAAA,oBAAC,OAAD;GAAO,UAAA;GAAS,UAAU;GAAO,OAAO;GAAS,MAAM;GAAS,GAAI;EAAQ,CAAA;CACrE,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"Loading.mjs","names":["Flexbox"],"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,MAAM,WAA6B,EAAE,SAAS,YAAY,aAAa;CACrE,IAAI,CAAC,SAAS,OAAO;CAErB,OACE,oBAACA,mBAAD;EACE,OAAO;EACP,WAAW,cAAc,SAAS,OAAO,cAAc,OAAO;EAC9D,SAAS;YAET,oBAAC,MAAD;GAAM,MAAA;GAAK,MAAM;GAAS,MAAM;IAAE,MAAM;IAAI,aAAa;GAAE;EAAI,CAAA;CACxD,CAAA;AAEb"}
1
+ {"version":3,"file":"Loading.mjs","names":["Flexbox"],"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,MAAM,WAA6B,EAAE,SAAS,YAAY,aAAa;CACrE,IAAI,CAAC,SAAS,OAAO;CAErB,OACE,oBAACA,mBAAD;EACE,OAAO;EACP,WAAW,cAAc,SAAS,OAAO,cAAc,OAAO;EAC9D,SAAS;EAET,UAAA,oBAAC,MAAD;GAAM,MAAA;GAAK,MAAM;GAAS,MAAM;IAAE,MAAM;IAAI,aAAa;GAAE;EAAI,CAAA;CACxD,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageContent.mjs","names":["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,cAAc;CAEjC,MAAM,mBAAmB,cAAc;EACrC,IAAI,YAAY,UAAU,OAAO,OAAO;EAGxC,OAAO,OAAO;CAChB,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,4BAA4B,cAAc;EAC9C,OAAO,YAAY,SAAS,OAAO,uBAAuB,OAAO;CACnE,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,UACJ,oBAAC,iBAAD;EACE,uBAAA;EACA,YAAY,EAAE,OAAO,OAAO,aAAa;EACzC,gBAAgB;EACP;EACC;EACK;EACf,WAAW,SAAS,UAAU,KAAA;EACxB;EACN,OAAO,UAAU,OAAO,OAAO,IAAI;EACzB;EACO;CAClB,CAAA;CAEH,MAAM,iBAAiB,gBAAgB,cAAc,OAAO,IAAI;CAEhE,OACE,qBAACA,mBAAD;EACE,WAAW,GAAG,kBAAkB,WAAW,yBAAyB;EACrD;YAFjB,CAIG,gBACA,gBAAgB,CAAC,UAChB,oBAAC,OAAD;GAAK,WAAW,OAAO;aAAe;EAAkB,CAAA,IACtD,IACG;;AAEb,CACF"}
1
+ {"version":3,"file":"MessageContent.mjs","names":["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,cAAc;CAEjC,MAAM,mBAAmB,cAAc;EACrC,IAAI,YAAY,UAAU,OAAO,OAAO;EAGxC,OAAO,OAAO;CAChB,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,4BAA4B,cAAc;EAC9C,OAAO,YAAY,SAAS,OAAO,uBAAuB,OAAO;CACnE,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,UACJ,oBAAC,iBAAD;EACE,uBAAA;EACA,YAAY,EAAE,OAAO,OAAO,aAAa;EACzC,gBAAgB;EACP;EACC;EACK;EACf,WAAW,SAAS,UAAU,KAAA;EACxB;EACN,OAAO,UAAU,OAAO,OAAO,IAAI;EACzB;EACO;CAClB,CAAA;CAEH,MAAM,iBAAiB,gBAAgB,cAAc,OAAO,IAAI;CAEhE,OACE,qBAACA,mBAAD;EACE,WAAW,GAAG,kBAAkB,WAAW,yBAAyB;EACrD;EAFjB,UAAA,CAIG,gBACA,gBAAgB,CAAC,UAChB,oBAAC,OAAD;GAAK,WAAW,OAAO;GAAe,UAAA;EAAkB,CAAA,IACtD,IACG;;AAEb,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Title.mjs","names":["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,MAAM,SAAyB,EAAE,WAAW,YAAY,QAAQ,MAAM,QAAQ,iBAAiB;CAC7F,OACE,qBAACA,mBAAD;EACE,OAAO;EACP,WAAW,cAAc,SAAS,OAAO,WAAW,OAAO;EAC3D,WAAW,cAAc,SAAS,eAAe;EACjD,KAAK;YAJP;GAMG,YAAY,OAAO,SAAS,aAAa,KAAA;GACzC,YAAY,aAAa,KAAA;GACzB,QAAQ,oBAAC,QAAD,EAAA,UAAO,WAAW,IAAI,EAAQ,CAAA;EAChC;;AAEb"}
1
+ {"version":3,"file":"Title.mjs","names":["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,MAAM,SAAyB,EAAE,WAAW,YAAY,QAAQ,MAAM,QAAQ,iBAAiB;CAC7F,OACE,qBAACA,mBAAD;EACE,OAAO;EACP,WAAW,cAAc,SAAS,OAAO,WAAW,OAAO;EAC3D,WAAW,cAAc,SAAS,eAAe;EACjD,KAAK;EAJP,UAAA;GAMG,YAAY,OAAO,SAAS,aAAa,KAAA;GACzC,YAAY,aAAa,KAAA;GACzB,QAAQ,oBAAC,QAAD,EAAA,UAAO,WAAW,IAAI,EAAQ,CAAA;EAChC;;AAEb"}
@@ -27,8 +27,9 @@ const ChatList = memo(({ onActionsClick, onAvatarsClick, renderMessagesExtra, cl
27
27
  variant
28
28
  };
29
29
  const historyLength = data.length;
30
+ const enableHistoryDivider = enableHistoryCount && historyLength > historyCount && historyCount === historyLength - index + 1;
30
31
  return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(HistoryDivider, {
31
- enable: enableHistoryCount && historyLength > historyCount && historyCount === historyLength - index + 1,
32
+ enable: enableHistoryDivider,
32
33
  text: text?.history
33
34
  }), /* @__PURE__ */ jsx(ChatListItem, {
34
35
  ...itemProps,
@@ -1 +1 @@
1
- {"version":3,"file":"ChatList.mjs","names":[],"sources":["../../../src/chat/ChatList/ChatList.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { Fragment, memo } from 'react';\n\nimport ChatListItem from './components/ChatListItem';\nimport HistoryDivider from './components/HistoryDivider';\nimport { styles } from './style';\nimport type { ChatListProps } from './type';\n\nconst ChatList = memo<ChatListProps>(\n ({\n onActionsClick,\n onAvatarsClick,\n renderMessagesExtra,\n className,\n data,\n variant = 'bubble',\n text,\n showTitle,\n onMessageChange,\n renderMessages,\n renderErrorMessages,\n loadingId,\n renderItems,\n enableHistoryCount,\n renderActions,\n historyCount = 0,\n showAvatar,\n ...rest\n }) => {\n return (\n <div className={cx(styles.container, className)} {...rest}>\n {data.map((item, index) => {\n const itemProps = {\n loading: loadingId === item.id,\n onActionsClick,\n onAvatarsClick,\n onMessageChange,\n renderActions,\n renderErrorMessages,\n renderItems,\n renderMessages,\n renderMessagesExtra,\n showAvatar,\n showTitle,\n text,\n variant,\n };\n\n const historyLength = data.length;\n const enableHistoryDivider =\n enableHistoryCount &&\n historyLength > historyCount &&\n historyCount === historyLength - index + 1;\n\n return (\n <Fragment key={item.id}>\n <HistoryDivider enable={enableHistoryDivider} text={text?.history} />\n <ChatListItem {...itemProps} {...item} />\n </Fragment>\n );\n })}\n </div>\n );\n },\n);\n\nexport default ChatList;\n"],"mappings":";;;;;;;;AAUA,MAAM,WAAW,MACd,EACC,gBACA,gBACA,qBACA,WACA,MACA,UAAU,UACV,MACA,WACA,iBACA,gBACA,qBACA,WACA,aACA,oBACA,eACA,eAAe,GACf,YACA,GAAG,WACC;CACJ,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,OAAO,WAAW,SAAS;EAAG,GAAI;YAClD,KAAK,KAAK,MAAM,UAAU;GACzB,MAAM,YAAY;IAChB,SAAS,cAAc,KAAK;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GAEA,MAAM,gBAAgB,KAAK;GAM3B,OACE,qBAAC,UAAD,EAAA,UAAA,CACE,oBAAC,gBAAD;IAAgB,QANlB,sBACA,gBAAgB,gBAChB,iBAAiB,gBAAgB,QAAQ;IAIO,MAAM,MAAM;GAAU,CAAA,GACpE,oBAAC,cAAD;IAAc,GAAI;IAAW,GAAI;GAAO,CAAA,CAChC,EAAA,GAHK,KAAK,EAGV;EAEd,CAAC;CACE,CAAA;AAET,CACF"}
1
+ {"version":3,"file":"ChatList.mjs","names":[],"sources":["../../../src/chat/ChatList/ChatList.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { Fragment, memo } from 'react';\n\nimport ChatListItem from './components/ChatListItem';\nimport HistoryDivider from './components/HistoryDivider';\nimport { styles } from './style';\nimport type { ChatListProps } from './type';\n\nconst ChatList = memo<ChatListProps>(\n ({\n onActionsClick,\n onAvatarsClick,\n renderMessagesExtra,\n className,\n data,\n variant = 'bubble',\n text,\n showTitle,\n onMessageChange,\n renderMessages,\n renderErrorMessages,\n loadingId,\n renderItems,\n enableHistoryCount,\n renderActions,\n historyCount = 0,\n showAvatar,\n ...rest\n }) => {\n return (\n <div className={cx(styles.container, className)} {...rest}>\n {data.map((item, index) => {\n const itemProps = {\n loading: loadingId === item.id,\n onActionsClick,\n onAvatarsClick,\n onMessageChange,\n renderActions,\n renderErrorMessages,\n renderItems,\n renderMessages,\n renderMessagesExtra,\n showAvatar,\n showTitle,\n text,\n variant,\n };\n\n const historyLength = data.length;\n const enableHistoryDivider =\n enableHistoryCount &&\n historyLength > historyCount &&\n historyCount === historyLength - index + 1;\n\n return (\n <Fragment key={item.id}>\n <HistoryDivider enable={enableHistoryDivider} text={text?.history} />\n <ChatListItem {...itemProps} {...item} />\n </Fragment>\n );\n })}\n </div>\n );\n },\n);\n\nexport default ChatList;\n"],"mappings":";;;;;;;;AAUA,MAAM,WAAW,MACd,EACC,gBACA,gBACA,qBACA,WACA,MACA,UAAU,UACV,MACA,WACA,iBACA,gBACA,qBACA,WACA,aACA,oBACA,eACA,eAAe,GACf,YACA,GAAG,WACC;CACJ,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,OAAO,WAAW,SAAS;EAAG,GAAI;EAClD,UAAA,KAAK,KAAK,MAAM,UAAU;GACzB,MAAM,YAAY;IAChB,SAAS,cAAc,KAAK;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GAEA,MAAM,gBAAgB,KAAK;GAC3B,MAAM,uBACJ,sBACA,gBAAgB,gBAChB,iBAAiB,gBAAgB,QAAQ;GAE3C,OACE,qBAAC,UAAD,EAAA,UAAA,CACE,oBAAC,gBAAD;IAAgB,QAAQ;IAAsB,MAAM,MAAM;GAAU,CAAA,GACpE,oBAAC,cAAD;IAAc,GAAI;IAAW,GAAI;GAAO,CAAA,CAChC,EAAA,GAHK,KAAK,EAGV;EAEd,CAAC;CACE,CAAA;AAET,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryDivider.mjs","names":["Tag"],"sources":["../../../../src/chat/ChatList/components/HistoryDivider.tsx"],"sourcesContent":["import { Divider } from 'antd';\nimport { Timer } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport Icon from '@/Icon';\nimport Tag from '@/Tag';\n\ninterface HistoryDividerProps {\n enable?: boolean;\n text?: string;\n}\n\nconst HistoryDivider: FC<HistoryDividerProps> = ({ enable, text }) => {\n if (!enable) return null;\n\n return (\n <div style={{ padding: '0 20px' }}>\n <Divider>\n <Tag icon={<Icon icon={Timer} />}>{text || 'History Message'}</Tag>\n </Divider>\n </div>\n );\n};\n\nexport default HistoryDivider;\n"],"mappings":";;;;;;AAYA,MAAM,kBAA2C,EAAE,QAAQ,WAAW;CACpE,IAAI,CAAC,QAAQ,OAAO;CAEpB,OACE,oBAAC,OAAD;EAAK,OAAO,EAAE,SAAS,SAAS;YAC9B,oBAAC,SAAD,EAAA,UACE,oBAACA,OAAD;GAAK,MAAM,oBAAC,MAAD,EAAM,MAAM,MAAQ,CAAA;aAAI,QAAQ;EAAuB,CAAA,EAC3D,CAAA;CACN,CAAA;AAET"}
1
+ {"version":3,"file":"HistoryDivider.mjs","names":["Tag"],"sources":["../../../../src/chat/ChatList/components/HistoryDivider.tsx"],"sourcesContent":["import { Divider } from 'antd';\nimport { Timer } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport Icon from '@/Icon';\nimport Tag from '@/Tag';\n\ninterface HistoryDividerProps {\n enable?: boolean;\n text?: string;\n}\n\nconst HistoryDivider: FC<HistoryDividerProps> = ({ enable, text }) => {\n if (!enable) return null;\n\n return (\n <div style={{ padding: '0 20px' }}>\n <Divider>\n <Tag icon={<Icon icon={Timer} />}>{text || 'History Message'}</Tag>\n </Divider>\n </div>\n );\n};\n\nexport default HistoryDivider;\n"],"mappings":";;;;;;AAYA,MAAM,kBAA2C,EAAE,QAAQ,WAAW;CACpE,IAAI,CAAC,QAAQ,OAAO;CAEpB,OACE,oBAAC,OAAD;EAAK,OAAO,EAAE,SAAS,SAAS;EAC9B,UAAA,oBAAC,SAAD,EAAA,UACE,oBAACA,OAAD;GAAK,MAAM,oBAAC,MAAD,EAAM,MAAM,MAAQ,CAAA;GAAI,UAAA,QAAQ;EAAuB,CAAA,EAC3D,CAAA;CACN,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditableMessage.mjs","names":["useControlledState"],"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,CAAC,GACd,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;CACT,CAAC;CAED,MAAM,CAAC,QAAQ,aAAaA,cAA4B,OAAO;EAC7D,UAAU;EACV,OAAO;CACT,CAAC;CAED,MAAM,aAAa,WAAW;CAE9B,MAAM,QACJ,oBAAC,cAAD;EACE,UAAA;EACA,WAAW,GAAG,WAAW,YAAY,KAAK;EAC9B;EACZ,cAAc;EACE;EACR;EACE;EACG;EACb,QAAQ;EACF;EACG;EACT,OAAO;GACL,GAAG;GACH,GAAG,cAAc;EACnB;EACA,gBAAgB,UAAU,KAAK;EAC/B,YAAY,SAAS;GACnB,WAAW,IAAI;GACf,UAAU,KAAK;EACjB;CACD,CAAA;CAGH,IAAI,CAAC,SAAS,mBAAmB,OAAO;CAExC,OACE,qBAAA,YAAA,EAAA,UAAA,CACG,CAAC,UAAU,SACV,QAEA,oBAAC,UAAD;EACE,WAAW,GAAG,WAAW,YAAY,QAAQ;EACnC;EACa;EACvB,SAAS;EACT,OAAO;GACL,QAAQ,aAAa,UAAU;GAC/B,GAAG;GACH,GAAG,cAAc;EACnB;EACA,GAAI;YAEH,SAAS,eAAe;CACjB,CAAA,GAEX,UACC,oBAAC,cAAD;EACE,SAAS;EACT,OAAO,OAAO;EACd,QAAQ,OAAO;EACP;EACE;EACV,MAAM;EACO;EACP;EACC;EACG;EACV,iBAAiB;EACjB,eAAe,MAAM;GACnB,UAAU,CAAC;GACX,UAAU,KAAK;EACjB;CACD,CAAA,CAEH,EAAA,CAAA;AAEN,CACF;AAEA,gBAAgB,cAAc"}
1
+ {"version":3,"file":"EditableMessage.mjs","names":["useControlledState"],"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,CAAC,GACd,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;CACT,CAAC;CAED,MAAM,CAAC,QAAQ,aAAaA,cAA4B,OAAO;EAC7D,UAAU;EACV,OAAO;CACT,CAAC;CAED,MAAM,aAAa,WAAW;CAE9B,MAAM,QACJ,oBAAC,cAAD;EACE,UAAA;EACA,WAAW,GAAG,WAAW,YAAY,KAAK;EAC9B;EACZ,cAAc;EACE;EACR;EACE;EACG;EACb,QAAQ;EACF;EACG;EACT,OAAO;GACL,GAAG;GACH,GAAG,cAAc;EACnB;EACA,gBAAgB,UAAU,KAAK;EAC/B,YAAY,SAAS;GACnB,WAAW,IAAI;GACf,UAAU,KAAK;EACjB;CACD,CAAA;CAGH,IAAI,CAAC,SAAS,mBAAmB,OAAO;CAExC,OACE,qBAAA,YAAA,EAAA,UAAA,CACG,CAAC,UAAU,SACV,QAEA,oBAAC,UAAD;EACE,WAAW,GAAG,WAAW,YAAY,QAAQ;EACnC;EACa;EACvB,SAAS;EACT,OAAO;GACL,QAAQ,aAAa,UAAU;GAC/B,GAAG;GACH,GAAG,cAAc;EACnB;EACA,GAAI;EAEH,UAAA,SAAS,eAAe;CACjB,CAAA,GAEX,UACC,oBAAC,cAAD;EACE,SAAS;EACT,OAAO,OAAO;EACd,QAAQ,OAAO;EACP;EACE;EACV,MAAM;EACO;EACP;EACC;EACG;EACV,iBAAiB;EACjB,eAAe,MAAM;GACnB,UAAU,CAAC;GACX,UAAU,KAAK;EACjB;CACD,CAAA,CAEH,EAAA,CAAA;AAEN,CACF;AAEA,gBAAgB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditableMessageList.mjs","names":["editableMessageMessages","Flexbox"],"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,WAAW;CACxE,MAAM,EAAE,MAAM,eAAeA,uBAAuB;CAEpD,MAAM,eAAe,OAAO,YAAY,EAAE,0BAA0B;CACpE,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAC9D,MAAM,uBAAuB,OAAO,oBAAoB,EAAE,kCAAkC;CAC5F,MAAM,wBACJ,OAAO,qBAAqB,EAAE,mCAAmC;CACnE,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAC9D,MAAM,YAAY,OAAO,SAAS,EAAE,uBAAuB;CAC3D,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAE9D,gBAAgB;EACd,IAAI,CAAC,QAAQ,aAAa,YAAY,GACpC,WAAW,YAAY;CAE3B,GAAG,CAAC,YAAY,CAAC;CAEjB,OAAO,cACL,qBAACC,mBAAD;EAAS,KAAK;YAAd,CACG,aAAa,KAAK,MAAM,UACvB,qBAACA,mBAAD;GACE,YAAA;GACA,OAAO;GACP,KAAK;GAEL,OAAO;aALT;IAOE,oBAAC,QAAD;KACY;KACV,OAAO,EAAE,OAAO,IAAI;KACpB,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE,EAAE;KAC3C,OAAO,KAAK;KACZ,SAAS;MACP;OAAE,OAAO;OAAY,OAAO;MAAS;MACrC;OAAE,OAAO;OAAW,OAAO;MAAO;MAClC;OAAE,OAAO;OAAY,OAAO;MAAY;KAC1C;KACA,WAAW,UAAU;MACnB,SAAS;OAAE;OAAO,MAAM;OAAO,MAAM;MAAoB,CAAC;KAC5D;IACD,CAAA;IACD,oBAAC,cAAD;KACY;KACV,aAAa,KAAK,SAAS,SAAS,uBAAuB;KAC3D,OAAO,KAAK;KACZ,WAAW,MAAM;MACf,SAAS;OAAE;OAAO,SAAS;OAAG,MAAM;MAAgB,CAAC;KACvD;IACD,CAAA;IACD,oBAAC,YAAD;KACE,MAAM;KACN,OAAO;KACP,SAAS;KACT,eAAe;MACb,SAAS;OAAE;OAAO,MAAM;MAAgB,CAAC;KAC3C;IACD,CAAA;GACM;KAjCF,GAAG,MAAM,GAAG,KAAK,SAiCf,CACV,GAED,oBAAC,QAAD;GACE,OAAA;GACU;GACV,MAAM;GACN,eAAe;IACb,MAAM,UAAU,aAAa,GAAG,EAAE;IAElC,SAAS;KACP,SAAS;MAAE,SAAS;MAAI,MAAM,SAAS,SAAS,SAAS,cAAc;KAAO;KAC9E,MAAM;IACR,CAAC;GACH;aAEC;EACK,CAAA,CACD;MACP,KAAA;AACN,GACA,OACF;AAEA,oBAAoB,cAAc"}
1
+ {"version":3,"file":"EditableMessageList.mjs","names":["editableMessageMessages","Flexbox"],"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,WAAW;CACxE,MAAM,EAAE,MAAM,eAAeA,uBAAuB;CAEpD,MAAM,eAAe,OAAO,YAAY,EAAE,0BAA0B;CACpE,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAC9D,MAAM,uBAAuB,OAAO,oBAAoB,EAAE,kCAAkC;CAC5F,MAAM,wBACJ,OAAO,qBAAqB,EAAE,mCAAmC;CACnE,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAC9D,MAAM,YAAY,OAAO,SAAS,EAAE,uBAAuB;CAC3D,MAAM,aAAa,OAAO,UAAU,EAAE,wBAAwB;CAE9D,gBAAgB;EACd,IAAI,CAAC,QAAQ,aAAa,YAAY,GACpC,WAAW,YAAY;CAE3B,GAAG,CAAC,YAAY,CAAC;CAEjB,OAAO,cACL,qBAACC,mBAAD;EAAS,KAAK;EAAd,UAAA,CACG,aAAa,KAAK,MAAM,UACvB,qBAACA,mBAAD;GACE,YAAA;GACA,OAAO;GACP,KAAK;GAEL,OAAO;GALT,UAAA;IAOE,oBAAC,QAAD;KACY;KACV,OAAO,EAAE,OAAO,IAAI;KACpB,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE,EAAE;KAC3C,OAAO,KAAK;KACZ,SAAS;MACP;OAAE,OAAO;OAAY,OAAO;MAAS;MACrC;OAAE,OAAO;OAAW,OAAO;MAAO;MAClC;OAAE,OAAO;OAAY,OAAO;MAAY;KAC1C;KACA,WAAW,UAAU;MACnB,SAAS;OAAE;OAAO,MAAM;OAAO,MAAM;MAAoB,CAAC;KAC5D;IACD,CAAA;IACD,oBAAC,cAAD;KACY;KACV,aAAa,KAAK,SAAS,SAAS,uBAAuB;KAC3D,OAAO,KAAK;KACZ,WAAW,MAAM;MACf,SAAS;OAAE;OAAO,SAAS;OAAG,MAAM;MAAgB,CAAC;KACvD;IACD,CAAA;IACD,oBAAC,YAAD;KACE,MAAM;KACN,OAAO;KACP,SAAS;KACT,eAAe;MACb,SAAS;OAAE;OAAO,MAAM;MAAgB,CAAC;KAC3C;IACD,CAAA;GACM;EAjCF,GAAA,GAAG,MAAM,GAAG,KAAK,SAiCf,CACV,GAED,oBAAC,QAAD;GACE,OAAA;GACU;GACV,MAAM;GACN,eAAe;IACb,MAAM,UAAU,aAAa,GAAG,EAAE;IAElC,SAAS;KACP,SAAS;MAAE,SAAS;MAAI,MAAM,SAAS,SAAS,SAAS,cAAc;KAAO;KAC9E,MAAM;IACR,CAAC;GACH;GAEC,UAAA;EACK,CAAA,CACD;CACP,CAAA,IAAA,KAAA;AACN,GACA,OACF;AAEA,oBAAoB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingDots.mjs","names":[],"sources":["../../../src/chat/LoadingDots/LoadingDots.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport { styles } from './style';\nimport type { LoadingDotsProps } from './type';\n\nconst LoadingDots: FC<LoadingDotsProps> = ({\n size = 8,\n color,\n variant = 'dots',\n className,\n style,\n}) => {\n // Convert props to CSS variables\n const cssVariables = useMemo<Record<string, string>>(() => {\n const vars: Record<string, string> = {\n '--loading-dots-size': `${size}px`,\n };\n if (color) {\n vars['--loading-dots-color'] = color;\n }\n return vars;\n }, [color, size]);\n\n const renderDots = () => {\n switch (variant) {\n case 'pulse': {\n return <div className={styles.pulseDot} style={{ animationDelay: '0s' }} />;\n }\n\n case 'wave': {\n return (\n <>\n <div className={styles.waveDot} style={{ animationDelay: '0s' }} />\n <div className={styles.waveDot} style={{ animationDelay: '0.12s' }} />\n <div className={styles.waveDot} style={{ animationDelay: '0.24s' }} />\n </>\n );\n }\n\n case 'orbit': {\n return (\n <div className={styles.orbitContainer}>\n <div className={styles.orbitDot} style={{ animationDelay: '0s' }} />\n <div className={styles.orbitDot} style={{ animationDelay: '-0.4s' }} />\n <div className={styles.orbitDot} style={{ animationDelay: '-0.8s' }} />\n </div>\n );\n }\n\n case 'typing': {\n return (\n <>\n <div className={styles.typingDot} style={{ animationDelay: '0s' }} />\n <div className={styles.typingDot} style={{ animationDelay: '0.15s' }} />\n <div className={styles.typingDot} style={{ animationDelay: '0.3s' }} />\n </>\n );\n }\n\n default: {\n return (\n <>\n <div className={styles.defaultDot} style={{ animationDelay: '0s' }} />\n <div className={styles.defaultDot} style={{ animationDelay: '0.15s' }} />\n <div className={styles.defaultDot} style={{ animationDelay: '0.3s' }} />\n </>\n );\n }\n }\n };\n\n return (\n <div\n className={cx(variant === 'orbit' ? styles.orbitWrapper : styles.container, className)}\n style={{\n ...cssVariables,\n ...style,\n }}\n >\n {renderDots()}\n </div>\n );\n};\n\nLoadingDots.displayName = 'LoadingDots';\n\nexport default LoadingDots;\n"],"mappings":";;;;;;AAQA,MAAM,eAAqC,EACzC,OAAO,GACP,OACA,UAAU,QACV,WACA,YACI;CAEJ,MAAM,eAAe,cAAsC;EACzD,MAAM,OAA+B,EACnC,uBAAuB,GAAG,KAAK,IACjC;EACA,IAAI,OACF,KAAK,0BAA0B;EAEjC,OAAO;CACT,GAAG,CAAC,OAAO,IAAI,CAAC;CAEhB,MAAM,mBAAmB;EACvB,QAAQ,SAAR;GACE,KAAK,SACH,OAAO,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAU,OAAO,EAAE,gBAAgB,KAAK;GAAI,CAAA;GAG5E,KAAK,QACH,OACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAS,OAAO,EAAE,gBAAgB,KAAK;IAAI,CAAA;IAClE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAS,OAAO,EAAE,gBAAgB,QAAQ;IAAI,CAAA;IACrE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAS,OAAO,EAAE,gBAAgB,QAAQ;IAAI,CAAA;GACrE,EAAA,CAAA;GAIN,KAAK,SACH,OACE,qBAAC,OAAD;IAAK,WAAW,OAAO;cAAvB;KACE,oBAAC,OAAD;MAAK,WAAW,OAAO;MAAU,OAAO,EAAE,gBAAgB,KAAK;KAAI,CAAA;KACnE,oBAAC,OAAD;MAAK,WAAW,OAAO;MAAU,OAAO,EAAE,gBAAgB,QAAQ;KAAI,CAAA;KACtE,oBAAC,OAAD;MAAK,WAAW,OAAO;MAAU,OAAO,EAAE,gBAAgB,QAAQ;KAAI,CAAA;IACnE;;GAIT,KAAK,UACH,OACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAW,OAAO,EAAE,gBAAgB,KAAK;IAAI,CAAA;IACpE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAW,OAAO,EAAE,gBAAgB,QAAQ;IAAI,CAAA;IACvE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAW,OAAO,EAAE,gBAAgB,OAAO;IAAI,CAAA;GACtE,EAAA,CAAA;GAIN,SACE,OACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAY,OAAO,EAAE,gBAAgB,KAAK;IAAI,CAAA;IACrE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAY,OAAO,EAAE,gBAAgB,QAAQ;IAAI,CAAA;IACxE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAY,OAAO,EAAE,gBAAgB,OAAO;IAAI,CAAA;GACvE,EAAA,CAAA;EAGR;CACF;CAEA,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,YAAY,UAAU,OAAO,eAAe,OAAO,WAAW,SAAS;EACrF,OAAO;GACL,GAAG;GACH,GAAG;EACL;YAEC,WAAW;CACT,CAAA;AAET;AAEA,YAAY,cAAc"}
1
+ {"version":3,"file":"LoadingDots.mjs","names":[],"sources":["../../../src/chat/LoadingDots/LoadingDots.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport { styles } from './style';\nimport type { LoadingDotsProps } from './type';\n\nconst LoadingDots: FC<LoadingDotsProps> = ({\n size = 8,\n color,\n variant = 'dots',\n className,\n style,\n}) => {\n // Convert props to CSS variables\n const cssVariables = useMemo<Record<string, string>>(() => {\n const vars: Record<string, string> = {\n '--loading-dots-size': `${size}px`,\n };\n if (color) {\n vars['--loading-dots-color'] = color;\n }\n return vars;\n }, [color, size]);\n\n const renderDots = () => {\n switch (variant) {\n case 'pulse': {\n return <div className={styles.pulseDot} style={{ animationDelay: '0s' }} />;\n }\n\n case 'wave': {\n return (\n <>\n <div className={styles.waveDot} style={{ animationDelay: '0s' }} />\n <div className={styles.waveDot} style={{ animationDelay: '0.12s' }} />\n <div className={styles.waveDot} style={{ animationDelay: '0.24s' }} />\n </>\n );\n }\n\n case 'orbit': {\n return (\n <div className={styles.orbitContainer}>\n <div className={styles.orbitDot} style={{ animationDelay: '0s' }} />\n <div className={styles.orbitDot} style={{ animationDelay: '-0.4s' }} />\n <div className={styles.orbitDot} style={{ animationDelay: '-0.8s' }} />\n </div>\n );\n }\n\n case 'typing': {\n return (\n <>\n <div className={styles.typingDot} style={{ animationDelay: '0s' }} />\n <div className={styles.typingDot} style={{ animationDelay: '0.15s' }} />\n <div className={styles.typingDot} style={{ animationDelay: '0.3s' }} />\n </>\n );\n }\n\n default: {\n return (\n <>\n <div className={styles.defaultDot} style={{ animationDelay: '0s' }} />\n <div className={styles.defaultDot} style={{ animationDelay: '0.15s' }} />\n <div className={styles.defaultDot} style={{ animationDelay: '0.3s' }} />\n </>\n );\n }\n }\n };\n\n return (\n <div\n className={cx(variant === 'orbit' ? styles.orbitWrapper : styles.container, className)}\n style={{\n ...cssVariables,\n ...style,\n }}\n >\n {renderDots()}\n </div>\n );\n};\n\nLoadingDots.displayName = 'LoadingDots';\n\nexport default LoadingDots;\n"],"mappings":";;;;;;AAQA,MAAM,eAAqC,EACzC,OAAO,GACP,OACA,UAAU,QACV,WACA,YACI;CAEJ,MAAM,eAAe,cAAsC;EACzD,MAAM,OAA+B,EACnC,uBAAuB,GAAG,KAAK,IACjC;EACA,IAAI,OACF,KAAK,0BAA0B;EAEjC,OAAO;CACT,GAAG,CAAC,OAAO,IAAI,CAAC;CAEhB,MAAM,mBAAmB;EACvB,QAAQ,SAAR;GACE,KAAK,SACH,OAAO,oBAAC,OAAD;IAAK,WAAW,OAAO;IAAU,OAAO,EAAE,gBAAgB,KAAK;GAAI,CAAA;GAG5E,KAAK,QACH,OACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAS,OAAO,EAAE,gBAAgB,KAAK;IAAI,CAAA;IAClE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAS,OAAO,EAAE,gBAAgB,QAAQ;IAAI,CAAA;IACrE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAS,OAAO,EAAE,gBAAgB,QAAQ;IAAI,CAAA;GACrE,EAAA,CAAA;GAIN,KAAK,SACH,OACE,qBAAC,OAAD;IAAK,WAAW,OAAO;IAAvB,UAAA;KACE,oBAAC,OAAD;MAAK,WAAW,OAAO;MAAU,OAAO,EAAE,gBAAgB,KAAK;KAAI,CAAA;KACnE,oBAAC,OAAD;MAAK,WAAW,OAAO;MAAU,OAAO,EAAE,gBAAgB,QAAQ;KAAI,CAAA;KACtE,oBAAC,OAAD;MAAK,WAAW,OAAO;MAAU,OAAO,EAAE,gBAAgB,QAAQ;KAAI,CAAA;IACnE;;GAIT,KAAK,UACH,OACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAW,OAAO,EAAE,gBAAgB,KAAK;IAAI,CAAA;IACpE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAW,OAAO,EAAE,gBAAgB,QAAQ;IAAI,CAAA;IACvE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAW,OAAO,EAAE,gBAAgB,OAAO;IAAI,CAAA;GACtE,EAAA,CAAA;GAIN,SACE,OACE,qBAAA,YAAA,EAAA,UAAA;IACE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAY,OAAO,EAAE,gBAAgB,KAAK;IAAI,CAAA;IACrE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAY,OAAO,EAAE,gBAAgB,QAAQ;IAAI,CAAA;IACxE,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAY,OAAO,EAAE,gBAAgB,OAAO;IAAI,CAAA;GACvE,EAAA,CAAA;EAGR;CACF;CAEA,OACE,oBAAC,OAAD;EACE,WAAW,GAAG,YAAY,UAAU,OAAO,eAAe,OAAO,WAAW,SAAS;EACrF,OAAO;GACL,GAAG;GACH,GAAG;EACL;EAEC,UAAA,WAAW;CACT,CAAA;AAET;AAEA,YAAY,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageInput.mjs","names":["Flexbox"],"sources":["../../../src/chat/MessageInput/MessageInput.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo, useState } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport Button from '@/Button';\nimport CodeEditor from '@/CodeEditor';\nimport { Flexbox } from '@/Flex';\nimport { KeyMapEnum } from '@/Hotkey/const';\nimport { combineKeys } from '@/Hotkey/utils';\nimport TextArea from '@/Input/TextArea';\nimport Tooltip from '@/Tooltip';\n\nimport { styles } from './style';\nimport type { MessageInputProps } from './type';\n\nconst MessageInput = memo<MessageInputProps>(\n ({\n text,\n variant = 'borderless',\n onCancel,\n defaultValue,\n onConfirm,\n renderButtons,\n placeholder,\n styles: customStyles,\n style,\n editButtonSize = 'middle',\n classNames,\n shortcut,\n language = 'markdown',\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const [temporaryValue, setValue] = useState<string>(defaultValue || '');\n const confirmHotkey = combineKeys([KeyMapEnum.Mod, KeyMapEnum.Enter]);\n const confirmText = text?.confirm || 'Confirm';\n const cancelHotkey = combineKeys([KeyMapEnum.Esc]);\n const cancelText = text?.cancel || 'Cancel';\n\n const handleConfirm = () => onConfirm?.(temporaryValue);\n const handleCancel = () => onCancel?.();\n\n useHotkeys(confirmHotkey, handleConfirm, {\n enableOnFormTags: true,\n enabled: shortcut,\n preventDefault: true,\n });\n\n const confirmButton = (\n <Button size={editButtonSize} type=\"primary\" onClick={handleConfirm}>\n {confirmText}\n </Button>\n );\n\n const cancllButton = (\n <Button size={editButtonSize} variant={'filled'} onClick={handleCancel}>\n {text?.cancel || 'Cancel'}\n </Button>\n );\n\n return (\n <Flexbox gap={16} style={{ flex: 1, width: '100%', ...style }} {...rest}>\n {mobile ? (\n <TextArea\n autoSize\n className={cx(styles, classNames?.editor)}\n placeholder={placeholder}\n style={customStyles?.editor}\n value={temporaryValue}\n variant={variant}\n onBlur={(e) => setValue(e.target.value)}\n onChange={(e) => setValue(e.target.value)}\n />\n ) : (\n <CodeEditor\n className={cx(styles, classNames?.editor)}\n classNames={classNames}\n language={language}\n placeholder={placeholder}\n style={customStyles?.editor}\n styles={customStyles}\n value={temporaryValue}\n variant={variant}\n onBlur={(e) => setValue(e.target.value)}\n onValueChange={(e) => setValue(e)}\n />\n )}\n <Flexbox direction={'horizontal-reverse'} gap={8}>\n {renderButtons ? (\n renderButtons(temporaryValue).map((buttonProps, index) => (\n <Button key={index} size={editButtonSize} {...buttonProps} />\n ))\n ) : (\n <>\n {shortcut ? (\n <Tooltip hotkey={confirmHotkey} title={confirmText}>\n {confirmButton}\n </Tooltip>\n ) : (\n confirmButton\n )}\n {shortcut ? (\n <Tooltip hotkey={cancelHotkey} title={cancelText}>\n {cancllButton}\n </Tooltip>\n ) : (\n cancllButton\n )}\n </>\n )}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default MessageInput;\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,eAAe,MAClB,EACC,MACA,UAAU,cACV,UACA,cACA,WACA,eACA,aACA,QAAQ,cACR,OACA,iBAAiB,UACjB,YACA,UACA,WAAW,YACX,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,CAAC,gBAAgB,YAAY,SAAiB,gBAAgB,EAAE;CACtE,MAAM,gBAAgB,YAAY,CAAC,WAAW,KAAK,WAAW,KAAK,CAAC;CACpE,MAAM,cAAc,MAAM,WAAW;CACrC,MAAM,eAAe,YAAY,CAAC,WAAW,GAAG,CAAC;CACjD,MAAM,aAAa,MAAM,UAAU;CAEnC,MAAM,sBAAsB,YAAY,cAAc;CACtD,MAAM,qBAAqB,WAAW;CAEtC,WAAW,eAAe,eAAe;EACvC,kBAAkB;EAClB,SAAS;EACT,gBAAgB;CAClB,CAAC;CAED,MAAM,gBACJ,oBAAC,QAAD;EAAQ,MAAM;EAAgB,MAAK;EAAU,SAAS;YACnD;CACK,CAAA;CAGV,MAAM,eACJ,oBAAC,QAAD;EAAQ,MAAM;EAAgB,SAAS;EAAU,SAAS;YACvD,MAAM,UAAU;CACX,CAAA;CAGV,OACE,qBAACA,mBAAD;EAAS,KAAK;EAAI,OAAO;GAAE,MAAM;GAAG,OAAO;GAAQ,GAAG;EAAM;EAAG,GAAI;YAAnE,CACG,SACC,oBAAC,UAAD;GACE,UAAA;GACA,WAAW,GAAG,QAAQ,YAAY,MAAM;GAC3B;GACb,OAAO,cAAc;GACrB,OAAO;GACE;GACT,SAAS,MAAM,SAAS,EAAE,OAAO,KAAK;GACtC,WAAW,MAAM,SAAS,EAAE,OAAO,KAAK;EACzC,CAAA,IAED,oBAAC,YAAD;GACE,WAAW,GAAG,QAAQ,YAAY,MAAM;GAC5B;GACF;GACG;GACb,OAAO,cAAc;GACrB,QAAQ;GACR,OAAO;GACE;GACT,SAAS,MAAM,SAAS,EAAE,OAAO,KAAK;GACtC,gBAAgB,MAAM,SAAS,CAAC;EACjC,CAAA,GAEH,oBAACA,mBAAD;GAAS,WAAW;GAAsB,KAAK;aAC5C,gBACC,cAAc,cAAc,CAAC,CAAC,KAAK,aAAa,UAC9C,oBAAC,QAAD;IAAoB,MAAM;IAAgB,GAAI;GAAc,GAA/C,KAA+C,CAC7D,IAED,qBAAA,YAAA,EAAA,UAAA,CACG,WACC,oBAAC,SAAD;IAAS,QAAQ;IAAe,OAAO;cACpC;GACM,CAAA,IAET,eAED,WACC,oBAAC,SAAD;IAAS,QAAQ;IAAc,OAAO;cACnC;GACM,CAAA,IAET,YAEF,EAAA,CAAA;EAEG,CAAA,CACF;;AAEb,CACF"}
1
+ {"version":3,"file":"MessageInput.mjs","names":["Flexbox"],"sources":["../../../src/chat/MessageInput/MessageInput.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo, useState } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport Button from '@/Button';\nimport CodeEditor from '@/CodeEditor';\nimport { Flexbox } from '@/Flex';\nimport { KeyMapEnum } from '@/Hotkey/const';\nimport { combineKeys } from '@/Hotkey/utils';\nimport TextArea from '@/Input/TextArea';\nimport Tooltip from '@/Tooltip';\n\nimport { styles } from './style';\nimport type { MessageInputProps } from './type';\n\nconst MessageInput = memo<MessageInputProps>(\n ({\n text,\n variant = 'borderless',\n onCancel,\n defaultValue,\n onConfirm,\n renderButtons,\n placeholder,\n styles: customStyles,\n style,\n editButtonSize = 'middle',\n classNames,\n shortcut,\n language = 'markdown',\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const [temporaryValue, setValue] = useState<string>(defaultValue || '');\n const confirmHotkey = combineKeys([KeyMapEnum.Mod, KeyMapEnum.Enter]);\n const confirmText = text?.confirm || 'Confirm';\n const cancelHotkey = combineKeys([KeyMapEnum.Esc]);\n const cancelText = text?.cancel || 'Cancel';\n\n const handleConfirm = () => onConfirm?.(temporaryValue);\n const handleCancel = () => onCancel?.();\n\n useHotkeys(confirmHotkey, handleConfirm, {\n enableOnFormTags: true,\n enabled: shortcut,\n preventDefault: true,\n });\n\n const confirmButton = (\n <Button size={editButtonSize} type=\"primary\" onClick={handleConfirm}>\n {confirmText}\n </Button>\n );\n\n const cancllButton = (\n <Button size={editButtonSize} variant={'filled'} onClick={handleCancel}>\n {text?.cancel || 'Cancel'}\n </Button>\n );\n\n return (\n <Flexbox gap={16} style={{ flex: 1, width: '100%', ...style }} {...rest}>\n {mobile ? (\n <TextArea\n autoSize\n className={cx(styles, classNames?.editor)}\n placeholder={placeholder}\n style={customStyles?.editor}\n value={temporaryValue}\n variant={variant}\n onBlur={(e) => setValue(e.target.value)}\n onChange={(e) => setValue(e.target.value)}\n />\n ) : (\n <CodeEditor\n className={cx(styles, classNames?.editor)}\n classNames={classNames}\n language={language}\n placeholder={placeholder}\n style={customStyles?.editor}\n styles={customStyles}\n value={temporaryValue}\n variant={variant}\n onBlur={(e) => setValue(e.target.value)}\n onValueChange={(e) => setValue(e)}\n />\n )}\n <Flexbox direction={'horizontal-reverse'} gap={8}>\n {renderButtons ? (\n renderButtons(temporaryValue).map((buttonProps, index) => (\n <Button key={index} size={editButtonSize} {...buttonProps} />\n ))\n ) : (\n <>\n {shortcut ? (\n <Tooltip hotkey={confirmHotkey} title={confirmText}>\n {confirmButton}\n </Tooltip>\n ) : (\n confirmButton\n )}\n {shortcut ? (\n <Tooltip hotkey={cancelHotkey} title={cancelText}>\n {cancllButton}\n </Tooltip>\n ) : (\n cancllButton\n )}\n </>\n )}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default MessageInput;\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,eAAe,MAClB,EACC,MACA,UAAU,cACV,UACA,cACA,WACA,eACA,aACA,QAAQ,cACR,OACA,iBAAiB,UACjB,YACA,UACA,WAAW,YACX,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,CAAC,gBAAgB,YAAY,SAAiB,gBAAgB,EAAE;CACtE,MAAM,gBAAgB,YAAY,CAAC,WAAW,KAAK,WAAW,KAAK,CAAC;CACpE,MAAM,cAAc,MAAM,WAAW;CACrC,MAAM,eAAe,YAAY,CAAC,WAAW,GAAG,CAAC;CACjD,MAAM,aAAa,MAAM,UAAU;CAEnC,MAAM,sBAAsB,YAAY,cAAc;CACtD,MAAM,qBAAqB,WAAW;CAEtC,WAAW,eAAe,eAAe;EACvC,kBAAkB;EAClB,SAAS;EACT,gBAAgB;CAClB,CAAC;CAED,MAAM,gBACJ,oBAAC,QAAD;EAAQ,MAAM;EAAgB,MAAK;EAAU,SAAS;EACnD,UAAA;CACK,CAAA;CAGV,MAAM,eACJ,oBAAC,QAAD;EAAQ,MAAM;EAAgB,SAAS;EAAU,SAAS;EACvD,UAAA,MAAM,UAAU;CACX,CAAA;CAGV,OACE,qBAACA,mBAAD;EAAS,KAAK;EAAI,OAAO;GAAE,MAAM;GAAG,OAAO;GAAQ,GAAG;EAAM;EAAG,GAAI;EAAnE,UAAA,CACG,SACC,oBAAC,UAAD;GACE,UAAA;GACA,WAAW,GAAG,QAAQ,YAAY,MAAM;GAC3B;GACb,OAAO,cAAc;GACrB,OAAO;GACE;GACT,SAAS,MAAM,SAAS,EAAE,OAAO,KAAK;GACtC,WAAW,MAAM,SAAS,EAAE,OAAO,KAAK;EACzC,CAAA,IAED,oBAAC,YAAD;GACE,WAAW,GAAG,QAAQ,YAAY,MAAM;GAC5B;GACF;GACG;GACb,OAAO,cAAc;GACrB,QAAQ;GACR,OAAO;GACE;GACT,SAAS,MAAM,SAAS,EAAE,OAAO,KAAK;GACtC,gBAAgB,MAAM,SAAS,CAAC;EACjC,CAAA,GAEH,oBAACA,mBAAD;GAAS,WAAW;GAAsB,KAAK;GAC5C,UAAA,gBACC,cAAc,cAAc,CAAC,CAAC,KAAK,aAAa,UAC9C,oBAAC,QAAD;IAAoB,MAAM;IAAgB,GAAI;GAAc,GAA/C,KAA+C,CAC7D,IAED,qBAAA,YAAA,EAAA,UAAA,CACG,WACC,oBAAC,SAAD;IAAS,QAAQ;IAAe,OAAO;IACpC,UAAA;GACM,CAAA,IAET,eAED,WACC,oBAAC,SAAD;IAAS,QAAQ;IAAc,OAAO;IACnC,UAAA;GACM,CAAA,IAET,YAEF,EAAA,CAAA;EAEG,CAAA,CACF;;AAEb,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageModal.mjs","names":["messageModalMessages","useControlledState","Flexbox","textStyles"],"sources":["../../../src/chat/MessageModal/MessageModal.tsx"],"sourcesContent":["'use client';\n\nimport { useResponsive } from 'antd-style';\nimport { memo, useState } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport Button from '@/Button';\nimport { styles as textStyles } from '@/chat/MessageInput/style';\nimport CodeEditor from '@/CodeEditor';\nimport { Flexbox } from '@/Flex';\nimport messageModalMessages from '@/i18n/resources/en/messageModal';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport TextArea from '@/Input/TextArea';\nimport Markdown from '@/Markdown';\nimport Modal from '@/Modal';\n\nimport { type MessageModalProps } from './type';\n\nconst MessageModal = memo<MessageModalProps>(\n ({\n panelRef,\n editing,\n open,\n height = '75vh',\n onOpenChange,\n onEditingChange,\n placeholder,\n value,\n language = 'markdown',\n onChange,\n text,\n footer,\n extra,\n }) => {\n const { mobile } = useResponsive();\n const { t } = useTranslation(messageModalMessages);\n const [isEdit, setTyping] = useControlledState(false, {\n onChange: onEditingChange,\n value: editing,\n });\n\n const [showModal, setShowModal] = useControlledState(false, {\n onChange: onOpenChange,\n value: open,\n });\n\n const [temporaryValue, setMessage] = useState(value);\n\n const confirmText = text?.confirm ?? t('messageModal.confirm');\n const cancelText = text?.cancel ?? t('messageModal.cancel');\n const editText = text?.edit ?? t('messageModal.edit');\n\n const modalFooter = isEdit ? (\n <Flexbox direction={'horizontal-reverse'} gap={8}>\n <Button\n type=\"primary\"\n onClick={() => {\n setTyping(false);\n onChange?.(temporaryValue);\n setMessage(value);\n }}\n >\n {confirmText}\n </Button>\n <Button\n onClick={() => {\n setTyping(false);\n setMessage(value);\n }}\n >\n {cancelText}\n </Button>\n </Flexbox>\n ) : (\n footer\n );\n\n return (\n <Modal\n allowFullscreen\n destroyOnHidden\n cancelText={cancelText}\n footer={modalFooter}\n height={height}\n okText={editText}\n open={showModal}\n panelRef={panelRef}\n title={text?.title}\n onOk={() => setTyping(true)}\n onCancel={() => {\n setShowModal(false);\n setTyping(false);\n setMessage(value);\n }}\n >\n {isEdit ? (\n mobile ? (\n <TextArea\n autoSize\n className={textStyles}\n defaultValue={temporaryValue}\n placeholder={placeholder}\n value={temporaryValue}\n variant={'borderless'}\n onBlur={(e) => setMessage(e.target.value)}\n onChange={(value) => setMessage(value.target.value)}\n />\n ) : (\n <CodeEditor\n className={textStyles}\n defaultValue={temporaryValue}\n language={language}\n placeholder={placeholder}\n value={temporaryValue}\n variant={'borderless'}\n onBlur={(e) => setMessage(e.target.value)}\n onValueChange={(value) => setMessage(value)}\n />\n )\n ) : (\n <>\n {extra}\n <Markdown variant={'chat'}>{String(value || placeholder)}</Markdown>\n </>\n )}\n </Modal>\n );\n },\n);\n\nMessageModal.displayName = 'MessageModal';\n\nexport default MessageModal;\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,eAAe,MAClB,EACC,UACA,SACA,MACA,SAAS,QACT,cACA,iBACA,aACA,OACA,WAAW,YACX,UACA,MACA,QACA,YACI;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,EAAE,MAAM,eAAeA,oBAAoB;CACjD,MAAM,CAAC,QAAQ,aAAaC,cAAmB,OAAO;EACpD,UAAU;EACV,OAAO;CACT,CAAC;CAED,MAAM,CAAC,WAAW,gBAAgBA,cAAmB,OAAO;EAC1D,UAAU;EACV,OAAO;CACT,CAAC;CAED,MAAM,CAAC,gBAAgB,cAAc,SAAS,KAAK;CAEnD,MAAM,cAAc,MAAM,WAAW,EAAE,sBAAsB;CAC7D,MAAM,aAAa,MAAM,UAAU,EAAE,qBAAqB;CAC1D,MAAM,WAAW,MAAM,QAAQ,EAAE,mBAAmB;CA2BpD,OACE,oBAAC,OAAD;EACE,iBAAA;EACA,iBAAA;EACY;EACZ,QA9BgB,SAClB,qBAACC,mBAAD;GAAS,WAAW;GAAsB,KAAK;aAA/C,CACE,oBAAC,QAAD;IACE,MAAK;IACL,eAAe;KACb,UAAU,KAAK;KACf,WAAW,cAAc;KACzB,WAAW,KAAK;IAClB;cAEC;GACK,CAAA,GACR,oBAAC,QAAD;IACE,eAAe;KACb,UAAU,KAAK;KACf,WAAW,KAAK;IAClB;cAEC;GACK,CAAA,CACD;OAET;EASU;EACR,QAAQ;EACR,MAAM;EACI;EACV,OAAO,MAAM;EACb,YAAY,UAAU,IAAI;EAC1B,gBAAgB;GACd,aAAa,KAAK;GAClB,UAAU,KAAK;GACf,WAAW,KAAK;EAClB;YAEC,SACC,SACE,oBAAC,UAAD;GACE,UAAA;GACA,WAAWC;GACX,cAAc;GACD;GACb,OAAO;GACP,SAAS;GACT,SAAS,MAAM,WAAW,EAAE,OAAO,KAAK;GACxC,WAAW,UAAU,WAAW,MAAM,OAAO,KAAK;EACnD,CAAA,IAED,oBAAC,YAAD;GACE,WAAWA;GACX,cAAc;GACJ;GACG;GACb,OAAO;GACP,SAAS;GACT,SAAS,MAAM,WAAW,EAAE,OAAO,KAAK;GACxC,gBAAgB,UAAU,WAAW,KAAK;EAC3C,CAAA,IAGH,qBAAA,YAAA,EAAA,UAAA,CACG,OACD,oBAAC,UAAD;GAAU,SAAS;aAAS,OAAO,SAAS,WAAW;EAAY,CAAA,CACnE,EAAA,CAAA;CAEC,CAAA;AAEX,CACF;AAEA,aAAa,cAAc"}
1
+ {"version":3,"file":"MessageModal.mjs","names":["messageModalMessages","useControlledState","Flexbox","textStyles"],"sources":["../../../src/chat/MessageModal/MessageModal.tsx"],"sourcesContent":["'use client';\n\nimport { useResponsive } from 'antd-style';\nimport { memo, useState } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport Button from '@/Button';\nimport { styles as textStyles } from '@/chat/MessageInput/style';\nimport CodeEditor from '@/CodeEditor';\nimport { Flexbox } from '@/Flex';\nimport messageModalMessages from '@/i18n/resources/en/messageModal';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport TextArea from '@/Input/TextArea';\nimport Markdown from '@/Markdown';\nimport Modal from '@/Modal';\n\nimport { type MessageModalProps } from './type';\n\nconst MessageModal = memo<MessageModalProps>(\n ({\n panelRef,\n editing,\n open,\n height = '75vh',\n onOpenChange,\n onEditingChange,\n placeholder,\n value,\n language = 'markdown',\n onChange,\n text,\n footer,\n extra,\n }) => {\n const { mobile } = useResponsive();\n const { t } = useTranslation(messageModalMessages);\n const [isEdit, setTyping] = useControlledState(false, {\n onChange: onEditingChange,\n value: editing,\n });\n\n const [showModal, setShowModal] = useControlledState(false, {\n onChange: onOpenChange,\n value: open,\n });\n\n const [temporaryValue, setMessage] = useState(value);\n\n const confirmText = text?.confirm ?? t('messageModal.confirm');\n const cancelText = text?.cancel ?? t('messageModal.cancel');\n const editText = text?.edit ?? t('messageModal.edit');\n\n const modalFooter = isEdit ? (\n <Flexbox direction={'horizontal-reverse'} gap={8}>\n <Button\n type=\"primary\"\n onClick={() => {\n setTyping(false);\n onChange?.(temporaryValue);\n setMessage(value);\n }}\n >\n {confirmText}\n </Button>\n <Button\n onClick={() => {\n setTyping(false);\n setMessage(value);\n }}\n >\n {cancelText}\n </Button>\n </Flexbox>\n ) : (\n footer\n );\n\n return (\n <Modal\n allowFullscreen\n destroyOnHidden\n cancelText={cancelText}\n footer={modalFooter}\n height={height}\n okText={editText}\n open={showModal}\n panelRef={panelRef}\n title={text?.title}\n onOk={() => setTyping(true)}\n onCancel={() => {\n setShowModal(false);\n setTyping(false);\n setMessage(value);\n }}\n >\n {isEdit ? (\n mobile ? (\n <TextArea\n autoSize\n className={textStyles}\n defaultValue={temporaryValue}\n placeholder={placeholder}\n value={temporaryValue}\n variant={'borderless'}\n onBlur={(e) => setMessage(e.target.value)}\n onChange={(value) => setMessage(value.target.value)}\n />\n ) : (\n <CodeEditor\n className={textStyles}\n defaultValue={temporaryValue}\n language={language}\n placeholder={placeholder}\n value={temporaryValue}\n variant={'borderless'}\n onBlur={(e) => setMessage(e.target.value)}\n onValueChange={(value) => setMessage(value)}\n />\n )\n ) : (\n <>\n {extra}\n <Markdown variant={'chat'}>{String(value || placeholder)}</Markdown>\n </>\n )}\n </Modal>\n );\n },\n);\n\nMessageModal.displayName = 'MessageModal';\n\nexport default MessageModal;\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,eAAe,MAClB,EACC,UACA,SACA,MACA,SAAS,QACT,cACA,iBACA,aACA,OACA,WAAW,YACX,UACA,MACA,QACA,YACI;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,EAAE,MAAM,eAAeA,oBAAoB;CACjD,MAAM,CAAC,QAAQ,aAAaC,cAAmB,OAAO;EACpD,UAAU;EACV,OAAO;CACT,CAAC;CAED,MAAM,CAAC,WAAW,gBAAgBA,cAAmB,OAAO;EAC1D,UAAU;EACV,OAAO;CACT,CAAC;CAED,MAAM,CAAC,gBAAgB,cAAc,SAAS,KAAK;CAEnD,MAAM,cAAc,MAAM,WAAW,EAAE,sBAAsB;CAC7D,MAAM,aAAa,MAAM,UAAU,EAAE,qBAAqB;CAC1D,MAAM,WAAW,MAAM,QAAQ,EAAE,mBAAmB;CA2BpD,OACE,oBAAC,OAAD;EACE,iBAAA;EACA,iBAAA;EACY;EACZ,QA9BgB,SAClB,qBAACC,mBAAD;GAAS,WAAW;GAAsB,KAAK;GAA/C,UAAA,CACE,oBAAC,QAAD;IACE,MAAK;IACL,eAAe;KACb,UAAU,KAAK;KACf,WAAW,cAAc;KACzB,WAAW,KAAK;IAClB;IAEC,UAAA;GACK,CAAA,GACR,oBAAC,QAAD;IACE,eAAe;KACb,UAAU,KAAK;KACf,WAAW,KAAK;IAClB;IAEC,UAAA;GACK,CAAA,CACD;EAET,CAAA,IAAA;EASU;EACR,QAAQ;EACR,MAAM;EACI;EACV,OAAO,MAAM;EACb,YAAY,UAAU,IAAI;EAC1B,gBAAgB;GACd,aAAa,KAAK;GAClB,UAAU,KAAK;GACf,WAAW,KAAK;EAClB;EAEC,UAAA,SACC,SACE,oBAAC,UAAD;GACE,UAAA;GACA,WAAWC;GACX,cAAc;GACD;GACb,OAAO;GACP,SAAS;GACT,SAAS,MAAM,WAAW,EAAE,OAAO,KAAK;GACxC,WAAW,UAAU,WAAW,MAAM,OAAO,KAAK;EACnD,CAAA,IAED,oBAAC,YAAD;GACE,WAAWA;GACX,cAAc;GACJ;GACG;GACb,OAAO;GACP,SAAS;GACT,SAAS,MAAM,WAAW,EAAE,OAAO,KAAK;GACxC,gBAAgB,UAAU,WAAW,KAAK;EAC3C,CAAA,IAGH,qBAAA,YAAA,EAAA,UAAA,CACG,OACD,oBAAC,UAAD;GAAU,SAAS;GAAS,UAAA,OAAO,SAAS,WAAW;EAAY,CAAA,CACnE,EAAA,CAAA;CAEC,CAAA;AAEX,CACF;AAEA,aAAa,cAAc"}
@@ -22,8 +22,6 @@ const ScaleRow = memo(({ name, title, scale }) => {
22
22
  backgroundColor: "#000"
23
23
  };
24
24
  isAlpha = true;
25
- break;
26
- default: break;
27
25
  }
28
26
  return /* @__PURE__ */ jsxs(Space, {
29
27
  size: 2,