@cratis/components 3.4.0 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/README.md +148 -98
  2. package/dist/esm/Canvas/Canvas.d.ts +67 -0
  3. package/dist/esm/Canvas/Canvas.d.ts.map +1 -0
  4. package/dist/esm/Canvas/Canvas.js +767 -0
  5. package/dist/esm/Canvas/Canvas.js.map +1 -0
  6. package/dist/esm/Canvas/CanvasControls.d.ts +32 -0
  7. package/dist/esm/Canvas/CanvasControls.d.ts.map +1 -0
  8. package/dist/esm/Canvas/CanvasControls.js +34 -0
  9. package/dist/esm/Canvas/CanvasControls.js.map +1 -0
  10. package/dist/esm/Canvas/CanvasItem.d.ts +10 -0
  11. package/dist/esm/Canvas/CanvasItem.d.ts.map +1 -0
  12. package/dist/esm/Canvas/CanvasItem.js +51 -0
  13. package/dist/esm/Canvas/CanvasItem.js.map +1 -0
  14. package/dist/esm/Canvas/CanvasMinimap.d.ts +25 -0
  15. package/dist/esm/Canvas/CanvasMinimap.d.ts.map +1 -0
  16. package/dist/esm/Canvas/CanvasMinimap.js +102 -0
  17. package/dist/esm/Canvas/CanvasMinimap.js.map +1 -0
  18. package/dist/esm/Canvas/CanvasOverlay.d.ts +6 -0
  19. package/dist/esm/Canvas/CanvasOverlay.d.ts.map +1 -0
  20. package/dist/esm/Canvas/CanvasOverlay.js +8 -0
  21. package/dist/esm/Canvas/CanvasOverlay.js.map +1 -0
  22. package/dist/esm/Canvas/canvasGesture.d.ts +8 -0
  23. package/dist/esm/Canvas/canvasGesture.d.ts.map +1 -0
  24. package/dist/esm/Canvas/canvasGesture.js +32 -0
  25. package/dist/esm/Canvas/canvasGesture.js.map +1 -0
  26. package/dist/esm/Canvas/canvasTransformActivity.d.ts +7 -0
  27. package/dist/esm/Canvas/canvasTransformActivity.d.ts.map +1 -0
  28. package/dist/esm/Canvas/canvasTransformActivity.js +22 -0
  29. package/dist/esm/Canvas/canvasTransformActivity.js.map +1 -0
  30. package/dist/esm/Canvas/glassAttributes.d.ts +4 -0
  31. package/dist/esm/Canvas/glassAttributes.d.ts.map +1 -0
  32. package/dist/esm/Canvas/glassAttributes.js +25 -0
  33. package/dist/esm/Canvas/glassAttributes.js.map +1 -0
  34. package/dist/esm/Canvas/index.d.ts +18 -0
  35. package/dist/esm/Canvas/index.d.ts.map +1 -0
  36. package/dist/esm/Canvas/index.js +38 -0
  37. package/dist/esm/Canvas/index.js.map +1 -0
  38. package/dist/esm/Canvas/isBackgroundPointerTarget.d.ts +2 -0
  39. package/dist/esm/Canvas/isBackgroundPointerTarget.d.ts.map +1 -0
  40. package/dist/esm/Canvas/isBackgroundPointerTarget.js +17 -0
  41. package/dist/esm/Canvas/isBackgroundPointerTarget.js.map +1 -0
  42. package/dist/esm/Canvas/isWithinScrollableContent.d.ts +11 -0
  43. package/dist/esm/Canvas/isWithinScrollableContent.d.ts.map +1 -0
  44. package/dist/esm/Canvas/isWithinScrollableContent.js +38 -0
  45. package/dist/esm/Canvas/isWithinScrollableContent.js.map +1 -0
  46. package/dist/esm/Canvas/panMomentum.d.ts +13 -0
  47. package/dist/esm/Canvas/panMomentum.d.ts.map +1 -0
  48. package/dist/esm/Canvas/panMomentum.js +41 -0
  49. package/dist/esm/Canvas/panMomentum.js.map +1 -0
  50. package/dist/esm/Canvas/pinchGesture.d.ts +16 -0
  51. package/dist/esm/Canvas/pinchGesture.d.ts.map +1 -0
  52. package/dist/esm/Canvas/pinchGesture.js +30 -0
  53. package/dist/esm/Canvas/pinchGesture.js.map +1 -0
  54. package/dist/esm/Canvas/selfSuspendingFrameLoop.d.ts +10 -0
  55. package/dist/esm/Canvas/selfSuspendingFrameLoop.d.ts.map +1 -0
  56. package/dist/esm/Canvas/selfSuspendingFrameLoop.js +33 -0
  57. package/dist/esm/Canvas/selfSuspendingFrameLoop.js.map +1 -0
  58. package/dist/esm/Canvas/shapes/ChatBubble/AnchoredOverlay.d.ts +13 -0
  59. package/dist/esm/Canvas/shapes/ChatBubble/AnchoredOverlay.d.ts.map +1 -0
  60. package/dist/esm/Canvas/shapes/ChatBubble/AnchoredOverlay.js +61 -0
  61. package/dist/esm/Canvas/shapes/ChatBubble/AnchoredOverlay.js.map +1 -0
  62. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/PersonAvatarCircle.d.ts +20 -0
  63. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/PersonAvatarCircle.d.ts.map +1 -0
  64. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/PersonAvatarCircle.js +27 -0
  65. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/PersonAvatarCircle.js.map +1 -0
  66. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getAvatarColor.d.ts +2 -0
  67. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getAvatarColor.d.ts.map +1 -0
  68. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getAvatarColor.js +20 -0
  69. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getAvatarColor.js.map +1 -0
  70. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getInitials.d.ts +2 -0
  71. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getInitials.d.ts.map +1 -0
  72. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getInitials.js +11 -0
  73. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/getInitials.js.map +1 -0
  74. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/index.d.ts +5 -0
  75. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/index.d.ts.map +1 -0
  76. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/index.js +4 -0
  77. package/dist/esm/Canvas/shapes/ChatBubble/Avatar/index.js.map +1 -0
  78. package/dist/esm/Canvas/shapes/ChatBubble/Chat.d.ts +41 -0
  79. package/dist/esm/Canvas/shapes/ChatBubble/Chat.d.ts.map +1 -0
  80. package/dist/esm/Canvas/shapes/ChatBubble/Chat.js +76 -0
  81. package/dist/esm/Canvas/shapes/ChatBubble/Chat.js.map +1 -0
  82. package/dist/esm/Canvas/shapes/ChatBubble/ChatAuthorKind.d.ts +5 -0
  83. package/dist/esm/Canvas/shapes/ChatBubble/ChatAuthorKind.d.ts.map +1 -0
  84. package/dist/esm/Canvas/shapes/ChatBubble/ChatAuthorKind.js +14 -0
  85. package/dist/esm/Canvas/shapes/ChatBubble/ChatAuthorKind.js.map +1 -0
  86. package/dist/esm/Canvas/shapes/ChatBubble/ChatBubble.d.ts +18 -0
  87. package/dist/esm/Canvas/shapes/ChatBubble/ChatBubble.d.ts.map +1 -0
  88. package/dist/esm/Canvas/shapes/ChatBubble/ChatBubble.js +89 -0
  89. package/dist/esm/Canvas/shapes/ChatBubble/ChatBubble.js.map +1 -0
  90. package/dist/esm/Canvas/shapes/ChatBubble/ChatComposer.d.ts +23 -0
  91. package/dist/esm/Canvas/shapes/ChatBubble/ChatComposer.d.ts.map +1 -0
  92. package/dist/esm/Canvas/shapes/ChatBubble/ChatComposer.js +107 -0
  93. package/dist/esm/Canvas/shapes/ChatBubble/ChatComposer.js.map +1 -0
  94. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessage.d.ts +17 -0
  95. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessage.d.ts.map +1 -0
  96. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessage.js +2 -0
  97. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessage.js.map +1 -0
  98. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageBubble.d.ts +25 -0
  99. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageBubble.d.ts.map +1 -0
  100. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageBubble.js +31 -0
  101. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageBubble.js.map +1 -0
  102. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageReaction.d.ts +6 -0
  103. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageReaction.d.ts.map +1 -0
  104. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageReaction.js +2 -0
  105. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageReaction.js.map +1 -0
  106. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageReactionUser.d.ts +7 -0
  107. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageReactionUser.d.ts.map +1 -0
  108. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageReactionUser.js +2 -0
  109. package/dist/esm/Canvas/shapes/ChatBubble/ChatMessageReactionUser.js.map +1 -0
  110. package/dist/esm/Canvas/shapes/ChatBubble/ChatOwnReaction.d.ts +6 -0
  111. package/dist/esm/Canvas/shapes/ChatBubble/ChatOwnReaction.d.ts.map +1 -0
  112. package/dist/esm/Canvas/shapes/ChatBubble/ChatOwnReaction.js +2 -0
  113. package/dist/esm/Canvas/shapes/ChatBubble/ChatOwnReaction.js.map +1 -0
  114. package/dist/esm/Canvas/shapes/ChatBubble/ChatTypingAuthor.d.ts +8 -0
  115. package/dist/esm/Canvas/shapes/ChatBubble/ChatTypingAuthor.d.ts.map +1 -0
  116. package/dist/esm/Canvas/shapes/ChatBubble/ChatTypingAuthor.js +2 -0
  117. package/dist/esm/Canvas/shapes/ChatBubble/ChatTypingAuthor.js.map +1 -0
  118. package/dist/esm/Canvas/shapes/ChatBubble/ChatVariant.d.ts +5 -0
  119. package/dist/esm/Canvas/shapes/ChatBubble/ChatVariant.d.ts.map +1 -0
  120. package/dist/esm/Canvas/shapes/ChatBubble/ChatVariant.js +15 -0
  121. package/dist/esm/Canvas/shapes/ChatBubble/ChatVariant.js.map +1 -0
  122. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategory.d.ts +6 -0
  123. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategory.d.ts.map +1 -0
  124. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategory.js +2 -0
  125. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategory.js.map +1 -0
  126. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategoryKey.d.ts +12 -0
  127. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategoryKey.d.ts.map +1 -0
  128. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategoryKey.js +18 -0
  129. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiCategoryKey.js.map +1 -0
  130. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiMemory.d.ts +5 -0
  131. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiMemory.d.ts.map +1 -0
  132. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiMemory.js +2 -0
  133. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiMemory.js.map +1 -0
  134. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiPicker.d.ts +14 -0
  135. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiPicker.d.ts.map +1 -0
  136. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiPicker.js +51 -0
  137. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/EmojiPicker.js.map +1 -0
  138. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/emojiCatalog.d.ts +3 -0
  139. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/emojiCatalog.d.ts.map +1 -0
  140. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/emojiCatalog.js +155 -0
  141. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/emojiCatalog.js.map +1 -0
  142. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/index.d.ts +7 -0
  143. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/index.d.ts.map +1 -0
  144. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/index.js +7 -0
  145. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/index.js.map +1 -0
  146. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/recentEmojis.d.ts +6 -0
  147. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/recentEmojis.d.ts.map +1 -0
  148. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/recentEmojis.js +59 -0
  149. package/dist/esm/Canvas/shapes/ChatBubble/Emoji/recentEmojis.js.map +1 -0
  150. package/dist/esm/Canvas/shapes/ChatBubble/FailedReply.d.ts +23 -0
  151. package/dist/esm/Canvas/shapes/ChatBubble/FailedReply.d.ts.map +1 -0
  152. package/dist/esm/Canvas/shapes/ChatBubble/FailedReply.js +28 -0
  153. package/dist/esm/Canvas/shapes/ChatBubble/FailedReply.js.map +1 -0
  154. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionCandidate.d.ts +9 -0
  155. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionCandidate.d.ts.map +1 -0
  156. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionCandidate.js +2 -0
  157. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionCandidate.js.map +1 -0
  158. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionQuery.d.ts +5 -0
  159. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionQuery.d.ts.map +1 -0
  160. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionQuery.js +2 -0
  161. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionQuery.js.map +1 -0
  162. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionSuggestions.d.ts +11 -0
  163. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionSuggestions.d.ts.map +1 -0
  164. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionSuggestions.js +14 -0
  165. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/MentionSuggestions.js.map +1 -0
  166. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/activeMentionQuery.d.ts +3 -0
  167. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/activeMentionQuery.d.ts.map +1 -0
  168. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/activeMentionQuery.js +34 -0
  169. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/activeMentionQuery.js.map +1 -0
  170. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/applyMention.d.ts +7 -0
  171. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/applyMention.d.ts.map +1 -0
  172. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/applyMention.js +23 -0
  173. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/applyMention.js.map +1 -0
  174. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/index.d.ts +7 -0
  175. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/index.d.ts.map +1 -0
  176. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/index.js +7 -0
  177. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/index.js.map +1 -0
  178. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/matchCandidates.d.ts +3 -0
  179. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/matchCandidates.d.ts.map +1 -0
  180. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/matchCandidates.js +24 -0
  181. package/dist/esm/Canvas/shapes/ChatBubble/Mentions/matchCandidates.js.map +1 -0
  182. package/dist/esm/Canvas/shapes/ChatBubble/MessageReactions.d.ts +6 -0
  183. package/dist/esm/Canvas/shapes/ChatBubble/MessageReactions.d.ts.map +1 -0
  184. package/dist/esm/Canvas/shapes/ChatBubble/MessageReactions.js +28 -0
  185. package/dist/esm/Canvas/shapes/ChatBubble/MessageReactions.js.map +1 -0
  186. package/dist/esm/Canvas/shapes/ChatBubble/ReactionPicker.d.ts +20 -0
  187. package/dist/esm/Canvas/shapes/ChatBubble/ReactionPicker.d.ts.map +1 -0
  188. package/dist/esm/Canvas/shapes/ChatBubble/ReactionPicker.js +50 -0
  189. package/dist/esm/Canvas/shapes/ChatBubble/ReactionPicker.js.map +1 -0
  190. package/dist/esm/Canvas/shapes/ChatBubble/TypingIndicator.d.ts +9 -0
  191. package/dist/esm/Canvas/shapes/ChatBubble/TypingIndicator.d.ts.map +1 -0
  192. package/dist/esm/Canvas/shapes/ChatBubble/TypingIndicator.js +18 -0
  193. package/dist/esm/Canvas/shapes/ChatBubble/TypingIndicator.js.map +1 -0
  194. package/dist/esm/Canvas/shapes/ChatBubble/findOwnReaction.d.ts +5 -0
  195. package/dist/esm/Canvas/shapes/ChatBubble/findOwnReaction.d.ts.map +1 -0
  196. package/dist/esm/Canvas/shapes/ChatBubble/findOwnReaction.js +19 -0
  197. package/dist/esm/Canvas/shapes/ChatBubble/findOwnReaction.js.map +1 -0
  198. package/dist/esm/Canvas/shapes/ChatBubble/index.d.ts +31 -0
  199. package/dist/esm/Canvas/shapes/ChatBubble/index.d.ts.map +1 -0
  200. package/dist/esm/Canvas/shapes/ChatBubble/index.js +17 -0
  201. package/dist/esm/Canvas/shapes/ChatBubble/index.js.map +1 -0
  202. package/dist/esm/Canvas/shapes/ChatBubble/reactionsExcludingUser.d.ts +4 -0
  203. package/dist/esm/Canvas/shapes/ChatBubble/reactionsExcludingUser.d.ts.map +1 -0
  204. package/dist/esm/Canvas/shapes/ChatBubble/reactionsExcludingUser.js +16 -0
  205. package/dist/esm/Canvas/shapes/ChatBubble/reactionsExcludingUser.js.map +1 -0
  206. package/dist/esm/Canvas/shapes/Note/Note.d.ts +22 -0
  207. package/dist/esm/Canvas/shapes/Note/Note.d.ts.map +1 -0
  208. package/dist/esm/Canvas/shapes/Note/Note.js +237 -0
  209. package/dist/esm/Canvas/shapes/Note/Note.js.map +1 -0
  210. package/dist/esm/Canvas/shapes/Note/index.d.ts +3 -0
  211. package/dist/esm/Canvas/shapes/Note/index.d.ts.map +1 -0
  212. package/dist/esm/Canvas/shapes/Note/index.js +2 -0
  213. package/dist/esm/Canvas/shapes/Note/index.js.map +1 -0
  214. package/dist/esm/Canvas/shapes/Note/noteFont.d.ts +2 -0
  215. package/dist/esm/Canvas/shapes/Note/noteFont.d.ts.map +1 -0
  216. package/dist/esm/Canvas/shapes/Note/noteFont.js +26 -0
  217. package/dist/esm/Canvas/shapes/Note/noteFont.js.map +1 -0
  218. package/dist/esm/Canvas/shapes/Region/Region.d.ts +22 -0
  219. package/dist/esm/Canvas/shapes/Region/Region.d.ts.map +1 -0
  220. package/dist/esm/Canvas/shapes/Region/Region.js +150 -0
  221. package/dist/esm/Canvas/shapes/Region/Region.js.map +1 -0
  222. package/dist/esm/Canvas/shapes/Region/index.d.ts +3 -0
  223. package/dist/esm/Canvas/shapes/Region/index.d.ts.map +1 -0
  224. package/dist/esm/Canvas/shapes/Region/index.js +2 -0
  225. package/dist/esm/Canvas/shapes/Region/index.js.map +1 -0
  226. package/dist/esm/Canvas/useDragSelectionGuard.d.ts +2 -0
  227. package/dist/esm/Canvas/useDragSelectionGuard.d.ts.map +1 -0
  228. package/dist/esm/Canvas/useDragSelectionGuard.js +59 -0
  229. package/dist/esm/Canvas/useDragSelectionGuard.js.map +1 -0
  230. package/dist/esm/Canvas/zoomMechanism.d.ts +4 -0
  231. package/dist/esm/Canvas/zoomMechanism.d.ts.map +1 -0
  232. package/dist/esm/Canvas/zoomMechanism.js +58 -0
  233. package/dist/esm/Canvas/zoomMechanism.js.map +1 -0
  234. package/dist/esm/CommandDialog/CommandDialog.d.ts +3 -6
  235. package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
  236. package/dist/esm/CommandDialog/CommandDialog.js +3 -2
  237. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  238. package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -1
  239. package/dist/esm/CommandDialog/CommandStepper.js +3 -2
  240. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  241. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  242. package/dist/esm/CommandDialog/StepperPanel.js.map +1 -1
  243. package/dist/esm/CommandDialog/applyBeforeExecute.js.map +1 -1
  244. package/dist/esm/CommandDialog/stepChildren.js.map +1 -1
  245. package/dist/esm/CommandForm/AutoCommandForm.js.map +1 -1
  246. package/dist/esm/CommandForm/commandFormMarkers.d.ts +12 -0
  247. package/dist/esm/CommandForm/commandFormMarkers.d.ts.map +1 -0
  248. package/dist/esm/CommandForm/commandFormMarkers.js +69 -0
  249. package/dist/esm/CommandForm/commandFormMarkers.js.map +1 -0
  250. package/dist/esm/CommandForm/defaultFieldTypeProviders.js.map +1 -1
  251. package/dist/esm/CommandForm/fieldTypeProviderRegistry.js.map +1 -1
  252. package/dist/esm/CommandForm/fields/CalendarField.d.ts +1 -1
  253. package/dist/esm/CommandForm/fields/CalendarField.d.ts.map +1 -1
  254. package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
  255. package/dist/esm/CommandForm/fields/CheckboxField.d.ts +1 -1
  256. package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -1
  257. package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
  258. package/dist/esm/CommandForm/fields/ChipsField.d.ts +1 -1
  259. package/dist/esm/CommandForm/fields/ChipsField.d.ts.map +1 -1
  260. package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
  261. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts +1 -1
  262. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts.map +1 -1
  263. package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
  264. package/dist/esm/CommandForm/fields/DropdownField.d.ts +1 -1
  265. package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -1
  266. package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
  267. package/dist/esm/CommandForm/fields/InputTextField.d.ts +1 -1
  268. package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -1
  269. package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
  270. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts +1 -1
  271. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts.map +1 -1
  272. package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
  273. package/dist/esm/CommandForm/fields/NumberField.d.ts +1 -1
  274. package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -1
  275. package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
  276. package/dist/esm/CommandForm/fields/PasswordField.d.ts +1 -1
  277. package/dist/esm/CommandForm/fields/PasswordField.d.ts.map +1 -1
  278. package/dist/esm/CommandForm/fields/PasswordField.js.map +1 -1
  279. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts +1 -1
  280. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts.map +1 -1
  281. package/dist/esm/CommandForm/fields/RadioButtonField.js.map +1 -1
  282. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts +1 -1
  283. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts.map +1 -1
  284. package/dist/esm/CommandForm/fields/RadioGroupField.js.map +1 -1
  285. package/dist/esm/CommandForm/fields/RatingField.d.ts +1 -1
  286. package/dist/esm/CommandForm/fields/RatingField.d.ts.map +1 -1
  287. package/dist/esm/CommandForm/fields/RatingField.js.map +1 -1
  288. package/dist/esm/CommandForm/fields/SliderField.d.ts +1 -1
  289. package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -1
  290. package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
  291. package/dist/esm/CommandForm/fields/TextAreaField.d.ts +1 -1
  292. package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -1
  293. package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
  294. package/dist/esm/CommandForm/fields/ToggleSwitchField.d.ts +1 -1
  295. package/dist/esm/CommandForm/fields/ToggleSwitchField.d.ts.map +1 -1
  296. package/dist/esm/CommandForm/fields/ToggleSwitchField.js.map +1 -1
  297. package/dist/esm/CommandForm/index.d.ts +1 -0
  298. package/dist/esm/CommandForm/index.d.ts.map +1 -1
  299. package/dist/esm/CommandForm/index.js +1 -0
  300. package/dist/esm/CommandForm/index.js.map +1 -1
  301. package/dist/esm/Common/ActionMenubar.js.map +1 -1
  302. package/dist/esm/Common/Button.js.map +1 -1
  303. package/dist/esm/Common/CratisComponentsProvider.js +1 -1
  304. package/dist/esm/Common/CratisComponentsProvider.js.map +1 -1
  305. package/dist/esm/Common/DatePickerInput.d.ts +11 -4
  306. package/dist/esm/Common/DatePickerInput.d.ts.map +1 -1
  307. package/dist/esm/Common/DatePickerInput.js +18 -2
  308. package/dist/esm/Common/DatePickerInput.js.map +1 -1
  309. package/dist/esm/Common/ErrorBoundary.d.ts +1 -1
  310. package/dist/esm/Common/ErrorBoundary.js.map +1 -1
  311. package/dist/esm/Common/FormElement.js.map +1 -1
  312. package/dist/esm/Common/Icon.js.map +1 -1
  313. package/dist/esm/Common/Page.js.map +1 -1
  314. package/dist/esm/Common/Tooltip.js.map +1 -1
  315. package/dist/esm/Common/normalizeIconClass.js.map +1 -1
  316. package/dist/esm/Compatibility/PrimeReact11PassThroughComponent.d.ts +3 -0
  317. package/dist/esm/Compatibility/PrimeReact11PassThroughComponent.d.ts.map +1 -0
  318. package/dist/esm/Compatibility/PrimeReact11PassThroughComponent.js +2 -0
  319. package/dist/esm/Compatibility/PrimeReact11PassThroughComponent.js.map +1 -0
  320. package/dist/esm/Compatibility/assertPrimeReact11PassThroughCompatibility.d.ts +3 -0
  321. package/dist/esm/Compatibility/assertPrimeReact11PassThroughCompatibility.d.ts.map +1 -0
  322. package/dist/esm/Compatibility/assertPrimeReact11PassThroughCompatibility.js +49 -0
  323. package/dist/esm/Compatibility/assertPrimeReact11PassThroughCompatibility.js.map +1 -0
  324. package/dist/esm/Compatibility/components3PrimeReact11PassThroughContract.d.ts +369 -0
  325. package/dist/esm/Compatibility/components3PrimeReact11PassThroughContract.d.ts.map +1 -0
  326. package/dist/esm/Compatibility/components3PrimeReact11PassThroughContract.js +271 -0
  327. package/dist/esm/Compatibility/components3PrimeReact11PassThroughContract.js.map +1 -0
  328. package/dist/esm/Compatibility/index.d.ts +5 -0
  329. package/dist/esm/Compatibility/index.d.ts.map +1 -0
  330. package/dist/esm/Compatibility/index.js +7 -0
  331. package/dist/esm/Compatibility/index.js.map +1 -0
  332. package/dist/esm/Compatibility/primeReact11PassThroughSentinelPreset.d.ts +8 -0
  333. package/dist/esm/Compatibility/primeReact11PassThroughSentinelPreset.d.ts.map +1 -0
  334. package/dist/esm/Compatibility/primeReact11PassThroughSentinelPreset.js +48 -0
  335. package/dist/esm/Compatibility/primeReact11PassThroughSentinelPreset.js.map +1 -0
  336. package/dist/esm/DataPage/DataPage.d.ts +4 -4
  337. package/dist/esm/DataPage/DataPage.d.ts.map +1 -1
  338. package/dist/esm/DataPage/DataPage.js +6 -10
  339. package/dist/esm/DataPage/DataPage.js.map +1 -1
  340. package/dist/esm/DataPage/DataPageLayout.js.map +1 -1
  341. package/dist/esm/DataTables/Column.d.ts +3 -1
  342. package/dist/esm/DataTables/Column.d.ts.map +1 -1
  343. package/dist/esm/DataTables/Column.js.map +1 -1
  344. package/dist/esm/DataTables/ColumnFilterMenu.d.ts +22 -2
  345. package/dist/esm/DataTables/ColumnFilterMenu.d.ts.map +1 -1
  346. package/dist/esm/DataTables/ColumnFilterMenu.js +50 -13
  347. package/dist/esm/DataTables/ColumnFilterMenu.js.map +1 -1
  348. package/dist/esm/DataTables/DataTableCore.d.ts.map +1 -1
  349. package/dist/esm/DataTables/DataTableCore.js +22 -3
  350. package/dist/esm/DataTables/DataTableCore.js.map +1 -1
  351. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.d.ts +14 -0
  352. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.d.ts.map +1 -0
  353. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.js +67 -0
  354. package/dist/esm/DataTables/DataTableFilterMatcherRegistry.js.map +1 -0
  355. package/dist/esm/DataTables/DataTableFilterMeta.d.ts +26 -1
  356. package/dist/esm/DataTables/DataTableFilterMeta.d.ts.map +1 -1
  357. package/dist/esm/DataTables/DataTableFilterMeta.js +24 -2
  358. package/dist/esm/DataTables/DataTableFilterMeta.js.map +1 -1
  359. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts +3 -3
  360. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts.map +1 -1
  361. package/dist/esm/DataTables/DataTableForObservableQuery.js +9 -3
  362. package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
  363. package/dist/esm/DataTables/DataTableForQuery.d.ts +3 -3
  364. package/dist/esm/DataTables/DataTableForQuery.d.ts.map +1 -1
  365. package/dist/esm/DataTables/DataTableForQuery.js +8 -2
  366. package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
  367. package/dist/esm/DataTables/TablePaginator.d.ts +1 -1
  368. package/dist/esm/DataTables/TablePaginator.d.ts.map +1 -1
  369. package/dist/esm/DataTables/TablePaginator.js +13 -4
  370. package/dist/esm/DataTables/TablePaginator.js.map +1 -1
  371. package/dist/esm/DataTables/index.d.ts +1 -0
  372. package/dist/esm/DataTables/index.d.ts.map +1 -1
  373. package/dist/esm/DataTables/index.js +3 -1
  374. package/dist/esm/DataTables/index.js.map +1 -1
  375. package/dist/esm/DataTables/paginatorRange.js.map +1 -1
  376. package/dist/esm/DataTables/selectionKeys.js.map +1 -1
  377. package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
  378. package/dist/esm/Dialogs/ConfirmationDialog.js.map +1 -1
  379. package/dist/esm/Dialogs/Dialog.d.ts +2 -2
  380. package/dist/esm/Dialogs/Dialog.d.ts.map +1 -1
  381. package/dist/esm/Dialogs/Dialog.js +16 -18
  382. package/dist/esm/Dialogs/Dialog.js.map +1 -1
  383. package/dist/esm/Dialogs/DialogInitialFocus.js.map +1 -1
  384. package/dist/esm/Display/Avatar.js.map +1 -1
  385. package/dist/esm/Display/Badge.js.map +1 -1
  386. package/dist/esm/Display/Chip.js.map +1 -1
  387. package/dist/esm/Display/Message.js.map +1 -1
  388. package/dist/esm/Display/ProgressBar.js.map +1 -1
  389. package/dist/esm/Display/ProgressSpinner.js.map +1 -1
  390. package/dist/esm/Display/Skeleton.js.map +1 -1
  391. package/dist/esm/Display/Tag.js.map +1 -1
  392. package/dist/esm/Dropdown/Dropdown.d.ts +4 -2
  393. package/dist/esm/Dropdown/Dropdown.d.ts.map +1 -1
  394. package/dist/esm/Dropdown/Dropdown.js +8 -3
  395. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  396. package/dist/esm/Filter/FilterEditor.js.map +1 -1
  397. package/dist/esm/Filter/FilterPanel.d.ts.map +1 -1
  398. package/dist/esm/Filter/FilterPanel.js +1 -1
  399. package/dist/esm/Filter/FilterPanel.js.map +1 -1
  400. package/dist/esm/Filter/RangeHistogramFilter.d.ts +4 -3
  401. package/dist/esm/Filter/RangeHistogramFilter.d.ts.map +1 -1
  402. package/dist/esm/Filter/RangeHistogramFilter.js +4 -23
  403. package/dist/esm/Filter/RangeHistogramFilter.js.map +1 -1
  404. package/dist/esm/Filter/index.d.ts +3 -2
  405. package/dist/esm/Filter/index.d.ts.map +1 -1
  406. package/dist/esm/Filter/index.js +1 -1
  407. package/dist/esm/Filter/types.d.ts +7 -1
  408. package/dist/esm/Filter/types.d.ts.map +1 -1
  409. package/dist/esm/Filter/useFilterState.js.map +1 -1
  410. package/dist/esm/Filter/utils.d.ts +5 -1
  411. package/dist/esm/Filter/utils.d.ts.map +1 -1
  412. package/dist/esm/Filter/utils.js +33 -1
  413. package/dist/esm/Filter/utils.js.map +1 -1
  414. package/dist/esm/Notifications/Toaster.d.ts +8 -1
  415. package/dist/esm/Notifications/Toaster.d.ts.map +1 -1
  416. package/dist/esm/Notifications/Toaster.js +16 -10
  417. package/dist/esm/Notifications/Toaster.js.map +1 -1
  418. package/dist/esm/Notifications/index.js +1 -1
  419. package/dist/esm/Notifications/toast.d.ts +52 -2
  420. package/dist/esm/Notifications/toast.d.ts.map +1 -1
  421. package/dist/esm/Notifications/toast.js +100 -2
  422. package/dist/esm/Notifications/toast.js.map +1 -1
  423. package/dist/esm/Notifications/toastCommandResult.js +2 -2
  424. package/dist/esm/Notifications/toastCommandResult.js.map +1 -1
  425. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  426. package/dist/esm/ObjectContentEditor/objectHelpers.js.map +1 -1
  427. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  428. package/dist/esm/ObjectNavigationalBar/breadcrumbHelpers.js.map +1 -1
  429. package/dist/esm/PatrickHand-latin-ext.woff2 +0 -0
  430. package/dist/esm/PatrickHand-latin.woff2 +0 -0
  431. package/dist/esm/PatrickHand-vietnamese.woff2 +0 -0
  432. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  433. package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
  434. package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
  435. package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
  436. package/dist/esm/PivotViewer/components/FilterPanelContainer.js.map +1 -1
  437. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  438. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  439. package/dist/esm/PivotViewer/components/Spinner.js.map +1 -1
  440. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  441. package/dist/esm/PivotViewer/components/ToolbarContainer.js.map +1 -1
  442. package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
  443. package/dist/esm/PivotViewer/components/pivot/colorResolver.js.map +1 -1
  444. package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
  445. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
  446. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  447. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  448. package/dist/esm/PivotViewer/constants.js.map +1 -1
  449. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  450. package/dist/esm/PivotViewer/engine/store.js.map +1 -1
  451. package/dist/esm/PivotViewer/hooks/useAnimationModeTracking.js.map +1 -1
  452. package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
  453. package/dist/esm/PivotViewer/hooks/useContainerDimensions.js.map +1 -1
  454. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  455. package/dist/esm/PivotViewer/hooks/useDetailPanelClose.js.map +1 -1
  456. package/dist/esm/PivotViewer/hooks/useDimensionState.js.map +1 -1
  457. package/dist/esm/PivotViewer/hooks/useFieldExtractors.js.map +1 -1
  458. package/dist/esm/PivotViewer/hooks/useFilterOptions.js.map +1 -1
  459. package/dist/esm/PivotViewer/hooks/useFilterState.js.map +1 -1
  460. package/dist/esm/PivotViewer/hooks/usePanning.js.map +1 -1
  461. package/dist/esm/PivotViewer/hooks/usePivotEngine.js.map +1 -1
  462. package/dist/esm/PivotViewer/hooks/useScrollSync.js.map +1 -1
  463. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  464. package/dist/esm/PivotViewer/hooks/useWheelZoom.js.map +1 -1
  465. package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
  466. package/dist/esm/PivotViewer/types.js.map +1 -1
  467. package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
  468. package/dist/esm/PivotViewer/utils/cardPosition.js.map +1 -1
  469. package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
  470. package/dist/esm/PivotViewer/utils/idResolution.js.map +1 -1
  471. package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
  472. package/dist/esm/PivotViewer/utils/utils.js.map +1 -1
  473. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  474. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  475. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  476. package/dist/esm/SchemaEditor/schemaHelpers.js.map +1 -1
  477. package/dist/esm/Styled/CratisPreset.js.map +1 -1
  478. package/dist/esm/Styled/primeReactStyles.js.map +1 -1
  479. package/dist/esm/Styled/styledMode.js.map +1 -1
  480. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  481. package/dist/esm/TimeMachine/Properties.js.map +1 -1
  482. package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
  483. package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
  484. package/dist/esm/TimeMachine/TimeMachineLabels.js.map +1 -1
  485. package/dist/esm/TimeMachine/propertiesHelpers.js.map +1 -1
  486. package/dist/esm/Toolbar/Toolbar.js.map +1 -1
  487. package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
  488. package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
  489. package/dist/esm/Toolbar/ToolbarDragContext.js.map +1 -1
  490. package/dist/esm/Toolbar/ToolbarFanOutItem.js.map +1 -1
  491. package/dist/esm/Toolbar/ToolbarFolder.js.map +1 -1
  492. package/dist/esm/Toolbar/ToolbarFolderContext.js.map +1 -1
  493. package/dist/esm/Toolbar/ToolbarGroup.js.map +1 -1
  494. package/dist/esm/Toolbar/ToolbarLayout.js.map +1 -1
  495. package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
  496. package/dist/esm/Toolbar/ToolbarSeparator.js.map +1 -1
  497. package/dist/esm/Toolbar/ToolbarSlot.js.map +1 -1
  498. package/dist/esm/index.d.ts +4 -1
  499. package/dist/esm/index.d.ts.map +1 -1
  500. package/dist/esm/index.js +42 -35
  501. package/dist/esm/index.js.map +1 -1
  502. package/dist/esm/styles.css +1285 -3
  503. package/dist/esm/types/TypeFormat.js.map +1 -1
  504. package/package.json +16 -6
@@ -0,0 +1,237 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useRef, useState, useEffect, useCallback, useLayoutEffect } from 'react';
3
+ import { whenNoteFontReady } from './noteFont.js';
4
+
5
+ const MIN_SIZE = 80;
6
+ // How small the fitted text is allowed to get. Notes live on a canvas that zooms, so text too small to
7
+ // read at 1:1 is still perfectly legible one zoom step in — shrinking is a far better answer than
8
+ // hiding the text behind an affordance, and the floor is set low enough to say so. Only text that will
9
+ // not fit even at this size falls back to the expand affordance.
10
+ const MIN_FONT_SIZE = 4;
11
+ const MAX_FONT_SIZE = 120;
12
+ const PADDING = 12;
13
+ const LINE_HEIGHT_RATIO = 1.4;
14
+ function textFitsAtSize(measurer, text, fontSize, availableWidth, availableHeight) {
15
+ measurer.style.width = `${availableWidth}px`;
16
+ measurer.style.fontSize = `${fontSize}px`;
17
+ measurer.style.lineHeight = `${LINE_HEIGHT_RATIO}`;
18
+ measurer.textContent = text;
19
+ return measurer.scrollHeight <= availableHeight;
20
+ }
21
+ function findOptimalFontSize(measurer, text, width, height) {
22
+ if (!(text ?? '').trim())
23
+ return { fontSize: Math.min(MAX_FONT_SIZE, Math.min(width, height) * 0.4), overflows: false };
24
+ const availableWidth = width - PADDING * 2;
25
+ const availableHeight = height - PADDING * 2;
26
+ let low = MIN_FONT_SIZE;
27
+ let high = MAX_FONT_SIZE;
28
+ // Quick check: if the readability floor doesn't fit, stop shrinking and flag the overflow instead.
29
+ if (!textFitsAtSize(measurer, text, low, availableWidth, availableHeight)) {
30
+ return { fontSize: MIN_FONT_SIZE, overflows: true };
31
+ }
32
+ // Binary search for the largest fitting font size
33
+ while (high - low > 0.5) {
34
+ const mid = (low + high) / 2;
35
+ if (textFitsAtSize(measurer, text, mid, availableWidth, availableHeight)) {
36
+ low = mid;
37
+ }
38
+ else {
39
+ high = mid;
40
+ }
41
+ }
42
+ return { fontSize: Math.floor(low), overflows: false };
43
+ }
44
+ const HANDLE_KEYS = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];
45
+ const HANDLE_POSITIONS = {
46
+ nw: { top: -4, left: -4 },
47
+ n: { top: -4, left: '50%', transform: 'translateX(-50%)' },
48
+ ne: { top: -4, right: -4 },
49
+ e: { top: '50%', right: -4, transform: 'translateY(-50%)' },
50
+ se: { bottom: -4, right: -4 },
51
+ s: { bottom: -4, left: '50%', transform: 'translateX(-50%)' },
52
+ sw: { bottom: -4, left: -4 },
53
+ w: { top: '50%', left: -4, transform: 'translateY(-50%)' },
54
+ };
55
+ const RESIZE_CURSORS = {
56
+ nw: 'nw-resize', n: 'n-resize', ne: 'ne-resize',
57
+ e: 'e-resize', se: 'se-resize',
58
+ s: 's-resize', sw: 'sw-resize', w: 'w-resize',
59
+ };
60
+ const Note = ({ note, selected, onSelect, onMove, onMoveEnd, onResize, onResizeEnd, onTextChange, onExpandedChange }) => {
61
+ const noteRef = useRef(null);
62
+ const measurerRef = useRef(null);
63
+ const textareaRef = useRef(null);
64
+ const [isEditing, setIsEditing] = useState(false);
65
+ const [liveText, setLiveText] = useState(note.text);
66
+ const [fontSize, setFontSize] = useState(MAX_FONT_SIZE);
67
+ const [textareaTopPadding, setTextareaTopPadding] = useState(PADDING);
68
+ // True once the text no longer fits even at the readability floor — shows the "see full text" button.
69
+ const [isOverflowing, setIsOverflowing] = useState(false);
70
+ // The height the note needs to show every line of its text at the fitted size.
71
+ const [fullTextHeight, setFullTextHeight] = useState(0);
72
+ const [isShowingFullText, setIsShowingFullText] = useState(false);
73
+ // The note face is a webfont, so the first measurement can land against the fallback's metrics.
74
+ // Flipping this re-runs the fit once the real face is in.
75
+ const [isFontReady, setIsFontReady] = useState(false);
76
+ useEffect(() => {
77
+ let cancelled = false;
78
+ void whenNoteFontReady().then(() => {
79
+ if (!cancelled)
80
+ setIsFontReady(true);
81
+ });
82
+ return () => {
83
+ cancelled = true;
84
+ };
85
+ }, []);
86
+ const dragRef = useRef(null);
87
+ const resizeRef = useRef(null);
88
+ const readEffectiveZoom = useCallback(() => {
89
+ if (!noteRef.current)
90
+ return 1;
91
+ const renderedWidth = noteRef.current.getBoundingClientRect().width;
92
+ return renderedWidth > 0 ? renderedWidth / note.width : 1;
93
+ }, [note.width]);
94
+ // ── Move ────────────────────────────────────────────────────────────────
95
+ const handlePointerDown = useCallback((event) => {
96
+ if (isEditing)
97
+ return;
98
+ event.stopPropagation();
99
+ onSelect(note.id, event.shiftKey || event.metaKey || event.ctrlKey);
100
+ dragRef.current = {
101
+ clientX: event.clientX,
102
+ clientY: event.clientY,
103
+ startX: note.x,
104
+ startY: note.y,
105
+ zoom: readEffectiveZoom(),
106
+ };
107
+ event.currentTarget.setPointerCapture(event.pointerId);
108
+ }, [isEditing, note.id, note.x, note.y, onSelect, readEffectiveZoom]);
109
+ const handlePointerMove = useCallback((event) => {
110
+ if (!dragRef.current || !event.buttons)
111
+ return;
112
+ const { clientX, clientY, startX, startY, zoom } = dragRef.current;
113
+ const deltaX = (event.clientX - clientX) / zoom;
114
+ const deltaY = (event.clientY - clientY) / zoom;
115
+ onMove(note.id, startX + deltaX, startY + deltaY);
116
+ }, [note.id, onMove]);
117
+ const handlePointerUp = useCallback(() => {
118
+ if (dragRef.current) {
119
+ dragRef.current = null;
120
+ onMoveEnd?.(note.id);
121
+ }
122
+ }, [note.id, onMoveEnd]);
123
+ // ── Resize ──────────────────────────────────────────────────────────────
124
+ const handleResizePointerDown = useCallback((handle) => (event) => {
125
+ event.stopPropagation();
126
+ resizeRef.current = {
127
+ handle,
128
+ clientX: event.clientX,
129
+ clientY: event.clientY,
130
+ startX: note.x,
131
+ startY: note.y,
132
+ startWidth: note.width,
133
+ startHeight: note.height,
134
+ zoom: readEffectiveZoom(),
135
+ };
136
+ event.currentTarget.setPointerCapture(event.pointerId);
137
+ }, [note.x, note.y, note.width, note.height, readEffectiveZoom]);
138
+ const handleResizePointerMove = useCallback((event) => {
139
+ if (!resizeRef.current || !event.buttons)
140
+ return;
141
+ const { handle, clientX, clientY, startX, startY, startWidth, startHeight, zoom } = resizeRef.current;
142
+ const deltaX = (event.clientX - clientX) / zoom;
143
+ const deltaY = (event.clientY - clientY) / zoom;
144
+ let newX = startX;
145
+ let newY = startY;
146
+ let newWidth = startWidth;
147
+ let newHeight = startHeight;
148
+ if (handle === 'e' || handle === 'ne' || handle === 'se') {
149
+ newWidth = Math.max(MIN_SIZE, startWidth + deltaX);
150
+ }
151
+ if (handle === 'w' || handle === 'nw' || handle === 'sw') {
152
+ newWidth = Math.max(MIN_SIZE, startWidth - deltaX);
153
+ newX = startX + startWidth - newWidth;
154
+ }
155
+ if (handle === 's' || handle === 'se' || handle === 'sw') {
156
+ newHeight = Math.max(MIN_SIZE, startHeight + deltaY);
157
+ }
158
+ if (handle === 'n' || handle === 'ne' || handle === 'nw') {
159
+ newHeight = Math.max(MIN_SIZE, startHeight - deltaY);
160
+ newY = startY + startHeight - newHeight;
161
+ }
162
+ onResize(note.id, newX, newY, newWidth, newHeight);
163
+ }, [note.id, onResize]);
164
+ const handleResizePointerUp = useCallback(() => {
165
+ if (resizeRef.current) {
166
+ resizeRef.current = null;
167
+ onResizeEnd?.(note.id);
168
+ }
169
+ }, [note.id, onResizeEnd]);
170
+ // ── Text editing ────────────────────────────────────────────────────────
171
+ const handleDoubleClick = useCallback((event) => {
172
+ event.stopPropagation();
173
+ setLiveText(note.text);
174
+ setIsEditing(true);
175
+ }, [note.text]);
176
+ const handleTextareaChange = useCallback((event) => {
177
+ setLiveText(event.currentTarget.value);
178
+ }, []);
179
+ const handleTextareaBlur = useCallback((event) => {
180
+ onTextChange(note.id, event.currentTarget.value);
181
+ setIsEditing(false);
182
+ }, [note.id, onTextChange]);
183
+ const handleTextareaKeyDown = useCallback((event) => {
184
+ if (event.key === 'Escape') {
185
+ setIsEditing(false);
186
+ }
187
+ }, []);
188
+ // Use live text for font sizing when editing, otherwise use committed text
189
+ const displayText = isEditing ? liveText : note.text;
190
+ // Measure optimal font size using an off-screen div that mirrors the note's
191
+ // word-wrap behavior. Runs synchronously before paint so there is no flash.
192
+ // Also measures actual text height so the textarea can be vertically centred.
193
+ useLayoutEffect(() => {
194
+ if (!measurerRef.current)
195
+ return;
196
+ const { fontSize: optimal, overflows } = findOptimalFontSize(measurerRef.current, displayText, note.width, note.height);
197
+ setFontSize(optimal);
198
+ setIsOverflowing(overflows);
199
+ // After finding the font, read the actual rendered text height to compute
200
+ // vertical padding that centres the text inside the textarea.
201
+ const measurer = measurerRef.current;
202
+ measurer.style.width = `${note.width - PADDING * 2}px`;
203
+ measurer.style.fontSize = `${optimal}px`;
204
+ measurer.style.lineHeight = `${LINE_HEIGHT_RATIO}`;
205
+ measurer.textContent = displayText || '\u00A0';
206
+ const renderedHeight = measurer.scrollHeight;
207
+ const topPad = Math.max(PADDING, (note.height - renderedHeight) / 2);
208
+ setTextareaTopPadding(topPad);
209
+ // The same measurement answers how tall the note has to grow to show everything.
210
+ setFullTextHeight(renderedHeight + PADDING * 2);
211
+ }, [displayText, note.width, note.height, isFontReady]);
212
+ const isExpanded = isShowingFullText && isOverflowing && !isEditing;
213
+ // Editing, retyping or resizing the note re-fits the text, and the note may well fit again — the
214
+ // grown state belongs to the text that no longer fits, so it never outlives it.
215
+ useEffect(() => {
216
+ if (!isOverflowing)
217
+ setIsShowingFullText(false);
218
+ }, [isOverflowing]);
219
+ useEffect(() => {
220
+ onExpandedChange?.(note.id, isExpanded);
221
+ }, [isExpanded, note.id, onExpandedChange]);
222
+ const handleExpand = useCallback((event) => {
223
+ event.stopPropagation();
224
+ setIsShowingFullText(true);
225
+ }, []);
226
+ // Growing is a look, not a mode: the note falls back to its own size the moment the pointer leaves it.
227
+ const handlePointerLeave = useCallback(() => setIsShowingFullText(false), []);
228
+ return (jsxs("div", { ref: noteRef, className: `canvas-note${selected ? ' canvas-note--selected' : ''}${isExpanded ? ' canvas-note--expanded' : ''}`, style: { width: note.width, height: isExpanded ? Math.max(note.height, fullTextHeight) : note.height }, onPointerDown: handlePointerDown, onPointerMove: handlePointerMove, onPointerUp: handlePointerUp, onPointerCancel: handlePointerUp, onPointerLeave: handlePointerLeave, onDoubleClick: handleDoubleClick, children: [jsx("div", { ref: measurerRef, className: 'canvas-note__measurer', "aria-hidden": 'true' }), isEditing ? (jsx("textarea", { ref: textareaRef, className: 'canvas-note__textarea', value: liveText, style: {
229
+ fontSize,
230
+ lineHeight: LINE_HEIGHT_RATIO,
231
+ paddingTop: textareaTopPadding,
232
+ paddingBottom: textareaTopPadding,
233
+ }, autoFocus: true, onChange: handleTextareaChange, onBlur: handleTextareaBlur, onKeyDown: handleTextareaKeyDown, onPointerDown: event => event.stopPropagation() })) : (jsx("p", { className: 'canvas-note__text', style: { fontSize }, children: note.text })), isOverflowing && !isEditing && !isExpanded && (jsx("button", { type: 'button', className: 'canvas-note__expand', "aria-label": 'See full text', title: 'See full text', onClick: handleExpand, onPointerDown: event => event.stopPropagation(), children: jsx("i", { className: 'pi pi-plus' }) })), selected && !isExpanded && HANDLE_KEYS.map(handle => (jsx("div", { className: 'canvas-note__handle', style: { ...HANDLE_POSITIONS[handle], cursor: RESIZE_CURSORS[handle] }, onPointerDown: handleResizePointerDown(handle), onPointerMove: handleResizePointerMove, onPointerUp: handleResizePointerUp, onPointerCancel: handleResizePointerUp }, handle)))] }));
234
+ };
235
+
236
+ export { Note };
237
+ //# sourceMappingURL=Note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Note.js","sources":["../../../../../Canvas/shapes/Note/Note.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { Note } from './Note';
2
+ export type { NoteProps, NoteData } from './Note';
3
+ //# 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,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Note } from './Note';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Canvas/shapes/Note/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function whenNoteFontReady(): Promise<void>;
2
+ //# sourceMappingURL=noteFont.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noteFont.d.ts","sourceRoot":"","sources":["../../../../../Canvas/shapes/Note/noteFont.ts"],"names":[],"mappings":"AAiBA,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOjD"}
@@ -0,0 +1,26 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /** A specimen of the embedded note face (declared in Note.css) — the size is irrelevant to
4
+ * `FontFaceSet.load`, only the family matters. */
5
+ const SPECIMEN = '16px "Patrick Hand"';
6
+ let ready = null;
7
+ /**
8
+ * Resolves once the embedded note font is usable for measurement.
9
+ *
10
+ * The note text is sized by measuring it, and a webfont arrives asynchronously: a measurement taken
11
+ * before it loads uses the fallback face's metrics, so the fitted size is wrong for the face that
12
+ * ends up painting. Notes must re-measure once the real face is in — hence one shared promise for
13
+ * every note on the board rather than a load per note.
14
+ */
15
+ function whenNoteFontReady() {
16
+ if (ready)
17
+ return ready;
18
+ const fonts = typeof document === 'undefined' ? undefined : document.fonts;
19
+ // A failed/unsupported load is not an error worth surfacing — the fallback face still renders,
20
+ // it just measures against different metrics.
21
+ ready = fonts ? fonts.load(SPECIMEN).then(() => undefined, () => undefined) : Promise.resolve();
22
+ return ready;
23
+ }
24
+
25
+ export { whenNoteFontReady };
26
+ //# sourceMappingURL=noteFont.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noteFont.js","sources":["../../../../../Canvas/shapes/Note/noteFont.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AAEA;AACkD;AAClD,MAAM,QAAQ,GAAG,qBAAqB;AAEtC,IAAI,KAAK,GAAyB,IAAI;AAEtC;;;;;;;AAOG;SACa,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;;"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ export interface RegionData {
3
+ id: string;
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ name: string;
9
+ }
10
+ export interface RegionProps {
11
+ region: RegionData;
12
+ selected: boolean;
13
+ onSelect: (id: string, additive: boolean) => void;
14
+ onMove: (id: string, x: number, y: number) => void;
15
+ onMoveEnd?: (id: string) => void;
16
+ onResize: (id: string, x: number, y: number, width: number, height: number) => void;
17
+ onResizeEnd?: (id: string) => void;
18
+ onNameChange: (id: string, name: string) => void;
19
+ children?: React.ReactNode;
20
+ }
21
+ export declare const Region: ({ region, selected, onSelect, onMove, onMoveEnd, onResize, onResizeEnd, onNameChange, children }: RegionProps) => React.JSX.Element;
22
+ //# sourceMappingURL=Region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Region.d.ts","sourceRoot":"","sources":["../../../../../Canvas/shapes/Region/Region.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAwB7D,MAAM,WAAW,UAAU;IAEvB,EAAE,EAAE,MAAM,CAAC;IAEX,CAAC,EAAE,MAAM,CAAC;IAEV,CAAC,EAAE,MAAM,CAAC;IAEV,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAExB,MAAM,EAAE,UAAU,CAAC;IAEnB,QAAQ,EAAE,OAAO,CAAC;IAMlB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAElD,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnD,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpF,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAQjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAUD,eAAO,MAAM,MAAM,GAAI,kGAAkG,WAAW,sBAmNnI,CAAC"}
@@ -0,0 +1,150 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useState, useRef, useCallback } from 'react';
3
+
4
+ const MIN_SIZE = 100;
5
+ const HANDLE_KEYS = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];
6
+ const HANDLE_POSITIONS = {
7
+ nw: { top: -4, left: -4 },
8
+ n: { top: -4, left: '50%', transform: 'translateX(-50%)' },
9
+ ne: { top: -4, right: -4 },
10
+ e: { top: '50%', right: -4, transform: 'translateY(-50%)' },
11
+ se: { bottom: -4, right: -4 },
12
+ s: { bottom: -4, left: '50%', transform: 'translateX(-50%)' },
13
+ sw: { bottom: -4, left: -4 },
14
+ w: { top: '50%', left: -4, transform: 'translateY(-50%)' },
15
+ };
16
+ const RESIZE_CURSORS = {
17
+ nw: 'nw-resize', n: 'n-resize', ne: 'ne-resize',
18
+ e: 'e-resize', se: 'se-resize',
19
+ s: 's-resize', sw: 'sw-resize', w: 'w-resize',
20
+ };
21
+ /**
22
+ * A resizable, draggable, labeled box a host can place other shapes inside of — the generic shell
23
+ * behind a "region" or "group" affordance on a board. Presentational and fully controlled: like
24
+ * {@link Note}, it owns no position/size/name state of its own and reads `region` fresh every render,
25
+ * reporting every change through callbacks instead of committing anything locally. A host that is slow
26
+ * to feed a new `region` back after a callback will see the box spring back to its last known value —
27
+ * the same trade-off `Note` makes for its own drag/resize/rename.
28
+ */
29
+ const Region = ({ region, selected, onSelect, onMove, onMoveEnd, onResize, onResizeEnd, onNameChange, children }) => {
30
+ const [isEditing, setIsEditing] = useState(false);
31
+ const regionRef = useRef(null);
32
+ const titleBarRef = useRef(null);
33
+ const clickedTitleBarRef = useRef(false);
34
+ const dragRef = useRef(null);
35
+ const resizeRef = useRef(null);
36
+ const readEffectiveZoom = useCallback(() => {
37
+ if (!regionRef.current)
38
+ return 1;
39
+ const renderedWidth = regionRef.current.getBoundingClientRect().width;
40
+ return renderedWidth > 0 ? renderedWidth / region.width : 1;
41
+ }, [region.width]);
42
+ // ── Move ────────────────────────────────────────────────────────────────
43
+ // Only the title bar is a drag handle. A press anywhere on the region's body is deliberately left
44
+ // to bubble up to the host: a drag from there is free to become a rubber-band selection instead, and
45
+ // a plain click can select the region itself — a region is a backdrop you can both sweep a
46
+ // selection across and click to select, not a surface that swallows the gesture.
47
+ const handlePointerDown = useCallback((event) => {
48
+ if (isEditing)
49
+ return;
50
+ clickedTitleBarRef.current = titleBarRef.current?.contains(event.target) ?? false;
51
+ if (!clickedTitleBarRef.current)
52
+ return;
53
+ event.stopPropagation();
54
+ onSelect(region.id, event.shiftKey || event.metaKey || event.ctrlKey);
55
+ dragRef.current = {
56
+ clientX: event.clientX,
57
+ clientY: event.clientY,
58
+ startX: region.x,
59
+ startY: region.y,
60
+ zoom: readEffectiveZoom(),
61
+ };
62
+ event.currentTarget.setPointerCapture(event.pointerId);
63
+ }, [isEditing, region.id, region.x, region.y, onSelect, readEffectiveZoom]);
64
+ const handlePointerMove = useCallback((event) => {
65
+ if (!dragRef.current || !event.buttons)
66
+ return;
67
+ const { clientX, clientY, startX, startY, zoom } = dragRef.current;
68
+ const deltaX = (event.clientX - clientX) / zoom;
69
+ const deltaY = (event.clientY - clientY) / zoom;
70
+ onMove(region.id, startX + deltaX, startY + deltaY);
71
+ }, [region.id, onMove]);
72
+ const handlePointerUp = useCallback(() => {
73
+ if (dragRef.current) {
74
+ dragRef.current = null;
75
+ onMoveEnd?.(region.id);
76
+ }
77
+ }, [region.id, onMoveEnd]);
78
+ // ── Resize ──────────────────────────────────────────────────────────────
79
+ const handleResizePointerDown = useCallback((handle) => (event) => {
80
+ clickedTitleBarRef.current = false;
81
+ event.stopPropagation();
82
+ resizeRef.current = {
83
+ handle,
84
+ clientX: event.clientX,
85
+ clientY: event.clientY,
86
+ startX: region.x,
87
+ startY: region.y,
88
+ startWidth: region.width,
89
+ startHeight: region.height,
90
+ zoom: readEffectiveZoom(),
91
+ };
92
+ event.currentTarget.setPointerCapture(event.pointerId);
93
+ }, [region.x, region.y, region.width, region.height, readEffectiveZoom]);
94
+ const handleResizePointerMove = useCallback((event) => {
95
+ if (!resizeRef.current || !event.buttons)
96
+ return;
97
+ const { handle, clientX, clientY, startX, startY, startWidth, startHeight, zoom } = resizeRef.current;
98
+ const deltaX = (event.clientX - clientX) / zoom;
99
+ const deltaY = (event.clientY - clientY) / zoom;
100
+ let newX = startX;
101
+ let newY = startY;
102
+ let newWidth = startWidth;
103
+ let newHeight = startHeight;
104
+ if (handle === 'e' || handle === 'ne' || handle === 'se') {
105
+ newWidth = Math.max(MIN_SIZE, startWidth + deltaX);
106
+ }
107
+ if (handle === 'w' || handle === 'nw' || handle === 'sw') {
108
+ newWidth = Math.max(MIN_SIZE, startWidth - deltaX);
109
+ newX = startX + startWidth - newWidth;
110
+ }
111
+ if (handle === 's' || handle === 'se' || handle === 'sw') {
112
+ newHeight = Math.max(MIN_SIZE, startHeight + deltaY);
113
+ }
114
+ if (handle === 'n' || handle === 'ne' || handle === 'nw') {
115
+ newHeight = Math.max(MIN_SIZE, startHeight - deltaY);
116
+ newY = startY + startHeight - newHeight;
117
+ }
118
+ onResize(region.id, newX, newY, newWidth, newHeight);
119
+ }, [region.id, onResize]);
120
+ const handleResizePointerUp = useCallback(() => {
121
+ if (resizeRef.current) {
122
+ resizeRef.current = null;
123
+ onResizeEnd?.(region.id);
124
+ }
125
+ }, [region.id, onResizeEnd]);
126
+ // ── Rename ──────────────────────────────────────────────────────────────
127
+ const handleDoubleClick = useCallback((event) => {
128
+ if (!clickedTitleBarRef.current)
129
+ return;
130
+ event.stopPropagation();
131
+ setIsEditing(true);
132
+ }, []);
133
+ const commitRename = useCallback((newName) => {
134
+ setIsEditing(false);
135
+ const trimmed = newName.trim();
136
+ if (trimmed && trimmed !== region.name)
137
+ onNameChange(region.id, trimmed);
138
+ }, [region.id, region.name, onNameChange]);
139
+ const handleInputBlur = useCallback((event) => commitRename(event.currentTarget.value), [commitRename]);
140
+ const handleInputKeyDown = useCallback((event) => {
141
+ if (event.key === 'Enter')
142
+ commitRename(event.currentTarget.value);
143
+ else if (event.key === 'Escape')
144
+ setIsEditing(false);
145
+ }, [commitRename]);
146
+ return (jsxs(Fragment, { children: [jsxs("div", { ref: regionRef, className: `canvas-region${selected ? ' canvas-region--selected' : ''}`, style: { width: region.width, height: region.height }, onPointerDown: handlePointerDown, onPointerMove: handlePointerMove, onPointerUp: handlePointerUp, onPointerCancel: handlePointerUp, onDoubleClick: handleDoubleClick, children: [jsx("div", { ref: titleBarRef, className: 'canvas-region__title-bar', children: isEditing ? (jsx("input", { className: 'canvas-region__name-input', type: 'text', defaultValue: region.name, autoFocus: true, onBlur: handleInputBlur, onKeyDown: handleInputKeyDown, onPointerDown: event => event.stopPropagation() })) : (jsx("span", { className: 'canvas-region__name', children: region.name })) }), selected && HANDLE_KEYS.map(handle => (jsx("div", { className: 'canvas-region__handle', style: { ...HANDLE_POSITIONS[handle], cursor: RESIZE_CURSORS[handle] }, onPointerDown: handleResizePointerDown(handle), onPointerMove: handleResizePointerMove, onPointerUp: handleResizePointerUp, onPointerCancel: handleResizePointerUp }, handle)))] }), jsx("div", { className: 'canvas-region__items', children: children })] }));
147
+ };
148
+
149
+ export { Region };
150
+ //# sourceMappingURL=Region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Region.js","sources":["../../../../../Canvas/shapes/Region/Region.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { Region } from './Region';
2
+ export type { RegionProps, RegionData } from './Region';
3
+ //# 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,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Region } from './Region';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Canvas/shapes/Region/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function useDragSelectionGuard(containerRef: React.RefObject<HTMLElement | null>): void;
2
+ //# sourceMappingURL=useDragSelectionGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDragSelectionGuard.d.ts","sourceRoot":"","sources":["../../../Canvas/useDragSelectionGuard.ts"],"names":[],"mappings":"AAcA,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,QA4CtF"}
@@ -0,0 +1,59 @@
1
+ import { useEffect } from 'react';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * Suppresses native text selection for the duration of any pointer drag that starts inside the
7
+ * given container. The `user-select: none` rules on the boards are not enough in Safari — it still
8
+ * starts a selection on mousedown and extends it into chrome outside the board (top bar, controls,
9
+ * dialogs) as the drag sweeps over it. While a drag is live this guard cancels `selectstart` at the
10
+ * document level, clears any existing selection, and turns off selection on `body` (with the
11
+ * `-webkit-` form Safari honors). Drags starting in text inputs keep native selection behavior.
12
+ * @param containerRef The container whose pointer drags should suppress selection.
13
+ */
14
+ function useDragSelectionGuard(containerRef) {
15
+ useEffect(() => {
16
+ const container = containerRef.current;
17
+ if (!container)
18
+ return;
19
+ let active = false;
20
+ let previousUserSelect = '';
21
+ let previousWebkitUserSelect = '';
22
+ const suppressSelection = (event) => event.preventDefault();
23
+ const end = () => {
24
+ if (!active)
25
+ return;
26
+ active = false;
27
+ document.removeEventListener('selectstart', suppressSelection, true);
28
+ document.body.style.userSelect = previousUserSelect;
29
+ document.body.style.webkitUserSelect = previousWebkitUserSelect;
30
+ };
31
+ const begin = (event) => {
32
+ const target = event.target;
33
+ if (target?.closest('textarea, input, [contenteditable="true"]'))
34
+ return;
35
+ if (active)
36
+ return;
37
+ active = true;
38
+ previousUserSelect = document.body.style.userSelect;
39
+ previousWebkitUserSelect = document.body.style.webkitUserSelect;
40
+ document.body.style.userSelect = 'none';
41
+ document.body.style.webkitUserSelect = 'none';
42
+ window.getSelection()?.removeAllRanges();
43
+ document.addEventListener('selectstart', suppressSelection, true);
44
+ };
45
+ const handleRelease = () => end();
46
+ container.addEventListener('pointerdown', begin, true);
47
+ document.addEventListener('pointerup', handleRelease, true);
48
+ document.addEventListener('pointercancel', handleRelease, true);
49
+ return () => {
50
+ container.removeEventListener('pointerdown', begin, true);
51
+ document.removeEventListener('pointerup', handleRelease, true);
52
+ document.removeEventListener('pointercancel', handleRelease, true);
53
+ end();
54
+ };
55
+ }, [containerRef]);
56
+ }
57
+
58
+ export { useDragSelectionGuard };
59
+ //# sourceMappingURL=useDragSelectionGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDragSelectionGuard.js","sources":["../../../Canvas/useDragSelectionGuard.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;AACA;AAIA;;;;;;;;AAQG;AACG,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;;"}
@@ -0,0 +1,4 @@
1
+ export declare const isMultiTouchCapableDevice: boolean;
2
+ export declare function shouldUseCssZoom(zoom: number, preferTransform: boolean, isMultiTouchCapable: boolean): boolean;
3
+ export declare function applyZoomLayer(element: HTMLElement, zoom: number, preferTransform?: boolean): void;
4
+ //# sourceMappingURL=zoomMechanism.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoomMechanism.d.ts","sourceRoot":"","sources":["../../../Canvas/zoomMechanism.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,yBAAyB,SAAyB,CAAC;AAoBhE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAG,OAAO,CAE9G;AAaD,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,UAAQ,GAAG,IAAI,CAUhG"}