@bigbluebutton/tldraw 2.0.0-alpha.34 → 2.0.0-alpha.35

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 (379) hide show
  1. package/dist-cjs/index.js +4 -4
  2. package/dist-cjs/index.js.map +1 -1
  3. package/dist-cjs/lib/Tldraw.js +1 -2
  4. package/dist-cjs/lib/Tldraw.js.map +1 -1
  5. package/dist-cjs/lib/canvas/TldrawHandles.js +1 -2
  6. package/dist-cjs/lib/canvas/TldrawHandles.js.map +1 -1
  7. package/dist-cjs/lib/canvas/TldrawHoveredShapeIndicator.js +1 -2
  8. package/dist-cjs/lib/canvas/TldrawHoveredShapeIndicator.js.map +1 -1
  9. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -2
  10. package/dist-cjs/lib/canvas/TldrawScribble.js.map +1 -1
  11. package/dist-cjs/lib/canvas/TldrawSelectionBackground.js +1 -2
  12. package/dist-cjs/lib/canvas/TldrawSelectionBackground.js.map +1 -1
  13. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +1 -2
  14. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +1 -1
  15. package/dist-cjs/lib/defaultExternalContentHandlers.js +3 -6
  16. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +1 -1
  17. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +7 -14
  18. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +1 -1
  19. package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +1 -2
  20. package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +1 -1
  21. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +6 -12
  22. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +1 -1
  23. package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +12 -24
  24. package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +1 -1
  25. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -2
  26. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  27. package/dist-cjs/lib/shapes/frame/FrameShapeTool.js +4 -8
  28. package/dist-cjs/lib/shapes/frame/FrameShapeTool.js.map +1 -1
  29. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +3 -6
  30. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +1 -1
  31. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -2
  32. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +1 -1
  33. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +4 -8
  34. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +1 -1
  35. package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +1 -2
  36. package/dist-cjs/lib/shapes/geo/toolStates/Idle.js.map +1 -1
  37. package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +2 -4
  38. package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +1 -1
  39. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +5 -10
  40. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +1 -1
  41. package/dist-cjs/lib/shapes/line/components/svg.js +1 -2
  42. package/dist-cjs/lib/shapes/line/components/svg.js.map +1 -1
  43. package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +5 -10
  44. package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +1 -1
  45. package/dist-cjs/lib/shapes/poll/components/CustomizedAxisTick.js +1 -2
  46. package/dist-cjs/lib/shapes/poll/components/CustomizedAxisTick.js.map +1 -1
  47. package/dist-cjs/lib/shapes/poll/components/poll-content.js +1 -2
  48. package/dist-cjs/lib/shapes/poll/components/poll-content.js.map +1 -1
  49. package/dist-cjs/lib/shapes/shared/TextHelpers.js +2 -4
  50. package/dist-cjs/lib/shapes/shared/TextHelpers.js.map +1 -1
  51. package/dist-cjs/lib/shapes/shared/createTextSvgElementFromSpans.js +1 -2
  52. package/dist-cjs/lib/shapes/shared/createTextSvgElementFromSpans.js.map +1 -1
  53. package/dist-cjs/lib/shapes/shared/defaultStyleDefs.js +8 -16
  54. package/dist-cjs/lib/shapes/shared/defaultStyleDefs.js.map +1 -1
  55. package/dist-cjs/lib/shapes/shared/freehand/getStrokePoints.js +6 -12
  56. package/dist-cjs/lib/shapes/shared/freehand/getStrokePoints.js.map +1 -1
  57. package/dist-cjs/lib/shapes/shared/freehand/setStrokePointRadii.js +1 -2
  58. package/dist-cjs/lib/shapes/shared/freehand/setStrokePointRadii.js.map +1 -1
  59. package/dist-cjs/lib/shapes/shared/freehand/svgInk.js +2 -4
  60. package/dist-cjs/lib/shapes/shared/freehand/svgInk.js.map +1 -1
  61. package/dist-cjs/lib/shapes/shared/useEditableText.js +5 -10
  62. package/dist-cjs/lib/shapes/shared/useEditableText.js.map +1 -1
  63. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +6 -12
  64. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +1 -1
  65. package/dist-cjs/lib/shapes/text/toolStates/Idle.js +1 -2
  66. package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +1 -1
  67. package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +1 -2
  68. package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +1 -1
  69. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +2 -4
  70. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  71. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +2 -4
  72. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +1 -1
  73. package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js +1 -2
  74. package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +1 -1
  75. package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +25 -30
  76. package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +1 -1
  77. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +12 -24
  78. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +1 -1
  79. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js +1 -2
  80. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js.map +1 -1
  81. package/dist-cjs/lib/tools/SelectTool/childStates/Cropping.js +8 -16
  82. package/dist-cjs/lib/tools/SelectTool/childStates/Cropping.js.map +1 -1
  83. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +3 -6
  84. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +1 -1
  85. package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +2 -4
  86. package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +1 -1
  87. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +21 -42
  88. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +1 -1
  89. package/dist-cjs/lib/tools/SelectTool/childStates/PointingCropHandle.js +1 -2
  90. package/dist-cjs/lib/tools/SelectTool/childStates/PointingCropHandle.js.map +1 -1
  91. package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js +1 -2
  92. package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js.map +1 -1
  93. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +1 -2
  94. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +1 -1
  95. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +5 -10
  96. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +1 -1
  97. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +2 -4
  98. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +1 -1
  99. package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +1 -2
  100. package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +1 -1
  101. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +4 -8
  102. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +1 -1
  103. package/dist-cjs/lib/tools/SelectTool/children/DraggingHandle.js +3 -6
  104. package/dist-cjs/lib/tools/SelectTool/children/DraggingHandle.js.map +1 -1
  105. package/dist-cjs/lib/tools/selection-logic/updateHoveredId.js +1 -2
  106. package/dist-cjs/lib/tools/selection-logic/updateHoveredId.js.map +1 -1
  107. package/dist-cjs/lib/ui/assetUrls.js +1 -2
  108. package/dist-cjs/lib/ui/assetUrls.js.map +1 -1
  109. package/dist-cjs/lib/ui/components/ActionsMenu.js +2 -4
  110. package/dist-cjs/lib/ui/components/ActionsMenu.js.map +1 -1
  111. package/dist-cjs/lib/ui/components/BackToContent.js +1 -2
  112. package/dist-cjs/lib/ui/components/BackToContent.js.map +1 -1
  113. package/dist-cjs/lib/ui/components/ContextMenu.js +3 -6
  114. package/dist-cjs/lib/ui/components/ContextMenu.js.map +1 -1
  115. package/dist-cjs/lib/ui/components/DebugPanel.js +2 -4
  116. package/dist-cjs/lib/ui/components/DebugPanel.js.map +1 -1
  117. package/dist-cjs/lib/ui/components/EditLinkDialog.js +2 -4
  118. package/dist-cjs/lib/ui/components/EditLinkDialog.js.map +1 -1
  119. package/dist-cjs/lib/ui/components/EmbedDialog.js +1 -2
  120. package/dist-cjs/lib/ui/components/EmbedDialog.js.map +1 -1
  121. package/dist-cjs/lib/ui/components/FollowingIndicator.js +2 -4
  122. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +1 -1
  123. package/dist-cjs/lib/ui/components/HelpMenu.js +2 -4
  124. package/dist-cjs/lib/ui/components/HelpMenu.js.map +1 -1
  125. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog.js +2 -4
  126. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog.js.map +1 -1
  127. package/dist-cjs/lib/ui/components/Menu.js +5 -10
  128. package/dist-cjs/lib/ui/components/Menu.js.map +1 -1
  129. package/dist-cjs/lib/ui/components/NavigationZone/Minimap.js +3 -6
  130. package/dist-cjs/lib/ui/components/NavigationZone/Minimap.js.map +1 -1
  131. package/dist-cjs/lib/ui/components/PageMenu/PageMenu.js +5 -10
  132. package/dist-cjs/lib/ui/components/PageMenu/PageMenu.js.map +1 -1
  133. package/dist-cjs/lib/ui/components/PenModeToggle.js +1 -2
  134. package/dist-cjs/lib/ui/components/PenModeToggle.js.map +1 -1
  135. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +1 -2
  136. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +1 -1
  137. package/dist-cjs/lib/ui/components/StylePanel/StylePanel.js +1 -2
  138. package/dist-cjs/lib/ui/components/StylePanel/StylePanel.js.map +1 -1
  139. package/dist-cjs/lib/ui/components/Toasts.js +1 -2
  140. package/dist-cjs/lib/ui/components/Toasts.js.map +1 -1
  141. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +1 -2
  142. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +1 -1
  143. package/dist-cjs/lib/ui/components/TrashButton.js +1 -2
  144. package/dist-cjs/lib/ui/components/TrashButton.js.map +1 -1
  145. package/dist-cjs/lib/ui/components/primitives/ButtonPicker.js +2 -4
  146. package/dist-cjs/lib/ui/components/primitives/ButtonPicker.js.map +1 -1
  147. package/dist-cjs/lib/ui/components/primitives/Input.js +1 -2
  148. package/dist-cjs/lib/ui/components/primitives/Input.js.map +1 -1
  149. package/dist-cjs/lib/ui/components/primitives/Slider.js +1 -2
  150. package/dist-cjs/lib/ui/components/primitives/Slider.js.map +1 -1
  151. package/dist-cjs/lib/ui/hooks/clipboard/pasteExcalidrawContent.js +2 -4
  152. package/dist-cjs/lib/ui/hooks/clipboard/pasteExcalidrawContent.js.map +1 -1
  153. package/dist-cjs/lib/ui/hooks/menuHelpers.js +5 -10
  154. package/dist-cjs/lib/ui/hooks/menuHelpers.js.map +1 -1
  155. package/dist-cjs/lib/ui/hooks/useActions.js +73 -146
  156. package/dist-cjs/lib/ui/hooks/useActions.js.map +1 -1
  157. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +6 -12
  158. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +1 -1
  159. package/dist-cjs/lib/ui/hooks/useHighDpiCanvas.js +1 -2
  160. package/dist-cjs/lib/ui/hooks/useHighDpiCanvas.js.map +1 -1
  161. package/dist-cjs/lib/ui/hooks/useInsertMedia.js +1 -2
  162. package/dist-cjs/lib/ui/hooks/useInsertMedia.js.map +1 -1
  163. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +8 -16
  164. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +1 -1
  165. package/dist-cjs/lib/ui/hooks/useMenuIsOpen.js +1 -2
  166. package/dist-cjs/lib/ui/hooks/useMenuIsOpen.js.map +1 -1
  167. package/dist-cjs/lib/ui/hooks/useMenuSchema.js +2 -4
  168. package/dist-cjs/lib/ui/hooks/useMenuSchema.js.map +1 -1
  169. package/dist-cjs/lib/ui/hooks/usePreloadAssets.js +2 -4
  170. package/dist-cjs/lib/ui/hooks/usePreloadAssets.js.map +1 -1
  171. package/dist-cjs/lib/ui/hooks/usePreloadIcons.js +1 -2
  172. package/dist-cjs/lib/ui/hooks/usePreloadIcons.js.map +1 -1
  173. package/dist-cjs/lib/ui/hooks/usePrint.js +2 -4
  174. package/dist-cjs/lib/ui/hooks/usePrint.js.map +1 -1
  175. package/dist-cjs/lib/ui/hooks/useRevelantStyles.js +1 -2
  176. package/dist-cjs/lib/ui/hooks/useRevelantStyles.js.map +1 -1
  177. package/dist-cjs/lib/utils/assets/is-gif-animated.js +9 -0
  178. package/dist-cjs/lib/utils/assets/is-gif-animated.js.map +1 -1
  179. package/dist-cjs/lib/utils/export/export.js +2 -4
  180. package/dist-cjs/lib/utils/export/export.js.map +1 -1
  181. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  182. package/dist-cjs/lib/utils/export/exportAs.js.map +1 -1
  183. package/dist-cjs/lib/utils/frames/frames.js +4 -8
  184. package/dist-cjs/lib/utils/frames/frames.js.map +1 -1
  185. package/dist-cjs/lib/utils/static-assets/assetUrls.js +1 -2
  186. package/dist-cjs/lib/utils/static-assets/assetUrls.js.map +1 -1
  187. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +10 -20
  188. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +1 -1
  189. package/dist-cjs/lib/utils/tldr/file.js +1 -2
  190. package/dist-cjs/lib/utils/tldr/file.js.map +1 -1
  191. package/dist-esm/lib/Tldraw.mjs +1 -2
  192. package/dist-esm/lib/Tldraw.mjs.map +1 -1
  193. package/dist-esm/lib/canvas/TldrawHandles.mjs +1 -2
  194. package/dist-esm/lib/canvas/TldrawHandles.mjs.map +1 -1
  195. package/dist-esm/lib/canvas/TldrawHoveredShapeIndicator.mjs +1 -2
  196. package/dist-esm/lib/canvas/TldrawHoveredShapeIndicator.mjs.map +1 -1
  197. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -2
  198. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +1 -1
  199. package/dist-esm/lib/canvas/TldrawSelectionBackground.mjs +1 -2
  200. package/dist-esm/lib/canvas/TldrawSelectionBackground.mjs.map +1 -1
  201. package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +1 -2
  202. package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +1 -1
  203. package/dist-esm/lib/defaultExternalContentHandlers.mjs +3 -6
  204. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +1 -1
  205. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +7 -14
  206. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +1 -1
  207. package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +1 -2
  208. package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +1 -1
  209. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +6 -12
  210. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +1 -1
  211. package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +12 -24
  212. package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +1 -1
  213. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -2
  214. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  215. package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs +4 -8
  216. package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs.map +1 -1
  217. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +3 -6
  218. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +1 -1
  219. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -2
  220. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +1 -1
  221. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +4 -8
  222. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +1 -1
  223. package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +1 -2
  224. package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs.map +1 -1
  225. package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +2 -4
  226. package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +1 -1
  227. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +5 -10
  228. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +1 -1
  229. package/dist-esm/lib/shapes/line/components/svg.mjs +1 -2
  230. package/dist-esm/lib/shapes/line/components/svg.mjs.map +1 -1
  231. package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +5 -10
  232. package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +1 -1
  233. package/dist-esm/lib/shapes/poll/components/CustomizedAxisTick.mjs +1 -2
  234. package/dist-esm/lib/shapes/poll/components/CustomizedAxisTick.mjs.map +1 -1
  235. package/dist-esm/lib/shapes/poll/components/poll-content.mjs +1 -2
  236. package/dist-esm/lib/shapes/poll/components/poll-content.mjs.map +1 -1
  237. package/dist-esm/lib/shapes/shared/TextHelpers.mjs +2 -4
  238. package/dist-esm/lib/shapes/shared/TextHelpers.mjs.map +1 -1
  239. package/dist-esm/lib/shapes/shared/createTextSvgElementFromSpans.mjs +1 -2
  240. package/dist-esm/lib/shapes/shared/createTextSvgElementFromSpans.mjs.map +1 -1
  241. package/dist-esm/lib/shapes/shared/defaultStyleDefs.mjs +8 -16
  242. package/dist-esm/lib/shapes/shared/defaultStyleDefs.mjs.map +1 -1
  243. package/dist-esm/lib/shapes/shared/freehand/getStrokePoints.mjs +6 -12
  244. package/dist-esm/lib/shapes/shared/freehand/getStrokePoints.mjs.map +1 -1
  245. package/dist-esm/lib/shapes/shared/freehand/setStrokePointRadii.mjs +1 -2
  246. package/dist-esm/lib/shapes/shared/freehand/setStrokePointRadii.mjs.map +1 -1
  247. package/dist-esm/lib/shapes/shared/freehand/svgInk.mjs +2 -4
  248. package/dist-esm/lib/shapes/shared/freehand/svgInk.mjs.map +1 -1
  249. package/dist-esm/lib/shapes/shared/useEditableText.mjs +5 -10
  250. package/dist-esm/lib/shapes/shared/useEditableText.mjs.map +1 -1
  251. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +6 -12
  252. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +1 -1
  253. package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +1 -2
  254. package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +1 -1
  255. package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +1 -2
  256. package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +1 -1
  257. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +2 -4
  258. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  259. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +2 -4
  260. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +1 -1
  261. package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs +1 -2
  262. package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +1 -1
  263. package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +25 -30
  264. package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +1 -1
  265. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +12 -24
  266. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +1 -1
  267. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs +1 -2
  268. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs.map +1 -1
  269. package/dist-esm/lib/tools/SelectTool/childStates/Cropping.mjs +8 -16
  270. package/dist-esm/lib/tools/SelectTool/childStates/Cropping.mjs.map +1 -1
  271. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +3 -6
  272. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +1 -1
  273. package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +2 -4
  274. package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +1 -1
  275. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +21 -42
  276. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +1 -1
  277. package/dist-esm/lib/tools/SelectTool/childStates/PointingCropHandle.mjs +1 -2
  278. package/dist-esm/lib/tools/SelectTool/childStates/PointingCropHandle.mjs.map +1 -1
  279. package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs +1 -2
  280. package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs.map +1 -1
  281. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +1 -2
  282. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +1 -1
  283. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -10
  284. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +1 -1
  285. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +2 -4
  286. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +1 -1
  287. package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +1 -2
  288. package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +1 -1
  289. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +4 -8
  290. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +1 -1
  291. package/dist-esm/lib/tools/SelectTool/children/DraggingHandle.mjs +3 -6
  292. package/dist-esm/lib/tools/SelectTool/children/DraggingHandle.mjs.map +1 -1
  293. package/dist-esm/lib/tools/selection-logic/updateHoveredId.mjs +1 -2
  294. package/dist-esm/lib/tools/selection-logic/updateHoveredId.mjs.map +1 -1
  295. package/dist-esm/lib/ui/assetUrls.mjs +1 -2
  296. package/dist-esm/lib/ui/assetUrls.mjs.map +1 -1
  297. package/dist-esm/lib/ui/components/ActionsMenu.mjs +2 -4
  298. package/dist-esm/lib/ui/components/ActionsMenu.mjs.map +1 -1
  299. package/dist-esm/lib/ui/components/BackToContent.mjs +1 -2
  300. package/dist-esm/lib/ui/components/BackToContent.mjs.map +1 -1
  301. package/dist-esm/lib/ui/components/ContextMenu.mjs +3 -6
  302. package/dist-esm/lib/ui/components/ContextMenu.mjs.map +1 -1
  303. package/dist-esm/lib/ui/components/DebugPanel.mjs +2 -4
  304. package/dist-esm/lib/ui/components/DebugPanel.mjs.map +1 -1
  305. package/dist-esm/lib/ui/components/EditLinkDialog.mjs +2 -4
  306. package/dist-esm/lib/ui/components/EditLinkDialog.mjs.map +1 -1
  307. package/dist-esm/lib/ui/components/EmbedDialog.mjs +1 -2
  308. package/dist-esm/lib/ui/components/EmbedDialog.mjs.map +1 -1
  309. package/dist-esm/lib/ui/components/FollowingIndicator.mjs +2 -4
  310. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +1 -1
  311. package/dist-esm/lib/ui/components/HelpMenu.mjs +2 -4
  312. package/dist-esm/lib/ui/components/HelpMenu.mjs.map +1 -1
  313. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog.mjs +2 -4
  314. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog.mjs.map +1 -1
  315. package/dist-esm/lib/ui/components/Menu.mjs +5 -10
  316. package/dist-esm/lib/ui/components/Menu.mjs.map +1 -1
  317. package/dist-esm/lib/ui/components/NavigationZone/Minimap.mjs +3 -6
  318. package/dist-esm/lib/ui/components/NavigationZone/Minimap.mjs.map +1 -1
  319. package/dist-esm/lib/ui/components/PageMenu/PageMenu.mjs +5 -10
  320. package/dist-esm/lib/ui/components/PageMenu/PageMenu.mjs.map +1 -1
  321. package/dist-esm/lib/ui/components/PenModeToggle.mjs +1 -2
  322. package/dist-esm/lib/ui/components/PenModeToggle.mjs.map +1 -1
  323. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +1 -2
  324. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +1 -1
  325. package/dist-esm/lib/ui/components/StylePanel/StylePanel.mjs +1 -2
  326. package/dist-esm/lib/ui/components/StylePanel/StylePanel.mjs.map +1 -1
  327. package/dist-esm/lib/ui/components/Toasts.mjs +1 -2
  328. package/dist-esm/lib/ui/components/Toasts.mjs.map +1 -1
  329. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +1 -2
  330. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +1 -1
  331. package/dist-esm/lib/ui/components/TrashButton.mjs +1 -2
  332. package/dist-esm/lib/ui/components/TrashButton.mjs.map +1 -1
  333. package/dist-esm/lib/ui/components/primitives/ButtonPicker.mjs +2 -4
  334. package/dist-esm/lib/ui/components/primitives/ButtonPicker.mjs.map +1 -1
  335. package/dist-esm/lib/ui/components/primitives/Input.mjs +1 -2
  336. package/dist-esm/lib/ui/components/primitives/Input.mjs.map +1 -1
  337. package/dist-esm/lib/ui/components/primitives/Slider.mjs +1 -2
  338. package/dist-esm/lib/ui/components/primitives/Slider.mjs.map +1 -1
  339. package/dist-esm/lib/ui/hooks/clipboard/pasteExcalidrawContent.mjs +2 -4
  340. package/dist-esm/lib/ui/hooks/clipboard/pasteExcalidrawContent.mjs.map +1 -1
  341. package/dist-esm/lib/ui/hooks/menuHelpers.mjs +5 -10
  342. package/dist-esm/lib/ui/hooks/menuHelpers.mjs.map +1 -1
  343. package/dist-esm/lib/ui/hooks/useActions.mjs +73 -146
  344. package/dist-esm/lib/ui/hooks/useActions.mjs.map +1 -1
  345. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +6 -12
  346. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +1 -1
  347. package/dist-esm/lib/ui/hooks/useHighDpiCanvas.mjs +1 -2
  348. package/dist-esm/lib/ui/hooks/useHighDpiCanvas.mjs.map +1 -1
  349. package/dist-esm/lib/ui/hooks/useInsertMedia.mjs +1 -2
  350. package/dist-esm/lib/ui/hooks/useInsertMedia.mjs.map +1 -1
  351. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +8 -16
  352. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +1 -1
  353. package/dist-esm/lib/ui/hooks/useMenuIsOpen.mjs +1 -2
  354. package/dist-esm/lib/ui/hooks/useMenuIsOpen.mjs.map +1 -1
  355. package/dist-esm/lib/ui/hooks/useMenuSchema.mjs +2 -4
  356. package/dist-esm/lib/ui/hooks/useMenuSchema.mjs.map +1 -1
  357. package/dist-esm/lib/ui/hooks/usePreloadAssets.mjs +2 -4
  358. package/dist-esm/lib/ui/hooks/usePreloadAssets.mjs.map +1 -1
  359. package/dist-esm/lib/ui/hooks/usePreloadIcons.mjs +1 -2
  360. package/dist-esm/lib/ui/hooks/usePreloadIcons.mjs.map +1 -1
  361. package/dist-esm/lib/ui/hooks/usePrint.mjs +2 -4
  362. package/dist-esm/lib/ui/hooks/usePrint.mjs.map +1 -1
  363. package/dist-esm/lib/ui/hooks/useRevelantStyles.mjs +1 -2
  364. package/dist-esm/lib/ui/hooks/useRevelantStyles.mjs.map +1 -1
  365. package/dist-esm/lib/utils/assets/is-gif-animated.mjs +9 -0
  366. package/dist-esm/lib/utils/assets/is-gif-animated.mjs.map +1 -1
  367. package/dist-esm/lib/utils/export/export.mjs +2 -4
  368. package/dist-esm/lib/utils/export/export.mjs.map +1 -1
  369. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  370. package/dist-esm/lib/utils/export/exportAs.mjs.map +1 -1
  371. package/dist-esm/lib/utils/frames/frames.mjs +4 -8
  372. package/dist-esm/lib/utils/frames/frames.mjs.map +1 -1
  373. package/dist-esm/lib/utils/static-assets/assetUrls.mjs +1 -2
  374. package/dist-esm/lib/utils/static-assets/assetUrls.mjs.map +1 -1
  375. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +10 -20
  376. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +1 -1
  377. package/dist-esm/lib/utils/tldr/file.mjs +1 -2
  378. package/dist-esm/lib/utils/tldr/file.mjs.map +1 -1
  379. package/package.json +2 -2
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/tools/SelectTool/childStates/EditingShape.ts"],
4
4
  "sourcesContent": ["import {\n\tGroup2d,\n\tStateNode,\n\tTLArrowShape,\n\tTLEventHandlers,\n\tTLFrameShape,\n\tTLGeoShape,\n} from '@bigbluebutton/editor'\nimport { getHitShapeOnCanvasPointerDown } from '../../selection-logic/getHitShapeOnCanvasPointerDown'\nimport { updateHoveredId } from '../../selection-logic/updateHoveredId'\n\nexport class EditingShape extends StateNode {\n\tstatic override id = 'editing_shape'\n\n\toverride onEnter = () => {\n\t\tconst editingShape = this.editor.getEditingShape()\n\t\tif (!editingShape) throw Error('Entered editing state without an editing shape')\n\t\tupdateHoveredId(this.editor)\n\t\tthis.editor.select(editingShape)\n\t}\n\n\toverride onExit = () => {\n\t\tconst { editingShapeId } = this.editor.getCurrentPageState()\n\t\tif (!editingShapeId) return\n\n\t\t// Clear the editing shape\n\t\tthis.editor.setEditingShape(null)\n\n\t\tconst shape = this.editor.getShape(editingShapeId)!\n\t\tconst util = this.editor.getShapeUtil(shape)\n\n\t\t// Check for changes on editing end\n\t\tutil.onEditEnd?.(shape)\n\n\t\tsetTimeout(() => {\n\t\t\tthis.editor.updateViewportScreenBounds()\n\t\t}, 500)\n\t}\n\n\toverride onPointerMove: TLEventHandlers['onPointerMove'] = (info) => {\n\t\tswitch (info.target) {\n\t\t\tcase 'shape':\n\t\t\tcase 'canvas': {\n\t\t\t\tupdateHoveredId(this.editor)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\toverride onPointerDown: TLEventHandlers['onPointerDown'] = (info) => {\n\t\tswitch (info.target) {\n\t\t\tcase 'canvas': {\n\t\t\t\tconst hitShape = getHitShapeOnCanvasPointerDown(this.editor)\n\t\t\t\tif (hitShape) {\n\t\t\t\t\tthis.onPointerDown({\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\tshape: hitShape,\n\t\t\t\t\t\ttarget: 'shape',\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'shape': {\n\t\t\t\tconst { shape } = info\n\t\t\t\tconst editingShape = this.editor.getEditingShape()\n\n\t\t\t\tif (!editingShape) {\n\t\t\t\t\tthrow Error('Expected an editing shape!')\n\t\t\t\t}\n\n\t\t\t\tif (shape.type === editingShape.type) {\n\t\t\t\t\t// clicked a shape of the same type as the editing shape\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.editor.isShapeOfType<TLGeoShape>(shape, 'geo') ||\n\t\t\t\t\t\tthis.editor.isShapeOfType<TLArrowShape>(shape, 'arrow')\n\t\t\t\t\t) {\n\t\t\t\t\t\t// for shapes with labels, check to see if the click was inside of the shape's label\n\t\t\t\t\t\tconst geometry = this.editor.getShapeUtil(shape).getGeometry(shape) as Group2d\n\t\t\t\t\t\tconst labelGeometry = geometry.children[1]\n\t\t\t\t\t\tif (labelGeometry) {\n\t\t\t\t\t\t\tconst pointInShapeSpace = this.editor.getPointInShapeSpace(\n\t\t\t\t\t\t\t\tshape,\n\t\t\t\t\t\t\t\tthis.editor.inputs.currentPagePoint\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tif (labelGeometry.bounds.containsPoint(pointInShapeSpace)) {\n\t\t\t\t\t\t\t\t// it's a hit to the label!\n\t\t\t\t\t\t\t\tif (shape.id === editingShape.id) {\n\t\t\t\t\t\t\t\t\t// If we clicked on the editing geo / arrow shape's label, do nothing\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.parent.transition('pointing_shape', info)\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (shape.id === editingShape.id) {\n\t\t\t\t\t\t\t// If we clicked on a frame, while editing its heading, cancel editing\n\t\t\t\t\t\t\tif (this.editor.isShapeOfType<TLFrameShape>(shape, 'frame')) {\n\t\t\t\t\t\t\t\tthis.editor.setEditingShape(null)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// If we clicked on the editing shape (which isn't a shape with a label), do nothing\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// But if we clicked on a different shape of the same type, transition to pointing_shape instead\n\t\t\t\t\t\t\tthis.parent.transition('pointing_shape', info)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// clicked a different kind of shape\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// still here? Cancel editing and transition back to select idle\n\t\tthis.parent.transition('idle', info)\n\t\t// then feed the pointer down event back into the state chart as if it happened in that state\n\t\tthis.editor.root.handleEvent(info)\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = (info) => {\n\t\tthis.parent.transition('idle', info)\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = (info) => {\n\t\tthis.parent.transition('idle', info)\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOO;AACP,4CAA+C;AAC/C,6BAAgC;AAEzB,MAAM,qBAAqB,wBAAU;AAAA,EAC3C,OAAgB,KAAK;AAAA,EAEZ,UAAU,MAAM;AACxB,UAAM,eAAe,KAAK,OAAO,gBAAgB;AACjD,QAAI,CAAC;AAAc,YAAM,MAAM,gDAAgD;AAC/E,gDAAgB,KAAK,MAAM;AAC3B,SAAK,OAAO,OAAO,YAAY;AAAA,EAChC;AAAA,EAES,SAAS,MAAM;AACvB,UAAM,EAAE,eAAe,IAAI,KAAK,OAAO,oBAAoB;AAC3D,QAAI,CAAC;AAAgB;AAGrB,SAAK,OAAO,gBAAgB,IAAI;AAEhC,UAAM,QAAQ,KAAK,OAAO,SAAS,cAAc;AACjD,UAAM,OAAO,KAAK,OAAO,aAAa,KAAK;AAG3C,SAAK,YAAY,KAAK;AAEtB,eAAW,MAAM;AAChB,WAAK,OAAO,2BAA2B;AAAA,IACxC,GAAG,GAAG;AAAA,EACP;AAAA,EAES,gBAAkD,CAAC,SAAS;AACpE,YAAQ,KAAK,QAAQ;AAAA,MACpB,KAAK;AAAA,MACL,KAAK,UAAU;AACd,oDAAgB,KAAK,MAAM;AAC3B;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACS,gBAAkD,CAAC,SAAS;AACpE,YAAQ,KAAK,QAAQ;AAAA,MACpB,KAAK,UAAU;AACd,cAAM,eAAW,sEAA+B,KAAK,MAAM;AAC3D,YAAI,UAAU;AACb,eAAK,cAAc;AAAA,YAClB,GAAG;AAAA,YACH,OAAO;AAAA,YACP,QAAQ;AAAA,UACT,CAAC;AACD;AAAA,QACD;AACA;AAAA,MACD;AAAA,MACA,KAAK,SAAS;AACb,cAAM,EAAE,MAAM,IAAI;AAClB,cAAM,eAAe,KAAK,OAAO,gBAAgB;AAEjD,YAAI,CAAC,cAAc;AAClB,gBAAM,MAAM,4BAA4B;AAAA,QACzC;AAEA,YAAI,MAAM,SAAS,aAAa,MAAM;AAErC,cACC,KAAK,OAAO,cAA0B,OAAO,KAAK,KAClD,KAAK,OAAO,cAA4B,OAAO,OAAO,GACrD;AAED,kBAAM,WAAW,KAAK,OAAO,aAAa,KAAK,EAAE,YAAY,KAAK;AAClE,kBAAM,gBAAgB,SAAS,SAAS,CAAC;AACzC,gBAAI,eAAe;AAClB,oBAAM,oBAAoB,KAAK,OAAO;AAAA,gBACrC;AAAA,gBACA,KAAK,OAAO,OAAO;AAAA,cACpB;AACA,kBAAI,cAAc,OAAO,cAAc,iBAAiB,GAAG;AAE1D,oBAAI,MAAM,OAAO,aAAa,IAAI;AAEjC;AAAA,gBACD,OAAO;AACN,uBAAK,OAAO,WAAW,kBAAkB,IAAI;AAC7C;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD,OAAO;AACN,gBAAI,MAAM,OAAO,aAAa,IAAI;AAEjC,kBAAI,KAAK,OAAO,cAA4B,OAAO,OAAO,GAAG;AAC5D,qBAAK,OAAO,gBAAgB,IAAI;AAAA,cACjC;AAAA,YAED,OAAO;AAEN,mBAAK,OAAO,WAAW,kBAAkB,IAAI;AAC7C;AAAA,YACD;AACA;AAAA,UACD;AAAA,QACD,OAAO;AAAA,QAEP;AACA;AAAA,MACD;AAAA,IACD;AAGA,SAAK,OAAO,WAAW,QAAQ,IAAI;AAEnC,SAAK,OAAO,KAAK,YAAY,IAAI;AAAA,EAClC;AAAA,EAES,aAA4C,CAAC,SAAS;AAC9D,SAAK,OAAO,WAAW,QAAQ,IAAI;AAAA,EACpC;AAAA,EAES,WAAwC,CAAC,SAAS;AAC1D,SAAK,OAAO,WAAW,QAAQ,IAAI;AAAA,EACpC;AACD;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOO;AACP,4CAA+C;AAC/C,6BAAgC;AAEzB,MAAM,qBAAqB,wBAAU;AAAA,EAC3C,OAAgB,KAAK;AAAA,EAEZ,UAAU,MAAM;AACxB,UAAM,eAAe,KAAK,OAAO,gBAAgB;AACjD,QAAI,CAAC,aAAc,OAAM,MAAM,gDAAgD;AAC/E,gDAAgB,KAAK,MAAM;AAC3B,SAAK,OAAO,OAAO,YAAY;AAAA,EAChC;AAAA,EAES,SAAS,MAAM;AACvB,UAAM,EAAE,eAAe,IAAI,KAAK,OAAO,oBAAoB;AAC3D,QAAI,CAAC,eAAgB;AAGrB,SAAK,OAAO,gBAAgB,IAAI;AAEhC,UAAM,QAAQ,KAAK,OAAO,SAAS,cAAc;AACjD,UAAM,OAAO,KAAK,OAAO,aAAa,KAAK;AAG3C,SAAK,YAAY,KAAK;AAEtB,eAAW,MAAM;AAChB,WAAK,OAAO,2BAA2B;AAAA,IACxC,GAAG,GAAG;AAAA,EACP;AAAA,EAES,gBAAkD,CAAC,SAAS;AACpE,YAAQ,KAAK,QAAQ;AAAA,MACpB,KAAK;AAAA,MACL,KAAK,UAAU;AACd,oDAAgB,KAAK,MAAM;AAC3B;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACS,gBAAkD,CAAC,SAAS;AACpE,YAAQ,KAAK,QAAQ;AAAA,MACpB,KAAK,UAAU;AACd,cAAM,eAAW,sEAA+B,KAAK,MAAM;AAC3D,YAAI,UAAU;AACb,eAAK,cAAc;AAAA,YAClB,GAAG;AAAA,YACH,OAAO;AAAA,YACP,QAAQ;AAAA,UACT,CAAC;AACD;AAAA,QACD;AACA;AAAA,MACD;AAAA,MACA,KAAK,SAAS;AACb,cAAM,EAAE,MAAM,IAAI;AAClB,cAAM,eAAe,KAAK,OAAO,gBAAgB;AAEjD,YAAI,CAAC,cAAc;AAClB,gBAAM,MAAM,4BAA4B;AAAA,QACzC;AAEA,YAAI,MAAM,SAAS,aAAa,MAAM;AAErC,cACC,KAAK,OAAO,cAA0B,OAAO,KAAK,KAClD,KAAK,OAAO,cAA4B,OAAO,OAAO,GACrD;AAED,kBAAM,WAAW,KAAK,OAAO,aAAa,KAAK,EAAE,YAAY,KAAK;AAClE,kBAAM,gBAAgB,SAAS,SAAS,CAAC;AACzC,gBAAI,eAAe;AAClB,oBAAM,oBAAoB,KAAK,OAAO;AAAA,gBACrC;AAAA,gBACA,KAAK,OAAO,OAAO;AAAA,cACpB;AACA,kBAAI,cAAc,OAAO,cAAc,iBAAiB,GAAG;AAE1D,oBAAI,MAAM,OAAO,aAAa,IAAI;AAEjC;AAAA,gBACD,OAAO;AACN,uBAAK,OAAO,WAAW,kBAAkB,IAAI;AAC7C;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD,OAAO;AACN,gBAAI,MAAM,OAAO,aAAa,IAAI;AAEjC,kBAAI,KAAK,OAAO,cAA4B,OAAO,OAAO,GAAG;AAC5D,qBAAK,OAAO,gBAAgB,IAAI;AAAA,cACjC;AAAA,YAED,OAAO;AAEN,mBAAK,OAAO,WAAW,kBAAkB,IAAI;AAC7C;AAAA,YACD;AACA;AAAA,UACD;AAAA,QACD,OAAO;AAAA,QAEP;AACA;AAAA,MACD;AAAA,IACD;AAGA,SAAK,OAAO,WAAW,QAAQ,IAAI;AAEnC,SAAK,OAAO,KAAK,YAAY,IAAI;AAAA,EAClC;AAAA,EAES,aAA4C,CAAC,SAAS;AAC9D,SAAK,OAAO,WAAW,QAAQ,IAAI;AAAA,EACpC;AAAA,EAES,WAAwC,CAAC,SAAS;AAC1D,SAAK,OAAO,WAAW,QAAQ,IAAI;AAAA,EACpC;AACD;",
6
6
  "names": []
7
7
  }
