@liveblocks/react-ui 3.9.1-tiptap1 → 3.9.2-tiptap1

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 (449) 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.js +1 -1
  449. package/package.json +4 -4
@@ -29,23 +29,20 @@ function AiChatSource({
29
29
  const label = react$1.useMemo(() => {
30
30
  return source.title ?? metadata?.title ?? getUrlDomain(source.url);
31
31
  }, [source.title, source.url, metadata?.title]);
32
- return /* @__PURE__ */ jsxRuntime.jsxs(Anchor, {
33
- href: source.url,
34
- target: "_blank",
35
- rel: "noopener noreferrer",
36
- className: cn.cn("lb-ai-chat-source", className),
37
- ...props,
38
- children: [
39
- /* @__PURE__ */ jsxRuntime.jsx(Favicon.Favicon, {
40
- url: source.url,
41
- className: "lb-ai-chat-source-favicon"
42
- }),
43
- /* @__PURE__ */ jsxRuntime.jsx("span", {
44
- className: "lb-ai-chat-source-label",
45
- children: label
46
- })
47
- ]
48
- });
32
+ return /* @__PURE__ */ jsxRuntime.jsxs(
33
+ Anchor,
34
+ {
35
+ href: source.url,
36
+ target: "_blank",
37
+ rel: "noopener noreferrer",
38
+ className: cn.cn("lb-ai-chat-source", className),
39
+ ...props,
40
+ children: [
41
+ /* @__PURE__ */ jsxRuntime.jsx(Favicon.Favicon, { url: source.url, className: "lb-ai-chat-source-favicon" }),
42
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "lb-ai-chat-source-label", children: label })
43
+ ]
44
+ }
45
+ );
49
46
  }
50
47
  function AiChatSources({
51
48
  sources: allSources,
@@ -60,33 +57,15 @@ function AiChatSources({
60
57
  const handleToggle = react$1.useCallback(() => {
61
58
  setOpen((isOpen2) => !isOpen2);
62
59
  }, []);
63
- return /* @__PURE__ */ jsxRuntime.jsxs("ol", {
64
- className: cn.cn("lb-ai-chat-sources", className),
65
- ...props,
66
- children: [
67
- visibleSources.map((source, index) => {
68
- return /* @__PURE__ */ jsxRuntime.jsx("li", {
69
- children: /* @__PURE__ */ jsxRuntime.jsx(AiChatSource, {
70
- source,
71
- components
72
- })
73
- }, `${index}-${source.url}`);
74
- }),
75
- visibleSources.length !== allSources.length ? /* @__PURE__ */ jsxRuntime.jsx("li", {
76
- children: /* @__PURE__ */ jsxRuntime.jsx("button", {
77
- className: "lb-ai-chat-sources-more",
78
- onClick: handleToggle,
79
- children: /* @__PURE__ */ jsxRuntime.jsxs("span", {
80
- className: "lb-ai-chat-sources-more-label",
81
- children: [
82
- "+ ",
83
- $.LIST_REMAINING(allSources.length - visibleSources.length)
84
- ]
85
- })
86
- })
87
- }) : null
88
- ]
89
- });
60
+ return /* @__PURE__ */ jsxRuntime.jsxs("ol", { className: cn.cn("lb-ai-chat-sources", className), ...props, children: [
61
+ visibleSources.map((source, index) => {
62
+ return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(AiChatSource, { source, components }) }, `${index}-${source.url}`);
63
+ }),
64
+ visibleSources.length !== allSources.length ? /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("button", { className: "lb-ai-chat-sources-more", onClick: handleToggle, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "lb-ai-chat-sources-more-label", children: [
65
+ "+ ",
66
+ $.LIST_REMAINING(allSources.length - visibleSources.length)
67
+ ] }) }) }) : null
68
+ ] });
90
69
  }
