@patternfly/chatbot 6.8.0-prerelease.8 → 6.9.0-prerelease.1

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 (307) hide show
  1. package/dist/cjs/CodeModal/CodeModal.js +5 -0
  2. package/dist/cjs/MarkdownContent/MarkdownContent.d.ts +26 -7
  3. package/dist/cjs/MarkdownContent/MarkdownContent.js +79 -166
  4. package/dist/cjs/MarkdownContent/MarkdownRenderer.d.ts +6 -0
  5. package/dist/cjs/MarkdownContent/MarkdownRenderer.js +187 -0
  6. package/dist/cjs/Message/Message.d.ts +3 -4
  7. package/dist/cjs/Message/Message.js +0 -2
  8. package/dist/cjs/MessageBox/MessageBox.js +5 -1
  9. package/dist/cjs/index.d.ts +0 -8
  10. package/dist/cjs/index.js +1 -13
  11. package/dist/css/main.css +18 -3
  12. package/dist/css/main.css.map +1 -1
  13. package/dist/esm/CodeModal/CodeModal.js +5 -0
  14. package/dist/esm/MarkdownContent/MarkdownContent.d.ts +26 -7
  15. package/dist/esm/MarkdownContent/MarkdownContent.js +52 -165
  16. package/dist/esm/MarkdownContent/MarkdownRenderer.d.ts +6 -0
  17. package/dist/esm/MarkdownContent/MarkdownRenderer.js +182 -0
  18. package/dist/esm/Message/Message.d.ts +3 -4
  19. package/dist/esm/Message/Message.js +0 -2
  20. package/dist/esm/MessageBox/MessageBox.js +5 -1
  21. package/dist/esm/index.d.ts +0 -8
  22. package/dist/esm/index.js +0 -8
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/generate-index.js +41 -16
  25. package/generate-index.test.js +68 -0
  26. package/monaco-environment.js +45 -0
  27. package/package.json +20 -2
  28. package/patternfly-docs/content/extensions/chatbot/chatbot.md +1 -0
  29. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +1 -1
  30. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +2 -2
  31. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +2 -2
  32. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +1 -1
  33. package/patternfly-docs/content/extensions/chatbot/examples/Messages/monitor-sampleapp-quickstart.ts +1 -0
  34. package/patternfly-docs/content/extensions/chatbot/tree-shaking.md +124 -0
  35. package/patternfly-docs/monaco-environment.js +45 -0
  36. package/patternfly-docs/patternfly-docs.css.js +6 -0
  37. package/src/Chatbot/Chatbot.scss +4 -0
  38. package/src/ChatbotContent/ChatbotContent.scss +1 -1
  39. package/src/ChatbotFooter/ChatbotFooter.scss +2 -2
  40. package/src/ChatbotHeader/ChatbotHeader.scss +4 -0
  41. package/src/ChatbotModal/ChatbotModal.scss +10 -0
  42. package/src/CodeModal/CodeModal.tsx +6 -0
  43. package/src/DeepThinking/DeepThinking.test.tsx +10 -12
  44. package/src/MarkdownContent/MarkdownContent.test.tsx +52 -5
  45. package/src/MarkdownContent/MarkdownContent.tsx +77 -220
  46. package/src/MarkdownContent/MarkdownRenderer.tsx +235 -0
  47. package/src/Message/Message.test.tsx +5 -0
  48. package/src/Message/Message.tsx +3 -5
  49. package/src/MessageBox/MessageBox.tsx +13 -1
  50. package/src/ResponseActions/ResponseActions.test.tsx +42 -48
  51. package/src/ToolCall/ToolCall.test.tsx +6 -9
  52. package/src/ToolResponse/ToolResponse.test.tsx +16 -22
  53. package/src/index.ts +0 -12
  54. package/src/test-utils/markdownTestUtils.ts +21 -0
  55. package/tsconfig.json +6 -1
  56. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +0 -1
  57. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +0 -77
  58. package/dist/cjs/Chatbot/Chatbot.test.d.ts +0 -1
  59. package/dist/cjs/Chatbot/Chatbot.test.js +0 -32
  60. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +0 -1
  61. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +0 -27
  62. package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +0 -1
  63. package/dist/cjs/ChatbotContent/ChatbotContent.test.js +0 -22
  64. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.d.ts +0 -1
  65. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +0 -75
  66. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.d.ts +0 -1
  67. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +0 -601
  68. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +0 -1
  69. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +0 -27
  70. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +0 -1
  71. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +0 -87
  72. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +0 -1
  73. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +0 -18
  74. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +0 -1
  75. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +0 -18
  76. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +0 -1
  77. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +0 -22
  78. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +0 -1
  79. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +0 -18
  80. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +0 -1
  81. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +0 -22
  82. package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +0 -1
  83. package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +0 -22
  84. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +0 -1
  85. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +0 -46
  86. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +0 -1
  87. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +0 -44
  88. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +0 -1
  89. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +0 -55
  90. package/dist/cjs/ChatbotModal/ChatbotModal.test.d.ts +0 -1
  91. package/dist/cjs/ChatbotModal/ChatbotModal.test.js +0 -16
  92. package/dist/cjs/ChatbotToggle/ChatbotToggle.test.d.ts +0 -1
  93. package/dist/cjs/ChatbotToggle/ChatbotToggle.test.js +0 -64
  94. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +0 -1
  95. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +0 -61
  96. package/dist/cjs/CodeModal/CodeModal.test.d.ts +0 -1
  97. package/dist/cjs/CodeModal/CodeModal.test.js +0 -34
  98. package/dist/cjs/Compare/Compare.test.d.ts +0 -1
  99. package/dist/cjs/Compare/Compare.test.js +0 -18
  100. package/dist/cjs/DeepThinking/DeepThinking.test.d.ts +0 -1
  101. package/dist/cjs/DeepThinking/DeepThinking.test.js +0 -146
  102. package/dist/cjs/FileDetails/FileDetails.test.d.ts +0 -1
  103. package/dist/cjs/FileDetails/FileDetails.test.js +0 -42
  104. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.d.ts +0 -1
  105. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +0 -79
  106. package/dist/cjs/FileDropZone/FileDropZone.test.d.ts +0 -1
  107. package/dist/cjs/FileDropZone/FileDropZone.test.js +0 -100
  108. package/dist/cjs/FilePreview/FilePreview.test.d.ts +0 -1
  109. package/dist/cjs/FilePreview/FilePreview.test.js +0 -97
  110. package/dist/cjs/ImagePreview/ImagePreview.test.d.ts +0 -1
  111. package/dist/cjs/ImagePreview/ImagePreview.test.js +0 -225
  112. package/dist/cjs/MarkdownContent/MarkdownContent.test.d.ts +0 -1
  113. package/dist/cjs/MarkdownContent/MarkdownContent.test.js +0 -192
  114. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +0 -1
  115. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.js +0 -131
  116. package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.d.ts +0 -1
  117. package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.js +0 -30
  118. package/dist/cjs/Message/Message.test.d.ts +0 -1
  119. package/dist/cjs/Message/Message.test.js +0 -1128
  120. package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.d.ts +0 -1
  121. package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.js +0 -25
  122. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +0 -1
  123. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.js +0 -25
  124. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +0 -1
  125. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.js +0 -25
  126. package/dist/cjs/Message/MessageLoading.test.d.ts +0 -1
  127. package/dist/cjs/Message/MessageLoading.test.js +0 -25
  128. package/dist/cjs/Message/QuickResponse/QuickResponse.test.d.ts +0 -1
  129. package/dist/cjs/Message/QuickResponse/QuickResponse.test.js +0 -109
  130. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.d.ts +0 -1
  131. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +0 -76
  132. package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +0 -1
  133. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +0 -181
  134. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.d.ts +0 -1
  135. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +0 -243
  136. package/dist/cjs/MessageBar/AttachButton.test.d.ts +0 -1
  137. package/dist/cjs/MessageBar/AttachButton.test.js +0 -152
  138. package/dist/cjs/MessageBar/MessageBar.test.d.ts +0 -1
  139. package/dist/cjs/MessageBar/MessageBar.test.js +0 -338
  140. package/dist/cjs/MessageBar/SendButton.test.d.ts +0 -1
  141. package/dist/cjs/MessageBar/SendButton.test.js +0 -58
  142. package/dist/cjs/MessageBar/StopButton.test.d.ts +0 -1
  143. package/dist/cjs/MessageBar/StopButton.test.js +0 -58
  144. package/dist/cjs/MessageBox/JumpButton.test.d.ts +0 -1
  145. package/dist/cjs/MessageBox/JumpButton.test.js +0 -39
  146. package/dist/cjs/MessageBox/MessageBox.test.d.ts +0 -1
  147. package/dist/cjs/MessageBox/MessageBox.test.js +0 -294
  148. package/dist/cjs/MessageDivider/MessageDivider.test.d.ts +0 -1
  149. package/dist/cjs/MessageDivider/MessageDivider.test.js +0 -29
  150. package/dist/cjs/Onboarding/Onboarding.test.d.ts +0 -1
  151. package/dist/cjs/Onboarding/Onboarding.test.js +0 -80
  152. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +0 -1
  153. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +0 -50
  154. package/dist/cjs/ResponseActions/ResponseActionButton.test.d.ts +0 -1
  155. package/dist/cjs/ResponseActions/ResponseActionButton.test.js +0 -54
  156. package/dist/cjs/ResponseActions/ResponseActions.test.d.ts +0 -1
  157. package/dist/cjs/ResponseActions/ResponseActions.test.js +0 -455
  158. package/dist/cjs/ResponseActions/ResponseActionsGroups.test.d.ts +0 -1
  159. package/dist/cjs/ResponseActions/ResponseActionsGroups.test.js +0 -25
  160. package/dist/cjs/Settings/SettingsForm.test.d.ts +0 -1
  161. package/dist/cjs/Settings/SettingsForm.test.js +0 -35
  162. package/dist/cjs/SourcesCard/SourcesCard.test.d.ts +0 -1
  163. package/dist/cjs/SourcesCard/SourcesCard.test.js +0 -39
  164. package/dist/cjs/SourcesCardBase/SourcesCardBase.test.d.ts +0 -1
  165. package/dist/cjs/SourcesCardBase/SourcesCardBase.test.js +0 -199
  166. package/dist/cjs/TermsOfUse/TermsOfUse.test.d.ts +0 -1
  167. package/dist/cjs/TermsOfUse/TermsOfUse.test.js +0 -77
  168. package/dist/cjs/ToolCall/ToolCall.test.d.ts +0 -1
  169. package/dist/cjs/ToolCall/ToolCall.test.js +0 -201
  170. package/dist/cjs/ToolResponse/ToolResponse.test.d.ts +0 -1
  171. package/dist/cjs/ToolResponse/ToolResponse.test.js +0 -184
  172. package/dist/cjs/__mocks__/monaco-editor.d.ts +0 -11
  173. package/dist/cjs/__mocks__/monaco-editor.js +0 -18
  174. package/dist/cjs/__mocks__/rehype-external-links.d.ts +0 -2
  175. package/dist/cjs/__mocks__/rehype-external-links.js +0 -4
  176. package/dist/cjs/__mocks__/rehype-highlight.d.ts +0 -2
  177. package/dist/cjs/__mocks__/rehype-highlight.js +0 -4
  178. package/dist/cjs/__mocks__/rehype-sanitize.d.ts +0 -2
  179. package/dist/cjs/__mocks__/rehype-sanitize.js +0 -4
  180. package/dist/cjs/__mocks__/rehype-unwrap-images.d.ts +0 -2
  181. package/dist/cjs/__mocks__/rehype-unwrap-images.js +0 -4
  182. package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +0 -1
  183. package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +0 -72
  184. package/dist/esm/Chatbot/Chatbot.test.d.ts +0 -1
  185. package/dist/esm/Chatbot/Chatbot.test.js +0 -27
  186. package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +0 -1
  187. package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +0 -22
  188. package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +0 -1
  189. package/dist/esm/ChatbotContent/ChatbotContent.test.js +0 -17
  190. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.d.ts +0 -1
  191. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +0 -70
  192. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.d.ts +0 -1
  193. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +0 -596
  194. package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +0 -1
  195. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +0 -22
  196. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +0 -1
  197. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +0 -82
  198. package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +0 -1
  199. package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +0 -13
  200. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +0 -1
  201. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +0 -13
  202. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +0 -1
  203. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +0 -20
  204. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +0 -1
  205. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +0 -13
  206. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +0 -1
  207. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +0 -20
  208. package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +0 -1
  209. package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +0 -20
  210. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +0 -1
  211. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +0 -44
  212. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +0 -1
  213. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +0 -42
  214. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +0 -1
  215. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +0 -50
  216. package/dist/esm/ChatbotModal/ChatbotModal.test.d.ts +0 -1
  217. package/dist/esm/ChatbotModal/ChatbotModal.test.js +0 -11
  218. package/dist/esm/ChatbotToggle/ChatbotToggle.test.d.ts +0 -1
  219. package/dist/esm/ChatbotToggle/ChatbotToggle.test.js +0 -59
  220. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +0 -1
  221. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +0 -56
  222. package/dist/esm/CodeModal/CodeModal.test.d.ts +0 -1
  223. package/dist/esm/CodeModal/CodeModal.test.js +0 -29
  224. package/dist/esm/Compare/Compare.test.d.ts +0 -1
  225. package/dist/esm/Compare/Compare.test.js +0 -13
  226. package/dist/esm/DeepThinking/DeepThinking.test.d.ts +0 -1
  227. package/dist/esm/DeepThinking/DeepThinking.test.js +0 -141
  228. package/dist/esm/FileDetails/FileDetails.test.d.ts +0 -1
  229. package/dist/esm/FileDetails/FileDetails.test.js +0 -37
  230. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.d.ts +0 -1
  231. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +0 -74
  232. package/dist/esm/FileDropZone/FileDropZone.test.d.ts +0 -1
  233. package/dist/esm/FileDropZone/FileDropZone.test.js +0 -95
  234. package/dist/esm/FilePreview/FilePreview.test.d.ts +0 -1
  235. package/dist/esm/FilePreview/FilePreview.test.js +0 -92
  236. package/dist/esm/ImagePreview/ImagePreview.test.d.ts +0 -1
  237. package/dist/esm/ImagePreview/ImagePreview.test.js +0 -220
  238. package/dist/esm/MarkdownContent/MarkdownContent.test.d.ts +0 -1
  239. package/dist/esm/MarkdownContent/MarkdownContent.test.js +0 -187
  240. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +0 -1
  241. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.js +0 -126
  242. package/dist/esm/Message/ErrorMessage/ErrorMessage.test.d.ts +0 -1
  243. package/dist/esm/Message/ErrorMessage/ErrorMessage.test.js +0 -25
  244. package/dist/esm/Message/Message.test.d.ts +0 -1
  245. package/dist/esm/Message/Message.test.js +0 -1123
  246. package/dist/esm/Message/MessageAndActions/MessageAndActions.test.d.ts +0 -1
  247. package/dist/esm/Message/MessageAndActions/MessageAndActions.test.js +0 -20
  248. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +0 -1
  249. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.js +0 -20
  250. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +0 -1
  251. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.js +0 -20
  252. package/dist/esm/Message/MessageLoading.test.d.ts +0 -1
  253. package/dist/esm/Message/MessageLoading.test.js +0 -20
  254. package/dist/esm/Message/QuickResponse/QuickResponse.test.d.ts +0 -1
  255. package/dist/esm/Message/QuickResponse/QuickResponse.test.js +0 -104
  256. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.d.ts +0 -1
  257. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +0 -48
  258. package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +0 -1
  259. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +0 -176
  260. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.d.ts +0 -1
  261. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +0 -238
  262. package/dist/esm/MessageBar/AttachButton.test.d.ts +0 -1
  263. package/dist/esm/MessageBar/AttachButton.test.js +0 -147
  264. package/dist/esm/MessageBar/MessageBar.test.d.ts +0 -1
  265. package/dist/esm/MessageBar/MessageBar.test.js +0 -333
  266. package/dist/esm/MessageBar/SendButton.test.d.ts +0 -1
  267. package/dist/esm/MessageBar/SendButton.test.js +0 -53
  268. package/dist/esm/MessageBar/StopButton.test.d.ts +0 -1
  269. package/dist/esm/MessageBar/StopButton.test.js +0 -53
  270. package/dist/esm/MessageBox/JumpButton.test.d.ts +0 -1
  271. package/dist/esm/MessageBox/JumpButton.test.js +0 -34
  272. package/dist/esm/MessageBox/MessageBox.test.d.ts +0 -1
  273. package/dist/esm/MessageBox/MessageBox.test.js +0 -289
  274. package/dist/esm/MessageDivider/MessageDivider.test.d.ts +0 -1
  275. package/dist/esm/MessageDivider/MessageDivider.test.js +0 -24
  276. package/dist/esm/Onboarding/Onboarding.test.d.ts +0 -1
  277. package/dist/esm/Onboarding/Onboarding.test.js +0 -75
  278. package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +0 -1
  279. package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +0 -48
  280. package/dist/esm/ResponseActions/ResponseActionButton.test.d.ts +0 -1
  281. package/dist/esm/ResponseActions/ResponseActionButton.test.js +0 -49
  282. package/dist/esm/ResponseActions/ResponseActions.test.d.ts +0 -1
  283. package/dist/esm/ResponseActions/ResponseActions.test.js +0 -450
  284. package/dist/esm/ResponseActions/ResponseActionsGroups.test.d.ts +0 -1
  285. package/dist/esm/ResponseActions/ResponseActionsGroups.test.js +0 -20
  286. package/dist/esm/Settings/SettingsForm.test.d.ts +0 -1
  287. package/dist/esm/Settings/SettingsForm.test.js +0 -33
  288. package/dist/esm/SourcesCard/SourcesCard.test.d.ts +0 -1
  289. package/dist/esm/SourcesCard/SourcesCard.test.js +0 -34
  290. package/dist/esm/SourcesCardBase/SourcesCardBase.test.d.ts +0 -1
  291. package/dist/esm/SourcesCardBase/SourcesCardBase.test.js +0 -194
  292. package/dist/esm/TermsOfUse/TermsOfUse.test.d.ts +0 -1
  293. package/dist/esm/TermsOfUse/TermsOfUse.test.js +0 -72
  294. package/dist/esm/ToolCall/ToolCall.test.d.ts +0 -1
  295. package/dist/esm/ToolCall/ToolCall.test.js +0 -196
  296. package/dist/esm/ToolResponse/ToolResponse.test.d.ts +0 -1
  297. package/dist/esm/ToolResponse/ToolResponse.test.js +0 -179
  298. package/dist/esm/__mocks__/monaco-editor.d.ts +0 -11
  299. package/dist/esm/__mocks__/monaco-editor.js +0 -18
  300. package/dist/esm/__mocks__/rehype-external-links.d.ts +0 -2
  301. package/dist/esm/__mocks__/rehype-external-links.js +0 -2
  302. package/dist/esm/__mocks__/rehype-highlight.d.ts +0 -2
  303. package/dist/esm/__mocks__/rehype-highlight.js +0 -2
  304. package/dist/esm/__mocks__/rehype-sanitize.d.ts +0 -2
  305. package/dist/esm/__mocks__/rehype-sanitize.js +0 -2
  306. package/dist/esm/__mocks__/rehype-unwrap-images.d.ts +0 -2
  307. package/dist/esm/__mocks__/rehype-unwrap-images.js +0 -2