@@ -43,8 +43,7 @@ class Idle extends import_editor.StateNode {
43
43
  (0, import_updateHoveredId.updateHoveredId)(this.editor);
44
44
  };
45
45
  onPointerDown = (info) => {
46
- if (this.editor.getIsMenuOpen())
47
- return;
46
+ if (this.editor.getIsMenuOpen()) return;
48
47
  const shouldEnterCropMode = info.ctrlKey && (0, import_getShouldEnterCropModeOnPointerDown.getShouldEnterCropMode)(this.editor);
49
48
  if (info.ctrlKey && !shouldEnterCropMode) {
50
49
  if (info.target === "shape" && this.isDarwin && this.editor.inputs.keys.has("ControlLeft")) {
@@ -93,8 +92,7 @@ class Idle extends import_editor.StateNode {
93
92
  break;
94
93
  }
95
94
  case "handle": {
96
- if (this.editor.getInstanceState().isReadonly)
97
- break;
95
+ if (this.editor.getInstanceState().isReadonly) break;
98
96
  if (this.editor.inputs.altKey) {
99
97
  this.parent.transition("pointing_shape", info);
100
98
  } else {
@@ -152,8 +150,7 @@ class Idle extends import_editor.StateNode {
152
150
  }
153
151
  };
154
152
  onDoubleClick = (info) => {
155
- if (this.editor.inputs.shiftKey || info.phase !== "up")
156
- return;
153
+ if (this.editor.inputs.shiftKey || info.phase !== "up") return;
157
154
  switch (info.target) {
158
155
  case "canvas": {
159
156
  const hoveredShape = this.editor.getHoveredShape();
@@ -189,8 +186,7 @@ class Idle extends import_editor.StateNode {
189
186
  break;
190
187
  }
191
188
  case "selection": {
192
- if (this.editor.getInstanceState().isReadonly)
193
- break;
189
+ if (this.editor.getInstanceState().isReadonly) break;
194
190
  const onlySelectedShape = this.editor.getOnlySelectedShape();
195
191
  if (onlySelectedShape) {
196
192
  const util = this.editor.getShapeUtil(onlySelectedShape);
@@ -240,8 +236,7 @@ class Idle extends import_editor.StateNode {
240
236
  break;
241
237
  }
242
238
  case "handle": {
243
- if (this.editor.getInstanceState().isReadonly)
244
- break;
239
+ if (this.editor.getInstanceState().isReadonly) break;
245
240
  const { shape, handle } = info;
246
241
  const util = this.editor.getShapeUtil(shape);
247
242
  const changes = util.onDoubleClickHandle?.(shape, handle);
@@ -363,25 +358,20 @@ class Idle extends import_editor.StateNode {
363
358
  }
364
359
  };
365
360
  shouldStartEditingShape(shape = this.editor.getOnlySelectedShape()) {
366
- if (!shape)
367
- return false;
368
- if (this.editor.isShapeOrAncestorLocked(shape) && shape.type !== "embed")
369
- return false;
370
- if (!this.canInteractWithShapeInReadOnly(shape))
371
- return false;
361
+ if (!shape) return false;
362
+ if (this.editor.isShapeOrAncestorLocked(shape) && shape.type !== "embed") return false;
363
+ if (!this.canInteractWithShapeInReadOnly(shape)) return false;
372
364
  return this.editor.getShapeUtil(shape).canEdit(shape);
373
365
  }
374
366
  startEditingShape(shape, info) {
375
- if (this.editor.isShapeOrAncestorLocked(shape) && shape.type !== "embed")
376
- return;
367
+ if (this.editor.isShapeOrAncestorLocked(shape) && shape.type !== "embed") return;
377
368
  this.editor.mark("editing shape");
378
369
  this.editor.setEditingShape(shape.id);
379
370
  this.parent.transition("editing_shape", info);
380
371
  }
381
372
  isDarwin = window.navigator.userAgent.toLowerCase().indexOf("mac") > -1;
382
373
  handleDoubleClickOnCanvas(info) {
383
- if (this.editor.getInstanceState().isReadonly)
384
- return;
374
+ if (this.editor.getInstanceState().isReadonly) return;
385
375
  this.editor.mark("creating text shape");
386
376
  const id = (0, import_editor.createShapeId)();
387
377
  const { x, y } = this.editor.inputs.currentPagePoint;
@@ -398,8 +388,7 @@ class Idle extends import_editor.StateNode {
398
388
  }
399
389
  ]);
400
390
  const shape = this.editor.getShape(id);
401
- if (!shape)
402
- return;
391
+ if (!shape) return;
403
392
  const util = this.editor.getShapeUtil(shape);
404
393
  if (this.editor.getInstanceState().isReadonly) {
405
394
  if (!util.canEditInReadOnly(shape)) {
@@ -418,28 +407,20 @@ class Idle extends import_editor.StateNode {
418
407
  } = this;
419
408
  const shiftKey = keys.has("ShiftLeft");
420
409
  const delta = new import_editor.Vec2d(0, 0);
421
- if (keys.has("ArrowLeft"))
422
- delta.x -= 1;
423
- if (keys.has("ArrowRight"))
424
- delta.x += 1;
425
- if (keys.has("ArrowUp"))
426
- delta.y -= 1;
427
- if (keys.has("ArrowDown"))
428
- delta.y += 1;
429
- if (delta.equals(new import_editor.Vec2d(0, 0)))
430
- return;
431
- if (!ephemeral)
432
- this.editor.mark("nudge shapes");
410
+ if (keys.has("ArrowLeft")) delta.x -= 1;
411
+ if (keys.has("ArrowRight")) delta.x += 1;
412
+ if (keys.has("ArrowUp")) delta.y -= 1;
413
+ if (keys.has("ArrowDown")) delta.y += 1;
414
+ if (delta.equals(new import_editor.Vec2d(0, 0))) return;
415
+ if (!ephemeral) this.editor.mark("nudge shapes");
433
416
  const { gridSize } = this.editor.getDocumentSettings();
434
417
  const step = this.editor.getInstanceState().isGridMode ? shiftKey ? gridSize * GRID_INCREMENT : gridSize : shiftKey ? MAJOR_NUDGE_FACTOR : MINOR_NUDGE_FACTOR;
435
418
  this.editor.nudgeShapes(this.editor.getSelectedShapeIds(), delta.mul(step));
436
419
  }
437
420
  canInteractWithShapeInReadOnly(shape) {
438
- if (!this.editor.getInstanceState().isReadonly)
439
- return true;
421
+ if (!this.editor.getInstanceState().isReadonly) return true;
440
422
  const util = this.editor.getShapeUtil(shape);
441
- if (util.canEditInReadOnly(shape))
442
- return true;
423
+ if (util.canEditInReadOnly(shape)) return true;
443
424
  return false;
444
425
  }
445
426
  }
@@ -448,11 +429,9 @@ const MINOR_NUDGE_FACTOR = 1;
448
429
  const GRID_INCREMENT = 5;
449
430
  function isPointInRotatedSelectionBounds(editor, point) {
450
431
  const selectionBounds = editor.getSelectionRotatedPageBounds();
451
- if (!selectionBounds)
452
- return false;
432
+ if (!selectionBounds) return false;
453
433
  const selectionRotation = editor.getSelectionRotation();
454
- if (!selectionRotation)
455
- return selectionBounds.containsPoint(point);
434
+ if (!selectionRotation) return selectionBounds.containsPoint(point);
456
435
  return (0, import_editor.pointInPolygon)(
457
436
  point,
458
437
  selectionBounds.corners.map((c) => import_editor.Vec2d.RotWith(c, selectionBounds.point, selectionRotation))
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/tools/SelectTool/childStates/Idle.ts"],
4
4
  "sourcesContent": ["import {\n\tEditor,\n\tHIT_TEST_MARGIN,\n\tStateNode,\n\tTLClickEventInfo,\n\tTLEventHandlers,\n\tTLGroupShape,\n\tTLKeyboardEventInfo,\n\tTLShape,\n\tTLTextShape,\n\tVec2d,\n\tVecLike,\n\tcreateShapeId,\n\tpointInPolygon,\n} from '@bigbluebutton/editor'\nimport { getHitShapeOnCanvasPointerDown } from '../../selection-logic/getHitShapeOnCanvasPointerDown'\nimport { getShouldEnterCropMode } from '../../selection-logic/getShouldEnterCropModeOnPointerDown'\nimport { selectOnCanvasPointerUp } from '../../selection-logic/selectOnCanvasPointerUp'\nimport { updateHoveredId } from '../../selection-logic/updateHoveredId'\n\nexport class Idle extends StateNode {\n\tstatic override id = 'idle'\n\n\toverride onEnter = () => {\n\t\tthis.parent.setCurrentToolIdMask(undefined)\n\t\tupdateHoveredId(this.editor)\n\t\tthis.editor.updateInstanceState(\n\t\t\t{ cursor: { type: 'default', rotation: 0 } },\n\t\t\t{ ephemeral: true }\n\t\t)\n\t}\n\n\toverride onPointerMove: TLEventHandlers['onPointerMove'] = () => {\n\t\tupdateHoveredId(this.editor)\n\t}\n\n\toverride onPointerDown: TLEventHandlers['onPointerDown'] = (info) => {\n\t\tif (this.editor.getIsMenuOpen()) return\n\n\t\tconst shouldEnterCropMode = info.ctrlKey && getShouldEnterCropMode(this.editor)\n\n\t\tif (info.ctrlKey && !shouldEnterCropMode) {\n\t\t\t// On Mac, you can right click using the Control keys + Click.\n\t\t\tif (info.target === 'shape' && this.isDarwin && this.editor.inputs.keys.has('ControlLeft')) {\n\t\t\t\tif (!this.editor.isShapeOrAncestorLocked(info.shape)) {\n\t\t\t\t\tthis.parent.transition('pointing_shape', info)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.parent.transition('brushing', info)\n\t\t\treturn\n\t\t}\n\n\t\tswitch (info.target) {\n\t\t\tcase 'canvas': {\n\t\t\t\t// Check to see if we hit any shape under the pointer; if so,\n\t\t\t\t// handle this as a pointer down on the shape instead of the canvas\n\t\t\t\tconst hitShape = getHitShapeOnCanvasPointerDown(this.editor)\n\t\t\t\tif (hitShape && !hitShape.isLocked) {\n\t\t\t\t\tthis.onPointerDown({\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\tshape: hitShape,\n\t\t\t\t\t\ttarget: 'shape',\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst selectedShapeIds = this.editor.getSelectedShapeIds()\n\t\t\t\tconst onlySelectedShape = this.editor.getOnlySelectedShape()\n\t\t\t\tconst {\n\t\t\t\t\tinputs: { currentPagePoint },\n\t\t\t\t} = this.editor\n\n\t\t\t\tif (\n\t\t\t\t\tselectedShapeIds.length > 1 ||\n\t\t\t\t\t(onlySelectedShape &&\n\t\t\t\t\t\t!this.editor.getShapeUtil(onlySelectedShape).hideSelectionBoundsBg(onlySelectedShape))\n\t\t\t\t) {\n\t\t\t\t\tif (isPointInRotatedSelectionBounds(this.editor, currentPagePoint)) {\n\t\t\t\t\t\tthis.onPointerDown({\n\t\t\t\t\t\t\t...info,\n\t\t\t\t\t\t\ttarget: 'selection',\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.parent.transition('pointing_canvas', info)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'shape': {\n\t\t\t\tif (this.editor.isShapeOrAncestorLocked(info.shape)) {\n\t\t\t\t\tthis.parent.transition('pointing_canvas', info)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tthis.parent.transition('pointing_shape', info)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'handle': {\n\t\t\t\tif (this.editor.getInstanceState().isReadonly) break\n\t\t\t\tif (this.editor.inputs.altKey) {\n\t\t\t\t\tthis.parent.transition('pointing_shape', info)\n\t\t\t\t} else {\n\t\t\t\t\tthis.parent.transition('pointing_handle', info)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'selection': {\n\t\t\t\tswitch (info.handle) {\n\t\t\t\t\tcase 'mobile_rotate':\n\t\t\t\t\tcase 'top_left_rotate':\n\t\t\t\t\tcase 'top_right_rotate':\n\t\t\t\t\tcase 'bottom_left_rotate':\n\t\t\t\t\tcase 'bottom_right_rotate': {\n\t\t\t\t\t\tthis.parent.transition('pointing_rotate_handle', info)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\tcase 'left': {\n\t\t\t\t\t\tif (shouldEnterCropMode) {\n\t\t\t\t\t\t\tthis.parent.transition('pointing_crop_handle', info)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.parent.transition('pointing_resize_handle', info)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'top_left':\n\t\t\t\t\tcase 'top_right':\n\t\t\t\t\tcase 'bottom_left':\n\t\t\t\t\tcase 'bottom_right': {\n\t\t\t\t\t\tif (shouldEnterCropMode) {\n\t\t\t\t\t\t\tthis.parent.transition('pointing_crop_handle', info)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.parent.transition('pointing_resize_handle', info)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tconst hoveredShape = this.editor.getHoveredShape()\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thoveredShape &&\n\t\t\t\t\t\t\t!this.editor.getSelectedShapeIds().includes(hoveredShape.id) &&\n\t\t\t\t\t\t\t!hoveredShape.isLocked\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthis.onPointerDown({\n\t\t\t\t\t\t\t\t...info,\n\t\t\t\t\t\t\t\tshape: hoveredShape,\n\t\t\t\t\t\t\t\ttarget: 'shape',\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.parent.transition('pointing_selection', info)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\toverride onDoubleClick: TLEventHandlers['onDoubleClick'] = (info) => {\n\t\tif (this.editor.inputs.shiftKey || info.phase !== 'up') return\n\n\t\tswitch (info.target) {\n\t\t\tcase 'canvas': {\n\t\t\t\tconst hoveredShape = this.editor.getHoveredShape()\n\n\t\t\t\t// todo\n\t\t\t\t// double clicking on the middle of a hollow geo shape without a label, or\n\t\t\t\t// over the label of a hollwo shape that has a label, should start editing\n\t\t\t\t// that shape's label. We can't support \"double click anywhere inside\"\n\t\t\t\t// of the shape yet because that also creates text shapes, and can product\n\t\t\t\t// unexpected results when working \"inside of\" a hollow shape.\n\n\t\t\t\tconst hitShape =\n\t\t\t\t\thoveredShape && !this.editor.isShapeOfType<TLGroupShape>(hoveredShape, 'group')\n\t\t\t\t\t\t? hoveredShape\n\t\t\t\t\t\t: this.editor.getSelectedShapeAtPoint(this.editor.inputs.currentPagePoint) ??\n\t\t\t\t\t\t this.editor.getShapeAtPoint(this.editor.inputs.currentPagePoint, {\n\t\t\t\t\t\t\t\tmargin: HIT_TEST_MARGIN / this.editor.getZoomLevel(),\n\t\t\t\t\t\t\t\thitInside: false,\n\t\t\t\t\t\t })\n\n\t\t\t\tconst focusedGroupId = this.editor.getFocusedGroupId()\n\n\t\t\t\tif (hitShape) {\n\t\t\t\t\tif (this.editor.isShapeOfType<TLGroupShape>(hitShape, 'group')) {\n\t\t\t\t\t\t// Probably select the shape\n\t\t\t\t\t\tselectOnCanvasPointerUp(this.editor)\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst parent = this.editor.getShape(hitShape.parentId)\n\t\t\t\t\t\tif (parent && this.editor.isShapeOfType<TLGroupShape>(parent, 'group')) {\n\t\t\t\t\t\t\t// The shape is the direct child of a group. If the group is\n\t\t\t\t\t\t\t// selected, then we can select the shape. If the group is the\n\t\t\t\t\t\t\t// focus layer id, then we can double click into it as usual.\n\t\t\t\t\t\t\tif (focusedGroupId && parent.id === focusedGroupId) {\n\t\t\t\t\t\t\t\t// noop, double click on the shape as normal below\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// The shape is the child of some group other than our current\n\t\t\t\t\t\t\t\t// focus layer. We should probably select the group instead.\n\t\t\t\t\t\t\t\tselectOnCanvasPointerUp(this.editor)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// double click on the shape. We'll start editing the\n\t\t\t\t\t// shape if it's editable or else do a double click on\n\t\t\t\t\t// the canvas.\n\t\t\t\t\tthis.onDoubleClick({\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\tshape: hitShape,\n\t\t\t\t\t\ttarget: 'shape',\n\t\t\t\t\t})\n\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (!this.editor.inputs.shiftKey) {\n\t\t\t\t\tthis.handleDoubleClickOnCanvas(info)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'selection': {\n\t\t\t\tif (this.editor.getInstanceState().isReadonly) break\n\n\t\t\t\tconst onlySelectedShape = this.editor.getOnlySelectedShape()\n\n\t\t\t\tif (onlySelectedShape) {\n\t\t\t\t\tconst util = this.editor.getShapeUtil(onlySelectedShape)\n\n\t\t\t\t\tif (!this.canInteractWithShapeInReadOnly(onlySelectedShape)) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\t// Test edges for an onDoubleClickEdge handler\n\t\t\t\t\tif (\n\t\t\t\t\t\tinfo.handle === 'right' ||\n\t\t\t\t\t\tinfo.handle === 'left' ||\n\t\t\t\t\t\tinfo.handle === 'top' ||\n\t\t\t\t\t\tinfo.handle === 'bottom'\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst change = util.onDoubleClickEdge?.(onlySelectedShape)\n\t\t\t\t\t\tif (change) {\n\t\t\t\t\t\t\tthis.editor.mark('double click edge')\n\t\t\t\t\t\t\tthis.editor.updateShapes([change])\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// For corners OR edges\n\t\t\t\t\tif (\n\t\t\t\t\t\tutil.canCrop(onlySelectedShape) &&\n\t\t\t\t\t\t!this.editor.isShapeOrAncestorLocked(onlySelectedShape)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.parent.transition('crop', info)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.shouldStartEditingShape(onlySelectedShape)) {\n\t\t\t\t\t\tthis.startEditingShape(onlySelectedShape, info)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'shape': {\n\t\t\t\tconst { shape } = info\n\t\t\t\tconst util = this.editor.getShapeUtil(shape)\n\n\t\t\t\t// Allow playing videos and embeds\n\t\t\t\tif (\n\t\t\t\t\tshape.type !== 'video' &&\n\t\t\t\t\tshape.type !== 'embed' &&\n\t\t\t\t\tthis.editor.getInstanceState().isReadonly\n\t\t\t\t)\n\t\t\t\t\tbreak\n\n\t\t\t\tif (util.onDoubleClick) {\n\t\t\t\t\t// Call the shape's double click handler\n\t\t\t\t\tconst change = util.onDoubleClick?.(shape)\n\t\t\t\t\tif (change) {\n\t\t\t\t\t\tthis.editor.updateShapes([change])\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else if (util.canCrop(shape) && !this.editor.isShapeOrAncestorLocked(shape)) {\n\t\t\t\t\t\t// crop on double click\n\t\t\t\t\t\tthis.editor.mark('select and crop')\n\t\t\t\t\t\tthis.editor.select(info.shape?.id)\n\t\t\t\t\t\tthis.parent.transition('crop', info)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If the shape can edit, then begin editing\n\t\t\t\tif (this.shouldStartEditingShape(shape)) {\n\t\t\t\t\tthis.startEditingShape(shape, info)\n\t\t\t\t} else {\n\t\t\t\t\t// If the shape's double click handler has not created a change,\n\t\t\t\t\t// and if the shape cannot edit, then create a text shape and\n\t\t\t\t\t// begin editing the text shape\n\t\t\t\t\tthis.handleDoubleClickOnCanvas(info)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'handle': {\n\t\t\t\tif (this.editor.getInstanceState().isReadonly) break\n\t\t\t\tconst { shape, handle } = info\n\n\t\t\t\tconst util = this.editor.getShapeUtil(shape)\n\t\t\t\tconst changes = util.onDoubleClickHandle?.(shape, handle)\n\n\t\t\t\tif (changes) {\n\t\t\t\t\tthis.editor.updateShapes([changes])\n\t\t\t\t} else {\n\t\t\t\t\t// If the shape's double click handler has not created a change,\n\t\t\t\t\t// and if the shape can edit, then begin editing the shape.\n\t\t\t\t\tif (this.shouldStartEditingShape(shape)) {\n\t\t\t\t\t\tthis.startEditingShape(shape, info)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\toverride onRightClick: TLEventHandlers['onRightClick'] = (info) => {\n\t\tswitch (info.target) {\n\t\t\tcase 'canvas': {\n\t\t\t\tconst hoveredShape = this.editor.getHoveredShape()\n\t\t\t\tconst hitShape =\n\t\t\t\t\thoveredShape && !this.editor.isShapeOfType<TLGroupShape>(hoveredShape, 'group')\n\t\t\t\t\t\t? hoveredShape\n\t\t\t\t\t\t: this.editor.getShapeAtPoint(this.editor.inputs.currentPagePoint, {\n\t\t\t\t\t\t\t\tmargin: HIT_TEST_MARGIN / this.editor.getZoomLevel(),\n\t\t\t\t\t\t\t\thitInside: false,\n\t\t\t\t\t\t\t\thitLabels: true,\n\t\t\t\t\t\t\t\thitFrameInside: false,\n\t\t\t\t\t\t\t\trenderingOnly: true,\n\t\t\t\t\t\t })\n\n\t\t\t\tif (hitShape) {\n\t\t\t\t\tthis.onRightClick({\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\tshape: hitShape,\n\t\t\t\t\t\ttarget: 'shape',\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst selectedShapeIds = this.editor.getSelectedShapeIds()\n\t\t\t\tconst onlySelectedShape = this.editor.getOnlySelectedShape()\n\t\t\t\tconst {\n\t\t\t\t\tinputs: { currentPagePoint },\n\t\t\t\t} = this.editor\n\n\t\t\t\tif (\n\t\t\t\t\tselectedShapeIds.length > 1 ||\n\t\t\t\t\t(onlySelectedShape &&\n\t\t\t\t\t\t!this.editor.getShapeUtil(onlySelectedShape).hideSelectionBoundsBg(onlySelectedShape))\n\t\t\t\t) {\n\t\t\t\t\tif (isPointInRotatedSelectionBounds(this.editor, currentPagePoint)) {\n\t\t\t\t\t\tthis.onRightClick({\n\t\t\t\t\t\t\t...info,\n\t\t\t\t\t\t\ttarget: 'selection',\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.editor.selectNone()\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'shape': {\n\t\t\t\tconst { selectedShapeIds } = this.editor.getCurrentPageState()\n\t\t\t\tconst { shape } = info\n\n\t\t\t\tconst targetShape = this.editor.getOutermostSelectableShape(\n\t\t\t\t\tshape,\n\t\t\t\t\t(parent) => !selectedShapeIds.includes(parent.id)\n\t\t\t\t)\n\n\t\t\t\tif (!selectedShapeIds.includes(targetShape.id)) {\n\t\t\t\t\tthis.editor.mark('selecting shape')\n\t\t\t\t\tthis.editor.setSelectedShapes([targetShape.id])\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tif (\n\t\t\tthis.editor.getFocusedGroupId() !== this.editor.getCurrentPageId() &&\n\t\t\tthis.editor.getSelectedShapeIds().length > 0\n\t\t) {\n\t\t\tthis.editor.popFocusedGroupId()\n\t\t} else {\n\t\t\tthis.editor.mark('clearing selection')\n\t\t\tthis.editor.selectNone()\n\t\t}\n\t}\n\n\toverride onKeyDown: TLEventHandlers['onKeyDown'] = (info) => {\n\t\tswitch (info.code) {\n\t\t\tcase 'ArrowLeft':\n\t\t\tcase 'ArrowRight':\n\t\t\tcase 'ArrowUp':\n\t\t\tcase 'ArrowDown': {\n\t\t\t\tthis.nudgeSelectedShapes(false)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\toverride onKeyRepeat: TLEventHandlers['onKeyDown'] = (info) => {\n\t\tswitch (info.code) {\n\t\t\tcase 'ArrowLeft':\n\t\t\tcase 'ArrowRight':\n\t\t\tcase 'ArrowUp':\n\t\t\tcase 'ArrowDown': {\n\t\t\t\tthis.nudgeSelectedShapes(true)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\toverride onKeyUp = (info: TLKeyboardEventInfo) => {\n\t\tswitch (info.code) {\n\t\t\tcase 'Enter': {\n\t\t\t\tconst selectedShapes = this.editor.getSelectedShapes()\n\n\t\t\t\t// On enter, if every selected shape is a group, then select all of the children of the groups\n\t\t\t\tif (\n\t\t\t\t\tselectedShapes.every((shape) => this.editor.isShapeOfType<TLGroupShape>(shape, 'group'))\n\t\t\t\t) {\n\t\t\t\t\tthis.editor.setSelectedShapes(\n\t\t\t\t\t\tselectedShapes.flatMap((shape) => this.editor.getSortedChildIdsForParent(shape.id))\n\t\t\t\t\t)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If the only selected shape is editable, then begin editing it\n\t\t\t\tconst onlySelectedShape = this.editor.getOnlySelectedShape()\n\t\t\t\tif (onlySelectedShape && this.shouldStartEditingShape(onlySelectedShape)) {\n\t\t\t\t\tthis.startEditingShape(onlySelectedShape, {\n\t\t\t\t\t\t...info,\n\t\t\t\t\t\ttarget: 'shape',\n\t\t\t\t\t\tshape: onlySelectedShape,\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If the only selected shape is croppable, then begin cropping it\n\t\t\t\tif (getShouldEnterCropMode(this.editor)) {\n\t\t\t\t\tthis.parent.transition('crop', info)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate shouldStartEditingShape(\n\t\tshape: TLShape | null = this.editor.getOnlySelectedShape()\n\t): boolean {\n\t\tif (!shape) return false\n\t\tif (this.editor.isShapeOrAncestorLocked(shape) && shape.type !== 'embed') return false\n\t\tif (!this.canInteractWithShapeInReadOnly(shape)) return false\n\t\treturn this.editor.getShapeUtil(shape).canEdit(shape)\n\t}\n\n\tprivate startEditingShape(shape: TLShape, info: TLClickEventInfo | TLKeyboardEventInfo) {\n\t\tif (this.editor.isShapeOrAncestorLocked(shape) && shape.type !== 'embed') return\n\t\tthis.editor.mark('editing shape')\n\t\tthis.editor.setEditingShape(shape.id)\n\t\tthis.parent.transition('editing_shape', info)\n\t}\n\n\tisDarwin = window.navigator.userAgent.toLowerCase().indexOf('mac') > -1\n\n\thandleDoubleClickOnCanvas(info: TLClickEventInfo) {\n\t\t// Create text shape and transition to editing_shape\n\t\tif (this.editor.getInstanceState().isReadonly) return\n\n\t\tthis.editor.mark('creating text shape')\n\n\t\tconst id = createShapeId()\n\n\t\tconst { x, y } = this.editor.inputs.currentPagePoint\n\n\t\tthis.editor.createShapes<TLTextShape>([\n\t\t\t{\n\t\t\t\tid,\n\t\t\t\ttype: 'text',\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tprops: {\n\t\t\t\t\ttext: '',\n\t\t\t\t\tautoSize: true,\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\n\t\tconst shape = this.editor.getShape(id)\n\t\tif (!shape) return\n\n\t\tconst util = this.editor.getShapeUtil(shape)\n\t\tif (this.editor.getInstanceState().isReadonly) {\n\t\t\tif (!util.canEditInReadOnly(shape)) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis.editor.setEditingShape(id)\n\t\tthis.editor.select(id)\n\t\tthis.parent.transition('editing_shape', info)\n\t}\n\n\tprivate nudgeSelectedShapes(ephemeral = false) {\n\t\tconst {\n\t\t\teditor: {\n\t\t\t\tinputs: { keys },\n\t\t\t},\n\t\t} = this\n\n\t\t// We want to use the \"actual\" shift key state,\n\t\t// not the one that's in the editor.inputs.shiftKey,\n\t\t// because that one uses a short timeout on release\n\t\tconst shiftKey = keys.has('ShiftLeft')\n\n\t\tconst delta = new Vec2d(0, 0)\n\n\t\tif (keys.has('ArrowLeft')) delta.x -= 1\n\t\tif (keys.has('ArrowRight')) delta.x += 1\n\t\tif (keys.has('ArrowUp')) delta.y -= 1\n\t\tif (keys.has('ArrowDown')) delta.y += 1\n\n\t\tif (delta.equals(new Vec2d(0, 0))) return\n\n\t\tif (!ephemeral) this.editor.mark('nudge shapes')\n\n\t\tconst { gridSize } = this.editor.getDocumentSettings()\n\n\t\tconst step = this.editor.getInstanceState().isGridMode\n\t\t\t? shiftKey\n\t\t\t\t? gridSize * GRID_INCREMENT\n\t\t\t\t: gridSize\n\t\t\t: shiftKey\n\t\t\t? MAJOR_NUDGE_FACTOR\n\t\t\t: MINOR_NUDGE_FACTOR\n\n\t\tthis.editor.nudgeShapes(this.editor.getSelectedShapeIds(), delta.mul(step))\n\t}\n\n\tprivate canInteractWithShapeInReadOnly(shape: TLShape) {\n\t\tif (!this.editor.getInstanceState().isReadonly) return true\n\t\tconst util = this.editor.getShapeUtil(shape)\n\t\tif (util.canEditInReadOnly(shape)) return true\n\t\treturn false\n\t}\n}\n\nexport const MAJOR_NUDGE_FACTOR = 10\nexport const MINOR_NUDGE_FACTOR = 1\nexport const GRID_INCREMENT = 5\n\nfunction isPointInRotatedSelectionBounds(editor: Editor, point: VecLike) {\n\tconst selectionBounds = editor.getSelectionRotatedPageBounds()\n\tif (!selectionBounds) return false\n\n\tconst selectionRotation = editor.getSelectionRotation()\n\tif (!selectionRotation) return selectionBounds.containsPoint(point)\n\n\treturn pointInPolygon(\n\t\tpoint,\n\t\tselectionBounds.corners.map((c) => Vec2d.RotWith(c, selectionBounds.point, selectionRotation))\n\t)\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -39,8 +39,7 @@ class PointingCropHandle extends import_editor.StateNode {
39
39
  this.info = info;
40
40
  this.parent.setCurrentToolIdMask(info.onInteractionEnd);
41
41
  const selectedShape = this.editor.getSelectedShapes()[0];
42
- if (!selectedShape)
43
- return;
42
+ if (!selectedShape) return;
44
43
  this.updateCursor(selectedShape);
45
44
  this.editor.setCroppingShape(selectedShape.id);
46
45
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/tools/SelectTool/childStates/PointingCropHandle.ts"],
4
4
  "sourcesContent": ["import { StateNode, TLEventHandlers, TLPointerEventInfo, TLShape } from '@bigbluebutton/editor'\nimport { CursorTypeMap } from './PointingResizeHandle'\n\ntype TLPointingCropHandleInfo = TLPointerEventInfo & {\n\ttarget: 'selection'\n} & {\n\tonInteractionEnd?: string\n}\n\nexport class PointingCropHandle extends StateNode {\n\tstatic override id = 'pointing_crop_handle'\n\n\tprivate info = {} as TLPointingCropHandleInfo\n\n\tprivate updateCursor(shape: TLShape) {\n\t\tconst cursorType = CursorTypeMap[this.info.handle!]\n\t\tthis.editor.updateInstanceState({\n\t\t\tcursor: {\n\t\t\t\ttype: cursorType,\n\t\t\t\trotation: shape.rotation,\n\t\t\t},\n\t\t})\n\t}\n\n\toverride onEnter = (info: TLPointingCropHandleInfo) => {\n\t\tthis.info = info\n\t\tthis.parent.setCurrentToolIdMask(info.onInteractionEnd)\n\t\tconst selectedShape = this.editor.getSelectedShapes()[0]\n\t\tif (!selectedShape) return\n\n\t\tthis.updateCursor(selectedShape)\n\t\tthis.editor.setCroppingShape(selectedShape.id)\n\t}\n\n\toverride onExit = () => {\n\t\tthis.editor.updateInstanceState(\n\t\t\t{ cursor: { type: 'default', rotation: 0 } },\n\t\t\t{ ephemeral: true }\n\t\t)\n\t\tthis.parent.setCurrentToolIdMask(undefined)\n\t}\n\n\toverride onPointerMove: TLEventHandlers['onPointerMove'] = () => {\n\t\tconst isDragging = this.editor.inputs.isDragging\n\n\t\tif (isDragging) {\n\t\t\tthis.parent.transition('cropping', {\n\t\t\t\t...this.info,\n\t\t\t\tonInteractionEnd: this.info.onInteractionEnd,\n\t\t\t})\n\t\t}\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = () => {\n\t\tif (this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, this.info)\n\t\t} else {\n\t\t\tthis.editor.setCroppingShape(null)\n\t\t\tthis.parent.transition('idle')\n\t\t}\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onInterrupt = () => {\n\t\tthis.cancel()\n\t}\n\n\tprivate cancel() {\n\t\tif (this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, this.info)\n\t\t} else {\n\t\t\tthis.editor.setCroppingShape(null)\n\t\t\tthis.parent.transition('idle')\n\t\t}\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwE;AACxE,kCAA8B;AAQvB,MAAM,2BAA2B,wBAAU;AAAA,EACjD,OAAgB,KAAK;AAAA,EAEb,OAAO,CAAC;AAAA,EAER,aAAa,OAAgB;AACpC,UAAM,aAAa,0CAAc,KAAK,KAAK,MAAO;AAClD,SAAK,OAAO,oBAAoB;AAAA,MAC/B,QAAQ;AAAA,QACP,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,MACjB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAES,UAAU,CAAC,SAAmC;AACtD,SAAK,OAAO;AACZ,SAAK,OAAO,qBAAqB,KAAK,gBAAgB;AACtD,UAAM,gBAAgB,KAAK,OAAO,kBAAkB,EAAE,CAAC;AACvD,QAAI,CAAC;AAAe;AAEpB,SAAK,aAAa,aAAa;AAC/B,SAAK,OAAO,iBAAiB,cAAc,EAAE;AAAA,EAC9C;AAAA,EAES,SAAS,MAAM;AACvB,SAAK,OAAO;AAAA,MACX,EAAE,QAAQ,EAAE,MAAM,WAAW,UAAU,EAAE,EAAE;AAAA,MAC3C,EAAE,WAAW,KAAK;AAAA,IACnB;AACA,SAAK,OAAO,qBAAqB,MAAS;AAAA,EAC3C;AAAA,EAES,gBAAkD,MAAM;AAChE,UAAM,aAAa,KAAK,OAAO,OAAO;AAEtC,QAAI,YAAY;AACf,WAAK,OAAO,WAAW,YAAY;AAAA,QAClC,GAAG,KAAK;AAAA,QACR,kBAAkB,KAAK,KAAK;AAAA,MAC7B,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EAES,cAA8C,MAAM;AAC5D,QAAI,KAAK,KAAK,kBAAkB;AAC/B,WAAK,OAAO,eAAe,KAAK,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACjE,OAAO;AACN,WAAK,OAAO,iBAAiB,IAAI;AACjC,WAAK,OAAO,WAAW,MAAM;AAAA,IAC9B;AAAA,EACD;AAAA,EAES,WAAwC,MAAM;AACtD,SAAK,OAAO;AAAA,EACb;AAAA,EAES,aAA4C,MAAM;AAC1D,SAAK,OAAO;AAAA,EACb;AAAA,EAES,cAAc,MAAM;AAC5B,SAAK,OAAO;AAAA,EACb;AAAA,EAEQ,SAAS;AAChB,QAAI,KAAK,KAAK,kBAAkB;AAC/B,WAAK,OAAO,eAAe,KAAK,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACjE,OAAO;AACN,WAAK,OAAO,iBAAiB,IAAI;AACjC,WAAK,OAAO,WAAW,MAAM;AAAA,IAC9B;AAAA,EACD;AACD;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAwE;AACxE,kCAA8B;AAQvB,MAAM,2BAA2B,wBAAU;AAAA,EACjD,OAAgB,KAAK;AAAA,EAEb,OAAO,CAAC;AAAA,EAER,aAAa,OAAgB;AACpC,UAAM,aAAa,0CAAc,KAAK,KAAK,MAAO;AAClD,SAAK,OAAO,oBAAoB;AAAA,MAC/B,QAAQ;AAAA,QACP,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,MACjB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAES,UAAU,CAAC,SAAmC;AACtD,SAAK,OAAO;AACZ,SAAK,OAAO,qBAAqB,KAAK,gBAAgB;AACtD,UAAM,gBAAgB,KAAK,OAAO,kBAAkB,EAAE,CAAC;AACvD,QAAI,CAAC,cAAe;AAEpB,SAAK,aAAa,aAAa;AAC/B,SAAK,OAAO,iBAAiB,cAAc,EAAE;AAAA,EAC9C;AAAA,EAES,SAAS,MAAM;AACvB,SAAK,OAAO;AAAA,MACX,EAAE,QAAQ,EAAE,MAAM,WAAW,UAAU,EAAE,EAAE;AAAA,MAC3C,EAAE,WAAW,KAAK;AAAA,IACnB;AACA,SAAK,OAAO,qBAAqB,MAAS;AAAA,EAC3C;AAAA,EAES,gBAAkD,MAAM;AAChE,UAAM,aAAa,KAAK,OAAO,OAAO;AAEtC,QAAI,YAAY;AACf,WAAK,OAAO,WAAW,YAAY;AAAA,QAClC,GAAG,KAAK;AAAA,QACR,kBAAkB,KAAK,KAAK;AAAA,MAC7B,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EAES,cAA8C,MAAM;AAC5D,QAAI,KAAK,KAAK,kBAAkB;AAC/B,WAAK,OAAO,eAAe,KAAK,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACjE,OAAO;AACN,WAAK,OAAO,iBAAiB,IAAI;AACjC,WAAK,OAAO,WAAW,MAAM;AAAA,IAC9B;AAAA,EACD;AAAA,EAES,WAAwC,MAAM;AACtD,SAAK,OAAO;AAAA,EACb;AAAA,EAES,aAA4C,MAAM;AAC1D,SAAK,OAAO;AAAA,EACb;AAAA,EAES,cAAc,MAAM;AAC5B,SAAK,OAAO;AAAA,EACb;AAAA,EAEQ,SAAS;AAChB,QAAI,KAAK,KAAK,kBAAkB;AAC/B,WAAK,OAAO,eAAe,KAAK,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACjE,OAAO;AACN,WAAK,OAAO,iBAAiB,IAAI;AACjC,WAAK,OAAO,WAAW,MAAM;AAAA,IAC9B;AAAA,EACD;AACD;",
6
6
  "names": []
7
7
  }
@@ -35,8 +35,7 @@ class PointingSelection extends import_editor.StateNode {
35
35
  };
36
36
  onPointerMove = (info) => {
37
37
  if (this.editor.inputs.isDragging) {
38
- if (this.editor.getInstanceState().isReadonly)
39
- return;
38
+ if (this.editor.getInstanceState().isReadonly) return;
40
39
  this.parent.transition("translating", info);
41
40
  }
42
41
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/tools/SelectTool/childStates/PointingSelection.ts"],
4
4
  "sourcesContent": ["import {\n\tStateNode,\n\tTLClickEvent,\n\tTLEventHandlers,\n\tTLGroupShape,\n\tTLPointerEventInfo,\n} from '@bigbluebutton/editor'\nimport { selectOnCanvasPointerUp } from '../../selection-logic/selectOnCanvasPointerUp'\n\nexport class PointingSelection extends StateNode {\n\tstatic override id = 'pointing_selection'\n\n\tinfo = {} as TLPointerEventInfo & {\n\t\ttarget: 'selection'\n\t}\n\n\toverride onEnter = (info: TLPointerEventInfo & { target: 'selection' }) => {\n\t\tthis.info = info\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = (info) => {\n\t\tselectOnCanvasPointerUp(this.editor)\n\t\tthis.parent.transition('idle', info)\n\t}\n\n\toverride onPointerMove: TLEventHandlers['onPointerMove'] = (info) => {\n\t\tif (this.editor.inputs.isDragging) {\n\t\t\tif (this.editor.getInstanceState().isReadonly) return\n\t\t\tthis.parent.transition('translating', info)\n\t\t}\n\t}\n\n\toverride onDoubleClick?: TLClickEvent | undefined = (info) => {\n\t\tconst hoveredShape = this.editor.getHoveredShape()\n\t\tconst hitShape =\n\t\t\thoveredShape && !this.editor.isShapeOfType<TLGroupShape>(hoveredShape, 'group')\n\t\t\t\t? hoveredShape\n\t\t\t\t: this.editor.getShapeAtPoint(this.editor.inputs.currentPagePoint, {\n\t\t\t\t\t\thitInside: true,\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\trenderingOnly: true,\n\t\t\t\t })\n\n\t\tif (hitShape) {\n\t\t\t// todo: extract the double click shape logic from idle so that we can share it here\n\t\t\tthis.parent.transition('idle')\n\t\t\tthis.parent.onDoubleClick?.({\n\t\t\t\t...info,\n\t\t\t\ttarget: 'shape',\n\t\t\t\tshape: this.editor.getShape(hitShape)!,\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onInterrupt = () => {\n\t\tthis.cancel()\n\t}\n\n\tprivate cancel() {\n\t\tthis.parent.transition('idle')\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMO;AACP,qCAAwC;AAEjC,MAAM,0BAA0B,wBAAU;AAAA,EAChD,OAAgB,KAAK;AAAA,EAErB,OAAO,CAAC;AAAA,EAIC,UAAU,CAAC,SAAuD;AAC1E,SAAK,OAAO;AAAA,EACb;AAAA,EAES,cAA8C,CAAC,SAAS;AAChE,gEAAwB,KAAK,MAAM;AACnC,SAAK,OAAO,WAAW,QAAQ,IAAI;AAAA,EACpC;AAAA,EAES,gBAAkD,CAAC,SAAS;AACpE,QAAI,KAAK,OAAO,OAAO,YAAY;AAClC,UAAI,KAAK,OAAO,iBAAiB,EAAE;AAAY;AAC/C,WAAK,OAAO,WAAW,eAAe,IAAI;AAAA,IAC3C;AAAA,EACD;AAAA,EAES,gBAA2C,CAAC,SAAS;AAC7D,UAAM,eAAe,KAAK,OAAO,gBAAgB;AACjD,UAAM,WACL,gBAAgB,CAAC,KAAK,OAAO,cAA4B,cAAc,OAAO,IAC3E,eACA,KAAK,OAAO,gBAAgB,KAAK,OAAO,OAAO,kBAAkB;AAAA,MACjE,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,eAAe;AAAA,IACf,CAAC;AAEL,QAAI,UAAU;AAEb,WAAK,OAAO,WAAW,MAAM;AAC7B,WAAK,OAAO,gBAAgB;AAAA,QAC3B,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,OAAO,KAAK,OAAO,SAAS,QAAQ;AAAA,MACrC,CAAC;AACD;AAAA,IACD;AAAA,EACD;AAAA,EAES,WAAwC,MAAM;AACtD,SAAK,OAAO;AAAA,EACb;AAAA,EAES,aAA4C,MAAM;AAC1D,SAAK,OAAO;AAAA,EACb;AAAA,EAES,cAAc,MAAM;AAC5B,SAAK,OAAO;AAAA,EACb;AAAA,EAEQ,SAAS;AAChB,SAAK,OAAO,WAAW,MAAM;AAAA,EAC9B;AACD;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMO;AACP,qCAAwC;AAEjC,MAAM,0BAA0B,wBAAU;AAAA,EAChD,OAAgB,KAAK;AAAA,EAErB,OAAO,CAAC;AAAA,EAIC,UAAU,CAAC,SAAuD;AAC1E,SAAK,OAAO;AAAA,EACb;AAAA,EAES,cAA8C,CAAC,SAAS;AAChE,gEAAwB,KAAK,MAAM;AACnC,SAAK,OAAO,WAAW,QAAQ,IAAI;AAAA,EACpC;AAAA,EAES,gBAAkD,CAAC,SAAS;AACpE,QAAI,KAAK,OAAO,OAAO,YAAY;AAClC,UAAI,KAAK,OAAO,iBAAiB,EAAE,WAAY;AAC/C,WAAK,OAAO,WAAW,eAAe,IAAI;AAAA,IAC3C;AAAA,EACD;AAAA,EAES,gBAA2C,CAAC,SAAS;AAC7D,UAAM,eAAe,KAAK,OAAO,gBAAgB;AACjD,UAAM,WACL,gBAAgB,CAAC,KAAK,OAAO,cAA4B,cAAc,OAAO,IAC3E,eACA,KAAK,OAAO,gBAAgB,KAAK,OAAO,OAAO,kBAAkB;AAAA,MACjE,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,eAAe;AAAA,IACf,CAAC;AAEL,QAAI,UAAU;AAEb,WAAK,OAAO,WAAW,MAAM;AAC7B,WAAK,OAAO,gBAAgB;AAAA,QAC3B,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,OAAO,KAAK,OAAO,SAAS,QAAQ;AAAA,MACrC,CAAC;AACD;AAAA,IACD;AAAA,EACD;AAAA,EAES,WAAwC,MAAM;AACtD,SAAK,OAAO;AAAA,EACb;AAAA,EAES,aAA4C,MAAM;AAC1D,SAAK,OAAO;AAAA,EACb;AAAA,EAES,cAAc,MAAM;AAC5B,SAAK,OAAO;AAAA,EACb;AAAA,EAEQ,SAAS;AAChB,SAAK,OAAO,WAAW,MAAM;AAAA,EAC9B;AACD;",
6
6
  "names": []
7
7
  }
@@ -155,8 +155,7 @@ class PointingShape extends import_editor.StateNode {
155
155
  };
156
156
  onPointerMove = (info) => {
157
157
  if (this.editor.inputs.isDragging) {
158
- if (this.editor.getInstanceState().isReadonly)
159
- return;
158
+ if (this.editor.getInstanceState().isReadonly) return;
160
159
  this.parent.transition("translating", info);
161
160
  }
162
161
  };
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/tools/SelectTool/childStates/PointingShape.ts"],
4
4
  "sourcesContent": ["import {\n\tGroup2d,\n\tHIT_TEST_MARGIN,\n\tStateNode,\n\tTLArrowShape,\n\tTLEventHandlers,\n\tTLGeoShape,\n\tTLPointerEventInfo,\n\tTLShape,\n} from '@bigbluebutton/editor'\n\nexport class PointingShape extends StateNode {\n\tstatic override id = 'pointing_shape'\n\n\thitShape = {} as TLShape\n\thitShapeForPointerUp = {} as TLShape\n\n\tdidSelectOnEnter = false\n\n\toverride onEnter = (info: TLPointerEventInfo & { target: 'shape' }) => {\n\t\tconst selectedShapeIds = this.editor.getSelectedShapeIds()\n\t\tconst selectionBounds = this.editor.getSelectionRotatedPageBounds()\n\t\tconst focusedGroupId = this.editor.getFocusedGroupId()\n\t\tconst {\n\t\t\tinputs: { currentPagePoint, shiftKey, altKey },\n\t\t} = this.editor\n\n\t\tthis.hitShape = info.shape\n\t\tconst outermostSelectingShape = this.editor.getOutermostSelectableShape(info.shape)\n\n\t\tif (\n\t\t\t// If the shape has an onClick handler\n\t\t\tthis.editor.getShapeUtil(info.shape).onClick ||\n\t\t\t// ...or if the shape is the focused layer (e.g. group)\n\t\t\toutermostSelectingShape.id === focusedGroupId ||\n\t\t\t// ...or if the shape is within the selection\n\t\t\tselectedShapeIds.includes(outermostSelectingShape.id) ||\n\t\t\tthis.editor.isAncestorSelected(outermostSelectingShape.id) ||\n\t\t\t// ...or if the current point is NOT within the selection bounds\n\t\t\t(selectedShapeIds.length > 1 && selectionBounds?.containsPoint(currentPagePoint))\n\t\t) {\n\t\t\t// We won't select the shape on enter, though we might select it on pointer up!\n\t\t\tthis.didSelectOnEnter = false\n\t\t\tthis.hitShapeForPointerUp = outermostSelectingShape\n\t\t\treturn\n\t\t}\n\n\t\tthis.didSelectOnEnter = true\n\n\t\tif (shiftKey && !altKey) {\n\t\t\tthis.editor.cancelDoubleClick()\n\t\t\tif (!selectedShapeIds.includes(outermostSelectingShape.id)) {\n\t\t\t\tthis.editor.mark('shift selecting shape')\n\t\t\t\tthis.editor.setSelectedShapes([...selectedShapeIds, outermostSelectingShape.id])\n\t\t\t}\n\t\t} else {\n\t\t\tthis.editor.mark('selecting shape')\n\t\t\tthis.editor.setSelectedShapes([outermostSelectingShape.id])\n\t\t}\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = (info) => {\n\t\tconst selectedShapeIds = this.editor.getSelectedShapeIds()\n\t\tconst focusedGroupId = this.editor.getFocusedGroupId()\n\t\tconst zoomLevel = this.editor.getZoomLevel()\n\t\tconst {\n\t\t\tinputs: { currentPagePoint, shiftKey },\n\t\t} = this.editor\n\n\t\tconst hitShape =\n\t\t\tthis.editor.getShapeAtPoint(currentPagePoint, {\n\t\t\t\tmargin: HIT_TEST_MARGIN / zoomLevel,\n\t\t\t\thitInside: true,\n\t\t\t\trenderingOnly: true,\n\t\t\t}) ?? this.hitShape\n\n\t\tconst selectingShape = hitShape\n\t\t\t? this.editor.getOutermostSelectableShape(hitShape)\n\t\t\t: this.hitShapeForPointerUp\n\n\t\tif (selectingShape) {\n\t\t\t// If the selecting shape has a click handler, call it instead of selecting the shape\n\t\t\tconst util = this.editor.getShapeUtil(selectingShape)\n\t\t\tif (util.onClick) {\n\t\t\t\tconst change = util.onClick?.(selectingShape)\n\t\t\t\tif (change) {\n\t\t\t\t\tthis.editor.mark('shape on click')\n\t\t\t\t\tthis.editor.updateShapes([change])\n\t\t\t\t\tthis.parent.transition('idle', info)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (selectingShape.id === focusedGroupId) {\n\t\t\t\tif (selectedShapeIds.length > 0) {\n\t\t\t\t\tthis.editor.mark('clearing shape ids')\n\t\t\t\t\tthis.editor.setSelectedShapes([])\n\t\t\t\t} else {\n\t\t\t\t\tthis.editor.popFocusedGroupId()\n\t\t\t\t}\n\t\t\t\tthis.parent.transition('idle', info)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif (!this.didSelectOnEnter) {\n\t\t\t// if the shape has an ancestor which is a focusable layer and it is not focused but it is selected\n\t\t\t// then we should focus the layer and select the shape\n\n\t\t\tconst outermostSelectableShape = this.editor.getOutermostSelectableShape(\n\t\t\t\thitShape,\n\t\t\t\t// if a group is selected, we want to stop before reaching that group\n\t\t\t\t// so we can drill down into the group\n\t\t\t\t(parent) => !selectedShapeIds.includes(parent.id)\n\t\t\t)\n\n\t\t\t// If the outermost shape is selected, then either select or deselect the SELECTING shape\n\t\t\tif (selectedShapeIds.includes(outermostSelectableShape.id)) {\n\t\t\t\t// same shape, so deselect it if shift is pressed, otherwise deselect all others\n\t\t\t\tif (shiftKey) {\n\t\t\t\t\tthis.editor.mark('deselecting on pointer up')\n\t\t\t\t\tthis.editor.deselect(selectingShape)\n\t\t\t\t} else {\n\t\t\t\t\tif (selectedShapeIds.includes(selectingShape.id)) {\n\t\t\t\t\t\t// todo\n\t\t\t\t\t\t// if the shape is editable and we're inside of an editable part of that shape, e.g. the label of a geo shape,\n\t\t\t\t\t\t// then we would want to begin editing the shape. At the moment we're relying on the shape label's onPointerUp\n\t\t\t\t\t\t// handler to do this logic, and prevent the regular pointer up event, so we won't be here in that case.\n\n\t\t\t\t\t\t// ! tldraw hack\n\t\t\t\t\t\t// if the shape is a geo shape, and we're inside of the label, then we want to begin editing the label\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tselectedShapeIds.length === 1 &&\n\t\t\t\t\t\t\t(this.editor.isShapeOfType<TLGeoShape>(selectingShape, 'geo') ||\n\t\t\t\t\t\t\t\tthis.editor.isShapeOfType<TLArrowShape>(selectingShape, 'arrow'))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst geometry = this.editor.getShapeGeometry(selectingShape)\n\t\t\t\t\t\t\tconst labelGeometry = (geometry as Group2d).children[1]\n\t\t\t\t\t\t\tif (labelGeometry) {\n\t\t\t\t\t\t\t\tconst pointInShapeSpace = this.editor.getPointInShapeSpace(\n\t\t\t\t\t\t\t\t\tselectingShape,\n\t\t\t\t\t\t\t\t\tcurrentPagePoint\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tlabelGeometry.bounds.containsPoint(pointInShapeSpace, 0) &&\n\t\t\t\t\t\t\t\t\tlabelGeometry.hitTestPoint(pointInShapeSpace)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tthis.editor.batch(() => {\n\t\t\t\t\t\t\t\t\t\tthis.editor.mark('editing on pointer up')\n\t\t\t\t\t\t\t\t\t\tthis.editor.select(selectingShape.id)\n\n\t\t\t\t\t\t\t\t\t\tconst util = this.editor.getShapeUtil(selectingShape)\n\t\t\t\t\t\t\t\t\t\tif (this.editor.getInstanceState().isReadonly) {\n\t\t\t\t\t\t\t\t\t\t\tif (!util.canEditInReadOnly(selectingShape)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tthis.editor.setEditingShape(selectingShape.id)\n\t\t\t\t\t\t\t\t\t\tthis.editor.setCurrentTool('select.editing_shape')\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// We just want to select the single shape from the selection\n\t\t\t\t\t\tthis.editor.mark('selecting on pointer up')\n\t\t\t\t\t\tthis.editor.select(selectingShape.id)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.editor.mark('selecting on pointer up')\n\t\t\t\t\t\tthis.editor.select(selectingShape)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (shiftKey) {\n\t\t\t\t// Different shape, so we are drilling down into a group with shift key held.\n\t\t\t\t// Deselect any ancestors and add the target shape to the selection\n\t\t\t\tconst ancestors = this.editor.getShapeAncestors(outermostSelectableShape)\n\n\t\t\t\tthis.editor.mark('shift deselecting on pointer up')\n\t\t\t\tthis.editor.setSelectedShapes([\n\t\t\t\t\t...this.editor.getSelectedShapeIds().filter((id) => !ancestors.find((a) => a.id === id)),\n\t\t\t\t\toutermostSelectableShape.id,\n\t\t\t\t])\n\t\t\t} else {\n\t\t\t\tthis.editor.mark('selecting on pointer up')\n\t\t\t\t// different shape and we are drilling down, but no shift held so just select it straight up\n\t\t\t\tthis.editor.setSelectedShapes([outermostSelectableShape.id])\n\t\t\t}\n\t\t}\n\n\t\tthis.parent.transition('idle', info)\n\t}\n\n\toverride onPointerMove: TLEventHandlers['onPointerMove'] = (info) => {\n\t\tif (this.editor.inputs.isDragging) {\n\t\t\tif (this.editor.getInstanceState().isReadonly) return\n\t\t\tthis.parent.transition('translating', info)\n\t\t}\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onInterrupt = () => {\n\t\tthis.cancel()\n\t}\n\n\tprivate cancel() {\n\t\tthis.parent.transition('idle')\n\t}\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -169,10 +169,8 @@ class Resizing extends import_editor.StateNode {
169
169
  -selectionRotation
170
170
  );
171
171
  const scale = import_editor.Vec2d.DivV(distanceFromScaleOriginNow, distanceFromScaleOriginAtStart);
172
- if (!Number.isFinite(scale.x))
173
- scale.x = 1;
174
- if (!Number.isFinite(scale.y))
175
- scale.y = 1;
172
+ if (!Number.isFinite(scale.x)) scale.x = 1;
173
+ if (!Number.isFinite(scale.y)) scale.y = 1;
176
174
  const isXLocked = dragHandle === "top" || dragHandle === "bottom";
177
175
  const isYLocked = dragHandle === "left" || dragHandle === "right";
178
176
  if (isAspectRatioLocked) {
@@ -216,12 +214,10 @@ class Resizing extends import_editor.StateNode {
216
214
  if (this.editor.inputs.ctrlKey) {
217
215
  this.didHoldCommand = true;
218
216
  for (const { id, children } of frames) {
219
- if (!children.length)
220
- continue;
217
+ if (!children.length) continue;
221
218
  const initial = shapeSnapshots.get(id).shape;
222
219
  const current = this.editor.getShape(id);
223
- if (!(initial && current))
224
- continue;
220
+ if (!(initial && current)) continue;
225
221
  const dx = current.x - initial.x;
226
222
  const dy = current.y - initial.y;
227
223
  const delta = new import_editor.Vec2d(dx, dy).rot(-initial.rotation);
@@ -239,8 +235,7 @@ class Resizing extends import_editor.StateNode {
239
235
  } else if (this.didHoldCommand) {
240
236
  this.didHoldCommand = false;
241
237
  for (const { children } of frames) {
242
- if (!children.length)
243
- continue;
238
+ if (!children.length) continue;
244
239
  for (const child of children) {
245
240
  this.editor.updateShape({
246
241
  id: child.id,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/tools/SelectTool/childStates/Resizing.ts"],
4
4
  "sourcesContent": ["import {\n\tMatrix2d,\n\tPI,\n\tPI2,\n\tSelectionCorner,\n\tSelectionEdge,\n\tStateNode,\n\tTAU,\n\tTLEnterEventHandler,\n\tTLEventHandlers,\n\tTLFrameShape,\n\tTLPointerEventInfo,\n\tTLShape,\n\tTLShapeId,\n\tTLShapePartial,\n\tTLTickEventHandler,\n\tVec2d,\n\tVecLike,\n\tareAnglesCompatible,\n\tcompact,\n\tmoveCameraWhenCloseToEdge,\n} from '@bigbluebutton/editor'\n\ntype ResizingInfo = TLPointerEventInfo & {\n\ttarget: 'selection'\n\thandle: SelectionEdge | SelectionCorner\n\tisCreating?: boolean\n\tonCreate?: (shape: TLShape | null) => void\n\tcreationCursorOffset?: VecLike\n\tonInteractionEnd?: string\n}\n\nexport class Resizing extends StateNode {\n\tstatic override id = 'resizing'\n\n\tinfo = {} as ResizingInfo\n\n\tmarkId = ''\n\n\t// A switch to detect when the user is holding ctrl\n\tprivate didHoldCommand = false\n\n\t// we transition into the resizing state from the geo pointing state, which starts with a shape of size w: 1, h: 1,\n\t// so if the user drags x: +50, y: +50 after mouseDown, the shape will be w: 51, h: 51, which is too many pixels, alas\n\t// so we allow passing a further offset into this state to negate such issues\n\tcreationCursorOffset = { x: 0, y: 0 } as VecLike\n\n\tprivate snapshot = {} as any as Snapshot\n\n\toverride onEnter: TLEnterEventHandler = (info: ResizingInfo) => {\n\t\tconst { isCreating = false, creationCursorOffset = { x: 0, y: 0 } } = info\n\n\t\tthis.info = info\n\t\tthis.didHoldCommand = false\n\n\t\tthis.parent.setCurrentToolIdMask(info.onInteractionEnd)\n\t\tthis.creationCursorOffset = creationCursorOffset\n\n\t\tthis.snapshot = this._createSnapshot()\n\n\t\tif (isCreating) {\n\t\t\tthis.markId = `creating:${this.editor.getOnlySelectedShape()!.id}`\n\n\t\t\tthis.editor.updateInstanceState(\n\t\t\t\t{ cursor: { type: 'cross', rotation: 0 } },\n\t\t\t\t{ ephemeral: true }\n\t\t\t)\n\t\t} else {\n\t\t\tthis.markId = 'starting resizing'\n\t\t\tthis.editor.mark(this.markId)\n\t\t}\n\n\t\tthis.handleResizeStart()\n\t\tthis.updateShapes()\n\t}\n\n\toverride onTick: TLTickEventHandler = () => {\n\t\tmoveCameraWhenCloseToEdge(this.editor)\n\t}\n\n\toverride onPointerMove: TLEventHandlers['onPointerMove'] = () => {\n\t\tthis.updateShapes()\n\t}\n\n\toverride onKeyDown: TLEventHandlers['onKeyDown'] = () => {\n\t\tthis.updateShapes()\n\t}\n\toverride onKeyUp: TLEventHandlers['onKeyUp'] = () => {\n\t\tthis.updateShapes()\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tthis.cancel()\n\t}\n\n\tprivate cancel() {\n\t\t// Restore initial models\n\t\tthis.editor.bailToMark(this.markId)\n\t\tif (this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, {})\n\t\t} else {\n\t\t\tthis.parent.transition('idle')\n\t\t}\n\t}\n\n\tprivate complete() {\n\t\tthis.handleResizeEnd()\n\n\t\tif (this.info.isCreating && this.info.onCreate) {\n\t\t\tthis.info.onCreate?.(this.editor.getOnlySelectedShape())\n\t\t\treturn\n\t\t}\n\n\t\tif (this.editor.getInstanceState().isToolLocked && this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, {})\n\t\t\treturn\n\t\t}\n\n\t\tthis.parent.transition('idle')\n\t}\n\n\tprivate handleResizeStart() {\n\t\tconst { shapeSnapshots } = this.snapshot\n\n\t\tconst changes: TLShapePartial[] = []\n\n\t\tshapeSnapshots.forEach(({ shape }) => {\n\t\t\tconst util = this.editor.getShapeUtil(shape)\n\t\t\tconst change = util.onResizeStart?.(shape)\n\t\t\tif (change) {\n\t\t\t\tchanges.push(change)\n\t\t\t}\n\t\t})\n\n\t\tif (changes.length > 0) {\n\t\t\tthis.editor.updateShapes(changes)\n\t\t}\n\t}\n\n\tprivate handleResizeEnd() {\n\t\tconst { shapeSnapshots } = this.snapshot\n\n\t\tconst changes: TLShapePartial[] = []\n\n\t\tshapeSnapshots.forEach(({ shape }) => {\n\t\t\tconst current = this.editor.getShape(shape.id)!\n\t\t\tconst util = this.editor.getShapeUtil(shape)\n\t\t\tconst change = util.onResizeEnd?.(shape, current)\n\t\t\tif (change) {\n\t\t\t\tchanges.push(change)\n\t\t\t}\n\t\t})\n\n\t\tif (changes.length > 0) {\n\t\t\tthis.editor.updateShapes(changes)\n\t\t}\n\t}\n\n\tprivate updateShapes() {\n\t\tconst { altKey, shiftKey } = this.editor.inputs\n\t\tconst {\n\t\t\tframes,\n\t\t\tshapeSnapshots,\n\t\t\tselectionBounds,\n\t\t\tcursorHandleOffset,\n\t\t\tselectedShapeIds,\n\t\t\tselectionRotation,\n\t\t\tcanShapesDeform,\n\t\t} = this.snapshot\n\n\t\tconst isAspectRatioLocked = shiftKey || !canShapesDeform\n\n\t\t// first negate the 'cursor handle offset'\n\t\t// we need to do this because we do grid snapping based on the page point of the handle\n\t\t// rather than the page point of the cursor, so it's easier to pretend that the cursor\n\t\t// is really where the handle actually is\n\t\t//\n\t\t// *** Massively zoomed-in diagram of the initial mouseDown ***\n\t\t//\n\t\t//\n\t\t// \u2502\n\t\t// \u2502\n\t\t// \u2502\n\t\t// \u2502\n\t\t// \u2502\n\t\t// \u2502\n\t\t// \u2502\n\t\t// \u2502corner handle\n\t\t// \u250C\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2510\n\t\t// selection \u2502 \u2502\n\t\t// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 x\u25C4\u2500\u2500\u253C\u2500\u2500\u2500\u2500 drag handle point \u25B2\n\t\t// \u2502 \u2502 \u2502\n\t\t// \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u251C\u2500 cursorHandleOffset.y\n\t\t// \u2502\n\t\t// originPagePoint\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25BAx\u2500\u2510 \u25BC\n\t\t// \u2502 \u2514\u2500\u2510\n\t\t// \u2502 \u2514\u2500\u2510\n\t\t// \u2502 \u2502 mouse (sorry)\n\t\t// \u2514\u2500\u2500\u2510 \u250C\u2518\n\t\t// \u2502 \u2502\n\t\t// \u2514\u2500\u2518\n\t\t// \u25C4\u2500\u2500\u252C\u2500\u2500\u25BA\n\t\t// \u2502\n\t\t// cursorHandleOffset.x\n\n\t\tconst { ctrlKey } = this.editor.inputs\n\n\t\tconst currentPagePoint = this.editor.inputs.currentPagePoint\n\t\t\t.clone()\n\t\t\t.sub(cursorHandleOffset)\n\t\t\t.sub(this.creationCursorOffset)\n\t\tconst originPagePoint = this.editor.inputs.originPagePoint.clone().sub(cursorHandleOffset)\n\n\t\tif (this.editor.getInstanceState().isGridMode && !ctrlKey) {\n\t\t\tconst { gridSize } = this.editor.getDocumentSettings()\n\t\t\tcurrentPagePoint.snapToGrid(gridSize)\n\t\t}\n\n\t\tconst dragHandle = this.info.handle as SelectionCorner | SelectionEdge\n\t\tconst scaleOriginHandle = rotateSelectionHandle(dragHandle, Math.PI)\n\n\t\tthis.editor.snaps.clear()\n\n\t\tconst shouldSnap = this.editor.user.getIsSnapMode() ? !ctrlKey : ctrlKey\n\n\t\tif (shouldSnap && selectionRotation % TAU === 0) {\n\t\t\tconst { nudge } = this.editor.snaps.snapResize({\n\t\t\t\tdragDelta: Vec2d.Sub(currentPagePoint, originPagePoint),\n\t\t\t\tinitialSelectionPageBounds: this.snapshot.initialSelectionPageBounds,\n\t\t\t\thandle: rotateSelectionHandle(dragHandle, selectionRotation),\n\t\t\t\tisAspectRatioLocked,\n\t\t\t\tisResizingFromCenter: altKey,\n\t\t\t})\n\n\t\t\tcurrentPagePoint.add(nudge)\n\t\t}\n\n\t\t// get the page point of the selection handle opposite to the drag handle\n\t\t// or the center of the selection box if altKey is pressed\n\t\tconst scaleOriginPage = Vec2d.RotWith(\n\t\t\taltKey ? selectionBounds.center : selectionBounds.getHandlePoint(scaleOriginHandle),\n\t\t\tselectionBounds.point,\n\t\t\tselectionRotation\n\t\t)\n\n\t\t// calculate the scale by measuring the current distance between the drag handle and the scale origin\n\t\t// and dividing by the original distance between the drag handle and the scale origin\n\n\t\tconst distanceFromScaleOriginNow = Vec2d.Sub(currentPagePoint, scaleOriginPage).rot(\n\t\t\t-selectionRotation\n\t\t)\n\n\t\tconst distanceFromScaleOriginAtStart = Vec2d.Sub(originPagePoint, scaleOriginPage).rot(\n\t\t\t-selectionRotation\n\t\t)\n\n\t\tconst scale = Vec2d.DivV(distanceFromScaleOriginNow, distanceFromScaleOriginAtStart)\n\n\t\tif (!Number.isFinite(scale.x)) scale.x = 1\n\t\tif (!Number.isFinite(scale.y)) scale.y = 1\n\n\t\tconst isXLocked = dragHandle === 'top' || dragHandle === 'bottom'\n\t\tconst isYLocked = dragHandle === 'left' || dragHandle === 'right'\n\n\t\t// lock an axis if required\n\t\tif (isAspectRatioLocked) {\n\t\t\tif (isYLocked) {\n\t\t\t\t// holding shift and dragging either the left or the right edge\n\t\t\t\tscale.y = Math.abs(scale.x)\n\t\t\t} else if (isXLocked) {\n\t\t\t\t// holding shift and dragging either the top or the bottom edge\n\t\t\t\tscale.x = Math.abs(scale.y)\n\t\t\t} else if (Math.abs(scale.x) > Math.abs(scale.y)) {\n\t\t\t\t// holding shift and the drag has moved further in the x dimension\n\t\t\t\tscale.y = Math.abs(scale.x) * (scale.y < 0 ? -1 : 1)\n\t\t\t} else {\n\t\t\t\t// holding shift and the drag has moved further in the y dimension\n\t\t\t\tscale.x = Math.abs(scale.y) * (scale.x < 0 ? -1 : 1)\n\t\t\t}\n\t\t} else {\n\t\t\t// not holding shift, but still need to lock axes if dragging an edge\n\t\t\tif (isXLocked) {\n\t\t\t\tscale.x = 1\n\t\t\t}\n\t\t\tif (isYLocked) {\n\t\t\t\tscale.y = 1\n\t\t\t}\n\t\t}\n\n\t\tif (!this.info.isCreating) {\n\t\t\tthis.updateCursor({\n\t\t\t\tdragHandle,\n\t\t\t\tisFlippedX: scale.x < 0,\n\t\t\t\tisFlippedY: scale.y < 0,\n\t\t\t\trotation: selectionRotation,\n\t\t\t})\n\t\t}\n\n\t\tfor (const id of shapeSnapshots.keys()) {\n\t\t\tconst snapshot = shapeSnapshots.get(id)!\n\n\t\t\tthis.editor.resizeShape(id, scale, {\n\t\t\t\tinitialShape: snapshot.shape,\n\t\t\t\tinitialBounds: snapshot.bounds,\n\t\t\t\tinitialPageTransform: snapshot.pageTransform,\n\t\t\t\tdragHandle,\n\t\t\t\tmode:\n\t\t\t\t\tselectedShapeIds.length === 1 && id === selectedShapeIds[0]\n\t\t\t\t\t\t? 'resize_bounds'\n\t\t\t\t\t\t: 'scale_shape',\n\t\t\t\tscaleOrigin: scaleOriginPage,\n\t\t\t\tscaleAxisRotation: selectionRotation,\n\t\t\t})\n\t\t}\n\n\t\tif (this.editor.inputs.ctrlKey) {\n\t\t\tthis.didHoldCommand = true\n\n\t\t\tfor (const { id, children } of frames) {\n\t\t\t\tif (!children.length) continue\n\t\t\t\tconst initial = shapeSnapshots.get(id)!.shape\n\t\t\t\tconst current = this.editor.getShape(id)!\n\t\t\t\tif (!(initial && current)) continue\n\n\t\t\t\t// If the user is holding ctrl, then preseve the position of the frame's children\n\t\t\t\tconst dx = current.x - initial.x\n\t\t\t\tconst dy = current.y - initial.y\n\n\t\t\t\tconst delta = new Vec2d(dx, dy).rot(-initial.rotation)\n\n\t\t\t\tif (delta.x !== 0 || delta.y !== 0) {\n\t\t\t\t\tfor (const child of children) {\n\t\t\t\t\t\tthis.editor.updateShape({\n\t\t\t\t\t\t\tid: child.id,\n\t\t\t\t\t\t\ttype: child.type,\n\t\t\t\t\t\t\tx: child.x - delta.x,\n\t\t\t\t\t\t\ty: child.y - delta.y,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.didHoldCommand) {\n\t\t\tthis.didHoldCommand = false\n\n\t\t\tfor (const { children } of frames) {\n\t\t\t\tif (!children.length) continue\n\t\t\t\tfor (const child of children) {\n\t\t\t\t\tthis.editor.updateShape({\n\t\t\t\t\t\tid: child.id,\n\t\t\t\t\t\ttype: child.type,\n\t\t\t\t\t\tx: child.x,\n\t\t\t\t\t\ty: child.y,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// ---\n\n\tprivate updateCursor({\n\t\tdragHandle,\n\t\tisFlippedX,\n\t\tisFlippedY,\n\t\trotation,\n\t}: {\n\t\tdragHandle: SelectionCorner | SelectionEdge\n\t\tisFlippedX: boolean\n\t\tisFlippedY: boolean\n\t\trotation: number\n\t}) {\n\t\tconst nextCursor = { ...this.editor.getInstanceState().cursor }\n\n\t\tswitch (dragHandle) {\n\t\t\tcase 'top_left':\n\t\t\tcase 'bottom_right': {\n\t\t\t\tnextCursor.type = 'nwse-resize'\n\t\t\t\tif (isFlippedX !== isFlippedY) {\n\t\t\t\t\tnextCursor.type = 'nesw-resize'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'top_right':\n\t\t\tcase 'bottom_left': {\n\t\t\t\tnextCursor.type = 'nesw-resize'\n\t\t\t\tif (isFlippedX !== isFlippedY) {\n\t\t\t\t\tnextCursor.type = 'nwse-resize'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tnextCursor.rotation = rotation\n\n\t\tthis.editor.setCursor(nextCursor)\n\t}\n\n\toverride onExit = () => {\n\t\tthis.parent.setCurrentToolIdMask(undefined)\n\t\tthis.editor.updateInstanceState(\n\t\t\t{ cursor: { type: 'default', rotation: 0 } },\n\t\t\t{ ephemeral: true }\n\t\t)\n\t\tthis.editor.snaps.clear()\n\t}\n\n\t_createSnapshot = () => {\n\t\tconst selectedShapeIds = this.editor.getSelectedShapeIds()\n\t\tconst selectionRotation = this.editor.getSelectionRotation()\n\t\tconst {\n\t\t\tinputs: { originPagePoint },\n\t\t} = this.editor\n\n\t\tconst selectionBounds = this.editor.getSelectionRotatedPageBounds()!\n\n\t\tconst dragHandlePoint = Vec2d.RotWith(\n\t\t\tselectionBounds.getHandlePoint(this.info.handle!),\n\t\t\tselectionBounds.point,\n\t\t\tselectionRotation\n\t\t)\n\n\t\tconst cursorHandleOffset = Vec2d.Sub(originPagePoint, dragHandlePoint)\n\n\t\tconst shapeSnapshots = new Map<TLShapeId, ShapeSnapshot>()\n\n\t\tconst frames: { id: TLShapeId; children: TLShape[] }[] = []\n\n\t\tselectedShapeIds.forEach((id) => {\n\t\t\tconst shape = this.editor.getShape(id)\n\t\t\tif (shape) {\n\t\t\t\tif (shape.type === 'frame') {\n\t\t\t\t\tframes.push({\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tchildren: compact(\n\t\t\t\t\t\t\tthis.editor.getSortedChildIdsForParent(shape).map((id) => this.editor.getShape(id))\n\t\t\t\t\t\t),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tshapeSnapshots.set(shape.id, this._createShapeSnapshot(shape))\n\t\t\t\tif (\n\t\t\t\t\tthis.editor.isShapeOfType<TLFrameShape>(shape, 'frame') &&\n\t\t\t\t\tselectedShapeIds.length === 1\n\t\t\t\t)\n\t\t\t\t\treturn\n\t\t\t\tthis.editor.visitDescendants(shape.id, (descendantId) => {\n\t\t\t\t\tconst descendent = this.editor.getShape(descendantId)\n\t\t\t\t\tif (descendent) {\n\t\t\t\t\t\tshapeSnapshots.set(descendent.id, this._createShapeSnapshot(descendent))\n\t\t\t\t\t\tif (this.editor.isShapeOfType<TLFrameShape>(descendent, 'frame')) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\tconst canShapesDeform = ![...shapeSnapshots.values()].some(\n\t\t\t(shape) =>\n\t\t\t\t!areAnglesCompatible(shape.pageRotation, selectionRotation) || shape.isAspectRatioLocked\n\t\t)\n\n\t\treturn {\n\t\t\tshapeSnapshots,\n\t\t\tselectionBounds,\n\t\t\tcursorHandleOffset,\n\t\t\tselectionRotation,\n\t\t\tselectedShapeIds,\n\t\t\tcanShapesDeform,\n\t\t\tinitialSelectionPageBounds: this.editor.getSelectionPageBounds()!,\n\t\t\tframes,\n\t\t}\n\t}\n\n\t_createShapeSnapshot = (shape: TLShape) => {\n\t\tconst pageTransform = this.editor.getShapePageTransform(shape)!\n\t\tconst util = this.editor.getShapeUtil(shape)\n\n\t\treturn {\n\t\t\tshape,\n\t\t\tbounds: this.editor.getShapeGeometry(shape).bounds,\n\t\t\tpageTransform,\n\t\t\tpageRotation: Matrix2d.Decompose(pageTransform!).rotation,\n\t\t\tisAspectRatioLocked: util.isAspectRatioLocked(shape),\n\t\t}\n\t}\n}\n\ntype Snapshot = ReturnType<Resizing['_createSnapshot']>\ntype ShapeSnapshot = ReturnType<Resizing['_createShapeSnapshot']>\n\nconst ORDERED_SELECTION_HANDLES: (SelectionEdge | SelectionCorner)[] = [\n\t'top',\n\t'top_right',\n\t'right',\n\t'bottom_right',\n\t'bottom',\n\t'bottom_left',\n\t'left',\n\t'top_left',\n]\n\nexport function rotateSelectionHandle(handle: SelectionEdge | SelectionCorner, rotation: number) {\n\t// first find out how many tau we need to rotate by\n\trotation = rotation % PI2\n\tconst numSteps = Math.round(rotation / (PI / 4))\n\n\tconst currentIndex = ORDERED_SELECTION_HANDLES.indexOf(handle)\n\treturn ORDERED_SELECTION_HANDLES[(currentIndex + numSteps) % ORDERED_SELECTION_HANDLES.length]\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["id"]
7
7
  }
@@ -34,8 +34,7 @@ class Rotating extends import_editor.StateNode {
34
34
  this.markId = "rotate start";
35
35
  this.editor.mark(this.markId);
36
36
  const snapshot = (0, import_editor.getRotationSnapshot)({ editor: this.editor });
37
- if (!snapshot)
38
- return this.parent.transition("idle", this.info);
37
+ if (!snapshot) return this.parent.transition("idle", this.info);
39
38
  this.snapshot = snapshot;
40
39
  this.handleStart();
41
40
  };
@@ -125,8 +124,7 @@ class Rotating extends import_editor.StateNode {
125
124
  inputs: { shiftKey, currentPagePoint }
126
125
  } = this.editor;
127
126
  const { initialCursorAngle, initialSelectionRotation } = this.snapshot;
128
- if (!selectionBounds)
129
- return initialSelectionRotation;
127
+ if (!selectionBounds) return initialSelectionRotation;
130
128
  const selectionPageCenter = selectionBounds.center.clone().rotWith(selectionBounds.point, selectionRotation);
131
129
  const preSnapRotationDelta = selectionPageCenter.angle(currentPagePoint) - initialCursorAngle;
132
130
  let newSelectionRotation = initialSelectionRotation + preSnapRotationDelta;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/tools/SelectTool/childStates/Rotating.ts"],
4
4
  "sourcesContent": ["import {\n\tEPSILON,\n\tRotateCorner,\n\tStateNode,\n\tTLEventHandlers,\n\tTLPointerEventInfo,\n\tTLRotationSnapshot,\n\tangleDelta,\n\tapplyRotationToSnapshotShapes,\n\tdegreesToRadians,\n\tgetRotationSnapshot,\n\tsnapAngle,\n} from '@bigbluebutton/editor'\nimport { CursorTypeMap } from './PointingResizeHandle'\n\nexport class Rotating extends StateNode {\n\tstatic override id = 'rotating'\n\n\tsnapshot = {} as TLRotationSnapshot\n\n\tinfo = {} as Extract<TLPointerEventInfo, { target: 'selection' }> & { onInteractionEnd?: string }\n\n\tmarkId = ''\n\n\toverride onEnter = (\n\t\tinfo: TLPointerEventInfo & { target: 'selection'; onInteractionEnd?: string }\n\t) => {\n\t\t// Store the event information\n\t\tthis.info = info\n\t\tthis.parent.setCurrentToolIdMask(info.onInteractionEnd)\n\n\t\tthis.markId = 'rotate start'\n\t\tthis.editor.mark(this.markId)\n\n\t\tconst snapshot = getRotationSnapshot({ editor: this.editor })\n\t\tif (!snapshot) return this.parent.transition('idle', this.info)\n\t\tthis.snapshot = snapshot\n\n\t\t// Trigger a pointer move\n\t\tthis.handleStart()\n\t}\n\n\toverride onExit = () => {\n\t\tthis.editor.setCursor({ type: 'default', rotation: 0 })\n\t\tthis.parent.setCurrentToolIdMask(undefined)\n\n\t\tthis.snapshot = {} as TLRotationSnapshot\n\t}\n\n\toverride onPointerMove = () => {\n\t\tthis.update()\n\t}\n\n\toverride onKeyDown = () => {\n\t\tthis.update()\n\t}\n\n\toverride onKeyUp = () => {\n\t\tthis.update()\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onCancel = () => {\n\t\tthis.cancel()\n\t}\n\n\t// ---\n\n\tprivate update = () => {\n\t\tconst newSelectionRotation = this._getRotationFromPointerPosition({\n\t\t\tsnapToNearestDegree: false,\n\t\t})\n\n\t\tapplyRotationToSnapshotShapes({\n\t\t\teditor: this.editor,\n\t\t\tdelta: newSelectionRotation,\n\t\t\tsnapshot: this.snapshot,\n\t\t\tstage: 'update',\n\t\t})\n\n\t\t// Update cursor\n\t\tthis.editor.updateInstanceState({\n\t\t\tcursor: {\n\t\t\t\ttype: CursorTypeMap[this.info.handle as RotateCorner],\n\t\t\t\trotation: newSelectionRotation + this.snapshot.initialSelectionRotation,\n\t\t\t},\n\t\t})\n\t}\n\n\tprivate cancel = () => {\n\t\tthis.editor.bailToMark(this.markId)\n\t\tif (this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, this.info)\n\t\t} else {\n\t\t\tthis.parent.transition('idle', this.info)\n\t\t}\n\t}\n\n\tprivate complete = () => {\n\t\tapplyRotationToSnapshotShapes({\n\t\t\teditor: this.editor,\n\t\t\tdelta: this._getRotationFromPointerPosition({ snapToNearestDegree: true }),\n\t\t\tsnapshot: this.snapshot,\n\t\t\tstage: 'end',\n\t\t})\n\t\tif (this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, this.info)\n\t\t} else {\n\t\t\tthis.parent.transition('idle', this.info)\n\t\t}\n\t}\n\n\tprotected handleStart() {\n\t\tconst newSelectionRotation = this._getRotationFromPointerPosition({\n\t\t\tsnapToNearestDegree: false,\n\t\t})\n\n\t\tapplyRotationToSnapshotShapes({\n\t\t\teditor: this.editor,\n\t\t\tdelta: this._getRotationFromPointerPosition({ snapToNearestDegree: false }),\n\t\t\tsnapshot: this.snapshot,\n\t\t\tstage: 'start',\n\t\t})\n\n\t\t// Update cursor\n\t\tthis.editor.updateInstanceState({\n\t\t\tcursor: {\n\t\t\t\ttype: CursorTypeMap[this.info.handle as RotateCorner],\n\t\t\t\trotation: newSelectionRotation + this.snapshot.initialSelectionRotation,\n\t\t\t},\n\t\t})\n\t}\n\n\t_getRotationFromPointerPosition({ snapToNearestDegree }: { snapToNearestDegree: boolean }) {\n\t\tconst selectionRotation = this.editor.getSelectionRotation()\n\t\tconst selectionBounds = this.editor.getSelectionRotatedPageBounds()\n\t\tconst {\n\t\t\tinputs: { shiftKey, currentPagePoint },\n\t\t} = this.editor\n\t\tconst { initialCursorAngle, initialSelectionRotation } = this.snapshot\n\n\t\tif (!selectionBounds) return initialSelectionRotation\n\n\t\tconst selectionPageCenter = selectionBounds.center\n\t\t\t.clone()\n\t\t\t.rotWith(selectionBounds.point, selectionRotation)\n\n\t\t// The delta is the difference between the current angle and the initial angle\n\t\tconst preSnapRotationDelta = selectionPageCenter.angle(currentPagePoint) - initialCursorAngle\n\t\tlet newSelectionRotation = initialSelectionRotation + preSnapRotationDelta\n\n\t\tif (shiftKey) {\n\t\t\tnewSelectionRotation = snapAngle(newSelectionRotation, 24)\n\t\t} else if (snapToNearestDegree) {\n\t\t\tnewSelectionRotation = Math.round(newSelectionRotation / EPSILON) * EPSILON\n\n\t\t\tif (this.editor.getInstanceState().isCoarsePointer) {\n\t\t\t\tconst snappedToRightAngle = snapAngle(newSelectionRotation, 4)\n\t\t\t\tconst angleToRightAngle = angleDelta(newSelectionRotation, snappedToRightAngle)\n\t\t\t\tif (Math.abs(angleToRightAngle) < degreesToRadians(5)) {\n\t\t\t\t\tnewSelectionRotation = snappedToRightAngle\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn newSelectionRotation - initialSelectionRotation\n\t}\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -113,8 +113,7 @@ class ScribbleBrushing extends import_editor.StateNode {
113
113
  );
114
114
  if (intersection !== null) {
115
115
  const isInMask = (0, import_editor.pointInPolygon)(currentPagePoint, pageMask);
116
- if (!isInMask)
117
- continue;
116
+ if (!isInMask) continue;
118
117
  }
119
118
  }
120
119
  newlySelectedShapeIds.add(outermostShape.id);
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/tools/SelectTool/childStates/ScribbleBrushing.ts"],
4
4
  "sourcesContent": ["import {\n\tGeometry2d,\n\tHIT_TEST_MARGIN,\n\tStateNode,\n\tTLEventHandlers,\n\tTLFrameShape,\n\tTLGroupShape,\n\tTLShape,\n\tTLShapeId,\n\tVec2d,\n\tintersectLineSegmentPolyline,\n\tpointInPolygon,\n} from '@bigbluebutton/editor'\n\nexport class ScribbleBrushing extends StateNode {\n\tstatic override id = 'scribble_brushing'\n\n\thits = new Set<TLShapeId>()\n\n\tsize = 0\n\n\tscribbleId = 'id'\n\n\tinitialSelectedShapeIds = new Set<TLShapeId>()\n\tnewlySelectedShapeIds = new Set<TLShapeId>()\n\n\toverride onEnter = () => {\n\t\tthis.initialSelectedShapeIds = new Set<TLShapeId>(\n\t\t\tthis.editor.inputs.shiftKey ? this.editor.getSelectedShapeIds() : []\n\t\t)\n\t\tthis.newlySelectedShapeIds = new Set<TLShapeId>()\n\t\tthis.size = 0\n\t\tthis.hits.clear()\n\n\t\tconst scribbleItem = this.editor.scribbles.addScribble({\n\t\t\tcolor: 'selection-stroke',\n\t\t\topacity: 0.32,\n\t\t\tsize: 12,\n\t\t})\n\n\t\tthis.scribbleId = scribbleItem.id\n\n\t\tthis.updateScribbleSelection(true)\n\n\t\trequestAnimationFrame(() => {\n\t\t\tthis.editor.updateInstanceState({ brush: null })\n\t\t})\n\t}\n\n\toverride onExit = () => {\n\t\tthis.editor.scribbles.stop(this.scribbleId)\n\t}\n\n\toverride onPointerMove = () => {\n\t\tthis.updateScribbleSelection(true)\n\t}\n\n\toverride onPointerUp = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onKeyDown = () => {\n\t\tthis.updateScribbleSelection(false)\n\t}\n\n\toverride onKeyUp = () => {\n\t\tif (!this.editor.inputs.altKey) {\n\t\t\tthis.parent.transition('brushing')\n\t\t} else {\n\t\t\tthis.updateScribbleSelection(false)\n\t\t}\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.complete()\n\t}\n\n\tprivate pushPointToScribble = () => {\n\t\tconst { x, y } = this.editor.inputs.currentPagePoint\n\t\tthis.editor.scribbles.addPoint(this.scribbleId, x, y)\n\t}\n\n\tprivate updateScribbleSelection(addPoint: boolean) {\n\t\tconst zoomLevel = this.editor.getZoomLevel()\n\t\tconst currentPageShapes = this.editor.getCurrentPageShapes()\n\t\tconst {\n\t\t\tinputs: { shiftKey, originPagePoint, previousPagePoint, currentPagePoint },\n\t\t} = this.editor\n\n\t\tconst { newlySelectedShapeIds, initialSelectedShapeIds } = this\n\n\t\tif (addPoint) {\n\t\t\tthis.pushPointToScribble()\n\t\t}\n\n\t\tconst shapes = currentPageShapes\n\t\tlet shape: TLShape, geometry: Geometry2d, A: Vec2d, B: Vec2d\n\n\t\tfor (let i = 0, n = shapes.length; i < n; i++) {\n\t\t\tshape = shapes[i]\n\t\t\tgeometry = this.editor.getShapeGeometry(shape)\n\n\t\t\t// If the shape is a group or is already selected or locked, don't select it\n\t\t\tif (\n\t\t\t\tthis.editor.isShapeOfType<TLGroupShape>(shape, 'group') ||\n\t\t\t\tnewlySelectedShapeIds.has(shape.id) ||\n\t\t\t\tthis.editor.isShapeOrAncestorLocked(shape)\n\t\t\t) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// If the scribble started inside of the frame, don't select it\n\t\t\tif (this.editor.isShapeOfType<TLFrameShape>(shape, 'frame')) {\n\t\t\t\tconst point = this.editor.getPointInShapeSpace(shape, originPagePoint)\n\t\t\t\tif (geometry.bounds.containsPoint(point)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tA = this.editor.getPointInShapeSpace(shape, previousPagePoint)\n\t\t\tB = this.editor.getPointInShapeSpace(shape, currentPagePoint)\n\t\t\tif (geometry.hitTestLineSegment(A, B, HIT_TEST_MARGIN / zoomLevel)) {\n\t\t\t\tconst outermostShape = this.editor.getOutermostSelectableShape(shape)\n\n\t\t\t\tconst pageMask = this.editor.getShapeMask(outermostShape.id)\n\n\t\t\t\tif (pageMask) {\n\t\t\t\t\tconst intersection = intersectLineSegmentPolyline(\n\t\t\t\t\t\tpreviousPagePoint,\n\t\t\t\t\t\tcurrentPagePoint,\n\t\t\t\t\t\tpageMask\n\t\t\t\t\t)\n\t\t\t\t\tif (intersection !== null) {\n\t\t\t\t\t\tconst isInMask = pointInPolygon(currentPagePoint, pageMask)\n\t\t\t\t\t\tif (!isInMask) continue\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnewlySelectedShapeIds.add(outermostShape.id)\n\t\t\t}\n\t\t}\n\n\t\tthis.editor.setSelectedShapes(\n\t\t\t[\n\t\t\t\t...new Set<TLShapeId>(\n\t\t\t\t\tshiftKey\n\t\t\t\t\t\t? [...newlySelectedShapeIds, ...initialSelectedShapeIds]\n\t\t\t\t\t\t: [...newlySelectedShapeIds]\n\t\t\t\t),\n\t\t\t],\n\t\t\t{ squashing: true }\n\t\t)\n\t}\n\n\tprivate complete() {\n\t\tthis.parent.transition('idle')\n\t}\n\n\tprivate cancel() {\n\t\tthis.editor.setSelectedShapes([...this.initialSelectedShapeIds], { squashing: true })\n\t\tthis.parent.transition('idle')\n\t}\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }