tldraw 4.3.0-canary.9c474ef3fad5 → 4.3.0-canary.a2419250444e

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 (507) hide show
  1. package/dist-cjs/index.d.ts +285 -237
  2. package/dist-cjs/index.js +12 -5
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/defaultEmbedDefinitions.js +1 -1
  5. package/dist-cjs/lib/defaultEmbedDefinitions.js.map +2 -2
  6. package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -5
  7. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  8. package/dist-cjs/lib/defaultSideEffects.js +6 -1
  9. package/dist-cjs/lib/defaultSideEffects.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +6 -2
  11. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +1 -1
  13. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +2 -2
  14. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
  15. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  16. package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js +1 -1
  17. package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js.map +2 -2
  18. package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +4 -10
  19. package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +2 -2
  20. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +7 -4
  21. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
  22. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +1 -1
  23. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  24. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +22 -20
  25. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  26. package/dist-cjs/lib/shapes/draw/getPath.js +20 -11
  27. package/dist-cjs/lib/shapes/draw/getPath.js.map +2 -2
  28. package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +82 -86
  29. package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +3 -3
  30. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +6 -0
  31. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
  32. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +5 -4
  33. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +136 -136
  35. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  36. package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +5 -10
  37. package/dist-cjs/lib/shapes/geo/toolStates/Idle.js.map +2 -2
  38. package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +3 -3
  39. package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +2 -2
  40. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +22 -20
  41. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  42. package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +3 -3
  43. package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +2 -2
  44. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +1 -6
  45. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  46. package/dist-cjs/lib/shapes/note/toolStates/Pointing.js +5 -10
  47. package/dist-cjs/lib/shapes/note/toolStates/Pointing.js.map +2 -2
  48. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +1 -1
  49. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  50. package/dist-cjs/lib/shapes/shared/RichTextLabel.js +1 -1
  51. package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +2 -2
  52. package/dist-cjs/lib/shapes/shared/interpolate-props.js +3 -3
  53. package/dist-cjs/lib/shapes/shared/interpolate-props.js.map +2 -2
  54. package/dist-cjs/lib/shapes/text/RichTextArea.js +5 -0
  55. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  56. package/dist-cjs/lib/shapes/text/toolStates/Idle.js +4 -10
  57. package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +2 -2
  58. package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +7 -5
  59. package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +2 -2
  60. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +4 -5
  61. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  62. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +2 -4
  63. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  64. package/dist-cjs/lib/tools/HandTool/HandTool.js +3 -5
  65. package/dist-cjs/lib/tools/HandTool/HandTool.js.map +2 -2
  66. package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js +3 -2
  67. package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js.map +2 -2
  68. package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js +1 -1
  69. package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js.map +2 -2
  70. package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js +1 -1
  71. package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js.map +2 -2
  72. package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js +9 -7
  73. package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +2 -2
  74. package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +6 -5
  75. package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +2 -2
  76. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js +4 -6
  77. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js.map +2 -2
  78. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +1 -1
  79. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +2 -2
  80. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js +1 -1
  81. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js.map +2 -2
  82. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js +1 -1
  83. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js.map +2 -2
  84. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js +2 -1
  85. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js.map +2 -2
  86. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js +1 -1
  87. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js.map +2 -2
  88. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +7 -5
  89. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  90. package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +38 -11
  91. package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +2 -2
  92. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +42 -50
  93. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
  94. package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js +6 -6
  95. package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js.map +2 -2
  96. package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js +1 -1
  97. package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js.map +2 -2
  98. package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js +4 -14
  99. package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js.map +2 -2
  100. package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js +1 -1
  101. package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js.map +2 -2
  102. package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js +1 -1
  103. package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js.map +2 -2
  104. package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js +2 -2
  105. package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js.map +2 -2
  106. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +4 -13
  107. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
  108. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +5 -6
  109. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
  110. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +2 -3
  111. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
  112. package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +7 -6
  113. package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +2 -2
  114. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +13 -11
  115. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  116. package/dist-cjs/lib/tools/SelectTool/selectHelpers.js +15 -4
  117. package/dist-cjs/lib/tools/SelectTool/selectHelpers.js.map +2 -2
  118. package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js +1 -1
  119. package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js.map +2 -2
  120. package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js +3 -3
  121. package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js.map +2 -2
  122. package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js +5 -6
  123. package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js.map +2 -2
  124. package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js +1 -3
  125. package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
  126. package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js +1 -1
  127. package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js.map +2 -2
  128. package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js +1 -1
  129. package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js.map +2 -2
  130. package/dist-cjs/lib/ui/TldrawUi.js +2 -2
  131. package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
  132. package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js +1 -3
  133. package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js.map +2 -2
  134. package/dist-cjs/lib/ui/components/CursorChatBubble.js +1 -1
  135. package/dist-cjs/lib/ui/components/CursorChatBubble.js.map +2 -2
  136. package/dist-cjs/lib/ui/components/DefaultDebugPanel.js +1 -21
  137. package/dist-cjs/lib/ui/components/DefaultDebugPanel.js.map +2 -2
  138. package/dist-cjs/lib/ui/components/HelperButtons/BackToContent.js +1 -1
  139. package/dist-cjs/lib/ui/components/HelperButtons/BackToContent.js.map +2 -2
  140. package/dist-cjs/lib/ui/components/HelperButtons/StopFollowing.js.map +2 -2
  141. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +1 -1
  142. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
  143. package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js +2 -15
  144. package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js.map +3 -3
  145. package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js +3 -1
  146. package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js.map +2 -2
  147. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js +6 -0
  148. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js.map +2 -2
  149. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js +1 -1
  150. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js.map +2 -2
  151. package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js +1 -1
  152. package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js.map +2 -2
  153. package/dist-cjs/lib/ui/components/TopPanel/CenteredTopPanelContainer.js.map +1 -1
  154. package/dist-cjs/lib/ui/components/ZoomMenu/DefaultZoomMenu.js +1 -1
  155. package/dist-cjs/lib/ui/components/ZoomMenu/DefaultZoomMenu.js.map +2 -2
  156. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +3 -1
  157. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  158. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +6 -5
  159. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  160. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.js.map +2 -2
  161. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.js.map +2 -2
  162. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +13 -6
  163. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  164. package/dist-cjs/lib/ui/context/actions.js +6 -6
  165. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  166. package/dist-cjs/lib/ui/context/components.js +1 -2
  167. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  168. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +2 -2
  169. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  170. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +2 -2
  171. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +2 -2
  172. package/dist-cjs/lib/ui/hooks/useTools.js +4 -5
  173. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  174. package/dist-cjs/lib/ui/version.js +3 -3
  175. package/dist-cjs/lib/ui/version.js.map +1 -1
  176. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js +8 -6
  177. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +2 -2
  178. package/dist-cjs/lib/{tools/selection-logic/getShouldEnterCropModeOnPointerDown.js → utils/test-helpers.js} +21 -8
  179. package/dist-cjs/lib/utils/test-helpers.js.map +7 -0
  180. package/dist-cjs/lib/utils/text/richText.js +4 -2
  181. package/dist-cjs/lib/utils/text/richText.js.map +2 -2
  182. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +7 -2
  183. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
  184. package/dist-esm/index.d.mts +285 -237
  185. package/dist-esm/index.mjs +12 -5
  186. package/dist-esm/index.mjs.map +2 -2
  187. package/dist-esm/lib/defaultEmbedDefinitions.mjs +1 -1
  188. package/dist-esm/lib/defaultEmbedDefinitions.mjs.map +2 -2
  189. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -5
  190. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  191. package/dist-esm/lib/defaultSideEffects.mjs +6 -1
  192. package/dist-esm/lib/defaultSideEffects.mjs.map +2 -2
  193. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +6 -2
  194. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  195. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +1 -1
  196. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +2 -2
  197. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
  198. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  199. package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs +1 -1
  200. package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs.map +2 -2
  201. package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +4 -10
  202. package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +2 -2
  203. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +7 -4
  204. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
  205. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +1 -1
  206. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  207. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +27 -22
  208. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  209. package/dist-esm/lib/shapes/draw/getPath.mjs +21 -11
  210. package/dist-esm/lib/shapes/draw/getPath.mjs.map +2 -2
  211. package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +83 -86
  212. package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +3 -3
  213. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +6 -0
  214. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
  215. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +5 -4
  216. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  217. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +137 -136
  218. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  219. package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +5 -10
  220. package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs.map +2 -2
  221. package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +3 -3
  222. package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +2 -2
  223. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +23 -21
  224. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  225. package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +3 -3
  226. package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +2 -2
  227. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +2 -7
  228. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  229. package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs +5 -10
  230. package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs.map +2 -2
  231. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +1 -1
  232. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  233. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +1 -1
  234. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
  235. package/dist-esm/lib/shapes/shared/interpolate-props.mjs +4 -4
  236. package/dist-esm/lib/shapes/shared/interpolate-props.mjs.map +2 -2
  237. package/dist-esm/lib/shapes/text/RichTextArea.mjs +5 -0
  238. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  239. package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +4 -10
  240. package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +2 -2
  241. package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +7 -5
  242. package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +2 -2
  243. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +4 -5
  244. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  245. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +2 -4
  246. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  247. package/dist-esm/lib/tools/HandTool/HandTool.mjs +3 -5
  248. package/dist-esm/lib/tools/HandTool/HandTool.mjs.map +2 -2
  249. package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs +3 -2
  250. package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs.map +2 -2
  251. package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs +1 -1
  252. package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs.map +2 -2
  253. package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs +1 -1
  254. package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs.map +2 -2
  255. package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs +9 -7
  256. package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +2 -2
  257. package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +6 -5
  258. package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +2 -2
  259. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs +4 -6
  260. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs.map +2 -2
  261. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +1 -1
  262. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +2 -2
  263. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs +1 -1
  264. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs.map +2 -2
  265. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs +1 -1
  266. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs.map +2 -2
  267. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs +2 -1
  268. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs.map +2 -2
  269. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs +1 -1
  270. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs.map +2 -2
  271. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +7 -5
  272. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  273. package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +38 -11
  274. package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +2 -2
  275. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +43 -51
  276. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
  277. package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs +6 -6
  278. package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs.map +2 -2
  279. package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs +1 -1
  280. package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs.map +2 -2
  281. package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs +5 -15
  282. package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs.map +2 -2
  283. package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs +1 -1
  284. package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs.map +2 -2
  285. package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs +1 -1
  286. package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs.map +2 -2
  287. package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs +2 -2
  288. package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs.map +2 -2
  289. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +4 -13
  290. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
  291. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -6
  292. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
  293. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +2 -3
  294. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
  295. package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +7 -6
  296. package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +2 -2
  297. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +13 -11
  298. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  299. package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs +17 -4
  300. package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs.map +2 -2
  301. package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs +1 -1
  302. package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs.map +2 -2
  303. package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs +3 -3
  304. package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs.map +2 -2
  305. package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs +5 -6
  306. package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs.map +2 -2
  307. package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs +1 -3
  308. package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
  309. package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs +1 -1
  310. package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs.map +2 -2
  311. package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs +1 -1
  312. package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs.map +2 -2
  313. package/dist-esm/lib/ui/TldrawUi.mjs +2 -2
  314. package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
  315. package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs +1 -3
  316. package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs.map +2 -2
  317. package/dist-esm/lib/ui/components/CursorChatBubble.mjs +1 -1
  318. package/dist-esm/lib/ui/components/CursorChatBubble.mjs.map +2 -2
  319. package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs +3 -30
  320. package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs.map +2 -2
  321. package/dist-esm/lib/ui/components/HelperButtons/BackToContent.mjs +1 -1
  322. package/dist-esm/lib/ui/components/HelperButtons/BackToContent.mjs.map +2 -2
  323. package/dist-esm/lib/ui/components/HelperButtons/StopFollowing.mjs.map +2 -2
  324. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +1 -1
  325. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
  326. package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs +3 -6
  327. package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs.map +2 -2
  328. package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs +3 -1
  329. package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs.map +2 -2
  330. package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs +6 -0
  331. package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs.map +2 -2
  332. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs +1 -1
  333. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs.map +2 -2
  334. package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs +1 -1
  335. package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs.map +2 -2
  336. package/dist-esm/lib/ui/components/TopPanel/CenteredTopPanelContainer.mjs.map +1 -1
  337. package/dist-esm/lib/ui/components/ZoomMenu/DefaultZoomMenu.mjs +1 -1
  338. package/dist-esm/lib/ui/components/ZoomMenu/DefaultZoomMenu.mjs.map +2 -2
  339. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +3 -1
  340. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  341. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +6 -5
  342. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  343. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.mjs.map +2 -2
  344. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.mjs.map +2 -2
  345. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +13 -6
  346. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  347. package/dist-esm/lib/ui/context/actions.mjs +6 -6
  348. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  349. package/dist-esm/lib/ui/context/components.mjs +1 -2
  350. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  351. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +2 -2
  352. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  353. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +2 -2
  354. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +2 -2
  355. package/dist-esm/lib/ui/hooks/useTools.mjs +4 -5
  356. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  357. package/dist-esm/lib/ui/version.mjs +3 -3
  358. package/dist-esm/lib/ui/version.mjs.map +1 -1
  359. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs +9 -6
  360. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +2 -2
  361. package/dist-esm/lib/utils/test-helpers.mjs +21 -0
  362. package/dist-esm/lib/utils/test-helpers.mjs.map +7 -0
  363. package/dist-esm/lib/utils/text/richText.mjs +5 -2
  364. package/dist-esm/lib/utils/text/richText.mjs.map +2 -2
  365. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +8 -2
  366. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
  367. package/package.json +18 -16
  368. package/src/index.ts +5 -2
  369. package/src/lib/Tldraw.test.tsx +46 -1
  370. package/src/lib/defaultEmbedDefinitions.ts +2 -1
  371. package/src/lib/defaultExternalContentHandlers.ts +10 -10
  372. package/src/lib/defaultSideEffects.ts +6 -1
  373. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +40 -133
  374. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +8 -8
  375. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +6 -4
  376. package/src/lib/shapes/arrow/arrowLabel.ts +1 -1
  377. package/src/lib/shapes/arrow/arrowTargetState.ts +1 -1
  378. package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.test.ts +80 -0
  379. package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.tsx +1 -1
  380. package/src/lib/shapes/arrow/toolStates/Idle.tsx +4 -14
  381. package/src/lib/shapes/arrow/toolStates/Pointing.tsx +7 -4
  382. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +1 -1
  383. package/src/lib/shapes/draw/DrawShapeUtil.test.ts +146 -0
  384. package/src/lib/shapes/draw/DrawShapeUtil.tsx +28 -24
  385. package/src/lib/shapes/draw/getPath.ts +31 -10
  386. package/src/lib/shapes/draw/toolStates/Drawing.ts +96 -86
  387. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +7 -0
  388. package/src/lib/shapes/frame/FrameShapeUtil.tsx +9 -3
  389. package/src/lib/shapes/geo/GeoShapeUtil.tsx +219 -172
  390. package/src/lib/shapes/geo/toolStates/Idle.ts +5 -15
  391. package/src/lib/shapes/geo/toolStates/Pointing.ts +3 -3
  392. package/src/lib/shapes/highlight/HighlightShapeUtil.test.ts +146 -0
  393. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +24 -23
  394. package/src/lib/shapes/line/toolStates/Pointing.ts +3 -3
  395. package/src/lib/shapes/note/NoteShapeUtil.tsx +2 -2
  396. package/src/lib/shapes/note/noteCloning.test.ts +3 -1
  397. package/src/lib/shapes/note/toolStates/Pointing.ts +5 -10
  398. package/src/lib/shapes/shared/HyperlinkButton.tsx +1 -1
  399. package/src/lib/shapes/shared/RichTextLabel.tsx +1 -1
  400. package/src/lib/shapes/shared/interpolate-props.ts +4 -4
  401. package/src/lib/shapes/text/RichTextArea.tsx +5 -0
  402. package/src/lib/shapes/text/toolStates/Idle.ts +4 -14
  403. package/src/lib/shapes/text/toolStates/Pointing.ts +7 -7
  404. package/src/lib/tools/EraserTool/childStates/Erasing.ts +4 -5
  405. package/src/lib/tools/EraserTool/childStates/Pointing.ts +2 -4
  406. package/src/lib/tools/HandTool/HandTool.ts +3 -5
  407. package/src/lib/tools/HandTool/childStates/Dragging.ts +3 -2
  408. package/src/lib/tools/HandTool/childStates/Pointing.ts +1 -1
  409. package/src/lib/tools/LaserTool/childStates/Lasering.ts +1 -1
  410. package/src/lib/tools/SelectTool/DragAndDropManager.ts +12 -7
  411. package/src/lib/tools/SelectTool/childStates/Brushing.ts +6 -5
  412. package/src/lib/tools/SelectTool/childStates/Crop/children/Cropping.ts +7 -6
  413. package/src/lib/tools/SelectTool/childStates/Crop/children/Idle.ts +1 -1
  414. package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.ts +1 -1
  415. package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.ts +1 -1
  416. package/src/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.ts +2 -1
  417. package/src/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.ts +1 -1
  418. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +7 -5
  419. package/src/lib/tools/SelectTool/childStates/EditingShape.ts +55 -12
  420. package/src/lib/tools/SelectTool/childStates/Idle.ts +58 -71
  421. package/src/lib/tools/SelectTool/childStates/PointingArrowLabel.ts +6 -7
  422. package/src/lib/tools/SelectTool/childStates/PointingCanvas.ts +1 -1
  423. package/src/lib/tools/SelectTool/childStates/PointingHandle.ts +5 -5
  424. package/src/lib/tools/SelectTool/childStates/PointingResizeHandle.ts +1 -1
  425. package/src/lib/tools/SelectTool/childStates/PointingRotateHandle.ts +1 -1
  426. package/src/lib/tools/SelectTool/childStates/PointingSelection.ts +2 -2
  427. package/src/lib/tools/SelectTool/childStates/PointingShape.ts +4 -14
  428. package/src/lib/tools/SelectTool/childStates/Resizing.ts +6 -6
  429. package/src/lib/tools/SelectTool/childStates/Rotating.ts +2 -3
  430. package/src/lib/tools/SelectTool/childStates/ScribbleBrushing.ts +7 -6
  431. package/src/lib/tools/SelectTool/childStates/Translating.ts +15 -12
  432. package/src/lib/tools/SelectTool/selectHelpers.ts +39 -4
  433. package/src/lib/tools/ZoomTool/ZoomTool.ts +1 -1
  434. package/src/lib/tools/ZoomTool/childStates/Pointing.ts +3 -3
  435. package/src/lib/tools/ZoomTool/childStates/ZoomBrushing.ts +5 -6
  436. package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +1 -3
  437. package/src/lib/tools/selection-logic/selectOnCanvasPointerUp.ts +1 -1
  438. package/src/lib/tools/selection-logic/updateHoveredShapeId.ts +1 -1
  439. package/src/lib/ui/TldrawUi.tsx +5 -2
  440. package/src/lib/ui/components/ContextMenu/DefaultContextMenu.tsx +1 -3
  441. package/src/lib/ui/components/CursorChatBubble.tsx +2 -2
  442. package/src/lib/ui/components/DefaultDebugPanel.tsx +3 -42
  443. package/src/lib/ui/components/HelperButtons/BackToContent.tsx +1 -1
  444. package/src/lib/ui/components/HelperButtons/StopFollowing.tsx +2 -2
  445. package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +1 -1
  446. package/src/lib/ui/components/OfflineIndicator/OfflineIndicator.tsx +6 -5
  447. package/src/lib/ui/components/PageMenu/PageItemInput.tsx +3 -1
  448. package/src/lib/ui/components/SharePanel/PeopleMenu.tsx +8 -0
  449. package/src/lib/ui/components/Toolbar/DefaultImageToolbar.tsx +1 -1
  450. package/src/lib/ui/components/Toolbar/DefaultRichTextToolbar.tsx +1 -1
  451. package/src/lib/ui/components/TopPanel/CenteredTopPanelContainer.tsx +1 -1
  452. package/src/lib/ui/components/ZoomMenu/DefaultZoomMenu.tsx +1 -1
  453. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +5 -3
  454. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +12 -5
  455. package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.tsx +1 -1
  456. package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.tsx +1 -1
  457. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +5 -2
  458. package/src/lib/ui/context/actions.tsx +6 -6
  459. package/src/lib/ui/context/components.tsx +1 -2
  460. package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
  461. package/src/lib/ui/hooks/useKeyboardShortcuts.ts +2 -2
  462. package/src/lib/ui/hooks/useTools.tsx +4 -5
  463. package/src/lib/ui/version.ts +3 -3
  464. package/src/lib/ui.css +27 -23
  465. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +12 -48
  466. package/src/lib/utils/excalidraw/putExcalidrawContent.ts +11 -6
  467. package/src/lib/utils/test-helpers.ts +60 -0
  468. package/src/lib/utils/text/richText.ts +6 -5
  469. package/src/lib/utils/tldr/buildFromV1Document.ts +9 -2
  470. package/src/test/Editor.test.tsx +40 -29
  471. package/src/test/EraserTool.test.ts +10 -12
  472. package/src/test/TestEditor.ts +48 -47
  473. package/src/test/TldrawEditor.test.tsx +3 -2
  474. package/src/test/__snapshots__/drawing.test.ts.snap +3 -1257
  475. package/src/test/__snapshots__/resizing.test.ts.snap +3 -12
  476. package/src/test/arrows-megabus.test.tsx +1 -1
  477. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +8 -8
  478. package/src/test/commands/setCamera.test.ts +13 -11
  479. package/src/test/commands/stackShapes.test.ts +34 -8
  480. package/src/test/commands/zoomToBounds.test.ts +19 -3
  481. package/src/test/commands/zoomToSelection.test.ts +14 -3
  482. package/src/test/custom-clipping.test.ts +16 -9
  483. package/src/test/drawing.test.ts +17 -10
  484. package/src/test/flipShapes.test.ts +33 -0
  485. package/src/test/frames.test.ts +92 -0
  486. package/src/test/groups.test.tsx +1 -1
  487. package/src/test/modifiers.test.ts +6 -6
  488. package/src/test/resizing.test.ts +7 -9
  489. package/src/test/selection-omnibus.test.ts +2 -2
  490. package/src/test/spacebarPanning.test.ts +28 -10
  491. package/src/test/test-jsx.tsx +3 -0
  492. package/src/test/ui/BackToContent.test.tsx +111 -0
  493. package/tldraw.css +33 -31
  494. package/dist-cjs/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.js.map +0 -7
  495. package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js +0 -32
  496. package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js.map +0 -7
  497. package/dist-cjs/lib/utils/text/textDirection.js +0 -51
  498. package/dist-cjs/lib/utils/text/textDirection.js.map +0 -7
  499. package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs +0 -8
  500. package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs.map +0 -7
  501. package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs +0 -12
  502. package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs.map +0 -7
  503. package/dist-esm/lib/utils/text/textDirection.mjs +0 -31
  504. package/dist-esm/lib/utils/text/textDirection.mjs.map +0 -7
  505. package/src/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.ts +0 -10
  506. package/src/lib/ui/components/TopPanel/DefaultTopPanel.tsx +0 -10
  507. package/src/lib/utils/text/textDirection.ts +0 -32