@@ -59,7 +59,12 @@ const ChatbotModal_1 = __importDefault(require("../ChatbotModal/ChatbotModal"));
59
59
  // Try to lazy load - some consumers need to be below a certain bundle size, but can't use the CDN and don't have webpack
60
60
  let monacoInstance = null;
61
61
  const loadMonaco = () => __awaiter(void 0, void 0, void 0, function* () {
62
+ var _a, _b;
62
63
  if (!monacoInstance) {
64
+ if (!((_a = globalThis.MonacoEnvironment) === null || _a === void 0 ? void 0 : _a.getWorker) && !((_b = globalThis.MonacoEnvironment) === null || _b === void 0 ? void 0 : _b.getWorkerUrl)) {
65
+ // eslint-disable-next-line no-console
66
+ console.error('Monaco web workers are not configured. Import @patternfly/chatbot/monaco-environment before using CodeModal.');
67
+ }
63
68
  const [monaco, { loader }] = yield Promise.all([Promise.resolve().then(() => __importStar(require('monaco-editor'))), Promise.resolve().then(() => __importStar(require('@monaco-editor/react')))]);
64
69
  monacoInstance = monaco;
65
70
  loader.config({ monaco });
@@ -1,10 +1,29 @@
1
- import { type FunctionComponent, ReactNode } from 'react';
2
- import { Options } from 'react-markdown';
3
- import { CodeBlockMessageProps } from '../Message/CodeBlockMessage/CodeBlockMessage';
4
- import { TableProps } from '@patternfly/react-table';
5
- import 'highlight.js/styles/vs2015.css';
6
- import { PluggableList } from 'unified';
7
- import { ButtonProps } from '@patternfly/react-core';
1
+ import { type FunctionComponent, type ReactNode } from 'react';
2
+ import type { Options } from 'react-markdown';
3
+ import type { CodeBlockMessageProps } from '../Message/CodeBlockMessage/CodeBlockMessage';
4
+ import type { TableProps } from '@patternfly/react-table';
5
+ import type { PluggableList } from 'unified';
6
+ import type { ButtonProps } from '@patternfly/react-core';
7
+ type MarkdownRendererModule = typeof import('./MarkdownRenderer');
8
+ /**
9
+ * Whether the lazy-loaded markdown renderer chunk has finished loading.
10
+ */
11
+ export declare const useIsMarkdownRendererReady: () => boolean;
12
+ /**
13
+ * When provided by `MessageBox`, defers markdown rendering until the shared chunk is ready
14
+ * so existing messages don't each flash an individual loading state.
15
+ */
16
+ export declare const MarkdownRendererReadyContext: import("react").Context<boolean | null>;
17
+ /**
18
+ * Eagerly fetches the markdown renderer chunk so the first rendered message
19
+ * doesn't flash a loading state while the chunk downloads. Safe to call repeatedly
20
+ * (the dynamic import is cached).
21
+ */
22
+ export declare const preloadMarkdownRenderer: () => void;
23
+ /**
24
+ * Resolves when the markdown renderer chunk has loaded.
25
+ */
26
+ export declare const whenMarkdownRendererReady: () => Promise<MarkdownRendererModule>;
8
27
  /**
9
28
  * MarkdownContent renders content either as plain text or with content with markdown support.
10
29
  *
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __rest = (this && this.__rest) || function (s, e) {
3
26
  var t = {};
4
27
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -14,182 +37,72 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
38
  };
16
39
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.MarkdownContent = void 0;
40
+ exports.MarkdownContent = exports.whenMarkdownRendererReady = exports.preloadMarkdownRenderer = exports.MarkdownRendererReadyContext = exports.useIsMarkdownRendererReady = void 0;
18
41
  const jsx_runtime_1 = require("react/jsx-runtime");
19
- const react_markdown_1 = __importDefault(require("react-markdown"));
20
- const remark_gfm_1 = __importDefault(require("remark-gfm"));
42
+ // ============================================================================
43
+ // Markdown Content - Shared component for rendering markdown
44
+ // ============================================================================
45
+ const react_1 = require("react");
21
46
  const react_core_1 = require("@patternfly/react-core");
22
- const CodeBlockMessage_1 = __importDefault(require("../Message/CodeBlockMessage/CodeBlockMessage"));
23
47
  const TextMessage_1 = __importDefault(require("../Message/TextMessage/TextMessage"));
24
- const ListItemMessage_1 = __importDefault(require("../Message/ListMessage/ListItemMessage"));
25
- const UnorderedListMessage_1 = __importDefault(require("../Message/ListMessage/UnorderedListMessage"));
26
- const OrderedListMessage_1 = __importDefault(require("../Message/ListMessage/OrderedListMessage"));
27
- const TableMessage_1 = __importDefault(require("../Message/TableMessage/TableMessage"));
28
- const TrMessage_1 = __importDefault(require("../Message/TableMessage/TrMessage"));
29
- const TdMessage_1 = __importDefault(require("../Message/TableMessage/TdMessage"));
30
- const TbodyMessage_1 = __importDefault(require("../Message/TableMessage/TbodyMessage"));
31
- const TheadMessage_1 = __importDefault(require("../Message/TableMessage/TheadMessage"));
32
- const ThMessage_1 = __importDefault(require("../Message/TableMessage/ThMessage"));
33
- const ImageMessage_1 = __importDefault(require("../Message/ImageMessage/ImageMessage"));
34
- const rehype_unwrap_images_1 = __importDefault(require("rehype-unwrap-images"));
35
- const rehype_external_links_1 = __importDefault(require("rehype-external-links"));
36
- const rehype_sanitize_1 = __importDefault(require("rehype-sanitize"));
37
- const rehype_highlight_1 = __importDefault(require("rehype-highlight"));
38
- require("highlight.js/styles/vs2015.css");
39
- const LinkMessage_1 = __importDefault(require("../Message/LinkMessage/LinkMessage"));
40
- const rehypeMoveImagesOutOfParagraphs_1 = require("../Message/Plugins/rehypeMoveImagesOutOfParagraphs");
41
- const SuperscriptMessage_1 = __importDefault(require("../Message/SuperscriptMessage/SuperscriptMessage"));
42
- const react_styles_1 = require("@patternfly/react-styles");
43
- const MarkdownContent = ({ content, isMarkdownDisabled, codeBlockProps, tableProps, openLinkInNewTab = true, additionalRehypePlugins = [], additionalRemarkPlugins = [], linkProps, reactMarkdownProps, remarkGfmProps, hasNoImages = false, isPrimary, textComponent, shouldRetainStyles }) => {
44
- let rehypePlugins = [rehype_unwrap_images_1.default, rehypeMoveImagesOutOfParagraphs_1.rehypeMoveImagesOutOfParagraphs, rehype_highlight_1.default];
45
- if (openLinkInNewTab) {
46
- rehypePlugins = rehypePlugins.concat([[rehype_external_links_1.default, { target: '_blank' }, rehype_sanitize_1.default]]);
47
- }
48
- if (additionalRehypePlugins) {
49
- rehypePlugins.push(...additionalRehypePlugins);
50
- }
51
- const disallowedElements = hasNoImages ? ['img'] : [];
52
- if (reactMarkdownProps && reactMarkdownProps.disallowedElements) {
53
- disallowedElements.push(...reactMarkdownProps.disallowedElements);
48
+ let markdownRendererPromise = null;
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ let ResolvedMarkdownRenderer = null;
51
+ const markdownRendererListeners = new Set();
52
+ const importMarkdownRenderer = () => {
53
+ if (!markdownRendererPromise) {
54
+ markdownRendererPromise = Promise.resolve().then(() => __importStar(require('./MarkdownRenderer'))).then((module) => {
55
+ ResolvedMarkdownRenderer = module.default;
56
+ markdownRendererListeners.forEach((listener) => listener());
57
+ return module;
58
+ });
54
59
  }
60
+ return markdownRendererPromise;
61
+ };
62
+ const subscribeToMarkdownRendererReady = (listener) => {
63
+ markdownRendererListeners.add(listener);
64
+ void importMarkdownRenderer();
65
+ return () => markdownRendererListeners.delete(listener);
66
+ };
67
+ /**
68
+ * Whether the lazy-loaded markdown renderer chunk has finished loading.
69
+ */
70
+ const useIsMarkdownRendererReady = () => (0, react_1.useSyncExternalStore)(subscribeToMarkdownRendererReady, () => ResolvedMarkdownRenderer !== null, () => true);
71
+ exports.useIsMarkdownRendererReady = useIsMarkdownRendererReady;
72
+ /**
73
+ * When provided by `MessageBox`, defers markdown rendering until the shared chunk is ready
74
+ * so existing messages don't each flash an individual loading state.
75
+ */
76
+ exports.MarkdownRendererReadyContext = (0, react_1.createContext)(null);
77
+ /**
78
+ * Eagerly fetches the markdown renderer chunk so the first rendered message
79
+ * doesn't flash a loading state while the chunk downloads. Safe to call repeatedly
80
+ * (the dynamic import is cached).
81
+ */
82
+ const preloadMarkdownRenderer = () => {
83
+ void importMarkdownRenderer();
84
+ };
85
+ exports.preloadMarkdownRenderer = preloadMarkdownRenderer;
86
+ /**
87
+ * Resolves when the markdown renderer chunk has loaded.
88
+ */
89
+ const whenMarkdownRendererReady = () => importMarkdownRenderer();
90
+ exports.whenMarkdownRendererReady = whenMarkdownRendererReady;
91
+ const MarkdownContent = (_a) => {
92
+ var { content, isMarkdownDisabled, isPrimary, textComponent } = _a, markdownProps = __rest(_a, ["content", "isMarkdownDisabled", "isPrimary", "textComponent"]);
93
+ const contextReady = (0, react_1.useContext)(exports.MarkdownRendererReadyContext);
94
+ const storeReady = (0, exports.useIsMarkdownRendererReady)();
95
+ const isMarkdownRendererReady = contextReady !== null && contextReady !== void 0 ? contextReady : storeReady;
55
96
  if (isMarkdownDisabled) {
56
97
  if (textComponent) {
57
98
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: textComponent });
58
99
  }
59
100
  return ((0, jsx_runtime_1.jsx)(TextMessage_1.default, { component: react_core_1.ContentVariants.p, isPrimary: isPrimary, children: content }));
60
101
  }
61
- return ((0, jsx_runtime_1.jsx)(react_markdown_1.default, Object.assign({ components: {
62
- section: (props) => {
63
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
64
- const { node } = props, rest = __rest(props, ["node"]);
65
- return ((0, jsx_runtime_1.jsx)("section", Object.assign({}, rest, { className: (0, react_styles_1.css)('pf-chatbot__message-text', shouldRetainStyles && 'pf-m-markdown', rest === null || rest === void 0 ? void 0 : rest.className) })));
66
- },
67
- p: (props) => {
68
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
69
- const { node } = props, rest = __rest(props, ["node"]);
70
- return ((0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.p }, rest, { isPrimary: isPrimary })));
71
- },
72
- code: (_a) => {
73
- var { children } = _a, props = __rest(_a, ["children"]);
74
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
75
- const { node } = props, codeProps = __rest(props, ["node"]);
76
- return ((0, jsx_runtime_1.jsx)(CodeBlockMessage_1.default, Object.assign({}, codeProps, codeBlockProps, { isPrimary: isPrimary, shouldRetainStyles: shouldRetainStyles, children: children })));
77
- },
78
- h1: (props) => {
79
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
80
- const { node } = props, rest = __rest(props, ["node"]);
81
- return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h1 }, rest));
82
- },
83
- h2: (props) => {
84
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
85
- const { node } = props, rest = __rest(props, ["node"]);
86
- return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h2 }, rest));
87
- },
88
- h3: (props) => {
89
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
90
- const { node } = props, rest = __rest(props, ["node"]);
91
- return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h3 }, rest));
92
- },
93
- h4: (props) => {
94
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
95
- const { node } = props, rest = __rest(props, ["node"]);
96
- return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h4 }, rest));
97
- },
98
- h5: (props) => {
99
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
100
- const { node } = props, rest = __rest(props, ["node"]);
101
- return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h5 }, rest));
102
- },
103
- h6: (props) => {
104
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
105
- const { node } = props, rest = __rest(props, ["node"]);
106
- return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h6 }, rest));
107
- },
108
- blockquote: (props) => {
109
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
110
- const { node } = props, rest = __rest(props, ["node"]);
111
- return ((0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.blockquote }, rest)));
112
- },
113
- ul: (props) => {
114
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
115
- const { node } = props, rest = __rest(props, ["node"]);
116
- return (0, jsx_runtime_1.jsx)(UnorderedListMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles }, rest));
117
- },
118
- ol: (props) => {
119
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
120
- const { node } = props, rest = __rest(props, ["node"]);
121
- return (0, jsx_runtime_1.jsx)(OrderedListMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles }, rest));
122
- },
123
- li: (props) => {
124
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
125
- const { node } = props, rest = __rest(props, ["node"]);
126
- return (0, jsx_runtime_1.jsx)(ListItemMessage_1.default, Object.assign({}, rest));
127
- },
128
- // table requires node attribute for calculating headers for mobile breakpoint
129
- table: (props) => ((0, jsx_runtime_1.jsx)(TableMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles }, props, tableProps, { isPrimary: isPrimary }))),
130
- tbody: (props) => {
131
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
132
- const { node } = props, rest = __rest(props, ["node"]);
133
- return (0, jsx_runtime_1.jsx)(TbodyMessage_1.default, Object.assign({}, rest));
134
- },
135
- thead: (props) => {
136
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
137
- const { node } = props, rest = __rest(props, ["node"]);
138
- return (0, jsx_runtime_1.jsx)(TheadMessage_1.default, Object.assign({}, rest));
139
- },
140
- tr: (props) => {
141
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
142
- const { node } = props, rest = __rest(props, ["node"]);
143
- return (0, jsx_runtime_1.jsx)(TrMessage_1.default, Object.assign({}, rest));
144
- },
145
- td: (props) => {
146
- // Conflicts with Td type
147
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
148
- const { node, width } = props, rest = __rest(props, ["node", "width"]);
149
- return (0, jsx_runtime_1.jsx)(TdMessage_1.default, Object.assign({}, rest));
150
- },
151
- th: (props) => {
152
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
153
- const { node } = props, rest = __rest(props, ["node"]);
154
- return (0, jsx_runtime_1.jsx)(ThMessage_1.default, Object.assign({}, rest));
155
- },
156
- img: (props) => {
157
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
158
- const { node } = props, rest = __rest(props, ["node"]);
159
- return (0, jsx_runtime_1.jsx)(ImageMessage_1.default, Object.assign({}, rest));
160
- },
161
- a: (props) => {
162
- // node is just the details of the document structure - not needed
163
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
164
- const { node } = props, rest = __rest(props, ["node"]);
165
- return (
166
- // some a types conflict with ButtonProps, but it's ok because we are using an a tag
167
- // there are too many to handle manually
168
- (0, jsx_runtime_1.jsx)(LinkMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles }, rest, linkProps, { children: props.children })));
169
- },
170
- // used for footnotes
171
- sup: (props) => {
172
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
173
- const { node } = props, rest = __rest(props, ["node"]);
174
- return (0, jsx_runtime_1.jsx)(SuperscriptMessage_1.default, Object.assign({}, rest));
175
- }
176
- }, remarkPlugins: [[remark_gfm_1.default, Object.assign({}, remarkGfmProps)], ...additionalRemarkPlugins], rehypePlugins: rehypePlugins }, reactMarkdownProps, { remarkRehypeOptions: Object.assign({
177
- // removes sr-only class from footnote labels applied by default
178
- footnoteLabelProperties: { className: [''] },
179
- // omit default ↩ text; backref icon is rendered in LinkMessage
180
- footnoteBackContent: (_referenceIndex, rereferenceIndex) => {
181
- if (rereferenceIndex > 1) {
182
- return [
183
- {
184
- type: 'element',
185
- tagName: 'sup',
186
- properties: {},
187
- children: [{ type: 'text', value: String(rereferenceIndex) }]
188
- }
189
- ];
190
- }
191
- return [];
192
- } }, reactMarkdownProps === null || reactMarkdownProps === void 0 ? void 0 : reactMarkdownProps.remarkRehypeOptions), disallowedElements: disallowedElements, children: content })));
102
+ if (!isMarkdownRendererReady || !ResolvedMarkdownRenderer) {
103
+ return null;
104
+ }
105
+ return (0, jsx_runtime_1.jsx)(ResolvedMarkdownRenderer, Object.assign({}, markdownProps, { content: content, isPrimary: isPrimary }));
193
106
  };
