@cratis/components 3.5.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/README.md +1 -0
  2. package/dist/esm/Canvas/Canvas.d.ts +6 -1
  3. package/dist/esm/Canvas/Canvas.d.ts.map +1 -1
  4. package/dist/esm/Canvas/Canvas.js +27 -7
  5. package/dist/esm/Canvas/Canvas.js.map +1 -1
  6. package/dist/esm/Canvas/CanvasControls.js.map +1 -1
  7. package/dist/esm/Canvas/CanvasItem.d.ts +1 -0
  8. package/dist/esm/Canvas/CanvasItem.d.ts.map +1 -1
  9. package/dist/esm/Canvas/CanvasItem.js +7 -2
  10. package/dist/esm/Canvas/CanvasItem.js.map +1 -1
  11. package/dist/esm/Canvas/CanvasMinimap.js.map +1 -1
  12. package/dist/esm/Canvas/CanvasOverlay.js.map +1 -1
  13. package/dist/esm/Canvas/canvasGesture.js.map +1 -1
  14. package/dist/esm/Canvas/canvasTransformActivity.js.map +1 -1
  15. package/dist/esm/Canvas/glassAttributes.js.map +1 -1
  16. package/dist/esm/Canvas/index.js +8 -0
  17. package/dist/esm/Canvas/index.js.map +1 -1
  18. package/dist/esm/Canvas/isBackgroundPointerTarget.js.map +1 -1
  19. package/dist/esm/Canvas/isWithinScrollableContent.js.map +1 -1
  20. package/dist/esm/Canvas/messaging/useOptionalMessenger.d.ts +3 -0
  21. package/dist/esm/Canvas/messaging/useOptionalMessenger.d.ts.map +1 -0
  22. package/dist/esm/Canvas/messaging/useOptionalMessenger.js +41 -0
  23. package/dist/esm/Canvas/messaging/useOptionalMessenger.js.map +1 -0
  24. package/dist/esm/Canvas/panMomentum.js.map +1 -1
  25. package/dist/esm/Canvas/pinchGesture.js.map +1 -1
  26. package/dist/esm/Canvas/selfSuspendingFrameLoop.js.map +1 -1
  27. package/dist/esm/Canvas/shapes/ChatBubble/AnchoredOverlay.js.map +1 -1
  28. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/PersonAvatarCircle.js.map +1 -1
  29. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getAvatarColor.js.map +1 -1
  30. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getInitials.js.map +1 -1
  31. package/dist/esm/Canvas/shapes/ChatBubble/Chat.d.ts +3 -1
  32. package/dist/esm/Canvas/shapes/ChatBubble/Chat.d.ts.map +1 -1
  33. package/dist/esm/Canvas/shapes/ChatBubble/Chat.js +13 -3
  34. package/dist/esm/Canvas/shapes/ChatBubble/Chat.js.map +1 -1
  35. package/dist/esm/Canvas/shapes/ChatBubble/ChatAuthorKind.js.map +1 -1
  36. package/dist/esm/Canvas/shapes/ChatBubble/ChatBubble.js.map +1 -1
  37. package/dist/esm/Canvas/shapes/ChatBubble/ChatComposer.d.ts +2 -1
  38. package/dist/esm/Canvas/shapes/ChatBubble/ChatComposer.d.ts.map +1 -1
  39. package/dist/esm/Canvas/shapes/ChatBubble/ChatComposer.js +52 -4
  40. package/dist/esm/Canvas/shapes/ChatBubble/ChatComposer.js.map +1 -1
  41. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageAdded.d.ts +6 -0
  42. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageAdded.d.ts.map +1 -0
  43. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageAdded.js +18 -0
  44. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageAdded.js.map +1 -0
  45. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageBubble.js.map +1 -1
  46. package/dist/esm/Canvas/shapes/ChatBubble/ChatVariant.js.map +1 -1
  47. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategoryKey.js.map +1 -1
  48. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiPicker.js.map +1 -1
  49. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/emojiCatalog.js.map +1 -1
  50. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/recentEmojis.js.map +1 -1
  51. package/dist/esm/Canvas/shapes/ChatBubble/FailedReply.js.map +1 -1
  52. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionSuggestions.js.map +1 -1
  53. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/activeMentionQuery.js.map +1 -1
  54. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/applyMention.js.map +1 -1
  55. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/extractMentions.d.ts +4 -0
  56. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/extractMentions.d.ts.map +1 -0
  57. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/extractMentions.js +24 -0
  58. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/extractMentions.js.map +1 -0
  59. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/findMentionRanges.d.ts +11 -0
  60. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/findMentionRanges.d.ts.map +1 -0
  61. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/findMentionRanges.js +40 -0
  62. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/findMentionRanges.js.map +1 -0
  63. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/index.d.ts +3 -0
  64. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/index.d.ts.map +1 -1
  65. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/index.js +3 -0
  66. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/index.js.map +1 -1
  67. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/matchCandidates.js.map +1 -1
  68. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/mentionSegments.d.ts +10 -0
  69. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/mentionSegments.d.ts.map +1 -0
  70. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/mentionSegments.js +29 -0
  71. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/mentionSegments.js.map +1 -0
  72. package/dist/esm/Canvas/shapes/ChatBubble/MessageReactions.js.map +1 -1
  73. package/dist/esm/Canvas/shapes/ChatBubble/ReactionPicker.js.map +1 -1
  74. package/dist/esm/Canvas/shapes/ChatBubble/TypingIndicator.js.map +1 -1
  75. package/dist/esm/Canvas/shapes/ChatBubble/findOwnReaction.js.map +1 -1
  76. package/dist/esm/Canvas/shapes/ChatBubble/index.d.ts +1 -0
  77. package/dist/esm/Canvas/shapes/ChatBubble/index.d.ts.map +1 -1
  78. package/dist/esm/Canvas/shapes/ChatBubble/index.js +1 -0
  79. package/dist/esm/Canvas/shapes/ChatBubble/index.js.map +1 -1
  80. package/dist/esm/Canvas/shapes/ChatBubble/reactionsExcludingUser.js.map +1 -1
  81. package/dist/esm/Canvas/shapes/Note/Note.d.ts.map +1 -1
  82. package/dist/esm/Canvas/shapes/Note/Note.js +11 -2
  83. package/dist/esm/Canvas/shapes/Note/Note.js.map +1 -1
  84. package/dist/esm/Canvas/shapes/Note/NoteTextChanged.d.ts +6 -0
  85. package/dist/esm/Canvas/shapes/Note/NoteTextChanged.d.ts.map +1 -0
  86. package/dist/esm/Canvas/shapes/Note/NoteTextChanged.js +18 -0
  87. package/dist/esm/Canvas/shapes/Note/NoteTextChanged.js.map +1 -0
  88. package/dist/esm/Canvas/shapes/Note/index.d.ts +1 -0
  89. package/dist/esm/Canvas/shapes/Note/index.d.ts.map +1 -1
  90. package/dist/esm/Canvas/shapes/Note/index.js +1 -0
  91. package/dist/esm/Canvas/shapes/Note/index.js.map +1 -1
  92. package/dist/esm/Canvas/shapes/Note/noteFont.js.map +1 -1
  93. package/dist/esm/Canvas/shapes/Region/ItemAddedToRegion.d.ts +6 -0
  94. package/dist/esm/Canvas/shapes/Region/ItemAddedToRegion.d.ts.map +1 -0
  95. package/dist/esm/Canvas/shapes/Region/ItemAddedToRegion.js +20 -0
  96. package/dist/esm/Canvas/shapes/Region/ItemAddedToRegion.js.map +1 -0
  97. package/dist/esm/Canvas/shapes/Region/ItemRemovedFromRegion.d.ts +6 -0
  98. package/dist/esm/Canvas/shapes/Region/ItemRemovedFromRegion.d.ts.map +1 -0
  99. package/dist/esm/Canvas/shapes/Region/ItemRemovedFromRegion.js +19 -0
  100. package/dist/esm/Canvas/shapes/Region/ItemRemovedFromRegion.js.map +1 -0
  101. package/dist/esm/Canvas/shapes/Region/Region.d.ts.map +1 -1
  102. package/dist/esm/Canvas/shapes/Region/Region.js +51 -1
  103. package/dist/esm/Canvas/shapes/Region/Region.js.map +1 -1
  104. package/dist/esm/Canvas/shapes/Region/index.d.ts +4 -0
  105. package/dist/esm/Canvas/shapes/Region/index.d.ts.map +1 -1
  106. package/dist/esm/Canvas/shapes/Region/index.js +3 -0
  107. package/dist/esm/Canvas/shapes/Region/index.js.map +1 -1
  108. package/dist/esm/Canvas/shapes/Region/regionContainment.d.ts +8 -0
  109. package/dist/esm/Canvas/shapes/Region/regionContainment.d.ts.map +1 -0
  110. package/dist/esm/Canvas/shapes/Region/regionContainment.js +35 -0
  111. package/dist/esm/Canvas/shapes/Region/regionContainment.js.map +1 -0
  112. package/dist/esm/Canvas/useDragSelectionGuard.js.map +1 -1
  113. package/dist/esm/Canvas/zoomMechanism.js.map +1 -1
  114. package/dist/esm/Chat/ChatAuthor.d.ts +9 -0
  115. package/dist/esm/Chat/ChatAuthor.d.ts.map +1 -0
  116. package/dist/esm/Chat/ChatAuthor.js +2 -0
  117. package/dist/esm/Chat/ChatAuthor.js.map +1 -0
  118. package/dist/esm/Chat/ChatConversation.d.ts +38 -0
  119. package/dist/esm/Chat/ChatConversation.d.ts.map +1 -0
  120. package/dist/esm/Chat/ChatConversation.js +73 -0
  121. package/dist/esm/Chat/ChatConversation.js.map +1 -0
  122. package/dist/esm/Chat/ChatIdentifier.d.ts +6 -0
  123. package/dist/esm/Chat/ChatIdentifier.d.ts.map +1 -0
  124. package/dist/esm/Chat/ChatIdentifier.js +19 -0
  125. package/dist/esm/Chat/ChatIdentifier.js.map +1 -0
  126. package/dist/esm/Chat/ChatMention.d.ts +8 -0
  127. package/dist/esm/Chat/ChatMention.d.ts.map +1 -0
  128. package/dist/esm/Chat/ChatMention.js +2 -0
  129. package/dist/esm/Chat/ChatMention.js.map +1 -0
  130. package/dist/esm/Chat/ChatMessage.d.ts +12 -0
  131. package/dist/esm/Chat/ChatMessage.d.ts.map +1 -0
  132. package/dist/esm/Chat/ChatMessage.js +2 -0
  133. package/dist/esm/Chat/ChatMessage.js.map +1 -0
  134. package/dist/esm/Chat/ChatMessageAction.d.ts +10 -0
  135. package/dist/esm/Chat/ChatMessageAction.d.ts.map +1 -0
  136. package/dist/esm/Chat/ChatMessageAction.js +2 -0
  137. package/dist/esm/Chat/ChatMessageAction.js.map +1 -0
  138. package/dist/esm/Chat/ChatMessageBody.d.ts +8 -0
  139. package/dist/esm/Chat/ChatMessageBody.d.ts.map +1 -0
  140. package/dist/esm/Chat/ChatMessageBody.js +17 -0
  141. package/dist/esm/Chat/ChatMessageBody.js.map +1 -0
  142. package/dist/esm/Chat/ChatSidebar.d.ts +38 -0
  143. package/dist/esm/Chat/ChatSidebar.d.ts.map +1 -0
  144. package/dist/esm/Chat/ChatSidebar.js +65 -0
  145. package/dist/esm/Chat/ChatSidebar.js.map +1 -0
  146. package/dist/esm/Chat/ChatSidebarForObservableQueries.d.ts +15 -0
  147. package/dist/esm/Chat/ChatSidebarForObservableQueries.d.ts.map +1 -0
  148. package/dist/esm/Chat/ChatSidebarForObservableQueries.js +27 -0
  149. package/dist/esm/Chat/ChatSidebarForObservableQueries.js.map +1 -0
  150. package/dist/esm/Chat/ChatTopic.d.ts +10 -0
  151. package/dist/esm/Chat/ChatTopic.d.ts.map +1 -0
  152. package/dist/esm/Chat/ChatTopic.js +2 -0
  153. package/dist/esm/Chat/ChatTopic.js.map +1 -0
  154. package/dist/esm/Chat/ChatTopicList.d.ts +26 -0
  155. package/dist/esm/Chat/ChatTopicList.d.ts.map +1 -0
  156. package/dist/esm/Chat/ChatTopicList.js +29 -0
  157. package/dist/esm/Chat/ChatTopicList.js.map +1 -0
  158. package/dist/esm/Chat/index.d.ts +29 -0
  159. package/dist/esm/Chat/index.d.ts.map +1 -0
  160. package/dist/esm/Chat/index.js +20 -0
  161. package/dist/esm/Chat/index.js.map +1 -0
  162. package/dist/esm/Chat/isTopicUnnamed.d.ts +3 -0
  163. package/dist/esm/Chat/isTopicUnnamed.d.ts.map +1 -0
  164. package/dist/esm/Chat/isTopicUnnamed.js +14 -0
  165. package/dist/esm/Chat/isTopicUnnamed.js.map +1 -0
  166. package/dist/esm/Chat/relativeTimestamp.d.ts +7 -0
  167. package/dist/esm/Chat/relativeTimestamp.d.ts.map +1 -0
  168. package/dist/esm/Chat/relativeTimestamp.js +25 -0
  169. package/dist/esm/Chat/relativeTimestamp.js.map +1 -0
  170. package/dist/esm/Chat/shouldRequestTopicName.d.ts +2 -0
  171. package/dist/esm/Chat/shouldRequestTopicName.d.ts.map +1 -0
  172. package/dist/esm/Chat/shouldRequestTopicName.js +15 -0
  173. package/dist/esm/Chat/shouldRequestTopicName.js.map +1 -0
  174. package/dist/esm/Chat/topicsByActivity.d.ts +3 -0
  175. package/dist/esm/Chat/topicsByActivity.d.ts.map +1 -0
  176. package/dist/esm/Chat/topicsByActivity.js +25 -0
  177. package/dist/esm/Chat/topicsByActivity.js.map +1 -0
  178. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  179. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  180. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  181. package/dist/esm/CommandDialog/StepperPanel.js.map +1 -1
  182. package/dist/esm/CommandDialog/applyBeforeExecute.js.map +1 -1
  183. package/dist/esm/CommandDialog/stepChildren.js.map +1 -1
  184. package/dist/esm/CommandForm/AutoCommandForm.js.map +1 -1
  185. package/dist/esm/CommandForm/commandFormMarkers.js.map +1 -1
  186. package/dist/esm/CommandForm/defaultFieldTypeProviders.js.map +1 -1
  187. package/dist/esm/CommandForm/fieldTypeProviderRegistry.js.map +1 -1
  188. package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
  189. package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
  190. package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
  191. package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
  192. package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
  193. package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
  194. package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
  195. package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
  196. package/dist/esm/CommandForm/fields/PasswordField.js.map +1 -1
  197. package/dist/esm/CommandForm/fields/RadioButtonField.js.map +1 -1
  198. package/dist/esm/CommandForm/fields/RadioGroupField.js.map +1 -1
  199. package/dist/esm/CommandForm/fields/RatingField.js.map +1 -1
  200. package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
  201. package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
  202. package/dist/esm/CommandForm/fields/ToggleSwitchField.js.map +1 -1
  203. package/dist/esm/Common/ActionMenubar.js.map +1 -1
  204. package/dist/esm/Common/Button.js.map +1 -1
  205. package/dist/esm/Common/CratisComponentsProvider.js.map +1 -1
  206. package/dist/esm/Common/DatePickerInput.js.map +1 -1
  207. package/dist/esm/Common/ErrorBoundary.js.map +1 -1
  208. package/dist/esm/Common/FormElement.js.map +1 -1
  209. package/dist/esm/Common/Icon.js.map +1 -1
  210. package/dist/esm/Common/Page.js.map +1 -1
  211. package/dist/esm/Common/Tooltip.js.map +1 -1
  212. package/dist/esm/Common/normalizeIconClass.js.map +1 -1
  213. package/dist/esm/Compatibility/assertPrimeReact11PassThroughCompatibility.js.map +1 -1
  214. package/dist/esm/Compatibility/components3PrimeReact11PassThroughContract.js.map +1 -1
  215. package/dist/esm/Compatibility/primeReact11PassThroughSentinelPreset.js.map +1 -1
  216. package/dist/esm/DataPage/DataPage.js.map +1 -1
  217. package/dist/esm/DataPage/DataPageLayout.js.map +1 -1
  218. package/dist/esm/DataTables/Column.js.map +1 -1
  219. package/dist/esm/DataTables/ColumnFilterMenu.js.map +1 -1
  220. package/dist/esm/DataTables/DataTableCore.js.map +1 -1
  221. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.js.map +1 -1
  222. package/dist/esm/DataTables/DataTableFilterMeta.js.map +1 -1
  223. package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
  224. package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
  225. package/dist/esm/DataTables/TablePaginator.js.map +1 -1
  226. package/dist/esm/DataTables/paginatorRange.js.map +1 -1
  227. package/dist/esm/DataTables/selectionKeys.js.map +1 -1
  228. package/dist/esm/Dialogs/BusyIndicatorDialog.js +2 -2
  229. package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
  230. package/dist/esm/Dialogs/ConfirmationDialog.js.map +1 -1
  231. package/dist/esm/Dialogs/Dialog.js.map +1 -1
  232. package/dist/esm/Dialogs/DialogInitialFocus.js.map +1 -1
  233. package/dist/esm/Display/Avatar.js.map +1 -1
  234. package/dist/esm/Display/Badge.js.map +1 -1
  235. package/dist/esm/Display/Chip.js.map +1 -1
  236. package/dist/esm/Display/Message.js.map +1 -1
  237. package/dist/esm/Display/ProgressBar.js.map +1 -1
  238. package/dist/esm/Display/ProgressSpinner.js.map +1 -1
  239. package/dist/esm/Display/Skeleton.js.map +1 -1
  240. package/dist/esm/Display/Tag.js.map +1 -1
  241. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  242. package/dist/esm/Filter/FilterEditor.js.map +1 -1
  243. package/dist/esm/Filter/FilterPanel.js.map +1 -1
  244. package/dist/esm/Filter/RangeHistogramFilter.js.map +1 -1
  245. package/dist/esm/Filter/useFilterState.js.map +1 -1
  246. package/dist/esm/Filter/utils.js.map +1 -1
  247. package/dist/esm/Notifications/Toaster.js.map +1 -1
  248. package/dist/esm/Notifications/toast.js.map +1 -1
  249. package/dist/esm/Notifications/toastCommandResult.js.map +1 -1
  250. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  251. package/dist/esm/ObjectContentEditor/objectHelpers.js.map +1 -1
  252. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  253. package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
  254. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  255. package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
  256. package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
  257. package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
  258. package/dist/esm/PivotViewer/components/FilterPanelContainer.js.map +1 -1
  259. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  260. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  261. package/dist/esm/PivotViewer/components/Spinner.js.map +1 -1
  262. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  263. package/dist/esm/PivotViewer/components/ToolbarContainer.js.map +1 -1
  264. package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
  265. package/dist/esm/PivotViewer/components/pivot/colorResolver.d.ts.map +1 -1
  266. package/dist/esm/PivotViewer/components/pivot/colorResolver.js +16 -26
  267. package/dist/esm/PivotViewer/components/pivot/colorResolver.js.map +1 -1
  268. package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
  269. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
  270. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  271. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  272. package/dist/esm/PivotViewer/constants.js.map +1 -1
  273. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  274. package/dist/esm/PivotViewer/engine/store.js.map +1 -1
  275. package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
  276. package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
  277. package/dist/esm/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
  278. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  279. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
  280. package/dist/esm/PivotViewer/hooks/useDimensionState.js.map +1 -1
  281. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
  282. package/dist/esm/PivotViewer/hooks/useFilterOptions.js.map +1 -1
  283. package/dist/esm/PivotViewer/hooks/useFilterState.js.map +1 -1
  284. package/dist/esm/PivotViewer/hooks/usePanning.js.map +1 -1
  285. package/dist/esm/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  286. package/dist/esm/PivotViewer/hooks/useScrollSync.js.map +1 -1
  287. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  288. package/dist/esm/PivotViewer/hooks/useWheelZoom.js.map +1 -1
  289. package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
  290. package/dist/esm/PivotViewer/types.js.map +1 -1
  291. package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
  292. package/dist/esm/PivotViewer/utils/cardPosition.js.map +1 -1
  293. package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
  294. package/dist/esm/PivotViewer/utils/idResolution.js.map +1 -1
  295. package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
  296. package/dist/esm/PivotViewer/utils/utils.js.map +1 -1
  297. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  298. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  299. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  300. package/dist/esm/SchemaEditor/schemaHelpers.js.map +1 -1
  301. package/dist/esm/Styled/CratisPreset.js.map +1 -1
  302. package/dist/esm/Styled/primeReactStyles.js.map +1 -1
  303. package/dist/esm/Styled/styledMode.js.map +1 -1
  304. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  305. package/dist/esm/TimeMachine/Properties.js.map +1 -1
  306. package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
  307. package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
  308. package/dist/esm/TimeMachine/TimeMachineLabels.js.map +1 -1
  309. package/dist/esm/TimeMachine/propertiesHelpers.js.map +1 -1
  310. package/dist/esm/Toolbar/Toolbar.js.map +1 -1
  311. package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
  312. package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
  313. package/dist/esm/Toolbar/ToolbarDragContext.js.map +1 -1
  314. package/dist/esm/Toolbar/ToolbarFanOutItem.js.map +1 -1
  315. package/dist/esm/Toolbar/ToolbarFolder.js.map +1 -1
  316. package/dist/esm/Toolbar/ToolbarFolderContext.js.map +1 -1
  317. package/dist/esm/Toolbar/ToolbarGroup.js.map +1 -1
  318. package/dist/esm/Toolbar/ToolbarLayout.js.map +1 -1
  319. package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
  320. package/dist/esm/Toolbar/ToolbarSeparator.js.map +1 -1
  321. package/dist/esm/Toolbar/ToolbarSlot.js.map +1 -1
  322. package/dist/esm/index.d.ts +2 -1
  323. package/dist/esm/index.d.ts.map +1 -1
  324. package/dist/esm/index.js +39 -37
  325. package/dist/esm/index.js.map +1 -1
  326. package/dist/esm/styles.css +498 -95
  327. package/dist/esm/theme.css +75 -14
  328. package/dist/esm/types/TypeFormat.js.map +1 -1
  329. package/package.json +6 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ChatAuthor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatAuthor.js","sourceRoot":"","sources":["../../../Chat/ChatAuthor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type BuildAvatarUrlParams } from '../Canvas/shapes/ChatBubble/Avatar';
