@cratis/components 4.19.1 → 4.20.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 (738) hide show
  1. package/README.md +2 -2
  2. package/compat-manifest.json +11 -11
  3. package/dist/esm/Canvas/Canvas.d.ts +1 -0
  4. package/dist/esm/Canvas/Canvas.d.ts.map +1 -0
  5. package/dist/esm/Canvas/Canvas.js.map +1 -1
  6. package/dist/esm/Canvas/CanvasControls.d.ts +1 -0
  7. package/dist/esm/Canvas/CanvasControls.d.ts.map +1 -0
  8. package/dist/esm/Canvas/CanvasControls.js.map +1 -1
  9. package/dist/esm/Canvas/CanvasItem.js.map +1 -1
  10. package/dist/esm/Canvas/CanvasMinimap.js.map +1 -1
  11. package/dist/esm/Canvas/CanvasOverlay.js.map +1 -1
  12. package/dist/esm/Canvas/canvasGesture.js.map +1 -1
  13. package/dist/esm/Canvas/canvasTransformActivity.js.map +1 -1
  14. package/dist/esm/Canvas/index.d.ts +1 -0
  15. package/dist/esm/Canvas/index.d.ts.map +1 -0
  16. package/dist/esm/Canvas/isBackgroundPointerTarget.js.map +1 -1
  17. package/dist/esm/Canvas/isWithinScrollableContent.js.map +1 -1
  18. package/dist/esm/Canvas/panMomentum.js.map +1 -1
  19. package/dist/esm/Canvas/pinchGesture.js.map +1 -1
  20. package/dist/esm/Canvas/selfSuspendingFrameLoop.js.map +1 -1
  21. package/dist/esm/Canvas/shapes/ChatBubble/index.d.ts +1 -0
  22. package/dist/esm/Canvas/shapes/ChatBubble/index.d.ts.map +1 -0
  23. package/dist/esm/Canvas/shapes/ChatBubble/index.js +1 -0
  24. package/dist/esm/Canvas/shapes/ChatBubble/index.js.map +1 -0
  25. package/dist/esm/Canvas/shapes/Note/Note.js.map +1 -1
  26. package/dist/esm/Canvas/shapes/Note/NoteTextChanged.js.map +1 -1
  27. package/dist/esm/Canvas/shapes/Note/index.d.ts +1 -0
  28. package/dist/esm/Canvas/shapes/Note/index.d.ts.map +1 -0
  29. package/dist/esm/Canvas/shapes/Note/index.js +1 -0
  30. package/dist/esm/Canvas/shapes/Note/index.js.map +1 -0
  31. package/dist/esm/Canvas/shapes/Note/noteFont.js.map +1 -1
  32. package/dist/esm/Canvas/shapes/Region/ItemAddedToRegion.js.map +1 -1
  33. package/dist/esm/Canvas/shapes/Region/ItemRemovedFromRegion.js.map +1 -1
  34. package/dist/esm/Canvas/shapes/Region/Region.js.map +1 -1
  35. package/dist/esm/Canvas/shapes/Region/index.d.ts +1 -0
  36. package/dist/esm/Canvas/shapes/Region/index.d.ts.map +1 -0
  37. package/dist/esm/Canvas/shapes/Region/index.js +1 -0
  38. package/dist/esm/Canvas/shapes/Region/index.js.map +1 -0
  39. package/dist/esm/Canvas/shapes/Region/regionContainment.js.map +1 -1
  40. package/dist/esm/Canvas/useDragSelectionGuard.js.map +1 -1
  41. package/dist/esm/Canvas/zoomMechanism.js.map +1 -1
  42. package/dist/esm/Chat/ChatAuthor.d.ts +1 -0
  43. package/dist/esm/Chat/ChatAuthor.d.ts.map +1 -0
  44. package/dist/esm/Chat/ChatAuthor.js.map +1 -1
  45. package/dist/esm/Chat/ChatConversation.d.ts +1 -0
  46. package/dist/esm/Chat/ChatConversation.d.ts.map +1 -0
  47. package/dist/esm/Chat/ChatConversation.js.map +1 -1
  48. package/dist/esm/Chat/ChatIdentifier.js.map +1 -1
  49. package/dist/esm/Chat/ChatMention.d.ts +1 -0
  50. package/dist/esm/Chat/ChatMention.d.ts.map +1 -0
  51. package/dist/esm/Chat/ChatMention.js.map +1 -1
  52. package/dist/esm/Chat/ChatMessage.d.ts +1 -0
  53. package/dist/esm/Chat/ChatMessage.d.ts.map +1 -0
  54. package/dist/esm/Chat/ChatMessage.js.map +1 -1
  55. package/dist/esm/Chat/ChatMessageAction.d.ts +1 -0
  56. package/dist/esm/Chat/ChatMessageAction.d.ts.map +1 -0
  57. package/dist/esm/Chat/ChatMessageAction.js.map +1 -1
  58. package/dist/esm/Chat/ChatMessageBody.d.ts +1 -0
  59. package/dist/esm/Chat/ChatMessageBody.d.ts.map +1 -0
  60. package/dist/esm/Chat/ChatMessageBody.js.map +1 -1
  61. package/dist/esm/Chat/ChatSidebar.d.ts +5 -1
  62. package/dist/esm/Chat/ChatSidebar.d.ts.map +1 -0
  63. package/dist/esm/Chat/ChatSidebar.js +2 -2
  64. package/dist/esm/Chat/ChatSidebar.js.map +1 -1
  65. package/dist/esm/Chat/ChatSidebarForObservableQueries.d.ts +1 -0
  66. package/dist/esm/Chat/ChatSidebarForObservableQueries.d.ts.map +1 -0
  67. package/dist/esm/Chat/ChatSidebarForObservableQueries.js.map +1 -1
  68. package/dist/esm/Chat/ChatStatus.js.map +1 -1
  69. package/dist/esm/Chat/ChatTopic.d.ts +1 -0
  70. package/dist/esm/Chat/ChatTopic.d.ts.map +1 -0
  71. package/dist/esm/Chat/ChatTopic.js.map +1 -1
  72. package/dist/esm/Chat/ChatTopicAction.d.ts +23 -0
  73. package/dist/esm/Chat/ChatTopicAction.d.ts.map +1 -0
  74. package/dist/esm/Chat/ChatTopicAction.js +4 -0
  75. package/dist/esm/Chat/ChatTopicAction.js.map +1 -0
  76. package/dist/esm/Chat/ChatTopicActions.d.ts +25 -0
  77. package/dist/esm/Chat/ChatTopicActions.d.ts.map +1 -0
  78. package/dist/esm/Chat/ChatTopicActions.js +6 -0
  79. package/dist/esm/Chat/ChatTopicActions.js.map +1 -0
  80. package/dist/esm/Chat/ChatTopicList.d.ts +6 -2
  81. package/dist/esm/Chat/ChatTopicList.d.ts.map +1 -0
  82. package/dist/esm/Chat/ChatTopicList.js +17 -9
  83. package/dist/esm/Chat/ChatTopicList.js.map +1 -1
  84. package/dist/esm/Chat/Kit/AnchoredOverlay.js.map +1 -1
  85. package/dist/esm/Chat/Kit/Avatar/PersonAvatarCircle.js.map +1 -1
  86. package/dist/esm/Chat/Kit/Avatar/getAvatarColor.js.map +1 -1
  87. package/dist/esm/Chat/Kit/Avatar/getInitials.js.map +1 -1
  88. package/dist/esm/Chat/Kit/Avatar/index.d.ts +1 -0
  89. package/dist/esm/Chat/Kit/Avatar/index.d.ts.map +1 -0
  90. package/dist/esm/Chat/Kit/Avatar/index.js +1 -0
  91. package/dist/esm/Chat/Kit/Avatar/index.js.map +1 -0
  92. package/dist/esm/Chat/Kit/Chat.d.ts +1 -0
  93. package/dist/esm/Chat/Kit/Chat.d.ts.map +1 -0
  94. package/dist/esm/Chat/Kit/Chat.js.map +1 -1
  95. package/dist/esm/Chat/Kit/ChatAuthorKind.js.map +1 -1
  96. package/dist/esm/Chat/Kit/ChatBubble.d.ts +1 -0
  97. package/dist/esm/Chat/Kit/ChatBubble.d.ts.map +1 -0
  98. package/dist/esm/Chat/Kit/ChatBubble.js.map +1 -1
  99. package/dist/esm/Chat/Kit/ChatComposer.d.ts +1 -0
  100. package/dist/esm/Chat/Kit/ChatComposer.d.ts.map +1 -0
  101. package/dist/esm/Chat/Kit/ChatComposer.js.map +1 -1
  102. package/dist/esm/Chat/Kit/ChatMessage.d.ts +1 -0
  103. package/dist/esm/Chat/Kit/ChatMessage.d.ts.map +1 -0
  104. package/dist/esm/Chat/Kit/ChatMessage.js.map +1 -1
  105. package/dist/esm/Chat/Kit/ChatMessageAdded.js.map +1 -1
  106. package/dist/esm/Chat/Kit/ChatMessageBubble.d.ts +1 -0
  107. package/dist/esm/Chat/Kit/ChatMessageBubble.d.ts.map +1 -0
  108. package/dist/esm/Chat/Kit/ChatMessageBubble.js.map +1 -1
  109. package/dist/esm/Chat/Kit/ChatMessageReaction.d.ts +1 -0
  110. package/dist/esm/Chat/Kit/ChatMessageReaction.d.ts.map +1 -0
  111. package/dist/esm/Chat/Kit/ChatMessageReaction.js.map +1 -1
  112. package/dist/esm/Chat/Kit/ChatMessageReactionUser.js.map +1 -1
  113. package/dist/esm/Chat/Kit/ChatOwnReaction.js.map +1 -1
  114. package/dist/esm/Chat/Kit/ChatTypingAuthor.d.ts +1 -0
  115. package/dist/esm/Chat/Kit/ChatTypingAuthor.d.ts.map +1 -0
  116. package/dist/esm/Chat/Kit/ChatTypingAuthor.js.map +1 -1
  117. package/dist/esm/Chat/Kit/ChatVariant.js.map +1 -1
  118. package/dist/esm/Chat/Kit/Emoji/EmojiCategory.d.ts +1 -0
  119. package/dist/esm/Chat/Kit/Emoji/EmojiCategory.d.ts.map +1 -0
  120. package/dist/esm/Chat/Kit/Emoji/EmojiCategory.js.map +1 -1
  121. package/dist/esm/Chat/Kit/Emoji/EmojiCategoryKey.js.map +1 -1
  122. package/dist/esm/Chat/Kit/Emoji/EmojiMemory.js.map +1 -1
  123. package/dist/esm/Chat/Kit/Emoji/EmojiPicker.d.ts +1 -0
  124. package/dist/esm/Chat/Kit/Emoji/EmojiPicker.d.ts.map +1 -0
  125. package/dist/esm/Chat/Kit/Emoji/EmojiPicker.js.map +1 -1
  126. package/dist/esm/Chat/Kit/Emoji/emojiCatalog.d.ts +1 -0
  127. package/dist/esm/Chat/Kit/Emoji/emojiCatalog.d.ts.map +1 -0
  128. package/dist/esm/Chat/Kit/Emoji/emojiCatalog.js.map +1 -1
  129. package/dist/esm/Chat/Kit/Emoji/index.d.ts +1 -0
  130. package/dist/esm/Chat/Kit/Emoji/index.d.ts.map +1 -0
  131. package/dist/esm/Chat/Kit/Emoji/index.js +1 -0
  132. package/dist/esm/Chat/Kit/Emoji/index.js.map +1 -0
  133. package/dist/esm/Chat/Kit/Emoji/recentEmojis.d.ts +1 -0
  134. package/dist/esm/Chat/Kit/Emoji/recentEmojis.d.ts.map +1 -0
  135. package/dist/esm/Chat/Kit/Emoji/recentEmojis.js.map +1 -1
  136. package/dist/esm/Chat/Kit/FailedReply.d.ts +1 -0
  137. package/dist/esm/Chat/Kit/FailedReply.d.ts.map +1 -0
  138. package/dist/esm/Chat/Kit/FailedReply.js.map +1 -1
  139. package/dist/esm/Chat/Kit/Mentions/MentionCandidate.d.ts +1 -0
  140. package/dist/esm/Chat/Kit/Mentions/MentionCandidate.d.ts.map +1 -0
  141. package/dist/esm/Chat/Kit/Mentions/MentionCandidate.js.map +1 -1
  142. package/dist/esm/Chat/Kit/Mentions/MentionQuery.js.map +1 -1
  143. package/dist/esm/Chat/Kit/Mentions/MentionSuggestions.d.ts +1 -0
  144. package/dist/esm/Chat/Kit/Mentions/MentionSuggestions.d.ts.map +1 -0
  145. package/dist/esm/Chat/Kit/Mentions/MentionSuggestions.js.map +1 -1
  146. package/dist/esm/Chat/Kit/Mentions/activeMentionQuery.d.ts +1 -0
  147. package/dist/esm/Chat/Kit/Mentions/activeMentionQuery.d.ts.map +1 -0
  148. package/dist/esm/Chat/Kit/Mentions/activeMentionQuery.js.map +1 -1
  149. package/dist/esm/Chat/Kit/Mentions/applyMention.d.ts +1 -0
  150. package/dist/esm/Chat/Kit/Mentions/applyMention.d.ts.map +1 -0
  151. package/dist/esm/Chat/Kit/Mentions/applyMention.js.map +1 -1
  152. package/dist/esm/Chat/Kit/Mentions/extractMentions.js.map +1 -1
  153. package/dist/esm/Chat/Kit/Mentions/findMentionRanges.js.map +1 -1
  154. package/dist/esm/Chat/Kit/Mentions/index.d.ts +1 -0
  155. package/dist/esm/Chat/Kit/Mentions/index.d.ts.map +1 -0
  156. package/dist/esm/Chat/Kit/Mentions/index.js +1 -0
  157. package/dist/esm/Chat/Kit/Mentions/index.js.map +1 -0
  158. package/dist/esm/Chat/Kit/Mentions/matchCandidates.d.ts +1 -0
  159. package/dist/esm/Chat/Kit/Mentions/matchCandidates.d.ts.map +1 -0
  160. package/dist/esm/Chat/Kit/Mentions/matchCandidates.js.map +1 -1
  161. package/dist/esm/Chat/Kit/Mentions/mentionSegments.js.map +1 -1
  162. package/dist/esm/Chat/Kit/MessageReactions.d.ts +1 -0
  163. package/dist/esm/Chat/Kit/MessageReactions.d.ts.map +1 -0
  164. package/dist/esm/Chat/Kit/MessageReactions.js.map +1 -1
  165. package/dist/esm/Chat/Kit/ReactionPicker.d.ts +1 -0
  166. package/dist/esm/Chat/Kit/ReactionPicker.d.ts.map +1 -0
  167. package/dist/esm/Chat/Kit/ReactionPicker.js.map +1 -1
  168. package/dist/esm/Chat/Kit/TypingIndicator.d.ts +1 -0
  169. package/dist/esm/Chat/Kit/TypingIndicator.d.ts.map +1 -0
  170. package/dist/esm/Chat/Kit/TypingIndicator.js.map +1 -1
  171. package/dist/esm/Chat/Kit/findOwnReaction.d.ts +1 -0
  172. package/dist/esm/Chat/Kit/findOwnReaction.d.ts.map +1 -0
  173. package/dist/esm/Chat/Kit/findOwnReaction.js.map +1 -1
  174. package/dist/esm/Chat/Kit/index.d.ts +1 -0
  175. package/dist/esm/Chat/Kit/index.d.ts.map +1 -0
  176. package/dist/esm/Chat/Kit/index.js +1 -0
  177. package/dist/esm/Chat/Kit/index.js.map +1 -0
  178. package/dist/esm/Chat/Kit/reactionsExcludingUser.d.ts +1 -0
  179. package/dist/esm/Chat/Kit/reactionsExcludingUser.d.ts.map +1 -0
  180. package/dist/esm/Chat/Kit/reactionsExcludingUser.js.map +1 -1
  181. package/dist/esm/Chat/index.d.ts +2 -0
  182. package/dist/esm/Chat/index.d.ts.map +1 -0
  183. package/dist/esm/Chat/isTopicUnnamed.d.ts +1 -0
  184. package/dist/esm/Chat/isTopicUnnamed.d.ts.map +1 -0
  185. package/dist/esm/Chat/isTopicUnnamed.js.map +1 -1
  186. package/dist/esm/Chat/relativeTimestamp.js.map +1 -1
  187. package/dist/esm/Chat/shouldRequestTopicName.js.map +1 -1
  188. package/dist/esm/Chat/topicsByActivity.d.ts +1 -0
  189. package/dist/esm/Chat/topicsByActivity.d.ts.map +1 -0
  190. package/dist/esm/Chat/topicsByActivity.js.map +1 -1
  191. package/dist/esm/Chat/useTopicActionFocusRecovery.d.ts +19 -0
  192. package/dist/esm/Chat/useTopicActionFocusRecovery.d.ts.map +1 -0
  193. package/dist/esm/Chat/useTopicActionFocusRecovery.js +41 -0
  194. package/dist/esm/Chat/useTopicActionFocusRecovery.js.map +1 -0
  195. package/dist/esm/CommandDialog/CommandDialog.d.ts +1 -0
  196. package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -0
  197. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  198. package/dist/esm/CommandDialog/CommandStepper.d.ts +1 -0
  199. package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -0
  200. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  201. package/dist/esm/CommandDialog/CommandStepperContent.d.ts +1 -0
  202. package/dist/esm/CommandDialog/CommandStepperContent.d.ts.map +1 -0
  203. package/dist/esm/CommandDialog/CommandStepperContent.js.map +1 -1
  204. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +1 -0
  205. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -0
  206. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  207. package/dist/esm/CommandDialog/StepperPanel.js.map +1 -1
  208. package/dist/esm/CommandDialog/applyBeforeExecute.js.map +1 -1
  209. package/dist/esm/CommandDialog/commandValuesUnchanged.js.map +1 -1
  210. package/dist/esm/CommandDialog/confirmBeforeExecute.js.map +1 -1
  211. package/dist/esm/CommandDialog/index.d.ts +1 -0
  212. package/dist/esm/CommandDialog/index.d.ts.map +1 -0
  213. package/dist/esm/CommandDialog/stepChildren.js.map +1 -1
  214. package/dist/esm/CommandDialog/transitionStep.d.ts +1 -0
  215. package/dist/esm/CommandDialog/transitionStep.d.ts.map +1 -0
  216. package/dist/esm/CommandDialog/transitionStep.js.map +1 -1
  217. package/dist/esm/CommandDialog/useCommandExecution.d.ts +1 -0
  218. package/dist/esm/CommandDialog/useCommandExecution.d.ts.map +1 -0
  219. package/dist/esm/CommandDialog/useCommandExecution.js.map +1 -1
  220. package/dist/esm/CommandDialog/useSubmissionFlight.js.map +1 -1
  221. package/dist/esm/CommandForm/AutoCommandForm.js.map +1 -1
  222. package/dist/esm/CommandForm/FieldTypeProvider.js.map +1 -1
  223. package/dist/esm/CommandForm/commandFormMarkers.js.map +1 -1
  224. package/dist/esm/CommandForm/defaultFieldTypeProviders.js.map +1 -1
  225. package/dist/esm/CommandForm/fieldTypeProviderRegistry.d.ts +1 -0
  226. package/dist/esm/CommandForm/fieldTypeProviderRegistry.d.ts.map +1 -0
  227. package/dist/esm/CommandForm/fieldTypeProviderRegistry.js.map +1 -1
  228. package/dist/esm/CommandForm/fields/CalendarField.d.ts +1 -0
  229. package/dist/esm/CommandForm/fields/CalendarField.d.ts.map +1 -0
  230. package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
  231. package/dist/esm/CommandForm/fields/CheckboxField.d.ts +1 -0
  232. package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -0
  233. package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
  234. package/dist/esm/CommandForm/fields/ChipsField.d.ts +1 -0
  235. package/dist/esm/CommandForm/fields/ChipsField.d.ts.map +1 -0
  236. package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
  237. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts +1 -0
  238. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts.map +1 -0
  239. package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
  240. package/dist/esm/CommandForm/fields/DropdownField.d.ts +1 -0
  241. package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -0
  242. package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
  243. package/dist/esm/CommandForm/fields/InputTextField.d.ts +1 -0
  244. package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -0
  245. package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
  246. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts +1 -0
  247. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts.map +1 -0
  248. package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
  249. package/dist/esm/CommandForm/fields/NumberField.d.ts +1 -0
  250. package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -0
  251. package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
  252. package/dist/esm/CommandForm/fields/NumberInputField.d.ts +1 -0
  253. package/dist/esm/CommandForm/fields/NumberInputField.d.ts.map +1 -0
  254. package/dist/esm/CommandForm/fields/NumberInputField.js.map +1 -1
  255. package/dist/esm/CommandForm/fields/PasswordField.d.ts +1 -0
  256. package/dist/esm/CommandForm/fields/PasswordField.d.ts.map +1 -0
  257. package/dist/esm/CommandForm/fields/PasswordField.js.map +1 -1
  258. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts +1 -0
  259. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts.map +1 -0
  260. package/dist/esm/CommandForm/fields/RadioButtonField.js.map +1 -1
  261. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts +1 -0
  262. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts.map +1 -0
  263. package/dist/esm/CommandForm/fields/RadioGroupField.js.map +1 -1
  264. package/dist/esm/CommandForm/fields/RatingField.d.ts +1 -0
  265. package/dist/esm/CommandForm/fields/RatingField.d.ts.map +1 -0
  266. package/dist/esm/CommandForm/fields/RatingField.js.map +1 -1
  267. package/dist/esm/CommandForm/fields/SliderField.d.ts +1 -0
  268. package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -0
  269. package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
  270. package/dist/esm/CommandForm/fields/TextAreaField.d.ts +1 -0
  271. package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -0
  272. package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
  273. package/dist/esm/CommandForm/fields/ToggleSwitchField.d.ts +1 -0
  274. package/dist/esm/CommandForm/fields/ToggleSwitchField.d.ts.map +1 -0
  275. package/dist/esm/CommandForm/fields/ToggleSwitchField.js.map +1 -1
  276. package/dist/esm/CommandForm/fields/chipValues.js.map +1 -1
  277. package/dist/esm/CommandForm/fields/fieldAccessibility.js.map +1 -1
  278. package/dist/esm/CommandForm/fields/fieldValueFromEvent.js.map +1 -1
  279. package/dist/esm/CommandForm/fields/index.d.ts +1 -0
  280. package/dist/esm/CommandForm/fields/index.d.ts.map +1 -0
  281. package/dist/esm/CommandForm/fields/index.js +1 -0
  282. package/dist/esm/CommandForm/fields/index.js.map +1 -0
  283. package/dist/esm/CommandForm/index.d.ts +1 -0
  284. package/dist/esm/CommandForm/index.d.ts.map +1 -0
  285. package/dist/esm/Common/ActionMenubar.d.ts +1 -0
  286. package/dist/esm/Common/ActionMenubar.d.ts.map +1 -0
  287. package/dist/esm/Common/ActionMenubar.js.map +1 -1
  288. package/dist/esm/Common/Breadcrumbs.js.map +1 -1
  289. package/dist/esm/Common/Button.d.ts +1 -0
  290. package/dist/esm/Common/Button.d.ts.map +1 -0
  291. package/dist/esm/Common/Button.js.map +1 -1
  292. package/dist/esm/Common/ButtonImplementation.d.ts +1 -0
  293. package/dist/esm/Common/ButtonImplementation.d.ts.map +1 -0
  294. package/dist/esm/Common/ButtonImplementation.js.map +1 -1
  295. package/dist/esm/Common/Checkbox.d.ts +1 -0
  296. package/dist/esm/Common/Checkbox.d.ts.map +1 -0
  297. package/dist/esm/Common/Checkbox.js.map +1 -1
  298. package/dist/esm/Common/CheckboxImplementation.d.ts +1 -0
  299. package/dist/esm/Common/CheckboxImplementation.d.ts.map +1 -0
  300. package/dist/esm/Common/CheckboxImplementation.js.map +1 -1
  301. package/dist/esm/Common/ComboBox.js.map +1 -1
  302. package/dist/esm/Common/CratisComponentsProvider.d.ts +1 -0
  303. package/dist/esm/Common/CratisComponentsProvider.d.ts.map +1 -0
  304. package/dist/esm/Common/CratisComponentsProvider.js.map +1 -1
  305. package/dist/esm/Common/DatePickerInput.d.ts +1 -0
  306. package/dist/esm/Common/DatePickerInput.d.ts.map +1 -0
  307. package/dist/esm/Common/DatePickerInput.js.map +1 -1
  308. package/dist/esm/Common/DatePickerInputImplementation.d.ts +1 -0
  309. package/dist/esm/Common/DatePickerInputImplementation.d.ts.map +1 -0
  310. package/dist/esm/Common/DatePickerInputImplementation.js.map +1 -1
  311. package/dist/esm/Common/ErrorBoundary.js.map +1 -1
  312. package/dist/esm/Common/FormElement.js.map +1 -1
  313. package/dist/esm/Common/Icon.js.map +1 -1
  314. package/dist/esm/Common/IconButton.d.ts +1 -0
  315. package/dist/esm/Common/IconButton.d.ts.map +1 -0
  316. package/dist/esm/Common/IconButton.js.map +1 -1
  317. package/dist/esm/Common/IconButtonImplementation.d.ts +1 -0
  318. package/dist/esm/Common/IconButtonImplementation.d.ts.map +1 -0
  319. package/dist/esm/Common/IconButtonImplementation.js.map +1 -1
  320. package/dist/esm/Common/NumberInput.d.ts +1 -0
  321. package/dist/esm/Common/NumberInput.d.ts.map +1 -0
  322. package/dist/esm/Common/NumberInput.js.map +1 -1
  323. package/dist/esm/Common/NumberInputCommitReason.js.map +1 -1
  324. package/dist/esm/Common/NumberInputPartAttributes.js.map +1 -1
  325. package/dist/esm/Common/Page.js.map +1 -1
  326. package/dist/esm/Common/Radio.d.ts +1 -0
  327. package/dist/esm/Common/Radio.d.ts.map +1 -0
  328. package/dist/esm/Common/Radio.js.map +1 -1
  329. package/dist/esm/Common/RadioImplementation.d.ts +1 -0
  330. package/dist/esm/Common/RadioImplementation.d.ts.map +1 -0
  331. package/dist/esm/Common/RadioImplementation.js.map +1 -1
  332. package/dist/esm/Common/Surface.js.map +1 -1
  333. package/dist/esm/Common/SurfaceImplementation.d.ts +1 -0
  334. package/dist/esm/Common/SurfaceImplementation.d.ts.map +1 -0
  335. package/dist/esm/Common/SurfaceImplementation.js.map +1 -1
  336. package/dist/esm/Common/Switch.d.ts +1 -0
  337. package/dist/esm/Common/Switch.d.ts.map +1 -0
  338. package/dist/esm/Common/Switch.js.map +1 -1
  339. package/dist/esm/Common/SwitchImplementation.d.ts +1 -0
  340. package/dist/esm/Common/SwitchImplementation.d.ts.map +1 -0
  341. package/dist/esm/Common/SwitchImplementation.js.map +1 -1
  342. package/dist/esm/Common/Tabs.js.map +1 -1
  343. package/dist/esm/Common/TagGroup.js.map +1 -1
  344. package/dist/esm/Common/TextArea.d.ts +1 -0
  345. package/dist/esm/Common/TextArea.d.ts.map +1 -0
  346. package/dist/esm/Common/TextArea.js.map +1 -1
  347. package/dist/esm/Common/TextAreaImplementation.d.ts +1 -0
  348. package/dist/esm/Common/TextAreaImplementation.d.ts.map +1 -0
  349. package/dist/esm/Common/TextAreaImplementation.js.map +1 -1
  350. package/dist/esm/Common/TextInput.d.ts +1 -0
  351. package/dist/esm/Common/TextInput.d.ts.map +1 -0
  352. package/dist/esm/Common/TextInput.js.map +1 -1
  353. package/dist/esm/Common/TextInputImplementation.d.ts +1 -0
  354. package/dist/esm/Common/TextInputImplementation.d.ts.map +1 -0
  355. package/dist/esm/Common/TextInputImplementation.js.map +1 -1
  356. package/dist/esm/Common/ToggleGroup.js.map +1 -1
  357. package/dist/esm/Common/ToolbarFocusMode.js.map +1 -1
  358. package/dist/esm/Common/Tooltip.js.map +1 -1
  359. package/dist/esm/Common/TooltipImplementation.d.ts +1 -0
  360. package/dist/esm/Common/TooltipImplementation.d.ts.map +1 -0
  361. package/dist/esm/Common/TooltipImplementation.js.map +1 -1
  362. package/dist/esm/Common/index.d.ts +1 -0
  363. package/dist/esm/Common/index.d.ts.map +1 -0
  364. package/dist/esm/Common/messaging/useOptionalMessenger.js.map +1 -1
  365. package/dist/esm/Common/normalizeIconClass.js.map +1 -1
  366. package/dist/esm/Common/reactAriaProps.js.map +1 -1
  367. package/dist/esm/Common/useNativeCheckedState.js.map +1 -1
  368. package/dist/esm/Common/useToolbarKeyboardNavigation.d.ts +1 -0
  369. package/dist/esm/Common/useToolbarKeyboardNavigation.d.ts.map +1 -0
  370. package/dist/esm/Common/useToolbarKeyboardNavigation.js.map +1 -1
  371. package/dist/esm/DataPage/DataPage.d.ts +1 -0
  372. package/dist/esm/DataPage/DataPage.d.ts.map +1 -0
  373. package/dist/esm/DataPage/DataPage.js.map +1 -1
  374. package/dist/esm/DataPage/DataPageLayout.js.map +1 -1
  375. package/dist/esm/DataPage/index.d.ts +1 -0
  376. package/dist/esm/DataPage/index.d.ts.map +1 -0
  377. package/dist/esm/DataTables/Column.d.ts +1 -0
  378. package/dist/esm/DataTables/Column.d.ts.map +1 -0
  379. package/dist/esm/DataTables/Column.js.map +1 -1
  380. package/dist/esm/DataTables/ColumnFilterMenu.d.ts +1 -0
  381. package/dist/esm/DataTables/ColumnFilterMenu.d.ts.map +1 -0
  382. package/dist/esm/DataTables/ColumnFilterMenu.js.map +1 -1
  383. package/dist/esm/DataTables/DataTableCore.d.ts +1 -0
  384. package/dist/esm/DataTables/DataTableCore.d.ts.map +1 -0
  385. package/dist/esm/DataTables/DataTableCore.js.map +1 -1
  386. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.d.ts +1 -0
  387. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.d.ts.map +1 -0
  388. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.js.map +1 -1
  389. package/dist/esm/DataTables/DataTableFilterMeta.js.map +1 -1
  390. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts +1 -0
  391. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts.map +1 -0
  392. package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
  393. package/dist/esm/DataTables/DataTableForQuery.d.ts +1 -0
  394. package/dist/esm/DataTables/DataTableForQuery.d.ts.map +1 -0
  395. package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
  396. package/dist/esm/DataTables/DataTableSelectionChangeEvent.js.map +1 -1
  397. package/dist/esm/DataTables/DataTableStatus.js.map +1 -1
  398. package/dist/esm/DataTables/TablePaginator.d.ts +1 -0
  399. package/dist/esm/DataTables/TablePaginator.d.ts.map +1 -0
  400. package/dist/esm/DataTables/TablePaginator.js.map +1 -1
  401. package/dist/esm/DataTables/TablePaginatorImplementation.d.ts +1 -0
  402. package/dist/esm/DataTables/TablePaginatorImplementation.d.ts.map +1 -0
  403. package/dist/esm/DataTables/TablePaginatorImplementation.js.map +1 -1
  404. package/dist/esm/DataTables/index.d.ts +1 -0
  405. package/dist/esm/DataTables/index.d.ts.map +1 -0
  406. package/dist/esm/DataTables/paginatorRange.js.map +1 -1
  407. package/dist/esm/DataTables/resolveDataTableStatus.d.ts +1 -0
  408. package/dist/esm/DataTables/resolveDataTableStatus.d.ts.map +1 -0
  409. package/dist/esm/DataTables/resolveDataTableStatus.js.map +1 -1
  410. package/dist/esm/DataTables/selectionKeys.js.map +1 -1
  411. package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
  412. package/dist/esm/Dialogs/ConfirmationDialog.js.map +1 -1
  413. package/dist/esm/Dialogs/Dialog.d.ts +1 -0
  414. package/dist/esm/Dialogs/Dialog.d.ts.map +1 -0
  415. package/dist/esm/Dialogs/Dialog.js.map +1 -1
  416. package/dist/esm/Dialogs/DialogImplementation.d.ts +1 -0
  417. package/dist/esm/Dialogs/DialogImplementation.d.ts.map +1 -0
  418. package/dist/esm/Dialogs/DialogImplementation.js.map +1 -1
  419. package/dist/esm/Dialogs/DialogInitialFocus.js.map +1 -1
  420. package/dist/esm/Dialogs/index.d.ts +1 -0
  421. package/dist/esm/Dialogs/index.d.ts.map +1 -0
  422. package/dist/esm/Display/Avatar.js.map +1 -1
  423. package/dist/esm/Display/Badge.js.map +1 -1
  424. package/dist/esm/Display/Chip.js.map +1 -1
  425. package/dist/esm/Display/Message.js.map +1 -1
  426. package/dist/esm/Display/ProgressBar.js.map +1 -1
  427. package/dist/esm/Display/ProgressBarImplementation.d.ts +1 -0
  428. package/dist/esm/Display/ProgressBarImplementation.d.ts.map +1 -0
  429. package/dist/esm/Display/ProgressBarImplementation.js.map +1 -1
  430. package/dist/esm/Display/ProgressSpinner.js.map +1 -1
  431. package/dist/esm/Display/Skeleton.js.map +1 -1
  432. package/dist/esm/Display/Tag.js.map +1 -1
  433. package/dist/esm/Display/index.d.ts +1 -0
  434. package/dist/esm/Display/index.d.ts.map +1 -0
  435. package/dist/esm/Dropdown/Dropdown.d.ts +1 -0
  436. package/dist/esm/Dropdown/Dropdown.d.ts.map +1 -0
  437. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  438. package/dist/esm/Dropdown/DropdownImplementation.d.ts +1 -0
  439. package/dist/esm/Dropdown/DropdownImplementation.d.ts.map +1 -0
  440. package/dist/esm/Dropdown/DropdownImplementation.js.map +1 -1
  441. package/dist/esm/Dropdown/index.d.ts +1 -0
  442. package/dist/esm/Dropdown/index.d.ts.map +1 -0
  443. package/dist/esm/Dropdown/observeLabelAssociations.js.map +1 -1
  444. package/dist/esm/Dropdown/useExternalLabel.js.map +1 -1
  445. package/dist/esm/Filter/CheckboxListFilter.d.ts +1 -0
  446. package/dist/esm/Filter/CheckboxListFilter.d.ts.map +1 -0
  447. package/dist/esm/Filter/CheckboxListFilter.js.map +1 -1
  448. package/dist/esm/Filter/FilterEditor.d.ts +1 -0
  449. package/dist/esm/Filter/FilterEditor.d.ts.map +1 -0
  450. package/dist/esm/Filter/FilterEditor.js.map +1 -1
  451. package/dist/esm/Filter/FilterEditorProps.d.ts +1 -0
  452. package/dist/esm/Filter/FilterEditorProps.d.ts.map +1 -0
  453. package/dist/esm/Filter/FilterEditorProps.js.map +1 -1
  454. package/dist/esm/Filter/FilterPanel.d.ts +1 -0
  455. package/dist/esm/Filter/FilterPanel.d.ts.map +1 -0
  456. package/dist/esm/Filter/FilterPanel.js.map +1 -1
  457. package/dist/esm/Filter/RangeHistogramFilter.d.ts +1 -0
  458. package/dist/esm/Filter/RangeHistogramFilter.d.ts.map +1 -0
  459. package/dist/esm/Filter/RangeHistogramFilter.js.map +1 -1
  460. package/dist/esm/Filter/index.d.ts +1 -0
  461. package/dist/esm/Filter/index.d.ts.map +1 -0
  462. package/dist/esm/Filter/types.js.map +1 -1
  463. package/dist/esm/Filter/useFilterState.d.ts +1 -0
  464. package/dist/esm/Filter/useFilterState.d.ts.map +1 -0
  465. package/dist/esm/Filter/useFilterState.js.map +1 -1
  466. package/dist/esm/Filter/useOptionListOverflow.js.map +1 -1
  467. package/dist/esm/Filter/utils.d.ts +1 -0
  468. package/dist/esm/Filter/utils.d.ts.map +1 -0
  469. package/dist/esm/Filter/utils.js.map +1 -1
  470. package/dist/esm/Notifications/Toaster.js.map +1 -1
  471. package/dist/esm/Notifications/index.d.ts +1 -0
  472. package/dist/esm/Notifications/index.d.ts.map +1 -0
  473. package/dist/esm/Notifications/toast.js.map +1 -1
  474. package/dist/esm/Notifications/toastCommandResult.js.map +1 -1
  475. package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts +1 -0
  476. package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts.map +1 -0
  477. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  478. package/dist/esm/ObjectContentEditor/index.d.ts +1 -0
  479. package/dist/esm/ObjectContentEditor/index.d.ts.map +1 -0
  480. package/dist/esm/ObjectContentEditor/objectHelpers.d.ts +1 -0
  481. package/dist/esm/ObjectContentEditor/objectHelpers.d.ts.map +1 -0
  482. package/dist/esm/ObjectContentEditor/objectHelpers.js.map +1 -1
  483. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  484. package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
  485. package/dist/esm/ObjectNavigationalBar/index.d.ts +1 -0
  486. package/dist/esm/ObjectNavigationalBar/index.d.ts.map +1 -0
  487. package/dist/esm/PivotViewer/PivotViewer.d.ts +1 -0
  488. package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -0
  489. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  490. package/dist/esm/PivotViewer/PivotViewerLabels.js.map +1 -1
  491. package/dist/esm/PivotViewer/components/AxisLabels.d.ts +1 -0
  492. package/dist/esm/PivotViewer/components/AxisLabels.d.ts.map +1 -0
  493. package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
  494. package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
  495. package/dist/esm/PivotViewer/components/FilterPanel.d.ts +1 -0
  496. package/dist/esm/PivotViewer/components/FilterPanel.d.ts.map +1 -0
  497. package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
  498. package/dist/esm/PivotViewer/components/FilterPanelContainer.d.ts +1 -0
  499. package/dist/esm/PivotViewer/components/FilterPanelContainer.d.ts.map +1 -0
  500. package/dist/esm/PivotViewer/components/FilterPanelContainer.js.map +1 -1
  501. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts +1 -0
  502. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts.map +1 -0
  503. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  504. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts +1 -0
  505. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts.map +1 -0
  506. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  507. package/dist/esm/PivotViewer/components/RangeHistogramFilter.d.ts +1 -0
  508. package/dist/esm/PivotViewer/components/RangeHistogramFilter.d.ts.map +1 -0
  509. package/dist/esm/PivotViewer/components/RangeHistogramFilter.js.map +1 -1
  510. package/dist/esm/PivotViewer/components/Spinner.js.map +1 -1
  511. package/dist/esm/PivotViewer/components/Toolbar.d.ts +1 -0
  512. package/dist/esm/PivotViewer/components/Toolbar.d.ts.map +1 -0
  513. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  514. package/dist/esm/PivotViewer/components/ToolbarContainer.d.ts +1 -0
  515. package/dist/esm/PivotViewer/components/ToolbarContainer.d.ts.map +1 -0
  516. package/dist/esm/PivotViewer/components/ToolbarContainer.js.map +1 -1
  517. package/dist/esm/PivotViewer/components/index.d.ts +1 -0
  518. package/dist/esm/PivotViewer/components/index.d.ts.map +1 -0
  519. package/dist/esm/PivotViewer/components/index.js +1 -0
  520. package/dist/esm/PivotViewer/components/index.js.map +1 -0
  521. package/dist/esm/PivotViewer/components/pivot/animation.d.ts +1 -0
  522. package/dist/esm/PivotViewer/components/pivot/animation.d.ts.map +1 -0
  523. package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
  524. package/dist/esm/PivotViewer/components/pivot/colorResolver.d.ts +1 -0
  525. package/dist/esm/PivotViewer/components/pivot/colorResolver.d.ts.map +1 -0
  526. package/dist/esm/PivotViewer/components/pivot/colorResolver.js.map +1 -1
  527. package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
  528. package/dist/esm/PivotViewer/components/pivot/ellipsize.js.map +1 -1
  529. package/dist/esm/PivotViewer/components/pivot/groups.d.ts +1 -0
  530. package/dist/esm/PivotViewer/components/pivot/groups.d.ts.map +1 -0
  531. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
  532. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts +1 -0
  533. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts.map +1 -0
  534. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  535. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.d.ts +1 -0
  536. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.d.ts.map +1 -0
  537. package/dist/esm/PivotViewer/components/pivot/syncScrollSprites.js.map +1 -1
  538. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts +1 -0
  539. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts.map +1 -0
  540. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  541. package/dist/esm/PivotViewer/constants.js.map +1 -1
  542. package/dist/esm/PivotViewer/engine/layout.d.ts +1 -0
  543. package/dist/esm/PivotViewer/engine/layout.d.ts.map +1 -0
  544. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  545. package/dist/esm/PivotViewer/engine/pivot.worker.js +1 -0
  546. package/dist/esm/PivotViewer/engine/pivot.worker.js.map +1 -0
  547. package/dist/esm/PivotViewer/engine/requestCorrelator.js.map +1 -1
  548. package/dist/esm/PivotViewer/engine/store.d.ts +1 -0
  549. package/dist/esm/PivotViewer/engine/store.d.ts.map +1 -0
  550. package/dist/esm/PivotViewer/engine/store.js.map +1 -1
  551. package/dist/esm/PivotViewer/engine/types.js.map +1 -1
  552. package/dist/esm/PivotViewer/hooks/index.d.ts +1 -0
  553. package/dist/esm/PivotViewer/hooks/index.d.ts.map +1 -0
  554. package/dist/esm/PivotViewer/hooks/index.js +1 -0
  555. package/dist/esm/PivotViewer/hooks/index.js.map +1 -0
  556. package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
  557. package/dist/esm/PivotViewer/hooks/useCardSelection.d.ts +1 -0
  558. package/dist/esm/PivotViewer/hooks/useCardSelection.d.ts.map +1 -0
  559. package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
  560. package/dist/esm/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
  561. package/dist/esm/PivotViewer/hooks/useCurrentFilters.d.ts +1 -0
  562. package/dist/esm/PivotViewer/hooks/useCurrentFilters.d.ts.map +1 -0
  563. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  564. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.d.ts +1 -0
  565. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.d.ts.map +1 -0
  566. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
  567. package/dist/esm/PivotViewer/hooks/useDimensionState.d.ts +1 -0
  568. package/dist/esm/PivotViewer/hooks/useDimensionState.d.ts.map +1 -0
  569. package/dist/esm/PivotViewer/hooks/useDimensionState.js.map +1 -1
  570. package/dist/esm/PivotViewer/hooks/useFieldExtractors.d.ts +1 -0
  571. package/dist/esm/PivotViewer/hooks/useFieldExtractors.d.ts.map +1 -0
  572. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
  573. package/dist/esm/PivotViewer/hooks/useFilterOptions.d.ts +1 -0
  574. package/dist/esm/PivotViewer/hooks/useFilterOptions.d.ts.map +1 -0
  575. package/dist/esm/PivotViewer/hooks/useFilterOptions.js.map +1 -1
  576. package/dist/esm/PivotViewer/hooks/useFilterPanelDrag.js.map +1 -1
  577. package/dist/esm/PivotViewer/hooks/useFilterState.d.ts +1 -0
  578. package/dist/esm/PivotViewer/hooks/useFilterState.d.ts.map +1 -0
  579. package/dist/esm/PivotViewer/hooks/useFilterState.js.map +1 -1
  580. package/dist/esm/PivotViewer/hooks/useFilteredData.d.ts +1 -0
  581. package/dist/esm/PivotViewer/hooks/useFilteredData.d.ts.map +1 -0
  582. package/dist/esm/PivotViewer/hooks/useFilteredData.js +1 -0
  583. package/dist/esm/PivotViewer/hooks/useFilteredData.js.map +1 -0
  584. package/dist/esm/PivotViewer/hooks/usePanning.js.map +1 -1
  585. package/dist/esm/PivotViewer/hooks/usePivotEngine.d.ts +1 -0
  586. package/dist/esm/PivotViewer/hooks/usePivotEngine.d.ts.map +1 -0
  587. package/dist/esm/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  588. package/dist/esm/PivotViewer/hooks/useScrollSync.d.ts +1 -0
  589. package/dist/esm/PivotViewer/hooks/useScrollSync.d.ts.map +1 -0
  590. package/dist/esm/PivotViewer/hooks/useScrollSync.js.map +1 -1
  591. package/dist/esm/PivotViewer/hooks/useSelectedItem.js +1 -0
  592. package/dist/esm/PivotViewer/hooks/useSelectedItem.js.map +1 -0
  593. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.d.ts +1 -0
  594. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.d.ts.map +1 -0
  595. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  596. package/dist/esm/PivotViewer/hooks/useWheelZoom.js.map +1 -1
  597. package/dist/esm/PivotViewer/hooks/useZoomScrollAnchor.js.map +1 -1
  598. package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
  599. package/dist/esm/PivotViewer/index.d.ts +1 -0
  600. package/dist/esm/PivotViewer/index.d.ts.map +1 -0
  601. package/dist/esm/PivotViewer/types.d.ts +1 -0
  602. package/dist/esm/PivotViewer/types.d.ts.map +1 -0
  603. package/dist/esm/PivotViewer/types.js.map +1 -1
  604. package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
  605. package/dist/esm/PivotViewer/utils/cardPosition.d.ts +1 -0
  606. package/dist/esm/PivotViewer/utils/cardPosition.d.ts.map +1 -0
  607. package/dist/esm/PivotViewer/utils/cardPosition.js.map +1 -1
  608. package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
  609. package/dist/esm/PivotViewer/utils/idResolution.d.ts +1 -0
  610. package/dist/esm/PivotViewer/utils/idResolution.d.ts.map +1 -0
  611. package/dist/esm/PivotViewer/utils/idResolution.js.map +1 -1
  612. package/dist/esm/PivotViewer/utils/index.d.ts +1 -0
  613. package/dist/esm/PivotViewer/utils/index.d.ts.map +1 -0
  614. package/dist/esm/PivotViewer/utils/index.js +1 -0
  615. package/dist/esm/PivotViewer/utils/index.js.map +1 -0
  616. package/dist/esm/PivotViewer/utils/presentGrouping.d.ts +1 -0
  617. package/dist/esm/PivotViewer/utils/presentGrouping.d.ts.map +1 -0
  618. package/dist/esm/PivotViewer/utils/presentGrouping.js.map +1 -1
  619. package/dist/esm/PivotViewer/utils/search.d.ts +1 -0
  620. package/dist/esm/PivotViewer/utils/search.d.ts.map +1 -0
  621. package/dist/esm/PivotViewer/utils/search.js.map +1 -1
  622. package/dist/esm/PivotViewer/utils/selection.d.ts +1 -0
  623. package/dist/esm/PivotViewer/utils/selection.d.ts.map +1 -0
  624. package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
  625. package/dist/esm/PivotViewer/utils/utils.d.ts +1 -0
  626. package/dist/esm/PivotViewer/utils/utils.d.ts.map +1 -0
  627. package/dist/esm/PivotViewer/utils/utils.js.map +1 -1
  628. package/dist/esm/QueryStatus/QueryStatus.js.map +1 -1
  629. package/dist/esm/QueryStatus/resolveQueryStatus.d.ts +1 -0
  630. package/dist/esm/QueryStatus/resolveQueryStatus.d.ts.map +1 -0
  631. package/dist/esm/QueryStatus/resolveQueryStatus.js.map +1 -1
  632. package/dist/esm/SchemaEditor/NameCell.d.ts +1 -0
  633. package/dist/esm/SchemaEditor/NameCell.d.ts.map +1 -0
  634. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  635. package/dist/esm/SchemaEditor/SchemaEditor.d.ts +1 -0
  636. package/dist/esm/SchemaEditor/SchemaEditor.d.ts.map +1 -0
  637. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  638. package/dist/esm/SchemaEditor/TypeCell.d.ts +1 -0
  639. package/dist/esm/SchemaEditor/TypeCell.d.ts.map +1 -0
  640. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  641. package/dist/esm/SchemaEditor/index.d.ts +1 -0
  642. package/dist/esm/SchemaEditor/index.d.ts.map +1 -0
  643. package/dist/esm/SchemaEditor/schemaHelpers.d.ts +1 -0
  644. package/dist/esm/SchemaEditor/schemaHelpers.d.ts.map +1 -0
  645. package/dist/esm/SchemaEditor/schemaHelpers.js.map +1 -1
  646. package/dist/esm/TimeMachine/EventsView.d.ts +1 -0
  647. package/dist/esm/TimeMachine/EventsView.d.ts.map +1 -0
  648. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  649. package/dist/esm/TimeMachine/Properties.js.map +1 -1
  650. package/dist/esm/TimeMachine/ReadModelView.d.ts +1 -0
  651. package/dist/esm/TimeMachine/ReadModelView.d.ts.map +1 -0
  652. package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
  653. package/dist/esm/TimeMachine/TimeMachine.d.ts +1 -0
  654. package/dist/esm/TimeMachine/TimeMachine.d.ts.map +1 -0
  655. package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
  656. package/dist/esm/TimeMachine/TimeMachineLabels.js.map +1 -1
  657. package/dist/esm/TimeMachine/index.d.ts +1 -0
  658. package/dist/esm/TimeMachine/index.d.ts.map +1 -0
  659. package/dist/esm/TimeMachine/propertiesHelpers.js.map +1 -1
  660. package/dist/esm/TimeMachine/types.js.map +1 -1
  661. package/dist/esm/Toolbar/Toolbar.d.ts +1 -0
  662. package/dist/esm/Toolbar/Toolbar.d.ts.map +1 -0
  663. package/dist/esm/Toolbar/Toolbar.js.map +1 -1
  664. package/dist/esm/Toolbar/ToolbarButton.d.ts +1 -0
  665. package/dist/esm/Toolbar/ToolbarButton.d.ts.map +1 -0
  666. package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
  667. package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
  668. package/dist/esm/Toolbar/ToolbarDragContext.js.map +1 -1
  669. package/dist/esm/Toolbar/ToolbarFanOutItem.d.ts +1 -0
  670. package/dist/esm/Toolbar/ToolbarFanOutItem.d.ts.map +1 -0
  671. package/dist/esm/Toolbar/ToolbarFanOutItem.js.map +1 -1
  672. package/dist/esm/Toolbar/ToolbarFolder.d.ts +1 -0
  673. package/dist/esm/Toolbar/ToolbarFolder.d.ts.map +1 -0
  674. package/dist/esm/Toolbar/ToolbarFolder.js.map +1 -1
  675. package/dist/esm/Toolbar/ToolbarFolderContext.js.map +1 -1
  676. package/dist/esm/Toolbar/ToolbarGroup.js.map +1 -1
  677. package/dist/esm/Toolbar/ToolbarItemVisibilityContext.js.map +1 -1
  678. package/dist/esm/Toolbar/ToolbarLayout.js.map +1 -1
  679. package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
  680. package/dist/esm/Toolbar/ToolbarSeparator.js.map +1 -1
  681. package/dist/esm/Toolbar/ToolbarSlot.js.map +1 -1
  682. package/dist/esm/Toolbar/index.d.ts +1 -0
  683. package/dist/esm/Toolbar/index.d.ts.map +1 -0
  684. package/dist/esm/configuration/CratisComponentsContext.d.ts +1 -0
  685. package/dist/esm/configuration/CratisComponentsContext.d.ts.map +1 -0
  686. package/dist/esm/configuration/CratisComponentsContext.js.map +1 -1
  687. package/dist/esm/configuration/CratisComponentsDefaults.d.ts +1 -0
  688. package/dist/esm/configuration/CratisComponentsDefaults.d.ts.map +1 -0
  689. package/dist/esm/configuration/CratisComponentsDefaults.js.map +1 -1
  690. package/dist/esm/configuration/useCratisIcon.d.ts +1 -0
  691. package/dist/esm/configuration/useCratisIcon.d.ts.map +1 -0
  692. package/dist/esm/configuration/useCratisIcon.js.map +1 -1
  693. package/dist/esm/index.d.ts +1 -0
  694. package/dist/esm/index.d.ts.map +1 -0
  695. package/dist/esm/renderer/DialogStackContext.js.map +1 -1
  696. package/dist/esm/renderer/RendererContext.d.ts +1 -0
  697. package/dist/esm/renderer/RendererContext.d.ts.map +1 -0
  698. package/dist/esm/renderer/RendererContext.js.map +1 -1
  699. package/dist/esm/renderer/RendererScope.d.ts +1 -0
  700. package/dist/esm/renderer/RendererScope.d.ts.map +1 -0
  701. package/dist/esm/renderer/RendererScope.js.map +1 -1
  702. package/dist/esm/renderer/builtin/index.js.map +1 -1
  703. package/dist/esm/renderer/capabilities.js.map +1 -1
  704. package/dist/esm/renderer/coreSlots.d.ts +1 -0
  705. package/dist/esm/renderer/coreSlots.d.ts.map +1 -0
  706. package/dist/esm/renderer/coreSlots.js.map +1 -1
  707. package/dist/esm/renderer/dialogStack.js.map +1 -1
  708. package/dist/esm/renderer/errors.d.ts +1 -0
  709. package/dist/esm/renderer/errors.d.ts.map +1 -0
  710. package/dist/esm/renderer/errors.js.map +1 -1
  711. package/dist/esm/renderer/index.d.ts +1 -0
  712. package/dist/esm/renderer/index.d.ts.map +1 -0
  713. package/dist/esm/renderer/manifest.d.ts +1 -0
  714. package/dist/esm/renderer/manifest.d.ts.map +1 -0
  715. package/dist/esm/renderer/manifest.js.map +1 -1
  716. package/dist/esm/renderer/overlayEnvironment.js.map +1 -1
  717. package/dist/esm/renderer/presentation.d.ts +1 -0
  718. package/dist/esm/renderer/presentation.d.ts.map +1 -0
  719. package/dist/esm/renderer/presentation.js.map +1 -1
  720. package/dist/esm/renderer/renderSlot.js.map +1 -1
  721. package/dist/esm/renderer/resolve.d.ts +1 -0
  722. package/dist/esm/renderer/resolve.d.ts.map +1 -0
  723. package/dist/esm/renderer/resolve.js.map +1 -1
  724. package/dist/esm/renderer/slots.js.map +1 -1
  725. package/dist/esm/styles.Canvas.css +17 -1
  726. package/dist/esm/styles.Chat.css +17 -1
  727. package/dist/esm/styles.css +17 -1
  728. package/dist/esm/types/ChangeHandler.d.ts +1 -0
  729. package/dist/esm/types/ChangeHandler.d.ts.map +1 -0
  730. package/dist/esm/types/ChangeHandler.js.map +1 -1
  731. package/dist/esm/types/ChangeMeta.js.map +1 -1
  732. package/dist/esm/types/ExactPartKeys.js.map +1 -1
  733. package/dist/esm/types/JsonSchema.js.map +1 -1
  734. package/dist/esm/types/TypeFormat.js.map +1 -1
  735. package/dist/esm/types/index.d.ts +1 -0
  736. package/dist/esm/types/index.d.ts.map +1 -0
  737. package/dist/esm/types/parts.js.map +1 -1
  738. package/package.json +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"isBackgroundPointerTarget.js","sources":["../../../Canvas/isBackgroundPointerTarget.ts"],"sourcesContent":[null],"names":[],"mappings":"AAQM,SAAU,yBAAyB,CACrC,WAAmB,EACnB,QAAiB,EACjB,MAA0B,EAC1B,SAA6B,EAAA;AAE7B,IAAA,IAAI,QAAQ,IAAI,WAAW,KAAK,OAAO;AAAE,QAAA,OAAO,IAAI;IACpD,IAAI,MAAM,KAAK,SAAS;AAAE,QAAA,OAAO,IAAI;AACrC,IAAA,OAAQ,MAA6B,EAAE,OAAO,KAAK,QAAQ;AAC/D;;"}
1
+ {"version":3,"file":"isBackgroundPointerTarget.js","sources":["../../../Canvas/isBackgroundPointerTarget.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n// A real drag handle (module/feature/slice headers, row labels, sticky notes, link connectors, ...)\n// always claims its own gesture with stopPropagation before it can bubble up to the canvas — so by\n// the time a touch pointerdown reaches the canvas, it is never one of those, and a single finger\n// anywhere else should pan rather than be silently swallowed by whatever content sits under it.\n// Mouse/pen keep the strict check: only the bare container or its rendering canvas count as background.\nexport function isBackgroundPointerTarget(\n pointerType: string,\n readOnly: boolean,\n target: EventTarget | null,\n container: EventTarget | null,\n): boolean {\n if (readOnly || pointerType === 'touch') return true;\n if (target === container) return true;\n return (target as HTMLElement | null)?.tagName === 'CANVAS';\n}\n"],"names":[],"mappings":"AAQM,SAAU,yBAAyB,CACrC,WAAmB,EACnB,QAAiB,EACjB,MAA0B,EAC1B,SAA6B,EAAA;AAE7B,IAAA,IAAI,QAAQ,IAAI,WAAW,KAAK,OAAO;AAAE,QAAA,OAAO,IAAI;IACpD,IAAI,MAAM,KAAK,SAAS;AAAE,QAAA,OAAO,IAAI;AACrC,IAAA,OAAQ,MAA6B,EAAE,OAAO,KAAK,QAAQ;AAC/D;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"isWithinScrollableContent.js","sources":["../../../Canvas/isWithinScrollableContent.ts"],"sourcesContent":[null],"names":[],"mappings":"AAmBM,SAAU,qBAAqB,CAAC,OAA0B,EAAA;IAC5D,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,KAAK,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;IAClI,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,KAAK,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;IAChI,OAAO,UAAU,IAAI,UAAU;AACnC;AAOM,SAAU,yBAAyB,CAAC,MAA0B,EAAE,SAA6B,EAAA;IAC/F,IAAI,OAAO,GAAG,MAAM,YAAY,IAAI,IAAI,MAAM,YAAY,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI;AAE7G,IAAA,OAAO,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,qBAAqB,CAAC;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,YAAY,EAAE,OAAO,CAAC,YAAY;SACrC,CAAC;AAAE,YAAA,OAAO,IAAI;AACf,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa;IACnC;AAEA,IAAA,OAAO,KAAK;AAChB;;"}
1
+ {"version":3,"file":"isWithinScrollableContent.js","sources":["../../../Canvas/isWithinScrollableContent.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** The subset of an element's overflow CSS and scroll metrics needed to decide whether it can scroll. */\nexport interface ScrollableMetrics {\n overflowX: string;\n overflowY: string;\n scrollWidth: number;\n clientWidth: number;\n scrollHeight: number;\n clientHeight: number;\n}\n\n/**\n * Whether an element's own content actually overflows its box in a direction its CSS lets it scroll —\n * the two conditions both have to hold: the CSS opts into scrolling, and there is more content than the\n * box shows. Pulled out of {@link isWithinScrollableContent} so this decision is testable on plain data,\n * without a real DOM (the surrounding walk needs one; this predicate does not).\n */\nexport function hasScrollableOverflow(metrics: ScrollableMetrics): boolean {\n const canScrollY = (metrics.overflowY === 'auto' || metrics.overflowY === 'scroll') && metrics.scrollHeight > metrics.clientHeight;\n const canScrollX = (metrics.overflowX === 'auto' || metrics.overflowX === 'scroll') && metrics.scrollWidth > metrics.clientWidth;\n return canScrollY || canScrollX;\n}\n\n// A wheel/trackpad gesture that lands inside a scrollable overlay — a chat's message list, a properties\n// panel, anything with its own `overflow-y: auto` — must scroll that content natively instead of being\n// captured as a canvas pan. Walking up from the event target toward the canvas container, the first\n// ancestor whose own content actually overflows its box claims the gesture; the\n// search stops at the container itself, so gestures over the bare board are never affected.\nexport function isWithinScrollableContent(target: EventTarget | null, container: HTMLElement | null): boolean {\n let element = target instanceof Node ? (target instanceof HTMLElement ? target : target.parentElement) : null;\n\n while (element && element !== container) {\n const style = getComputedStyle(element);\n if (hasScrollableOverflow({\n overflowX: style.overflowX,\n overflowY: style.overflowY,\n scrollWidth: element.scrollWidth,\n clientWidth: element.clientWidth,\n scrollHeight: element.scrollHeight,\n clientHeight: element.clientHeight,\n })) return true;\n element = element.parentElement;\n }\n\n return false;\n}\n"],"names":[],"mappings":"AAmBM,SAAU,qBAAqB,CAAC,OAA0B,EAAA;IAC5D,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,KAAK,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;IAClI,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,KAAK,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;IAChI,OAAO,UAAU,IAAI,UAAU;AACnC;AAOM,SAAU,yBAAyB,CAAC,MAA0B,EAAE,SAA6B,EAAA;IAC/F,IAAI,OAAO,GAAG,MAAM,YAAY,IAAI,IAAI,MAAM,YAAY,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI;AAE7G,IAAA,OAAO,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,qBAAqB,CAAC;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,YAAY,EAAE,OAAO,CAAC,YAAY;SACrC,CAAC;AAAE,YAAA,OAAO,IAAI;AACf,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa;IACnC;AAEA,IAAA,OAAO,KAAK;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"panMomentum.js","sources":["../../../Canvas/panMomentum.ts"],"sourcesContent":[null],"names":[],"mappings":"AA2BM,SAAU,WAAW,CAAC,OAAoB,EAAE,QAAgB,EAAA;AAC9D,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,OAAO;AAE3B,IAAA,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,EAAE;QACnE,OAAO,CAAC,KAAK,EAAE;IACnB;AAEA,IAAA,OAAO,OAAO;AAClB;AAOM,SAAU,mBAAmB,CAAC,OAAoB,EAAE,WAAmB,EAAA;AACzE,IAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,IAAI;AAEnC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;IACxC,IAAI,SAAS,IAAI,CAAC;AAAE,QAAA,OAAO,IAAI;AAE/B,IAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,SAAS,EAAE;IACzF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,QAAQ,GAAG,IAAI;AAC9E;SAGgB,aAAa,CAAC,QAAqB,EAAE,SAAiB,EAAE,QAAgB,EAAA;IACpF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAS,GAAG,SAAS,CAAC;AAC7C,IAAA,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE;AAC3D;;"}
1
+ {"version":3,"file":"panMomentum.js","sources":["../../../Canvas/panMomentum.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** A pointer position in viewport (client) coordinates, timestamped for velocity calculation. */\nexport interface PanSample {\n\n x: number;\n\n y: number;\n\n /** The time the sample was taken, from the same clock as every other sample (performance.now()). */\n time: number;\n}\n\n/** A pan velocity in pixels per millisecond. */\nexport interface PanVelocity {\n\n x: number;\n\n y: number;\n}\n\n/**\n * Drops samples older than windowMs, measured from the newest one — the trailing window a touch pan's\n * release velocity is read from, so a drag that was moving fast earlier but came to rest before the\n * finger actually lifted correctly produces no momentum. Always keeps at least one sample.\n */\nexport function trimSamples(samples: PanSample[], windowMs: number): PanSample[] {\n const trimmed = [...samples];\n const newest = trimmed[trimmed.length - 1];\n if (!newest) return trimmed;\n\n while (trimmed.length > 1 && newest.time - trimmed[0].time > windowMs) {\n trimmed.shift();\n }\n\n return trimmed;\n}\n\n/**\n * The release velocity implied by the oldest and newest sample in the window, or null when there are\n * too few samples, they carry no time delta, or the release was slower than minVelocity — too slow for\n * momentum to be worth animating.\n */\nexport function velocityFromSamples(samples: PanSample[], minVelocity: number): PanVelocity | null {\n if (samples.length < 2) return null;\n\n const first = samples[0];\n const last = samples[samples.length - 1];\n const elapsedMs = last.time - first.time;\n if (elapsedMs <= 0) return null;\n\n const velocity = { x: (last.x - first.x) / elapsedMs, y: (last.y - first.y) / elapsedMs };\n return Math.hypot(velocity.x, velocity.y) >= minVelocity ? velocity : null;\n}\n\n/** Decays a velocity exponentially over elapsedMs at the given friction rate. */\nexport function decayVelocity(velocity: PanVelocity, elapsedMs: number, friction: number): PanVelocity {\n const decay = Math.exp(-friction * elapsedMs);\n return { x: velocity.x * decay, y: velocity.y * decay };\n}\n"],"names":[],"mappings":"AA2BM,SAAU,WAAW,CAAC,OAAoB,EAAE,QAAgB,EAAA;AAC9D,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,OAAO;AAE3B,IAAA,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,EAAE;QACnE,OAAO,CAAC,KAAK,EAAE;IACnB;AAEA,IAAA,OAAO,OAAO;AAClB;AAOM,SAAU,mBAAmB,CAAC,OAAoB,EAAE,WAAmB,EAAA;AACzE,IAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AAAE,QAAA,OAAO,IAAI;AAEnC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;IACxC,IAAI,SAAS,IAAI,CAAC;AAAE,QAAA,OAAO,IAAI;AAE/B,IAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,SAAS,EAAE;IACzF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,QAAQ,GAAG,IAAI;AAC9E;SAGgB,aAAa,CAAC,QAAqB,EAAE,SAAiB,EAAE,QAAgB,EAAA;IACpF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAS,GAAG,SAAS,CAAC;AAC7C,IAAA,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE;AAC3D;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"pinchGesture.js","sources":["../../../Canvas/pinchGesture.ts"],"sourcesContent":[null],"names":[],"mappings":"AAsCM,SAAU,eAAe,CAAC,QAAmC,EAAA;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AACrC,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;IAElC,OAAO;AACH,QAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;QACpE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC/D;AACL;AAMM,SAAU,kBAAkB,CAAC,QAAuB,EAAE,OAAsB,EAAA;IAC9E,OAAO;QACH,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,KAAK,EAAE,QAAQ,CAAC,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC;KAC1E;AACL;;"}
1
+ {"version":3,"file":"pinchGesture.js","sources":["../../../Canvas/pinchGesture.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** A pointer position in viewport (client) coordinates. */\nexport interface PointerPosition {\n\n x: number;\n\n y: number;\n}\n\n/** The geometry of a two-finger gesture at one instant. */\nexport interface PinchSnapshot {\n\n /** The midpoint between the two pointers. */\n center: PointerPosition;\n\n /** The distance between the two pointers. */\n distance: number;\n}\n\n/** How a two-finger gesture changed between two snapshots. */\nexport interface PinchChange {\n\n /** How far the midpoint moved — the two-finger pan. */\n panX: number;\n\n panY: number;\n\n /** The multiplicative zoom change (1 = unchanged). */\n scale: number;\n}\n\n/**\n * Builds the pinch geometry from the currently active pointers. The first two are used, so a third\n * finger landing mid-gesture never re-defines the pinch under the user's hands. Returns null with\n * fewer than two pointers — there is no pinch to describe.\n */\nexport function pinchSnapshotOf(pointers: Iterable<PointerPosition>): PinchSnapshot | null {\n const [first, second] = [...pointers];\n if (!first || !second) return null;\n\n return {\n center: { x: (first.x + second.x) / 2, y: (first.y + second.y) / 2 },\n distance: Math.hypot(second.x - first.x, second.y - first.y),\n };\n}\n\n/**\n * The pan and zoom deltas between two snapshots of the same gesture. A degenerate previous distance\n * (both fingers on the same spot) yields no zoom rather than an infinite one.\n */\nexport function pinchChangeBetween(previous: PinchSnapshot, current: PinchSnapshot): PinchChange {\n return {\n panX: current.center.x - previous.center.x,\n panY: current.center.y - previous.center.y,\n scale: previous.distance > 0 ? current.distance / previous.distance : 1,\n };\n}\n"],"names":[],"mappings":"AAsCM,SAAU,eAAe,CAAC,QAAmC,EAAA;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AACrC,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;IAElC,OAAO;AACH,QAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;QACpE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC/D;AACL;AAMM,SAAU,kBAAkB,CAAC,QAAuB,EAAE,OAAsB,EAAA;IAC9E,OAAO;QACH,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,KAAK,EAAE,QAAQ,CAAC,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC;KAC1E;AACL;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"selfSuspendingFrameLoop.js","sources":["../../../Canvas/selfSuspendingFrameLoop.ts"],"sourcesContent":[null],"names":[],"mappings":"AA6BO,MAAM,6BAA6B,GAAG,CACzC,IAA8B,EAC9B,QAAA,GAA2B,CAAC,QAAQ,KAAK,qBAAqB,CAAC,QAAQ,CAAC,EACxE,MAAA,GAAwB,CAAC,MAAM,KAAK,oBAAoB,CAAC,MAAM,CAAC,KACvC;AACzB,IAAA,IAAI,MAA0B;AAE9B,IAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAI;QAC1B,MAAM,GAAG,SAAS;AAClB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;AACX,YAAA,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B;AACJ,IAAA,CAAC;IAED,OAAO;AACH,QAAA,IAAI,SAAS,GAAA;YACT,OAAO,MAAM,KAAK,SAAS;QAC/B,CAAC;QAED,IAAI,GAAA;AACA,YAAA,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC;QAC9B,CAAC;QAED,IAAI,GAAA;AACA,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;gBACtB,MAAM,CAAC,MAAM,CAAC;gBACd,MAAM,GAAG,SAAS;YACtB;QACJ,CAAC;KACJ;AACL;;"}
1
+ {"version":3,"file":"selfSuspendingFrameLoop.js","sources":["../../../Canvas/selfSuspendingFrameLoop.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\ntype FrameScheduler = (callback: (now: number) => void) => number;\ntype FrameCanceler = (handle: number) => void;\n\n/**\n * An animation-frame loop that runs only while its step reports motion left to follow, instead of\n * burning a callback every frame forever on an idle canvas.\n */\nexport interface SelfSuspendingFrameLoop {\n /** Whether a frame is currently scheduled. */\n readonly isRunning: boolean;\n\n /**\n * Starts the loop if it is not already running; a running loop is left alone, so waking is\n * safe to do on every trigger however bursty.\n */\n wake(): void;\n\n /** Cancels the scheduled frame, if any. The loop can be woken again afterwards. */\n stop(): void;\n}\n\n/**\n * Creates a self-suspending animation-frame loop. The step runs once per frame and returns whether\n * another frame is needed; when it returns `false` the loop suspends until the next {@link SelfSuspendingFrameLoop.wake}.\n * The scheduler is injectable so the suspension logic can be specified without a browser.\n */\nexport const createSelfSuspendingFrameLoop = (\n step: (now: number) => boolean,\n schedule: FrameScheduler = (callback) => requestAnimationFrame(callback),\n cancel: FrameCanceler = (handle) => cancelAnimationFrame(handle),\n): SelfSuspendingFrameLoop => {\n let handle: number | undefined;\n\n const frame = (now: number) => {\n handle = undefined;\n if (step(now)) {\n handle = schedule(frame);\n }\n };\n\n return {\n get isRunning(): boolean {\n return handle !== undefined;\n },\n\n wake(): void {\n handle ??= schedule(frame);\n },\n\n stop(): void {\n if (handle !== undefined) {\n cancel(handle);\n handle = undefined;\n }\n },\n };\n};\n"],"names":[],"mappings":"AA6BO,MAAM,6BAA6B,GAAG,CACzC,IAA8B,EAC9B,QAAA,GAA2B,CAAC,QAAQ,KAAK,qBAAqB,CAAC,QAAQ,CAAC,EACxE,MAAA,GAAwB,CAAC,MAAM,KAAK,oBAAoB,CAAC,MAAM,CAAC,KACvC;AACzB,IAAA,IAAI,MAA0B;AAE9B,IAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAI;QAC1B,MAAM,GAAG,SAAS;AAClB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;AACX,YAAA,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B;AACJ,IAAA,CAAC;IAED,OAAO;AACH,QAAA,IAAI,SAAS,GAAA;YACT,OAAO,MAAM,KAAK,SAAS;QAC/B,CAAC;QAED,IAAI,GAAA;AACA,YAAA,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC;QAC9B,CAAC;QAED,IAAI,GAAA;AACA,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;gBACtB,MAAM,CAAC,MAAM,CAAC;gBACd,MAAM,GAAG,SAAS;YACtB;QACJ,CAAC;KACJ;AACL;;"}
@@ -1 +1,2 @@
1
1
  export * from '../../../Chat/Kit/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Canvas/shapes/ChatBubble/index.ts"],"names":[],"mappings":"AASA,cAAc,4BAAmB,CAAC"}
@@ -7,3 +7,4 @@
7
7
  // from this path reachable exactly as before; `../Canvas/index.ts` still re-exports it unchanged.
8
8
  // Do not add new code here — add it to `Source/Chat/Kit` and it flows through this shim.
9
9
  export * from '../../../Chat/Kit/index.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Canvas/shapes/ChatBubble/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,iGAAiG;AACjG,yFAAyF;AACzF,kGAAkG;AAClG,+FAA+F;AAC/F,kGAAkG;AAClG,yFAAyF;AACzF,cAAc,4BAAmB,CAAC","sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n// Compatibility shim. The chat kit that used to live physically under `Canvas/shapes/ChatBubble`\n// is generic and Pixi-free — it never touches Canvas or PivotViewer — so it now lives at\n// `Source/Chat/Kit`, the shared, non-spatial home both the `./Chat` and `./Canvas` subpaths build\n// on. This barrel keeps every symbol the `@cratis/components/Canvas` subpath has ever exported\n// from this path reachable exactly as before; `../Canvas/index.ts` still re-exports it unchanged.\n// Do not add new code here — add it to `Source/Chat/Kit` and it flows through this shim.\nexport * from '../../../Chat/Kit';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Note.js","sources":["../../../../../Canvas/shapes/Note/Note.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Note.js","sources":["../../../../../Canvas/shapes/Note/Note.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type React from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useOptionalMessenger } from '../../../Common/messaging/useOptionalMessenger';\nimport { NoteTextChanged } from './NoteTextChanged';\nimport { whenNoteFontReady } from './noteFont';\nimport { FaPlus } from 'react-icons/fa6';\n\nconst MIN_SIZE = 80;\n// How small the fitted text is allowed to get. Notes live on a canvas that zooms, so text too small to\n// read at 1:1 is still perfectly legible one zoom step in — shrinking is a far better answer than\n// hiding the text behind an affordance, and the floor is set low enough to say so. Only text that will\n// not fit even at this size falls back to the expand affordance.\nconst MIN_FONT_SIZE = 4;\nconst MAX_FONT_SIZE = 120;\nconst PADDING = 12;\nconst LINE_HEIGHT_RATIO = 1.4;\n\n/** Controlled data rendered by {@link Note}. */\nexport interface NoteData {\n /** Stable note identity. */\n id: string;\n /** World-space horizontal position. */\n x: number;\n /** World-space vertical position. */\n y: number;\n /** Note width. */\n width: number;\n /** Note height. */\n height: number;\n /** Editable note text. */\n text: string;\n}\n\ninterface FontFit {\n fontSize: number;\n /** True when the text still does not fit at MIN_FONT_SIZE — the note needs the expand affordance. */\n overflows: boolean;\n}\n\nfunction textFitsAtSize(\n measurer: HTMLDivElement,\n text: string,\n fontSize: number,\n availableWidth: number,\n availableHeight: number,\n): boolean {\n measurer.style.width = `${availableWidth}px`;\n measurer.style.fontSize = `${fontSize}px`;\n measurer.style.lineHeight = `${LINE_HEIGHT_RATIO}`;\n measurer.textContent = text;\n return measurer.scrollHeight <= availableHeight;\n}\n\nfunction findOptimalFontSize(\n measurer: HTMLDivElement,\n text: string,\n width: number,\n height: number,\n): FontFit {\n if (!(text ?? '').trim())\n return {\n fontSize: Math.min(MAX_FONT_SIZE, Math.min(width, height) * 0.4),\n overflows: false,\n };\n\n const availableWidth = width - PADDING * 2;\n const availableHeight = height - PADDING * 2;\n\n let low = MIN_FONT_SIZE;\n let high = MAX_FONT_SIZE;\n\n // Quick check: if the readability floor doesn't fit, stop shrinking and flag the overflow instead.\n if (!textFitsAtSize(measurer, text, low, availableWidth, availableHeight)) {\n return { fontSize: MIN_FONT_SIZE, overflows: true };\n }\n\n // Binary search for the largest fitting font size\n while (high - low > 0.5) {\n const mid = (low + high) / 2;\n if (textFitsAtSize(measurer, text, mid, availableWidth, availableHeight)) {\n low = mid;\n } else {\n high = mid;\n }\n }\n\n return { fontSize: Math.floor(low), overflows: false };\n}\n\nconst HANDLE_KEYS = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'] as const;\ntype HandleKey = (typeof HANDLE_KEYS)[number];\n\nconst HANDLE_POSITIONS: Record<HandleKey, React.CSSProperties> = {\n nw: { top: -4, left: -4 },\n n: { top: -4, left: '50%', transform: 'translateX(-50%)' },\n ne: { top: -4, right: -4 },\n e: { top: '50%', right: -4, transform: 'translateY(-50%)' },\n se: { bottom: -4, right: -4 },\n s: { bottom: -4, left: '50%', transform: 'translateX(-50%)' },\n sw: { bottom: -4, left: -4 },\n w: { top: '50%', left: -4, transform: 'translateY(-50%)' },\n};\n\nconst RESIZE_CURSORS: Record<HandleKey, string> = {\n nw: 'nw-resize',\n n: 'n-resize',\n ne: 'ne-resize',\n e: 'e-resize',\n se: 'se-resize',\n s: 's-resize',\n sw: 'sw-resize',\n w: 'w-resize',\n};\n\n/** Props for a fully controlled movable, resizable, editable Canvas note. */\nexport interface NoteProps {\n /** Current note data. */\n note: NoteData;\n /** Whether selection handles are visible. */\n selected: boolean;\n\n /**\n * Selects this note. `additive` reports that the gesture carried a shift/meta/ctrl modifier, so a\n * board supporting multi-select can extend its selection instead of replacing it.\n */\n onSelect: (id: string, additive: boolean) => void;\n\n /** Reports drag movement. */\n onMove: (id: string, x: number, y: number) => void;\n /** Reports drag completion. */\n onMoveEnd?: (id: string) => void;\n /** Reports resize movement and the resulting bounds. */\n onResize: (id: string, x: number, y: number, width: number, height: number) => void;\n /** Reports resize completion. */\n onResizeEnd?: (id: string) => void;\n /** Reports committed text edits. */\n onTextChange: (id: string, text: string) => void;\n\n /**\n * Reports that the note grew to show all of its text, or shrank back. An expanded note reaches over\n * whatever sits below it, so the host has to raise it above its siblings for the duration — a note\n * renders inside its own stacking context, so it cannot do that for itself.\n */\n onExpandedChange?: (id: string, isExpanded: boolean) => void;\n}\n\n/**\n * A fully controlled movable, resizable, editable Canvas note with automatic font fitting. Text\n * shrinks to fit the note's bounds; when it no longer fits even at the readability floor, a \"see full\n * text\" button grows the note temporarily. Double-click to edit, drag to move, drag handles to resize.\n */\nexport const Note: React.FC<NoteProps> = ({\n note,\n selected,\n onSelect,\n onMove,\n onMoveEnd,\n onResize,\n onResizeEnd,\n onTextChange,\n onExpandedChange,\n}) => {\n // Opt-in messaging: resolves to undefined without an Arc messenger, and the publish below then\n // simply does not happen — the `onTextChange` callback remains the note's contract either way.\n const publish = useOptionalMessenger();\n const noteRef = useRef<HTMLDivElement>(null);\n const measurerRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [isEditing, setIsEditing] = useState(false);\n const [liveText, setLiveText] = useState(note.text);\n const [fontSize, setFontSize] = useState(MAX_FONT_SIZE);\n const [textareaTopPadding, setTextareaTopPadding] = useState(PADDING);\n // True once the text no longer fits even at the readability floor — shows the \"see full text\" button.\n const [isOverflowing, setIsOverflowing] = useState(false);\n // The height the note needs to show every line of its text at the fitted size.\n const [fullTextHeight, setFullTextHeight] = useState(0);\n const [isShowingFullText, setIsShowingFullText] = useState(false);\n // The note face is a webfont, so the first measurement can land against the fallback's metrics.\n // Flipping this re-runs the fit once the real face is in.\n const [isFontReady, setIsFontReady] = useState(false);\n\n useEffect(() => {\n let cancelled = false;\n void whenNoteFontReady().then(() => {\n if (!cancelled) setIsFontReady(true);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n const dragRef = useRef<{\n clientX: number;\n clientY: number;\n startX: number;\n startY: number;\n zoom: number;\n } | null>(null);\n\n const resizeRef = useRef<{\n handle: HandleKey;\n clientX: number;\n clientY: number;\n startX: number;\n startY: number;\n startWidth: number;\n startHeight: number;\n zoom: number;\n } | null>(null);\n\n const readEffectiveZoom = useCallback((): number => {\n if (!noteRef.current) return 1;\n const renderedWidth = noteRef.current.getBoundingClientRect().width;\n return renderedWidth > 0 ? renderedWidth / note.width : 1;\n }, [note.width]);\n\n // ── Move ────────────────────────────────────────────────────────────────\n\n const handlePointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (isEditing) return;\n event.stopPropagation();\n onSelect(note.id, event.shiftKey || event.metaKey || event.ctrlKey);\n dragRef.current = {\n clientX: event.clientX,\n clientY: event.clientY,\n startX: note.x,\n startY: note.y,\n zoom: readEffectiveZoom(),\n };\n event.currentTarget.setPointerCapture(event.pointerId);\n },\n [isEditing, note.id, note.x, note.y, onSelect, readEffectiveZoom],\n );\n\n const handlePointerMove = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (!dragRef.current || !event.buttons) return;\n const { clientX, clientY, startX, startY, zoom } = dragRef.current;\n const deltaX = (event.clientX - clientX) / zoom;\n const deltaY = (event.clientY - clientY) / zoom;\n onMove(note.id, startX + deltaX, startY + deltaY);\n },\n [note.id, onMove],\n );\n\n const handlePointerUp = useCallback(() => {\n if (dragRef.current) {\n dragRef.current = null;\n onMoveEnd?.(note.id);\n }\n }, [note.id, onMoveEnd]);\n\n // ── Resize ──────────────────────────────────────────────────────────────\n\n const handleResizePointerDown = useCallback(\n (handle: HandleKey) => (event: React.PointerEvent<HTMLDivElement>) => {\n event.stopPropagation();\n resizeRef.current = {\n handle,\n clientX: event.clientX,\n clientY: event.clientY,\n startX: note.x,\n startY: note.y,\n startWidth: note.width,\n startHeight: note.height,\n zoom: readEffectiveZoom(),\n };\n event.currentTarget.setPointerCapture(event.pointerId);\n },\n [note.x, note.y, note.width, note.height, readEffectiveZoom],\n );\n\n const handleResizePointerMove = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (!resizeRef.current || !event.buttons) return;\n const {\n handle,\n clientX,\n clientY,\n startX,\n startY,\n startWidth,\n startHeight,\n zoom,\n } = resizeRef.current;\n const deltaX = (event.clientX - clientX) / zoom;\n const deltaY = (event.clientY - clientY) / zoom;\n\n let newX = startX;\n let newY = startY;\n let newWidth = startWidth;\n let newHeight = startHeight;\n\n if (handle === 'e' || handle === 'ne' || handle === 'se') {\n newWidth = Math.max(MIN_SIZE, startWidth + deltaX);\n }\n if (handle === 'w' || handle === 'nw' || handle === 'sw') {\n newWidth = Math.max(MIN_SIZE, startWidth - deltaX);\n newX = startX + startWidth - newWidth;\n }\n if (handle === 's' || handle === 'se' || handle === 'sw') {\n newHeight = Math.max(MIN_SIZE, startHeight + deltaY);\n }\n if (handle === 'n' || handle === 'ne' || handle === 'nw') {\n newHeight = Math.max(MIN_SIZE, startHeight - deltaY);\n newY = startY + startHeight - newHeight;\n }\n\n onResize(note.id, newX, newY, newWidth, newHeight);\n },\n [note.id, onResize],\n );\n\n const handleResizePointerUp = useCallback(() => {\n if (resizeRef.current) {\n resizeRef.current = null;\n onResizeEnd?.(note.id);\n }\n }, [note.id, onResizeEnd]);\n\n // ── Text editing ────────────────────────────────────────────────────────\n\n const handleDoubleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n setLiveText(note.text);\n setIsEditing(true);\n },\n [note.text],\n );\n\n const handleTextareaChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n setLiveText(event.currentTarget.value);\n },\n [],\n );\n\n const handleTextareaBlur = useCallback(\n (event: React.FocusEvent<HTMLTextAreaElement>) => {\n const text = event.currentTarget.value;\n onTextChange(note.id, text);\n // Published at the same commit point as the callback — once per committed edit, never\n // per keystroke — for hosts that listen on the messenger instead of (or besides) props.\n publish?.(new NoteTextChanged(note.id, text));\n setIsEditing(false);\n },\n [note.id, onTextChange, publish],\n );\n\n const handleTextareaKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === 'Escape') {\n setIsEditing(false);\n }\n },\n [],\n );\n\n // Use live text for font sizing when editing, otherwise use committed text\n const displayText = isEditing ? liveText : note.text;\n\n // Measure optimal font size using an off-screen div that mirrors the note's\n // word-wrap behavior. Runs synchronously before paint so there is no flash.\n // Also measures actual text height so the textarea can be vertically centred.\n useLayoutEffect(() => {\n if (!measurerRef.current) return;\n const { fontSize: optimal, overflows } = findOptimalFontSize(\n measurerRef.current,\n displayText,\n note.width,\n note.height,\n );\n setFontSize(optimal);\n setIsOverflowing(overflows);\n\n // After finding the font, read the actual rendered text height to compute\n // vertical padding that centres the text inside the textarea.\n const measurer = measurerRef.current;\n measurer.style.width = `${note.width - PADDING * 2}px`;\n measurer.style.fontSize = `${optimal}px`;\n measurer.style.lineHeight = `${LINE_HEIGHT_RATIO}`;\n measurer.textContent = displayText || '\\u00A0';\n const renderedHeight = measurer.scrollHeight;\n const topPad = Math.max(PADDING, (note.height - renderedHeight) / 2);\n setTextareaTopPadding(topPad);\n // The same measurement answers how tall the note has to grow to show everything.\n setFullTextHeight(renderedHeight + PADDING * 2);\n }, [displayText, note.width, note.height, isFontReady]);\n\n const isExpanded = isShowingFullText && isOverflowing && !isEditing;\n\n // Editing, retyping or resizing the note re-fits the text, and the note may well fit again — the\n // grown state belongs to the text that no longer fits, so it never outlives it.\n useEffect(() => {\n if (!isOverflowing) setIsShowingFullText(false);\n }, [isOverflowing]);\n\n useEffect(() => {\n onExpandedChange?.(note.id, isExpanded);\n }, [isExpanded, note.id, onExpandedChange]);\n\n const handleExpand = useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setIsShowingFullText(true);\n }, []);\n\n // Growing is a look, not a mode: the note falls back to its own size the moment the pointer leaves it.\n const handlePointerLeave = useCallback(() => setIsShowingFullText(false), []);\n\n return (\n <div\n ref={noteRef}\n className={`canvas-note${selected ? ' canvas-note--selected' : ''}${isExpanded ? ' canvas-note--expanded' : ''}`}\n style={{\n width: note.width,\n height: isExpanded ? Math.max(note.height, fullTextHeight) : note.height,\n }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n onPointerLeave={handlePointerLeave}\n onDoubleClick={handleDoubleClick}\n >\n {/* Off-screen measurement div — mirrors text styling for accurate fitting */}\n <div ref={measurerRef} className='canvas-note__measurer' aria-hidden='true' />\n\n {isEditing ? (\n <textarea\n ref={textareaRef}\n className='canvas-note__textarea'\n value={liveText}\n style={{\n fontSize,\n lineHeight: LINE_HEIGHT_RATIO,\n paddingTop: textareaTopPadding,\n paddingBottom: textareaTopPadding,\n }}\n autoFocus\n onChange={handleTextareaChange}\n onBlur={handleTextareaBlur}\n onKeyDown={handleTextareaKeyDown}\n onPointerDown={(event) => event.stopPropagation()}\n />\n ) : (\n <p className='canvas-note__text' style={{ fontSize }}>\n {note.text}\n </p>\n )}\n\n {isOverflowing && !isEditing && !isExpanded && (\n <button\n type='button'\n className='canvas-note__expand'\n aria-label='See full text'\n title='See full text'\n onClick={handleExpand}\n onPointerDown={(event) => event.stopPropagation()}\n >\n <FaPlus aria-hidden='true' />\n </button>\n )}\n\n {/* The handles resize from the note's own height, so they stay off while it is showing more\n than that — dragging one would otherwise snap the note back to its real size first. */}\n {selected &&\n !isExpanded &&\n HANDLE_KEYS.map((handle) => (\n <div\n key={handle}\n className='canvas-note__handle'\n style={{\n ...HANDLE_POSITIONS[handle],\n cursor: RESIZE_CURSORS[handle],\n }}\n onPointerDown={handleResizePointerDown(handle)}\n onPointerMove={handleResizePointerMove}\n onPointerUp={handleResizePointerUp}\n onPointerCancel={handleResizePointerUp}\n />\n ))}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NoteTextChanged.js","sources":["../../../../../Canvas/shapes/Note/NoteTextChanged.ts"],"sourcesContent":[null],"names":[],"mappings":"MAQa,eAAe,CAAA;AAGX,IAAA,MAAA;AAEA,IAAA,IAAA;IAJb,WAAA,CAEa,MAAc,EAEd,IAAY,EAAA;QAFZ,IAAA,CAAA,MAAM,GAAN,MAAM;QAEN,IAAA,CAAA,IAAI,GAAJ,IAAI;IACd;AACN;;"}
1
+ {"version":3,"file":"NoteTextChanged.js","sources":["../../../../../Canvas/shapes/Note/NoteTextChanged.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * Published over the Arc messenger by a {@link Note} when an edit is committed (the editor loses\n * focus) — the same moment the `onTextChange` callback fires, never per keystroke. Carries the full\n * committed text, not a delta.\n */\nexport class NoteTextChanged {\n constructor(\n /** Caller-owned identity of the edited note. */\n readonly noteId: string,\n /** Full text committed when editing ended. */\n readonly text: string,\n ) {}\n}\n"],"names":[],"mappings":"MAQa,eAAe,CAAA;AAGX,IAAA,MAAA;AAEA,IAAA,IAAA;IAJb,WAAA,CAEa,MAAc,EAEd,IAAY,EAAA;QAFZ,IAAA,CAAA,MAAM,GAAN,MAAM;QAEN,IAAA,CAAA,IAAI,GAAJ,IAAI;IACd;AACN;;"}
@@ -1,3 +1,4 @@
1
1
  export { Note } from './Note.js';
2
2
  export type { NoteProps, NoteData } from './Note.js';
3
3
  export { NoteTextChanged } from './NoteTextChanged.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Canvas/shapes/Note/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAQ,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC"}
@@ -2,3 +2,4 @@
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
  export { Note } from './Note.js';
4
4
  export { NoteTextChanged } from './NoteTextChanged.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Canvas/shapes/Note/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAQ,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC","sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nexport { Note } from './Note';\nexport type { NoteProps, NoteData } from './Note';\nexport { NoteTextChanged } from './NoteTextChanged';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"noteFont.js","sources":["../../../../../Canvas/shapes/Note/noteFont.ts"],"sourcesContent":[null],"names":[],"mappings":"AAKA,MAAM,QAAQ,GAAG,qBAAqB;AAEtC,IAAI,KAAK,GAAyB,IAAI;SAUtB,iBAAiB,GAAA;AAC7B,IAAA,IAAI,KAAK;AAAE,QAAA,OAAO,KAAK;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC,KAAK;AAG1E,IAAA,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE;AAC/F,IAAA,OAAO,KAAK;AAChB;;"}
1
+ {"version":3,"file":"noteFont.js","sources":["../../../../../Canvas/shapes/Note/noteFont.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** A specimen of the embedded note face (declared in Note.css) — the size is irrelevant to\n * `FontFaceSet.load`, only the family matters. */\nconst SPECIMEN = '16px \"Patrick Hand\"';\n\nlet ready: Promise<void> | null = null;\n\n/**\n * Resolves once the embedded note font is usable for measurement.\n *\n * The note text is sized by measuring it, and a webfont arrives asynchronously: a measurement taken\n * before it loads uses the fallback face's metrics, so the fitted size is wrong for the face that\n * ends up painting. Notes must re-measure once the real face is in — hence one shared promise for\n * every note on the board rather than a load per note.\n */\nexport function whenNoteFontReady(): Promise<void> {\n if (ready) return ready;\n const fonts = typeof document === 'undefined' ? undefined : document.fonts;\n // A failed/unsupported load is not an error worth surfacing — the fallback face still renders,\n // it just measures against different metrics.\n ready = fonts ? fonts.load(SPECIMEN).then(() => undefined, () => undefined) : Promise.resolve();\n return ready;\n}\n"],"names":[],"mappings":"AAKA,MAAM,QAAQ,GAAG,qBAAqB;AAEtC,IAAI,KAAK,GAAyB,IAAI;SAUtB,iBAAiB,GAAA;AAC7B,IAAA,IAAI,KAAK;AAAE,QAAA,OAAO,KAAK;AACvB,IAAA,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC,KAAK;AAG1E,IAAA,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE;AAC/F,IAAA,OAAO,KAAK;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ItemAddedToRegion.js","sources":["../../../../../Canvas/shapes/Region/ItemAddedToRegion.ts"],"sourcesContent":[null],"names":[],"mappings":"MAUa,iBAAiB,CAAA;AAGb,IAAA,QAAA;AAEA,IAAA,MAAA;IAJb,WAAA,CAEa,QAAgB,EAEhB,MAAc,EAAA;QAFd,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAER,IAAA,CAAA,MAAM,GAAN,MAAM;IAChB;AACN;;"}
1
+ {"version":3,"file":"ItemAddedToRegion.js","sources":["../../../../../Canvas/shapes/Region/ItemAddedToRegion.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * Published over the Arc messenger by a {@link Region} when a sibling `CanvasItem` carrying an `id`\n * newly has its center point within the region's bounds — whether the item moved into the region or\n * the region moved/resized over the item. Purely a notification: the region does not move the item,\n * persist anything, or know what the item is. Overlapping regions may each claim the same item; the\n * host owns resolving exclusivity, and owns whatever \"membership\" means on its board.\n */\nexport class ItemAddedToRegion {\n constructor(\n /** Caller-owned identity of the region that now contains the item. */\n readonly regionId: string,\n /** Caller-owned identity of the item whose center entered the region. */\n readonly itemId: string,\n ) {}\n}\n"],"names":[],"mappings":"MAUa,iBAAiB,CAAA;AAGb,IAAA,QAAA;AAEA,IAAA,MAAA;IAJb,WAAA,CAEa,QAAgB,EAEhB,MAAc,EAAA;QAFd,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAER,IAAA,CAAA,MAAM,GAAN,MAAM;IAChB;AACN;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ItemRemovedFromRegion.js","sources":["../../../../../Canvas/shapes/Region/ItemRemovedFromRegion.ts"],"sourcesContent":[null],"names":[],"mappings":"MASa,qBAAqB,CAAA;AAGjB,IAAA,QAAA;AAEA,IAAA,MAAA;IAJb,WAAA,CAEa,QAAgB,EAEhB,MAAc,EAAA;QAFd,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAER,IAAA,CAAA,MAAM,GAAN,MAAM;IAChB;AACN;;"}
1
+ {"version":3,"file":"ItemRemovedFromRegion.js","sources":["../../../../../Canvas/shapes/Region/ItemRemovedFromRegion.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * Published over the Arc messenger by a {@link Region} when a sibling `CanvasItem` carrying an `id`\n * that was within the region's bounds no longer is — whether the item moved out, the region\n * moved/resized away from it, or the item unmounted. The counterpart of {@link ItemAddedToRegion};\n * the same notification-only boundary applies.\n */\nexport class ItemRemovedFromRegion {\n constructor(\n /** Caller-owned identity of the region that no longer contains the item. */\n readonly regionId: string,\n /** Caller-owned identity of the item whose center left the region. */\n readonly itemId: string,\n ) {}\n}\n"],"names":[],"mappings":"MASa,qBAAqB,CAAA;AAGjB,IAAA,QAAA;AAEA,IAAA,MAAA;IAJb,WAAA,CAEa,QAAgB,EAEhB,MAAc,EAAA;QAFd,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAER,IAAA,CAAA,MAAM,GAAN,MAAM;IAChB;AACN;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Region.js","sources":["../../../../../Canvas/shapes/Region/Region.tsx"],"sourcesContent":[null],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Region.js","sources":["../../../../../Canvas/shapes/Region/Region.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type React from 'react';\nimport {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport { CanvasItemRegistryContext, type CanvasItemRegistryEntry } from '../../Canvas';\nimport { useOptionalMessenger } from '../../../Common/messaging/useOptionalMessenger';\nimport { ItemAddedToRegion } from './ItemAddedToRegion';\nimport { ItemRemovedFromRegion } from './ItemRemovedFromRegion';\nimport { itemsWithinRegion } from './regionContainment';\n\nconst MIN_SIZE = 100;\n\n// Stable fallbacks for a Region rendered without a Canvas item registry above it (or with a\n// registry value predating getSnapshot/subscribe): the store below then reads an unchanging empty\n// map and never notifies, keeping every render on the exact same code path with membership\n// permanently empty. Module-level so their identities never change between renders — a changing\n// subscribe identity would make useSyncExternalStore resubscribe every render.\nconst EMPTY_REGISTRY: ReadonlyMap<string, CanvasItemRegistryEntry> = new Map();\nconst getEmptyRegistry = (): ReadonlyMap<string, CanvasItemRegistryEntry> =>\n EMPTY_REGISTRY;\nconst subscribeToNothing = (): (() => void) => () => {\n /* nothing to unsubscribe */\n};\n\nconst HANDLE_KEYS = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'] as const;\ntype HandleKey = (typeof HANDLE_KEYS)[number];\n\nconst HANDLE_POSITIONS: Record<HandleKey, React.CSSProperties> = {\n nw: { top: -4, left: -4 },\n n: { top: -4, left: '50%', transform: 'translateX(-50%)' },\n ne: { top: -4, right: -4 },\n e: { top: '50%', right: -4, transform: 'translateY(-50%)' },\n se: { bottom: -4, right: -4 },\n s: { bottom: -4, left: '50%', transform: 'translateX(-50%)' },\n sw: { bottom: -4, left: -4 },\n w: { top: '50%', left: -4, transform: 'translateY(-50%)' },\n};\n\nconst RESIZE_CURSORS: Record<HandleKey, string> = {\n nw: 'nw-resize',\n n: 'n-resize',\n ne: 'ne-resize',\n e: 'e-resize',\n se: 'se-resize',\n s: 's-resize',\n sw: 'sw-resize',\n w: 'w-resize',\n};\n\n/** Controlled data rendered by {@link Region}. */\nexport interface RegionData {\n /** Stable region identity. */\n id: string;\n /** World-space horizontal position. */\n x: number;\n /** World-space vertical position. */\n y: number;\n /** Region width. */\n width: number;\n /** Region height. */\n height: number;\n /** Editable region label. */\n name: string;\n}\n\n/** Props for a fully controlled movable, resizable, labeled Canvas region. */\nexport interface RegionProps {\n /** Current region data. */\n region: RegionData;\n /** Whether resize handles are visible. */\n selected: boolean;\n\n /**\n * Selects this region. `additive` reports that the gesture carried a shift/meta/ctrl modifier, so\n * a board supporting multi-select can extend its selection instead of replacing it.\n */\n onSelect: (id: string, additive: boolean) => void;\n\n /** Reports drag movement. */\n onMove: (id: string, x: number, y: number) => void;\n /** Reports drag completion. */\n onMoveEnd?: (id: string) => void;\n /** Reports resize movement and resulting bounds. */\n onResize: (id: string, x: number, y: number, width: number, height: number) => void;\n /** Reports resize completion. */\n onResizeEnd?: (id: string) => void;\n /** Reports committed label edits. */\n onNameChange: (id: string, name: string) => void;\n\n /**\n * Visual nesting only — rendered inside the region's own coordinate space (its top-left corner) so\n * a host that also places other shapes at region-relative coordinates lines them up correctly.\n * Rendering something here does not make it a \"member\": the region detects containment against\n * sibling `CanvasItem`s that carry an `id` and *reports* it over the Arc messenger (see\n * {@link ItemAddedToRegion}/{@link ItemRemovedFromRegion}), but it never moves members, persists\n * nothing, and knows nothing about item types — deciding what membership means, storing it, and\n * moving members along with the region is board-level orchestration left entirely to the host.\n */\n children?: React.ReactNode;\n}\n\n/**\n * A resizable, draggable, labeled box a host can place other shapes inside of — the generic shell\n * behind a \"region\" or \"group\" affordance on a board. Presentational and fully controlled: like\n * {@link Note}, it owns no position/size/name state of its own and reads `region` fresh every render,\n * reporting every change through callbacks instead of committing anything locally. A host that is slow\n * to feed a new `region` back after a callback will see the box spring back to its last known value —\n * the same trade-off `Note` makes for its own drag/resize/rename.\n *\n * Opt-in membership reporting: when an Arc messenger is resolvable, the region watches the Canvas\n * item registry and publishes {@link ItemAddedToRegion}/{@link ItemRemovedFromRegion} whenever a\n * sibling `CanvasItem` carrying an `id` gains or loses containment (by center point) — including\n * when the region itself is moved or resized over items. By convention the `CanvasItem` wrapping\n * this region is given `id={region.id}`, which is how the region recognizes and excludes itself.\n * Without an `ArcContext.Provider` (or with items that carry no `id`) all of this is silently inert.\n */\nexport const Region = ({\n region,\n selected,\n onSelect,\n onMove,\n onMoveEnd,\n onResize,\n onResizeEnd,\n onNameChange,\n children,\n}: RegionProps) => {\n const [isEditing, setIsEditing] = useState(false);\n\n const regionRef = useRef<HTMLDivElement>(null);\n const titleBarRef = useRef<HTMLDivElement>(null);\n const clickedTitleBarRef = useRef(false);\n\n // ── Membership reporting ────────────────────────────────────────────────\n\n const registry = useContext(CanvasItemRegistryContext);\n const publish = useOptionalMessenger();\n\n // The registry's stable-reference snapshot: its identity only changes when content actually\n // changed, so this re-renders exactly once per register/unregister/bounds-update. Bounds\n // updates can arrive per-frame during a drag — acceptable, since the diff below only publishes\n // when membership itself changed. The third argument keeps the hook safe under server\n // rendering, where there is nothing to subscribe to.\n const registrySnapshot = useSyncExternalStore(\n registry?.subscribe ?? subscribeToNothing,\n registry?.getSnapshot ?? getEmptyRegistry,\n getEmptyRegistry,\n );\n\n // Membership as of the last published state. A ref, not state: it is bookkeeping for diffing,\n // and updating it must not itself cause a render.\n const membershipRef = useRef<ReadonlySet<string>>(new Set());\n\n useEffect(() => {\n // No resolvable messenger means the whole mechanism is opted out: no containment math, no\n // diffing, nothing published — identical to the component's behavior before it existed.\n if (!publish) return;\n\n const within = itemsWithinRegion(\n { x: region.x, y: region.y, width: region.width, height: region.height },\n registrySnapshot,\n region.id,\n );\n const current = new Set(within);\n const previous = membershipRef.current;\n current.forEach((itemId) => {\n if (!previous.has(itemId)) publish(new ItemAddedToRegion(region.id, itemId));\n });\n previous.forEach((itemId) => {\n if (!current.has(itemId))\n publish(new ItemRemovedFromRegion(region.id, itemId));\n });\n membershipRef.current = current;\n }, [\n publish,\n registrySnapshot,\n region.id,\n region.x,\n region.y,\n region.width,\n region.height,\n ]);\n\n const dragRef = useRef<{\n clientX: number;\n clientY: number;\n startX: number;\n startY: number;\n zoom: number;\n } | null>(null);\n\n const resizeRef = useRef<{\n handle: HandleKey;\n clientX: number;\n clientY: number;\n startX: number;\n startY: number;\n startWidth: number;\n startHeight: number;\n zoom: number;\n } | null>(null);\n\n const readEffectiveZoom = useCallback((): number => {\n if (!regionRef.current) return 1;\n const renderedWidth = regionRef.current.getBoundingClientRect().width;\n return renderedWidth > 0 ? renderedWidth / region.width : 1;\n }, [region.width]);\n\n // ── Move ────────────────────────────────────────────────────────────────\n\n // Only the title bar is a drag handle. A press anywhere on the region's body is deliberately left\n // to bubble up to the host: a drag from there is free to become a rubber-band selection instead, and\n // a plain click can select the region itself — a region is a backdrop you can both sweep a\n // selection across and click to select, not a surface that swallows the gesture.\n const handlePointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (isEditing) return;\n clickedTitleBarRef.current =\n titleBarRef.current?.contains(event.target as Node) ?? false;\n if (!clickedTitleBarRef.current) return;\n event.stopPropagation();\n onSelect(region.id, event.shiftKey || event.metaKey || event.ctrlKey);\n dragRef.current = {\n clientX: event.clientX,\n clientY: event.clientY,\n startX: region.x,\n startY: region.y,\n zoom: readEffectiveZoom(),\n };\n event.currentTarget.setPointerCapture(event.pointerId);\n },\n [isEditing, region.id, region.x, region.y, onSelect, readEffectiveZoom],\n );\n\n const handlePointerMove = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (!dragRef.current || !event.buttons) return;\n const { clientX, clientY, startX, startY, zoom } = dragRef.current;\n const deltaX = (event.clientX - clientX) / zoom;\n const deltaY = (event.clientY - clientY) / zoom;\n onMove(region.id, startX + deltaX, startY + deltaY);\n },\n [region.id, onMove],\n );\n\n const handlePointerUp = useCallback(() => {\n if (dragRef.current) {\n dragRef.current = null;\n onMoveEnd?.(region.id);\n }\n }, [region.id, onMoveEnd]);\n\n // ── Resize ──────────────────────────────────────────────────────────────\n\n const handleResizePointerDown = useCallback(\n (handle: HandleKey) => (event: React.PointerEvent<HTMLDivElement>) => {\n clickedTitleBarRef.current = false;\n event.stopPropagation();\n resizeRef.current = {\n handle,\n clientX: event.clientX,\n clientY: event.clientY,\n startX: region.x,\n startY: region.y,\n startWidth: region.width,\n startHeight: region.height,\n zoom: readEffectiveZoom(),\n };\n event.currentTarget.setPointerCapture(event.pointerId);\n },\n [region.x, region.y, region.width, region.height, readEffectiveZoom],\n );\n\n const handleResizePointerMove = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (!resizeRef.current || !event.buttons) return;\n const {\n handle,\n clientX,\n clientY,\n startX,\n startY,\n startWidth,\n startHeight,\n zoom,\n } = resizeRef.current;\n const deltaX = (event.clientX - clientX) / zoom;\n const deltaY = (event.clientY - clientY) / zoom;\n\n let newX = startX;\n let newY = startY;\n let newWidth = startWidth;\n let newHeight = startHeight;\n\n if (handle === 'e' || handle === 'ne' || handle === 'se') {\n newWidth = Math.max(MIN_SIZE, startWidth + deltaX);\n }\n if (handle === 'w' || handle === 'nw' || handle === 'sw') {\n newWidth = Math.max(MIN_SIZE, startWidth - deltaX);\n newX = startX + startWidth - newWidth;\n }\n if (handle === 's' || handle === 'se' || handle === 'sw') {\n newHeight = Math.max(MIN_SIZE, startHeight + deltaY);\n }\n if (handle === 'n' || handle === 'ne' || handle === 'nw') {\n newHeight = Math.max(MIN_SIZE, startHeight - deltaY);\n newY = startY + startHeight - newHeight;\n }\n\n onResize(region.id, newX, newY, newWidth, newHeight);\n },\n [region.id, onResize],\n );\n\n const handleResizePointerUp = useCallback(() => {\n if (resizeRef.current) {\n resizeRef.current = null;\n onResizeEnd?.(region.id);\n }\n }, [region.id, onResizeEnd]);\n\n // ── Rename ──────────────────────────────────────────────────────────────\n\n const handleDoubleClick = useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n if (!clickedTitleBarRef.current) return;\n event.stopPropagation();\n setIsEditing(true);\n }, []);\n\n const commitRename = useCallback(\n (newName: string) => {\n setIsEditing(false);\n const trimmed = newName.trim();\n if (trimmed && trimmed !== region.name) onNameChange(region.id, trimmed);\n },\n [region.id, region.name, onNameChange],\n );\n\n const handleInputBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) =>\n commitRename(event.currentTarget.value),\n [commitRename],\n );\n\n const handleInputKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') commitRename(event.currentTarget.value);\n else if (event.key === 'Escape') setIsEditing(false);\n },\n [commitRename],\n );\n\n return (\n <>\n <div\n ref={regionRef}\n className={`canvas-region${selected ? ' canvas-region--selected' : ''}`}\n style={{ width: region.width, height: region.height }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n onDoubleClick={handleDoubleClick}\n >\n <div ref={titleBarRef} className='canvas-region__title-bar'>\n {isEditing ? (\n <input\n className='canvas-region__name-input'\n type='text'\n defaultValue={region.name}\n autoFocus\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n onPointerDown={(event) => event.stopPropagation()}\n />\n ) : (\n <span className='canvas-region__name'>{region.name}</span>\n )}\n </div>\n\n {selected &&\n HANDLE_KEYS.map((handle) => (\n <div\n key={handle}\n className='canvas-region__handle'\n style={{\n ...HANDLE_POSITIONS[handle],\n cursor: RESIZE_CURSORS[handle],\n }}\n onPointerDown={handleResizePointerDown(handle)}\n onPointerMove={handleResizePointerMove}\n onPointerUp={handleResizePointerUp}\n onPointerCancel={handleResizePointerUp}\n />\n ))}\n </div>\n {/* Member items are positioned relative to the region's top-left (region.x/region.y). They\n live outside the bordered box so the region's border does not offset their coordinate\n origin — otherwise items would jump by the border width when moved into or out of a\n region. */}\n <div className='canvas-region__items'>{children}</div>\n </>\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -4,3 +4,4 @@ export { ItemAddedToRegion } from './ItemAddedToRegion.js';
4
4
  export { ItemRemovedFromRegion } from './ItemRemovedFromRegion.js';
5
5
  export { itemsWithinRegion } from './regionContainment.js';
6
6
  export type { RegionContainmentBounds } from './regionContainment.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Canvas/shapes/Region/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAU,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAqB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAqB,CAAC"}
@@ -4,3 +4,4 @@ export { Region } from './Region.js';
4
4
  export { ItemAddedToRegion } from './ItemAddedToRegion.js';
5
5
  export { ItemRemovedFromRegion } from './ItemRemovedFromRegion.js';
6
6
  export { itemsWithinRegion } from './regionContainment.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Canvas/shapes/Region/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,MAAM,EAAE,MAAM,aAAU,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAqB,CAAC","sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nexport { Region } from './Region';\nexport type { RegionProps, RegionData } from './Region';\nexport { ItemAddedToRegion } from './ItemAddedToRegion';\nexport { ItemRemovedFromRegion } from './ItemRemovedFromRegion';\nexport { itemsWithinRegion } from './regionContainment';\nexport type { RegionContainmentBounds } from './regionContainment';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"regionContainment.js","sources":["../../../../../Canvas/shapes/Region/regionContainment.ts"],"sourcesContent":[null],"names":[],"mappings":"SAmDgB,iBAAiB,CAC7B,YAAqC,EACrC,KAAkD,EAClD,SAAkB,EAAA;AAElB,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC;AAC3B,IAAA,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM;IAEnD,MAAM,MAAM,GAAa,EAAE;IAC3B,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE;AAC9B,QAAA,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS;YAAE;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AAC5C,QAAA,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,IAAI,GAAG,IAAI,OAAO,IAAI,MAAM,EAAE;AAC5E,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB;IACJ;AACA,IAAA,OAAO,MAAM;AACjB;;"}
1
+ {"version":3,"file":"regionContainment.js","sources":["../../../../../Canvas/shapes/Region/regionContainment.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * An axis-aligned rectangle in world space, as the Canvas item registry reports it. Deliberately\n * structural (and deliberately not importing the registry's own entry type) so this module stays a\n * pure, dependency-free function usable on any `{x, y, width, height}` shape.\n */\nexport interface RegionContainmentBounds {\n /** The rectangle's left edge in world space. */\n x: number;\n\n /** The rectangle's top edge in world space. */\n y: number;\n\n /** The rectangle's width in world-space units. */\n width: number;\n\n /** The rectangle's height in world-space units. */\n height: number;\n\n /**\n * Marks this entry as registered under an internally generated id rather than one the caller\n * chose — the Canvas item registry sets this for a `CanvasItem` rendered without its optional\n * `id` prop. `itemsWithinRegion` never reports an anonymous entry as a region member, even\n * though it still passed containment geometrically; the entry remains available to every other\n * registry consumer (the minimap, fit-to-content) since exclusion is scoped to region membership\n * only. Optional and defaults to falsy (reported like any other entry) when absent, so a pure\n * `{x, y, width, height}` map whose keys are already real ids — the shape every caller used before\n * this field existed — keeps its existing behavior unchanged.\n */\n anonymous?: boolean;\n}\n\n/**\n * Determines which items lie within a region, by center point: an item is \"within\" when its center\n * point lies inside the region's bounds. The test is inclusive on all four edges — a center sitting\n * exactly on the region's edge counts as within, so an item nudged flush against the boundary reads\n * as inside rather than flickering out on the last pixel. An entry whose bounds carry\n * `anonymous: true` is never reported, regardless of where its center sits — it is still iterated (a\n * caller counting candidates sees it), just never included in the result.\n * @param regionBounds The region's world-space bounds.\n * @param items The candidate items as `[id, bounds]` pairs — a `ReadonlyMap`'s entries iterate as\n * exactly this shape, so a Canvas item registry snapshot can be passed straight in. Bounds without an\n * `anonymous` field behave exactly as they always have.\n * @param excludeId An id never to report, no matter where it sits — a region passes its own id here\n * so the `CanvasItem` the region itself is wrapped in (registered under the same id by convention)\n * is not reported as its own member.\n * @returns The ids of the non-anonymous items whose center lies within the region, in the order the\n * items iterate.\n */\nexport function itemsWithinRegion(\n regionBounds: RegionContainmentBounds,\n items: Iterable<[string, RegionContainmentBounds]>,\n excludeId?: string,\n): string[] {\n const left = regionBounds.x;\n const top = regionBounds.y;\n const right = regionBounds.x + regionBounds.width;\n const bottom = regionBounds.y + regionBounds.height;\n\n const result: string[] = [];\n for (const [id, bounds] of items) {\n if (id === excludeId || bounds.anonymous) continue;\n const centerX = bounds.x + bounds.width / 2;\n const centerY = bounds.y + bounds.height / 2;\n if (centerX >= left && centerX <= right && centerY >= top && centerY <= bottom) {\n result.push(id);\n }\n }\n return result;\n}\n"],"names":[],"mappings":"SAmDgB,iBAAiB,CAC7B,YAAqC,EACrC,KAAkD,EAClD,SAAkB,EAAA;AAElB,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC;AAC3B,IAAA,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM;IAEnD,MAAM,MAAM,GAAa,EAAE;IAC3B,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE;AAC9B,QAAA,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS;YAAE;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AAC5C,QAAA,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,IAAI,GAAG,IAAI,OAAO,IAAI,MAAM,EAAE;AAC5E,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB;IACJ;AACA,IAAA,OAAO,MAAM;AACjB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDragSelectionGuard.js","sources":["../../../Canvas/useDragSelectionGuard.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAcM,SAAU,qBAAqB,CAAC,YAAiD,EAAA;IACnF,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,IAAI,MAAM,GAAG,KAAK;QAClB,IAAI,kBAAkB,GAAG,EAAE;QAC3B,IAAI,wBAAwB,GAAG,EAAE;QAEjC,MAAM,iBAAiB,GAAG,CAAC,KAAY,KAAK,KAAK,CAAC,cAAc,EAAE;QAElE,MAAM,GAAG,GAAG,MAAK;AACb,YAAA,IAAI,CAAC,MAAM;gBAAE;YACb,MAAM,GAAG,KAAK;YACd,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,kBAAkB;YACnD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,wBAAwB;AACnE,QAAA,CAAC;AAED,QAAA,MAAM,KAAK,GAAG,CAAC,KAAmB,KAAI;AAClC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;AACjD,YAAA,IAAI,MAAM,EAAE,OAAO,CAAC,2CAA2C,CAAC;gBAAE;AAClE,YAAA,IAAI,MAAM;gBAAE;YACZ,MAAM,GAAG,IAAI;YACb,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;YACnD,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC/D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;YACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM;AAC7C,YAAA,MAAM,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE;YACxC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC;AACrE,QAAA,CAAC;AAED,QAAA,MAAM,aAAa,GAAG,MAAM,GAAG,EAAE;QAEjC,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC;QACtD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC;QAC3D,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC;AAC/D,QAAA,OAAO,MAAK;YACR,SAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC;YACzD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC;YAC9D,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC;AAClE,YAAA,GAAG,EAAE;AACT,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AACtB;;"}
1
+ {"version":3,"file":"useDragSelectionGuard.js","sources":["../../../Canvas/useDragSelectionGuard.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect } from 'react';\n\n/**\n * Suppresses native text selection for the duration of any pointer drag that starts inside the\n * given container. The `user-select: none` rules on the boards are not enough in Safari — it still\n * starts a selection on mousedown and extends it into chrome outside the board (top bar, controls,\n * dialogs) as the drag sweeps over it. While a drag is live this guard cancels `selectstart` at the\n * document level, clears any existing selection, and turns off selection on `body` (with the\n * `-webkit-` form Safari honors). Drags starting in text inputs keep native selection behavior.\n * @param containerRef The container whose pointer drags should suppress selection.\n */\nexport function useDragSelectionGuard(containerRef: React.RefObject<HTMLElement | null>) {\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n let active = false;\n let previousUserSelect = '';\n let previousWebkitUserSelect = '';\n\n const suppressSelection = (event: Event) => event.preventDefault();\n\n const end = () => {\n if (!active) return;\n active = false;\n document.removeEventListener('selectstart', suppressSelection, true);\n document.body.style.userSelect = previousUserSelect;\n document.body.style.webkitUserSelect = previousWebkitUserSelect;\n };\n\n const begin = (event: PointerEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest('textarea, input, [contenteditable=\"true\"]')) return;\n if (active) return;\n active = true;\n previousUserSelect = document.body.style.userSelect;\n previousWebkitUserSelect = document.body.style.webkitUserSelect;\n document.body.style.userSelect = 'none';\n document.body.style.webkitUserSelect = 'none';\n window.getSelection()?.removeAllRanges();\n document.addEventListener('selectstart', suppressSelection, true);\n };\n\n const handleRelease = () => end();\n\n container.addEventListener('pointerdown', begin, true);\n document.addEventListener('pointerup', handleRelease, true);\n document.addEventListener('pointercancel', handleRelease, true);\n return () => {\n container.removeEventListener('pointerdown', begin, true);\n document.removeEventListener('pointerup', handleRelease, true);\n document.removeEventListener('pointercancel', handleRelease, true);\n end();\n };\n }, [containerRef]);\n}\n"],"names":[],"mappings":";;AAcM,SAAU,qBAAqB,CAAC,YAAiD,EAAA;IACnF,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,IAAI,MAAM,GAAG,KAAK;QAClB,IAAI,kBAAkB,GAAG,EAAE;QAC3B,IAAI,wBAAwB,GAAG,EAAE;QAEjC,MAAM,iBAAiB,GAAG,CAAC,KAAY,KAAK,KAAK,CAAC,cAAc,EAAE;QAElE,MAAM,GAAG,GAAG,MAAK;AACb,YAAA,IAAI,CAAC,MAAM;gBAAE;YACb,MAAM,GAAG,KAAK;YACd,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,kBAAkB;YACnD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,wBAAwB;AACnE,QAAA,CAAC;AAED,QAAA,MAAM,KAAK,GAAG,CAAC,KAAmB,KAAI;AAClC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;AACjD,YAAA,IAAI,MAAM,EAAE,OAAO,CAAC,2CAA2C,CAAC;gBAAE;AAClE,YAAA,IAAI,MAAM;gBAAE;YACZ,MAAM,GAAG,IAAI;YACb,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;YACnD,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC/D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;YACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM;AAC7C,YAAA,MAAM,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE;YACxC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC;AACrE,QAAA,CAAC;AAED,QAAA,MAAM,aAAa,GAAG,MAAM,GAAG,EAAE;QAEjC,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC;QACtD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC;QAC3D,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC;AAC/D,QAAA,OAAO,MAAK;YACR,SAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC;YACzD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC;YAC9D,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC;AAClE,YAAA,GAAG,EAAE;AACT,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AACtB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"zoomMechanism.js","sources":["../../../Canvas/zoomMechanism.ts"],"sourcesContent":[null],"names":[],"mappings":"AASA,MAAM,sBAAsB,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC;AAGxF,MAAM,yBAAyB,GAAG;SAoBzB,gBAAgB,CAAC,IAAY,EAAE,eAAwB,EAAE,mBAA4B,EAAA;IACjG,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,mBAAmB;AAC/D;AAaM,SAAU,cAAc,CAAC,OAAoB,EAAE,IAAY,EAAE,eAAe,GAAG,KAAK,EAAA;IACtF,IAAI,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,sBAAsB,CAAC,EAAE;AACjE,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;AAC5B,QAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE;QAClC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,EAAE;IAClC;SAAO;AACH,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AACvB,QAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK;QACrC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,MAAA,EAAS,IAAI,GAAG;IAC9C;AACJ;;"}
1
+ {"version":3,"file":"zoomMechanism.js","sources":["../../../Canvas/zoomMechanism.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * Whether this device can receive multi-touch gestures (pinch/pan) — true for iPad and other touchscreen\n * devices, false for a mouse/trackpad-only machine. `navigator.userAgent` can no longer reliably tell an\n * iPad from a Mac (iPadOS has reported a desktop Safari user agent since iPadOS 13), so capability\n * detection is used instead. Read once at module load — touch capability cannot change mid-session.\n */\nconst IS_MULTI_TOUCH_CAPABLE = typeof navigator !== 'undefined' && navigator.maxTouchPoints > 1;\n\n/** The resolved multi-touch capability of the current device — see {@link shouldUseCssZoom}. */\nexport const isMultiTouchCapableDevice = IS_MULTI_TOUCH_CAPABLE;\n\n/**\n * Decides whether the zoom layer should use crisp CSS `zoom` (re-lays-out and re-rasterizes at the\n * effective resolution — sharp when upscaling) or GPU-composited `transform: scale()` (always correct,\n * marginally softer when upscaling) for a given zoom level and gesture state.\n *\n * Safari on iPadOS has a long-standing, reproducible bug where CSS `zoom` miscalculates descendant\n * `font-size` once a pinch/pan gesture settles: card titles render far smaller than the zoom level\n * implies even though the surrounding box layout scales correctly\n * (see https://developer.apple.com/forums/thread/126189). `transform: scale()` does not share this bug —\n * its scaling is a well-defined GPU composite, not a WebKit relayout — so multi-touch-capable devices skip\n * the crisp-zoom optimization above 100% entirely and always use `transform: scale()`. That is a safe,\n * universal trade (marginally softer upscaled text) for guaranteed-correct font sizing on the affected\n * platform, and it also spares those devices the \"re-lays-out the whole board\" cost CSS `zoom` carries —\n * not a pure downgrade.\n *\n * `isMultiTouchCapable` is a parameter (rather than read internally) so this decision stays a pure\n * function specs can exercise without touching `navigator`.\n */\nexport function shouldUseCssZoom(zoom: number, preferTransform: boolean, isMultiTouchCapable: boolean): boolean {\n return zoom > 1 && !preferTransform && !isMultiTouchCapable;\n}\n\n/**\n * Applies the board zoom to the inner layer using the hybrid mechanism decided by {@link shouldUseCssZoom}.\n * Also used to compute the initial inline style so the first paint already matches, avoiding a flash\n * before the first imperative apply.\n *\n * While a zoom gesture is in motion (`preferTransform`), `transform: scale()` is used for the WHOLE range:\n * CSS `zoom` re-lays-out the entire mounted board on every step (and resizes every observed card, firing\n * the connection ResizeObservers), which is what made zooming in jerky while panning stayed smooth. The\n * raster-scaled softness above 100% only lasts while the gesture is moving — the settle timer re-applies\n * the crisp CSS `zoom` the moment it stops, except on multi-touch-capable devices, which never do.\n */\nexport function applyZoomLayer(element: HTMLElement, zoom: number, preferTransform = false): void {\n if (shouldUseCssZoom(zoom, preferTransform, IS_MULTI_TOUCH_CAPABLE)) {\n element.style.transform = '';\n element.style.transformOrigin = '';\n element.style.zoom = `${zoom}`;\n } else {\n element.style.zoom = '';\n element.style.transformOrigin = '0 0';\n element.style.transform = `scale(${zoom})`;\n }\n}\n"],"names":[],"mappings":"AASA,MAAM,sBAAsB,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC;AAGxF,MAAM,yBAAyB,GAAG;SAoBzB,gBAAgB,CAAC,IAAY,EAAE,eAAwB,EAAE,mBAA4B,EAAA;IACjG,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,mBAAmB;AAC/D;AAaM,SAAU,cAAc,CAAC,OAAoB,EAAE,IAAY,EAAE,eAAe,GAAG,KAAK,EAAA;IACtF,IAAI,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,sBAAsB,CAAC,EAAE;AACjE,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;AAC5B,QAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE;QAClC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,EAAE;IAClC;SAAO;AACH,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AACvB,QAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK;QACrC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,MAAA,EAAS,IAAI,GAAG;IAC9C;AACJ;;"}
@@ -17,3 +17,4 @@ export interface ChatAuthor {
17
17
  /** A value that changes when the avatar changes, used to cache-bust the image URL. */
18
18
  avatarVersion?: number;
19
19
  }
20
+ //# sourceMappingURL=ChatAuthor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatAuthor.d.ts","sourceRoot":"","sources":["../../../Chat/ChatAuthor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACvB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,4FAA4F;IAC5F,IAAI,EAAE,cAAc,CAAC;IAErB,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatAuthor.js","sourceRoot":"","sources":["../../../Chat/ChatAuthor.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
1
+ {"version":3,"file":"ChatAuthor.js","sourceRoot":"","sources":["../../../Chat/ChatAuthor.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG","sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { ChatAuthorKind } from './Kit/ChatAuthorKind';\n\n/**\n * What it takes to render whoever wrote something — resolved by the host from an author id at\n * render time. Messages and topics deliberately carry only the identifier; names and avatars\n * live with the host's people and agents, so they stay current when someone is renamed or gets\n * a new picture.\n */\nexport interface ChatAuthor {\n /** The display name. */\n name: string;\n\n /** One or two initials shown when no avatar image exists. Derived from {@link name} when unset. */\n initials?: string;\n\n /** Whether an avatar image is stored for them. Defaults to false. */\n hasAvatar?: boolean;\n\n /** Whether this is a person or an agent, which decides where the avatar is fetched from. */\n kind: ChatAuthorKind;\n\n /** A value that changes when the avatar changes, used to cache-bust the image URL. */\n avatarVersion?: number;\n}\n"]}
@@ -112,3 +112,4 @@ export interface ChatConversationProps<TMessage extends ChatMessage = ChatMessag
112
112
  * backend behind it. Mentions and the emoji picker come along through the composer.
113
113
  */
114
114
  export declare const ChatConversation: <TMessage extends ChatMessage = ChatMessage>({ messages, status, onSendMessage, authorOf, renderAvatar, renderAuthorName, actions, mentionCandidates, resolveMentionCandidates, typingAuthors, quickReply, buildAvatarUrl, autoFocus, labels, className, }: ChatConversationProps<TMessage>) => import("react").JSX.Element;
115
+ //# sourceMappingURL=ChatConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatConversation.d.ts","sourceRoot":"","sources":["../../../Chat/ChatConversation.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatConversation.js","sources":["../../../Chat/ChatConversation.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ChatConversation.js","sources":["../../../Chat/ChatConversation.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useEffect, useMemo, useRef, type ReactNode } from 'react';\nimport { PersonAvatarCircle, type BuildAvatarUrlParams } from './Kit/Avatar';\nimport { ChatAuthorKind } from './Kit/ChatAuthorKind';\nimport {\n ChatComposer,\n type ChatComposerHandle,\n type ChatComposerLabels,\n} from './Kit/ChatComposer';\nimport type { ChatTypingAuthor } from './Kit/ChatTypingAuthor';\nimport type { MentionCandidate } from './Kit/Mentions';\nimport { TypingIndicator } from './Kit/TypingIndicator';\nimport type { ChatAuthor } from './ChatAuthor';\nimport { chatIdentifierString, type ChatIdentifier } from './ChatIdentifier';\nimport type { ChatMention } from './ChatMention';\nimport type { ChatMessage } from './ChatMessage';\nimport { ChatStatus } from './ChatStatus';\nimport type { ChatMessageAction } from './ChatMessageAction';\nimport { ChatMessageBody } from './ChatMessageBody';\nimport { relativeTimestamp, type RelativeTimestampLabels } from './relativeTimestamp';\n\nconst ReplyIcon = () => (\n <svg\n width='14'\n height='14'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2.5'\n aria-hidden='true'\n >\n <polyline points='9 17 4 12 9 7' />\n <path d='M4 12h10a6 6 0 0 1 6 6v1' />\n </svg>\n);\n\n/** Overrides for every label the {@link ChatConversation} renders. Any field left unset falls\n * back to a literal English default — this library ships no i18n mechanism of its own, so a host\n * that localizes passes its own translated strings through here. */\nexport interface ChatConversationLabels {\n /** Shown while loading without messages. Defaults to `'Loading messages…'`. */\n loading?: string;\n\n /** Shown when loading messages fails, alongside any existing messages. Defaults to `'Could not load messages.'`. */\n failed?: string;\n\n /** Shown when access is denied; replaces any existing messages. Defaults to `'You are not authorized to view these messages.'`. */\n unauthorized?: string;\n\n /** Shown when there are no messages yet. Defaults to `'No messages yet. Say hello!'`. */\n empty?: string;\n\n /** One author typing. `{name}` is substituted. Defaults to `'{name} is typing'`. */\n typing?: string;\n\n /** Two authors typing. `{first}`/`{second}` are substituted. Defaults to `'{first} and {second} are typing'`. */\n typingTwo?: string;\n\n /** Three or more authors typing. Defaults to `'Several people are typing'`. */\n typingSeveral?: string;\n\n /** Tooltip/accessible label for the quick-reply button. `{name}` is substituted. Defaults to `'Reply to {name}'`. */\n quickReplyTo?: string;\n\n /** Overrides for the relative timestamps next to messages. */\n timestamps?: RelativeTimestampLabels;\n\n /** Labels forwarded to the composer. */\n composer?: ChatComposerLabels;\n}\n\n/**\n * Props for {@link ChatConversation}.\n * @typeParam TMessage The host's message type — anything extending {@link ChatMessage}.\n */\nexport interface ChatConversationProps<TMessage extends ChatMessage = ChatMessage> {\n /**\n * The messages of the conversation, rendered in the order given. Hand this the array a live\n * (observable) query delivers and the conversation re-renders as it changes.\n */\n messages: TMessage[];\n\n /** Query display state. Defaults to {@link ChatStatus.Ready}; existing messages remain visible on loading or failure, and unauthorized disables the composer. */\n status?: ChatStatus;\n\n /**\n * Invoked when a message is sent, with the trimmed body and who it mentions. Everything else\n * about persisting the message is the host's business.\n * @param body The message text, mentions written into it as plain `@Name`.\n * @param mentions Who the body mentions.\n */\n onSendMessage: (body: string, mentions: ChatMention[]) => void;\n\n /**\n * Resolves an author id into what it takes to render them — name, kind, whether an avatar\n * image exists. Messages deliberately carry only the id; this is where the rest comes from.\n * Omit to fall back to rendering the id itself as the name.\n * @param authorId The identifier of the author to resolve.\n * @returns The author.\n */\n authorOf?: (authorId: ChatIdentifier) => ChatAuthor;\n\n /**\n * Renders the avatar for an author, replacing the built-in initials circle entirely.\n * @param authorId The identifier of the author.\n * @param author The resolved author, as {@link authorOf} answered.\n * @returns What to render.\n */\n renderAvatar?: (authorId: ChatIdentifier, author: ChatAuthor) => ReactNode;\n\n /**\n * Renders the display name for an author, replacing the built-in name text entirely.\n * @param authorId The identifier of the author.\n * @param author The resolved author, as {@link authorOf} answered.\n * @returns What to render.\n */\n renderAuthorName?: (authorId: ChatIdentifier, author: ChatAuthor) => ReactNode;\n\n /** The host's own actions, offered as buttons on every message each is available for. */\n actions?: ChatMessageAction<TMessage>[];\n\n /** Everyone who can be mentioned, when the host already holds the list. Omit (together with\n * {@link resolveMentionCandidates}) to turn mentions off. */\n mentionCandidates?: MentionCandidate[];\n\n /**\n * Resolves who can be mentioned as the person types, invoked with what has been typed after\n * the `@`. May answer synchronously or with a promise.\n * @param query What has been typed after the `@`.\n * @returns The candidates matching the query.\n */\n resolveMentionCandidates?: (\n query: string,\n ) => MentionCandidate[] | Promise<MentionCandidate[]>;\n\n /** Who the conversation is currently waiting on — someone typing, or an agent working. */\n typingAuthors?: ChatTypingAuthor[];\n\n /** Whether the quick-reply affordance (prefill the composer with `@Name`) is offered on\n * messages. Defaults to true. */\n quickReply?: boolean;\n\n /** Builds the avatar image URL for every author shown. Omit to always show initials. */\n buildAvatarUrl?: (params: BuildAvatarUrlParams) => string;\n\n /** Whether the composer takes focus when mounted. */\n autoFocus?: boolean;\n\n /** Overrides for every label rendered. Unset fields fall back to literal English defaults. */\n labels?: ChatConversationLabels;\n\n /** Additional class name for the conversation's root element. */\n className?: string;\n}\n\n/** The message's timestamp as a `Date` — data that traveled through JSON may carry it as a string. */\nconst timestampOf = (message: ChatMessage): Date =>\n message.timestamp instanceof Date ? message.timestamp : new Date(message.timestamp);\n\nconst sameMinute = (left: Date, right: Date): boolean =>\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate() &&\n left.getHours() === right.getHours() &&\n left.getMinutes() === right.getMinutes();\n\ninterface MessageRenderInfo {\n /** Whether to show the author row — false for a continuation by the same author. */\n showAuthor: boolean;\n\n /** Whether to show the timestamp — false when the next message continues the same minute. */\n showTimestamp: boolean;\n}\n\nconst computeRenderInfo = (messages: ChatMessage[]): MessageRenderInfo[] =>\n messages.map((message, index) => {\n const previous = index > 0 ? messages[index - 1] : undefined;\n const next = index < messages.length - 1 ? messages[index + 1] : undefined;\n\n const showAuthor =\n !previous ||\n chatIdentifierString(previous.authorId) !==\n chatIdentifierString(message.authorId);\n const showTimestamp =\n !next ||\n chatIdentifierString(next.authorId) !==\n chatIdentifierString(message.authorId) ||\n !sameMinute(timestampOf(message), timestampOf(next));\n\n return { showAuthor, showTimestamp };\n });\n\n/**\n * Composes the \"X is typing\" line from whoever the conversation is waiting on.\n * @param authors The authors currently typing or working.\n * @param labels Label overrides, as passed to {@link ChatConversation}.\n * @returns The label to show, empty when nobody is.\n */\nconst typingLabel = (\n authors: ChatTypingAuthor[],\n labels: ChatConversationLabels | undefined,\n): string => {\n if (authors.length === 0) return '';\n if (authors.length === 1)\n return (labels?.typing ?? '{name} is typing').replace('{name}', authors[0].name);\n if (authors.length === 2)\n return (labels?.typingTwo ?? '{first} and {second} are typing')\n .replace('{first}', authors[0].name)\n .replace('{second}', authors[1].name);\n return labels?.typingSeveral ?? 'Several people are typing';\n};\n\n/**\n * One conversation — its messages and the composer to add to them. Host-agnostic by design: it\n * renders whatever message array it is given (hand it a live query's data and it stays current),\n * resolves authors through the host's {@link ChatConversationProps.authorOf | authorOf} and\n * render callbacks, offers the host's own {@link ChatConversationProps.actions | actions} on\n * each message, and reports sends back through\n * {@link ChatConversationProps.onSendMessage | onSendMessage} without any opinion about the\n * backend behind it. Mentions and the emoji picker come along through the composer.\n */\nexport const ChatConversation = <TMessage extends ChatMessage = ChatMessage>({\n messages,\n status = ChatStatus.Ready,\n onSendMessage,\n authorOf,\n renderAvatar,\n renderAuthorName,\n actions,\n mentionCandidates,\n resolveMentionCandidates,\n typingAuthors = [],\n quickReply = true,\n buildAvatarUrl,\n autoFocus = false,\n labels,\n className,\n}: ChatConversationProps<TMessage>) => {\n const composerRef = useRef<ChatComposerHandle>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const renderInfo = useMemo(() => computeRenderInfo(messages), [messages]);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }, [messages, typingAuthors.length]);\n\n const authorFor = (authorId: ChatIdentifier): ChatAuthor =>\n authorOf?.(authorId) ?? {\n name: chatIdentifierString(authorId),\n kind: ChatAuthorKind.User,\n };\n\n const send = (text: string, mentioned: MentionCandidate[]) =>\n onSendMessage(\n text,\n mentioned.map(\n (candidate) =>\n ({\n id: candidate.id,\n name: candidate.name,\n kind: candidate.kind,\n }) satisfies ChatMention,\n ),\n );\n\n const quickReplyTo = (name: string) => composerRef.current?.prefill(`@${name} `);\n\n return (\n <div className={`cratis-chat-conversation${className ? ` ${className}` : ''}`}>\n <div className='cratis-chat-conversation__messages' aria-busy={status === ChatStatus.Loading && messages.length > 0 || undefined}>\n {(messages.length === 0 || status === ChatStatus.Failed || status === ChatStatus.Unauthorized) && (\n <p className='cratis-chat-conversation__empty'>\n {status === ChatStatus.Loading ? (\n <span key={status} role='status'>{labels?.loading ?? 'Loading messages…'}</span>\n ) : status === ChatStatus.Failed ? (\n <span key={status} role='alert'>{labels?.failed ?? 'Could not load messages.'}</span>\n ) : status === ChatStatus.Unauthorized ? (\n <span key={status} role='alert'>{labels?.unauthorized ?? 'You are not authorized to view these messages.'}</span>\n ) : (\n labels?.empty ?? 'No messages yet. Say hello!'\n )}\n </p>\n )}\n {status !== ChatStatus.Unauthorized && messages.map((message, index) => {\n const author = authorFor(message.authorId);\n const { showAuthor, showTimestamp } = renderInfo[index];\n const availableActions = (actions ?? []).filter(\n (action) => action.isAvailable?.(message) ?? true,\n );\n const showActionsRow = quickReply || availableActions.length > 0;\n\n return (\n <div\n key={chatIdentifierString(message.id)}\n className={`cratis-chat-message${showAuthor ? '' : ' cratis-chat-message--continuation'}`}\n >\n {showAuthor && (\n <div className='cratis-chat-message__author'>\n {renderAvatar ? (\n renderAvatar(message.authorId, author)\n ) : (\n <PersonAvatarCircle\n userId={chatIdentifierString(\n message.authorId,\n )}\n name={author.name}\n hasAvatar={author.hasAvatar ?? false}\n size={22}\n ownerType={\n author.kind === ChatAuthorKind.Agent\n ? 'Agents'\n : 'Users'\n }\n version={author.avatarVersion}\n buildAvatarUrl={buildAvatarUrl}\n />\n )}\n <span className='cratis-chat-message__author-name'>\n {renderAuthorName\n ? renderAuthorName(message.authorId, author)\n : author.name}\n </span>\n </div>\n )}\n <div className='cratis-chat-message__content'>\n <div\n className={`cratis-chat-message__panel${showActionsRow ? ' cratis-chat-message__panel--with-actions' : ''}`}\n >\n <ChatMessageBody\n body={message.body}\n mentions={message.mentions}\n />\n {showActionsRow && (\n <div className='cratis-chat-message__actions'>\n {quickReply && (\n <button\n type='button'\n className='cratis-chat-message__action'\n title={(\n labels?.quickReplyTo ??\n 'Reply to {name}'\n ).replace('{name}', author.name)}\n aria-label={(\n labels?.quickReplyTo ??\n 'Reply to {name}'\n ).replace('{name}', author.name)}\n onClick={() =>\n quickReplyTo(author.name)\n }\n >\n <ReplyIcon />\n </button>\n )}\n {availableActions.map((action) => (\n <button\n key={action.id}\n type='button'\n className='cratis-chat-message__action'\n title={action.label}\n aria-label={action.label}\n onClick={() =>\n action.onInvoke(message)\n }\n >\n {typeof action.icon === 'string' ? (\n <i\n className={action.icon}\n aria-hidden='true'\n />\n ) : (\n action.icon\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n {showTimestamp && (\n <span className='cratis-chat-message__time'>\n {relativeTimestamp(\n timestampOf(message),\n new Date(),\n labels?.timestamps,\n )}\n </span>\n )}\n </div>\n </div>\n );\n })}\n {status !== ChatStatus.Unauthorized && (\n <TypingIndicator\n authors={typingAuthors}\n label={typingLabel(typingAuthors, labels)}\n buildAvatarUrl={buildAvatarUrl}\n />\n )}\n <div ref={messagesEndRef} />\n </div>\n\n <ChatComposer\n ref={composerRef}\n mentionCandidates={mentionCandidates}\n resolveMentionCandidates={resolveMentionCandidates}\n onSend={send}\n disabled={status === ChatStatus.Unauthorized}\n autoFocus={autoFocus}\n buildAvatarUrl={buildAvatarUrl}\n labels={labels?.composer}\n />\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatIdentifier.js","sources":["../../../Chat/ChatIdentifier.ts"],"sourcesContent":[null],"names":[],"mappings":"AAgBO,MAAM,oBAAoB,GAAG,CAAC,UAA0B,KAC3D,MAAM,CAAC,UAAU;AASd,MAAM,kBAAkB,GAAG,CAC9B,IAAqB,EACrB,KAAsB,KACZ,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK;;"}
1
+ {"version":3,"file":"ChatIdentifier.js","sources":["../../../Chat/ChatIdentifier.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * An identifier as the chat components accept it — a string, or anything that renders itself as\n * one (a `Guid` from `@cratis/fundamentals`, a number, a custom id type). The components never\n * inspect an identifier beyond turning it into a string, so a host can hand them whatever its\n * data source delivers without mapping every record first.\n */\nexport type ChatIdentifier = string | { toString(): string };\n\n/**\n * The canonical string form of an identifier, used for React keys and comparisons.\n * @param identifier The identifier to render.\n * @returns The identifier as a string.\n */\nexport const chatIdentifierString = (identifier: ChatIdentifier): string =>\n String(identifier);\n\n/**\n * Whether two identifiers refer to the same thing, compared by their string form so a `Guid`\n * and the string it prints as are the same identifier.\n * @param left One identifier, possibly not set.\n * @param right The other identifier, possibly not set.\n * @returns True when both are set and equal.\n */\nexport const sameChatIdentifier = (\n left?: ChatIdentifier,\n right?: ChatIdentifier,\n): boolean => left !== undefined && right !== undefined && String(left) === String(right);\n"],"names":[],"mappings":"AAgBO,MAAM,oBAAoB,GAAG,CAAC,UAA0B,KAC3D,MAAM,CAAC,UAAU;AASd,MAAM,kBAAkB,GAAG,CAC9B,IAAqB,EACrB,KAAsB,KACZ,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK;;"}
@@ -14,3 +14,4 @@ export interface ChatMention {
14
14
  /** Whether this is a person or an agent. */
15
15
  kind: ChatAuthorKind;
16
16
  }
17
+ //# sourceMappingURL=ChatMention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMention.d.ts","sourceRoot":"","sources":["../../../Chat/ChatMention.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IACxB,0CAA0C;IAC1C,EAAE,EAAE,cAAc,CAAC;IAEnB,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IAEb,4CAA4C;IAC5C,IAAI,EAAE,cAAc,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMention.js","sourceRoot":"","sources":["../../../Chat/ChatMention.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
1
+ {"version":3,"file":"ChatMention.js","sourceRoot":"","sources":["../../../Chat/ChatMention.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG","sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { ChatAuthorKind } from './Kit/ChatAuthorKind';\nimport type { ChatIdentifier } from './ChatIdentifier';\n\n/**\n * Somebody a message mentions — a person or an agent. The mention is written into the message\n * body as the plain text `@Name`, so the body stays readable on its own; this record is what\n * lets the body render the mention distinctly and lets the host know who was addressed without\n * re-parsing the text.\n */\nexport interface ChatMention {\n /** The identifier of who is mentioned. */\n id: ChatIdentifier;\n\n /** The name the mention is written with, exactly as it appears after the `@` in the body. */\n name: string;\n\n /** Whether this is a person or an agent. */\n kind: ChatAuthorKind;\n}\n"]}
@@ -26,3 +26,4 @@ export interface ChatMessage {
26
26
  /** An open slot for whatever else the host's own message shape carries. */
27
27
  metadata?: Record<string, unknown>;
28
28
  }
29
+ //# 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,qBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IACxB,qCAAqC;IACrC,EAAE,EAAE,cAAc,CAAC;IAEnB,0DAA0D;IAC1D,OAAO,EAAE,cAAc,CAAC;IAExB,oGAAoG;IACpG,QAAQ,EAAE,cAAc,CAAC;IAEzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,SAAS,EAAE,IAAI,CAAC;IAEhB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IAEzB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessage.js","sourceRoot":"","sources":["../../../Chat/ChatMessage.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
1
+ {"version":3,"file":"ChatMessage.js","sourceRoot":"","sources":["../../../Chat/ChatMessage.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG","sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { ChatIdentifier } from './ChatIdentifier';\nimport type { ChatMention } from './ChatMention';\n\n/**\n * The shape of a message as the chat components need it — deliberately minimal, so the arrays a\n * host's own queries deliver can be handed to the components as they are (or with a thin map).\n * Everything about the *author* beyond the identifier is resolved at render time through the\n * host's `authorOf` resolver and render callbacks, so the message never goes stale when someone\n * is renamed.\n *\n * Extend the interface for anything the host's own actions need — the components are generic\n * over the message type, and every action callback receives the full message back.\n */\nexport interface ChatMessage {\n /** The identifier of the message. */\n id: ChatIdentifier;\n\n /** The identifier of the topic the message belongs to. */\n topicId: ChatIdentifier;\n\n /** The identifier of whoever wrote it. Resolved to a name and avatar by the host at render time. */\n authorId: ChatIdentifier;\n\n /** What was written. Mentions appear in it as plain `@Name` text. */\n body: string;\n\n /** When it was written. */\n timestamp: Date;\n\n /** Who the body mentions, so mentions can render distinctly without re-parsing the text. */\n mentions?: ChatMention[];\n\n /** An open slot for whatever else the host's own message shape carries. */\n metadata?: Record<string, unknown>;\n}\n"]}
@@ -25,3 +25,4 @@ export interface ChatMessageAction<TMessage extends ChatMessage = ChatMessage> {
25
25
  */
26
26
  onInvoke: (message: TMessage) => void;
27
27
  }
28
+ //# sourceMappingURL=ChatMessageAction.d.ts.map