194
107
  exports.MarkdownContent = MarkdownContent;
195
108
  exports.default = exports.MarkdownContent;
@@ -0,0 +1,6 @@
1
+ import { type FunctionComponent } from 'react';
2
+ import 'highlight.js/styles/vs2015.css';
3
+ import type { MarkdownContentProps } from './MarkdownContent';
4
+ export type MarkdownRendererProps = Omit<MarkdownContentProps, 'isMarkdownDisabled' | 'textComponent'>;
5
+ declare const MarkdownRenderer: FunctionComponent<MarkdownRendererProps>;
6
+ export default MarkdownRenderer;
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const jsx_runtime_1 = require("react/jsx-runtime");
18
+ const react_markdown_1 = __importDefault(require("react-markdown"));
19
+ const remark_gfm_1 = __importDefault(require("remark-gfm"));
20
+ const react_core_1 = require("@patternfly/react-core");
21
+ const CodeBlockMessage_1 = __importDefault(require("../Message/CodeBlockMessage/CodeBlockMessage"));
22
+ const TextMessage_1 = __importDefault(require("../Message/TextMessage/TextMessage"));
23
+ const ListItemMessage_1 = __importDefault(require("../Message/ListMessage/ListItemMessage"));
24
+ const UnorderedListMessage_1 = __importDefault(require("../Message/ListMessage/UnorderedListMessage"));
25
+ const OrderedListMessage_1 = __importDefault(require("../Message/ListMessage/OrderedListMessage"));
26
+ const TableMessage_1 = __importDefault(require("../Message/TableMessage/TableMessage"));
27
+ const TrMessage_1 = __importDefault(require("../Message/TableMessage/TrMessage"));
28
+ const TdMessage_1 = __importDefault(require("../Message/TableMessage/TdMessage"));
29
+ const TbodyMessage_1 = __importDefault(require("../Message/TableMessage/TbodyMessage"));
30
+ const TheadMessage_1 = __importDefault(require("../Message/TableMessage/TheadMessage"));
31
+ const ThMessage_1 = __importDefault(require("../Message/TableMessage/ThMessage"));
32
+ const ImageMessage_1 = __importDefault(require("../Message/ImageMessage/ImageMessage"));
33
+ const rehype_unwrap_images_1 = __importDefault(require("rehype-unwrap-images"));
34
+ const rehype_external_links_1 = __importDefault(require("rehype-external-links"));
35
+ const rehype_sanitize_1 = __importDefault(require("rehype-sanitize"));
36
+ const rehype_highlight_1 = __importDefault(require("rehype-highlight"));
37
+ require("highlight.js/styles/vs2015.css");
38
+ const LinkMessage_1 = __importDefault(require("../Message/LinkMessage/LinkMessage"));
39
+ const rehypeMoveImagesOutOfParagraphs_1 = require("../Message/Plugins/rehypeMoveImagesOutOfParagraphs");
40
+ const SuperscriptMessage_1 = __importDefault(require("../Message/SuperscriptMessage/SuperscriptMessage"));
41
+ const react_styles_1 = require("@patternfly/react-styles");
42
+ const MarkdownRenderer = ({ content, codeBlockProps, tableProps, openLinkInNewTab = true, additionalRehypePlugins = [], additionalRemarkPlugins = [], linkProps, reactMarkdownProps, remarkGfmProps, hasNoImages = false, isPrimary, shouldRetainStyles }) => {
43
+ let rehypePlugins = [rehype_unwrap_images_1.default, rehypeMoveImagesOutOfParagraphs_1.rehypeMoveImagesOutOfParagraphs, rehype_highlight_1.default];
44
+ if (openLinkInNewTab) {
45
+ rehypePlugins = rehypePlugins.concat([[rehype_external_links_1.default, { target: '_blank' }, rehype_sanitize_1.default]]);
46
+ }
47
+ if (additionalRehypePlugins) {
48
+ rehypePlugins.push(...additionalRehypePlugins);
49
+ }
50
+ const disallowedElements = hasNoImages ? ['img'] : [];
51
+ if (reactMarkdownProps && reactMarkdownProps.disallowedElements) {
52
+ disallowedElements.push(...reactMarkdownProps.disallowedElements);
53
+ }
54
+ return ((0, jsx_runtime_1.jsx)(react_markdown_1.default, Object.assign({ components: {
55
+ section: (props) => {
56
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
57
+ const { node } = props, rest = __rest(props, ["node"]);
58
+ return ((0, jsx_runtime_1.jsx)("section", Object.assign({}, rest, { className: (0, react_styles_1.css)('pf-chatbot__message-text', shouldRetainStyles && 'pf-m-markdown', rest === null || rest === void 0 ? void 0 : rest.className) })));
59
+ },
60
+ p: (props) => {
61
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
62
+ const { node } = props, rest = __rest(props, ["node"]);
63
+ return ((0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.p }, rest, { isPrimary: isPrimary })));
64
+ },
65
+ code: (_a) => {
66
+ var { children } = _a, props = __rest(_a, ["children"]);
67
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
68
+ const { node } = props, codeProps = __rest(props, ["node"]);
69
+ return ((0, jsx_runtime_1.jsx)(CodeBlockMessage_1.default, Object.assign({}, codeProps, codeBlockProps, { isPrimary: isPrimary, shouldRetainStyles: shouldRetainStyles, children: children })));
70
+ },
71
+ h1: (props) => {
72
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
73
+ const { node } = props, rest = __rest(props, ["node"]);
74
+ return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h1 }, rest));
75
+ },
76
+ h2: (props) => {
77
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
78
+ const { node } = props, rest = __rest(props, ["node"]);
79
+ return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h2 }, rest));
80
+ },
81
+ h3: (props) => {
82
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
83
+ const { node } = props, rest = __rest(props, ["node"]);
84
+ return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h3 }, rest));
85
+ },
86
+ h4: (props) => {
87
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
88
+ const { node } = props, rest = __rest(props, ["node"]);
89
+ return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h4 }, rest));
90
+ },
91
+ h5: (props) => {
92
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
93
+ const { node } = props, rest = __rest(props, ["node"]);
94
+ return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h5 }, rest));
95
+ },
96
+ h6: (props) => {
97
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
98
+ const { node } = props, rest = __rest(props, ["node"]);
99
+ return (0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.h6 }, rest));
100
+ },
101
+ blockquote: (props) => {
102
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
103
+ const { node } = props, rest = __rest(props, ["node"]);
104
+ return ((0, jsx_runtime_1.jsx)(TextMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles, component: react_core_1.ContentVariants.blockquote }, rest)));
105
+ },
106
+ ul: (props) => {
107
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
108
+ const { node } = props, rest = __rest(props, ["node"]);
109
+ return (0, jsx_runtime_1.jsx)(UnorderedListMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles }, rest));
110
+ },
111
+ ol: (props) => {
112
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
113
+ const { node } = props, rest = __rest(props, ["node"]);
114
+ return (0, jsx_runtime_1.jsx)(OrderedListMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles }, rest));
115
+ },
116
+ li: (props) => {
117
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
118
+ const { node } = props, rest = __rest(props, ["node"]);
119
+ return (0, jsx_runtime_1.jsx)(ListItemMessage_1.default, Object.assign({}, rest));
120
+ },
121
+ // table requires node attribute for calculating headers for mobile breakpoint
122
+ table: (props) => ((0, jsx_runtime_1.jsx)(TableMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles }, props, tableProps, { isPrimary: isPrimary }))),
123
+ tbody: (props) => {
124
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
125
+ const { node } = props, rest = __rest(props, ["node"]);
126
+ return (0, jsx_runtime_1.jsx)(TbodyMessage_1.default, Object.assign({}, rest));
127
+ },
128
+ thead: (props) => {
129
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
130
+ const { node } = props, rest = __rest(props, ["node"]);
131
+ return (0, jsx_runtime_1.jsx)(TheadMessage_1.default, Object.assign({}, rest));
132
+ },
133
+ tr: (props) => {
134
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
135
+ const { node } = props, rest = __rest(props, ["node"]);
136
+ return (0, jsx_runtime_1.jsx)(TrMessage_1.default, Object.assign({}, rest));
137
+ },
138
+ td: (props) => {
139
+ // Conflicts with Td type
140
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
141
+ const { node, width } = props, rest = __rest(props, ["node", "width"]);
142
+ return (0, jsx_runtime_1.jsx)(TdMessage_1.default, Object.assign({}, rest));
143
+ },
144
+ th: (props) => {
145
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
146
+ const { node } = props, rest = __rest(props, ["node"]);
147
+ return (0, jsx_runtime_1.jsx)(ThMessage_1.default, Object.assign({}, rest));
148
+ },
149
+ img: (props) => {
150
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
151
+ const { node } = props, rest = __rest(props, ["node"]);
152
+ return (0, jsx_runtime_1.jsx)(ImageMessage_1.default, Object.assign({}, rest));
153
+ },
154
+ a: (props) => {
155
+ // node is just the details of the document structure - not needed
156
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
157
+ const { node } = props, rest = __rest(props, ["node"]);
158
+ return (
159
+ // some a types conflict with ButtonProps, but it's ok because we are using an a tag
160
+ // there are too many to handle manually
161
+ (0, jsx_runtime_1.jsx)(LinkMessage_1.default, Object.assign({ shouldRetainStyles: shouldRetainStyles }, rest, linkProps, { children: props.children })));
162
+ },
163
+ // used for footnotes
164
+ sup: (props) => {
165
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
166
+ const { node } = props, rest = __rest(props, ["node"]);
167
+ return (0, jsx_runtime_1.jsx)(SuperscriptMessage_1.default, Object.assign({}, rest));
168
+ }
169
+ }, remarkPlugins: [[remark_gfm_1.default, Object.assign({}, remarkGfmProps)], ...additionalRemarkPlugins], rehypePlugins: rehypePlugins }, reactMarkdownProps, { remarkRehypeOptions: Object.assign({
170
+ // removes sr-only class from footnote labels applied by default
171
+ footnoteLabelProperties: { className: [''] },
172
+ // omit default ↩ text; backref icon is rendered in LinkMessage
173
+ footnoteBackContent: (_referenceIndex, rereferenceIndex) => {
174
+ if (rereferenceIndex > 1) {
175
+ return [
176
+ {
177
+ type: 'element',
178
+ tagName: 'sup',
179
+ properties: {},
180
+ children: [{ type: 'text', value: String(rereferenceIndex) }]
181
+ }
182
+ ];
183
+ }
184
+ return [];
185
+ } }, reactMarkdownProps === null || reactMarkdownProps === void 0 ? void 0 : reactMarkdownProps.remarkRehypeOptions), disallowedElements: disallowedElements, children: content })));
186
+ };
187
+ exports.default = MarkdownRenderer;
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import type { FunctionComponent, HTMLProps, MouseEvent as ReactMouseEvent, Ref } from 'react';
3
- import { Options } from 'react-markdown';
3
+ import type { Options } from 'react-markdown';
4
4
  import { AlertProps, AvatarProps, ButtonProps, FormProps, LabelGroupProps } from '@patternfly/react-core';
