tldraw 3.16.0-canary.da3348c13973 → 3.16.0-canary.da558c1dc67d

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 (302) hide show
  1. package/dist-cjs/index.d.ts +138 -6
  2. package/dist-cjs/index.js +12 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/Tldraw.js +12 -2
  5. package/dist-cjs/lib/Tldraw.js.map +2 -2
  6. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  7. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  8. package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -4
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  11. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  13. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  14. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  15. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  16. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  17. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  18. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +18 -12
  19. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  21. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  22. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  23. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  24. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  25. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  26. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  27. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  28. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  29. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  30. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  31. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  32. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  33. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  35. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  36. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  37. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  38. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  39. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  40. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  41. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  42. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  43. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  44. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  45. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  46. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  47. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  48. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  49. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +10 -2
  50. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  51. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  52. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  53. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  54. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  55. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  56. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  57. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  58. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  59. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +1 -1
  60. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +2 -2
  61. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
  62. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  63. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -22
  64. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  65. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +188 -78
  66. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  67. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +1 -1
  68. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +2 -2
  69. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +15 -3
  70. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  71. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +146 -168
  72. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  73. package/dist-cjs/lib/ui/components/primitives/layout.js +30 -5
  74. package/dist-cjs/lib/ui/components/primitives/layout.js.map +2 -2
  75. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  76. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  77. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  78. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +3 -19
  79. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  80. package/dist-cjs/lib/ui/context/actions.js +16 -2
  81. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  82. package/dist-cjs/lib/ui/context/components.js +2 -0
  83. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  84. package/dist-cjs/lib/ui/context/events.js.map +1 -1
  85. package/dist-cjs/lib/ui/hooks/useTools.js +21 -3
  86. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  87. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  88. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +1 -0
  89. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  90. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  91. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  92. package/dist-cjs/lib/ui/version.js +3 -3
  93. package/dist-cjs/lib/ui/version.js.map +1 -1
  94. package/dist-esm/index.d.mts +138 -6
  95. package/dist-esm/index.mjs +18 -3
  96. package/dist-esm/index.mjs.map +2 -2
  97. package/dist-esm/lib/Tldraw.mjs +14 -4
  98. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  99. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  100. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  101. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  102. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  103. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  104. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  105. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  106. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  107. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  108. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  109. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  110. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  111. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +19 -12
  112. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  113. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  114. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  115. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  116. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  117. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  118. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  119. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  120. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  121. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  122. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  123. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  124. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  125. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  126. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  127. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  128. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  129. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  130. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  131. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  132. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  133. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  134. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  135. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  136. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  137. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  138. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  139. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  140. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  141. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  142. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +10 -2
  143. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  144. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  145. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  146. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  147. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  148. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  149. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  150. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  151. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  152. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +1 -1
  153. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  154. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
  155. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  156. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -22
  157. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  158. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -80
  159. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  160. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +2 -1
  161. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  162. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +16 -4
  163. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  164. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +155 -170
  165. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  166. package/dist-esm/lib/ui/components/primitives/layout.mjs +31 -6
  167. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +2 -2
  168. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  169. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  170. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  171. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +3 -19
  172. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  173. package/dist-esm/lib/ui/context/actions.mjs +16 -2
  174. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  175. package/dist-esm/lib/ui/context/components.mjs +2 -0
  176. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  177. package/dist-esm/lib/ui/context/events.mjs.map +1 -1
  178. package/dist-esm/lib/ui/hooks/useTools.mjs +22 -3
  179. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  180. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +1 -0
  181. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  182. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  183. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  184. package/dist-esm/lib/ui/version.mjs +3 -3
  185. package/dist-esm/lib/ui/version.mjs.map +1 -1
  186. package/package.json +11 -34
  187. package/src/index.ts +11 -1
  188. package/src/lib/Tldraw.tsx +15 -2
  189. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  190. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  191. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  192. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +4 -3
  193. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +7 -6
  194. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  195. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  196. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  197. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  198. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  199. package/src/lib/shapes/frame/FrameShapeUtil.tsx +29 -14
  200. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  201. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  202. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  203. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  204. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  205. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  206. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  207. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  208. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  209. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  210. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  211. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  212. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  213. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  214. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  215. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  216. package/src/lib/ui/TldrawUi.tsx +33 -12
  217. package/src/lib/ui/assetUrls.ts +13 -10
  218. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +13 -2
  219. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  220. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  221. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  222. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  223. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +1 -1
  224. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
  225. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -24
  226. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +208 -56
  227. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +3 -2
  228. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +22 -5
  229. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +184 -191
  230. package/src/lib/ui/components/primitives/layout.tsx +79 -5
  231. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  232. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  233. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +5 -18
  234. package/src/lib/ui/context/actions.tsx +16 -2
  235. package/src/lib/ui/context/components.tsx +3 -0
  236. package/src/lib/ui/context/events.tsx +1 -1
  237. package/src/lib/ui/hooks/useTools.tsx +25 -3
  238. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +1 -0
  239. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +1 -0
  240. package/src/lib/ui/kbd-utils.ts +10 -3
  241. package/src/lib/ui/version.ts +3 -3
  242. package/src/lib/ui.css +349 -243
  243. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  244. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  245. package/src/test/A11y.test.tsx +3 -2
  246. package/src/test/ClickManager.test.ts +7 -6
  247. package/src/test/Editor.test.tsx +20 -19
  248. package/src/test/EraserTool.test.ts +184 -13
  249. package/src/test/HandTool.test.ts +10 -9
  250. package/src/test/HighlightShape.test.ts +2 -1
  251. package/src/test/SelectTool.test.ts +3 -2
  252. package/src/test/TLUserPreferences.test.ts +4 -3
  253. package/src/test/TestEditor.ts +13 -15
  254. package/src/test/TldrawEditor.test.tsx +11 -10
  255. package/src/test/ZoomTool.test.ts +7 -6
  256. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  257. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  258. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  259. package/src/test/arrows-megabus.test.tsx +5 -4
  260. package/src/test/bindings.test.tsx +24 -37
  261. package/src/test/bookmark-shapes.test.ts +1 -8
  262. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  263. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  264. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  265. package/src/test/commands/alignShapes.test.tsx +25 -24
  266. package/src/test/commands/animationSpeed.test.ts +2 -1
  267. package/src/test/commands/centerOnPoint.test.ts +3 -2
  268. package/src/test/commands/clipboard.test.ts +3 -2
  269. package/src/test/commands/createShapes.test.ts +2 -1
  270. package/src/test/commands/deleteShapes.test.ts +2 -1
  271. package/src/test/commands/distributeShapes.test.tsx +11 -10
  272. package/src/test/commands/getSvgString.test.ts +2 -1
  273. package/src/test/commands/packShapes.test.ts +5 -4
  274. package/src/test/commands/resizeShape.test.ts +2 -1
  275. package/src/test/commands/rotateShapes.test.ts +7 -6
  276. package/src/test/commands/setCamera.test.ts +4 -3
  277. package/src/test/commands/setCurrentPage.test.ts +3 -2
  278. package/src/test/commands/stackShapes.test.ts +11 -10
  279. package/src/test/commands/stretch.test.tsx +13 -12
  280. package/src/test/createDeepLink.test.tsx +2 -1
  281. package/src/test/cropping.test.ts +3 -2
  282. package/src/test/custom-clipping.test.ts +436 -0
  283. package/src/test/drawing.test.ts +2 -1
  284. package/src/test/flipShapes.test.ts +4 -3
  285. package/src/test/frames.test.ts +25 -24
  286. package/src/test/getCulledShapes.test.tsx +3 -2
  287. package/src/test/groups.test.tsx +1 -1
  288. package/src/test/handleDeepLink.test.tsx +2 -1
  289. package/src/test/maxShapes.test.ts +3 -2
  290. package/src/test/modifiers.test.ts +5 -4
  291. package/src/test/navigation.test.ts +12 -11
  292. package/src/test/panning.test.ts +2 -1
  293. package/src/test/perf/perf.test.ts +2 -1
  294. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  295. package/src/test/resizing.test.ts +39 -38
  296. package/src/test/select.test.tsx +4 -3
  297. package/src/test/selection-omnibus.test.ts +11 -10
  298. package/src/test/shapeutils.test.ts +4 -3
  299. package/src/test/translating.test.ts +9 -8
  300. package/tldraw.css +650 -533
  301. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  302. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
@@ -120,7 +120,6 @@ export function TldrawUiMenuItem<
120
120
  type="menu"
121
121
  data-testid={`${sourceId}.${id}`}
122
122
  disabled={disabled}
123
- title={titleStr}
124
123
  onClick={(e) => {
125
124
  if (noClose) {
126
125
  preventDefault(e)
@@ -146,7 +145,6 @@ export function TldrawUiMenuItem<
146
145
  return (
147
146
  <_ContextMenu.Item
148
147
  dir="ltr"
149
- title={titleStr}
150
148
  draggable={false}
151
149
  className="tlui-button tlui-button__menu"
152
150
  data-testid={`${sourceId}.${id}`}
@@ -168,20 +166,6 @@ export function TldrawUiMenuItem<
168
166
  </_ContextMenu.Item>
169
167
  )
170
168
  }
171
- case 'panel': {
172
- return (
173
- <TldrawUiButton
174
- data-testid={`${sourceId}.${id}`}
175
- type="menu"
176
- title={titleStr}
177
- disabled={disabled}
178
- onClick={() => onSelect(sourceId)}
179
- >
180
- <TldrawUiButtonLabel>{labelStr}</TldrawUiButtonLabel>
181
- {spinner ? <Spinner /> : icon && <TldrawUiButtonIcon icon={icon} />}
182
- </TldrawUiButton>
183
- )
184
- }
185
169
  case 'small-icons':
186
170
  case 'icons': {
187
171
  return (
@@ -332,8 +316,8 @@ function useDraggableEvents(
332
316
  if (
333
317
  distanceSq >
334
318
  (editor.getInstanceState().isCoarsePointer
335
- ? editor.options.coarseDragDistanceSquared
336
- : editor.options.dragDistanceSquared)
319
+ ? editor.options.uiCoarseDragDistanceSquared
320
+ : editor.options.uiDragDistanceSquared)
337
321
  ) {
338
322
  const screenSpaceStart = state.screenSpaceStart
339
323
  state = {
@@ -342,6 +326,8 @@ function useDraggableEvents(
342
326
  }
343
327
 
344
328
  editor.run(() => {
329
+ editor.setCurrentTool('select')
330
+
345
331
  // Set origin point
346
332
  editor.dispatch({
347
333
  type: 'pointer',
@@ -364,6 +350,7 @@ function useDraggableEvents(
364
350
  })
365
351
 
366
352
  tooltipManager.hideAllTooltips()
353
+ editor.getContainer().focus()
367
354
  })
368
355
  }
369
356
  }
@@ -36,6 +36,7 @@ import { useTranslation } from '../hooks/useTranslation/useTranslation'
36
36
  import { TLUiIconType } from '../icon-types'
37
37
  import { TLUiOverrideHelpers, useDefaultHelpers } from '../overrides'
38
38
  import { useA11y } from './a11y'
39
+ import { useTldrawUiComponents } from './components'
39
40
  import { TLUiEventSource, useUiEvents } from './events'
40
41
 
41
42
  /** @public */
@@ -98,6 +99,7 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
98
99
  const _editor = useMaybeEditor()
99
100
  const showCollaborationUi = useShowCollaborationUi()
100
101
  const helpers = useDefaultHelpers()
102
+ const components = useTldrawUiComponents()
101
103
  const trackEvent = useUiEvents()
102
104
  const a11y = useA11y()
103
105
  const msg = useTranslation()
@@ -176,7 +178,9 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
176
178
  kbd: 'cmd+alt+/,ctrl+alt+/',
177
179
  onSelect(source) {
178
180
  trackEvent('open-kbd-shortcuts', { source })
179
- helpers.addDialog({ component: DefaultKeyboardShortcutsDialog })
181
+ helpers.addDialog({
182
+ component: components.KeyboardShortcutsDialog ?? DefaultKeyboardShortcutsDialog,
183
+ })
180
184
  },
181
185
  },
182
186
  {
@@ -1755,7 +1759,17 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
1755
1759
  }
1756
1760
 
1757
1761
  return actions
1758
- }, [helpers, _editor, trackEvent, overrides, defaultDocumentName, showCollaborationUi, msg, a11y])
1762
+ }, [
1763
+ helpers,
1764
+ _editor,
1765
+ trackEvent,
1766
+ overrides,
1767
+ defaultDocumentName,
1768
+ showCollaborationUi,
1769
+ msg,
1770
+ a11y,
1771
+ components,
1772
+ ])
1759
1773
 
