@liveblocks/react-ui 3.9.1 → 3.9.2-tiptap2

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 (451) hide show
  1. package/dist/components/AiChat.cjs +133 -113
  2. package/dist/components/AiChat.cjs.map +1 -1
  3. package/dist/components/AiChat.js +133 -113
  4. package/dist/components/AiChat.js.map +1 -1
  5. package/dist/components/AiTool.cjs +120 -93
  6. package/dist/components/AiTool.cjs.map +1 -1
  7. package/dist/components/AiTool.js +120 -93
  8. package/dist/components/AiTool.js.map +1 -1
  9. package/dist/components/Comment.cjs +374 -374
  10. package/dist/components/Comment.cjs.map +1 -1
  11. package/dist/components/Comment.js +374 -374
  12. package/dist/components/Comment.js.map +1 -1
  13. package/dist/components/Composer.cjs +208 -259
  14. package/dist/components/Composer.cjs.map +1 -1
  15. package/dist/components/Composer.js +208 -259
  16. package/dist/components/Composer.js.map +1 -1
  17. package/dist/components/HistoryVersionSummary.cjs +28 -25
  18. package/dist/components/HistoryVersionSummary.cjs.map +1 -1
  19. package/dist/components/HistoryVersionSummary.js +28 -25
  20. package/dist/components/HistoryVersionSummary.js.map +1 -1
  21. package/dist/components/HistoryVersionSummaryList.cjs +9 -9
  22. package/dist/components/HistoryVersionSummaryList.cjs.map +1 -1
  23. package/dist/components/HistoryVersionSummaryList.js +9 -9
  24. package/dist/components/HistoryVersionSummaryList.js.map +1 -1
  25. package/dist/components/InboxNotification.cjs +264 -239
  26. package/dist/components/InboxNotification.cjs.map +1 -1
  27. package/dist/components/InboxNotification.js +264 -239
  28. package/dist/components/InboxNotification.js.map +1 -1
  29. package/dist/components/InboxNotificationList.cjs +19 -19
  30. package/dist/components/InboxNotificationList.cjs.map +1 -1
  31. package/dist/components/InboxNotificationList.js +19 -19
  32. package/dist/components/InboxNotificationList.js.map +1 -1
  33. package/dist/components/Thread.cjs +102 -82
  34. package/dist/components/Thread.cjs.map +1 -1
  35. package/dist/components/Thread.js +102 -82
  36. package/dist/components/Thread.js.map +1 -1
  37. package/dist/components/internal/AiChatAssistantMessage.cjs +164 -210
  38. package/dist/components/internal/AiChatAssistantMessage.cjs.map +1 -1
  39. package/dist/components/internal/AiChatAssistantMessage.js +164 -210
  40. package/dist/components/internal/AiChatAssistantMessage.js.map +1 -1
  41. package/dist/components/internal/AiChatUserMessage.cjs +29 -26
  42. package/dist/components/internal/AiChatUserMessage.cjs.map +1 -1
  43. package/dist/components/internal/AiChatUserMessage.js +29 -26
  44. package/dist/components/internal/AiChatUserMessage.js.map +1 -1
  45. package/dist/components/internal/AiComposer.cjs +37 -53
  46. package/dist/components/internal/AiComposer.cjs.map +1 -1
  47. package/dist/components/internal/AiComposer.js +37 -53
  48. package/dist/components/internal/AiComposer.js.map +1 -1
  49. package/dist/components/internal/Attachment.cjs +170 -181
  50. package/dist/components/internal/Attachment.cjs.map +1 -1
  51. package/dist/components/internal/Attachment.js +170 -181
  52. package/dist/components/internal/Attachment.js.map +1 -1
  53. package/dist/components/internal/Attribution.cjs +27 -18
  54. package/dist/components/internal/Attribution.cjs.map +1 -1
  55. package/dist/components/internal/Attribution.js +27 -18
  56. package/dist/components/internal/Attribution.js.map +1 -1
  57. package/dist/components/internal/Avatar.cjs +30 -32
  58. package/dist/components/internal/Avatar.cjs.map +1 -1
  59. package/dist/components/internal/Avatar.js +30 -32
  60. package/dist/components/internal/Avatar.js.map +1 -1
  61. package/dist/components/internal/Button.cjs +34 -47
  62. package/dist/components/internal/Button.cjs.map +1 -1
  63. package/dist/components/internal/Button.js +34 -47
  64. package/dist/components/internal/Button.js.map +1 -1
  65. package/dist/components/internal/CodeBlock.cjs +15 -34
  66. package/dist/components/internal/CodeBlock.cjs.map +1 -1
  67. package/dist/components/internal/CodeBlock.js +15 -34
  68. package/dist/components/internal/CodeBlock.js.map +1 -1
  69. package/dist/components/internal/Dropdown.cjs +37 -37
  70. package/dist/components/internal/Dropdown.cjs.map +1 -1
  71. package/dist/components/internal/Dropdown.js +37 -37
  72. package/dist/components/internal/Dropdown.js.map +1 -1
  73. package/dist/components/internal/Emoji.cjs +16 -13
  74. package/dist/components/internal/Emoji.cjs.map +1 -1
  75. package/dist/components/internal/Emoji.js +16 -13
  76. package/dist/components/internal/Emoji.js.map +1 -1
  77. package/dist/components/internal/EmojiPicker.cjs +61 -102
  78. package/dist/components/internal/EmojiPicker.cjs.map +1 -1
  79. package/dist/components/internal/EmojiPicker.js +61 -102
  80. package/dist/components/internal/EmojiPicker.js.map +1 -1
  81. package/dist/components/internal/Favicon.cjs +1 -10
  82. package/dist/components/internal/Favicon.cjs.map +1 -1
  83. package/dist/components/internal/Favicon.js +1 -10
  84. package/dist/components/internal/Favicon.js.map +1 -1
  85. package/dist/components/internal/Group.cjs +12 -9
  86. package/dist/components/internal/Group.cjs.map +1 -1
  87. package/dist/components/internal/Group.js +12 -9
  88. package/dist/components/internal/Group.js.map +1 -1
  89. package/dist/components/internal/GroupDescription.cjs +1 -5
  90. package/dist/components/internal/GroupDescription.cjs.map +1 -1
  91. package/dist/components/internal/GroupDescription.js +1 -5
  92. package/dist/components/internal/GroupDescription.js.map +1 -1
  93. package/dist/components/internal/Icon.cjs +18 -15
  94. package/dist/components/internal/Icon.cjs.map +1 -1
  95. package/dist/components/internal/Icon.js +18 -15
  96. package/dist/components/internal/Icon.js.map +1 -1
  97. package/dist/components/internal/InboxNotificationThread.cjs +38 -50
  98. package/dist/components/internal/InboxNotificationThread.cjs.map +1 -1
  99. package/dist/components/internal/InboxNotificationThread.js +38 -50
  100. package/dist/components/internal/InboxNotificationThread.js.map +1 -1
  101. package/dist/components/internal/List.cjs +9 -6
  102. package/dist/components/internal/List.cjs.map +1 -1
  103. package/dist/components/internal/List.js +9 -6
  104. package/dist/components/internal/List.js.map +1 -1
  105. package/dist/components/internal/Prose.cjs +7 -14
  106. package/dist/components/internal/Prose.cjs.map +1 -1
  107. package/dist/components/internal/Prose.js +7 -14
  108. package/dist/components/internal/Prose.js.map +1 -1
  109. package/dist/components/internal/Room.cjs +9 -6
  110. package/dist/components/internal/Room.cjs.map +1 -1
  111. package/dist/components/internal/Room.js +9 -6
  112. package/dist/components/internal/Room.js.map +1 -1
  113. package/dist/components/internal/Tooltip.cjs +43 -56
  114. package/dist/components/internal/Tooltip.cjs.map +1 -1
  115. package/dist/components/internal/Tooltip.js +43 -56
  116. package/dist/components/internal/Tooltip.js.map +1 -1
  117. package/dist/components/internal/User.cjs +12 -9
  118. package/dist/components/internal/User.cjs.map +1 -1
  119. package/dist/components/internal/User.js +12 -9
  120. package/dist/components/internal/User.js.map +1 -1
  121. package/dist/components.cjs +1 -4
  122. package/dist/components.cjs.map +1 -1
  123. package/dist/components.js +1 -4
  124. package/dist/components.js.map +1 -1
  125. package/dist/config.cjs +1 -10
  126. package/dist/config.cjs.map +1 -1
  127. package/dist/config.js +1 -10
  128. package/dist/config.js.map +1 -1
  129. package/dist/icons/ArrowCornerDownRight.cjs +1 -6
  130. package/dist/icons/ArrowCornerDownRight.cjs.map +1 -1
  131. package/dist/icons/ArrowCornerDownRight.js +1 -6
  132. package/dist/icons/ArrowCornerDownRight.js.map +1 -1
  133. package/dist/icons/ArrowCornerUpRight.cjs +1 -6
  134. package/dist/icons/ArrowCornerUpRight.cjs.map +1 -1
  135. package/dist/icons/ArrowCornerUpRight.js +1 -6
  136. package/dist/icons/ArrowCornerUpRight.js.map +1 -1
  137. package/dist/icons/ArrowDown.cjs +1 -6
  138. package/dist/icons/ArrowDown.cjs.map +1 -1
  139. package/dist/icons/ArrowDown.js +1 -6
  140. package/dist/icons/ArrowDown.js.map +1 -1
  141. package/dist/icons/ArrowUp.cjs +1 -6
  142. package/dist/icons/ArrowUp.cjs.map +1 -1
  143. package/dist/icons/ArrowUp.js +1 -6
  144. package/dist/icons/ArrowUp.js.map +1 -1
  145. package/dist/icons/Attachment.cjs +1 -6
  146. package/dist/icons/Attachment.cjs.map +1 -1
  147. package/dist/icons/Attachment.js +1 -6
  148. package/dist/icons/Attachment.js.map +1 -1
  149. package/dist/icons/Bell.cjs +1 -6
  150. package/dist/icons/Bell.cjs.map +1 -1
  151. package/dist/icons/Bell.js +1 -6
  152. package/dist/icons/Bell.js.map +1 -1
  153. package/dist/icons/BellCrossed.cjs +1 -6
  154. package/dist/icons/BellCrossed.cjs.map +1 -1
  155. package/dist/icons/BellCrossed.js +1 -6
  156. package/dist/icons/BellCrossed.js.map +1 -1
  157. package/dist/icons/Blockquote.cjs +1 -6
  158. package/dist/icons/Blockquote.cjs.map +1 -1
  159. package/dist/icons/Blockquote.js +1 -6
  160. package/dist/icons/Blockquote.js.map +1 -1
  161. package/dist/icons/Bold.cjs +1 -6
  162. package/dist/icons/Bold.cjs.map +1 -1
  163. package/dist/icons/Bold.js +1 -6
  164. package/dist/icons/Bold.js.map +1 -1
  165. package/dist/icons/Check.cjs +1 -6
  166. package/dist/icons/Check.cjs.map +1 -1
  167. package/dist/icons/Check.js +1 -6
  168. package/dist/icons/Check.js.map +1 -1
  169. package/dist/icons/CheckCircle.cjs +4 -13
  170. package/dist/icons/CheckCircle.cjs.map +1 -1
  171. package/dist/icons/CheckCircle.js +4 -13
  172. package/dist/icons/CheckCircle.js.map +1 -1
  173. package/dist/icons/CheckCircleFill.cjs +4 -15
  174. package/dist/icons/CheckCircleFill.cjs.map +1 -1
  175. package/dist/icons/CheckCircleFill.js +4 -15
  176. package/dist/icons/CheckCircleFill.js.map +1 -1
  177. package/dist/icons/ChevronDown.cjs +1 -6
  178. package/dist/icons/ChevronDown.cjs.map +1 -1
  179. package/dist/icons/ChevronDown.js +1 -6
  180. package/dist/icons/ChevronDown.js.map +1 -1
  181. package/dist/icons/ChevronLeft.cjs +1 -6
  182. package/dist/icons/ChevronLeft.cjs.map +1 -1
  183. package/dist/icons/ChevronLeft.js +1 -6
  184. package/dist/icons/ChevronLeft.js.map +1 -1
  185. package/dist/icons/ChevronRight.cjs +1 -6
  186. package/dist/icons/ChevronRight.cjs.map +1 -1
  187. package/dist/icons/ChevronRight.js +1 -6
  188. package/dist/icons/ChevronRight.js.map +1 -1
  189. package/dist/icons/ChevronUp.cjs +1 -6
  190. package/dist/icons/ChevronUp.cjs.map +1 -1
  191. package/dist/icons/ChevronUp.js +1 -6
  192. package/dist/icons/ChevronUp.js.map +1 -1
  193. package/dist/icons/Code.cjs +1 -6
  194. package/dist/icons/Code.cjs.map +1 -1
  195. package/dist/icons/Code.js +1 -6
  196. package/dist/icons/Code.js.map +1 -1
  197. package/dist/icons/Comment.cjs +1 -6
  198. package/dist/icons/Comment.cjs.map +1 -1
  199. package/dist/icons/Comment.js +1 -6
  200. package/dist/icons/Comment.js.map +1 -1
  201. package/dist/icons/Copy.cjs +4 -15
  202. package/dist/icons/Copy.cjs.map +1 -1
  203. package/dist/icons/Copy.js +4 -15
  204. package/dist/icons/Copy.js.map +1 -1
  205. package/dist/icons/Cross.cjs +4 -11
  206. package/dist/icons/Cross.cjs.map +1 -1
  207. package/dist/icons/Cross.js +4 -11
  208. package/dist/icons/Cross.js.map +1 -1
  209. package/dist/icons/CrossCircleFill.cjs +4 -15
  210. package/dist/icons/CrossCircleFill.cjs.map +1 -1
  211. package/dist/icons/CrossCircleFill.js +4 -15
  212. package/dist/icons/CrossCircleFill.js.map +1 -1
  213. package/dist/icons/Delete.cjs +1 -6
  214. package/dist/icons/Delete.cjs.map +1 -1
  215. package/dist/icons/Delete.js +1 -6
  216. package/dist/icons/Delete.js.map +1 -1
  217. package/dist/icons/Edit.cjs +1 -6
  218. package/dist/icons/Edit.cjs.map +1 -1
  219. package/dist/icons/Edit.js +1 -6
  220. package/dist/icons/Edit.js.map +1 -1
  221. package/dist/icons/Ellipsis.cjs +5 -21
  222. package/dist/icons/Ellipsis.cjs.map +1 -1
  223. package/dist/icons/Ellipsis.js +5 -21
  224. package/dist/icons/Ellipsis.js.map +1 -1
  225. package/dist/icons/Emoji.cjs +7 -24
  226. package/dist/icons/Emoji.cjs.map +1 -1
  227. package/dist/icons/Emoji.js +7 -24
  228. package/dist/icons/Emoji.js.map +1 -1
  229. package/dist/icons/EmojiPlus.cjs +8 -27
  230. package/dist/icons/EmojiPlus.cjs.map +1 -1
  231. package/dist/icons/EmojiPlus.js +8 -27
  232. package/dist/icons/EmojiPlus.js.map +1 -1
  233. package/dist/icons/Globe.cjs +4 -13
  234. package/dist/icons/Globe.cjs.map +1 -1
  235. package/dist/icons/Globe.js +4 -13
  236. package/dist/icons/Globe.js.map +1 -1
  237. package/dist/icons/H1.cjs +1 -6
  238. package/dist/icons/H1.cjs.map +1 -1
  239. package/dist/icons/H1.js +1 -6
  240. package/dist/icons/H1.js.map +1 -1
  241. package/dist/icons/H2.cjs +1 -6
  242. package/dist/icons/H2.cjs.map +1 -1
  243. package/dist/icons/H2.js +1 -6
  244. package/dist/icons/H2.js.map +1 -1
  245. package/dist/icons/H3.cjs +1 -6
  246. package/dist/icons/H3.cjs.map +1 -1
  247. package/dist/icons/H3.js +1 -6
  248. package/dist/icons/H3.js.map +1 -1
  249. package/dist/icons/Italic.cjs +1 -6
  250. package/dist/icons/Italic.cjs.map +1 -1
  251. package/dist/icons/Italic.js +1 -6
  252. package/dist/icons/Italic.js.map +1 -1
  253. package/dist/icons/Lengthen.cjs +1 -6
  254. package/dist/icons/Lengthen.cjs.map +1 -1
  255. package/dist/icons/Lengthen.js +1 -6
  256. package/dist/icons/Lengthen.js.map +1 -1
  257. package/dist/icons/ListOrdered.cjs +1 -6
  258. package/dist/icons/ListOrdered.cjs.map +1 -1
  259. package/dist/icons/ListOrdered.js +1 -6
  260. package/dist/icons/ListOrdered.js.map +1 -1
  261. package/dist/icons/ListUnordered.cjs +8 -29
  262. package/dist/icons/ListUnordered.cjs.map +1 -1
  263. package/dist/icons/ListUnordered.js +8 -29
  264. package/dist/icons/ListUnordered.js.map +1 -1
  265. package/dist/icons/Mention.cjs +4 -11
  266. package/dist/icons/Mention.cjs.map +1 -1
  267. package/dist/icons/Mention.js +4 -11
  268. package/dist/icons/Mention.js.map +1 -1
  269. package/dist/icons/MinusCircle.cjs +4 -13
  270. package/dist/icons/MinusCircle.cjs.map +1 -1
  271. package/dist/icons/MinusCircle.js +4 -13
  272. package/dist/icons/MinusCircle.js.map +1 -1
  273. package/dist/icons/QuestionMark.cjs +5 -16
  274. package/dist/icons/QuestionMark.cjs.map +1 -1
  275. package/dist/icons/QuestionMark.js +5 -16
  276. package/dist/icons/QuestionMark.js.map +1 -1
  277. package/dist/icons/Redo.cjs +4 -11
  278. package/dist/icons/Redo.cjs.map +1 -1
  279. package/dist/icons/Redo.js +4 -11
  280. package/dist/icons/Redo.js.map +1 -1
  281. package/dist/icons/Restore.cjs +4 -11
  282. package/dist/icons/Restore.cjs.map +1 -1
  283. package/dist/icons/Restore.js +4 -11
  284. package/dist/icons/Restore.js.map +1 -1
  285. package/dist/icons/Retry.cjs +4 -11
  286. package/dist/icons/Retry.cjs.map +1 -1
  287. package/dist/icons/Retry.js +4 -11
  288. package/dist/icons/Retry.js.map +1 -1
  289. package/dist/icons/Search.cjs +1 -6
  290. package/dist/icons/Search.cjs.map +1 -1
  291. package/dist/icons/Search.js +1 -6
  292. package/dist/icons/Search.js.map +1 -1
  293. package/dist/icons/Send.cjs +1 -6
  294. package/dist/icons/Send.cjs.map +1 -1
  295. package/dist/icons/Send.js +1 -6
  296. package/dist/icons/Send.js.map +1 -1
  297. package/dist/icons/Shorten.cjs +1 -6
  298. package/dist/icons/Shorten.cjs.map +1 -1
  299. package/dist/icons/Shorten.js +1 -6
  300. package/dist/icons/Shorten.js.map +1 -1
  301. package/dist/icons/Sparkles.cjs +1 -6
  302. package/dist/icons/Sparkles.cjs.map +1 -1
  303. package/dist/icons/Sparkles.js +1 -6
  304. package/dist/icons/Sparkles.js.map +1 -1
  305. package/dist/icons/SparklesText.cjs +4 -11
  306. package/dist/icons/SparklesText.cjs.map +1 -1
  307. package/dist/icons/SparklesText.js +4 -11
  308. package/dist/icons/SparklesText.js.map +1 -1
  309. package/dist/icons/Spinner.cjs +1 -7
  310. package/dist/icons/Spinner.cjs.map +1 -1
  311. package/dist/icons/Spinner.js +1 -7
  312. package/dist/icons/Spinner.js.map +1 -1
  313. package/dist/icons/Stop.cjs +1 -11
  314. package/dist/icons/Stop.cjs.map +1 -1
  315. package/dist/icons/Stop.js +1 -11
  316. package/dist/icons/Stop.js.map +1 -1
  317. package/dist/icons/Strikethrough.cjs +1 -6
  318. package/dist/icons/Strikethrough.cjs.map +1 -1
  319. package/dist/icons/Strikethrough.js +1 -6
  320. package/dist/icons/Strikethrough.js.map +1 -1
  321. package/dist/icons/Text.cjs +1 -6
  322. package/dist/icons/Text.cjs.map +1 -1
  323. package/dist/icons/Text.js +1 -6
  324. package/dist/icons/Text.js.map +1 -1
  325. package/dist/icons/Translate.cjs +4 -11
  326. package/dist/icons/Translate.cjs.map +1 -1
  327. package/dist/icons/Translate.js +4 -11
  328. package/dist/icons/Translate.js.map +1 -1
  329. package/dist/icons/Underline.cjs +1 -6
  330. package/dist/icons/Underline.cjs.map +1 -1
  331. package/dist/icons/Underline.js +1 -6
  332. package/dist/icons/Underline.js.map +1 -1
  333. package/dist/icons/Undo.cjs +4 -11
  334. package/dist/icons/Undo.cjs.map +1 -1
  335. package/dist/icons/Undo.js +4 -11
  336. package/dist/icons/Undo.js.map +1 -1
  337. package/dist/icons/User.cjs +1 -6
  338. package/dist/icons/User.cjs.map +1 -1
  339. package/dist/icons/User.js +1 -6
  340. package/dist/icons/User.js.map +1 -1
  341. package/dist/icons/Users.cjs +1 -6
  342. package/dist/icons/Users.cjs.map +1 -1
  343. package/dist/icons/Users.js +1 -6
  344. package/dist/icons/Users.js.map +1 -1
  345. package/dist/icons/Warning.cjs +4 -13
  346. package/dist/icons/Warning.cjs.map +1 -1
  347. package/dist/icons/Warning.js +4 -13
  348. package/dist/icons/Warning.js.map +1 -1
  349. package/dist/overrides.cjs +102 -150
  350. package/dist/overrides.cjs.map +1 -1
  351. package/dist/overrides.js +102 -150
  352. package/dist/overrides.js.map +1 -1
  353. package/dist/primitives/AiComposer/index.cjs +77 -65
  354. package/dist/primitives/AiComposer/index.cjs.map +1 -1
  355. package/dist/primitives/AiComposer/index.js +77 -65
  356. package/dist/primitives/AiComposer/index.js.map +1 -1
  357. package/dist/primitives/AiMessage/index.cjs +28 -49
  358. package/dist/primitives/AiMessage/index.cjs.map +1 -1
  359. package/dist/primitives/AiMessage/index.js +28 -49
  360. package/dist/primitives/AiMessage/index.js.map +1 -1
  361. package/dist/primitives/AiMessage/tool-invocation.cjs +5 -5
  362. package/dist/primitives/AiMessage/tool-invocation.cjs.map +1 -1
  363. package/dist/primitives/AiMessage/tool-invocation.js +5 -5
  364. package/dist/primitives/AiMessage/tool-invocation.js.map +1 -1
  365. package/dist/primitives/Collapsible/index.cjs +46 -34
  366. package/dist/primitives/Collapsible/index.cjs.map +1 -1
  367. package/dist/primitives/Collapsible/index.js +46 -34
  368. package/dist/primitives/Collapsible/index.js.map +1 -1
  369. package/dist/primitives/Comment/index.cjs +41 -64
  370. package/dist/primitives/Comment/index.cjs.map +1 -1
  371. package/dist/primitives/Comment/index.js +41 -64
  372. package/dist/primitives/Comment/index.js.map +1 -1
  373. package/dist/primitives/Composer/contexts.cjs.map +1 -1
  374. package/dist/primitives/Composer/contexts.js.map +1 -1
  375. package/dist/primitives/Composer/index.cjs +324 -312
  376. package/dist/primitives/Composer/index.cjs.map +1 -1
  377. package/dist/primitives/Composer/index.js +324 -312
  378. package/dist/primitives/Composer/index.js.map +1 -1
  379. package/dist/primitives/Composer/slate/plugins/auto-links.cjs.map +1 -1
  380. package/dist/primitives/Composer/slate/plugins/auto-links.js.map +1 -1
  381. package/dist/primitives/Composer/slate/plugins/custom-links.cjs.map +1 -1
  382. package/dist/primitives/Composer/slate/plugins/custom-links.js.map +1 -1
  383. package/dist/primitives/Composer/slate/plugins/mentions.cjs +1 -0
  384. package/dist/primitives/Composer/slate/plugins/mentions.cjs.map +1 -1
  385. package/dist/primitives/Composer/slate/plugins/mentions.js +1 -0
  386. package/dist/primitives/Composer/slate/plugins/mentions.js.map +1 -1
  387. package/dist/primitives/Composer/slate/plugins/paste.cjs +1 -0
  388. package/dist/primitives/Composer/slate/plugins/paste.cjs.map +1 -1
  389. package/dist/primitives/Composer/slate/plugins/paste.js +1 -0
  390. package/dist/primitives/Composer/slate/plugins/paste.js.map +1 -1
  391. package/dist/primitives/Composer/utils.cjs +3 -0
  392. package/dist/primitives/Composer/utils.cjs.map +1 -1
  393. package/dist/primitives/Composer/utils.js +3 -0
  394. package/dist/primitives/Composer/utils.js.map +1 -1
  395. package/dist/primitives/Duration.cjs +11 -7
  396. package/dist/primitives/Duration.cjs.map +1 -1
  397. package/dist/primitives/Duration.js +11 -7
  398. package/dist/primitives/Duration.js.map +1 -1
  399. package/dist/primitives/FileSize.cjs +2 -5
  400. package/dist/primitives/FileSize.cjs.map +1 -1
  401. package/dist/primitives/FileSize.js +2 -5
  402. package/dist/primitives/FileSize.js.map +1 -1
  403. package/dist/primitives/Markdown.cjs +80 -188
  404. package/dist/primitives/Markdown.cjs.map +1 -1
  405. package/dist/primitives/Markdown.js +80 -188
  406. package/dist/primitives/Markdown.js.map +1 -1
  407. package/dist/primitives/Timestamp.cjs +12 -7
  408. package/dist/primitives/Timestamp.cjs.map +1 -1
  409. package/dist/primitives/Timestamp.js +12 -7
  410. package/dist/primitives/Timestamp.js.map +1 -1
  411. package/dist/primitives/slate/utils/get-dom-range.cjs.map +1 -1
  412. package/dist/primitives/slate/utils/get-dom-range.js.map +1 -1
  413. package/dist/primitives/slate/utils/get-match-range.cjs.map +1 -1
  414. package/dist/primitives/slate/utils/get-match-range.js.map +1 -1
  415. package/dist/primitives/slate/utils/is-empty.cjs.map +1 -1
  416. package/dist/primitives/slate/utils/is-empty.js.map +1 -1
  417. package/dist/primitives/slate/utils/marks.cjs.map +1 -1
  418. package/dist/primitives/slate/utils/marks.js.map +1 -1
  419. package/dist/shared.cjs.map +1 -1
  420. package/dist/shared.js.map +1 -1
  421. package/dist/utils/ErrorBoundary.cjs +1 -6
  422. package/dist/utils/ErrorBoundary.cjs.map +1 -1
  423. package/dist/utils/ErrorBoundary.js +1 -6
  424. package/dist/utils/ErrorBoundary.js.map +1 -1
  425. package/dist/utils/Persist.cjs +1 -4
  426. package/dist/utils/Persist.cjs.map +1 -1
  427. package/dist/utils/Persist.js +1 -4
  428. package/dist/utils/Persist.js.map +1 -1
  429. package/dist/utils/Portal.cjs +1 -5
  430. package/dist/utils/Portal.cjs.map +1 -1
  431. package/dist/utils/Portal.js +1 -5
  432. package/dist/utils/Portal.js.map +1 -1
  433. package/dist/utils/format-file-size.cjs.map +1 -1
  434. package/dist/utils/format-file-size.js.map +1 -1
  435. package/dist/utils/is-key.cjs.map +1 -1
  436. package/dist/utils/is-key.js.map +1 -1
  437. package/dist/utils/pluralize.cjs.map +1 -1
  438. package/dist/utils/pluralize.js.map +1 -1
  439. package/dist/utils/use-controllable-state.cjs.map +1 -1
  440. package/dist/utils/use-controllable-state.js.map +1 -1
  441. package/dist/utils/use-rerender.cjs +3 -0
  442. package/dist/utils/use-rerender.cjs.map +1 -1
  443. package/dist/utils/use-rerender.js +3 -0
  444. package/dist/utils/use-rerender.js.map +1 -1
  445. package/dist/utils/use-visible.cjs.map +1 -1
  446. package/dist/utils/use-visible.js.map +1 -1
  447. package/dist/version.cjs +1 -1
  448. package/dist/version.cjs.map +1 -1
  449. package/dist/version.js +1 -1
  450. package/dist/version.js.map +1 -1
  451. package/package.json +4 -4