5
5
  import { CodeBlockMessageProps } from './CodeBlockMessage/CodeBlockMessage';
6
6
  import { ActionProps } from '../ResponseActions/ResponseActions';
@@ -9,9 +9,8 @@ import { QuickStart, QuickstartAction } from './QuickStarts/types';
9
9
  import QuickResponse from './QuickResponse/QuickResponse';
10
10
  import { UserFeedbackProps } from './UserFeedback/UserFeedback';
11
11
  import { UserFeedbackCompleteProps } from './UserFeedback/UserFeedbackComplete';
12
- import { TableProps } from '@patternfly/react-table';
13
- import 'highlight.js/styles/vs2015.css';
14
- import { PluggableList } from 'unified';
12
+ import type { TableProps } from '@patternfly/react-table';
13
+ import type { PluggableList } from 'unified';
15
14
  import { ToolResponseProps } from '../ToolResponse';
16
15
  import { DeepThinkingProps } from '../DeepThinking';
17
16
  import { ToolCallProps } from '../ToolCall';
@@ -29,8 +29,6 @@ const QuickStartTile_1 = __importDefault(require("./QuickStarts/QuickStartTile")
29
29
  const QuickResponse_1 = __importDefault(require("./QuickResponse/QuickResponse"));
30
30
  const UserFeedback_1 = __importDefault(require("./UserFeedback/UserFeedback"));
31
31
  const UserFeedbackComplete_1 = __importDefault(require("./UserFeedback/UserFeedbackComplete"));
32
- // see the full list of styles here: https://highlightjs.org/examples
33
- require("highlight.js/styles/vs2015.css");
34
32
  const ErrorMessage_1 = __importDefault(require("./ErrorMessage/ErrorMessage"));
35
33
  const MessageInput_1 = __importDefault(require("./MessageInput"));
36
34
  const ToolResponse_1 = __importDefault(require("../ToolResponse"));
@@ -21,8 +21,11 @@ const jsx_runtime_1 = require("react/jsx-runtime");
21
21
  // ============================================================================
22
22
  const react_1 = require("react");
23
23
  const JumpButton_1 = __importDefault(require("./JumpButton"));
24
+ const MarkdownContent_1 = require("../MarkdownContent/MarkdownContent");
24
25
  const react_core_1 = require("@patternfly/react-core");
25
26
  const react_styles_1 = require("@patternfly/react-styles");
27
+ // Start fetching the markdown chunk as soon as MessageBox enters the bundle.
28
+ (0, MarkdownContent_1.preloadMarkdownRenderer)();
26
29
  const SCROLL_EDGE_DELTA = 100;
27
30
  const getScrollMetrics = (element) => {
28
31
  const { scrollTop, scrollHeight, clientHeight } = element;
@@ -48,6 +51,7 @@ const shouldFollowContentGrowth = (metrics, enableSmartScroll, autoScroll, pause
48
51
  (enableSmartScroll && autoScroll && !pauseAutoScroll && metrics.roundedScrollTop > 0);
49
52
  exports.MessageBox = (0, react_1.forwardRef)((_a, ref) => {
50
53
  var { announcement, ariaLabel = 'Scrollable message log', children, className, position = 'top', onScrollToTopClick, onScrollToBottomClick, enableSmartScroll = false, jumpButtonTopProps, jumpButtonBottomProps, jumpButtonBottomTooltipProps, jumpButtonTopTooltipProps, hasOuterScrollbar = false } = _a, props = __rest(_a, ["announcement", "ariaLabel", "children", "className", "position", "onScrollToTopClick", "onScrollToBottomClick", "enableSmartScroll", "jumpButtonTopProps", "jumpButtonBottomProps", "jumpButtonBottomTooltipProps", "jumpButtonTopTooltipProps", "hasOuterScrollbar"]);
54
+ const isMarkdownReady = (0, MarkdownContent_1.useIsMarkdownRendererReady)();
51
55
  const [atTop, setAtTop] = (0, react_1.useState)(true);
52
56
  const [atBottom, setAtBottom] = (0, react_1.useState)(false);
53
57
  const [isOverflowing, setIsOverflowing] = (0, react_1.useState)(false);
@@ -258,6 +262,6 @@ exports.MessageBox = (0, react_1.forwardRef)((_a, ref) => {
258
262
  onTouchMove,
259
263
  onTouchEnd
260
264
  };
261
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(JumpButton_1.default, { position: "top", isHidden: !hasMeasuredScroll || (isOverflowing && atTop), onClick: scrollToTop, jumpButtonProps: jumpButtonTopProps, jumpButtonTooltipProps: jumpButtonTopTooltipProps }), (0, jsx_runtime_1.jsx)(JumpButton_1.default, { position: "bottom", isHidden: !hasMeasuredScroll || (isOverflowing && atBottom), onClick: () => scrollToBottom({ resumeSmartScroll: true }), jumpButtonProps: jumpButtonBottomProps, jumpButtonTooltipProps: jumpButtonBottomTooltipProps }), (0, jsx_runtime_1.jsxs)("div", Object.assign({ role: "region", tabIndex: 0, "aria-label": ariaLabel, className: (0, react_styles_1.css)('pf-chatbot__messagebox', position === 'bottom' && 'pf-chatbot__messagebox--bottom', hasOuterScrollbar && 'pf-chatbot__messagebox--outer-scroll', className), ref: messageBoxRef }, props, (enableSmartScroll ? Object.assign({}, smartScrollHandlers) : {}), { children: [children, (0, jsx_runtime_1.jsx)("div", { className: "pf-chatbot__messagebox-announcement pf-chatbot-m-hidden", "aria-live": "polite", children: announcement })] }))] }));
265
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(JumpButton_1.default, { position: "top", isHidden: !hasMeasuredScroll || (isOverflowing && atTop), onClick: scrollToTop, jumpButtonProps: jumpButtonTopProps, jumpButtonTooltipProps: jumpButtonTopTooltipProps }), (0, jsx_runtime_1.jsx)(JumpButton_1.default, { position: "bottom", isHidden: !hasMeasuredScroll || (isOverflowing && atBottom), onClick: () => scrollToBottom({ resumeSmartScroll: true }), jumpButtonProps: jumpButtonBottomProps, jumpButtonTooltipProps: jumpButtonBottomTooltipProps }), (0, jsx_runtime_1.jsxs)("div", Object.assign({ role: "region", tabIndex: 0, "aria-label": ariaLabel, className: (0, react_styles_1.css)('pf-chatbot__messagebox', position === 'bottom' && 'pf-chatbot__messagebox--bottom', hasOuterScrollbar && 'pf-chatbot__messagebox--outer-scroll', className), ref: messageBoxRef }, props, (enableSmartScroll ? Object.assign({}, smartScrollHandlers) : {}), { children: [(0, jsx_runtime_1.jsx)(MarkdownContent_1.MarkdownRendererReadyContext.Provider, { value: isMarkdownReady, children: children }), (0, jsx_runtime_1.jsx)("div", { className: "pf-chatbot__messagebox-announcement pf-chatbot-m-hidden", "aria-live": "polite", children: announcement })] }))] }));
262
266
  });
