@liveblocks/react-ui 3.9.1 → 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.
- package/dist/components/AiChat.cjs +133 -113
- package/dist/components/AiChat.cjs.map +1 -1
- package/dist/components/AiChat.js +133 -113
- package/dist/components/AiChat.js.map +1 -1
- package/dist/components/AiTool.cjs +120 -93
- package/dist/components/AiTool.cjs.map +1 -1
- package/dist/components/AiTool.js +120 -93
- package/dist/components/AiTool.js.map +1 -1
- package/dist/components/Comment.cjs +374 -374
- package/dist/components/Comment.cjs.map +1 -1
- package/dist/components/Comment.js +374 -374
- package/dist/components/Comment.js.map +1 -1
- package/dist/components/Composer.cjs +208 -259
- package/dist/components/Composer.cjs.map +1 -1
- package/dist/components/Composer.js +208 -259
- package/dist/components/Composer.js.map +1 -1
- package/dist/components/HistoryVersionSummary.cjs +28 -25
- package/dist/components/HistoryVersionSummary.cjs.map +1 -1
- package/dist/components/HistoryVersionSummary.js +28 -25
- package/dist/components/HistoryVersionSummary.js.map +1 -1
- package/dist/components/HistoryVersionSummaryList.cjs +9 -9
- package/dist/components/HistoryVersionSummaryList.cjs.map +1 -1
- package/dist/components/HistoryVersionSummaryList.js +9 -9
- package/dist/components/HistoryVersionSummaryList.js.map +1 -1
- package/dist/components/InboxNotification.cjs +264 -239
- package/dist/components/InboxNotification.cjs.map +1 -1
- package/dist/components/InboxNotification.js +264 -239
- package/dist/components/InboxNotification.js.map +1 -1
- package/dist/components/InboxNotificationList.cjs +19 -19
- package/dist/components/InboxNotificationList.cjs.map +1 -1
- package/dist/components/InboxNotificationList.js +19 -19
- package/dist/components/InboxNotificationList.js.map +1 -1
- package/dist/components/Thread.cjs +102 -82
- package/dist/components/Thread.cjs.map +1 -1
- package/dist/components/Thread.js +102 -82
- package/dist/components/Thread.js.map +1 -1
- package/dist/components/internal/AiChatAssistantMessage.cjs +164 -210
- package/dist/components/internal/AiChatAssistantMessage.cjs.map +1 -1
- package/dist/components/internal/AiChatAssistantMessage.js +164 -210
- package/dist/components/internal/AiChatAssistantMessage.js.map +1 -1
- package/dist/components/internal/AiChatUserMessage.cjs +29 -26
- package/dist/components/internal/AiChatUserMessage.cjs.map +1 -1
- package/dist/components/internal/AiChatUserMessage.js +29 -26
- package/dist/components/internal/AiChatUserMessage.js.map +1 -1
- package/dist/components/internal/AiComposer.cjs +37 -53
- package/dist/components/internal/AiComposer.cjs.map +1 -1
- package/dist/components/internal/AiComposer.js +37 -53
- package/dist/components/internal/AiComposer.js.map +1 -1
- package/dist/components/internal/Attachment.cjs +170 -181
- package/dist/components/internal/Attachment.cjs.map +1 -1
- package/dist/components/internal/Attachment.js +170 -181
- package/dist/components/internal/Attachment.js.map +1 -1
- package/dist/components/internal/Attribution.cjs +27 -18
- package/dist/components/internal/Attribution.cjs.map +1 -1
- package/dist/components/internal/Attribution.js +27 -18
- package/dist/components/internal/Attribution.js.map +1 -1
- package/dist/components/internal/Avatar.cjs +30 -32
- package/dist/components/internal/Avatar.cjs.map +1 -1
- package/dist/components/internal/Avatar.js +30 -32
- package/dist/components/internal/Avatar.js.map +1 -1
- package/dist/components/internal/Button.cjs +34 -47
- package/dist/components/internal/Button.cjs.map +1 -1
- package/dist/components/internal/Button.js +34 -47
- package/dist/components/internal/Button.js.map +1 -1
- package/dist/components/internal/CodeBlock.cjs +15 -34
- package/dist/components/internal/CodeBlock.cjs.map +1 -1
- package/dist/components/internal/CodeBlock.js +15 -34
- package/dist/components/internal/CodeBlock.js.map +1 -1
- package/dist/components/internal/Dropdown.cjs +37 -37
- package/dist/components/internal/Dropdown.cjs.map +1 -1
- package/dist/components/internal/Dropdown.js +37 -37
- package/dist/components/internal/Dropdown.js.map +1 -1
- package/dist/components/internal/Emoji.cjs +16 -13
- package/dist/components/internal/Emoji.cjs.map +1 -1
- package/dist/components/internal/Emoji.js +16 -13
- package/dist/components/internal/Emoji.js.map +1 -1
- package/dist/components/internal/EmojiPicker.cjs +61 -102
- package/dist/components/internal/EmojiPicker.cjs.map +1 -1
- package/dist/components/internal/EmojiPicker.js +61 -102
- package/dist/components/internal/EmojiPicker.js.map +1 -1
- package/dist/components/internal/Favicon.cjs +1 -10
- package/dist/components/internal/Favicon.cjs.map +1 -1
- package/dist/components/internal/Favicon.js +1 -10
- package/dist/components/internal/Favicon.js.map +1 -1
- package/dist/components/internal/Group.cjs +12 -9
- package/dist/components/internal/Group.cjs.map +1 -1
- package/dist/components/internal/Group.js +12 -9
- package/dist/components/internal/Group.js.map +1 -1
- package/dist/components/internal/GroupDescription.cjs +1 -5
- package/dist/components/internal/GroupDescription.cjs.map +1 -1
- package/dist/components/internal/GroupDescription.js +1 -5
- package/dist/components/internal/GroupDescription.js.map +1 -1
- package/dist/components/internal/Icon.cjs +18 -15
- package/dist/components/internal/Icon.cjs.map +1 -1
- package/dist/components/internal/Icon.js +18 -15
- package/dist/components/internal/Icon.js.map +1 -1
- package/dist/components/internal/InboxNotificationThread.cjs +38 -50
- package/dist/components/internal/InboxNotificationThread.cjs.map +1 -1
- package/dist/components/internal/InboxNotificationThread.js +38 -50
- package/dist/components/internal/InboxNotificationThread.js.map +1 -1
- package/dist/components/internal/List.cjs +9 -6
- package/dist/components/internal/List.cjs.map +1 -1
- package/dist/components/internal/List.js +9 -6
- package/dist/components/internal/List.js.map +1 -1
- package/dist/components/internal/Prose.cjs +7 -14
- package/dist/components/internal/Prose.cjs.map +1 -1
- package/dist/components/internal/Prose.js +7 -14
- package/dist/components/internal/Prose.js.map +1 -1
- package/dist/components/internal/Room.cjs +9 -6
- package/dist/components/internal/Room.cjs.map +1 -1
- package/dist/components/internal/Room.js +9 -6
- package/dist/components/internal/Room.js.map +1 -1
- package/dist/components/internal/Tooltip.cjs +43 -56
- package/dist/components/internal/Tooltip.cjs.map +1 -1
- package/dist/components/internal/Tooltip.js +43 -56
- package/dist/components/internal/Tooltip.js.map +1 -1
- package/dist/components/internal/User.cjs +12 -9
- package/dist/components/internal/User.cjs.map +1 -1
- package/dist/components/internal/User.js +12 -9
- package/dist/components/internal/User.js.map +1 -1
- package/dist/components.cjs +1 -4
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +1 -4
- package/dist/components.js.map +1 -1
- package/dist/config.cjs +1 -10
- package/dist/config.cjs.map +1 -1
- package/dist/config.js +1 -10
- package/dist/config.js.map +1 -1
- package/dist/icons/ArrowCornerDownRight.cjs +1 -6
- package/dist/icons/ArrowCornerDownRight.cjs.map +1 -1
- package/dist/icons/ArrowCornerDownRight.js +1 -6
- package/dist/icons/ArrowCornerDownRight.js.map +1 -1
- package/dist/icons/ArrowCornerUpRight.cjs +1 -6
- package/dist/icons/ArrowCornerUpRight.cjs.map +1 -1
- package/dist/icons/ArrowCornerUpRight.js +1 -6
- package/dist/icons/ArrowCornerUpRight.js.map +1 -1
- package/dist/icons/ArrowDown.cjs +1 -6
- package/dist/icons/ArrowDown.cjs.map +1 -1
- package/dist/icons/ArrowDown.js +1 -6
- package/dist/icons/ArrowDown.js.map +1 -1
- package/dist/icons/ArrowUp.cjs +1 -6
- package/dist/icons/ArrowUp.cjs.map +1 -1
- package/dist/icons/ArrowUp.js +1 -6
- package/dist/icons/ArrowUp.js.map +1 -1
- package/dist/icons/Attachment.cjs +1 -6
- package/dist/icons/Attachment.cjs.map +1 -1
- package/dist/icons/Attachment.js +1 -6
- package/dist/icons/Attachment.js.map +1 -1
- package/dist/icons/Bell.cjs +1 -6
- package/dist/icons/Bell.cjs.map +1 -1
- package/dist/icons/Bell.js +1 -6
- package/dist/icons/Bell.js.map +1 -1
- package/dist/icons/BellCrossed.cjs +1 -6
- package/dist/icons/BellCrossed.cjs.map +1 -1
- package/dist/icons/BellCrossed.js +1 -6
- package/dist/icons/BellCrossed.js.map +1 -1
- package/dist/icons/Blockquote.cjs +1 -6
- package/dist/icons/Blockquote.cjs.map +1 -1
- package/dist/icons/Blockquote.js +1 -6
- package/dist/icons/Blockquote.js.map +1 -1
- package/dist/icons/Bold.cjs +1 -6
- package/dist/icons/Bold.cjs.map +1 -1
- package/dist/icons/Bold.js +1 -6
- package/dist/icons/Bold.js.map +1 -1
- package/dist/icons/Check.cjs +1 -6
- package/dist/icons/Check.cjs.map +1 -1
- package/dist/icons/Check.js +1 -6
- package/dist/icons/Check.js.map +1 -1
- package/dist/icons/CheckCircle.cjs +4 -13
- package/dist/icons/CheckCircle.cjs.map +1 -1
- package/dist/icons/CheckCircle.js +4 -13
- package/dist/icons/CheckCircle.js.map +1 -1
- package/dist/icons/CheckCircleFill.cjs +4 -15
- package/dist/icons/CheckCircleFill.cjs.map +1 -1
- package/dist/icons/CheckCircleFill.js +4 -15
- package/dist/icons/CheckCircleFill.js.map +1 -1
- package/dist/icons/ChevronDown.cjs +1 -6
- package/dist/icons/ChevronDown.cjs.map +1 -1
- package/dist/icons/ChevronDown.js +1 -6
- package/dist/icons/ChevronDown.js.map +1 -1
- package/dist/icons/ChevronLeft.cjs +1 -6
- package/dist/icons/ChevronLeft.cjs.map +1 -1
- package/dist/icons/ChevronLeft.js +1 -6
- package/dist/icons/ChevronLeft.js.map +1 -1
- package/dist/icons/ChevronRight.cjs +1 -6
- package/dist/icons/ChevronRight.cjs.map +1 -1
- package/dist/icons/ChevronRight.js +1 -6
- package/dist/icons/ChevronRight.js.map +1 -1
- package/dist/icons/ChevronUp.cjs +1 -6
- package/dist/icons/ChevronUp.cjs.map +1 -1
- package/dist/icons/ChevronUp.js +1 -6
- package/dist/icons/ChevronUp.js.map +1 -1
- package/dist/icons/Code.cjs +1 -6
- package/dist/icons/Code.cjs.map +1 -1
- package/dist/icons/Code.js +1 -6
- package/dist/icons/Code.js.map +1 -1
- package/dist/icons/Comment.cjs +1 -6
- package/dist/icons/Comment.cjs.map +1 -1
- package/dist/icons/Comment.js +1 -6
- package/dist/icons/Comment.js.map +1 -1
- package/dist/icons/Copy.cjs +4 -15
- package/dist/icons/Copy.cjs.map +1 -1
- package/dist/icons/Copy.js +4 -15
- package/dist/icons/Copy.js.map +1 -1
- package/dist/icons/Cross.cjs +4 -11
- package/dist/icons/Cross.cjs.map +1 -1
- package/dist/icons/Cross.js +4 -11
- package/dist/icons/Cross.js.map +1 -1
- package/dist/icons/CrossCircleFill.cjs +4 -15
- package/dist/icons/CrossCircleFill.cjs.map +1 -1
- package/dist/icons/CrossCircleFill.js +4 -15
- package/dist/icons/CrossCircleFill.js.map +1 -1
- package/dist/icons/Delete.cjs +1 -6
- package/dist/icons/Delete.cjs.map +1 -1
- package/dist/icons/Delete.js +1 -6
- package/dist/icons/Delete.js.map +1 -1
- package/dist/icons/Edit.cjs +1 -6
- package/dist/icons/Edit.cjs.map +1 -1
- package/dist/icons/Edit.js +1 -6
- package/dist/icons/Edit.js.map +1 -1
- package/dist/icons/Ellipsis.cjs +5 -21
- package/dist/icons/Ellipsis.cjs.map +1 -1
- package/dist/icons/Ellipsis.js +5 -21
- package/dist/icons/Ellipsis.js.map +1 -1
- package/dist/icons/Emoji.cjs +7 -24
- package/dist/icons/Emoji.cjs.map +1 -1
- package/dist/icons/Emoji.js +7 -24
- package/dist/icons/Emoji.js.map +1 -1
- package/dist/icons/EmojiPlus.cjs +8 -27
- package/dist/icons/EmojiPlus.cjs.map +1 -1
- package/dist/icons/EmojiPlus.js +8 -27
- package/dist/icons/EmojiPlus.js.map +1 -1
- package/dist/icons/Globe.cjs +4 -13
- package/dist/icons/Globe.cjs.map +1 -1
- package/dist/icons/Globe.js +4 -13
- package/dist/icons/Globe.js.map +1 -1
- package/dist/icons/H1.cjs +1 -6
- package/dist/icons/H1.cjs.map +1 -1
- package/dist/icons/H1.js +1 -6
- package/dist/icons/H1.js.map +1 -1
- package/dist/icons/H2.cjs +1 -6
- package/dist/icons/H2.cjs.map +1 -1
- package/dist/icons/H2.js +1 -6
- package/dist/icons/H2.js.map +1 -1
- package/dist/icons/H3.cjs +1 -6
- package/dist/icons/H3.cjs.map +1 -1
- package/dist/icons/H3.js +1 -6
- package/dist/icons/H3.js.map +1 -1
- package/dist/icons/Italic.cjs +1 -6
- package/dist/icons/Italic.cjs.map +1 -1
- package/dist/icons/Italic.js +1 -6
- package/dist/icons/Italic.js.map +1 -1
- package/dist/icons/Lengthen.cjs +1 -6
- package/dist/icons/Lengthen.cjs.map +1 -1
- package/dist/icons/Lengthen.js +1 -6
- package/dist/icons/Lengthen.js.map +1 -1
- package/dist/icons/ListOrdered.cjs +1 -6
- package/dist/icons/ListOrdered.cjs.map +1 -1
- package/dist/icons/ListOrdered.js +1 -6
- package/dist/icons/ListOrdered.js.map +1 -1
- package/dist/icons/ListUnordered.cjs +8 -29
- package/dist/icons/ListUnordered.cjs.map +1 -1
- package/dist/icons/ListUnordered.js +8 -29
- package/dist/icons/ListUnordered.js.map +1 -1
- package/dist/icons/Mention.cjs +4 -11
- package/dist/icons/Mention.cjs.map +1 -1
- package/dist/icons/Mention.js +4 -11
- package/dist/icons/Mention.js.map +1 -1
- package/dist/icons/MinusCircle.cjs +4 -13
- package/dist/icons/MinusCircle.cjs.map +1 -1
- package/dist/icons/MinusCircle.js +4 -13
- package/dist/icons/MinusCircle.js.map +1 -1
- package/dist/icons/QuestionMark.cjs +5 -16
- package/dist/icons/QuestionMark.cjs.map +1 -1
- package/dist/icons/QuestionMark.js +5 -16
- package/dist/icons/QuestionMark.js.map +1 -1
- package/dist/icons/Redo.cjs +4 -11
- package/dist/icons/Redo.cjs.map +1 -1
- package/dist/icons/Redo.js +4 -11
- package/dist/icons/Redo.js.map +1 -1
- package/dist/icons/Restore.cjs +4 -11
- package/dist/icons/Restore.cjs.map +1 -1
- package/dist/icons/Restore.js +4 -11
- package/dist/icons/Restore.js.map +1 -1
- package/dist/icons/Retry.cjs +4 -11
- package/dist/icons/Retry.cjs.map +1 -1
- package/dist/icons/Retry.js +4 -11
- package/dist/icons/Retry.js.map +1 -1
- package/dist/icons/Search.cjs +1 -6
- package/dist/icons/Search.cjs.map +1 -1
- package/dist/icons/Search.js +1 -6
- package/dist/icons/Search.js.map +1 -1
- package/dist/icons/Send.cjs +1 -6
- package/dist/icons/Send.cjs.map +1 -1
- package/dist/icons/Send.js +1 -6
- package/dist/icons/Send.js.map +1 -1
- package/dist/icons/Shorten.cjs +1 -6
- package/dist/icons/Shorten.cjs.map +1 -1
- package/dist/icons/Shorten.js +1 -6
- package/dist/icons/Shorten.js.map +1 -1
- package/dist/icons/Sparkles.cjs +1 -6
- package/dist/icons/Sparkles.cjs.map +1 -1
- package/dist/icons/Sparkles.js +1 -6
- package/dist/icons/Sparkles.js.map +1 -1
- package/dist/icons/SparklesText.cjs +4 -11
- package/dist/icons/SparklesText.cjs.map +1 -1
- package/dist/icons/SparklesText.js +4 -11
- package/dist/icons/SparklesText.js.map +1 -1
- package/dist/icons/Spinner.cjs +1 -7
- package/dist/icons/Spinner.cjs.map +1 -1
- package/dist/icons/Spinner.js +1 -7
- package/dist/icons/Spinner.js.map +1 -1
- package/dist/icons/Stop.cjs +1 -11
- package/dist/icons/Stop.cjs.map +1 -1
- package/dist/icons/Stop.js +1 -11
- package/dist/icons/Stop.js.map +1 -1
- package/dist/icons/Strikethrough.cjs +1 -6
- package/dist/icons/Strikethrough.cjs.map +1 -1
- package/dist/icons/Strikethrough.js +1 -6
- package/dist/icons/Strikethrough.js.map +1 -1
- package/dist/icons/Text.cjs +1 -6
- package/dist/icons/Text.cjs.map +1 -1
- package/dist/icons/Text.js +1 -6
- package/dist/icons/Text.js.map +1 -1
- package/dist/icons/Translate.cjs +4 -11
- package/dist/icons/Translate.cjs.map +1 -1
- package/dist/icons/Translate.js +4 -11
- package/dist/icons/Translate.js.map +1 -1
- package/dist/icons/Underline.cjs +1 -6
- package/dist/icons/Underline.cjs.map +1 -1
- package/dist/icons/Underline.js +1 -6
- package/dist/icons/Underline.js.map +1 -1
- package/dist/icons/Undo.cjs +4 -11
- package/dist/icons/Undo.cjs.map +1 -1
- package/dist/icons/Undo.js +4 -11
- package/dist/icons/Undo.js.map +1 -1
- package/dist/icons/User.cjs +1 -6
- package/dist/icons/User.cjs.map +1 -1
- package/dist/icons/User.js +1 -6
- package/dist/icons/User.js.map +1 -1
- package/dist/icons/Users.cjs +1 -6
- package/dist/icons/Users.cjs.map +1 -1
- package/dist/icons/Users.js +1 -6
- package/dist/icons/Users.js.map +1 -1
- package/dist/icons/Warning.cjs +4 -13
- package/dist/icons/Warning.cjs.map +1 -1
- package/dist/icons/Warning.js +4 -13
- package/dist/icons/Warning.js.map +1 -1
- package/dist/overrides.cjs +102 -150
- package/dist/overrides.cjs.map +1 -1
- package/dist/overrides.js +102 -150
- package/dist/overrides.js.map +1 -1
- package/dist/primitives/AiComposer/index.cjs +77 -65
- package/dist/primitives/AiComposer/index.cjs.map +1 -1
- package/dist/primitives/AiComposer/index.js +77 -65
- package/dist/primitives/AiComposer/index.js.map +1 -1
- package/dist/primitives/AiMessage/index.cjs +28 -49
- package/dist/primitives/AiMessage/index.cjs.map +1 -1
- package/dist/primitives/AiMessage/index.js +28 -49
- package/dist/primitives/AiMessage/index.js.map +1 -1
- package/dist/primitives/AiMessage/tool-invocation.cjs +5 -5
- package/dist/primitives/AiMessage/tool-invocation.cjs.map +1 -1
- package/dist/primitives/AiMessage/tool-invocation.js +5 -5
- package/dist/primitives/AiMessage/tool-invocation.js.map +1 -1
- package/dist/primitives/Collapsible/index.cjs +46 -34
- package/dist/primitives/Collapsible/index.cjs.map +1 -1
- package/dist/primitives/Collapsible/index.js +46 -34
- package/dist/primitives/Collapsible/index.js.map +1 -1
- package/dist/primitives/Comment/index.cjs +41 -64
- package/dist/primitives/Comment/index.cjs.map +1 -1
- package/dist/primitives/Comment/index.js +41 -64
- package/dist/primitives/Comment/index.js.map +1 -1
- package/dist/primitives/Composer/contexts.cjs.map +1 -1
- package/dist/primitives/Composer/contexts.js.map +1 -1
- package/dist/primitives/Composer/index.cjs +324 -312
- package/dist/primitives/Composer/index.cjs.map +1 -1
- package/dist/primitives/Composer/index.js +324 -312
- package/dist/primitives/Composer/index.js.map +1 -1
- package/dist/primitives/Composer/slate/plugins/auto-links.cjs.map +1 -1
- package/dist/primitives/Composer/slate/plugins/auto-links.js.map +1 -1
- package/dist/primitives/Composer/slate/plugins/custom-links.cjs.map +1 -1
- package/dist/primitives/Composer/slate/plugins/custom-links.js.map +1 -1
- package/dist/primitives/Composer/slate/plugins/mentions.cjs +1 -0
- package/dist/primitives/Composer/slate/plugins/mentions.cjs.map +1 -1
- package/dist/primitives/Composer/slate/plugins/mentions.js +1 -0
- package/dist/primitives/Composer/slate/plugins/mentions.js.map +1 -1
- package/dist/primitives/Composer/slate/plugins/paste.cjs +1 -0
- package/dist/primitives/Composer/slate/plugins/paste.cjs.map +1 -1
- package/dist/primitives/Composer/slate/plugins/paste.js +1 -0
- package/dist/primitives/Composer/slate/plugins/paste.js.map +1 -1
- package/dist/primitives/Composer/utils.cjs +3 -0
- package/dist/primitives/Composer/utils.cjs.map +1 -1
- package/dist/primitives/Composer/utils.js +3 -0
- package/dist/primitives/Composer/utils.js.map +1 -1
- package/dist/primitives/Duration.cjs +11 -7
- package/dist/primitives/Duration.cjs.map +1 -1
- package/dist/primitives/Duration.js +11 -7
- package/dist/primitives/Duration.js.map +1 -1
- package/dist/primitives/FileSize.cjs +2 -5
- package/dist/primitives/FileSize.cjs.map +1 -1
- package/dist/primitives/FileSize.js +2 -5
- package/dist/primitives/FileSize.js.map +1 -1
- package/dist/primitives/Markdown.cjs +80 -188
- package/dist/primitives/Markdown.cjs.map +1 -1
- package/dist/primitives/Markdown.js +80 -188
- package/dist/primitives/Markdown.js.map +1 -1
- package/dist/primitives/Timestamp.cjs +12 -7
- package/dist/primitives/Timestamp.cjs.map +1 -1
- package/dist/primitives/Timestamp.js +12 -7
- package/dist/primitives/Timestamp.js.map +1 -1
- package/dist/primitives/slate/utils/get-dom-range.cjs.map +1 -1
- package/dist/primitives/slate/utils/get-dom-range.js.map +1 -1
- package/dist/primitives/slate/utils/get-match-range.cjs.map +1 -1
- package/dist/primitives/slate/utils/get-match-range.js.map +1 -1
- package/dist/primitives/slate/utils/is-empty.cjs.map +1 -1
- package/dist/primitives/slate/utils/is-empty.js.map +1 -1
- package/dist/primitives/slate/utils/marks.cjs.map +1 -1
- package/dist/primitives/slate/utils/marks.js.map +1 -1
- package/dist/shared.cjs.map +1 -1
- package/dist/shared.js.map +1 -1
- package/dist/utils/ErrorBoundary.cjs +1 -6
- package/dist/utils/ErrorBoundary.cjs.map +1 -1
- package/dist/utils/ErrorBoundary.js +1 -6
- package/dist/utils/ErrorBoundary.js.map +1 -1
- package/dist/utils/Persist.cjs +1 -4
- package/dist/utils/Persist.cjs.map +1 -1
- package/dist/utils/Persist.js +1 -4
- package/dist/utils/Persist.js.map +1 -1
- package/dist/utils/Portal.cjs +1 -5
- package/dist/utils/Portal.cjs.map +1 -1
- package/dist/utils/Portal.js +1 -5
- package/dist/utils/Portal.js.map +1 -1
- package/dist/utils/format-file-size.cjs.map +1 -1
- package/dist/utils/format-file-size.js.map +1 -1
- package/dist/utils/is-key.cjs.map +1 -1
- package/dist/utils/is-key.js.map +1 -1
- package/dist/utils/pluralize.cjs.map +1 -1
- package/dist/utils/pluralize.js.map +1 -1
- package/dist/utils/use-controllable-state.cjs.map +1 -1
- package/dist/utils/use-controllable-state.js.map +1 -1
- package/dist/utils/use-rerender.cjs +3 -0
- package/dist/utils/use-rerender.cjs.map +1 -1
- package/dist/utils/use-rerender.js +3 -0
- package/dist/utils/use-rerender.js.map +1 -1
- package/dist/utils/use-visible.cjs.map +1 -1
- package/dist/utils/use-visible.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- 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(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
className: "lb-ai-chat-source-favicon"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
/* @__PURE__ */
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
className
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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(
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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(
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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(
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
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
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
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(
|
|
288
|
-
|
|
289
|
-
|
|
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(
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
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
|
-
|
|
304
|
-
|
|
305
|
-
|
|
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
|
-
|
|
327
|
-
|
|
328
|
-
fallback: /* @__PURE__ */ jsxs("div", {
|
|
329
|
-
className: "lb-
|
|
330
|
-
children: [
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
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(
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
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(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
className
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
children: $.AI_CHAT_MESSAGE_DELETED
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
);
|