91
70
  const AiChatAssistantMessage = react$1.memo(
92
71
  react$1.forwardRef(
@@ -102,24 +81,21 @@ const AiChatAssistantMessage = react$1.memo(
102
81
  }, forwardedRef) => {
103
82
  const $ = overrides.useOverrides(overrides$1);
104
83
  let children = null;
105
- const messageContent = /* @__PURE__ */ jsxRuntime.jsx(AssistantMessageContent, {
106
- message,
107
- components,
108
- showReasoning,
109
- showRetrievals,
110
- showSources
111
- });
84
+ const messageContent = /* @__PURE__ */ jsxRuntime.jsx(
85
+ AssistantMessageContent,
86
+ {
87
+ message,
88
+ components,
89
+ showReasoning,
90
+ showRetrievals,
91
+ showSources
92
+ }
93
+ );
112
94
  if (message.deletedAt !== void 0) {
113
- children = /* @__PURE__ */ jsxRuntime.jsx("div", {
114
- className: "lb-ai-chat-message-deleted",
115
- children: $.AI_CHAT_MESSAGE_DELETED
116
- });
95
+ children = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lb-ai-chat-message-deleted", children: $.AI_CHAT_MESSAGE_DELETED });
117
96
  } else if (message.status === "generating" || message.status === "awaiting-tool") {
118
97
  if (message.contentSoFar.length === 0) {
119
- children = /* @__PURE__ */ jsxRuntime.jsx("div", {
120
- className: "lb-ai-chat-message-thinking lb-ai-chat-pending",
121
- children: $.AI_CHAT_MESSAGE_THINKING
122
- });
98
+ children = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lb-ai-chat-message-thinking lb-ai-chat-pending", children: $.AI_CHAT_MESSAGE_THINKING });
123
99
  } else {
124
100
  children = messageContent;
125
101
  }
@@ -129,35 +105,27 @@ const AiChatAssistantMessage = react$1.memo(
129
105
  if (message.errorReason === "Aborted by user") {
130
106
  children = messageContent;
131
107
  } else {
132
- children = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
133
- children: [
134
- messageContent,
135
- /* @__PURE__ */ jsxRuntime.jsxs("div", {
136
- className: "lb-ai-chat-message-error",
137
- children: [
138
- /* @__PURE__ */ jsxRuntime.jsx("span", {
139
- className: "lb-icon-container",
140
- children: /* @__PURE__ */ jsxRuntime.jsx(Warning.WarningIcon, {})
141
- }),
142
- message.errorReason
143
- ]
144
- })
145
- ]
146
- });
108
+ children = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
109
+ messageContent,
110
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lb-ai-chat-message-error", children: [
111
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "lb-icon-container", children: /* @__PURE__ */ jsxRuntime.jsx(Warning.WarningIcon, {}) }),
112
+ message.errorReason
113
+ ] })
114
+ ] });
147
115
  }
148
116
  }
149
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
150
- className: cn.cn(
151
- "lb-ai-chat-message lb-ai-chat-assistant-message",
152
- className
153
- ),
154
- ...props,
155
- ref: forwardedRef,
156
- children: /* @__PURE__ */ jsxRuntime.jsx(overrides.OverridesProvider, {
157
- overrides: overrides$1,
158
- children
159
- })
160
- });
117
+ return /* @__PURE__ */ jsxRuntime.jsx(
118
+ "div",
119
+ {
120
+ className: cn.cn(
121
+ "lb-ai-chat-message lb-ai-chat-assistant-message",
122
+ className
123
+ ),
124
+ ...props,
125
+ ref: forwardedRef,
126
+ children: /* @__PURE__ */ jsxRuntime.jsx(overrides.OverridesProvider, { overrides: overrides$1, children })
127
+ }
128
+ );
161
129
  }
162
130
  )
163
131
  );