3
+ import { type ChatComposerLabels } from '../Canvas/shapes/ChatBubble/ChatComposer';
4
+ import type { ChatTypingAuthor } from '../Canvas/shapes/ChatBubble/ChatTypingAuthor';
5
+ import type { MentionCandidate } from '../Canvas/shapes/ChatBubble/Mentions';
6
+ import type { ChatAuthor } from './ChatAuthor';
7
+ import { type ChatIdentifier } from './ChatIdentifier';
8
+ import type { ChatMention } from './ChatMention';
9
+ import type { ChatMessage } from './ChatMessage';
10
+ import type { ChatMessageAction } from './ChatMessageAction';
11
+ import { type RelativeTimestampLabels } from './relativeTimestamp';
12
+ export interface ChatConversationLabels {
13
+ empty?: string;
14
+ typing?: string;
15
+ typingTwo?: string;
16
+ typingSeveral?: string;
17
+ quickReplyTo?: string;
18
+ timestamps?: RelativeTimestampLabels;
19
+ composer?: ChatComposerLabels;
20
+ }
21
+ export interface ChatConversationProps<TMessage extends ChatMessage = ChatMessage> {
22
+ messages: TMessage[];
23
+ onSendMessage: (body: string, mentions: ChatMention[]) => void;
24
+ authorOf?: (authorId: ChatIdentifier) => ChatAuthor;
25
+ renderAvatar?: (authorId: ChatIdentifier, author: ChatAuthor) => ReactNode;
26
+ renderAuthorName?: (authorId: ChatIdentifier, author: ChatAuthor) => ReactNode;
27
+ actions?: ChatMessageAction<TMessage>[];
28
+ mentionCandidates?: MentionCandidate[];
29
+ resolveMentionCandidates?: (query: string) => MentionCandidate[] | Promise<MentionCandidate[]>;
30
+ typingAuthors?: ChatTypingAuthor[];
31
+ quickReply?: boolean;
32
+ buildAvatarUrl?: (params: BuildAvatarUrlParams) => string;
33
+ autoFocus?: boolean;
34
+ labels?: ChatConversationLabels;
35
+ className?: string;
36
+ }
37
+ export declare const ChatConversation: <TMessage extends ChatMessage = ChatMessage>({ messages, onSendMessage, authorOf, renderAvatar, renderAuthorName, actions, mentionCandidates, resolveMentionCandidates, typingAuthors, quickReply, buildAvatarUrl, autoFocus, labels, className, }: ChatConversationProps<TMessage>) => React.JSX.Element;
38
+ //# sourceMappingURL=ChatConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatConversation.d.ts","sourceRoot":"","sources":["../../../Chat/ChatConversation.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAA8B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAyC,KAAK,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC1H,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAKtF,MAAM,WAAW,sBAAsB;IAGnC,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IAGrC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAMD,MAAM,WAAW,qBAAqB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW;IAM7E,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAQrB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAS/D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,UAAU,CAAC;IAQpD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,KAAK,SAAS,CAAC;IAQ3E,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,KAAK,SAAS,CAAC;IAG/E,OAAO,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAIxC,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAQvC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,gBAAgB,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAG/F,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAInC,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,MAAM,CAAC;IAG1D,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAGhC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AA0DD,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,uMAe1E,qBAAqB,CAAC,QAAQ,CAAC,sBA6GjC,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useRef, useMemo, useEffect } from 'react';
3
+ import { PersonAvatarCircle } from '../Canvas/shapes/ChatBubble/Avatar/PersonAvatarCircle.js';
4
+ import { ChatAuthorKind } from '../Canvas/shapes/ChatBubble/ChatAuthorKind.js';
5
+ import { ChatComposer } from '../Canvas/shapes/ChatBubble/ChatComposer.js';
6
+ import { TypingIndicator } from '../Canvas/shapes/ChatBubble/TypingIndicator.js';
7
+ import { chatIdentifierString } from './ChatIdentifier.js';
8
+ import { ChatMessageBody } from './ChatMessageBody.js';
9
+ import { relativeTimestamp } from './relativeTimestamp.js';
10
+
11
+ /** The message's timestamp as a `Date` — data that traveled through JSON may carry it as a string. */
12
+ const timestampOf = (message) => message.timestamp instanceof Date ? message.timestamp : new Date(message.timestamp);
13
+ const sameMinute = (left, right) => left.getFullYear() === right.getFullYear() &&
14
+ left.getMonth() === right.getMonth() &&
15
+ left.getDate() === right.getDate() &&
16
+ left.getHours() === right.getHours() &&
17
+ left.getMinutes() === right.getMinutes();
18
+ const computeRenderInfo = (messages) => messages.map((message, index) => {
19
+ const previous = index > 0 ? messages[index - 1] : undefined;
20
+ const next = index < messages.length - 1 ? messages[index + 1] : undefined;
21
+ const showAuthor = !previous || chatIdentifierString(previous.authorId) !== chatIdentifierString(message.authorId);
22
+ const showTimestamp = !next ||
23
+ chatIdentifierString(next.authorId) !== chatIdentifierString(message.authorId) ||
24
+ !sameMinute(timestampOf(message), timestampOf(next));
25
+ return { showAuthor, showTimestamp };
26
+ });
27
+ /**
28
+ * Composes the "X is typing" line from whoever the conversation is waiting on.
29
+ * @param authors The authors currently typing or working.
30
+ * @param labels Label overrides, as passed to {@link ChatConversation}.
31
+ * @returns The label to show, empty when nobody is.
32
+ */
33
+ const typingLabel = (authors, labels) => {
34
+ if (authors.length === 0)
35
+ return '';
36
+ if (authors.length === 1)
37
+ return (labels?.typing ?? '{name} is typing').replace('{name}', authors[0].name);
38
+ if (authors.length === 2)
39
+ return (labels?.typingTwo ?? '{first} and {second} are typing').replace('{first}', authors[0].name).replace('{second}', authors[1].name);
40
+ return labels?.typingSeveral ?? 'Several people are typing';
41
+ };
42
+ /**
43
+ * One conversation — its messages and the composer to add to them. Host-agnostic by design: it
44
+ * renders whatever message array it is given (hand it a live query's data and it stays current),
45
+ * resolves authors through the host's {@link ChatConversationProps.authorOf | authorOf} and
46
+ * render callbacks, offers the host's own {@link ChatConversationProps.actions | actions} on
47
+ * each message, and reports sends back through
48
+ * {@link ChatConversationProps.onSendMessage | onSendMessage} without any opinion about the
49
+ * backend behind it. Mentions and the emoji picker come along through the composer.
50
+ */
51
+ const ChatConversation = ({ messages, onSendMessage, authorOf, renderAvatar, renderAuthorName, actions, mentionCandidates, resolveMentionCandidates, typingAuthors = [], quickReply = true, buildAvatarUrl, autoFocus = false, labels, className, }) => {
52
+ const composerRef = useRef(null);
53
+ const messagesEndRef = useRef(null);
54
+ const renderInfo = useMemo(() => computeRenderInfo(messages), [messages]);
55
+ useEffect(() => {
56
+ messagesEndRef.current?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
57
+ }, [messages, typingAuthors.length]);
58
+ const authorFor = (authorId) => authorOf?.(authorId) ?? { name: chatIdentifierString(authorId), kind: ChatAuthorKind.User };
59
+ const send = (text, mentioned) => onSendMessage(text, mentioned.map(candidate => ({ id: candidate.id, name: candidate.name, kind: candidate.kind })));
60
+ const quickReplyTo = (name) => composerRef.current?.prefill(`@${name} `);
61
+ return (jsxs("div", { className: `cratis-chat-conversation${className ? ` ${className}` : ''}`, children: [jsxs("div", { className: 'cratis-chat-conversation__messages', children: [messages.length === 0 && (jsx("p", { className: 'cratis-chat-conversation__empty', children: labels?.empty ?? 'No messages yet. Say hello!' })), messages.map((message, index) => {
62
+ const author = authorFor(message.authorId);
63
+ const { showAuthor, showTimestamp } = renderInfo[index];
64
+ const availableActions = (actions ?? []).filter(action => action.isAvailable?.(message) ?? true);
65
+ const showActionsRow = quickReply || availableActions.length > 0;
66
+ return (jsxs("div", { className: `cratis-chat-message${showAuthor ? '' : ' cratis-chat-message--continuation'}`, children: [showAuthor && (jsxs("div", { className: 'cratis-chat-message__author', children: [renderAvatar
67
+ ? renderAvatar(message.authorId, author)
68
+ : (jsx(PersonAvatarCircle, { userId: chatIdentifierString(message.authorId), name: author.name, hasAvatar: author.hasAvatar ?? false, size: 22, ownerType: author.kind === ChatAuthorKind.Agent ? 'Agents' : 'Users', version: author.avatarVersion, buildAvatarUrl: buildAvatarUrl })), jsx("span", { className: 'cratis-chat-message__author-name', children: renderAuthorName ? renderAuthorName(message.authorId, author) : author.name })] })), jsxs("div", { className: 'cratis-chat-message__content', children: [jsxs("div", { className: `cratis-chat-message__panel${showActionsRow ? ' cratis-chat-message__panel--with-actions' : ''}`, children: [jsx(ChatMessageBody, { body: message.body, mentions: message.mentions }), showActionsRow && (jsxs("div", { className: 'cratis-chat-message__actions', children: [quickReply && (jsx("button", { type: 'button', className: 'cratis-chat-message__action', title: (labels?.quickReplyTo ?? 'Reply to {name}').replace('{name}', author.name), "aria-label": (labels?.quickReplyTo ?? 'Reply to {name}').replace('{name}', author.name), onClick: () => quickReplyTo(author.name), children: jsx("i", { className: 'pi pi-reply', "aria-hidden": 'true' }) })), availableActions.map(action => (jsx("button", { type: 'button', className: 'cratis-chat-message__action', title: action.label, "aria-label": action.label, onClick: () => action.onInvoke(message), children: typeof action.icon === 'string' ? jsx("i", { className: action.icon, "aria-hidden": 'true' }) : action.icon }, action.id)))] }))] }), showTimestamp && (jsx("span", { className: 'cratis-chat-message__time', children: relativeTimestamp(timestampOf(message), new Date(), labels?.timestamps) }))] })] }, chatIdentifierString(message.id)));
69
+ }), jsx(TypingIndicator, { authors: typingAuthors, label: typingLabel(typingAuthors, labels), buildAvatarUrl: buildAvatarUrl }), jsx("div", { ref: messagesEndRef })] }), jsx(ChatComposer, { ref: composerRef, mentionCandidates: mentionCandidates, resolveMentionCandidates: resolveMentionCandidates, onSend: send, autoFocus: autoFocus, buildAvatarUrl: buildAvatarUrl, labels: labels?.composer })] }));
70
+ };
71
+
72
+ export { ChatConversation };
73
+ //# sourceMappingURL=ChatConversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatConversation.js","sources":["../../../Chat/ChatConversation.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type ChatIdentifier = string | {
2
+ toString(): string;
3
+ };
4
+ export declare const chatIdentifierString: (identifier: ChatIdentifier) => string;
5
+ export declare const sameChatIdentifier: (left?: ChatIdentifier, right?: ChatIdentifier) => boolean;
6
+ //# sourceMappingURL=ChatIdentifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatIdentifier.d.ts","sourceRoot":"","sources":["../../../Chat/ChatIdentifier.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG;IAAE,QAAQ,IAAI,MAAM,CAAA;CAAE,CAAC;AAO7D,eAAO,MAAM,oBAAoB,GAAI,YAAY,cAAc,KAAG,MAA4B,CAAC;AAS/F,eAAO,MAAM,kBAAkB,GAAI,OAAO,cAAc,EAAE,QAAQ,cAAc,KAAG,OACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * The canonical string form of an identifier, used for React keys and comparisons.
5
+ * @param identifier The identifier to render.
6
+ * @returns The identifier as a string.
7
+ */
8
+ const chatIdentifierString = (identifier) => String(identifier);
9
+ /**
10
+ * Whether two identifiers refer to the same thing, compared by their string form so a `Guid`
11
+ * and the string it prints as are the same identifier.
12
+ * @param left One identifier, possibly not set.
13
+ * @param right The other identifier, possibly not set.
14
+ * @returns True when both are set and equal.
15
+ */
16
+ const sameChatIdentifier = (left, right) => left !== undefined && right !== undefined && String(left) === String(right);
17
+
18
+ export { chatIdentifierString, sameChatIdentifier };
19
+ //# sourceMappingURL=ChatIdentifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatIdentifier.js","sources":["../../../Chat/ChatIdentifier.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AAUA;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,CAAC,UAA0B,KAAa,MAAM,CAAC,UAAU;AAE7F;;;;;;AAMG;AACI,MAAM,kBAAkB,GAAG,CAAC,IAAqB,EAAE,KAAsB,KAC5E,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK;;"}
@@ -0,0 +1,8 @@
1
+ import { ChatAuthorKind } from '../Canvas/shapes/ChatBubble/ChatAuthorKind';
2
+ import type { ChatIdentifier } from './ChatIdentifier';
3
+ export interface ChatMention {
4
+ id: ChatIdentifier;
5
+ name: string;
6
+ kind: ChatAuthorKind;
7
+ }
8
+ //# sourceMappingURL=ChatMention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMention.d.ts","sourceRoot":"","sources":["../../../Chat/ChatMention.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQvD,MAAM,WAAW,WAAW;IAGxB,EAAE,EAAE,cAAc,CAAC;IAGnB,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,cAAc,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ChatMention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMention.js","sourceRoot":"","sources":["../../../Chat/ChatMention.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { ChatIdentifier } from './ChatIdentifier';
2
+ import type { ChatMention } from './ChatMention';
3
+ export interface ChatMessage {
4
+ id: ChatIdentifier;
5
+ topicId: ChatIdentifier;
6
+ authorId: ChatIdentifier;
7
+ body: string;
8
+ timestamp: Date;
9
+ mentions?: ChatMention[];
10
+ metadata?: Record<string, unknown>;
11
+ }
12
+ //# sourceMappingURL=ChatMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessage.d.ts","sourceRoot":"","sources":["../../../Chat/ChatMessage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAYjD,MAAM,WAAW,WAAW;IAGxB,EAAE,EAAE,cAAc,CAAC;IAGnB,OAAO,EAAE,cAAc,CAAC;IAGxB,QAAQ,EAAE,cAAc,CAAC;IAGzB,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,EAAE,IAAI,CAAC;IAGhB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IAGzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ChatMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessage.js","sourceRoot":"","sources":["../../../Chat/ChatMessage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ChatMessage } from './ChatMessage';
3
+ export interface ChatMessageAction<TMessage extends ChatMessage = ChatMessage> {
4
+ id: string;
5
+ label: string;
6
+ icon: string | ReactNode;
7
+ isAvailable?: (message: TMessage) => boolean;
8
+ onInvoke: (message: TMessage) => void;
9
+ }
10
+ //# sourceMappingURL=ChatMessageAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessageAction.d.ts","sourceRoot":"","sources":["../../../Chat/ChatMessageAction.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQjD,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW;IAGzE,EAAE,EAAE,MAAM,CAAC;IAGX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAOzB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC;IAM7C,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;CACzC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ChatMessageAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessageAction.js","sourceRoot":"","sources":["../../../Chat/ChatMessageAction.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import type { ChatMention } from './ChatMention';
3
+ export interface ChatMessageBodyProps {
4
+ body: string;
5
+ mentions?: ChatMention[];
6
+ }
7
+ export declare const ChatMessageBody: ({ body, mentions }: ChatMessageBodyProps) => React.JSX.Element;
8
+ //# sourceMappingURL=ChatMessageBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessageBody.d.ts","sourceRoot":"","sources":["../../../Chat/ChatMessageBody.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,MAAM,WAAW,oBAAoB;IAGjC,IAAI,EAAE,MAAM,CAAC;IAGb,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC5B;AAQD,eAAO,MAAM,eAAe,GAAI,oBAAoB,oBAAoB,sBAgBvE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import '../Canvas/shapes/ChatBubble/ChatAuthorKind.js';
4
+ import { mentionSegments } from '../Canvas/shapes/ChatBubble/Mentions/mentionSegments.js';
5
+
6
+ /**
7
+ * The text of one message. The body itself is plain text — including its `@Name` mentions — and
8
+ * this component is what makes the mentions *look* like mentions: each known one renders as its
9
+ * own element, marked with who it addresses, so a person and an agent mention can be styled
10
+ * apart and the host's own CSS can hang further behavior off them.
11
+ */
12
+ const ChatMessageBody = ({ body, mentions }) => (jsx("p", { className: 'cratis-chat-message__body', children: mentionSegments(body, mentions ?? []).map((segment, index) => segment.mention
13
+ ? (jsx("span", { className: 'cratis-chat-message__mention', "data-kind": segment.mention.kind, children: segment.text }, index))
14
+ : jsx(React.Fragment, { children: segment.text }, index)) }));
15
+
16
+ export { ChatMessageBody };
17
+ //# sourceMappingURL=ChatMessageBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessageBody.js","sources":["../../../Chat/ChatMessageBody.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;AAmBA;;;;;AAKG;AACI,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAwB,MACpEA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,2BAA2B,EAAA,QAAA,EACnC,eAAe,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,KACtD,OAAO,CAAC;AACJ,WACIA,GAAA,CAAA,MAAA,EAAA,EAEI,SAAS,EAAC,8BAA8B,eAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,YAE9B,OAAO,CAAC,IAAI,EAAA,EAJR,KAAK,CAKP;AAEX,UAAEA,GAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAc,OAAO,CAAC,IAAI,IAApB,KAAK,CAAiC,CACpE,EAAA,CACD;;"}
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ import type { DrawerRootProps } from '@primereact/types/primitive/drawer';
3
+ import type { ChatConversationLabels, ChatConversationProps } from './ChatConversation';
4
+ import { type ChatIdentifier } from './ChatIdentifier';
5
+ import type { ChatMention } from './ChatMention';
6
+ import type { ChatMessage } from './ChatMessage';
7
+ import type { ChatTopic } from './ChatTopic';
8
+ import type { ChatTopicListLabels } from './ChatTopicList';
9
+ export interface ChatSidebarLabels {
10
+ topics?: string;
11
+ unnamedTopic?: string;
12
+ back?: string;
13
+ close?: string;
14
+ topicList?: ChatTopicListLabels;
15
+ conversation?: ChatConversationLabels;
16
+ }
17
+ export interface ChatSidebarProps<TMessage extends ChatMessage = ChatMessage, TTopic extends ChatTopic = ChatTopic> extends Omit<ChatConversationProps<TMessage>, 'messages' | 'onSendMessage' | 'labels' | 'className'> {
18
+ open: boolean;
19
+ onClose: () => void;
20
+ topics: TTopic[];
21
+ messages: TMessage[];
22
+ selectedTopicId?: ChatIdentifier | null;
23
+ onTopicSelected?: (topicId: ChatIdentifier | undefined, topic?: TTopic) => void;
24
+ onStartTopic?: () => ChatIdentifier | undefined | Promise<ChatIdentifier | undefined>;
25
+ onSendMessage: (topicId: ChatIdentifier, body: string, mentions: ChatMention[]) => void;
26
+ onRequestTopicName?: (topic: TTopic, firstMessageBody: string) => void;
27
+ isTopicUnnamed?: (topic: TTopic) => boolean;
28
+ position?: 'left' | 'right';
29
+ width?: string;
30
+ modal?: boolean;
31
+ labels?: ChatSidebarLabels;
32
+ className?: string;
33
+ pt?: DrawerRootProps['pt'];
34
+ ptOptions?: DrawerRootProps['ptOptions'];
35
+ unstyled?: boolean;
36
+ }
37
+ export declare const ChatSidebar: <TMessage extends ChatMessage = ChatMessage, TTopic extends ChatTopic = ChatTopic>({ open, onClose, topics, messages, selectedTopicId, onTopicSelected, onStartTopic, onSendMessage, onRequestTopicName, isTopicUnnamed, position, width, modal, labels, className, pt, ptOptions, unstyled, ...conversation }: ChatSidebarProps<TMessage, TTopic>) => React.JSX.Element;
38
+ //# sourceMappingURL=ChatSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatSidebar.d.ts","sourceRoot":"","sources":["../../../Chat/ChatSidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,oCAAoC,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAO3D,MAAM,WAAW,iBAAiB;IAG9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAGhC,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAOD,MAAM,WAAW,gBAAgB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,MAAM,SAAS,SAAS,GAAG,SAAS,CAC9G,SAAQ,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,QAAQ,GAAG,WAAW,CAAC;IAGpG,IAAI,EAAE,OAAO,CAAC;IAGd,OAAO,EAAE,MAAM,IAAI,CAAC;IAMpB,MAAM,EAAE,MAAM,EAAE,CAAC;IAOjB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAOrB,eAAe,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAQxC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAQhF,YAAY,CAAC,EAAE,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAStF,aAAa,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAUxF,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAOvE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAG5C,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAG5B,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAG3B,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,EAAE,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAG3B,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IAGzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAWD,eAAO,MAAM,WAAW,GAAI,QAAQ,SAAS,WAAW,GAAG,WAAW,EAAE,MAAM,SAAS,SAAS,GAAG,SAAS,EAAE,6NAoB3G,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,sBA+GpC,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
3
+ import { Drawer } from 'primereact/drawer';
4
+ import { ChatConversation } from './ChatConversation.js';
5
+ import { sameChatIdentifier } from './ChatIdentifier.js';
6
+ import { ChatTopicList } from './ChatTopicList.js';
7
+ import { isTopicUnnamed } from './isTopicUnnamed.js';
8
+ import { shouldRequestTopicName } from './shouldRequestTopicName.js';
9
+
10
+ /**
11
+ * A topic-based chat in a sidebar next to the view, built on PrimeReact's Drawer. It opens on
12
+ * the topic list; picking a topic (or starting a new one) slides into that conversation, with a
13
+ * back affordance to the list. Everything about *data* is the host's: topics and messages come
14
+ * in as arrays (hand it live query data and it stays current), sends and new topics go out as
15
+ * callbacks, and when the first message lands in an unnamed topic the sidebar asks the host for
16
+ * a name through {@link ChatSidebarProps.onRequestTopicName | onRequestTopicName} — rendering a
17
+ * pending placeholder until the name arrives.
18
+ */
19
+ const ChatSidebar = ({ open, onClose, topics, messages, selectedTopicId, onTopicSelected, onStartTopic, onSendMessage, onRequestTopicName, isTopicUnnamed: isTopicUnnamed$1, position = 'right', width = '24rem', modal = false, labels, className, pt, ptOptions, unstyled, ...conversation }) => {
20
+ const [internalSelectedId, setInternalSelectedId] = useState(undefined);
21
+ const isControlled = selectedTopicId !== undefined;
22
+ const openTopicId = isControlled ? (selectedTopicId ?? undefined) : internalSelectedId;
23
+ const openTopic = openTopicId !== undefined ? topics.find(topic => sameChatIdentifier(topic.id, openTopicId)) : undefined;
24
+ const unnamed = isTopicUnnamed$1 ?? isTopicUnnamed;
25
+ const select = (topicId, topic) => {
26
+ if (!isControlled) {
27
+ setInternalSelectedId(topicId);
28
+ }
29
+ onTopicSelected?.(topicId, topic ?? (topicId !== undefined ? topics.find(candidate => sameChatIdentifier(candidate.id, topicId)) : undefined));
30
+ };
31
+ const startTopic = async () => {
32
+ const topicId = await onStartTopic?.();
33
+ if (topicId !== undefined) {
34
+ select(topicId);
35
+ }
36
+ };
37
+ const openMessages = openTopicId === undefined
38
+ ? []
39
+ : messages.filter(message => sameChatIdentifier(message.topicId, openTopicId));
40
+ const send = (body, mentions) => {
41
+ if (openTopicId === undefined)
42
+ return;
43
+ onSendMessage(openTopicId, body, mentions);
44
+ if (openTopic && shouldRequestTopicName(unnamed(openTopic), openMessages.length)) {
45
+ onRequestTopicName?.(openTopic, body);
46
+ }
47
+ };
48
+ const handleOpenChange = (event) => {
49
+ if (!event.value) {
50
+ onClose();
51
+ }
52
+ };
53
+ const title = openTopicId === undefined
54
+ ? (labels?.topics ?? 'Topics')
55
+ : openTopic && !unnamed(openTopic)
56
+ ? openTopic.name
57
+ : (labels?.unnamedTopic ?? 'New topic');
58
+ const titleIsPending = openTopicId !== undefined && (!openTopic || unnamed(openTopic));
59
+ return (jsx(Drawer.Root, { open: open, position: position, dismissable: modal, onOpenChange: handleOpenChange, pt: pt, ptOptions: ptOptions, unstyled: unstyled, children: jsxs(Drawer.Portal, { children: [modal && jsx(Drawer.Backdrop, {}), jsxs(Drawer.Popup, { className: `cratis-chat-sidebar${className ? ` ${className}` : ''}`, style: { width }, children: [jsxs(Drawer.Header, { className: 'cratis-chat-sidebar__header', children: [openTopicId !== undefined && (jsx("button", { type: 'button', className: 'cratis-chat-sidebar__back', title: labels?.back ?? 'Back to topics', "aria-label": labels?.back ?? 'Back to topics', onClick: () => select(undefined), children: jsx("i", { className: 'pi pi-arrow-left', "aria-hidden": 'true' }) })), jsx(Drawer.Title, { className: `cratis-chat-sidebar__title${titleIsPending ? ' cratis-chat-sidebar__title--pending' : ''}`, children: title }), jsx(Drawer.Close, { className: 'cratis-chat-sidebar__close', "aria-label": labels?.close ?? 'Close chat', children: jsx("i", { className: 'pi pi-times', "aria-hidden": 'true' }) })] }), jsx(Drawer.Content, { className: 'cratis-chat-sidebar__content', children: openTopicId === undefined
60
+ ? (jsx(ChatTopicList, { topics: topics, onOpen: topic => select(topic.id, topic), onStart: onStartTopic ? () => { void startTopic(); } : undefined, authorOf: conversation.authorOf, renderAvatar: conversation.renderAvatar, isTopicUnnamed: isTopicUnnamed$1, buildAvatarUrl: conversation.buildAvatarUrl, labels: { unnamedTopic: labels?.unnamedTopic, ...labels?.topicList } }))
61
+ : (jsx(ChatConversation, { ...conversation, messages: openMessages, onSendMessage: send, labels: labels?.conversation })) })] })] }) }));
62
+ };
63
+
64
+ export { ChatSidebar };
65
+ //# sourceMappingURL=ChatSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatSidebar.js","sources":["../../../Chat/ChatSidebar.tsx"],"sourcesContent":[null],"names":["isTopicUnnamed","defaultIsTopicUnnamed","_jsx","PrimeDrawer","_jsxs"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { Constructor } from '@cratis/fundamentals';
3
+ import type { IObservableQueryFor } from '@cratis/arc/queries';
4
+ import { type ChatSidebarProps } from './ChatSidebar';
5
+ import type { ChatIdentifier } from './ChatIdentifier';
6
+ import type { ChatMessage } from './ChatMessage';
7
+ import type { ChatTopic } from './ChatTopic';
8
+ export interface ChatSidebarForObservableQueriesProps<TMessage extends ChatMessage, TTopic extends ChatTopic, TTopicsQuery extends IObservableQueryFor<TTopic[], TTopicsArguments>, TMessagesQuery extends IObservableQueryFor<TMessage[], TMessagesArguments>, TTopicsArguments extends object = object, TMessagesArguments extends object = object> extends Omit<ChatSidebarProps<TMessage, TTopic>, 'topics' | 'messages' | 'selectedTopicId'> {
9
+ topicsQuery: Constructor<TTopicsQuery>;
10
+ topicsArguments?: TTopicsArguments;
11
+ messagesQuery: Constructor<TMessagesQuery>;
12
+ messagesArguments: (topicId: ChatIdentifier | undefined) => TMessagesArguments | undefined;
13
+ }
14
+ export declare const ChatSidebarForObservableQueries: <TMessage extends ChatMessage, TTopic extends ChatTopic, TTopicsQuery extends IObservableQueryFor<TTopic[], TTopicsArguments>, TMessagesQuery extends IObservableQueryFor<TMessage[], TMessagesArguments>, TTopicsArguments extends object = object, TMessagesArguments extends object = object>({ topicsQuery, topicsArguments, messagesQuery, messagesArguments, onTopicSelected, ...sidebar }: ChatSidebarForObservableQueriesProps<TMessage, TTopic, TTopicsQuery, TMessagesQuery, TTopicsArguments, TMessagesArguments>) => React.JSX.Element;
15
+ //# sourceMappingURL=ChatSidebarForObservableQueries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatSidebarForObservableQueries.d.ts","sourceRoot":"","sources":["../../../Chat/ChatSidebarForObservableQueries.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW7C,MAAM,WAAW,oCAAoC,CACjD,QAAQ,SAAS,WAAW,EAC5B,MAAM,SAAS,SAAS,EACxB,YAAY,SAAS,mBAAmB,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,EACpE,cAAc,SAAS,mBAAmB,CAAC,QAAQ,EAAE,EAAE,kBAAkB,CAAC,EAC1E,gBAAgB,SAAS,MAAM,GAAG,MAAM,EACxC,kBAAkB,SAAS,MAAM,GAAG,MAAM,CAC5C,SAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,iBAAiB,CAAC;IAGzF,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IAGvC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IAGnC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAQ3C,iBAAiB,EAAE,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,KAAK,kBAAkB,GAAG,SAAS,CAAC;CAC9F;AASD,eAAO,MAAM,+BAA+B,GACxC,QAAQ,SAAS,WAAW,EAC5B,MAAM,SAAS,SAAS,EACxB,YAAY,SAAS,mBAAmB,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,EACpE,cAAc,SAAS,mBAAmB,CAAC,QAAQ,EAAE,EAAE,kBAAkB,CAAC,EAC1E,gBAAgB,SAAS,MAAM,GAAG,MAAM,EACxC,kBAAkB,SAAS,MAAM,GAAG,MAAM,EAC5C,iGAOC,oCAAoC,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,sBA4B5H,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
3
+ import { useObservableQuery } from '@cratis/arc.react/queries';
4
+ import { ChatSidebar } from './ChatSidebar.js';
5
+
6
+ /**
7
+ * The {@link ChatSidebar} bound to real-time Cratis Arc observable queries — one for the topics,
8
+ * one for the open topic's messages — so both stay current as the read models change
9
+ * server-side. This is a thin, optional convenience on top of the pure {@link ChatSidebar}: every
10
+ * callback contract (sending, starting topics, naming, authors, actions, mentions) is exactly
11
+ * the same, and a host that prefers to own its subscriptions uses {@link ChatSidebar} directly.
12
+ */
13
+ const ChatSidebarForObservableQueries = ({ topicsQuery, topicsArguments, messagesQuery, messagesArguments, onTopicSelected, ...sidebar }) => {
14
+ const [selectedId, setSelectedId] = useState(undefined);
15
+ const [topicsResult] = useObservableQuery(topicsQuery, topicsArguments);
16
+ const messagesQueryArguments = messagesArguments(selectedId);
17
+ const [messagesResult] = useObservableQuery(messagesQuery, messagesQueryArguments, undefined, selectedId !== undefined && messagesQueryArguments !== undefined);
18
+ const topics = Array.isArray(topicsResult.data) ? topicsResult.data : [];
19
+ const messages = selectedId !== undefined && Array.isArray(messagesResult.data) ? messagesResult.data : [];
20
+ return (jsx(ChatSidebar, { ...sidebar, topics: topics, messages: messages, selectedTopicId: selectedId ?? null, onTopicSelected: (topicId, topic) => {
21
+ setSelectedId(topicId);
22
+ onTopicSelected?.(topicId, topic);
23
+ } }));
24
+ };
25
+
26
+ export { ChatSidebarForObservableQueries };
27
+ //# sourceMappingURL=ChatSidebarForObservableQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatSidebarForObservableQueries.js","sources":["../../../Chat/ChatSidebarForObservableQueries.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;AAgDA;;;;;;AAMG;MACU,+BAA+B,GAAG,CAO7C,EACE,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,GAAG,OAAO,EAC+G,KAAI;IAC7H,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA6B,SAAS,CAAC;IAEnF,MAAM,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAA2C,WAAW,EAAE,eAAe,CAAC;AAEjH,IAAA,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,UAAU,CAAC;IAC5D,MAAM,CAAC,cAAc,CAAC,GAAG,kBAAkB,CACvC,aAAa,EACb,sBAAsB,EACtB,SAAS,EACT,UAAU,KAAK,SAAS,IAAI,sBAAsB,KAAK,SAAS,CACnE;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,EAAE;IACxE,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,GAAG,EAAE;IAE1G,QACIA,GAAA,CAAC,WAAW,EAAA,EAAA,GACJ,OAAO,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,UAAU,IAAI,IAAI,EACnC,eAAe,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;YAChC,aAAa,CAAC,OAAO,CAAC;AACtB,YAAA,eAAe,GAAG,OAAO,EAAE,KAAK,CAAC;QACrC,CAAC,EAAA,CACH;AAEV;;"}
@@ -0,0 +1,10 @@
1
+ import type { ChatIdentifier } from './ChatIdentifier';
2
+ export interface ChatTopic {
3
+ id: ChatIdentifier;
4
+ name?: string;
5
+ startedBy?: ChatIdentifier;
6
+ started?: Date;
7
+ lastActivity?: Date;
8
+ metadata?: Record<string, unknown>;
9
+ }
10
+ //# sourceMappingURL=ChatTopic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatTopic.d.ts","sourceRoot":"","sources":["../../../Chat/ChatTopic.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQvD,MAAM,WAAW,SAAS;IAGtB,EAAE,EAAE,cAAc,CAAC;IAGnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,SAAS,CAAC,EAAE,cAAc,CAAC;IAG3B,OAAO,CAAC,EAAE,IAAI,CAAC;IAGf,YAAY,CAAC,EAAE,IAAI,CAAC;IAGpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ChatTopic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatTopic.js","sourceRoot":"","sources":["../../../Chat/ChatTopic.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type BuildAvatarUrlParams } from '../Canvas/shapes/ChatBubble/Avatar';
3
+ import type { ChatAuthor } from './ChatAuthor';
4
+ import { type ChatIdentifier } from './ChatIdentifier';
5
+ import type { ChatTopic } from './ChatTopic';
6
+ import { type RelativeTimestampLabels } from './relativeTimestamp';
7
+ export interface ChatTopicListLabels {
8
+ newTopic?: string;
9
+ unnamedTopic?: string;
10
+ startedBy?: string;
11
+ empty?: string;
12
+ timestamps?: RelativeTimestampLabels;
13
+ }
14
+ export interface ChatTopicListProps<TTopic extends ChatTopic = ChatTopic> {
15
+ topics: TTopic[];
16
+ onOpen: (topic: TTopic) => void;
17
+ onStart?: () => void;
18
+ authorOf?: (authorId: ChatIdentifier) => ChatAuthor;
19
+ renderAvatar?: (authorId: ChatIdentifier, author: ChatAuthor) => ReactNode;
20
+ isTopicUnnamed?: (topic: TTopic) => boolean;
21
+ buildAvatarUrl?: (params: BuildAvatarUrlParams) => string;
22
+ labels?: ChatTopicListLabels;
23
+ className?: string;
24
+ }
25
+ export declare const ChatTopicList: <TTopic extends ChatTopic = ChatTopic>({ topics, onOpen, onStart, authorOf, renderAvatar, isTopicUnnamed, buildAvatarUrl, labels, className, }: ChatTopicListProps<TTopic>) => React.JSX.Element;
26
+ //# sourceMappingURL=ChatTopicList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatTopicList.d.ts","sourceRoot":"","sources":["../../../Chat/ChatTopicList.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAKtF,MAAM,WAAW,mBAAmB;IAGhC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACxC;AAMD,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS;IAMpE,MAAM,EAAE,MAAM,EAAE,CAAC;IAMjB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAMhC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAQrB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,UAAU,CAAC;IAQpD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,KAAK,SAAS,CAAC;IAS3E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAG5C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,MAAM,CAAC;IAG1D,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAG7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD,eAAO,MAAM,aAAa,GAAI,MAAM,SAAS,SAAS,GAAG,SAAS,EAAE,yGAUjE,kBAAkB,CAAC,MAAM,CAAC,sBAmE5B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { PersonAvatarCircle } from '../Canvas/shapes/ChatBubble/Avatar/PersonAvatarCircle.js';
3
+ import { ChatAuthorKind } from '../Canvas/shapes/ChatBubble/ChatAuthorKind.js';
4
+ import { chatIdentifierString } from './ChatIdentifier.js';
5
+ import { isTopicUnnamed } from './isTopicUnnamed.js';
6
+ import { relativeTimestamp } from './relativeTimestamp.js';
7
+ import { topicsByActivity } from './topicsByActivity.js';
8
+
9
+ /**
10
+ * The topics of a chat, most recently active first — pick one to open its conversation, or start
11
+ * a new one. A topic that has not been named yet renders a placeholder in a pending style: with
12
+ * host-side auto-naming, the name arrives through the data once the host has produced it, and
13
+ * the placeholder simply stops being needed.
14
+ */
15
+ const ChatTopicList = ({ topics, onOpen, onStart, authorOf, renderAvatar, isTopicUnnamed: isTopicUnnamed$1, buildAvatarUrl, labels, className, }) => {
16
+ const unnamed = isTopicUnnamed$1 ?? isTopicUnnamed;
17
+ const authorFor = (authorId) => authorOf?.(authorId) ?? { name: chatIdentifierString(authorId), kind: ChatAuthorKind.User };
18
+ return (jsxs("div", { className: `cratis-chat-topics${className ? ` ${className}` : ''}`, children: [onStart && (jsxs("button", { type: 'button', className: 'cratis-chat-topics__start', onClick: onStart, children: [jsx("i", { className: 'pi pi-plus', "aria-hidden": 'true' }), jsx("span", { children: labels?.newTopic ?? 'New topic' })] })), topics.length === 0 && (jsx("p", { className: 'cratis-chat-topics__empty', children: labels?.empty ?? 'No topics yet. Start the first one!' })), jsx("div", { className: 'cratis-chat-topics__list', role: 'list', children: topicsByActivity(topics).map(topic => {
19
+ const starter = topic.startedBy !== undefined ? authorFor(topic.startedBy) : undefined;
20
+ const isPending = unnamed(topic);
21
+ const activity = topic.lastActivity ?? topic.started;
22
+ return (jsxs("button", { type: 'button', role: 'listitem', className: 'cratis-chat-topics__topic', onClick: () => onOpen(topic), children: [topic.startedBy !== undefined && starter && (renderAvatar
23
+ ? renderAvatar(topic.startedBy, starter)
24
+ : (jsx(PersonAvatarCircle, { userId: chatIdentifierString(topic.startedBy), name: starter.name, hasAvatar: starter.hasAvatar ?? false, size: 28, ownerType: starter.kind === ChatAuthorKind.Agent ? 'Agents' : 'Users', version: starter.avatarVersion, buildAvatarUrl: buildAvatarUrl }))), jsxs("span", { className: 'cratis-chat-topics__details', children: [jsx("span", { className: `cratis-chat-topics__name${isPending ? ' cratis-chat-topics__name--pending' : ''}`, children: isPending ? (labels?.unnamedTopic ?? 'New topic') : topic.name }), starter && (jsx("span", { className: 'cratis-chat-topics__started-by', children: (labels?.startedBy ?? 'Started by {name}').replace('{name}', starter.name) }))] }), activity !== undefined && (jsx("span", { className: 'cratis-chat-topics__activity', children: relativeTimestamp(activity, new Date(), labels?.timestamps) }))] }, chatIdentifierString(topic.id)));
25
+ }) })] }));
26
+ };
27
+
28
+ export { ChatTopicList };
29
+ //# sourceMappingURL=ChatTopicList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatTopicList.js","sources":["../../../Chat/ChatTopicList.tsx"],"sourcesContent":[null],"names":["isTopicUnnamed","defaultIsTopicUnnamed","_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export type { ChatAuthor } from './ChatAuthor';
2
+ export { ChatConversation } from './ChatConversation';
3
+ export type { ChatConversationProps, ChatConversationLabels } from './ChatConversation';
4
+ export { chatIdentifierString, sameChatIdentifier } from './ChatIdentifier';
5
+ export type { ChatIdentifier } from './ChatIdentifier';
6
+ export type { ChatMention } from './ChatMention';
7
+ export type { ChatMessage } from './ChatMessage';
8
+ export type { ChatMessageAction } from './ChatMessageAction';
9
+ export { ChatMessageBody } from './ChatMessageBody';
10
+ export type { ChatMessageBodyProps } from './ChatMessageBody';
11
+ export { ChatSidebar } from './ChatSidebar';
12
+ export type { ChatSidebarProps, ChatSidebarLabels } from './ChatSidebar';
13
+ export { ChatSidebarForObservableQueries } from './ChatSidebarForObservableQueries';
14
+ export type { ChatSidebarForObservableQueriesProps } from './ChatSidebarForObservableQueries';
15
+ export type { ChatTopic } from './ChatTopic';
16
+ export { ChatTopicList } from './ChatTopicList';
17
+ export type { ChatTopicListProps, ChatTopicListLabels } from './ChatTopicList';
18
+ export { isTopicUnnamed } from './isTopicUnnamed';
19
+ export { relativeTimestamp } from './relativeTimestamp';
20
+ export type { RelativeTimestampLabels } from './relativeTimestamp';
21
+ export { shouldRequestTopicName } from './shouldRequestTopicName';
22
+ export { topicsByActivity } from './topicsByActivity';
23
+ export { ChatAuthorKind } from '../Canvas/shapes/ChatBubble/ChatAuthorKind';
24
+ export type { ChatTypingAuthor } from '../Canvas/shapes/ChatBubble/ChatTypingAuthor';
25
+ export type { BuildAvatarUrlParams } from '../Canvas/shapes/ChatBubble/Avatar';
26
+ export type { ChatComposerLabels } from '../Canvas/shapes/ChatBubble/ChatComposer';
27
+ export { extractMentions, findMentionRanges, mentionSegments } from '../Canvas/shapes/ChatBubble/Mentions';
28
+ export type { MentionCandidate, MentionRange, MentionSegment } from '../Canvas/shapes/ChatBubble/Mentions';
29
+ //# sourceMappingURL=index.d.ts.map