1760
1774
  return <ActionsContext.Provider value={asActions(actions)}>{children}</ActionsContext.Provider>
1761
1775
  }
@@ -12,6 +12,7 @@ import {
12
12
  import { CursorChatBubble } from '../components/CursorChatBubble'
13
13
  import { DefaultDebugMenu } from '../components/DebugMenu/DefaultDebugMenu'
14
14
  import { DefaultDebugPanel } from '../components/DefaultDebugPanel'
15
+ import { DefaultFollowingIndicator } from '../components/DefaultFollowingIndicator'
15
16
  import { DefaultMenuPanel } from '../components/DefaultMenuPanel'
16
17
  import { DefaultDialogs } from '../components/Dialogs'
17
18
  import { TLUiHelpMenuProps } from '../components/HelpMenu/DefaultHelpMenu'
@@ -72,6 +73,7 @@ export interface TLUiComponents {
72
73
  Dialogs?: ComponentType | null
73
74
  Toasts?: ComponentType | null
74
75
  A11y?: ComponentType | null
76
+ FollowingIndicator?: ComponentType | null
75
77
  }
76
78
 
77
79
  const TldrawUiComponentsContext = createContext<TLUiComponents | null>(null)
@@ -119,6 +121,7 @@ export function TldrawUiComponentsProvider({
119
121
  Dialogs: DefaultDialogs,
120
122
  Toasts: DefaultToasts,
121
123
  A11y: DefaultA11yAnnouncer,
124
+ FollowingIndicator: DefaultFollowingIndicator,
122
125
  ..._overrides,
123
126
  }),
124
127
  [_overrides, showCollaborationUi]
@@ -123,7 +123,7 @@ export interface TLUiEventMap {
123
123
  'shrink-shapes': null
124
124
  'flatten-to-image': null
125
125
  'a11y-repeat-shape-announce': null
126
- 'open-url': { url: string }
126
+ 'open-url': { destinationUrl: string }
127
127
  'open-context-menu': null
128
128
  'adjust-shape-styles': null
129
129
  'copy-link': null
@@ -3,6 +3,8 @@ import {
3
3
  createShapeId,
4
4
  Editor,
5
5
  GeoShapeGeoStyle,
6
+ getIndicesBetween,
7
+ TLLineShape,
6
8
  TLPointerEventInfo,
7
9
  TLShapeId,
8
10
  toRichText,
@@ -153,7 +155,8 @@ export function ToolsProvider({ overrides, children }: TLUiToolsProviderProps) {
153
155
  },
154
156
  onDragStart(source: TLUiEventSource, info: TLPointerEventInfo) {
155
157
  onDragFromToolbarToCreateShape(editor, info, {
156
- createShape: (id) => editor.createShape({ id, type: 'geo', props: { geo } }),
158
+ createShape: (id) =>
159
+ editor.createShape({ id, type: 'geo', props: { w: 200, h: 200, geo } }),
157
160
  })
158
161
  trackEvent('drag-tool', { source, id: 'geo' })
159
162
  },
@@ -188,6 +191,24 @@ export function ToolsProvider({ overrides, children }: TLUiToolsProviderProps) {
188
191
  editor.setCurrentTool('line')
189
192
  onToolSelect(source, this)
190
193
  },
194
+ onDragStart(source, info) {
195
+ onDragFromToolbarToCreateShape(editor, info, {
196
+ createShape: (id) => {
197
+ const [start, end] = getIndicesBetween(null, null, 2)
198
+ editor.createShape<TLLineShape>({
199
+ id,
200
+ type: 'line',
201
+ props: {
202
+ points: {
203
+ [start]: { id: start, index: start, x: 0, y: 200 },
204
+ [end]: { id: end, index: end, x: 200, y: 0 },
205
+ },
206
+ },
207
+ })
208
+ },
209
+ })
210
+ trackEvent('drag-tool', { source, id: 'line' })
211
+ },
191
212
  },
192
213
  {
193
214
  id: 'frame',
@@ -219,8 +240,8 @@ export function ToolsProvider({ overrides, children }: TLUiToolsProviderProps) {
219
240
  createShape: (id) =>
220
241
  editor.createShape({ id, type: 'text', props: { richText: toRichText('Text') } }),
221
242
  onDragEnd: (id) => {
222
- editor.emit('select-all-text', { shapeId: id })
223
243
  editor.setEditingShape(id)
244
+ editor.emit('select-all-text', { shapeId: id })
224
245
  },
225
246
  })
226
247
  trackEvent('drag-tool', { source, id: 'text' })
@@ -249,8 +270,8 @@ export function ToolsProvider({ overrides, children }: TLUiToolsProviderProps) {
249
270
  onDragFromToolbarToCreateShape(editor, info, {
250
271
  createShape: (id) => editor.createShape({ id, type: 'note' }),
251
272
  onDragEnd: (id) => {
252
- editor.emit('select-all-text', { shapeId: id })
253
273
  editor.setEditingShape(id)
274
+ editor.emit('select-all-text', { shapeId: id })
254
275
  },
255
276
  })
256
277
  trackEvent('drag-tool', { source, id: 'note' })
@@ -365,5 +386,6 @@ export function onDragFromToolbarToCreateShape(
365
386
  opts.onDragEnd?.(id)
366
387
  },
367
388
  })
389
+
368
390
  editor.getCurrentTool().setCurrentToolIdMask(shape.type)
369
391
  }