@@ -27,23 +27,20 @@ function AiChatSource({
27
27
  const label = useMemo(() => {
28
28
  return source.title ?? metadata?.title ?? getUrlDomain(source.url);
29
29
  }, [source.title, source.url, metadata?.title]);
30
- return /* @__PURE__ */ jsxs(Anchor, {
31
- href: source.url,
32
- target: "_blank",
33
- rel: "noopener noreferrer",
34
- className: cn("lb-ai-chat-source", className),
35
- ...props,
36
- children: [
37
- /* @__PURE__ */ jsx(Favicon, {
38
- url: source.url,
39
- className: "lb-ai-chat-source-favicon"
40
- }),
41
- /* @__PURE__ */ jsx("span", {
42
- className: "lb-ai-chat-source-label",
43
- children: label
44
- })
45
- ]
46
- });
30
+ return /* @__PURE__ */ jsxs(
31
+ Anchor,
32
+ {
33
+ href: source.url,
34
+ target: "_blank",
35
+ rel: "noopener noreferrer",
36
+ className: cn("lb-ai-chat-source", className),
37
+ ...props,
38
+ children: [
39
+ /* @__PURE__ */ jsx(Favicon, { url: source.url, className: "lb-ai-chat-source-favicon" }),
40
+ /* @__PURE__ */ jsx("span", { className: "lb-ai-chat-source-label", children: label })
41
+ ]
42
+ }
43
+ );
47
44
  }
48
45
  function AiChatSources({
49
46
  sources: allSources,
@@ -58,33 +55,15 @@ function AiChatSources({
58
55
  const handleToggle = useCallback(() => {
59
56
  setOpen((isOpen2) => !isOpen2);
60
57
  }, []);
61
- return /* @__PURE__ */ jsxs("ol", {
62
- className: cn("lb-ai-chat-sources", className),
63
- ...props,
64
- children: [
65
- visibleSources.map((source, index) => {
66
- return /* @__PURE__ */ jsx("li", {
67
- children: /* @__PURE__ */ jsx(AiChatSource, {
68
- source,
69
- components
70
- })
71
- }, `${index}-${source.url}`);
72
- }),
73
- visibleSources.length !== allSources.length ? /* @__PURE__ */ jsx("li", {
74
- children: /* @__PURE__ */ jsx("button", {
75
- className: "lb-ai-chat-sources-more",
76
- onClick: handleToggle,
77
- children: /* @__PURE__ */ jsxs("span", {
78
- className: "lb-ai-chat-sources-more-label",
79
- children: [
80
- "+ ",
81
- $.LIST_REMAINING(allSources.length - visibleSources.length)
82
- ]
83
- })
84
- })
85
- }) : null
86
- ]
87
- });
58
+ return /* @__PURE__ */ jsxs("ol", { className: cn("lb-ai-chat-sources", className), ...props, children: [
59
+ visibleSources.map((source, index) => {
60
+ return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(AiChatSource, { source, components }) }, `${index}-${source.url}`);
61
+ }),
62
+ visibleSources.length !== allSources.length ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("button", { className: "lb-ai-chat-sources-more", onClick: handleToggle, children: /* @__PURE__ */ jsxs("span", { className: "lb-ai-chat-sources-more-label", children: [
63
+ "+ ",
64
+ $.LIST_REMAINING(allSources.length - visibleSources.length)
65
+ ] }) }) }) : null
66
+ ] });
88
67
  }