263
267
  exports.default = exports.MessageBox;
@@ -1,5 +1,3 @@
1
- export { default as AttachmentEdit } from './AttachmentEdit';
2
- export * from './AttachmentEdit';
3
1
  export { default as AttachMenu } from './AttachMenu';
4
2
  export * from './AttachMenu';
5
3
  export { default as Chatbot } from './Chatbot';
@@ -22,8 +20,6 @@ export { default as ChatbotToggle } from './ChatbotToggle';
22
20
  export * from './ChatbotToggle';
23
21
  export { default as ChatbotWelcomePrompt } from './ChatbotWelcomePrompt';
24
22
  export * from './ChatbotWelcomePrompt';
25
- export { default as CodeModal } from './CodeModal';
26
- export * from './CodeModal';
27
23
  export { default as Compare } from './Compare';
28
24
  export * from './Compare';
29
25
  export { default as DeepThinking } from './DeepThinking';
@@ -50,8 +46,6 @@ export { default as MessageDivider } from './MessageDivider';
50
46
  export * from './MessageDivider';
51
47
  export { default as Onboarding } from './Onboarding';
52
48
  export * from './Onboarding';
53
- export { default as PreviewAttachment } from './PreviewAttachment';
54
- export * from './PreviewAttachment';
55
49
  export { default as ResponseActions } from './ResponseActions';
56
50
  export * from './ResponseActions';
57
51
  export { default as Settings } from './Settings';
@@ -68,5 +62,3 @@ export { default as ToolCall } from './ToolCall';
68
62
  export * from './ToolCall';
69
63
  export { default as ToolResponse } from './ToolResponse';
70
64
  export * from './ToolResponse';
71
- export { default as tracking } from './tracking';
72
- export * from './tracking';