tldraw 4.3.0-canary.e5f56251a468 → 4.3.0-canary.ea88b223b83a

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 (554) hide show
  1. package/dist-cjs/index.d.ts +297 -237
  2. package/dist-cjs/index.js +13 -5
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +2 -2
  5. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +2 -2
  6. package/dist-cjs/lib/defaultEmbedDefinitions.js +1 -1
  7. package/dist-cjs/lib/defaultEmbedDefinitions.js.map +2 -2
  8. package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -5
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/defaultSideEffects.js +6 -1
  11. package/dist-cjs/lib/defaultSideEffects.js.map +2 -2
  12. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +14 -13
  13. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  14. package/dist-cjs/lib/shapes/arrow/arrow-types.js.map +1 -1
  15. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +1 -1
  16. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +2 -2
  17. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
  18. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  19. package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js +1 -1
  20. package/dist-cjs/lib/shapes/arrow/elbow/getElbowArrowInfo.js.map +2 -2
  21. package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +4 -10
  22. package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +2 -2
  23. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +7 -4
  24. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
  25. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +1 -1
  26. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  27. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +25 -23
  28. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  29. package/dist-cjs/lib/shapes/draw/getPath.js +20 -11
  30. package/dist-cjs/lib/shapes/draw/getPath.js.map +2 -2
  31. package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +82 -86
  32. package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +3 -3
  33. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +6 -0
  34. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
  35. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +6 -5
  36. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  37. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +146 -142
  38. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  39. package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +5 -10
  40. package/dist-cjs/lib/shapes/geo/toolStates/Idle.js.map +2 -2
  41. package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +3 -3
  42. package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +2 -2
  43. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +23 -21
  44. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  45. package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +3 -3
  46. package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +2 -2
  47. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +6 -11
  48. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  49. package/dist-cjs/lib/shapes/note/toolStates/Pointing.js +5 -10
  50. package/dist-cjs/lib/shapes/note/toolStates/Pointing.js.map +2 -2
  51. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +3 -2
  52. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  53. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +14 -2
  54. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +3 -3
  55. package/dist-cjs/lib/shapes/shared/RichTextLabel.js +12 -4
  56. package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +3 -3
  57. package/dist-cjs/lib/shapes/shared/ShapeFill.js +2 -2
  58. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  59. package/dist-cjs/lib/shapes/shared/interpolate-props.js +3 -3
  60. package/dist-cjs/lib/shapes/shared/interpolate-props.js.map +2 -2
  61. package/dist-cjs/lib/shapes/shared/{useForceSolid.js → useEfficientZoomThreshold.js} +10 -7
  62. package/dist-cjs/lib/shapes/shared/useEfficientZoomThreshold.js.map +7 -0
  63. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +1 -1
  64. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  65. package/dist-cjs/lib/shapes/text/RichTextArea.js +5 -0
  66. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  67. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +5 -2
  68. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  69. package/dist-cjs/lib/shapes/text/toolStates/Idle.js +4 -10
  70. package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +2 -2
  71. package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +7 -5
  72. package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +2 -2
  73. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +1 -1
  74. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +2 -2
  75. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +4 -5
  76. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  77. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +2 -4
  78. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  79. package/dist-cjs/lib/tools/HandTool/HandTool.js +3 -5
  80. package/dist-cjs/lib/tools/HandTool/HandTool.js.map +2 -2
  81. package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js +3 -2
  82. package/dist-cjs/lib/tools/HandTool/childStates/Dragging.js.map +2 -2
  83. package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js +1 -1
  84. package/dist-cjs/lib/tools/HandTool/childStates/Pointing.js.map +2 -2
  85. package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js +1 -1
  86. package/dist-cjs/lib/tools/LaserTool/childStates/Lasering.js.map +2 -2
  87. package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js +9 -7
  88. package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +2 -2
  89. package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +6 -5
  90. package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +2 -2
  91. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js +4 -6
  92. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js.map +2 -2
  93. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +1 -1
  94. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +2 -2
  95. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js +1 -1
  96. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.js.map +2 -2
  97. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js +1 -1
  98. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js.map +2 -2
  99. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js +2 -1
  100. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js.map +2 -2
  101. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js +1 -1
  102. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.js.map +2 -2
  103. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +7 -5
  104. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  105. package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +38 -11
  106. package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +2 -2
  107. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +42 -50
  108. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
  109. package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js +6 -6
  110. package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js.map +2 -2
  111. package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js +1 -1
  112. package/dist-cjs/lib/tools/SelectTool/childStates/PointingCanvas.js.map +2 -2
  113. package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js +4 -14
  114. package/dist-cjs/lib/tools/SelectTool/childStates/PointingHandle.js.map +2 -2
  115. package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js +1 -1
  116. package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js.map +2 -2
  117. package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js +1 -1
  118. package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js.map +2 -2
  119. package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js +2 -2
  120. package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js.map +2 -2
  121. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +4 -13
  122. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
  123. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +5 -6
  124. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
  125. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +2 -3
  126. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
  127. package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +7 -6
  128. package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +2 -2
  129. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +13 -11
  130. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  131. package/dist-cjs/lib/tools/SelectTool/selectHelpers.js +15 -4
  132. package/dist-cjs/lib/tools/SelectTool/selectHelpers.js.map +2 -2
  133. package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js +1 -1
  134. package/dist-cjs/lib/tools/ZoomTool/ZoomTool.js.map +2 -2
  135. package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js +3 -3
  136. package/dist-cjs/lib/tools/ZoomTool/childStates/Pointing.js.map +2 -2
  137. package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js +5 -6
  138. package/dist-cjs/lib/tools/ZoomTool/childStates/ZoomBrushing.js.map +2 -2
  139. package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js +1 -3
  140. package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
  141. package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js +1 -1
  142. package/dist-cjs/lib/tools/selection-logic/selectOnCanvasPointerUp.js.map +2 -2
  143. package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js +1 -1
  144. package/dist-cjs/lib/tools/selection-logic/updateHoveredShapeId.js.map +2 -2
  145. package/dist-cjs/lib/ui/TldrawUi.js +2 -2
  146. package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
  147. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js +3 -9
  148. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.js.map +2 -2
  149. package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js +1 -3
  150. package/dist-cjs/lib/ui/components/ContextMenu/DefaultContextMenu.js.map +2 -2
  151. package/dist-cjs/lib/ui/components/CursorChatBubble.js +1 -1
  152. package/dist-cjs/lib/ui/components/CursorChatBubble.js.map +2 -2
  153. package/dist-cjs/lib/ui/components/DefaultDebugPanel.js +1 -21
  154. package/dist-cjs/lib/ui/components/DefaultDebugPanel.js.map +2 -2
  155. package/dist-cjs/lib/ui/components/HelperButtons/StopFollowing.js.map +2 -2
  156. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +1 -1
  157. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
  158. package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js +2 -15
  159. package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js.map +3 -3
  160. package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js +3 -1
  161. package/dist-cjs/lib/ui/components/PageMenu/PageItemInput.js.map +2 -2
  162. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js +6 -0
  163. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js.map +2 -2
  164. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js +1 -1
  165. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbar.js.map +2 -2
  166. package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js +1 -1
  167. package/dist-cjs/lib/ui/components/Toolbar/DefaultRichTextToolbar.js.map +2 -2
  168. package/dist-cjs/lib/ui/components/TopPanel/CenteredTopPanelContainer.js.map +1 -1
  169. package/dist-cjs/lib/ui/components/menu-items.js +3 -1
  170. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  171. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +3 -1
  172. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  173. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +1 -1
  174. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  175. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +149 -93
  176. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  177. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.js.map +2 -2
  178. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.js.map +2 -2
  179. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +2 -3
  180. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  181. package/dist-cjs/lib/ui/context/actions.js +6 -6
  182. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  183. package/dist-cjs/lib/ui/context/components.js +1 -2
  184. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  185. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +2 -2
  186. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  187. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +2 -2
  188. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +2 -2
  189. package/dist-cjs/lib/ui/hooks/useTools.js +4 -5
  190. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  191. package/dist-cjs/lib/ui/version.js +3 -3
  192. package/dist-cjs/lib/ui/version.js.map +1 -1
  193. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js +8 -6
  194. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +2 -2
  195. package/dist-cjs/lib/{tools/selection-logic/getShouldEnterCropModeOnPointerDown.js → utils/test-helpers.js} +21 -8
  196. package/dist-cjs/lib/utils/test-helpers.js.map +7 -0
  197. package/dist-cjs/lib/utils/text/richText.js +11 -19
  198. package/dist-cjs/lib/utils/text/richText.js.map +3 -3
  199. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +7 -2
  200. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
  201. package/dist-esm/index.d.mts +297 -237
  202. package/dist-esm/index.mjs +14 -5
  203. package/dist-esm/index.mjs.map +2 -2
  204. package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +2 -2
  205. package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +2 -2
  206. package/dist-esm/lib/defaultEmbedDefinitions.mjs +1 -1
  207. package/dist-esm/lib/defaultEmbedDefinitions.mjs.map +2 -2
  208. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -5
  209. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  210. package/dist-esm/lib/defaultSideEffects.mjs +6 -1
  211. package/dist-esm/lib/defaultSideEffects.mjs.map +2 -2
  212. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +15 -15
  213. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  214. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +1 -1
  215. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +2 -2
  216. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
  217. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  218. package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs +1 -1
  219. package/dist-esm/lib/shapes/arrow/elbow/getElbowArrowInfo.mjs.map +2 -2
  220. package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +4 -10
  221. package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +2 -2
  222. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +7 -4
  223. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
  224. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +1 -1
  225. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  226. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +30 -25
  227. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  228. package/dist-esm/lib/shapes/draw/getPath.mjs +21 -11
  229. package/dist-esm/lib/shapes/draw/getPath.mjs.map +2 -2
  230. package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +83 -86
  231. package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +3 -3
  232. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +6 -0
  233. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
  234. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +6 -5
  235. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  236. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +147 -142
  237. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  238. package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +5 -10
  239. package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs.map +2 -2
  240. package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +3 -3
  241. package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +2 -2
  242. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +24 -22
  243. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  244. package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +3 -3
  245. package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +2 -2
  246. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +7 -12
  247. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  248. package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs +5 -10
  249. package/dist-esm/lib/shapes/note/toolStates/Pointing.mjs.map +2 -2
  250. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +4 -3
  251. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  252. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +14 -2
  253. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  254. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +12 -4
  255. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
  256. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +2 -2
  257. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  258. package/dist-esm/lib/shapes/shared/interpolate-props.mjs +4 -4
  259. package/dist-esm/lib/shapes/shared/interpolate-props.mjs.map +2 -2
  260. package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs +12 -0
  261. package/dist-esm/lib/shapes/shared/useEfficientZoomThreshold.mjs.map +7 -0
  262. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +1 -1
  263. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  264. package/dist-esm/lib/shapes/text/RichTextArea.mjs +5 -0
  265. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  266. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +5 -2
  267. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  268. package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +4 -10
  269. package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +2 -2
  270. package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +7 -5
  271. package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +2 -2
  272. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +1 -1
  273. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +2 -2
  274. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +4 -5
  275. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  276. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +2 -4
  277. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  278. package/dist-esm/lib/tools/HandTool/HandTool.mjs +3 -5
  279. package/dist-esm/lib/tools/HandTool/HandTool.mjs.map +2 -2
  280. package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs +3 -2
  281. package/dist-esm/lib/tools/HandTool/childStates/Dragging.mjs.map +2 -2
  282. package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs +1 -1
  283. package/dist-esm/lib/tools/HandTool/childStates/Pointing.mjs.map +2 -2
  284. package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs +1 -1
  285. package/dist-esm/lib/tools/LaserTool/childStates/Lasering.mjs.map +2 -2
  286. package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs +9 -7
  287. package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +2 -2
  288. package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +6 -5
  289. package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +2 -2
  290. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs +4 -6
  291. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs.map +2 -2
  292. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +1 -1
  293. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +2 -2
  294. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs +1 -1
  295. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.mjs.map +2 -2
  296. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs +1 -1
  297. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs.map +2 -2
  298. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs +2 -1
  299. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs.map +2 -2
  300. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs +1 -1
  301. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.mjs.map +2 -2
  302. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +7 -5
  303. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  304. package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +38 -11
  305. package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +2 -2
  306. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +43 -51
  307. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
  308. package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs +6 -6
  309. package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs.map +2 -2
  310. package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs +1 -1
  311. package/dist-esm/lib/tools/SelectTool/childStates/PointingCanvas.mjs.map +2 -2
  312. package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs +5 -15
  313. package/dist-esm/lib/tools/SelectTool/childStates/PointingHandle.mjs.map +2 -2
  314. package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs +1 -1
  315. package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs.map +2 -2
  316. package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs +1 -1
  317. package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs.map +2 -2
  318. package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs +2 -2
  319. package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs.map +2 -2
  320. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +4 -13
  321. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
  322. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -6
  323. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
  324. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +2 -3
  325. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
  326. package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +7 -6
  327. package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +2 -2
  328. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +13 -11
  329. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  330. package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs +17 -4
  331. package/dist-esm/lib/tools/SelectTool/selectHelpers.mjs.map +2 -2
  332. package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs +1 -1
  333. package/dist-esm/lib/tools/ZoomTool/ZoomTool.mjs.map +2 -2
  334. package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs +3 -3
  335. package/dist-esm/lib/tools/ZoomTool/childStates/Pointing.mjs.map +2 -2
  336. package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs +5 -6
  337. package/dist-esm/lib/tools/ZoomTool/childStates/ZoomBrushing.mjs.map +2 -2
  338. package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs +1 -3
  339. package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
  340. package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs +1 -1
  341. package/dist-esm/lib/tools/selection-logic/selectOnCanvasPointerUp.mjs.map +2 -2
  342. package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs +1 -1
  343. package/dist-esm/lib/tools/selection-logic/updateHoveredShapeId.mjs.map +2 -2
  344. package/dist-esm/lib/ui/TldrawUi.mjs +2 -2
  345. package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
  346. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs +2 -8
  347. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.mjs.map +2 -2
  348. package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs +1 -3
  349. package/dist-esm/lib/ui/components/ContextMenu/DefaultContextMenu.mjs.map +2 -2
  350. package/dist-esm/lib/ui/components/CursorChatBubble.mjs +1 -1
  351. package/dist-esm/lib/ui/components/CursorChatBubble.mjs.map +2 -2
  352. package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs +3 -30
  353. package/dist-esm/lib/ui/components/DefaultDebugPanel.mjs.map +2 -2
  354. package/dist-esm/lib/ui/components/HelperButtons/StopFollowing.mjs.map +2 -2
  355. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +1 -1
  356. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
  357. package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs +3 -6
  358. package/dist-esm/lib/ui/components/OfflineIndicator/OfflineIndicator.mjs.map +2 -2
  359. package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs +3 -1
  360. package/dist-esm/lib/ui/components/PageMenu/PageItemInput.mjs.map +2 -2
  361. package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs +6 -0
  362. package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs.map +2 -2
  363. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs +1 -1
  364. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbar.mjs.map +2 -2
  365. package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs +1 -1
  366. package/dist-esm/lib/ui/components/Toolbar/DefaultRichTextToolbar.mjs.map +2 -2
  367. package/dist-esm/lib/ui/components/TopPanel/CenteredTopPanelContainer.mjs.map +1 -1
  368. package/dist-esm/lib/ui/components/menu-items.mjs +3 -1
  369. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  370. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +3 -1
  371. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  372. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +2 -2
  373. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  374. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +157 -95
  375. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  376. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.mjs.map +2 -2
  377. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.mjs.map +2 -2
  378. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +3 -4
  379. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  380. package/dist-esm/lib/ui/context/actions.mjs +6 -6
  381. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  382. package/dist-esm/lib/ui/context/components.mjs +1 -2
  383. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  384. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +2 -2
  385. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  386. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +2 -2
  387. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +2 -2
  388. package/dist-esm/lib/ui/hooks/useTools.mjs +4 -5
  389. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  390. package/dist-esm/lib/ui/version.mjs +3 -3
  391. package/dist-esm/lib/ui/version.mjs.map +1 -1
  392. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs +9 -6
  393. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +2 -2
  394. package/dist-esm/lib/utils/test-helpers.mjs +21 -0
  395. package/dist-esm/lib/utils/test-helpers.mjs.map +7 -0
  396. package/dist-esm/lib/utils/text/richText.mjs +8 -5
  397. package/dist-esm/lib/utils/text/richText.mjs.map +2 -2
  398. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +8 -2
  399. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
  400. package/package.json +18 -16
  401. package/src/index.ts +6 -2
  402. package/src/lib/Tldraw.test.tsx +46 -1
  403. package/src/lib/canvas/TldrawSelectionForeground.tsx +2 -2
  404. package/src/lib/defaultEmbedDefinitions.ts +2 -1
  405. package/src/lib/defaultExternalContentHandlers.ts +10 -10
  406. package/src/lib/defaultSideEffects.ts +6 -1
  407. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +40 -133
  408. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +8 -8
  409. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +15 -15
  410. package/src/lib/shapes/arrow/arrow-types.ts +2 -0
  411. package/src/lib/shapes/arrow/arrowLabel.ts +1 -1
  412. package/src/lib/shapes/arrow/arrowTargetState.ts +1 -1
  413. package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.test.ts +80 -0
  414. package/src/lib/shapes/arrow/elbow/getElbowArrowInfo.tsx +1 -1
  415. package/src/lib/shapes/arrow/toolStates/Idle.tsx +4 -14
  416. package/src/lib/shapes/arrow/toolStates/Pointing.tsx +7 -4
  417. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +1 -1
  418. package/src/lib/shapes/draw/DrawShapeUtil.test.ts +146 -0
  419. package/src/lib/shapes/draw/DrawShapeUtil.tsx +31 -27
  420. package/src/lib/shapes/draw/getPath.ts +31 -10
  421. package/src/lib/shapes/draw/toolStates/Drawing.ts +96 -86
  422. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +7 -0
  423. package/src/lib/shapes/frame/FrameShapeUtil.tsx +10 -4
  424. package/src/lib/shapes/geo/GeoShapeUtil.tsx +228 -176
  425. package/src/lib/shapes/geo/toolStates/Idle.ts +5 -15
  426. package/src/lib/shapes/geo/toolStates/Pointing.ts +3 -3
  427. package/src/lib/shapes/highlight/HighlightShapeUtil.test.ts +146 -0
  428. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +25 -24
  429. package/src/lib/shapes/line/toolStates/Pointing.ts +3 -3
  430. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -10
  431. package/src/lib/shapes/note/noteCloning.test.ts +3 -1
  432. package/src/lib/shapes/note/toolStates/Pointing.ts +5 -10
  433. package/src/lib/shapes/shared/HyperlinkButton.tsx +4 -3
  434. package/src/lib/shapes/shared/PlainTextLabel.tsx +10 -1
  435. package/src/lib/shapes/shared/RichTextLabel.tsx +12 -3
  436. package/src/lib/shapes/shared/ShapeFill.tsx +2 -2
  437. package/src/lib/shapes/shared/interpolate-props.ts +4 -4
  438. package/src/lib/shapes/shared/useEfficientZoomThreshold.ts +10 -0
  439. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +1 -1
  440. package/src/lib/shapes/text/RichTextArea.tsx +5 -0
  441. package/src/lib/shapes/text/TextShapeUtil.tsx +5 -0
  442. package/src/lib/shapes/text/toolStates/Idle.ts +4 -14
  443. package/src/lib/shapes/text/toolStates/Pointing.ts +7 -7
  444. package/src/lib/shapes/video/VideoShapeUtil.tsx +2 -1
  445. package/src/lib/tools/EraserTool/childStates/Erasing.ts +4 -5
  446. package/src/lib/tools/EraserTool/childStates/Pointing.ts +2 -4
  447. package/src/lib/tools/HandTool/HandTool.ts +3 -5
  448. package/src/lib/tools/HandTool/childStates/Dragging.ts +3 -2
  449. package/src/lib/tools/HandTool/childStates/Pointing.ts +1 -1
  450. package/src/lib/tools/LaserTool/childStates/Lasering.ts +1 -1
  451. package/src/lib/tools/SelectTool/DragAndDropManager.ts +12 -7
  452. package/src/lib/tools/SelectTool/childStates/Brushing.ts +6 -5
  453. package/src/lib/tools/SelectTool/childStates/Crop/children/Cropping.ts +7 -6
  454. package/src/lib/tools/SelectTool/childStates/Crop/children/Idle.ts +1 -1
  455. package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCrop.ts +1 -1
  456. package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.ts +1 -1
  457. package/src/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.ts +2 -1
  458. package/src/lib/tools/SelectTool/childStates/Crop/children/crop_helpers.ts +1 -1
  459. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +7 -5
  460. package/src/lib/tools/SelectTool/childStates/EditingShape.ts +55 -12
  461. package/src/lib/tools/SelectTool/childStates/Idle.ts +58 -71
  462. package/src/lib/tools/SelectTool/childStates/PointingArrowLabel.ts +6 -7
  463. package/src/lib/tools/SelectTool/childStates/PointingCanvas.ts +1 -1
  464. package/src/lib/tools/SelectTool/childStates/PointingHandle.ts +5 -5
  465. package/src/lib/tools/SelectTool/childStates/PointingResizeHandle.ts +1 -1
  466. package/src/lib/tools/SelectTool/childStates/PointingRotateHandle.ts +1 -1
  467. package/src/lib/tools/SelectTool/childStates/PointingSelection.ts +2 -2
  468. package/src/lib/tools/SelectTool/childStates/PointingShape.ts +4 -14
  469. package/src/lib/tools/SelectTool/childStates/Resizing.ts +6 -6
  470. package/src/lib/tools/SelectTool/childStates/Rotating.ts +2 -3
  471. package/src/lib/tools/SelectTool/childStates/ScribbleBrushing.ts +7 -6
  472. package/src/lib/tools/SelectTool/childStates/Translating.ts +15 -12
  473. package/src/lib/tools/SelectTool/selectHelpers.ts +39 -4
  474. package/src/lib/tools/ZoomTool/ZoomTool.ts +1 -1
  475. package/src/lib/tools/ZoomTool/childStates/Pointing.ts +3 -3
  476. package/src/lib/tools/ZoomTool/childStates/ZoomBrushing.ts +5 -6
  477. package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +1 -3
  478. package/src/lib/tools/selection-logic/selectOnCanvasPointerUp.ts +1 -1
  479. package/src/lib/tools/selection-logic/updateHoveredShapeId.ts +1 -1
  480. package/src/lib/ui/TldrawUi.tsx +5 -2
  481. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenuContent.tsx +1 -9
  482. package/src/lib/ui/components/ContextMenu/DefaultContextMenu.tsx +1 -3
  483. package/src/lib/ui/components/CursorChatBubble.tsx +2 -2
  484. package/src/lib/ui/components/DefaultDebugPanel.tsx +3 -42
  485. package/src/lib/ui/components/HelperButtons/StopFollowing.tsx +2 -2
  486. package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +1 -1
  487. package/src/lib/ui/components/OfflineIndicator/OfflineIndicator.tsx +6 -5
  488. package/src/lib/ui/components/PageMenu/PageItemInput.tsx +3 -1
  489. package/src/lib/ui/components/SharePanel/PeopleMenu.tsx +8 -0
  490. package/src/lib/ui/components/Toolbar/DefaultImageToolbar.tsx +1 -1
  491. package/src/lib/ui/components/Toolbar/DefaultRichTextToolbar.tsx +1 -1
  492. package/src/lib/ui/components/TopPanel/CenteredTopPanelContainer.tsx +1 -1
  493. package/src/lib/ui/components/menu-items.tsx +3 -1
  494. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +5 -3
  495. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +2 -2
  496. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +208 -113
  497. package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.tsx +1 -1
  498. package/src/lib/ui/components/primitives/menus/TldrawUiMenuActionItem.tsx +1 -1
  499. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +2 -3
  500. package/src/lib/ui/context/actions.tsx +6 -6
  501. package/src/lib/ui/context/components.tsx +1 -2
  502. package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
  503. package/src/lib/ui/hooks/useKeyboardShortcuts.ts +2 -2
  504. package/src/lib/ui/hooks/useTools.tsx +4 -5
  505. package/src/lib/ui/version.ts +3 -3
  506. package/src/lib/ui.css +27 -23
  507. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +12 -48
  508. package/src/lib/utils/excalidraw/putExcalidrawContent.ts +11 -6
  509. package/src/lib/utils/test-helpers.ts +60 -0
  510. package/src/lib/utils/text/richText.ts +9 -8
  511. package/src/lib/utils/tldr/buildFromV1Document.ts +9 -2
  512. package/src/test/Editor.test.tsx +40 -29
  513. package/src/test/EraserTool.test.ts +10 -12
  514. package/src/test/TestEditor.ts +48 -47
  515. package/src/test/TldrawEditor.test.tsx +6 -4
  516. package/src/test/__snapshots__/drawing.test.ts.snap +3 -1257
  517. package/src/test/__snapshots__/resizing.test.ts.snap +3 -12
  518. package/src/test/arrows-megabus.test.tsx +1 -1
  519. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +10 -10
  520. package/src/test/commands/cameraState.test.ts +299 -0
  521. package/src/test/commands/putContent.test.ts +79 -1
  522. package/src/test/commands/setCamera.test.ts +13 -11
  523. package/src/test/commands/stackShapes.test.ts +34 -8
  524. package/src/test/commands/zoomToBounds.test.ts +19 -3
  525. package/src/test/commands/zoomToSelection.test.ts +14 -3
  526. package/src/test/custom-clipping.test.ts +16 -9
  527. package/src/test/drawing.test.ts +17 -10
  528. package/src/test/flipShapes.test.ts +33 -0
  529. package/src/test/frames.test.ts +92 -0
  530. package/src/test/groups.test.tsx +1 -1
  531. package/src/test/modifiers.test.ts +6 -6
  532. package/src/test/resizing.test.ts +7 -9
  533. package/src/test/selection-omnibus.test.ts +2 -2
  534. package/src/test/spacebarPanning.test.ts +28 -10
  535. package/src/test/test-jsx.tsx +3 -0
  536. package/tldraw.css +41 -35
  537. package/dist-cjs/lib/shapes/shared/useForceSolid.js.map +0 -7
  538. package/dist-cjs/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.js.map +0 -7
  539. package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js +0 -32
  540. package/dist-cjs/lib/ui/components/TopPanel/DefaultTopPanel.js.map +0 -7
  541. package/dist-cjs/lib/utils/text/textDirection.js +0 -51
  542. package/dist-cjs/lib/utils/text/textDirection.js.map +0 -7
  543. package/dist-esm/lib/shapes/shared/useForceSolid.mjs +0 -9
  544. package/dist-esm/lib/shapes/shared/useForceSolid.mjs.map +0 -7
  545. package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs +0 -8
  546. package/dist-esm/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.mjs.map +0 -7
  547. package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs +0 -12
  548. package/dist-esm/lib/ui/components/TopPanel/DefaultTopPanel.mjs.map +0 -7
  549. package/dist-esm/lib/utils/text/textDirection.mjs +0 -31
  550. package/dist-esm/lib/utils/text/textDirection.mjs.map +0 -7
  551. package/src/lib/shapes/shared/useForceSolid.ts +0 -6
  552. package/src/lib/tools/selection-logic/getShouldEnterCropModeOnPointerDown.ts +0 -10
  553. package/src/lib/ui/components/TopPanel/DefaultTopPanel.tsx +0 -10
  554. package/src/lib/utils/text/textDirection.ts +0 -32