@@ -175,10 +143,7 @@ function AssistantMessageContent({
175
143
  showKnowledgeRetrievals ??= true;
176
144
  showWebRetrievals ??= true;
177
145
  const BoundTextPart = react$1.useMemo(
178
- () => (props) => /* @__PURE__ */ jsxRuntime.jsx(TextPart, {
179
- ...props,
180
- components: componentsRef.current
181
- }),
146
+ () => (props) => /* @__PURE__ */ jsxRuntime.jsx(TextPart, { ...props, components: componentsRef.current }),
182
147
  []
183
148
  );
184
149
  const BoundReasoningPart = react$1.useMemo(
@@ -186,10 +151,7 @@ function AssistantMessageContent({
186
151
  if (!showReasoning || showReasoning === "during" && !props.isStreaming) {
187
152
  return null;
188
153
  }
189
- return /* @__PURE__ */ jsxRuntime.jsx(ReasoningPart, {
190
- ...props,
191
- components: componentsRef.current
192
- });
154
+ return /* @__PURE__ */ jsxRuntime.jsx(ReasoningPart, { ...props, components: componentsRef.current });
193
155
  },
194
156
  [showReasoning]
195
157
  );
@@ -204,31 +166,35 @@ function AssistantMessageContent({
204
166
  return null;
205
167
  }
206
168
  }
207
- return /* @__PURE__ */ jsxRuntime.jsx(RetrievalPart, {
208
- ...props
209
- });
169
+ return /* @__PURE__ */ jsxRuntime.jsx(RetrievalPart, { ...props });
210
170
  },
211
171
  [showKnowledgeRetrievals, showWebRetrievals]
212
172
  );
213
- return /* @__PURE__ */ jsxRuntime.jsx(index.Content, {
214
- message,
215
- components: {
216
- TextPart: BoundTextPart,
217
- ReasoningPart: BoundReasoningPart,
218
- RetrievalPart: BoundRetrievalPart,
219
- SourcesPart: showSources ? SourcesPart : NoopComponent,
220
- ToolInvocationPart
221
- },
222
- className: "lb-ai-chat-message-content"
223
- });
173
+ return /* @__PURE__ */ jsxRuntime.jsx(
174
+ index.Content,
175
+ {
176
+ message,
177
+ components: {
178
+ TextPart: BoundTextPart,
179
+ ReasoningPart: BoundReasoningPart,
180
+ RetrievalPart: BoundRetrievalPart,
181
+ SourcesPart: showSources ? SourcesPart : NoopComponent,
182
+ ToolInvocationPart
183
+ },
184
+ className: "lb-ai-chat-message-content"
185
+ }
186
+ );
224
187
  }
225
188
  function TextPart({ part, components, isStreaming }) {
226
- return /* @__PURE__ */ jsxRuntime.jsx(Prose.Prose, {
227
- content: part.text,
228
- className: "lb-ai-chat-message-text",
229
- components,
230
- partial: isStreaming
231
- });
189
+ return /* @__PURE__ */ jsxRuntime.jsx(
190
+ Prose.Prose,
191
+ {
192
+ content: part.text,
193
+ className: "lb-ai-chat-message-text",
194
+ components,
195
+ partial: isStreaming
196
+ }
197
+ );
232
198
  }
233
199
  function ReasoningPart({ part, isStreaming, components }) {
234
200
  const [isOpen, setIsOpen] = react$1.useState(isStreaming);
@@ -238,34 +204,37 @@ function ReasoningPart({ part, isStreaming, components }) {
238
204
  setIsOpen(false);
239
205
  }
240
206
  }, [isStreaming]);
241
- return /* @__PURE__ */ jsxRuntime.jsxs(index$1.Root, {
242
- className: "lb-collapsible lb-ai-chat-message-reasoning",
243
- open: isOpen,
244
- onOpenChange: setIsOpen,
245
- children: [
246
- /* @__PURE__ */ jsxRuntime.jsxs(index$1.Trigger, {
247
- className: cn.cn(
248
- "lb-collapsible-trigger",
249
- isStreaming && "lb-ai-chat-pending"
207
+ return /* @__PURE__ */ jsxRuntime.jsxs(
208
+ index$1.Root,
209
+ {
210
+ className: "lb-collapsible lb-ai-chat-message-reasoning",
211
+ open: isOpen,
212
+ onOpenChange: setIsOpen,
213
+ children: [
214
+ /* @__PURE__ */ jsxRuntime.jsxs(
215
+ index$1.Trigger,
216
+ {
217
+ className: cn.cn(
218
+ "lb-collapsible-trigger",
219
+ isStreaming && "lb-ai-chat-pending"
220
+ ),
221
+ children: [
222
+ $.AI_CHAT_MESSAGE_REASONING(isStreaming, part),
223
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "lb-collapsible-chevron lb-icon-container", children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight.ChevronRightIcon, {}) })
224
+ ]
225
+ }
250
226
  ),
251
- children: [
252
- $.AI_CHAT_MESSAGE_REASONING(isStreaming, part),
253
- /* @__PURE__ */ jsxRuntime.jsx("span", {
254
- className: "lb-collapsible-chevron lb-icon-container",
255
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight.ChevronRightIcon, {})
256
- })
257
- ]
258
- }),
259
- /* @__PURE__ */ jsxRuntime.jsx(index$1.Content, {
260
- className: "lb-collapsible-content",
261
- children: /* @__PURE__ */ jsxRuntime.jsx(Prose.Prose, {
262
- content: part.text,
263
- partial: isStreaming,
264
- components
265
- })
266
- })
267
- ]
268
- });
227
+ /* @__PURE__ */ jsxRuntime.jsx(index$1.Content, { className: "lb-collapsible-content", children: /* @__PURE__ */ jsxRuntime.jsx(
228
+ Prose.Prose,
229
+ {
230
+ content: part.text,
231
+ partial: isStreaming,
232
+ components
233
+ }
234
+ ) })
235
+ ]
236
+ }
237
+ );
269
238
  }
270
239
  function RetrievalPartFavicons({
271
240
  sources,
@@ -275,89 +244,74 @@ function RetrievalPartFavicons({
275
244
  return null;
276
245
  }
277
246
  const visibleSources = typeof maxSources === "number" ? sources.slice(0, maxSources) : sources;
278
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
279
- className: "lb-ai-chat-message-retrieval-favicons",
280
- children: visibleSources.map((source) => /* @__PURE__ */ jsxRuntime.jsx(Favicon.Favicon, {
281
- url: source.url
282
- }, source.url))
283
- });
247
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lb-ai-chat-message-retrieval-favicons", children: visibleSources.map((source) => /* @__PURE__ */ jsxRuntime.jsx(Favicon.Favicon, { url: source.url }, source.url)) });
284
248
  }
285
249
  function RetrievalPart({ part, isStreaming }) {
286
250
  const $ = overrides.useOverrides();
287
251
  let content = null;
288
252
  if (part.kind === "web" && part.sources && part.sources.length > 0) {
289
- content = /* @__PURE__ */ jsxRuntime.jsx(AiChatSources, {
290
- className: "lb-ai-chat-message-retrieval-sources",
291
- sources: part.sources
292
- });
253
+ content = /* @__PURE__ */ jsxRuntime.jsx(
254
+ AiChatSources,
255
+ {
256
+ className: "lb-ai-chat-message-retrieval-sources",
257
+ sources: part.sources
258
+ }
259
+ );
293
260
  }
294
- return /* @__PURE__ */ jsxRuntime.jsxs(index$1.Root, {
295
- className: "lb-collapsible lb-ai-chat-message-retrieval",
296
- defaultOpen: false,
297
- disabled: !content,
298
- children: [
299
- /* @__PURE__ */ jsxRuntime.jsxs(index$1.Trigger, {
300
- className: cn.cn(
301
- "lb-collapsible-trigger",
302
- isStreaming && "lb-ai-chat-pending"
261
+ return /* @__PURE__ */ jsxRuntime.jsxs(
262
+ index$1.Root,
263
+ {
264
+ className: "lb-collapsible lb-ai-chat-message-retrieval",
265
+ defaultOpen: false,
266
+ disabled: !content,
267
+ children: [
268
+ /* @__PURE__ */ jsxRuntime.jsxs(
269
+ index$1.Trigger,
270
+ {
271
+ className: cn.cn(
272
+ "lb-collapsible-trigger",
273
+ isStreaming && "lb-ai-chat-pending"
274
+ ),
275
+ children: [
276
+ $.AI_CHAT_MESSAGE_RETRIEVAL(isStreaming, part),
277
+ part.kind === "web" ? /* @__PURE__ */ jsxRuntime.jsx(RetrievalPartFavicons, { sources: part.sources, maxSources: 3 }) : null,
278
+ content ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "lb-collapsible-chevron lb-icon-container", children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight.ChevronRightIcon, {}) }) : null
279
+ ]
280
+ }
303
281
  ),
304
- children: [
305
- $.AI_CHAT_MESSAGE_RETRIEVAL(isStreaming, part),
306
- part.kind === "web" ? /* @__PURE__ */ jsxRuntime.jsx(RetrievalPartFavicons, {
307
- sources: part.sources,
308
- maxSources: 3
309
- }) : null,
310
- content ? /* @__PURE__ */ jsxRuntime.jsx("span", {
311
- className: "lb-collapsible-chevron lb-icon-container",
312
- children: /* @__PURE__ */ jsxRuntime.jsx(ChevronRight.ChevronRightIcon, {})
313
- }) : null
314
- ]
315
- }),
316
- content ? /* @__PURE__ */ jsxRuntime.jsx(index$1.Content, {
317
- className: "lb-collapsible-content",
318
- children: content
319
- }) : null
320
- ]
321
- });
282
+ content ? /* @__PURE__ */ jsxRuntime.jsx(index$1.Content, { className: "lb-collapsible-content", children: content }) : null
283
+ ]
284
+ }
285
+ );
322
286
  }