89
68
  const AiChatAssistantMessage = memo(
90
69
  forwardRef(
@@ -100,24 +79,21 @@ const AiChatAssistantMessage = memo(
100
79
  }, forwardedRef) => {
101
80
  const $ = useOverrides(overrides);
102
81
  let children = null;
103
- const messageContent = /* @__PURE__ */ jsx(AssistantMessageContent, {
104
- message,
105
- components,
106
- showReasoning,
107
- showRetrievals,
108
- showSources
109
- });
82
+ const messageContent = /* @__PURE__ */ jsx(
83
+ AssistantMessageContent,
84
+ {
85
+ message,
86
+ components,
87
+ showReasoning,
88
+ showRetrievals,
89
+ showSources
90
+ }
91
+ );
110
92
  if (message.deletedAt !== void 0) {
111
- children = /* @__PURE__ */ jsx("div", {
112
- className: "lb-ai-chat-message-deleted",
113
- children: $.AI_CHAT_MESSAGE_DELETED
114
- });
93
+ children = /* @__PURE__ */ jsx("div", { className: "lb-ai-chat-message-deleted", children: $.AI_CHAT_MESSAGE_DELETED });
115
94
  } else if (message.status === "generating" || message.status === "awaiting-tool") {
116
95
  if (message.contentSoFar.length === 0) {
117
- children = /* @__PURE__ */ jsx("div", {
118
- className: "lb-ai-chat-message-thinking lb-ai-chat-pending",
119
- children: $.AI_CHAT_MESSAGE_THINKING
120
- });
96
+ children = /* @__PURE__ */ jsx("div", { className: "lb-ai-chat-message-thinking lb-ai-chat-pending", children: $.AI_CHAT_MESSAGE_THINKING });
121
97
  } else {
122
98
  children = messageContent;
123
99
  }
@@ -127,35 +103,27 @@ const AiChatAssistantMessage = memo(
127
103
  if (message.errorReason === "Aborted by user") {
128
104
  children = messageContent;
129
105
  } else {
130
- children = /* @__PURE__ */ jsxs(Fragment, {
131
- children: [
132
- messageContent,
133
- /* @__PURE__ */ jsxs("div", {
134
- className: "lb-ai-chat-message-error",
135
- children: [
136
- /* @__PURE__ */ jsx("span", {
137
- className: "lb-icon-container",
138
- children: /* @__PURE__ */ jsx(WarningIcon, {})
139
- }),
140
- message.errorReason
141
- ]
142
- })
143
- ]
144
- });
106
+ children = /* @__PURE__ */ jsxs(Fragment, { children: [
107
+ messageContent,
108
+ /* @__PURE__ */ jsxs("div", { className: "lb-ai-chat-message-error", children: [
109
+ /* @__PURE__ */ jsx("span", { className: "lb-icon-container", children: /* @__PURE__ */ jsx(WarningIcon, {}) }),
110
+ message.errorReason
111
+ ] })
112
+ ] });
145
113
  }
146
114
  }
147
- return /* @__PURE__ */ jsx("div", {
148
- className: cn(
149
- "lb-ai-chat-message lb-ai-chat-assistant-message",
150
- className
151
- ),
152
- ...props,
153
- ref: forwardedRef,
154
- children: /* @__PURE__ */ jsx(OverridesProvider, {
155
- overrides,
156
- children
157
- })
158
- });
115
+ return /* @__PURE__ */ jsx(
116
+ "div",
117
+ {
118
+ className: cn(
119
+ "lb-ai-chat-message lb-ai-chat-assistant-message",
120
+ className
121
+ ),
122
+ ...props,
123
+ ref: forwardedRef,
124
+ children: /* @__PURE__ */ jsx(OverridesProvider, { overrides, children })
125
+ }
126
+ );
159
127
  }
160
128
  )
161
129
  );
@@ -173,10 +141,7 @@ function AssistantMessageContent({
173
141
  showKnowledgeRetrievals ??= true;
174
142
  showWebRetrievals ??= true;
175
143
  const BoundTextPart = useMemo(
176
- () => (props) => /* @__PURE__ */ jsx(TextPart, {
177
- ...props,
178
- components: componentsRef.current
179
- }),
144
+ () => (props) => /* @__PURE__ */ jsx(TextPart, { ...props, components: componentsRef.current }),
180
145
  []
181
146
  );
182
147
  const BoundReasoningPart = useMemo(
@@ -184,10 +149,7 @@ function AssistantMessageContent({
184
149
  if (!showReasoning || showReasoning === "during" && !props.isStreaming) {
185
150
  return null;
186
151
  }
187
- return /* @__PURE__ */ jsx(ReasoningPart, {
188
- ...props,
189
- components: componentsRef.current
190
- });
152
+ return /* @__PURE__ */ jsx(ReasoningPart, { ...props, components: componentsRef.current });
191
153
  },
192
154
  [showReasoning]
193
155
  );
@@ -202,31 +164,35 @@ function AssistantMessageContent({
202
164
  return null;
203
165
  }
204
166
  }
205
- return /* @__PURE__ */ jsx(RetrievalPart, {
206
- ...props
207
- });
167
+ return /* @__PURE__ */ jsx(RetrievalPart, { ...props });
208
168
  },
209
169
  [showKnowledgeRetrievals, showWebRetrievals]
210
170
  );
211
- return /* @__PURE__ */ jsx(AiMessageContent, {
212
- message,
213
- components: {
214
- TextPart: BoundTextPart,
215
- ReasoningPart: BoundReasoningPart,
216
- RetrievalPart: BoundRetrievalPart,
217
- SourcesPart: showSources ? SourcesPart : NoopComponent,
218
- ToolInvocationPart
219
- },
220
- className: "lb-ai-chat-message-content"
221
- });
171
+ return /* @__PURE__ */ jsx(
172
+ AiMessageContent,
173
+ {
174
+ message,
175
+ components: {
176
+ TextPart: BoundTextPart,
177
+ ReasoningPart: BoundReasoningPart,
178
+ RetrievalPart: BoundRetrievalPart,
179
+ SourcesPart: showSources ? SourcesPart : NoopComponent,
180
+ ToolInvocationPart
181
+ },
182
+ className: "lb-ai-chat-message-content"
183
+ }
184
+ );
222
185
  }
223
186
  function TextPart({ part, components, isStreaming }) {
224
- return /* @__PURE__ */ jsx(Prose, {
225
- content: part.text,
226
- className: "lb-ai-chat-message-text",
227
- components,
228
- partial: isStreaming
229
- });
187
+ return /* @__PURE__ */ jsx(
188
+ Prose,
189
+ {
190
+ content: part.text,
191
+ className: "lb-ai-chat-message-text",
192
+ components,
193
+ partial: isStreaming
194
+ }
195
+ );
230
196
  }
231
197
  function ReasoningPart({ part, isStreaming, components }) {
232
198
  const [isOpen, setIsOpen] = useState(isStreaming);
@@ -236,34 +202,37 @@ function ReasoningPart({ part, isStreaming, components }) {
236
202
  setIsOpen(false);
237
203
  }
238
204
  }, [isStreaming]);
239
- return /* @__PURE__ */ jsxs(CollapsibleRoot, {
240
- className: "lb-collapsible lb-ai-chat-message-reasoning",
241
- open: isOpen,
242
- onOpenChange: setIsOpen,
243
- children: [
244
- /* @__PURE__ */ jsxs(CollapsibleTrigger, {
245
- className: cn(
246
- "lb-collapsible-trigger",
247
- isStreaming && "lb-ai-chat-pending"
205
+ return /* @__PURE__ */ jsxs(
206
+ CollapsibleRoot,
207
+ {
208
+ className: "lb-collapsible lb-ai-chat-message-reasoning",
209
+ open: isOpen,
210
+ onOpenChange: setIsOpen,
211
+ children: [
212
+ /* @__PURE__ */ jsxs(
213
+ CollapsibleTrigger,
214
+ {
215
+ className: cn(
216
+ "lb-collapsible-trigger",
217
+ isStreaming && "lb-ai-chat-pending"
218
+ ),
219
+ children: [
220
+ $.AI_CHAT_MESSAGE_REASONING(isStreaming, part),
221
+ /* @__PURE__ */ jsx("span", { className: "lb-collapsible-chevron lb-icon-container", children: /* @__PURE__ */ jsx(ChevronRightIcon, {}) })
222
+ ]
223
+ }
248
224
  ),
249
- children: [
250
- $.AI_CHAT_MESSAGE_REASONING(isStreaming, part),
251
- /* @__PURE__ */ jsx("span", {
252
- className: "lb-collapsible-chevron lb-icon-container",
253
- children: /* @__PURE__ */ jsx(ChevronRightIcon, {})
254
- })
255
- ]
256
- }),
257
- /* @__PURE__ */ jsx(CollapsibleContent, {
258
- className: "lb-collapsible-content",
259
- children: /* @__PURE__ */ jsx(Prose, {
260
- content: part.text,
261
- partial: isStreaming,
262
- components
263
- })
264
- })
265
- ]
266
- });
225
+ /* @__PURE__ */ jsx(CollapsibleContent, { className: "lb-collapsible-content", children: /* @__PURE__ */ jsx(
226
+ Prose,
227
+ {
228
+ content: part.text,
229
+ partial: isStreaming,
230
+ components
231
+ }
232
+ ) })
233
+ ]
234
+ }
235
+ );
267
236
  }
268
237
  function RetrievalPartFavicons({
269
238
  sources,
@@ -273,89 +242,74 @@ function RetrievalPartFavicons({
273
242
  return null;
274
243
  }
275
244
  const visibleSources = typeof maxSources === "number" ? sources.slice(0, maxSources) : sources;
276
- return /* @__PURE__ */ jsx("div", {
277
- className: "lb-ai-chat-message-retrieval-favicons",
278
- children: visibleSources.map((source) => /* @__PURE__ */ jsx(Favicon, {
279
- url: source.url
280
- }, source.url))
281
- });
245
+ return /* @__PURE__ */ jsx("div", { className: "lb-ai-chat-message-retrieval-favicons", children: visibleSources.map((source) => /* @__PURE__ */ jsx(Favicon, { url: source.url }, source.url)) });
282
246
  }
283
247
  function RetrievalPart({ part, isStreaming }) {
284
248
  const $ = useOverrides();
285
249
  let content = null;
286
250
  if (part.kind === "web" && part.sources && part.sources.length > 0) {
287
- content = /* @__PURE__ */ jsx(AiChatSources, {
288
- className: "lb-ai-chat-message-retrieval-sources",
289
- sources: part.sources
290
- });
251
+ content = /* @__PURE__ */ jsx(
252
+ AiChatSources,
253
+ {
254
+ className: "lb-ai-chat-message-retrieval-sources",
255
+ sources: part.sources
256
+ }
257
+ );
291
258
  }
292
- return /* @__PURE__ */ jsxs(CollapsibleRoot, {
293
- className: "lb-collapsible lb-ai-chat-message-retrieval",
294
- defaultOpen: false,
295
- disabled: !content,
296
- children: [
297
- /* @__PURE__ */ jsxs(CollapsibleTrigger, {
298
- className: cn(
299
- "lb-collapsible-trigger",
300
- isStreaming && "lb-ai-chat-pending"
259
+ return /* @__PURE__ */ jsxs(
260
+ CollapsibleRoot,
261
+ {
262
+ className: "lb-collapsible lb-ai-chat-message-retrieval",
263
+ defaultOpen: false,
264
+ disabled: !content,
265
+ children: [
266
+ /* @__PURE__ */ jsxs(
267
+ CollapsibleTrigger,
268
+ {
269
+ className: cn(
270
+ "lb-collapsible-trigger",
271
+ isStreaming && "lb-ai-chat-pending"
272
+ ),
273
+ children: [
274
+ $.AI_CHAT_MESSAGE_RETRIEVAL(isStreaming, part),
275
+ part.kind === "web" ? /* @__PURE__ */ jsx(RetrievalPartFavicons, { sources: part.sources, maxSources: 3 }) : null,
276
+ content ? /* @__PURE__ */ jsx("span", { className: "lb-collapsible-chevron lb-icon-container", children: /* @__PURE__ */ jsx(ChevronRightIcon, {}) }) : null
277
+ ]
278
+ }
301
279
  ),
302
- children: [
303
- $.AI_CHAT_MESSAGE_RETRIEVAL(isStreaming, part),
304
- part.kind === "web" ? /* @__PURE__ */ jsx(RetrievalPartFavicons, {
305
- sources: part.sources,
306
- maxSources: 3
307
- }) : null,
308
- content ? /* @__PURE__ */ jsx("span", {
309
- className: "lb-collapsible-chevron lb-icon-container",
310
- children: /* @__PURE__ */ jsx(ChevronRightIcon, {})
311
- }) : null
312
- ]
313
- }),
314
- content ? /* @__PURE__ */ jsx(CollapsibleContent, {
315
- className: "lb-collapsible-content",
316
- children: content
317
- }) : null
318
- ]
319
- });
280
+ content ? /* @__PURE__ */ jsx(CollapsibleContent, { className: "lb-collapsible-content", children: content }) : null
281
+ ]
282
+ }
283
+ );
320
284
  }
321
285
  function ToolInvocationPart({
322
286
  part,
323
287
  message
324
288
  }) {
325
- return /* @__PURE__ */ jsx("div", {
326
- className: "lb-ai-chat-message-tool-invocation",
327
- children: /* @__PURE__ */ jsx(ErrorBoundary, {
328
- fallback: /* @__PURE__ */ jsxs("div", {
329
- className: "lb-ai-chat-message-error",
330
- children: [
331
- /* @__PURE__ */ jsx("span", {
332
- className: "lb-icon-container",
333
- children: /* @__PURE__ */ jsx(WarningIcon, {})
334
- }),
335
- /* @__PURE__ */ jsxs("p", {
336
- children: [
337
- "Failed to render tool call result for ",
338
- /* @__PURE__ */ jsx("code", {
339
- children: part.name
340
- }),
341
- ". See console for details."
342
- ]
343
- })
344
- ]
345
- }),
346
- children: /* @__PURE__ */ jsx(AiMessageToolInvocation, {
347
- part,
348
- message
349
- })
350
- })
351
- });
289
+ return /* @__PURE__ */ jsx("div", { className: "lb-ai-chat-message-tool-invocation", children: /* @__PURE__ */ jsx(
290
+ ErrorBoundary,
291
+ {
292
+ fallback: /* @__PURE__ */ jsxs("div", { className: "lb-ai-chat-message-error", children: [
293
+ /* @__PURE__ */ jsx("span", { className: "lb-icon-container", children: /* @__PURE__ */ jsx(WarningIcon, {}) }),
294
+ /* @__PURE__ */ jsxs("p", { children: [
295
+ "Failed to render tool call result for ",
296
+ /* @__PURE__ */ jsx("code", { children: part.name }),
297
+ ". See console for details."
298
+ ] })
299
+ ] }),
300
+ children: /* @__PURE__ */ jsx(AiMessageToolInvocation, { part, message })
301
+ }
302
+ ) });
352
303
  }
353
304
  function SourcesPart({ part }) {
354
- return /* @__PURE__ */ jsx(AiChatSources, {
355
- className: "lb-ai-chat-message-sources",
356
- sources: part.sources,
357
- maxSources: 5
358
- });
305
+ return /* @__PURE__ */ jsx(
306
+ AiChatSources,
307
+ {
308
+ className: "lb-ai-chat-message-sources",
309
+ sources: part.sources,
310
+ maxSources: 5
311
+ }
312
+ );
359
313
  }
360
314
 
361
315
  export { AiChatAssistantMessage };
@@ -1 +1 @@
1
- {"version":3,"file":"AiChatAssistantMessage.js","sources":["../../../src/components/internal/AiChatAssistantMessage.tsx"],"sourcesContent":["import type {\n AiAssistantMessage,\n AiRetrievalPart,\n AiWebRetrievalPart,\n WithNavigation,\n} from \"@liveblocks/core\";\nimport { useUrlMetadata } from \"@liveblocks/react\";\nimport {\n type ComponentProps,\n forwardRef,\n memo,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { type GlobalComponents, useComponents } from \"../../components\";\nimport { ChevronRightIcon } from \"../../icons/ChevronRight\";\nimport { WarningIcon } from \"../../icons/Warning\";\nimport {\n type AiChatMessageOverrides,\n type GlobalOverrides,\n OverridesProvider,\n useOverrides,\n} from \"../../overrides\";\nimport * as AiMessage from \"../../primitives/AiMessage\";\nimport { AiMessageToolInvocation } from \"../../primitives/AiMessage/tool-invocation\";\nimport type {\n AiMessageContentReasoningPartProps,\n AiMessageContentRetrievalPartProps,\n AiMessageContentSourcesPartProps,\n AiMessageContentTextPartProps,\n AiMessageContentToolInvocationPartProps,\n} from \"../../primitives/AiMessage/types\";\nimport * as Collapsible from \"../../primitives/Collapsible\";\nimport type { MarkdownComponents } from \"../../primitives/Markdown\";\nimport { cn } from \"../../utils/cn\";\nimport { ErrorBoundary } from \"../../utils/ErrorBoundary\";\nimport { Favicon } from \"./Favicon\";\nimport { Prose } from \"./Prose\";\n\ntype UiAssistantMessage = WithNavigation<AiAssistantMessage>;\n\ntype AiChatAssistantMessageComponents = {\n /**\n * The components used to render Markdown content.\n */\n markdown?: Partial<MarkdownComponents>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AiChatAssistantMessage\n * -----------------------------------------------------------------------------------------------*/\nexport interface AiChatAssistantMessageProps extends ComponentProps<\"div\"> {\n /**\n * The message to display.\n */\n message: UiAssistantMessage;\n\n /**\n * How to show or hide reasoning.\n */\n showReasoning?: boolean | \"during\";\n\n /**\n * How to show or hide retrievals.\n */\n showRetrievals?:\n | boolean\n | \"during\"\n | Record<AiRetrievalPart[\"kind\"], boolean | \"during\">;\n\n /**\n * Whether to show sources.\n */\n showSources?: boolean;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<GlobalOverrides & AiChatMessageOverrides>;\n\n /**\n * Override the component's components.\n */\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface TextPartProps extends AiMessageContentTextPartProps {\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface ReasoningPartProps extends AiMessageContentReasoningPartProps {\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface RetrievalPartProps extends AiMessageContentRetrievalPartProps {\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface SourcesPartProps extends AiMessageContentSourcesPartProps {\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface AiChatSourceProps extends ComponentProps<\"a\"> {\n source: { url: string; title?: string };\n components?: Partial<GlobalComponents>;\n}\n\ninterface AiChatSourcesProps extends ComponentProps<\"ol\"> {\n sources: AiChatSourceProps[\"source\"][];\n maxSources?: number;\n components?: Partial<GlobalComponents>;\n}\n\nfunction getUrlDomain(url: string) {\n return new URL(url).hostname;\n}\n\nfunction AiChatSource({\n source,\n components,\n className,\n ...props\n}: AiChatSourceProps) {\n const { Anchor } = useComponents(components);\n const { metadata } = useUrlMetadata(source.url);\n const label = useMemo(() => {\n return source.title ?? metadata?.title ?? getUrlDomain(source.url);\n }, [source.title, source.url, metadata?.title]);\n\n return (\n <Anchor\n href={source.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\"lb-ai-chat-source\", className)}\n {...props}\n >\n <Favicon url={source.url} className=\"lb-ai-chat-source-favicon\" />\n <span className=\"lb-ai-chat-source-label\">{label}</span>\n </Anchor>\n );\n}\n\nfunction AiChatSources({\n sources: allSources,\n maxSources,\n components,\n className,\n ...props\n}: AiChatSourcesProps) {\n const $ = useOverrides();\n const [isOpen, setOpen] = useState(false);\n const visibleSources =\n typeof maxSources === \"number\" && !isOpen\n ? allSources.slice(0, maxSources)\n : allSources;\n\n const handleToggle = useCallback(() => {\n setOpen((isOpen) => !isOpen);\n }, []);\n\n return (\n <ol className={cn(\"lb-ai-chat-sources\", className)} {...props}>\n {visibleSources.map((source, index) => {\n return (\n <li key={`${index}-${source.url}`}>\n <AiChatSource source={source} components={components} />\n </li>\n );\n })}\n\n {visibleSources.length !== allSources.length ? (\n <li>\n <button className=\"lb-ai-chat-sources-more\" onClick={handleToggle}>\n <span className=\"lb-ai-chat-sources-more-label\">\n + {$.LIST_REMAINING(allSources.length - visibleSources.length)}\n </span>\n </button>\n </li>\n ) : null}\n </ol>\n );\n}\n\nexport const AiChatAssistantMessage = memo(\n forwardRef<HTMLDivElement, AiChatAssistantMessageProps>(\n (\n {\n message,\n className,\n overrides,\n components,\n showReasoning,\n showRetrievals,\n showSources,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n\n let children: ReactNode = null;\n\n const messageContent = (\n <AssistantMessageContent\n message={message}\n components={components}\n showReasoning={showReasoning}\n showRetrievals={showRetrievals}\n showSources={showSources}\n />\n );\n\n if (message.deletedAt !== undefined) {\n children = (\n <div className=\"lb-ai-chat-message-deleted\">\n {$.AI_CHAT_MESSAGE_DELETED}\n </div>\n );\n } else if (\n message.status === \"generating\" ||\n message.status === \"awaiting-tool\"\n ) {\n if (message.contentSoFar.length === 0) {\n children = (\n <div className=\"lb-ai-chat-message-thinking lb-ai-chat-pending\">\n {$.AI_CHAT_MESSAGE_THINKING}\n </div>\n );\n } else {\n children = messageContent;\n }\n } else if (message.status === \"completed\") {\n children = messageContent;\n } else if (message.status === \"failed\") {\n // Do not include the error message if the user aborted the request.\n if (message.errorReason === \"Aborted by user\") {\n children = messageContent;\n } else {\n children = (\n <>\n {messageContent}\n\n <div className=\"lb-ai-chat-message-error\">\n <span className=\"lb-icon-container\">\n <WarningIcon />\n </span>\n {message.errorReason}\n </div>\n </>\n );\n }\n }\n\n return (\n <div\n className={cn(\n \"lb-ai-chat-message lb-ai-chat-assistant-message\",\n className\n )}\n {...props}\n ref={forwardedRef}\n >\n <OverridesProvider overrides={overrides}>\n {children}\n </OverridesProvider>\n </div>\n );\n }\n )\n);\n\nconst NoopComponent = () => null;\n\nfunction AssistantMessageContent({\n message,\n components,\n showReasoning = true,\n showRetrievals = true,\n showSources = true,\n}: {\n message: UiAssistantMessage;\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n showReasoning?: AiChatAssistantMessageProps[\"showReasoning\"];\n showRetrievals?: AiChatAssistantMessageProps[\"showRetrievals\"];\n showSources?: AiChatAssistantMessageProps[\"showSources\"];\n}) {\n const componentsRef = useRef(components);\n let showKnowledgeRetrievals =\n typeof showRetrievals === \"object\"\n ? showRetrievals.knowledge\n : showRetrievals;\n let showWebRetrievals =\n typeof showRetrievals === \"object\" ? showRetrievals.web : showRetrievals;\n\n // Both default to `true` if not specified, even with the object form (e.g. `{ web: \"during\" }`, `knowledge` is still `true`)\n showKnowledgeRetrievals ??= true;\n showWebRetrievals ??= true;\n\n const BoundTextPart = useMemo(\n () => (props: TextPartProps) => (\n <TextPart {...props} components={componentsRef.current} />\n ),\n []\n );\n const BoundReasoningPart = useMemo(\n () => (props: ReasoningPartProps) => {\n if (\n !showReasoning ||\n (showReasoning === \"during\" && !props.isStreaming)\n ) {\n return null;\n }\n\n return <ReasoningPart {...props} components={componentsRef.current} />;\n },\n [showReasoning]\n );\n const BoundRetrievalPart = useMemo(\n () => (props: RetrievalPartProps) => {\n if (props.part.kind === \"knowledge\") {\n if (\n !showKnowledgeRetrievals ||\n (showKnowledgeRetrievals === \"during\" && !props.isStreaming)\n ) {\n return null;\n }\n } else if (props.part.kind === \"web\") {\n if (\n !showWebRetrievals ||\n (showWebRetrievals === \"during\" && !props.isStreaming)\n ) {\n return null;\n }\n }\n\n return <RetrievalPart {...props} />;\n },\n [showKnowledgeRetrievals, showWebRetrievals]\n );\n\n return (\n <AiMessage.Content\n message={message}\n components={{\n TextPart: BoundTextPart,\n ReasoningPart: BoundReasoningPart,\n RetrievalPart: BoundRetrievalPart,\n SourcesPart: showSources ? SourcesPart : NoopComponent,\n ToolInvocationPart,\n }}\n className=\"lb-ai-chat-message-content\"\n />\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * TextPart\n * -----------------------------------------------------------------------------------------------*/\nfunction TextPart({ part, components, isStreaming }: TextPartProps) {\n return (\n <Prose\n content={part.text}\n className=\"lb-ai-chat-message-text\"\n components={components}\n partial={isStreaming}\n />\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ReasoningPart\n * -----------------------------------------------------------------------------------------------*/\nfunction ReasoningPart({ part, isStreaming, components }: ReasoningPartProps) {\n // Start collapsed if reasoning is already done.\n const [isOpen, setIsOpen] = useState(isStreaming);\n const $ = useOverrides();\n\n // Auto-collapse when reasoning is done, while still allowing the user to\n // open/collapse it manually during and after it's done.\n useEffect(() => {\n if (!isStreaming) {\n setIsOpen(false);\n }\n }, [isStreaming]);\n\n return (\n <Collapsible.Root\n className=\"lb-collapsible lb-ai-chat-message-reasoning\"\n open={isOpen}\n onOpenChange={setIsOpen}\n >\n <Collapsible.Trigger\n className={cn(\n \"lb-collapsible-trigger\",\n isStreaming && \"lb-ai-chat-pending\"\n )}\n >\n {$.AI_CHAT_MESSAGE_REASONING(isStreaming, part)}\n <span className=\"lb-collapsible-chevron lb-icon-container\">\n <ChevronRightIcon />\n </span>\n </Collapsible.Trigger>\n\n <Collapsible.Content className=\"lb-collapsible-content\">\n <Prose\n content={part.text}\n partial={isStreaming}\n components={components}\n />\n </Collapsible.Content>\n </Collapsible.Root>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * RetrievalPart\n * -----------------------------------------------------------------------------------------------*/\nfunction RetrievalPartFavicons({\n sources,\n maxSources,\n}: {\n sources: AiWebRetrievalPart[\"sources\"];\n maxSources?: number;\n}) {\n if (!sources) {\n return null;\n }\n\n const visibleSources =\n typeof maxSources === \"number\" ? sources.slice(0, maxSources) : sources;\n\n return (\n <div className=\"lb-ai-chat-message-retrieval-favicons\">\n {visibleSources.map((source) => (\n <Favicon key={source.url} url={source.url} />\n ))}\n </div>\n );\n}\n\nfunction RetrievalPart({ part, isStreaming }: RetrievalPartProps) {\n const $ = useOverrides();\n let content: ReactNode = null;\n\n if (part.kind === \"web\" && part.sources && part.sources.length > 0) {\n content = (\n <AiChatSources\n className=\"lb-ai-chat-message-retrieval-sources\"\n sources={part.sources}\n />\n );\n }\n\n return (\n <Collapsible.Root\n className=\"lb-collapsible lb-ai-chat-message-retrieval\"\n defaultOpen={false}\n disabled={!content}\n >\n <Collapsible.Trigger\n className={cn(\n \"lb-collapsible-trigger\",\n isStreaming && \"lb-ai-chat-pending\"\n )}\n >\n {$.AI_CHAT_MESSAGE_RETRIEVAL(isStreaming, part)}\n {part.kind === \"web\" ? (\n <RetrievalPartFavicons sources={part.sources} maxSources={3} />\n ) : null}\n {content ? (\n <span className=\"lb-collapsible-chevron lb-icon-container\">\n <ChevronRightIcon />\n </span>\n ) : null}\n </Collapsible.Trigger>\n\n {content ? (\n <Collapsible.Content className=\"lb-collapsible-content\">\n {content}\n </Collapsible.Content>\n ) : null}\n </Collapsible.Root>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ToolInvocationPart\n * -----------------------------------------------------------------------------------------------*/\nfunction ToolInvocationPart({\n part,\n message,\n}: AiMessageContentToolInvocationPartProps) {\n return (\n <div className=\"lb-ai-chat-message-tool-invocation\">\n <ErrorBoundary\n fallback={\n <div className=\"lb-ai-chat-message-error\">\n <span className=\"lb-icon-container\">\n <WarningIcon />\n </span>\n <p>\n Failed to render tool call result for <code>{part.name}</code>.\n See console for details.\n </p>\n </div>\n }\n >\n <AiMessageToolInvocation part={part} message={message} />\n </ErrorBoundary>\n </div>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * SourcesPart\n * -----------------------------------------------------------------------------------------------*/\nfunction SourcesPart({ part }: SourcesPartProps) {\n return (\n <AiChatSources\n className=\"lb-ai-chat-message-sources\"\n sources={part.sources}\n maxSources={5}\n />\n );\n}\n"],"names":["isOpen","AiMessage.Content","Collapsible.Root","Collapsible.Trigger","Collapsible.Content"],"mappings":"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"}
1
+ {"version":3,"file":"AiChatAssistantMessage.js","sources":["../../../src/components/internal/AiChatAssistantMessage.tsx"],"sourcesContent":["import type {\n AiAssistantMessage,\n AiRetrievalPart,\n AiWebRetrievalPart,\n WithNavigation,\n} from \"@liveblocks/core\";\nimport { useUrlMetadata } from \"@liveblocks/react\";\nimport {\n type ComponentProps,\n forwardRef,\n memo,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { type GlobalComponents, useComponents } from \"../../components\";\nimport { ChevronRightIcon } from \"../../icons/ChevronRight\";\nimport { WarningIcon } from \"../../icons/Warning\";\nimport {\n type AiChatMessageOverrides,\n type GlobalOverrides,\n OverridesProvider,\n useOverrides,\n} from \"../../overrides\";\nimport * as AiMessage from \"../../primitives/AiMessage\";\nimport { AiMessageToolInvocation } from \"../../primitives/AiMessage/tool-invocation\";\nimport type {\n AiMessageContentReasoningPartProps,\n AiMessageContentRetrievalPartProps,\n AiMessageContentSourcesPartProps,\n AiMessageContentTextPartProps,\n AiMessageContentToolInvocationPartProps,\n} from \"../../primitives/AiMessage/types\";\nimport * as Collapsible from \"../../primitives/Collapsible\";\nimport type { MarkdownComponents } from \"../../primitives/Markdown\";\nimport { cn } from \"../../utils/cn\";\nimport { ErrorBoundary } from \"../../utils/ErrorBoundary\";\nimport { Favicon } from \"./Favicon\";\nimport { Prose } from \"./Prose\";\n\ntype UiAssistantMessage = WithNavigation<AiAssistantMessage>;\n\ntype AiChatAssistantMessageComponents = {\n /**\n * The components used to render Markdown content.\n */\n markdown?: Partial<MarkdownComponents>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AiChatAssistantMessage\n * -----------------------------------------------------------------------------------------------*/\nexport interface AiChatAssistantMessageProps extends ComponentProps<\"div\"> {\n /**\n * The message to display.\n */\n message: UiAssistantMessage;\n\n /**\n * How to show or hide reasoning.\n */\n showReasoning?: boolean | \"during\";\n\n /**\n * How to show or hide retrievals.\n */\n showRetrievals?:\n | boolean\n | \"during\"\n | Record<AiRetrievalPart[\"kind\"], boolean | \"during\">;\n\n /**\n * Whether to show sources.\n */\n showSources?: boolean;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<GlobalOverrides & AiChatMessageOverrides>;\n\n /**\n * Override the component's components.\n */\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface TextPartProps extends AiMessageContentTextPartProps {\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface ReasoningPartProps extends AiMessageContentReasoningPartProps {\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface RetrievalPartProps extends AiMessageContentRetrievalPartProps {\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface SourcesPartProps extends AiMessageContentSourcesPartProps {\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n}\n\ninterface AiChatSourceProps extends ComponentProps<\"a\"> {\n source: { url: string; title?: string };\n components?: Partial<GlobalComponents>;\n}\n\ninterface AiChatSourcesProps extends ComponentProps<\"ol\"> {\n sources: AiChatSourceProps[\"source\"][];\n maxSources?: number;\n components?: Partial<GlobalComponents>;\n}\n\nfunction getUrlDomain(url: string) {\n return new URL(url).hostname;\n}\n\nfunction AiChatSource({\n source,\n components,\n className,\n ...props\n}: AiChatSourceProps) {\n const { Anchor } = useComponents(components);\n const { metadata } = useUrlMetadata(source.url);\n const label = useMemo(() => {\n return source.title ?? metadata?.title ?? getUrlDomain(source.url);\n }, [source.title, source.url, metadata?.title]);\n\n return (\n <Anchor\n href={source.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\"lb-ai-chat-source\", className)}\n {...props}\n >\n <Favicon url={source.url} className=\"lb-ai-chat-source-favicon\" />\n <span className=\"lb-ai-chat-source-label\">{label}</span>\n </Anchor>\n );\n}\n\nfunction AiChatSources({\n sources: allSources,\n maxSources,\n components,\n className,\n ...props\n}: AiChatSourcesProps) {\n const $ = useOverrides();\n const [isOpen, setOpen] = useState(false);\n const visibleSources =\n typeof maxSources === \"number\" && !isOpen\n ? allSources.slice(0, maxSources)\n : allSources;\n\n const handleToggle = useCallback(() => {\n setOpen((isOpen) => !isOpen);\n }, []);\n\n return (\n <ol className={cn(\"lb-ai-chat-sources\", className)} {...props}>\n {visibleSources.map((source, index) => {\n return (\n <li key={`${index}-${source.url}`}>\n <AiChatSource source={source} components={components} />\n </li>\n );\n })}\n\n {visibleSources.length !== allSources.length ? (\n <li>\n <button className=\"lb-ai-chat-sources-more\" onClick={handleToggle}>\n <span className=\"lb-ai-chat-sources-more-label\">\n + {$.LIST_REMAINING(allSources.length - visibleSources.length)}\n </span>\n </button>\n </li>\n ) : null}\n </ol>\n );\n}\n\nexport const AiChatAssistantMessage = memo(\n forwardRef<HTMLDivElement, AiChatAssistantMessageProps>(\n (\n {\n message,\n className,\n overrides,\n components,\n showReasoning,\n showRetrievals,\n showSources,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n\n let children: ReactNode = null;\n\n const messageContent = (\n <AssistantMessageContent\n message={message}\n components={components}\n showReasoning={showReasoning}\n showRetrievals={showRetrievals}\n showSources={showSources}\n />\n );\n\n if (message.deletedAt !== undefined) {\n children = (\n <div className=\"lb-ai-chat-message-deleted\">\n {$.AI_CHAT_MESSAGE_DELETED}\n </div>\n );\n } else if (\n message.status === \"generating\" ||\n message.status === \"awaiting-tool\"\n ) {\n if (message.contentSoFar.length === 0) {\n children = (\n <div className=\"lb-ai-chat-message-thinking lb-ai-chat-pending\">\n {$.AI_CHAT_MESSAGE_THINKING}\n </div>\n );\n } else {\n children = messageContent;\n }\n } else if (message.status === \"completed\") {\n children = messageContent;\n } else if (message.status === \"failed\") {\n // Do not include the error message if the user aborted the request.\n if (message.errorReason === \"Aborted by user\") {\n children = messageContent;\n } else {\n children = (\n <>\n {messageContent}\n\n <div className=\"lb-ai-chat-message-error\">\n <span className=\"lb-icon-container\">\n <WarningIcon />\n </span>\n {message.errorReason}\n </div>\n </>\n );\n }\n }\n\n return (\n <div\n className={cn(\n \"lb-ai-chat-message lb-ai-chat-assistant-message\",\n className\n )}\n {...props}\n ref={forwardedRef}\n >\n <OverridesProvider overrides={overrides}>\n {children}\n </OverridesProvider>\n </div>\n );\n }\n )\n);\n\nconst NoopComponent = () => null;\n\nfunction AssistantMessageContent({\n message,\n components,\n showReasoning = true,\n showRetrievals = true,\n showSources = true,\n}: {\n message: UiAssistantMessage;\n components?: Partial<GlobalComponents & AiChatAssistantMessageComponents>;\n showReasoning?: AiChatAssistantMessageProps[\"showReasoning\"];\n showRetrievals?: AiChatAssistantMessageProps[\"showRetrievals\"];\n showSources?: AiChatAssistantMessageProps[\"showSources\"];\n}) {\n const componentsRef = useRef(components);\n let showKnowledgeRetrievals =\n typeof showRetrievals === \"object\"\n ? showRetrievals.knowledge\n : showRetrievals;\n let showWebRetrievals =\n typeof showRetrievals === \"object\" ? showRetrievals.web : showRetrievals;\n\n // Both default to `true` if not specified, even with the object form (e.g. `{ web: \"during\" }`, `knowledge` is still `true`)\n showKnowledgeRetrievals ??= true;\n showWebRetrievals ??= true;\n\n const BoundTextPart = useMemo(\n () => (props: TextPartProps) => (\n <TextPart {...props} components={componentsRef.current} />\n ),\n []\n );\n const BoundReasoningPart = useMemo(\n () => (props: ReasoningPartProps) => {\n if (\n !showReasoning ||\n (showReasoning === \"during\" && !props.isStreaming)\n ) {\n return null;\n }\n\n return <ReasoningPart {...props} components={componentsRef.current} />;\n },\n [showReasoning]\n );\n const BoundRetrievalPart = useMemo(\n () => (props: RetrievalPartProps) => {\n if (props.part.kind === \"knowledge\") {\n if (\n !showKnowledgeRetrievals ||\n (showKnowledgeRetrievals === \"during\" && !props.isStreaming)\n ) {\n return null;\n }\n } else if (props.part.kind === \"web\") {\n if (\n !showWebRetrievals ||\n (showWebRetrievals === \"during\" && !props.isStreaming)\n ) {\n return null;\n }\n }\n\n return <RetrievalPart {...props} />;\n },\n [showKnowledgeRetrievals, showWebRetrievals]\n );\n\n return (\n <AiMessage.Content\n message={message}\n components={{\n TextPart: BoundTextPart,\n ReasoningPart: BoundReasoningPart,\n RetrievalPart: BoundRetrievalPart,\n SourcesPart: showSources ? SourcesPart : NoopComponent,\n ToolInvocationPart,\n }}\n className=\"lb-ai-chat-message-content\"\n />\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * TextPart\n * -----------------------------------------------------------------------------------------------*/\nfunction TextPart({ part, components, isStreaming }: TextPartProps) {\n return (\n <Prose\n content={part.text}\n className=\"lb-ai-chat-message-text\"\n components={components}\n partial={isStreaming}\n />\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ReasoningPart\n * -----------------------------------------------------------------------------------------------*/\nfunction ReasoningPart({ part, isStreaming, components }: ReasoningPartProps) {\n // Start collapsed if reasoning is already done.\n const [isOpen, setIsOpen] = useState(isStreaming);\n const $ = useOverrides();\n\n // Auto-collapse when reasoning is done, while still allowing the user to\n // open/collapse it manually during and after it's done.\n useEffect(() => {\n if (!isStreaming) {\n setIsOpen(false);\n }\n }, [isStreaming]);\n\n return (\n <Collapsible.Root\n className=\"lb-collapsible lb-ai-chat-message-reasoning\"\n open={isOpen}\n onOpenChange={setIsOpen}\n >\n <Collapsible.Trigger\n className={cn(\n \"lb-collapsible-trigger\",\n isStreaming && \"lb-ai-chat-pending\"\n )}\n >\n {$.AI_CHAT_MESSAGE_REASONING(isStreaming, part)}\n <span className=\"lb-collapsible-chevron lb-icon-container\">\n <ChevronRightIcon />\n </span>\n </Collapsible.Trigger>\n\n <Collapsible.Content className=\"lb-collapsible-content\">\n <Prose\n content={part.text}\n partial={isStreaming}\n components={components}\n />\n </Collapsible.Content>\n </Collapsible.Root>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * RetrievalPart\n * -----------------------------------------------------------------------------------------------*/\nfunction RetrievalPartFavicons({\n sources,\n maxSources,\n}: {\n sources: AiWebRetrievalPart[\"sources\"];\n maxSources?: number;\n}) {\n if (!sources) {\n return null;\n }\n\n const visibleSources =\n typeof maxSources === \"number\" ? sources.slice(0, maxSources) : sources;\n\n return (\n <div className=\"lb-ai-chat-message-retrieval-favicons\">\n {visibleSources.map((source) => (\n <Favicon key={source.url} url={source.url} />\n ))}\n </div>\n );\n}\n\nfunction RetrievalPart({ part, isStreaming }: RetrievalPartProps) {\n const $ = useOverrides();\n let content: ReactNode = null;\n\n if (part.kind === \"web\" && part.sources && part.sources.length > 0) {\n content = (\n <AiChatSources\n className=\"lb-ai-chat-message-retrieval-sources\"\n sources={part.sources}\n />\n );\n }\n\n return (\n <Collapsible.Root\n className=\"lb-collapsible lb-ai-chat-message-retrieval\"\n defaultOpen={false}\n disabled={!content}\n >\n <Collapsible.Trigger\n className={cn(\n \"lb-collapsible-trigger\",\n isStreaming && \"lb-ai-chat-pending\"\n )}\n >\n {$.AI_CHAT_MESSAGE_RETRIEVAL(isStreaming, part)}\n {part.kind === \"web\" ? (\n <RetrievalPartFavicons sources={part.sources} maxSources={3} />\n ) : null}\n {content ? (\n <span className=\"lb-collapsible-chevron lb-icon-container\">\n <ChevronRightIcon />\n </span>\n ) : null}\n </Collapsible.Trigger>\n\n {content ? (\n <Collapsible.Content className=\"lb-collapsible-content\">\n {content}\n </Collapsible.Content>\n ) : null}\n </Collapsible.Root>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ToolInvocationPart\n * -----------------------------------------------------------------------------------------------*/\nfunction ToolInvocationPart({\n part,\n message,\n}: AiMessageContentToolInvocationPartProps) {\n return (\n <div className=\"lb-ai-chat-message-tool-invocation\">\n <ErrorBoundary\n fallback={\n <div className=\"lb-ai-chat-message-error\">\n <span className=\"lb-icon-container\">\n <WarningIcon />\n </span>\n <p>\n Failed to render tool call result for <code>{part.name}</code>.\n See console for details.\n </p>\n </div>\n }\n >\n <AiMessageToolInvocation part={part} message={message} />\n </ErrorBoundary>\n </div>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * SourcesPart\n * -----------------------------------------------------------------------------------------------*/\nfunction SourcesPart({ part }: SourcesPartProps) {\n return (\n <AiChatSources\n className=\"lb-ai-chat-message-sources\"\n sources={part.sources}\n maxSources={5}\n />\n );\n}\n"],"names":["isOpen","AiMessage.Content","Collapsible.Root","Collapsible.Trigger","Collapsible.Content"],"mappings":"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"}
@@ -8,37 +8,40 @@ var cn = require('../../utils/cn.cjs');
8
8
  var Prose = require('./Prose.cjs');
9
9
 
10
10
  function TextPart({ part, components }) {
11
- return /* @__PURE__ */ jsxRuntime.jsx(Prose.Prose, {
12
- content: part.text,
13
- className: "lb-ai-chat-message-text",
14
- components
15
- });
11
+ return /* @__PURE__ */ jsxRuntime.jsx(
12
+ Prose.Prose,
13
+ {
14
+ content: part.text,
15
+ className: "lb-ai-chat-message-text",
16
+ components
17
+ }
18
+ );
16
19
  }
17
20
  const AiChatUserMessage = react.memo(
18
21
  react.forwardRef(
19
22
  ({ message, className, overrides: overrides$1, components, ...props }, forwardedRef) => {
20
23
  const $ = overrides.useOverrides(overrides$1);
21
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
22
- ref: forwardedRef,
23
- className: cn.cn(
24
- "lb-ai-chat-message lb-ai-chat-user-message",
25
- className
26
- ),
27
- ...props,
28
- children: message.deletedAt !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", {
29
- className: "lb-ai-chat-message-deleted",
30
- children: $.AI_CHAT_MESSAGE_DELETED
31
- }) : /* @__PURE__ */ jsxRuntime.jsx(index.Content, {
32
- className: "lb-ai-chat-message-content",
33
- message,
34
- components: {
35
- TextPart: (props2) => /* @__PURE__ */ jsxRuntime.jsx(TextPart, {
36
- ...props2,
37
- components
38
- })
39
- }
40
- })
41
- });
24
+ return /* @__PURE__ */ jsxRuntime.jsx(
25
+ "div",
26
+ {
27
+ ref: forwardedRef,
28
+ className: cn.cn(
29
+ "lb-ai-chat-message lb-ai-chat-user-message",
30
+ className
31
+ ),
32
+ ...props,
33
+ children: message.deletedAt !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lb-ai-chat-message-deleted", children: $.AI_CHAT_MESSAGE_DELETED }) : /* @__PURE__ */ jsxRuntime.jsx(
34
+ index.Content,
35
+ {
36
+ className: "lb-ai-chat-message-content",
37
+ message,
38
+ components: {
39
+ TextPart: (props2) => /* @__PURE__ */ jsxRuntime.jsx(TextPart, { ...props2, components })
40
+ }
41
+ }
42
+ )
43
+ }
44
+ );
42
45
  }
43
46
  )
44
47
  );