@@ -186,6 +186,7 @@ export type TLUiTranslationKey =
186
186
  | 'geo-style.pentagon'
187
187
  | 'geo-style.rectangle'
188
188
  | 'geo-style.rhombus'
189
+ | 'geo-style.rhombus-2'
189
190
  | 'geo-style.star'
190
191
  | 'geo-style.trapezoid'
191
192
  | 'geo-style.triangle'
@@ -187,6 +187,7 @@ export const DEFAULT_TRANSLATION = {
187
187
  'geo-style.pentagon': 'Pentagon',
188
188
  'geo-style.rectangle': 'Rectangle',
189
189
  'geo-style.rhombus': 'Rhombus',
190
+ 'geo-style.rhombus-2': 'Rhombus left',
190
191
  'geo-style.star': 'Star',
191
192
  'geo-style.trapezoid': 'Trapezoid',
192
193
  'geo-style.triangle': 'Triangle',
@@ -31,9 +31,16 @@ export function kbd(str: string) {
31
31
  )
32
32
  .flat()
33
33
  .map((sub, index) => {
34
- if (sub === '__CTRL__') return 'Ctrl'
35
- if (sub === '__ALT__') return 'Alt'
36
- const modifiedKey = sub[0].toUpperCase() + sub.slice(1)
34
+ if (sub[0] === '+') return []
35
+
36
+ let modifiedKey
37
+ if (sub === '__CTRL__') {
38
+ modifiedKey = 'Ctrl'
39
+ } else if (sub === '__ALT__') {
40
+ modifiedKey = 'Alt'
41
+ } else {
42
+ modifiedKey = sub[0].toUpperCase() + sub.slice(1)
43
+ }
37
44
  return tlenv.isDarwin || !index ? modifiedKey : ['+', modifiedKey]
38
45
  })
39
46
  .flat()
@@ -1,9 +1,9 @@
1
1
  // This file is automatically generated by internal/scripts/refresh-assets.ts.
2
2
  // Do not edit manually. Or do, I'm a comment, not a cop.
3
3
 
4
- export const version = '3.16.0-canary.da3348c13973'
4
+ export const version = '3.16.0-canary.da558c1dc67d'
5
5
  export const publishDates = {
6
6
  major: '2024-09-13T14:36:29.063Z',
7
- minor: '2025-08-08T16:06:35.607Z',
8
- patch: '2025-08-08T16:06:35.607Z',
7
+ minor: '2025-08-27T14:24:59.882Z',
8
+ patch: '2025-08-27T14:24:59.882Z',
9
9
  }