package/src/lib/ui.css CHANGED
@@ -609,25 +609,31 @@
609
609
 
610
610
  /* Submenu triggers */
611
611
 
612
- .tlui-menu__submenu__trigger[data-state='open']::after {
613
- opacity: 1;
614
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
612
+ .tlui-menu__submenu__trigger {
613
+ --gradient-angle: 90deg;
615
614
  }
616
615
 
617
- .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
616
+ .tlui-menu__submenu__trigger[data-direction='left'] {
617
+ --gradient-angle: 270deg;
618
+ }
619
+
620
+ .tlui-menu__submenu__trigger[data-state='open']::after {
618
621
  opacity: 1;
619
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
622
+ background: linear-gradient(
623
+ var(--gradient-angle),
624
+ rgba(144, 144, 144, 0) 0%,
625
+ var(--tl-color-muted-2) 100%
626
+ );
620
627
  }
621
628
 
622
629
  @media (hover: hover) {
623
- .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
630
+ .tlui-menu__submenu__trigger:is(:hover, [data-state='open'])::after {
624
631
  opacity: 1;
625
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
626
- }
627
-
628
- .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
629
- opacity: 1;
630
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
632
+ background: linear-gradient(
633
+ var(--gradient-angle),
634
+ rgba(144, 144, 144, 0) 0%,
635
+ var(--tl-color-muted-2) 100%
636
+ );
631
637
  }
632
638
  }
633
639
 
@@ -906,10 +912,8 @@
906
912
  }
907
913
  }
908
914
 
909
- @media (any-pointer: coarse) {
910
- .tlui-page_menu__item__submenu > .tlui-button {
911
- opacity: 1;
912
- }
915
+ .tl-container[data-coarse='true'] .tlui-page_menu__item__submenu > .tlui-button {
916
+ opacity: 1;
913
917
  }
914
918
 
915
919
  .tlui-button__icon {
@@ -948,16 +952,15 @@
948
952
 
949
953
  .tlui-offline-indicator {
950
954
  display: flex;
951
- flex-direction: row;
952
- gap: var(--tl-space-3);
953
- color: var(--tl-color-text);
954
- background-color: var(--tl-color-low);
955
- border: 3px solid var(--tl-color-background);
956
- padding: 0px var(--tl-space-5);
957
- height: 42px;
955
+ color: var(--tl-color-background);
956
+ background-color: var(--tl-color-text);
957
+ border: none;
958
+ width: 32px;
959
+ height: 32px;
958
960
  align-items: center;
959
961
  justify-content: center;
960
962
  border-radius: 99px;
963
+ cursor: default;
961
964
  opacity: 0;
962
965
  animation: tl-fade-in;
963
966
  animation-duration: 0.12s;
@@ -1275,6 +1278,7 @@ tldraw? probably.
1275
1278
  position: relative;
1276
1279
  background: var(--tl-color-panel);
1277
1280
  box-shadow: var(--tl-shadow-2);
1281
+ contain: layout style paint;
1278
1282
  }
1279
1283
 
1280
1284
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
@@ -730,20 +730,11 @@ exports[`putExcalidrawContent test fixtures > line-drawing.json 1`] = `
730
730
  "isComplete": false,
731
731
  "isPen": false,
732
732
  "scale": 1,
733
+ "scaleX": 1,
734
+ "scaleY": 1,
733
735
  "segments": [
734
736
  {
735
- "points": [
736
- {
737
- "x": 0,
738
- "y": 0,
739
- "z": 0.5,
740
- },
741
- {
742
- "x": 0.0001,
743
- "y": 0.0001,
744
- "z": 0.5,
745
- },
746
- ],
737
+ "points": "AAAAAAA4jgaOBgA4",
747
738
  "type": "free",
748
739
  },
749
740
  ],
@@ -770,20 +761,11 @@ exports[`putExcalidrawContent test fixtures > line-drawing.json 1`] = `
770
761
  "isComplete": false,
771
762
  "isPen": false,
772
763
  "scale": 1,
764
+ "scaleX": 1,
765
+ "scaleY": 1,
773
766
  "segments": [
774
767
  {
775
- "points": [
776
- {
777
- "x": 0,
778
- "y": 0,
779
- "z": 0.5,
780
- },
781
- {
782
- "x": 0.0001,
783
- "y": 0.0001,
784
- "z": 0.5,
785
- },
786
- ],
768
+ "points": "AAAAAAA4jgaOBgA4",
787
769
  "type": "free",
788
770
  },
789
771
  ],
@@ -1393,20 +1375,11 @@ exports[`putExcalidrawContent test fixtures > line-drawing.json 1`] = `
1393
1375
  "isComplete": false,
1394
1376
  "isPen": false,
1395
1377
  "scale": 1,
1378
+ "scaleX": 1,
1379
+ "scaleY": 1,
1396
1380
  "segments": [
1397
1381
  {
1398
- "points": [
1399
- {
1400
- "x": 0,
1401
- "y": 0,
1402
- "z": 0.5,
1403
- },
1404
- {
1405
- "x": 0.0001,
1406
- "y": 0.0001,
1407
- "z": 0.5,
1408
- },
1409
- ],
1382
+ "points": "AAAAAAA4jgaOBgA4",
1410
1383
  "type": "free",
1411
1384
  },
1412
1385
  ],
@@ -1433,20 +1406,11 @@ exports[`putExcalidrawContent test fixtures > line-drawing.json 1`] = `
1433
1406
  "isComplete": false,
1434
1407
  "isPen": false,
1435
1408
  "scale": 1,
1409
+ "scaleX": 1,
1410
+ "scaleY": 1,
1436
1411
  "segments": [
1437
1412
  {
1438
- "points": [
1439
- {
1440
- "x": 0,
1441
- "y": 0,
1442
- "z": 0.5,
1443
- },
1444
- {
1445
- "x": 0.0001,
1446
- "y": 0.0001,
1447
- "z": 0.5,
1448
- },
1449
- ],
1413
+ "points": "AAAAAAA4jgaOBgA4",
1450
1414
  "type": "free",
1451
1415
  },
1452
1416
  ],
@@ -16,7 +16,9 @@ import {
16
16
  TLShapeId,
17
17
  Vec,
18
18
  VecLike,
19
+ VecModel,
19
20
  ZERO_INDEX_KEY,
21
+ b64Vecs,
20
22
  compact,
21
23
  createBindingId,
22
24
  createShapeId,
@@ -149,6 +151,13 @@ export async function putExcalidrawContent(
149
151
  break
150
152
  }
151
153
  case 'freedraw': {
154
+ const points: VecModel[] = element.points.map(([x, y, z = 0.5]: number[]) => ({
155
+ x,
156
+ y,
157
+ z,
158
+ }))
159
+ const base64Points = b64Vecs.encodePoints(points)
160
+
152
161
  tldrawContent.shapes.push({
153
162
  ...base,
154
163
  type: 'draw',
@@ -160,11 +169,7 @@ export async function putExcalidrawContent(
160
169
  segments: [
161
170
  {
162
171
  type: 'free',
163
- points: element.points.map(([x, y, z = 0.5]: number[]) => ({
164
- x,
165
- y,
166
- z,
167
- })),
172
+ points: base64Points,
168
173
  },
169
174
  ],
170
175
  },
@@ -329,7 +334,7 @@ export async function putExcalidrawContent(
329
334
  index = getIndexAbove(index)
330
335
  }
331
336
 
332
- const p = point ?? (editor.inputs.shiftKey ? editor.inputs.currentPagePoint : undefined)
337
+ const p = point ?? (editor.inputs.getShiftKey() ? editor.inputs.getCurrentPagePoint() : undefined)
333
338
 
334
339
  editor.putContentOntoCurrentPage(tldrawContent, {
335
340
  point: p,
@@ -0,0 +1,60 @@
1
+ import type { TLDrawShapeSegment, VecModel } from '@tldraw/editor'
2
+ import { b64Vecs, compressLegacySegments } from '@tldraw/editor'
3
+
4
+ /**
5
+ * Helper function to convert draw shape points from VecModel[] to base64 string.
6
+ * This is useful for tests that create draw shapes with the legacy array format.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const segments = [{ type: 'free', points: pointsToBase64([{x: 0, y: 0, z: 0.5}]) }]
11
+ * ```
12
+ *
13
+ * @public
14
+ */
15
+ export function pointsToBase64(points: VecModel[]): string {
16
+ return b64Vecs.encodePoints(points)
17
+ }
18
+
19
+ /**
20
+ * Helper function to convert base64 string back to VecModel[] points.
21
+ * This is useful for tests that need to inspect draw shape points.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const points = base64ToPoints(shape.props.segments[0].points)
26
+ * expect(points[0].x).toBe(0)
27
+ * ```
28
+ *
29
+ * @public
30
+ */
31
+ export function base64ToPoints(base64: string): VecModel[] {
32
+ return b64Vecs.decodePoints(base64)
33
+ }
34
+
35
+ /**
36
+ * Helper function to create draw shape segments from legacy array format.
37
+ * This allows tests to use the old format while the shape uses the new base64 format.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * editor.createShapes([{
42
+ * type: 'draw',
43
+ * props: {
44
+ * segments: createDrawSegments([[{x: 0, y: 0}, {x: 10, y: 10}]])
45
+ * }
46
+ * }])
47
+ * ```
48
+ * @public
49
+ */
50
+ export function createDrawSegments(
51
+ pointArrays: VecModel[][],
52
+ type: 'free' | 'straight' = 'free'
53
+ ): TLDrawShapeSegment[] {
54
+ return compressLegacySegments(
55
+ pointArrays.map((points) => ({
56
+ type,
57
+ points,
58
+ }))
59
+ )
60
+ }
@@ -1,15 +1,16 @@
1
1
  import {
2
2
  Extension,
3
3
  Extensions,
4
+ extensions,
4
5
  generateHTML,
5
6
  generateJSON,
6
7
  generateText,
7
8
  JSONContent,
8
9
  } from '@tiptap/core'
9
- import Code from '@tiptap/extension-code'
10
- import Highlight from '@tiptap/extension-highlight'
10
+ import { Code } from '@tiptap/extension-code'
11
+ import { Highlight } from '@tiptap/extension-highlight'
11
12
  import { Node } from '@tiptap/pm/model'
12
- import StarterKit from '@tiptap/starter-kit'
13
+ import { StarterKit } from '@tiptap/starter-kit'
13
14
  import {
14
15
  Editor,
15
16
  getOwnProperty,
@@ -19,7 +20,6 @@ import {
19
20
  WeakCache,
20
21
  } from '@tldraw/editor'
21
22
  import { DefaultFontFaces } from '../../shapes/shared/defaultFonts'
22
- import { TextDirection } from './textDirection'
23
23
 
24
24
  /** @public */
25
25
  export const KeyboardShiftEnterTweakExtension = Extension.create({
@@ -59,7 +59,11 @@ export const tipTapDefaultExtensions: Extensions = [
59
59
  }),
60
60
  Highlight,
61
61
  KeyboardShiftEnterTweakExtension,
62
- TextDirection,
62
+
63
+ // N.B. We disable the text direction core extension in RichTextArea,
64
+ // but we add it back in again here in our own extensions list so that
65
+ // people can omit/override it if they want to.
66
+ extensions.TextDirection.configure({ direction: 'auto' }),
63
67
  ]
64
68
 
65
69
  // todo: bust this if the editor changes, too
@@ -88,7 +92,6 @@ export function renderHtmlFromRichText(editor: Editor, richText: TLRichText) {
88
92
  * @param editor - The editor instance.
89
93
  * @param richText - The rich text content.
90
94
  *
91
- *
92
95
  * @public
93
96
  */
94
97
  export function renderHtmlFromRichTextForMeasurement(editor: Editor, richText: TLRichText) {
@@ -111,7 +114,6 @@ export function isEmptyRichText(richText: TLRichText) {
111
114
  * @param editor - The editor instance.
112
115
  * @param richText - The rich text content.
113
116
  *
114
- *
115
117
  * @public
116
118
  */
117
119
  export function renderPlaintextFromRichText(editor: Editor, richText: TLRichText) {
@@ -131,7 +133,6 @@ export function renderPlaintextFromRichText(editor: Editor, richText: TLRichText
131
133
  * @param editor - The editor instance.
132
134
  * @param richText - The rich text content.
133
135
  *
134
- *
135
136
  * @public
136
137
  */
137
138
  export function renderRichTextFromHTML(editor: Editor, html: string): TLRichText {
@@ -17,6 +17,7 @@ import {
17
17
  TLShapeId,
18
18
  Vec,
19
19
  VecModel,
20
+ b64Vecs,
20
21
  clamp,
21
22
  createShapeId,
22
23
  fetch,
@@ -370,6 +371,9 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
370
371
  break
371
372
  }
372
373
 
374
+ const points = v1Shape.points.map(getV2Point)
375
+ const base64Points = b64Vecs.encodePoints(points)
376
+
373
377
  editor.createShapes([
374
378
  {
375
379
  ...inCommon,
@@ -381,7 +385,10 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
381
385
  dash: getV2Dash(v1Shape.style.dash),
382
386
  isPen: false,
383
387
  isComplete: v1Shape.isComplete,
384
- segments: [{ type: 'free', points: v1Shape.points.map(getV2Point) }],
388
+ segments: [{ type: 'free', points: base64Points }],
389
+ scale: 1,
390
+ scaleX: 1,
391
+ scaleY: 1,
385
392
  },
386
393
  },
387
394
  ])
@@ -518,7 +525,7 @@ export function buildFromV1Document(editor: Editor, _document: unknown) {
518
525
  const util = editor.getShapeUtil<TLArrowShape>('arrow')
519
526
 
520
527
  // dumb but necessary
521
- editor.inputs.ctrlKey = false
528
+ editor.inputs.setCtrlKey(false)
522
529
 
523
530
  for (const handleId of ['start', 'end'] as const) {
524
531
  const bindingId = v1Shape.handles[handleId].bindingId
@@ -143,17 +143,17 @@ describe('shapes that are moved to another page', () => {
143
143
  it('Begins dragging from pointer move', () => {
144
144
  editor.pointerDown(0, 0)
145
145
  editor.pointerMove(2, 2)
146
- expect(editor.inputs.isDragging).toBe(false)
146
+ expect(editor.inputs.getIsDragging()).toBe(false)
147
147
  editor.pointerMove(10, 10)
148
- expect(editor.inputs.isDragging).toBe(true)
148
+ expect(editor.inputs.getIsDragging()).toBe(true)
149
149
  })
150
150
 
151
151
  it('Begins dragging from wheel', () => {
152
152
  editor.pointerDown(0, 0)
153
153
  editor.wheel(2, 2)
154
- expect(editor.inputs.isDragging).toBe(false)
154
+ expect(editor.inputs.getIsDragging()).toBe(false)
155
155
  editor.wheel(10, 10)
156
- expect(editor.inputs.isDragging).toBe(true)
156
+ expect(editor.inputs.getIsDragging()).toBe(true)
157
157
  })
158
158
 
159
159
  it('Does not create an undo stack item when first clicking on an empty canvas', () => {
@@ -266,36 +266,47 @@ describe('Editor.TickManager', () => {
266
266
  // usually this is called by the app's tick manager, using the elapsed time
267
267
  // between two animation frames, but we're calling it directly here.
268
268
  const tick = (ms: number) => {
269
- // @ts-ignore
270
- editor._tickManager.updatePointerVelocity(ms)
269
+ editor.inputs.updatePointerVelocity(ms)
271
270
  }
272
271
 
273
272
  // 1. pointer velocity should be 0 when there is no movement
274
- expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0, y: 0 })
273
+ expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({ x: 0, y: 0 })
275
274
 
276
275
  editor.pointerMove(10, 10)
277
276
 
278
277
  // 2. moving is not enough, we also need to wait a frame before the velocity is updated
279
- expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0, y: 0 })
278
+ expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({ x: 0, y: 0 })
280
279
 
281
280
  // 3. once time passes, the pointer velocity should be updated
282
281
  tick(16)
283
- expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0.3125, y: 0.3125 })
282
+ expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({
283
+ x: 0.3125,
284
+ y: 0.3125,
285
+ })
284
286
 
285
287
  // 4. let's do it again, it should be updated again. move, tick, measure
286
288
  editor.pointerMove(20, 20)
287
289
  tick(16)
288
- expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0.46875, y: 0.46875 })
290
+ expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({
291
+ x: 0.46875,
292
+ y: 0.46875,
293
+ })
289
294
 
290
295
  // 5. if we tick again without movement, the velocity should decay
291
296
  tick(16)
292
297
 
293
- expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0.23437, y: 0.23437 })
298
+ expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({
299
+ x: 0.23437,
300
+ y: 0.23437,
301
+ })
294
302
 
295
303
  // 6. if updatePointerVelocity is (for whatever reason) called with an elapsed time of zero milliseconds, it should be ignored
296
304
  tick(0)
297
305
 
298
- expect(editor.inputs.pointerVelocity.toJson()).toCloselyMatchObject({ x: 0.23437, y: 0.23437 })
306
+ expect(editor.inputs.getPointerVelocity().toJson()).toCloselyMatchObject({
307
+ x: 0.23437,
308
+ y: 0.23437,
309
+ })
299
310
  })
300
311
  })
301
312
 
@@ -677,9 +688,9 @@ describe('middle-click panning', () => {
677
688
  button: 1,
678
689
  })
679
690
  editor.pointerMove(100, 100)
680
- expect(editor.inputs.isPanning).toBe(true)
691
+ expect(editor.inputs.getIsPanning()).toBe(true)
681
692
  editor.pointerUp(100, 100)
682
- expect(editor.inputs.isPanning).toBe(false)
693
+ expect(editor.inputs.getIsPanning()).toBe(false)
683
694
  })
684
695
 
685
696
  it('does not clear thee isPanning state if the space bar is down', () => {
@@ -688,51 +699,51 @@ describe('middle-click panning', () => {
688
699
  button: 1,
689
700
  })
690
701
  editor.pointerMove(100, 100)
691
- expect(editor.inputs.isPanning).toBe(true)
702
+ expect(editor.inputs.getIsPanning()).toBe(true)
692
703
  editor.keyDown(' ')
693
704
  editor.pointerUp(100, 100, {
694
705
  button: 1,
695
706
  })
696
- expect(editor.inputs.isPanning).toBe(true)
707
+ expect(editor.inputs.getIsPanning()).toBe(true)
697
708
 
698
709
  editor.keyUp(' ')
699
- expect(editor.inputs.isPanning).toBe(false)
710
+ expect(editor.inputs.getIsPanning()).toBe(false)
700
711
  })
701
712
  })
702
713
 
703
714
  describe('dragging', () => {
704
715
  it('drags correctly at 100% zoom', () => {
705
- expect(editor.inputs.isDragging).toBe(false)
716
+ expect(editor.inputs.getIsDragging()).toBe(false)
706
717
  editor.pointerMove(0, 0).pointerDown()
707
- expect(editor.inputs.isDragging).toBe(false)
718
+ expect(editor.inputs.getIsDragging()).toBe(false)
708
719
  editor.pointerMove(0, 1)
709
- expect(editor.inputs.isDragging).toBe(false)
720
+ expect(editor.inputs.getIsDragging()).toBe(false)
710
721
  editor.pointerMove(0, 5)
711
- expect(editor.inputs.isDragging).toBe(true)
722
+ expect(editor.inputs.getIsDragging()).toBe(true)
712
723
  })
713
724
 
714
725
  it('drags correctly at 150% zoom', () => {
715
726
  editor.setCamera({ x: 0, y: 0, z: 8 }).forceTick()
716
727
 
717
- expect(editor.inputs.isDragging).toBe(false)
728
+ expect(editor.inputs.getIsDragging()).toBe(false)
718
729
  editor.pointerMove(0, 0).pointerDown()
719
- expect(editor.inputs.isDragging).toBe(false)
730
+ expect(editor.inputs.getIsDragging()).toBe(false)
720
731
  editor.pointerMove(0, 2)
721
- expect(editor.inputs.isDragging).toBe(false)
732
+ expect(editor.inputs.getIsDragging()).toBe(false)
722
733
  editor.pointerMove(0, 5)
723
- expect(editor.inputs.isDragging).toBe(true)
734
+ expect(editor.inputs.getIsDragging()).toBe(true)
724
735
  })
725
736
 
726
737
  it('drags correctly at 50% zoom', () => {
727
738
  editor.setCamera({ x: 0, y: 0, z: 0.1 }).forceTick()
728
739
 
729
- expect(editor.inputs.isDragging).toBe(false)
740
+ expect(editor.inputs.getIsDragging()).toBe(false)
730
741
  editor.pointerMove(0, 0).pointerDown()
731
- expect(editor.inputs.isDragging).toBe(false)
742
+ expect(editor.inputs.getIsDragging()).toBe(false)
732
743
  editor.pointerMove(0, 2)
733
- expect(editor.inputs.isDragging).toBe(false)
744
+ expect(editor.inputs.getIsDragging()).toBe(false)
734
745
  editor.pointerMove(0, 5)
735
- expect(editor.inputs.isDragging).toBe(true)
746
+ expect(editor.inputs.getIsDragging()).toBe(true)
736
747
  })
737
748
  })
738
749
 
@@ -1,5 +1,6 @@
1
1
  import { createShapeId } from '@tldraw/editor'
2
2
  import { vi } from 'vitest'
3
+ import { createDrawSegments } from './test-jsx'
3
4
  import { TestEditor } from './TestEditor'
4
5
 
5
6
  let editor: TestEditor
@@ -72,18 +73,15 @@ beforeEach(() => {
72
73
  x: 0,
73
74
  y: 300,
74
75
  props: {
75
- segments: [
76
- {
77
- type: 'free',
78
- points: [
79
- { x: 0, y: 0 },
80
- { x: 2, y: 50 },
81
- { x: 10, y: 100 },
82
- { x: 48, y: 100 },
83
- { x: 100, y: 100 },
84
- ],
85
- },
86
- ],
76
+ segments: createDrawSegments([
77
+ [
78
+ { x: 0, y: 0 },
79
+ { x: 2, y: 50 },
80
+ { x: 10, y: 100 },
81
+ { x: 48, y: 100 },
82
+ { x: 100, y: 100 },
83
+ ],
84
+ ]),
87
85
  },
88
86
  },
89
87
  ])