@@ -0,0 +1,146 @@
1
+ import { createShapeId, TLHighlightShape } from '@tldraw/editor'
2
+ import { TestEditor } from '../../../test/TestEditor'
3
+ import { createDrawSegments, pointsToBase64 } from '../../utils/test-helpers'
4
+
5
+ let editor: TestEditor
6
+
7
+ beforeEach(() => {
8
+ editor = new TestEditor()
9
+ })
10
+
11
+ afterEach(() => {
12
+ editor?.dispose()
13
+ })
14
+
15
+ describe('HighlightShapeUtil dot detection', () => {
16
+ const shapeId = createShapeId('test-highlight')
17
+
18
+ function createHighlightShape(segments: TLHighlightShape['props']['segments']): TLHighlightShape {
19
+ editor.createShapes([
20
+ {
21
+ id: shapeId,
22
+ type: 'highlight',
23
+ props: { segments },
24
+ },
25
+ ])
26
+ return editor.getShape(shapeId) as TLHighlightShape
27
+ }
28
+
29
+ describe('getIsDot behavior via hideResizeHandles', () => {
30
+ it('treats a shape with one segment and zero points as a dot', () => {
31
+ const shape = createHighlightShape([{ type: 'free', points: '' }])
32
+ const util = editor.getShapeUtil('highlight')
33
+ expect(util.hideResizeHandles(shape)).toBe(true)
34
+ })
35
+
36
+ it('treats a shape with one segment and one point as a dot', () => {
37
+ const shape = createHighlightShape(createDrawSegments([[{ x: 0, y: 0, z: 0.5 }]]))
38
+ const util = editor.getShapeUtil('highlight')
39
+ expect(util.hideResizeHandles(shape)).toBe(true)
40
+ })
41
+
42
+ it('treats a shape with one segment and two points as NOT a dot', () => {
43
+ const shape = createHighlightShape(
44
+ createDrawSegments([
45
+ [
46
+ { x: 0, y: 0, z: 0.5 },
47
+ { x: 10, y: 10, z: 0.5 },
48
+ ],
49
+ ])
50
+ )
51
+ const util = editor.getShapeUtil('highlight')
52
+ expect(util.hideResizeHandles(shape)).toBe(false)
53
+ })
54
+
55
+ it('treats a shape with one segment and many points as NOT a dot', () => {
56
+ const shape = createHighlightShape(
57
+ createDrawSegments([
58
+ [
59
+ { x: 0, y: 0, z: 0.5 },
60
+ { x: 10, y: 10, z: 0.5 },
61
+ { x: 20, y: 5, z: 0.5 },
62
+ { x: 30, y: 15, z: 0.5 },
63
+ ],
64
+ ])
65
+ )
66
+ const util = editor.getShapeUtil('highlight')
67
+ expect(util.hideResizeHandles(shape)).toBe(false)
68
+ })
69
+
70
+ it('treats a shape with multiple segments as NOT a dot', () => {
71
+ const shape = createHighlightShape(
72
+ createDrawSegments([[{ x: 0, y: 0, z: 0.5 }], [{ x: 10, y: 10, z: 0.5 }]])
73
+ )
74
+ const util = editor.getShapeUtil('highlight')
75
+ expect(util.hideResizeHandles(shape)).toBe(false)
76
+ })
77
+ })
78
+
79
+ describe('hideRotateHandle mirrors hideResizeHandles for dots', () => {
80
+ it('hides rotate handle for dots', () => {
81
+ const shape = createHighlightShape(createDrawSegments([[{ x: 0, y: 0, z: 0.5 }]]))
82
+ const util = editor.getShapeUtil('highlight')
83
+ expect(util.hideRotateHandle(shape)).toBe(true)
84
+ })
85
+
86
+ it('shows rotate handle for non-dots', () => {
87
+ const shape = createHighlightShape(
88
+ createDrawSegments([
89
+ [
90
+ { x: 0, y: 0, z: 0.5 },
91
+ { x: 10, y: 10, z: 0.5 },
92
+ ],
93
+ ])
94
+ )
95
+ const util = editor.getShapeUtil('highlight')
96
+ expect(util.hideRotateHandle(shape)).toBe(false)
97
+ })
98
+ })
99
+
100
+ describe('hideSelectionBoundsFg mirrors hideResizeHandles for dots', () => {
101
+ it('hides selection bounds for dots', () => {
102
+ const shape = createHighlightShape(createDrawSegments([[{ x: 0, y: 0, z: 0.5 }]]))
103
+ const util = editor.getShapeUtil('highlight')
104
+ expect(util.hideSelectionBoundsFg(shape)).toBe(true)
105
+ })
106
+
107
+ it('shows selection bounds for non-dots', () => {
108
+ const shape = createHighlightShape(
109
+ createDrawSegments([
110
+ [
111
+ { x: 0, y: 0, z: 0.5 },
112
+ { x: 10, y: 10, z: 0.5 },
113
+ ],
114
+ ])
115
+ )
116
+ const util = editor.getShapeUtil('highlight')
117
+ expect(util.hideSelectionBoundsFg(shape)).toBe(false)
118
+ })
119
+ })
120
+
121
+ describe('base64 encoding boundary conditions', () => {
122
+ it('correctly handles the boundary at exactly 16 base64 characters (2 points)', () => {
123
+ // Each point is 8 base64 characters (3 Float16s = 6 bytes = 8 base64 chars)
124
+ // 2 points = 16 characters, which should NOT be a dot
125
+ const twoPointsBase64 = pointsToBase64([
126
+ { x: 0, y: 0, z: 0.5 },
127
+ { x: 1, y: 1, z: 0.5 },
128
+ ])
129
+ expect(twoPointsBase64.length).toBe(16)
130
+
131
+ const shape = createHighlightShape([{ type: 'free', points: twoPointsBase64 }])
132
+ const util = editor.getShapeUtil('highlight')
133
+ expect(util.hideResizeHandles(shape)).toBe(false)
134
+ })
135
+
136
+ it('correctly handles the boundary at exactly 8 base64 characters (1 point)', () => {
137
+ // 1 point = 8 characters, which should be a dot
138
+ const onePointBase64 = pointsToBase64([{ x: 0, y: 0, z: 0.5 }])
139
+ expect(onePointBase64.length).toBe(8)
140
+
141
+ const shape = createHighlightShape([{ type: 'free', points: onePointBase64 }])
142
+ const util = editor.getShapeUtil('highlight')
143
+ expect(util.hideResizeHandles(shape)).toBe(true)
144
+ })
145
+ })
146
+ })
@@ -5,7 +5,6 @@ import {
5
5
  Polygon2d,
6
6
  SVGContainer,
7
7
  ShapeUtil,
8
- TLDrawShapeSegment,
9
8
  TLHighlightShape,
10
9
  TLHighlightShapeProps,
11
10
  TLResizeInfo,
@@ -19,7 +18,7 @@ import {
19
18
  useValue,
20
19
  } from '@tldraw/editor'
21
20
 
22
- import { getHighlightFreehandSettings, getPointsFromSegments } from '../draw/getPath'
21
+ import { getHighlightFreehandSettings, getPointsFromDrawSegments } from '../draw/getPath'
23
22
  import { FONT_SIZES } from '../shared/default-shape-constants'
24
23
  import { getStrokeOutlinePoints } from '../shared/freehand/getStrokeOutlinePoints'
25
24
  import { getStrokePoints } from '../shared/freehand/getStrokePoints'
@@ -70,6 +69,8 @@ export class HighlightShapeUtil extends ShapeUtil<TLHighlightShape> {
70
69
  isComplete: false,
71
70
  isPen: false,
72
71
  scale: 1,
72
+ scaleX: 1,
73
+ scaleY: 1,
73
74
  }
74
75
  }
75
76
 
@@ -130,7 +131,11 @@ export class HighlightShapeUtil extends ShapeUtil<TLHighlightShape> {
130
131
  const strokeWidth = getStrokeWidth(shape)
131
132
 
132
133
  const { strokePoints, sw } = getHighlightStrokePoints(shape, strokeWidth, forceSolid)
133
- const allPointsFromSegments = getPointsFromSegments(shape.props.segments)
134
+ const allPointsFromSegments = getPointsFromDrawSegments(
135
+ shape.props.segments,
136
+ shape.props.scaleX,
137
+ shape.props.scaleY
138
+ )
134
139
 
135
140
  let strokePath
136
141
  if (strokePoints.length < 2) {
@@ -177,24 +182,10 @@ export class HighlightShapeUtil extends ShapeUtil<TLHighlightShape> {
177
182
  override onResize(shape: TLHighlightShape, info: TLResizeInfo<TLHighlightShape>) {
178
183
  const { scaleX, scaleY } = info
179
184
 
180
- const newSegments: TLDrawShapeSegment[] = []
181
-
182
- for (const segment of shape.props.segments) {
183
- newSegments.push({
184
- ...segment,
185
- points: segment.points.map(({ x, y, z }) => {
186
- return {
187
- x: scaleX * x,
188
- y: scaleY * y,
189
- z,
190
- }
191
- }),
192
- })
193
- }
194
-
195
185
  return {
196
186
  props: {
197
- segments: newSegments,
187
+ scaleX: scaleX * shape.props.scaleX,
188
+ scaleY: scaleY * shape.props.scaleY,
198
189
  },
199
190
  }
200
191
  }
@@ -231,7 +222,11 @@ function getHighlightStrokePoints(
231
222
  strokeWidth: number,
232
223
  forceSolid: boolean
233
224
  ) {
234
- const allPointsFromSegments = getPointsFromSegments(shape.props.segments)
225
+ const allPointsFromSegments = getPointsFromDrawSegments(
226
+ shape.props.segments,
227
+ shape.props.scaleX,
228
+ shape.props.scaleY
229
+ )
235
230
  const showAsComplete = shape.props.isComplete || last(shape.props.segments)?.type === 'straight'
236
231
 
237
232
  let sw = strokeWidth
@@ -254,7 +249,9 @@ function getStrokeWidth(shape: TLHighlightShape) {
254
249
  }
255
250
 
256
251
  function getIsDot(shape: TLHighlightShape) {
257
- return shape.props.segments.length === 1 && shape.props.segments[0].points.length < 2
252
+ // Each point is 8 base64 characters (3 Float16s = 6 bytes = 8 base64 chars)
253
+ // Check if we have less than 2 points without decoding
254
+ return shape.props.segments.length === 1 && shape.props.segments[0].points.length < 16
258
255
  }
259
256
 
260
257
  function HighlightRenderer({
@@ -270,7 +267,11 @@ function HighlightRenderer({
270
267
  }) {
271
268
  const theme = useDefaultColorTheme()
272
269
 
273
- const allPointsFromSegments = getPointsFromSegments(shape.props.segments)
270
+ const allPointsFromSegments = getPointsFromDrawSegments(
271
+ shape.props.segments,
272
+ shape.props.scaleX,
273
+ shape.props.scaleY
274
+ )
274
275
 
275
276
  let sw = strokeWidth
276
277
  if (!forceSolid && !shape.props.isPen && allPointsFromSegments.length === 1) {
@@ -287,7 +288,7 @@ function HighlightRenderer({
287
288
  const solidStrokePath =
288
289
  strokePoints.length > 1
289
290
  ? getSvgPathFromStrokePoints(strokePoints, false)
290
- : getShapeDot(shape.props.segments[0].points[0])
291
+ : getShapeDot(allPointsFromSegments[0])
291
292
 
292
293
  const colorSpace = useColorSpace()
293
294
 
@@ -23,14 +23,14 @@ export class Pointing extends StateNode {
23
23
 
24
24
  override onEnter(info: { shapeId?: TLShapeId }) {
25
25
  const { inputs } = this.editor
26
- const { currentPagePoint } = inputs
26
+ const currentPagePoint = inputs.getCurrentPagePoint()
27
27
 
28
28
  this.markId = undefined
29
29
 
30
30
  // Previously created line shape that we might be extending
31
31
  const shape = info.shapeId && this.editor.getShape<TLLineShape>(info.shapeId)
32
32
 
33
- if (shape && inputs.shiftKey) {
33
+ if (shape && inputs.getShiftKey()) {
34
34
  // Extending a previous shape
35
35
  this.markId = this.editor.markHistoryStoppingPoint(`creating_line:${shape.id}`)
36
36
  this.shape = shape
@@ -114,7 +114,7 @@ export class Pointing extends StateNode {
114
114
  override onPointerMove() {
115
115
  if (!this.shape) return
116
116
 
117
- if (this.editor.inputs.isDragging) {
117
+ if (this.editor.inputs.getIsDragging()) {
118
118
  const handles = this.editor.getShapeHandles(this.shape)
119
119
  if (!handles) {
120
120
  if (this.markId) this.editor.bailToMark(this.markId)
@@ -32,7 +32,7 @@ import {
32
32
  useValue,
33
33
  } from '@tldraw/editor'
34
34
  import { useCallback, useContext } from 'react'
35
- import { startEditingShapeWithLabel } from '../../tools/SelectTool/selectHelpers'
35
+ import { startEditingShapeWithRichText } from '../../tools/SelectTool/selectHelpers'
36
36
  import { TranslationsContext } from '../../ui/hooks/useTranslation/useTranslation'
37
37
  import {
38
38
  isEmptyRichText,
@@ -536,7 +536,7 @@ function useNoteKeydownHandler(id: TLShapeId) {
536
536
  const newNote = getNoteShapeForAdjacentPosition(editor, shape, adjacentCenter, pageRotation)
537
537
 
538
538
  if (newNote) {
539
- startEditingShapeWithLabel(editor, newNote, true /* selectAll */)
539
+ startEditingShapeWithRichText(editor, newNote, { selectAll: true })
540
540
  }
541
541
  }
542
542
  },
@@ -30,7 +30,7 @@ function testCloneHandles(x: number, y: number, rotation: number) {
30
30
  const handleInPageSpace = editor.getShapePageTransform(shape).applyToPoint(handle)
31
31
  editor.select(shape.id)
32
32
  editor.pointerMove(handleInPageSpace.x, handleInPageSpace.y)
33
- expect(editor.inputs.currentPagePoint).toMatchObject({
33
+ expect(editor.inputs.getCurrentPagePoint()).toMatchObject({
34
34
  x: handleInPageSpace.x,
35
35
  y: handleInPageSpace.y,
36
36
  })
@@ -99,6 +99,7 @@ function testDragCloneHandles(x: number, y: number, rotation: number) {
99
99
  editor.expectToBeIn('select.pointing_handle')
100
100
 
101
101
  editor.pointerMove(handleInPageSpace.x + 30, handleInPageSpace.y + 30)
102
+ editor.forceTick()
102
103
 
103
104
  editor.expectToBeIn('select.translating')
104
105
 
@@ -205,6 +206,7 @@ it('Creates an adjacent note when dragging the clone handle', () => {
205
206
  editor.expectToBeIn('select.pointing_handle')
206
207
 
207
208
  editor.pointerMove(handle.x + 30, handle.y + 30)
209
+ editor.forceTick()
208
210
 
209
211
  const newShape = editor.getLastCreatedShape()
210
212
 
@@ -9,6 +9,7 @@ import {
9
9
  maybeSnapToGrid,
10
10
  } from '@tldraw/editor'
11
11
 
12
+ import { startEditingShapeWithRichText } from '../../../tools/SelectTool/selectHelpers'
12
13
  import {
13
14
  NOTE_ADJACENT_POSITION_SNAP_RADIUS,
14
15
  getAvailableNoteAdjacentPositions,
@@ -32,7 +33,7 @@ export class Pointing extends StateNode {
32
33
  this.markId = editor.markHistoryStoppingPoint(`creating_note:${id}`)
33
34
 
34
35
  // Check for note pits; if the pointer is close to one, place the note centered on the pit
35
- const center = this.editor.inputs.originPagePoint.clone()
36
+ const center = this.editor.inputs.getOriginPagePoint().clone()
36
37
  const offset = getNoteShapeAdjacentPositionOffset(
37
38
  this.editor,
38
39
  center,
@@ -52,7 +53,7 @@ export class Pointing extends StateNode {
52
53
  }
53
54
 
54
55
  override onPointerMove(info: TLPointerEventInfo) {
55
- if (this.editor.inputs.isDragging) {
56
+ if (this.editor.inputs.getIsDragging()) {
56
57
  this.editor.setCurrentTool('select.translating', {
57
58
  ...info,
58
59
  target: 'shape',
@@ -61,8 +62,7 @@ export class Pointing extends StateNode {
61
62
  isCreating: true,
62
63
  creatingMarkId: this.markId,
63
64
  onCreate: () => {
64
- this.editor.setEditingShape(this.shape.id)
65
- this.editor.setCurrentTool('select.editing_shape')
65
+ startEditingShapeWithRichText(this.editor, this.shape.id)
66
66
  },
67
67
  })
68
68
  }
@@ -88,12 +88,7 @@ export class Pointing extends StateNode {
88
88
  if (this.editor.getInstanceState().isToolLocked) {
89
89
  this.parent.transition('idle')
90
90
  } else {
91
- this.editor.setEditingShape(this.shape.id)
92
- this.editor.setCurrentTool('select.editing_shape', {
93
- ...this.info,
94
- target: 'shape',
95
- shape: this.shape,
96
- })
91
+ startEditingShapeWithRichText(this.editor, this.shape.id, { info: this.info })
97
92
  }
98
93
  }
99
94
 
@@ -11,7 +11,7 @@ export function HyperlinkButton({ url }: { url: string }) {
11
11
  const hideButton = useEfficientZoomThreshold()
12
12
  const markAsHandledOnShiftKey = useCallback<PointerEventHandler>(
13
13
  (e) => {
14
- if (!editor.inputs.shiftKey) editor.markEventAsHandled(e)
14
+ if (!editor.inputs.getShiftKey()) editor.markEventAsHandled(e)
15
15
  },
16
16
  [editor]
17
17
  )
@@ -97,7 +97,7 @@ export const RichTextLabel = React.memo(function RichTextLabel({
97
97
  'isDragging',
98
98
  () => {
99
99
  editor.getInstanceState()
100
- isDragging.current = editor.inputs.isDragging
100
+ isDragging.current = editor.inputs.getIsDragging()
101
101
  },
102
102
  [editor]
103
103
  )
@@ -1,4 +1,4 @@
1
- import { TLDrawShapeSegment, VecModel, lerp } from '@tldraw/editor'
1
+ import { TLDrawShapeSegment, VecModel, b64Vecs, lerp } from '@tldraw/editor'
2
2
 
3
3
  /** @public */
4
4
  export const interpolateSegments = (
@@ -10,8 +10,8 @@ export const interpolateSegments = (
10
10
  const endPoints: VecModel[] = []
11
11
 
12
12
  // Extract all points from startSegments and endSegments
13
- startSegments.forEach((segment) => startPoints.push(...segment.points))
14
- endSegments.forEach((segment) => endPoints.push(...segment.points))
13
+ startSegments.forEach((segment) => startPoints.push(...b64Vecs.decodePoints(segment.points)))
14
+ endSegments.forEach((segment) => endPoints.push(...b64Vecs.decodePoints(segment.points)))
15
15
 
16
16
  const maxLength = Math.max(startPoints.length, endPoints.length)
17
17
  const pointsToUseStart: VecModel[] = []
@@ -39,7 +39,7 @@ export const interpolateSegments = (
39
39
  return [
40
40
  {
41
41
  type: 'free',
42
- points: interpolatedPoints,
42
+ points: b64Vecs.encodePoints(interpolatedPoints),
43
43
  },
44
44
  ]
45
45
  }
@@ -183,6 +183,11 @@ export const RichTextArea = React.forwardRef<HTMLDivElement, TextAreaProps>(func
183
183
  blockSeparator: '\n',
184
184
  },
185
185
  },
186
+ // N.B. We disable the text direction in the core list here,
187
+ // but we add it back in again in our own extensions list so that
188
+ // people can omit/override it if they want to.
189
+ enableCoreExtensions: { textDirection: false },
190
+ textDirection: 'auto',
186
191
  ...restOfTipTapConfig,
187
192
  content: rInitialRichText.current as JSONContent,
188
193
  })
@@ -1,5 +1,6 @@
1
1
  import { StateNode, TLKeyboardEventInfo, TLPointerEventInfo } from '@tldraw/editor'
2
2
  import { updateHoveredShapeId } from '../../../tools/selection-logic/updateHoveredShapeId'
3
+ import { startEditingShapeWithRichText } from '../../../tools/SelectTool/selectHelpers'
3
4
 
4
5
  export class Idle extends StateNode {
5
6
  static override id = 'idle'
@@ -27,21 +28,10 @@ export class Idle extends StateNode {
27
28
 
28
29
  override onKeyDown(info: TLKeyboardEventInfo) {
29
30
  if (info.key === 'Enter') {
30
- if (this.editor.getIsReadonly()) return null
31
31
  const onlySelectedShape = this.editor.getOnlySelectedShape()
32
- // If the only selected shape is editable, start editing it
33
- if (
34
- onlySelectedShape &&
35
- this.editor.getShapeUtil(onlySelectedShape).canEdit(onlySelectedShape)
36
- ) {
37
- this.editor.setCurrentTool('select')
38
- this.editor.setEditingShape(onlySelectedShape.id)
39
- this.editor.root.getCurrent()?.transition('editing_shape', {
40
- ...info,
41
- target: 'shape',
42
- shape: onlySelectedShape,
43
- })
44
- }
32
+ if (!this.editor.canEditShape(onlySelectedShape)) return
33
+ this.editor.setCurrentTool('select')
34
+ startEditingShapeWithRichText(this.editor, onlySelectedShape.id, { info })
45
35
  }
46
36
  }
47
37
 
@@ -9,6 +9,7 @@ import {
9
9
  maybeSnapToGrid,
10
10
  toRichText,
11
11
  } from '@tldraw/editor'
12
+ import { startEditingShapeWithRichText } from '../../../tools/SelectTool/selectHelpers'
12
13
 
13
14
  export class Pointing extends StateNode {
14
15
  static override id = 'pointing'
@@ -37,11 +38,12 @@ export class Pointing extends StateNode {
37
38
  if (Date.now() - this.enterTime < 150) return
38
39
 
39
40
  const { editor } = this
40
- const { isPointing } = editor.inputs
41
+ const isPointing = editor.inputs.getIsPointing()
41
42
 
42
43
  if (!isPointing) return
43
44
 
44
- const { originPagePoint, currentPagePoint } = editor.inputs
45
+ const originPagePoint = editor.inputs.getOriginPagePoint()
46
+ const currentPagePoint = editor.inputs.getCurrentPagePoint()
45
47
 
46
48
  const currentDragDist = Math.abs(originPagePoint.x - currentPagePoint.x)
47
49
 
@@ -83,8 +85,7 @@ export class Pointing extends StateNode {
83
85
  creationCursorOffset: { x: currentDragDist * scale, y: 1 },
84
86
  onInteractionEnd: 'text',
85
87
  onCreate: () => {
86
- editor.setEditingShape(shape.id)
87
- // this will automatically set the state to 'select.editing_shape'
88
+ startEditingShapeWithRichText(editor, shape.id)
88
89
  },
89
90
  })
90
91
  }
@@ -109,13 +110,12 @@ export class Pointing extends StateNode {
109
110
  private complete() {
110
111
  this.editor.markHistoryStoppingPoint('creating text shape')
111
112
  const id = createShapeId()
112
- const { originPagePoint } = this.editor.inputs
113
+ const originPagePoint = this.editor.inputs.getOriginPagePoint()
113
114
  const shape = this.createTextShape(id, originPagePoint, true, 20)
114
115
  if (!shape) return
115
116
 
116
117
  this.editor.select(id)
117
- this.editor.setEditingShape(id)
118
- // this will automatically set the state to 'select.editing_shape'
118
+ startEditingShapeWithRichText(this.editor, id)
119
119
  }
120
120
 
121
121
  private cancel() {
@@ -26,7 +26,7 @@ export class Erasing extends StateNode {
26
26
  this.markId = this.editor.markHistoryStoppingPoint('erase scribble begin')
27
27
  this.info = info
28
28
 
29
- const { originPagePoint } = this.editor.inputs
29
+ const originPagePoint = this.editor.inputs.getOriginPagePoint()
30
30
  this.excludedShapeIds = new Set(
31
31
  this.editor
32
32
  .getCurrentPageShapes()
@@ -58,7 +58,7 @@ export class Erasing extends StateNode {
58
58
  }
59
59
 
60
60
  private pushPointToScribble() {
61
- const { x, y } = this.editor.inputs.currentPagePoint
61
+ const { x, y } = this.editor.inputs.getCurrentPagePoint()
62
62
  this.editor.scribbles.addPoint(this.scribbleId, x, y)
63
63
  }
64
64
 
@@ -98,9 +98,8 @@ export class Erasing extends StateNode {
98
98
  const erasingShapeIds = editor.getErasingShapeIds()
99
99
  const zoomLevel = editor.getZoomLevel()
100
100
  const currentPageShapes = editor.getCurrentPageRenderingShapesSorted()
101
- const {
102
- inputs: { currentPagePoint, previousPagePoint },
103
- } = editor
101
+ const currentPagePoint = editor.inputs.getCurrentPagePoint()
102
+ const previousPagePoint = editor.inputs.getPreviousPagePoint()
104
103
 
105
104
  this.pushPointToScribble()
106
105
 
@@ -10,9 +10,7 @@ export class Pointing extends StateNode {
10
10
 
11
11
  const zoomLevel = this.editor.getZoomLevel()
12
12
  const currentPageShapesSorted = this.editor.getCurrentPageRenderingShapesSorted()
13
- const {
14
- inputs: { currentPagePoint },
15
- } = this.editor
13
+ const currentPagePoint = this.editor.inputs.getCurrentPagePoint()
16
14
 
17
15
  const erasing = new Set<TLShapeId>()
18
16
 
@@ -69,7 +67,7 @@ export class Pointing extends StateNode {
69
67
  override onPointerMove(info: TLPointerEventInfo) {
70
68
  if (this._isHoldingAccelKey) return
71
69
 
72
- if (this.editor.inputs.isDragging) {
70
+ if (this.editor.inputs.getIsDragging()) {
73
71
  this.startErasing(info)
74
72
  }
75
73
  }
@@ -14,7 +14,7 @@ export class HandTool extends StateNode {
14
14
 
15
15
  override onDoubleClick(info: TLClickEventInfo) {
16
16
  if (info.phase === 'settle') {
17
- const { currentScreenPoint } = this.editor.inputs
17
+ const currentScreenPoint = this.editor.inputs.getCurrentScreenPoint()
18
18
  this.editor.zoomIn(currentScreenPoint, {
19
19
  animation: { duration: 220, easing: EASINGS.easeOutQuint },
20
20
  })
@@ -23,7 +23,7 @@ export class HandTool extends StateNode {
23
23
 
24
24
  override onTripleClick(info: TLClickEventInfo) {
25
25
  if (info.phase === 'settle') {
26
- const { currentScreenPoint } = this.editor.inputs
26
+ const currentScreenPoint = this.editor.inputs.getCurrentScreenPoint()
27
27
  this.editor.zoomOut(currentScreenPoint, {
28
28
  animation: { duration: 320, easing: EASINGS.easeOutQuint },
29
29
  })
@@ -33,9 +33,7 @@ export class HandTool extends StateNode {
33
33
  override onQuadrupleClick(info: TLClickEventInfo) {
34
34
  if (info.phase === 'settle') {
35
35
  const zoomLevel = this.editor.getZoomLevel()
36
- const {
37
- inputs: { currentScreenPoint },
38
- } = this.editor
36
+ const currentScreenPoint = this.editor.inputs.getCurrentScreenPoint()
39
37
 
40
38
  if (zoomLevel === 1) {
41
39
  this.editor.zoomToFit({ animation: { duration: 400, easing: EASINGS.easeOutQuint } })
@@ -28,7 +28,8 @@ export class Dragging extends StateNode {
28
28
 
29
29
  private update() {
30
30
  const { initialCamera, editor } = this
31
- const { currentScreenPoint, originScreenPoint } = editor.inputs
31
+ const currentScreenPoint = editor.inputs.getCurrentScreenPoint()
32
+ const originScreenPoint = editor.inputs.getOriginScreenPoint()
32
33
 
33
34
  const delta = Vec.Sub(currentScreenPoint, originScreenPoint).div(editor.getZoomLevel())
34
35
  if (delta.len2() === 0) return
@@ -37,7 +38,7 @@ export class Dragging extends StateNode {
37
38
 
38
39
  private complete() {
39
40
  const { editor } = this
40
- const { pointerVelocity } = editor.inputs
41
+ const pointerVelocity = editor.inputs.getPointerVelocity()
41
42
 
42
43
  const velocityAtPointerUp = Math.min(pointerVelocity.len(), 2)
43
44
 
@@ -13,7 +13,7 @@ export class Pointing extends StateNode {
13
13
  }
14
14
 
15
15
  override onPointerMove() {
16
- if (this.editor.inputs.isDragging) {
16
+ if (this.editor.inputs.getIsDragging()) {
17
17
  this.startDragging()
18
18
  }
19
19
  }
@@ -31,7 +31,7 @@ export class Lasering extends StateNode {
31
31
  }
32
32
 
33
33
  private pushPointToScribble() {
34
- const { x, y } = this.editor.inputs.currentPagePoint
34
+ const { x, y } = this.editor.inputs.getCurrentPagePoint()
35
35
  this.editor.scribbles.addPoint(this.scribbleId, x, y)
36
36
  }
37
37