323
287
  function ToolInvocationPart({
324
288
  part,
325
289
  message
326
290
  }) {
327
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
328
- className: "lb-ai-chat-message-tool-invocation",
329
- children: /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary.ErrorBoundary, {
330
- fallback: /* @__PURE__ */ jsxRuntime.jsxs("div", {
331
- className: "lb-ai-chat-message-error",
332
- children: [
333
- /* @__PURE__ */ jsxRuntime.jsx("span", {
334
- className: "lb-icon-container",
335
- children: /* @__PURE__ */ jsxRuntime.jsx(Warning.WarningIcon, {})
336
- }),
337
- /* @__PURE__ */ jsxRuntime.jsxs("p", {
338
- children: [
339
- "Failed to render tool call result for ",
340
- /* @__PURE__ */ jsxRuntime.jsx("code", {
341
- children: part.name
342
- }),
343
- ". See console for details."
344
- ]
345
- })
346
- ]
347
- }),
348
- children: /* @__PURE__ */ jsxRuntime.jsx(toolInvocation.AiMessageToolInvocation, {
349
- part,
350
- message
351
- })
352
- })
353
- });
291
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lb-ai-chat-message-tool-invocation", children: /* @__PURE__ */ jsxRuntime.jsx(
292
+ ErrorBoundary.ErrorBoundary,
293
+ {
294
+ fallback: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lb-ai-chat-message-error", children: [
295
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "lb-icon-container", children: /* @__PURE__ */ jsxRuntime.jsx(Warning.WarningIcon, {}) }),
296
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
297
+ "Failed to render tool call result for ",
298
+ /* @__PURE__ */ jsxRuntime.jsx("code", { children: part.name }),
299
+ ". See console for details."
300
+ ] })
301
+ ] }),
302
+ children: /* @__PURE__ */ jsxRuntime.jsx(toolInvocation.AiMessageToolInvocation, { part, message })
303
+ }
304
+ ) });
354
305
  }
355
306
  function SourcesPart({ part }) {
356
- return /* @__PURE__ */ jsxRuntime.jsx(AiChatSources, {
357
- className: "lb-ai-chat-message-sources",
358
- sources: part.sources,
359
- maxSources: 5
360
- });
307
+ return /* @__PURE__ */ jsxRuntime.jsx(
308
+ AiChatSources,
309
+ {
310
+ className: "lb-ai-chat-message-sources",
311
+ sources: part.sources,
312
+ maxSources: 5
313
+ }
314
+ );
361
315
  }
362
316
 
363
317
  exports.AiChatAssistantMessage = AiChatAssistantMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"AiChatAssistantMessage.cjs","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":["components","useComponents","useUrlMetadata","useMemo","jsxs","cn","jsx","Favicon","useOverrides","useState","useCallback","isOpen","memo","forwardRef","overrides","Fragment","WarningIcon","OverridesProvider","useRef","AiMessage.Content","Prose","useEffect","Collapsible.Root","Collapsible.Trigger","ChevronRightIcon","Collapsible.Content","ErrorBoundary","AiMessageToolInvocation"],"mappings":"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"}
1
+ {"version":3,"file":"AiChatAssistantMessage.cjs","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":["components","useComponents","useUrlMetadata","useMemo","jsxs","cn","jsx","Favicon","useOverrides","useState","useCallback","isOpen","memo","forwardRef","overrides","Fragment","WarningIcon","OverridesProvider","useRef","AiMessage.Content","Prose","useEffect","Collapsible.Root","Collapsible.Trigger","ChevronRightIcon","Collapsible.Content","ErrorBoundary","AiMessageToolInvocation"],"mappings":"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"}