tldraw 3.15.4 → 3.16.0-canary.016d4c2889b7

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 (436) hide show
  1. package/dist-cjs/index.d.ts +264 -10
  2. package/dist-cjs/index.js +32 -2
  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/TldrawCropHandles.js.map +2 -2
  7. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  8. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js +6 -4
  10. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  11. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +25 -39
  12. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  13. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +16 -4
  14. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +2 -2
  15. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
  16. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  17. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  18. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  19. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +3 -0
  20. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
  21. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  22. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  23. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  24. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  25. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +18 -12
  26. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  27. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  28. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  29. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  30. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  31. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  32. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  33. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  34. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  35. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  36. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  37. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  38. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  39. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  40. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  41. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  42. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  43. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  44. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js +10 -1
  45. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js.map +2 -2
  46. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  47. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  48. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  49. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  50. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  51. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  52. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  53. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  54. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +4 -0
  55. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  56. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +2 -15
  57. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
  58. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +5 -0
  59. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
  60. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  61. package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
  62. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  63. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  64. package/dist-cjs/lib/ui/components/AccessibilityMenu.js +35 -0
  65. package/dist-cjs/lib/ui/components/AccessibilityMenu.js.map +7 -0
  66. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  67. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  68. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  69. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  70. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  71. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  72. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +46 -6
  73. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +2 -2
  74. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +3 -3
  75. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  76. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  77. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  78. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  79. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  80. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  81. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  82. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
  83. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  84. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  85. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  86. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  87. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  88. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +2 -0
  89. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  90. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +171 -140
  91. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  92. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +3 -3
  93. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +2 -2
  94. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +26 -25
  95. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +3 -3
  96. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
  97. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  98. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  99. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  100. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  101. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  102. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +5 -4
  103. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  104. package/dist-cjs/lib/ui/components/menu-items.js +6 -0
  105. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  106. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +5 -16
  107. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +3 -3
  108. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  109. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  110. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  111. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  112. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +1 -0
  113. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  114. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +30 -7
  115. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  116. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +262 -0
  117. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +7 -0
  118. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  119. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  120. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  121. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  122. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  123. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +154 -20
  124. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  125. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js +3 -2
  126. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js.map +2 -2
  127. package/dist-cjs/lib/ui/context/actions.js +45 -9
  128. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  129. package/dist-cjs/lib/ui/context/components.js +2 -0
  130. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  131. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  132. package/dist-cjs/lib/ui/hooks/menu-hooks.js.map +2 -2
  133. package/dist-cjs/lib/ui/hooks/useTools.js +94 -9
  134. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  135. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  136. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +8 -0
  137. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  138. package/dist-cjs/lib/ui/kbd-utils.js +11 -4
  139. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  140. package/dist-cjs/lib/ui/version.js +3 -3
  141. package/dist-cjs/lib/ui/version.js.map +1 -1
  142. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js +1 -1
  143. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +2 -2
  144. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +3 -2
  145. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
  146. package/dist-esm/index.d.mts +264 -10
  147. package/dist-esm/index.mjs +50 -4
  148. package/dist-esm/index.mjs.map +2 -2
  149. package/dist-esm/lib/Tldraw.mjs +14 -4
  150. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  151. package/dist-esm/lib/canvas/TldrawCropHandles.mjs.map +2 -2
  152. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  153. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  154. package/dist-esm/lib/defaultExternalContentHandlers.mjs +6 -4
  155. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  156. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +28 -39
  157. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  158. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +19 -5
  159. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +2 -2
  160. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
  161. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  162. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  163. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  164. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +3 -0
  165. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
  166. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  167. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  168. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  169. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  170. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +19 -12
  171. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  172. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  173. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  174. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  175. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  176. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  177. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  178. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  179. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  180. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  181. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  182. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  183. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  184. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  185. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  186. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  187. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  188. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  189. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs +10 -1
  190. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs.map +2 -2
  191. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  192. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  193. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  194. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  195. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  196. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  197. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  198. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  199. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +4 -0
  200. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  201. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +2 -15
  202. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
  203. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +5 -0
  204. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
  205. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  206. package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
  207. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  208. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  209. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs +19 -0
  210. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs.map +7 -0
  211. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  212. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  213. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  214. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  215. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  216. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  217. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +46 -6
  218. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +2 -2
  219. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +3 -5
  220. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  221. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  222. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  223. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  224. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  225. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  226. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  227. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
  228. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  229. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  230. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  231. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  232. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  233. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +3 -1
  234. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  235. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +171 -140
  236. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  237. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +3 -3
  238. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +2 -2
  239. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +26 -25
  240. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  241. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
  242. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  243. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  244. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  245. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  246. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  247. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +5 -4
  248. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  249. package/dist-esm/lib/ui/components/menu-items.mjs +6 -0
  250. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  251. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +6 -6
  252. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  253. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -1
  254. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  255. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  256. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  257. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +1 -0
  258. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  259. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +30 -7
  260. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  261. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +239 -0
  262. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +7 -0
  263. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  264. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  265. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  266. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  267. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  268. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +162 -22
  269. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  270. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs +3 -2
  271. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs.map +2 -2
  272. package/dist-esm/lib/ui/context/actions.mjs +45 -9
  273. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  274. package/dist-esm/lib/ui/context/components.mjs +2 -0
  275. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  276. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  277. package/dist-esm/lib/ui/hooks/menu-hooks.mjs.map +2 -2
  278. package/dist-esm/lib/ui/hooks/useTools.mjs +102 -10
  279. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  280. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +8 -0
  281. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  282. package/dist-esm/lib/ui/kbd-utils.mjs +11 -4
  283. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  284. package/dist-esm/lib/ui/version.mjs +3 -3
  285. package/dist-esm/lib/ui/version.mjs.map +1 -1
  286. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs +1 -1
  287. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +2 -2
  288. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +3 -2
  289. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
  290. package/package.json +11 -34
  291. package/src/index.ts +35 -2
  292. package/src/lib/Tldraw.tsx +15 -2
  293. package/src/lib/canvas/TldrawCropHandles.tsx +2 -0
  294. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  295. package/src/lib/defaultExternalContentHandlers.ts +14 -5
  296. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  297. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +4 -3
  298. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +12 -11
  299. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +29 -42
  300. package/src/lib/shapes/arrow/arrowLabel.ts +23 -3
  301. package/src/lib/shapes/arrow/arrowTargetState.ts +2 -1
  302. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  303. package/src/lib/shapes/arrow/toolStates/Pointing.tsx +3 -0
  304. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  305. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  306. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  307. package/src/lib/shapes/frame/FrameShapeUtil.tsx +29 -14
  308. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  309. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  310. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  311. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  312. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  313. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  314. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  315. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  316. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  317. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  318. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  319. package/src/lib/shapes/shared/usePrefersReducedMotion.tsx +11 -1
  320. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  321. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  322. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  323. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  324. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  325. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +4 -0
  326. package/src/lib/tools/SelectTool/childStates/Idle.ts +2 -24
  327. package/src/lib/tools/SelectTool/childStates/PointingShape.ts +7 -0
  328. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  329. package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +1 -0
  330. package/src/lib/ui/TldrawUi.tsx +33 -12
  331. package/src/lib/ui/components/AccessibilityMenu.tsx +20 -0
  332. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  333. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  334. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  335. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +38 -6
  336. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +4 -4
  337. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  338. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  339. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  340. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
  341. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  342. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  343. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +3 -1
  344. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +146 -107
  345. package/src/lib/ui/components/StylePanel/DoubleDropdownPicker.tsx +3 -3
  346. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +7 -6
  347. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
  348. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  349. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  350. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +17 -12
  351. package/src/lib/ui/components/menu-items.tsx +8 -0
  352. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +40 -37
  353. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -1
  354. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  355. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +1 -0
  356. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +51 -12
  357. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +325 -0
  358. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  359. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  360. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  361. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +221 -19
  362. package/src/lib/ui/context/TldrawUiContextProvider.tsx +23 -20
  363. package/src/lib/ui/context/actions.tsx +45 -9
  364. package/src/lib/ui/context/components.tsx +3 -0
  365. package/src/lib/ui/context/events.tsx +5 -3
  366. package/src/lib/ui/hooks/menu-hooks.ts +1 -0
  367. package/src/lib/ui/hooks/useTools.tsx +140 -10
  368. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +8 -0
  369. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +8 -0
  370. package/src/lib/ui/kbd-utils.ts +12 -4
  371. package/src/lib/ui/version.ts +3 -3
  372. package/src/lib/ui.css +409 -292
  373. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +21 -7
  374. package/src/lib/utils/excalidraw/putExcalidrawContent.ts +1 -1
  375. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +28 -7
  376. package/src/lib/utils/tldr/buildFromV1Document.ts +2 -1
  377. package/src/test/A11y.test.tsx +3 -2
  378. package/src/test/ClickManager.test.ts +7 -6
  379. package/src/test/Editor.test.tsx +20 -19
  380. package/src/test/EraserTool.test.ts +184 -13
  381. package/src/test/HandTool.test.ts +10 -9
  382. package/src/test/HighlightShape.test.ts +2 -1
  383. package/src/test/SelectTool.test.ts +40 -13
  384. package/src/test/TLUserPreferences.test.ts +4 -3
  385. package/src/test/TestEditor.ts +13 -15
  386. package/src/test/TldrawEditor.test.tsx +11 -10
  387. package/src/test/ZoomTool.test.ts +7 -6
  388. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  389. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  390. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  391. package/src/test/arrows-megabus.test.tsx +17 -10
  392. package/src/test/bindings.test.tsx +24 -37
  393. package/src/test/bookmark-shapes.test.ts +1 -8
  394. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  395. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  396. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  397. package/src/test/commands/alignShapes.test.tsx +25 -24
  398. package/src/test/commands/animationSpeed.test.ts +2 -1
  399. package/src/test/commands/centerOnPoint.test.ts +3 -2
  400. package/src/test/commands/clipboard.test.ts +3 -2
  401. package/src/test/commands/createShapes.test.ts +2 -1
  402. package/src/test/commands/deletePage.test.ts +84 -1
  403. package/src/test/commands/deleteShapes.test.ts +2 -1
  404. package/src/test/commands/distributeShapes.test.tsx +11 -10
  405. package/src/test/commands/getSvgString.test.ts +2 -1
  406. package/src/test/commands/packShapes.test.ts +5 -4
  407. package/src/test/commands/resizeShape.test.ts +2 -1
  408. package/src/test/commands/rotateShapes.test.ts +7 -6
  409. package/src/test/commands/setCamera.test.ts +4 -3
  410. package/src/test/commands/setCurrentPage.test.ts +3 -2
  411. package/src/test/commands/stackShapes.test.ts +11 -10
  412. package/src/test/commands/stretch.test.tsx +13 -12
  413. package/src/test/createDeepLink.test.tsx +2 -1
  414. package/src/test/cropping.test.ts +3 -2
  415. package/src/test/custom-clipping.test.ts +436 -0
  416. package/src/test/drawing.test.ts +2 -1
  417. package/src/test/flipShapes.test.ts +4 -3
  418. package/src/test/frames.test.ts +25 -24
  419. package/src/test/getCulledShapes.test.tsx +3 -2
  420. package/src/test/groups.test.tsx +1 -1
  421. package/src/test/handleDeepLink.test.tsx +2 -1
  422. package/src/test/inner-outer-margin.test.ts +315 -0
  423. package/src/test/maxShapes.test.ts +3 -2
  424. package/src/test/modifiers.test.ts +5 -4
  425. package/src/test/navigation.test.ts +12 -11
  426. package/src/test/panning.test.ts +2 -1
  427. package/src/test/perf/perf.test.ts +2 -1
  428. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  429. package/src/test/resizing.test.ts +39 -38
  430. package/src/test/select.test.tsx +4 -3
  431. package/src/test/selection-omnibus.test.ts +11 -10
  432. package/src/test/shapeutils.test.ts +4 -3
  433. package/src/test/translating.test.ts +9 -8
  434. package/tldraw.css +714 -603
  435. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  436. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
@@ -13,11 +13,13 @@ import { CSSProperties } from 'react';
13
13
  import { Editor } from '@tldraw/editor';
14
14
  import { Extension } from '@tiptap/core';
15
15
  import { Extensions } from '@tiptap/core';
16
+ import { ForwardRefExoticComponent } from 'react';
16
17
  import { Geometry2d } from '@tldraw/editor';
17
18
  import { Geometry2dFilters } from '@tldraw/editor';
18
19
  import { Geometry2dOptions } from '@tldraw/editor';
19
20
  import { Group2d } from '@tldraw/editor';
20
21
  import { HandleSnapGeometry } from '@tldraw/editor';
22
+ import { HTMLAttributes } from 'react';
21
23
  import { IndexKey } from '@tldraw/editor';
22
24
  import { JsonObject } from '@tldraw/editor';
23
25
  import { JSX as JSX_2 } from 'react/jsx-runtime';
@@ -37,6 +39,7 @@ import { ReadonlySharedStyleMap } from '@tldraw/editor';
37
39
  import { RecordProps } from '@tldraw/editor';
38
40
  import { Rectangle2d } from '@tldraw/editor';
39
41
  import { RecursivePartial } from '@tldraw/editor';
42
+ import { RefAttributes } from 'react';
40
43
  import { RefObject } from 'react';
41
44
  import { Result } from '@tldraw/editor';
42
45
  import { RichTextFontVisitorState } from '@tldraw/editor';
@@ -148,6 +151,9 @@ export declare interface A11yProviderProps {
148
151
  children: React.ReactNode;
149
152
  }
150
153
 
154
+ /** @public @react */
155
+ export declare function AccessibilityMenu(): JSX_2.Element;
156
+
151
157
  /** @public */
152
158
  export declare interface ActionsProviderProps {
153
159
  overrides?(editor: Editor, actions: TLUiActionsContextType, helpers: TLUiOverrideHelpers): TLUiActionsContextType;
@@ -354,7 +360,6 @@ export declare class ArrowShapeUtil extends ShapeUtil<TLArrowShape> {
354
360
  component(shape: TLArrowShape): JSX_2.Element | null;
355
361
  indicator(shape: TLArrowShape): JSX_2.Element | null;
356
362
  onEditStart(shape: TLArrowShape): void;
357
- onEditEnd(shape: TLArrowShape): void;
358
363
  toSvg(shape: TLArrowShape, ctx: SvgExportContext): JSX_2.Element;
359
364
  getCanvasSvgDefs(): TLShapeUtilCanvasSvgDef[];
360
365
  getInterpolatedProps(startShape: TLArrowShape, endShape: TLArrowShape, progress: number): TLArrowShapeProps;
@@ -848,6 +853,9 @@ export declare let defaultEditorAssetUrls: TLEditorAssetUrls;
848
853
  /** @public */
849
854
  export declare type DefaultEmbedDefinitionType = (typeof DEFAULT_EMBED_DEFINITIONS)[number]['type'];
850
855
 
856
+ /** @public @react */
857
+ export declare function DefaultFollowingIndicator(): JSX_2.Element | null;
858
+
851
859
  /** @public */
852
860
  export declare const DefaultFontFaces: TLDefaultFonts;
853
861
 
@@ -1012,6 +1020,11 @@ export declare function DefaultToolbarContent(): JSX_2.Element;
1012
1020
  /** @public */
1013
1021
  export declare interface DefaultToolbarProps {
1014
1022
  children?: ReactNode;
1023
+ orientation?: 'horizontal' | 'vertical';
1024
+ minItems?: number;
1025
+ minSizePx?: number;
1026
+ maxItems?: number;
1027
+ maxSizePx?: number;
1015
1028
  }
1016
1029
 
1017
1030
  /** @public */
@@ -1569,6 +1582,7 @@ export declare class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
1569
1582
  canEdit(): boolean;
1570
1583
  canResize(): boolean;
1571
1584
  canResizeChildren(): boolean;
1585
+ isExportBoundsContainer(): boolean;
1572
1586
  getDefaultProps(): TLFrameShape['props'];
1573
1587
  getAriaDescriptor(shape: TLFrameShape): string;
1574
1588
  getGeometry(shape: TLFrameShape): Geometry2d;
@@ -1577,6 +1591,7 @@ export declare class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
1577
1591
  toSvg(shape: TLFrameShape, ctx: SvgExportContext): JSX_2.Element;
1578
1592
  indicator(shape: TLFrameShape): JSX_2.Element;
1579
1593
  providesBackgroundForChildren(): boolean;
1594
+ getClipPath(shape: TLFrameShape): Vec[];
1580
1595
  canReceiveNewChildrenOfType(shape: TLShape): boolean;
1581
1596
  onResize(shape: any, info: TLResizeInfo<any>): any;
1582
1597
  getInterpolatedProps(startShape: TLFrameShape, endShape: TLFrameShape, t: number): TLFrameShapeProps;
@@ -1740,6 +1755,9 @@ export declare function getArrowTerminalsInArrowSpace(editor: Editor, shape: TLA
1740
1755
  start: Vec;
1741
1756
  };
1742
1757
 
1758
+ /** @public */
1759
+ export declare function getAssetInfo(file: File, options: TLDefaultExternalContentHandlerOpts, assetId?: TLAssetId): Promise<TLImageAsset | TLVideoAsset>;
1760
+
1743
1761
  /** @public */
1744
1762
  export declare function getCropBox<T extends ShapeWithCrop>(shape: T, info: TLCropInfo<T>, opts?: CropBoxOptions): {
1745
1763
  id: TLShapeId;
@@ -1761,9 +1779,35 @@ export declare function getDefaultCrop(): TLShapeCrop;
1761
1779
  */
1762
1780
  export declare function getEmbedInfo(definitions: readonly TLEmbedDefinition[], inputUrl: string): TLEmbedResult;
1763
1781
 
1782
+ /** @public */
1783
+ export declare function getHitShapeOnCanvasPointerDown(editor: Editor, hitLabels?: boolean): TLShape | undefined;
1784
+
1764
1785
  /** @public */
1765
1786
  export declare function getMediaAssetInfoPartial(file: File, assetId: TLAssetId, isImageType: boolean, isVideoType: boolean, maxImageDimension?: number): Promise<TLImageAsset | TLVideoAsset>;
1766
1787
 
1788
+ /**
1789
+ * ## getStrokePoints
1790
+ *
1791
+ * Get an array of points as objects with an adjusted point, pressure, vector, distance, and
1792
+ * runningLength.
1793
+ *
1794
+ * @param points - An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is
1795
+ * optional in both cases.
1796
+ * @param options - An object with options.
1797
+ * @public
1798
+ */
1799
+ export declare function getStrokePoints(rawInputPoints: VecLike[], options?: StrokeOptions): StrokePoint[];
1800
+
1801
+ /**
1802
+ * Turn an array of stroke points into a path of quadradic curves.
1803
+ *
1804
+ * @param points - The stroke points returned from perfect-freehand
1805
+ * @param closed - Whether the shape is closed
1806
+ *
1807
+ * @public
1808
+ */
1809
+ export declare function getSvgPathFromStrokePoints(points: StrokePoint[], closed?: boolean): string;
1810
+
1767
1811
  /**
1768
1812
  * Original (uncropped) width and height of shape.
1769
1813
  *
@@ -1859,6 +1903,7 @@ export declare class ImageShapeUtil extends BaseBoxShapeUtil<TLImageShape> {
1859
1903
  static migrations: TLPropsMigrations;
1860
1904
  isAspectRatioLocked(): boolean;
1861
1905
  canCrop(): boolean;
1906
+ isExportBoundsContainer(): boolean;
1862
1907
  getDefaultProps(): TLImageShape['props'];
1863
1908
  getGeometry(shape: TLImageShape): Geometry2d;
1864
1909
  getAriaDescriptor(shape: TLImageShape): string;
@@ -1995,6 +2040,9 @@ export declare function LineToolbarItem(): JSX_2.Element;
1995
2040
 
1996
2041
  /* Excluded from this release type: LineToPathBuilderCommand */
1997
2042
 
2043
+ /** @public @react */
2044
+ export declare function LockGroup(): JSX_2.Element;
2045
+
1998
2046
  /** @public @react */
1999
2047
  export declare function MiscMenuGroup(): JSX_2.Element;
2000
2048
 
@@ -2106,9 +2154,42 @@ export declare class NoteShapeUtil extends ShapeUtil<TLNoteShape> {
2106
2154
  /** @public @react */
2107
2155
  export declare function NoteToolbarItem(): JSX_2.Element;
2108
2156
 
2157
+ /**
2158
+ * Checks if a file is allowed to be uploaded. If it is not, it will show a toast explaining why to the user.
2159
+ *
2160
+ * @param file - The file to check
2161
+ * @param options - The options for the external content handler
2162
+ * @returns True if the file is allowed, false otherwise
2163
+ * @public
2164
+ */
2165
+ export declare function notifyIfFileNotAllowed(file: File, options: TLDefaultExternalContentHandlerOpts): boolean;
2166
+
2109
2167
  /** @public @react */
2110
2168
  export declare function OfflineIndicator(): JSX_2.Element;
2111
2169
 
2170
+ /**
2171
+ * A helper method to use in {@link TLUiToolItem#onDragStart} to create a shape by dragging it from
2172
+ * the toolbar.
2173
+ * @public
2174
+ */
2175
+ export declare function onDragFromToolbarToCreateShape(editor: Editor, info: TLPointerEventInfo, opts: OnDragFromToolbarToCreateShapesOpts): void;
2176
+
2177
+ /**
2178
+ * Options for {@link onDragFromToolbarToCreateShape}.
2179
+ * @public
2180
+ */
2181
+ export declare interface OnDragFromToolbarToCreateShapesOpts {
2182
+ /**
2183
+ * Create the shape being dragged. You don't need to worry about positioning it, as it'll be
2184
+ * immediately updated with the correct position.
2185
+ */
2186
+ createShape(id: TLShapeId): void;
2187
+ /**
2188
+ * Called once the drag interaction has finished.
2189
+ */
2190
+ onDragEnd?(id: TLShapeId): void;
2191
+ }
2192
+
2112
2193
  /** @public @react */
2113
2194
  export declare function OpacitySlider(): JSX_2.Element | null;
2114
2195
 
@@ -2116,11 +2197,17 @@ export declare function OpacitySlider(): JSX_2.Element | null;
2116
2197
  export declare function OvalToolbarItem(): JSX_2.Element;
2117
2198
 
2118
2199
  /** @public @react */
2119
- export declare function OverflowingToolbar({ children }: OverflowingToolbarProps): JSX_2.Element;
2200
+ export declare function OverflowingToolbar({ children, orientation, sizingParentClassName, minItems, minSizePx, maxItems, maxSizePx, }: OverflowingToolbarProps): JSX_2.Element;
2120
2201
 
2121
2202
  /** @public */
2122
2203
  export declare interface OverflowingToolbarProps {
2123
2204
  children: React.ReactNode;
2205
+ orientation: 'horizontal' | 'vertical';
2206
+ sizingParentClassName: string;
2207
+ minItems: number;
2208
+ minSizePx: number;
2209
+ maxItems: number;
2210
+ maxSizePx: number;
2124
2211
  }
2125
2212
 
2126
2213
  /** @public @react */
@@ -2509,6 +2596,54 @@ export declare function StarToolbarItem(): JSX_2.Element;
2509
2596
  /** @public */
2510
2597
  export declare const STROKE_SIZES: Record<TLDefaultSizeStyle, number>;
2511
2598
 
2599
+ /**
2600
+ * The options object for `getStroke` or `getStrokePoints`.
2601
+ *
2602
+ * @public
2603
+ */
2604
+ export declare interface StrokeOptions {
2605
+ /** The base size (diameter) of the stroke. */
2606
+ size?: number;
2607
+ /** The effect of pressure on the stroke's size. */
2608
+ thinning?: number;
2609
+ /** How much to soften the stroke's edges. */
2610
+ smoothing?: number;
2611
+ streamline?: number;
2612
+ /** An easing function to apply to each point's pressure. */
2613
+ easing?(pressure: number): number;
2614
+ /** Whether to simulate pressure based on velocity. */
2615
+ simulatePressure?: boolean;
2616
+ /** Cap, taper and easing for the start of the line. */
2617
+ start?: {
2618
+ cap?: boolean;
2619
+ easing?(distance: number): number;
2620
+ taper?: boolean | number;
2621
+ };
2622
+ /** Cap, taper and easing for the end of the line. */
2623
+ end?: {
2624
+ cap?: boolean;
2625
+ easing?(distance: number): number;
2626
+ taper?: boolean | number;
2627
+ };
2628
+ /** Whether to handle the points as a completed stroke. */
2629
+ last?: boolean;
2630
+ }
2631
+
2632
+ /**
2633
+ * The points returned by `getStrokePoints`, and the input for `getStrokeOutlinePoints`
2634
+ *
2635
+ * @public
2636
+ */
2637
+ export declare interface StrokePoint {
2638
+ point: Vec;
2639
+ input: Vec;
2640
+ vector: Vec;
2641
+ pressure: number;
2642
+ distance: number;
2643
+ runningLength: number;
2644
+ radius: number;
2645
+ }
2646
+
2512
2647
  /** @public */
2513
2648
  export declare interface StylePickerSetProps {
2514
2649
  styles: ReadonlySharedStyleMap;
@@ -2773,6 +2908,17 @@ export declare interface TldrawBaseProps extends TldrawUiProps, TldrawEditorBase
2773
2908
  embeds?: TLEmbedDefinition[];
2774
2909
  }
2775
2910
 
2911
+ /** @public @react */
2912
+ export declare function TldrawCropHandles({ size, width, height, hideAlternateHandles, }: TldrawCropHandlesProps): JSX_2.Element;
2913
+
2914
+ /** @public */
2915
+ export declare interface TldrawCropHandlesProps {
2916
+ size: number;
2917
+ width: number;
2918
+ height: number;
2919
+ hideAlternateHandles: boolean;
2920
+ }
2921
+
2776
2922
  /** @public */
2777
2923
  export declare interface TldrawFile {
2778
2924
  tldrawFileFormatVersion: number;
@@ -2896,6 +3042,13 @@ export declare function TldrawUiButtonLabel({ children }: TLUiButtonLabelProps):
2896
3042
  /** @public */
2897
3043
  export declare const TldrawUiButtonPicker: <T extends string>(props: TLUiButtonPickerProps<T>) => ReactElement;
2898
3044
 
3045
+ /**
3046
+ * A column, usually of UI controls like buttons, select dropdown, checkboxes, etc.
3047
+ *
3048
+ * @public @react
3049
+ */
3050
+ export declare const TldrawUiColumn: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
3051
+
2899
3052
  /** @public @react */
2900
3053
  export declare function TldrawUiComponentsProvider({ overrides, children, }: TLUiComponentsProviderProps): JSX_2.Element;
2901
3054
 
@@ -2958,9 +3111,19 @@ export declare function TldrawUiDropdownMenuTrigger({ children, ...rest }: TLUiD
2958
3111
  /** @public @react */
2959
3112
  export declare function TldrawUiEventsProvider({ onEvent, children }: EventsProviderProps): JSX_2.Element;
2960
3113
 
3114
+ /**
3115
+ * A tight grid 4 elements wide, usually of UI controls like buttons, select dropdown, checkboxes,
3116
+ * etc.
3117
+ *
3118
+ * @public @react */
3119
+ export declare const TldrawUiGrid: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
3120
+
2961
3121
  /** @public @react */
2962
3122
  export declare const TldrawUiIcon: NamedExoticComponent<TLUiIconProps>;
2963
3123
 
3124
+ /** @public @react */
3125
+ export declare function TldrawUiInFrontOfTheCanvas(): JSX_2.Element;
3126
+
2964
3127
  /** @public @react */
2965
3128
  export declare const TldrawUiInput: React_2.ForwardRefExoticComponent<TLUiInputProps & React_2.RefAttributes<HTMLInputElement>>;
2966
3129
 
@@ -2983,7 +3146,7 @@ export declare function TldrawUiMenuContextProvider({ type, sourceId, children,
2983
3146
  export declare function TldrawUiMenuGroup({ id, label, className, children }: TLUiMenuGroupProps): boolean | JSX_2.Element | Iterable<ReactNode> | null | number | string | undefined;
2984
3147
 
2985
3148
  /** @public @react */
2986
- export declare function TldrawUiMenuItem<TranslationKey extends string = string, IconType extends string = string>({ disabled, spinner, readonlyOk, id, kbd, label, icon, iconLeft, onSelect, noClose, isSelected, }: TLUiMenuItemProps<TranslationKey, IconType>): JSX_2.Element | null;
3149
+ export declare function TldrawUiMenuItem<TranslationKey extends string = string, IconType extends string = string>({ disabled, spinner, readonlyOk, id, kbd, label, icon, iconLeft, onSelect, noClose, isSelected, onDragStart, }: TLUiMenuItemProps<TranslationKey, IconType>): JSX_2.Element | null;
2987
3150
 
2988
3151
  /** @public @react */
2989
3152
  export declare function TldrawUiMenuSubmenu<Translation extends string = string>({ id, disabled, label, size, children, }: TLUiMenuSubmenuProps<Translation>): boolean | JSX_2.Element | Iterable<ReactNode> | null | number | string | undefined;
@@ -2991,8 +3154,24 @@ export declare function TldrawUiMenuSubmenu<Translation extends string = string>
2991
3154
  /** @public @react */
2992
3155
  export declare function TldrawUiMenuToolItem({ toolId, ...rest }: TLUiMenuToolItemProps): JSX_2.Element | null;
2993
3156
 
3157
+ /** @public */
3158
+ export declare interface TldrawUiOrientationContext {
3159
+ orientation: 'horizontal' | 'vertical';
3160
+ tooltipSide: 'bottom' | 'left' | 'right' | 'top';
3161
+ }
3162
+
3163
+ /** @public @react */
3164
+ export declare function TldrawUiOrientationProvider({ children, orientation, tooltipSide, }: TldrawUiOrientationProviderProps): JSX_2.Element;
3165
+
3166
+ /** @public */
3167
+ export declare interface TldrawUiOrientationProviderProps {
3168
+ children: ReactNode;
3169
+ orientation: 'horizontal' | 'vertical';
3170
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3171
+ }
3172
+
2994
3173
  /** @public @react */
2995
- export declare function TldrawUiPopover({ id, children, onOpenChange, open }: TLUiPopoverProps): JSX_2.Element;
3174
+ export declare function TldrawUiPopover({ id, children, onOpenChange, open, className }: TLUiPopoverProps): JSX_2.Element;
2996
3175
 
2997
3176
  /** @public @react */
2998
3177
  export declare function TldrawUiPopoverContent({ side, children, align, sideOffset, alignOffset, disableEscapeKeyDown, autoFocusFirstButton, }: TLUiPopoverContentProps): JSX_2.Element;
@@ -3022,6 +3201,13 @@ export declare interface TldrawUiProps extends TLUiContextProviderProps {
3022
3201
  assetUrls?: TLUiAssetUrlOverrides;
3023
3202
  }
3024
3203
 
3204
+ /**
3205
+ * A row, usually of UI controls like buttons, select dropdown, checkboxes, etc.
3206
+ *
3207
+ * @public @react
3208
+ */
3209
+ export declare const TldrawUiRow: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
3210
+
3025
3211
  /** @public @react */
3026
3212
  export declare const TldrawUiSlider: React_3.ForwardRefExoticComponent<TLUiSliderProps & React_3.RefAttributes<HTMLDivElement>>;
3027
3213
 
@@ -3038,7 +3224,29 @@ export declare const TldrawUiToolbarButton: React_3.ForwardRefExoticComponent<TL
3038
3224
  export declare const TldrawUiToolbarToggleGroup: ({ children, className, type, ...props }: TLUiToolbarToggleGroupProps) => JSX_2.Element;
3039
3225
 
3040
3226
  /** @public @react */
3041
- export declare const TldrawUiToolbarToggleItem: ({ children, className, type, value, ...props }: TLUiToolbarToggleItemProps) => JSX_2.Element;
3227
+ export declare const TldrawUiToolbarToggleItem: ({ children, className, type, value, tooltip, ...props }: TLUiToolbarToggleItemProps) => JSX_2.Element;
3228
+
3229
+ /** @public @react */
3230
+ export declare const TldrawUiTooltip: React_3.ForwardRefExoticComponent<TldrawUiTooltipProps & React_3.RefAttributes<HTMLButtonElement>>;
3231
+
3232
+ /** @public */
3233
+ export declare interface TldrawUiTooltipProps {
3234
+ children: React_3.ReactNode;
3235
+ content?: React_3.ReactNode | string;
3236
+ side?: 'bottom' | 'left' | 'right' | 'top';
3237
+ sideOffset?: number;
3238
+ disabled?: boolean;
3239
+ showOnMobile?: boolean;
3240
+ delayDuration?: number;
3241
+ }
3242
+
3243
+ /** @public @react */
3244
+ export declare function TldrawUiTooltipProvider({ children }: TldrawUiTooltipProviderProps): JSX_2.Element;
3245
+
3246
+ /** @public */
3247
+ export declare interface TldrawUiTooltipProviderProps {
3248
+ children: React_3.ReactNode;
3249
+ }
3042
3250
 
3043
3251
  /* Excluded from this release type: TldrawUiTranslationProvider */
3044
3252
 
@@ -3246,6 +3454,7 @@ export declare interface TLUiComponents {
3246
3454
  Dialogs?: ComponentType | null;
3247
3455
  Toasts?: ComponentType | null;
3248
3456
  A11y?: ComponentType | null;
3457
+ FollowingIndicator?: ComponentType | null;
3249
3458
  }
3250
3459
 
3251
3460
  /** @public */
@@ -3504,8 +3713,12 @@ export declare interface TLUiEventMap {
3504
3713
  'delete-shapes': null;
3505
3714
  'select-all-shapes': null;
3506
3715
  'select-none-shapes': null;
3507
- 'rotate-ccw': null;
3508
- 'rotate-cw': null;
3716
+ 'rotate-ccw': {
3717
+ fine: boolean;
3718
+ };
3719
+ 'rotate-cw': {
3720
+ fine: boolean;
3721
+ };
3509
3722
  'zoom-in': {
3510
3723
  towardsCursor: boolean;
3511
3724
  };
@@ -3549,6 +3762,7 @@ export declare interface TLUiEventMap {
3549
3762
  'toggle-lock': null;
3550
3763
  'toggle-reduce-motion': null;
3551
3764
  'toggle-keyboard-shortcuts': null;
3765
+ 'toggle-ui-labels': null;
3552
3766
  'toggle-edge-scrolling': null;
3553
3767
  'color-scheme': {
3554
3768
  value: string;
@@ -3566,11 +3780,14 @@ export declare interface TLUiEventMap {
3566
3780
  'flatten-to-image': null;
3567
3781
  'a11y-repeat-shape-announce': null;
3568
3782
  'open-url': {
3569
- url: string;
3783
+ destinationUrl: string;
3570
3784
  };
3571
3785
  'open-context-menu': null;
3572
3786
  'adjust-shape-styles': null;
3573
3787
  'copy-link': null;
3788
+ 'drag-tool': {
3789
+ id: string;
3790
+ };
3574
3791
  'image-replace': null;
3575
3792
  'video-replace': null;
3576
3793
  'open-kbd-shortcuts': null;
@@ -3657,6 +3874,13 @@ export declare type TLUiKeyboardShortcutsDialogProps = TLUiDialogProps & {
3657
3874
  children?: ReactNode;
3658
3875
  };
3659
3876
 
3877
+ /** @public */
3878
+ export declare interface TLUiLayoutProps extends HTMLAttributes<HTMLDivElement> {
3879
+ children: ReactNode;
3880
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3881
+ asChild?: boolean;
3882
+ }
3883
+
3660
3884
  /** @public */
3661
3885
  export declare interface TLUiMainMenuProps {
3662
3886
  children?: ReactNode;
@@ -3696,7 +3920,7 @@ export declare interface TLUiMenuContextProviderProps {
3696
3920
  }
3697
3921
 
3698
3922
  /** @public */
3699
- export declare type TLUiMenuContextType = 'context-menu' | 'helper-buttons' | 'icons' | 'keyboard-shortcuts' | 'menu' | 'panel' | 'small-icons' | 'toolbar-overflow' | 'toolbar';
3923
+ export declare type TLUiMenuContextType = 'context-menu' | 'helper-buttons' | 'icons' | 'keyboard-shortcuts' | 'menu' | 'small-icons' | 'toolbar-overflow' | 'toolbar';
3700
3924
 
3701
3925
  /** @public */
3702
3926
  export declare interface TLUiMenuGroupProps<TranslationKey extends string = string> {
@@ -3756,6 +3980,10 @@ export declare interface TLUiMenuItemProps<TranslationKey extends string = strin
3756
3980
  * Whether the item is selected.
3757
3981
  */
3758
3982
  isSelected?: boolean;
3983
+ /**
3984
+ * The function to call when the item is dragged. If this is provided, the item will be draggable.
3985
+ */
3986
+ onDragStart?(source: TLUiEventSource, info: TLPointerEventInfo): void;
3759
3987
  }
3760
3988
 
3761
3989
  /** @public */
@@ -3801,6 +4029,7 @@ export declare interface TLUiPopoverProps {
3801
4029
  open?: boolean;
3802
4030
  children: React_3.ReactNode;
3803
4031
  onOpenChange?(isOpen: boolean): void;
4032
+ className?: string;
3804
4033
  }
3805
4034
 
3806
4035
  /** @public */
@@ -3886,6 +4115,7 @@ export declare interface TLUiToolbarButtonProps extends React_3.HTMLAttributes<H
3886
4115
  disabled?: boolean;
3887
4116
  isActive?: boolean;
3888
4117
  type: 'icon' | 'menu' | 'tool';
4118
+ tooltip?: string;
3889
4119
  }
3890
4120
 
3891
4121
  /** @public */
@@ -3894,6 +4124,8 @@ export declare interface TLUiToolbarProps extends React_3.HTMLAttributes<HTMLDiv
3894
4124
  className?: string;
3895
4125
  dir?: 'ltr' | 'rtl';
3896
4126
  label: string;
4127
+ orientation?: 'grid' | 'horizontal' | 'vertical';
4128
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3897
4129
  }
3898
4130
 
3899
4131
  /** @public */
@@ -3912,6 +4144,7 @@ export declare interface TLUiToolbarToggleItemProps extends React_3.HTMLAttribut
3912
4144
  className?: string;
3913
4145
  type: 'icon' | 'tool';
3914
4146
  value: string;
4147
+ tooltip?: string;
3915
4148
  }
3916
4149
 
3917
4150
  /** @public */
@@ -3921,6 +4154,7 @@ export declare interface TLUiToolItem<TranslationKey extends string = string, Ic
3921
4154
  shortcutsLabel?: TranslationKey;
3922
4155
  icon: IconType | TLUiIconJsx;
3923
4156
  onSelect(source: TLUiEventSource): void;
4157
+ onDragStart?(source: TLUiEventSource, info: TLPointerEventInfo): void;
3924
4158
  /**
3925
4159
  * The keyboard shortcut for this tool. This is a string that can be a single key,
3926
4160
  * or a combination of keys.
@@ -3956,7 +4190,7 @@ export declare interface TLUiTranslation {
3956
4190
  export declare type TLUiTranslationContextType = TLUiTranslation;
3957
4191
 
3958
4192
  /** @public */
3959
- export declare type TLUiTranslationKey = 'a11y.adjust-shape-styles' | 'a11y.enlarge-shape' | 'a11y.enter-leave-container' | 'a11y.move-shape-faster' | 'a11y.move-shape' | 'a11y.multiple-shapes' | 'a11y.open-context-menu' | 'a11y.open-keyboard-shortcuts' | 'a11y.pan-camera' | 'a11y.repeat-shape' | 'a11y.select-shape-direction' | 'a11y.select-shape' | 'a11y.shape-image' | 'a11y.shape-index' | 'a11y.shape-video' | 'a11y.shrink-shape' | 'a11y.skip-to-main-content' | 'a11y.status' | 'action.align-bottom' | 'action.align-center-horizontal.short' | 'action.align-center-horizontal' | 'action.align-center-vertical.short' | 'action.align-center-vertical' | 'action.align-left' | 'action.align-right' | 'action.align-top' | 'action.back-to-content' | 'action.bring-forward' | 'action.bring-to-front' | 'action.convert-to-bookmark' | 'action.convert-to-embed' | 'action.copy-as-png.short' | 'action.copy-as-png' | 'action.copy-as-svg.short' | 'action.copy-as-svg' | 'action.copy' | 'action.cut' | 'action.delete' | 'action.distribute-horizontal.short' | 'action.distribute-horizontal' | 'action.distribute-vertical.short' | 'action.distribute-vertical' | 'action.download-original' | 'action.duplicate' | 'action.edit-link' | 'action.exit-pen-mode' | 'action.export-all-as-png.short' | 'action.export-all-as-png' | 'action.export-all-as-svg.short' | 'action.export-all-as-svg' | 'action.export-as-png.short' | 'action.export-as-png' | 'action.export-as-svg.short' | 'action.export-as-svg' | 'action.fit-frame-to-content' | 'action.flatten-to-image' | 'action.flip-horizontal.short' | 'action.flip-horizontal' | 'action.flip-vertical.short' | 'action.flip-vertical' | 'action.fork-project-on-tldraw' | 'action.fork-project' | 'action.group' | 'action.insert-embed' | 'action.insert-media' | 'action.leave-shared-project' | 'action.new-project' | 'action.new-shared-project' | 'action.open-cursor-chat' | 'action.open-embed-link' | 'action.open-file' | 'action.open-kbd-shortcuts' | 'action.pack' | 'action.paste-error-description' | 'action.paste-error-title' | 'action.paste' | 'action.print' | 'action.redo' | 'action.remove-frame' | 'action.rename' | 'action.rotate-ccw' | 'action.rotate-cw' | 'action.save-copy' | 'action.select-all' | 'action.select-none' | 'action.send-backward' | 'action.send-to-back' | 'action.share-project' | 'action.stack-horizontal.short' | 'action.stack-horizontal' | 'action.stack-vertical.short' | 'action.stack-vertical' | 'action.stop-following' | 'action.stretch-horizontal.short' | 'action.stretch-horizontal' | 'action.stretch-vertical.short' | 'action.stretch-vertical' | 'action.toggle-auto-size' | 'action.toggle-dark-mode.menu' | 'action.toggle-dark-mode' | 'action.toggle-debug-mode.menu' | 'action.toggle-debug-mode' | 'action.toggle-dynamic-size-mode.menu' | 'action.toggle-dynamic-size-mode' | 'action.toggle-edge-scrolling.menu' | 'action.toggle-edge-scrolling' | 'action.toggle-focus-mode.menu' | 'action.toggle-focus-mode' | 'action.toggle-grid.menu' | 'action.toggle-grid' | 'action.toggle-keyboard-shortcuts.menu' | 'action.toggle-keyboard-shortcuts' | 'action.toggle-lock' | 'action.toggle-paste-at-cursor.menu' | 'action.toggle-paste-at-cursor' | 'action.toggle-reduce-motion.menu' | 'action.toggle-reduce-motion' | 'action.toggle-snap-mode.menu' | 'action.toggle-snap-mode' | 'action.toggle-tool-lock.menu' | 'action.toggle-tool-lock' | 'action.toggle-transparent.context-menu' | 'action.toggle-transparent.menu' | 'action.toggle-transparent' | 'action.toggle-wrap-mode.menu' | 'action.toggle-wrap-mode' | 'action.undo' | 'action.ungroup' | 'action.unlock-all' | 'action.zoom-in' | 'action.zoom-out' | 'action.zoom-to-100' | 'action.zoom-to-fit' | 'action.zoom-to-selection' | 'actions-menu.title' | 'align-style.end' | 'align-style.justify' | 'align-style.middle' | 'align-style.start' | 'app.loading' | 'arrow-kind-style.arc' | 'arrow-kind-style.elbow' | 'arrowheadEnd-style.arrow' | 'arrowheadEnd-style.bar' | 'arrowheadEnd-style.diamond' | 'arrowheadEnd-style.dot' | 'arrowheadEnd-style.inverted' | 'arrowheadEnd-style.none' | 'arrowheadEnd-style.pipe' | 'arrowheadEnd-style.square' | 'arrowheadEnd-style.triangle' | 'arrowheadStart-style.arrow' | 'arrowheadStart-style.bar' | 'arrowheadStart-style.diamond' | 'arrowheadStart-style.dot' | 'arrowheadStart-style.inverted' | 'arrowheadStart-style.none' | 'arrowheadStart-style.pipe' | 'arrowheadStart-style.square' | 'arrowheadStart-style.triangle' | 'assets.files.amount-too-many' | 'assets.files.size-too-big' | 'assets.files.type-not-allowed' | 'assets.files.upload-failed' | 'assets.url.failed' | 'color-style.black' | 'color-style.blue' | 'color-style.green' | 'color-style.grey' | 'color-style.light-blue' | 'color-style.light-green' | 'color-style.light-red' | 'color-style.light-violet' | 'color-style.orange' | 'color-style.red' | 'color-style.violet' | 'color-style.white' | 'color-style.yellow' | 'context-menu.arrange' | 'context-menu.copy-as' | 'context-menu.edit' | 'context-menu.export-all-as' | 'context-menu.export-as' | 'context-menu.move-to-page' | 'context-menu.reorder' | 'context-menu.title' | 'context.pages.new-page' | 'cursor-chat.type-to-chat' | 'dash-style.dashed' | 'dash-style.dotted' | 'dash-style.draw' | 'dash-style.solid' | 'document-name-menu.copy-link' | 'document.default-name' | 'edit-link-dialog.cancel' | 'edit-link-dialog.clear' | 'edit-link-dialog.detail' | 'edit-link-dialog.external-link' | 'edit-link-dialog.invalid-url' | 'edit-link-dialog.save' | 'edit-link-dialog.title' | 'edit-link-dialog.url' | 'embed-dialog.back' | 'embed-dialog.cancel' | 'embed-dialog.create' | 'embed-dialog.instruction' | 'embed-dialog.invalid-url' | 'embed-dialog.title' | 'embed-dialog.url' | 'file-system.confirm-clear.cancel' | 'file-system.confirm-clear.continue' | 'file-system.confirm-clear.description' | 'file-system.confirm-clear.dont-show-again' | 'file-system.confirm-clear.title' | 'file-system.confirm-open.cancel' | 'file-system.confirm-open.description' | 'file-system.confirm-open.dont-show-again' | 'file-system.confirm-open.open' | 'file-system.confirm-open.title' | 'file-system.file-open-error.file-format-version-too-new' | 'file-system.file-open-error.generic-corrupted-file' | 'file-system.file-open-error.not-a-tldraw-file' | 'file-system.file-open-error.title' | 'file-system.shared-document-file-open-error.description' | 'file-system.shared-document-file-open-error.title' | 'fill-style.fill' | 'fill-style.none' | 'fill-style.pattern' | 'fill-style.semi' | 'fill-style.solid' | 'focus-mode.toggle-focus-mode' | 'font-style.draw' | 'font-style.mono' | 'font-style.sans' | 'font-style.serif' | 'geo-style.arrow-down' | 'geo-style.arrow-left' | 'geo-style.arrow-right' | 'geo-style.arrow-up' | 'geo-style.check-box' | 'geo-style.cloud' | 'geo-style.diamond' | 'geo-style.ellipse' | 'geo-style.heart' | 'geo-style.hexagon' | 'geo-style.octagon' | 'geo-style.oval' | 'geo-style.pentagon' | 'geo-style.rectangle' | 'geo-style.rhombus' | 'geo-style.star' | 'geo-style.trapezoid' | 'geo-style.triangle' | 'geo-style.x-box' | 'handle.crop.bottom-left' | 'handle.crop.bottom-right' | 'handle.crop.bottom' | 'handle.crop.left' | 'handle.crop.right' | 'handle.crop.top-left' | 'handle.crop.top-right' | 'handle.crop.top' | 'handle.resize-bottom-left' | 'handle.resize-bottom-right' | 'handle.resize-bottom' | 'handle.resize-left' | 'handle.resize-right' | 'handle.resize-top-left' | 'handle.resize-top-right' | 'handle.resize-top' | 'handle.rotate.bottom_left_rotate' | 'handle.rotate.bottom_right_rotate' | 'handle.rotate.mobile_rotate' | 'handle.rotate.top_left_rotate' | 'handle.rotate.top_right_rotate' | 'help-menu.about' | 'help-menu.discord' | 'help-menu.github' | 'help-menu.import-tldr-file' | 'help-menu.keyboard-shortcuts' | 'help-menu.privacy' | 'help-menu.terms' | 'help-menu.title' | 'help-menu.twitter' | 'menu.copy-as' | 'menu.edit' | 'menu.export-as' | 'menu.file' | 'menu.language' | 'menu.preferences' | 'menu.theme' | 'menu.title' | 'menu.view' | 'navigation-zone.minimap' | 'navigation-zone.title' | 'navigation-zone.toggle-minimap' | 'navigation-zone.zoom' | 'opacity-style.0.1' | 'opacity-style.0.25' | 'opacity-style.0.5' | 'opacity-style.0.75' | 'opacity-style.1' | 'page-menu.create-new-page' | 'page-menu.edit-done' | 'page-menu.edit-start' | 'page-menu.go-to-page' | 'page-menu.max-page-count-reached' | 'page-menu.new-page-initial-name' | 'page-menu.submenu.delete' | 'page-menu.submenu.duplicate-page' | 'page-menu.submenu.move-down' | 'page-menu.submenu.move-up' | 'page-menu.submenu.rename' | 'page-menu.submenu.title' | 'page-menu.title' | 'people-menu.anonymous-user' | 'people-menu.avatar-color' | 'people-menu.change-color' | 'people-menu.change-name' | 'people-menu.follow' | 'people-menu.following' | 'people-menu.invite' | 'people-menu.leading' | 'people-menu.title' | 'people-menu.user' | 'share-menu.copied' | 'share-menu.copy-link-note' | 'share-menu.copy-link' | 'share-menu.copy-readonly-link-note' | 'share-menu.copy-readonly-link' | 'share-menu.create-snapshot-link' | 'share-menu.creating-project' | 'share-menu.fork-note' | 'share-menu.offline-note' | 'share-menu.project-too-large' | 'share-menu.save-note' | 'share-menu.share-project' | 'share-menu.snapshot-link-note' | 'share-menu.title' | 'share-menu.upload-failed' | 'sharing.confirm-leave.cancel' | 'sharing.confirm-leave.description' | 'sharing.confirm-leave.dont-show-again' | 'sharing.confirm-leave.leave' | 'sharing.confirm-leave.title' | 'shortcuts-dialog.a11y' | 'shortcuts-dialog.collaboration' | 'shortcuts-dialog.edit' | 'shortcuts-dialog.file' | 'shortcuts-dialog.preferences' | 'shortcuts-dialog.text-formatting' | 'shortcuts-dialog.title' | 'shortcuts-dialog.tools' | 'shortcuts-dialog.transform' | 'shortcuts-dialog.view' | 'size-style.l' | 'size-style.m' | 'size-style.s' | 'size-style.xl' | 'spline-style.cubic' | 'spline-style.line' | 'status.offline' | 'style-panel.align' | 'style-panel.arrow-kind' | 'style-panel.arrowhead-end' | 'style-panel.arrowhead-start' | 'style-panel.arrowheads' | 'style-panel.color' | 'style-panel.dash' | 'style-panel.fill' | 'style-panel.font' | 'style-panel.geo' | 'style-panel.label-align' | 'style-panel.mixed' | 'style-panel.opacity' | 'style-panel.position' | 'style-panel.size' | 'style-panel.spline' | 'style-panel.title' | 'style-panel.vertical-align' | 'theme.dark' | 'theme.light' | 'theme.system' | 'toast.close' | 'toast.error.copy-fail.desc' | 'toast.error.copy-fail.title' | 'toast.error.export-fail.desc' | 'toast.error.export-fail.title' | 'toast.error' | 'toast.info' | 'toast.success' | 'toast.warning' | 'tool-panel.more' | 'tool-panel.title' | 'tool.arrow-down' | 'tool.arrow-left' | 'tool.arrow-right' | 'tool.arrow-up' | 'tool.arrow' | 'tool.aspect-ratio.circle' | 'tool.aspect-ratio.landscape' | 'tool.aspect-ratio.original' | 'tool.aspect-ratio.portrait' | 'tool.aspect-ratio.square' | 'tool.aspect-ratio.wide' | 'tool.aspect-ratio' | 'tool.bookmark' | 'tool.check-box' | 'tool.cloud' | 'tool.diamond' | 'tool.draw' | 'tool.ellipse' | 'tool.embed' | 'tool.eraser' | 'tool.flip-horz' | 'tool.flip-vert' | 'tool.frame' | 'tool.hand' | 'tool.heart' | 'tool.hexagon' | 'tool.highlight' | 'tool.image-crop' | 'tool.image-toolbar-title' | 'tool.image-zoom' | 'tool.laser' | 'tool.line' | 'tool.media-alt-text-confirm' | 'tool.media-alt-text-desc' | 'tool.media-alt-text' | 'tool.media' | 'tool.note' | 'tool.octagon' | 'tool.oval' | 'tool.pentagon' | 'tool.pointer-down' | 'tool.rectangle' | 'tool.replace-media' | 'tool.rhombus' | 'tool.rich-text-bold' | 'tool.rich-text-bulletList' | 'tool.rich-text-code' | 'tool.rich-text-header' | 'tool.rich-text-highlight' | 'tool.rich-text-italic' | 'tool.rich-text-link-remove' | 'tool.rich-text-link-visit' | 'tool.rich-text-link' | 'tool.rich-text-orderedList' | 'tool.rich-text-strikethrough' | 'tool.rich-text-toolbar-title' | 'tool.rotate-cw' | 'tool.select' | 'tool.star' | 'tool.text' | 'tool.trapezoid' | 'tool.triangle' | 'tool.x-box' | 'ui.checked' | 'ui.close' | 'ui.unchecked' | 'verticalAlign-style.end' | 'verticalAlign-style.middle' | 'verticalAlign-style.start' | 'vscode.file-open.backup-failed' | 'vscode.file-open.backup-saved' | 'vscode.file-open.backup' | 'vscode.file-open.desc' | 'vscode.file-open.dont-show-again' | 'vscode.file-open.open';
4193
+ export declare type TLUiTranslationKey = 'a11y.adjust-shape-styles' | 'a11y.enlarge-shape' | 'a11y.enter-leave-container' | 'a11y.move-shape-faster' | 'a11y.move-shape' | 'a11y.multiple-shapes' | 'a11y.open-context-menu' | 'a11y.open-keyboard-shortcuts' | 'a11y.pan-camera' | 'a11y.repeat-shape' | 'a11y.rotate-shape-ccw-fine' | 'a11y.rotate-shape-ccw' | 'a11y.rotate-shape-cw-fine' | 'a11y.rotate-shape-cw' | 'a11y.select-shape-direction' | 'a11y.select-shape' | 'a11y.shape-image' | 'a11y.shape-index' | 'a11y.shape-video' | 'a11y.shrink-shape' | 'a11y.skip-to-main-content' | 'a11y.status' | 'action.align-bottom' | 'action.align-center-horizontal.short' | 'action.align-center-horizontal' | 'action.align-center-vertical.short' | 'action.align-center-vertical' | 'action.align-left' | 'action.align-right' | 'action.align-top' | 'action.back-to-content' | 'action.bring-forward' | 'action.bring-to-front' | 'action.convert-to-bookmark' | 'action.convert-to-embed' | 'action.copy-as-png.short' | 'action.copy-as-png' | 'action.copy-as-svg.short' | 'action.copy-as-svg' | 'action.copy' | 'action.cut' | 'action.delete' | 'action.distribute-horizontal.short' | 'action.distribute-horizontal' | 'action.distribute-vertical.short' | 'action.distribute-vertical' | 'action.download-original' | 'action.duplicate' | 'action.edit-link' | 'action.exit-pen-mode' | 'action.export-all-as-png.short' | 'action.export-all-as-png' | 'action.export-all-as-svg.short' | 'action.export-all-as-svg' | 'action.export-as-png.short' | 'action.export-as-png' | 'action.export-as-svg.short' | 'action.export-as-svg' | 'action.fit-frame-to-content' | 'action.flatten-to-image' | 'action.flip-horizontal.short' | 'action.flip-horizontal' | 'action.flip-vertical.short' | 'action.flip-vertical' | 'action.fork-project-on-tldraw' | 'action.fork-project' | 'action.group' | 'action.insert-embed' | 'action.insert-media' | 'action.leave-shared-project' | 'action.new-project' | 'action.new-shared-project' | 'action.open-cursor-chat' | 'action.open-embed-link' | 'action.open-file' | 'action.open-kbd-shortcuts' | 'action.pack' | 'action.paste-error-description' | 'action.paste-error-title' | 'action.paste' | 'action.print' | 'action.redo' | 'action.remove-frame' | 'action.rename' | 'action.rotate-ccw' | 'action.rotate-cw' | 'action.save-copy' | 'action.select-all' | 'action.select-none' | 'action.send-backward' | 'action.send-to-back' | 'action.share-project' | 'action.stack-horizontal.short' | 'action.stack-horizontal' | 'action.stack-vertical.short' | 'action.stack-vertical' | 'action.stop-following' | 'action.stretch-horizontal.short' | 'action.stretch-horizontal' | 'action.stretch-vertical.short' | 'action.stretch-vertical' | 'action.toggle-auto-size' | 'action.toggle-dark-mode.menu' | 'action.toggle-dark-mode' | 'action.toggle-debug-mode.menu' | 'action.toggle-debug-mode' | 'action.toggle-dynamic-size-mode.menu' | 'action.toggle-dynamic-size-mode' | 'action.toggle-edge-scrolling.menu' | 'action.toggle-edge-scrolling' | 'action.toggle-focus-mode.menu' | 'action.toggle-focus-mode' | 'action.toggle-grid.menu' | 'action.toggle-grid' | 'action.toggle-keyboard-shortcuts.menu' | 'action.toggle-keyboard-shortcuts' | 'action.toggle-lock' | 'action.toggle-paste-at-cursor.menu' | 'action.toggle-paste-at-cursor' | 'action.toggle-reduce-motion.menu' | 'action.toggle-reduce-motion' | 'action.toggle-snap-mode.menu' | 'action.toggle-snap-mode' | 'action.toggle-tool-lock.menu' | 'action.toggle-tool-lock' | 'action.toggle-transparent.context-menu' | 'action.toggle-transparent.menu' | 'action.toggle-transparent' | 'action.toggle-ui-labels.menu' | 'action.toggle-ui-labels' | 'action.toggle-wrap-mode.menu' | 'action.toggle-wrap-mode' | 'action.undo' | 'action.ungroup' | 'action.unlock-all' | 'action.zoom-in' | 'action.zoom-out' | 'action.zoom-to-100' | 'action.zoom-to-fit' | 'action.zoom-to-selection' | 'actions-menu.title' | 'align-style.end' | 'align-style.justify' | 'align-style.middle' | 'align-style.start' | 'app.loading' | 'arrow-kind-style.arc' | 'arrow-kind-style.elbow' | 'arrowheadEnd-style.arrow' | 'arrowheadEnd-style.bar' | 'arrowheadEnd-style.diamond' | 'arrowheadEnd-style.dot' | 'arrowheadEnd-style.inverted' | 'arrowheadEnd-style.none' | 'arrowheadEnd-style.pipe' | 'arrowheadEnd-style.square' | 'arrowheadEnd-style.triangle' | 'arrowheadStart-style.arrow' | 'arrowheadStart-style.bar' | 'arrowheadStart-style.diamond' | 'arrowheadStart-style.dot' | 'arrowheadStart-style.inverted' | 'arrowheadStart-style.none' | 'arrowheadStart-style.pipe' | 'arrowheadStart-style.square' | 'arrowheadStart-style.triangle' | 'assets.files.amount-too-many' | 'assets.files.size-too-big' | 'assets.files.type-not-allowed' | 'assets.files.upload-failed' | 'assets.url.failed' | 'color-style.black' | 'color-style.blue' | 'color-style.green' | 'color-style.grey' | 'color-style.light-blue' | 'color-style.light-green' | 'color-style.light-red' | 'color-style.light-violet' | 'color-style.orange' | 'color-style.red' | 'color-style.violet' | 'color-style.white' | 'color-style.yellow' | 'context-menu.arrange' | 'context-menu.copy-as' | 'context-menu.edit' | 'context-menu.export-all-as' | 'context-menu.export-as' | 'context-menu.move-to-page' | 'context-menu.reorder' | 'context-menu.title' | 'context.pages.new-page' | 'cursor-chat.type-to-chat' | 'dash-style.dashed' | 'dash-style.dotted' | 'dash-style.draw' | 'dash-style.solid' | 'document-name-menu.copy-link' | 'document.default-name' | 'edit-link-dialog.cancel' | 'edit-link-dialog.clear' | 'edit-link-dialog.detail' | 'edit-link-dialog.external-link' | 'edit-link-dialog.invalid-url' | 'edit-link-dialog.save' | 'edit-link-dialog.title' | 'edit-link-dialog.url' | 'embed-dialog.back' | 'embed-dialog.cancel' | 'embed-dialog.create' | 'embed-dialog.instruction' | 'embed-dialog.invalid-url' | 'embed-dialog.title' | 'embed-dialog.url' | 'file-system.confirm-clear.cancel' | 'file-system.confirm-clear.continue' | 'file-system.confirm-clear.description' | 'file-system.confirm-clear.dont-show-again' | 'file-system.confirm-clear.title' | 'file-system.confirm-open.cancel' | 'file-system.confirm-open.description' | 'file-system.confirm-open.dont-show-again' | 'file-system.confirm-open.open' | 'file-system.confirm-open.title' | 'file-system.file-open-error.file-format-version-too-new' | 'file-system.file-open-error.generic-corrupted-file' | 'file-system.file-open-error.not-a-tldraw-file' | 'file-system.file-open-error.title' | 'file-system.shared-document-file-open-error.description' | 'file-system.shared-document-file-open-error.title' | 'fill-style.fill' | 'fill-style.none' | 'fill-style.pattern' | 'fill-style.semi' | 'fill-style.solid' | 'focus-mode.toggle-focus-mode' | 'font-style.draw' | 'font-style.mono' | 'font-style.sans' | 'font-style.serif' | 'geo-style.arrow-down' | 'geo-style.arrow-left' | 'geo-style.arrow-right' | 'geo-style.arrow-up' | 'geo-style.check-box' | 'geo-style.cloud' | 'geo-style.diamond' | 'geo-style.ellipse' | 'geo-style.heart' | 'geo-style.hexagon' | 'geo-style.octagon' | 'geo-style.oval' | 'geo-style.pentagon' | 'geo-style.rectangle' | 'geo-style.rhombus-2' | 'geo-style.rhombus' | 'geo-style.star' | 'geo-style.trapezoid' | 'geo-style.triangle' | 'geo-style.x-box' | 'handle.crop.bottom-left' | 'handle.crop.bottom-right' | 'handle.crop.bottom' | 'handle.crop.left' | 'handle.crop.right' | 'handle.crop.top-left' | 'handle.crop.top-right' | 'handle.crop.top' | 'handle.resize-bottom-left' | 'handle.resize-bottom-right' | 'handle.resize-bottom' | 'handle.resize-left' | 'handle.resize-right' | 'handle.resize-top-left' | 'handle.resize-top-right' | 'handle.resize-top' | 'handle.rotate.bottom_left_rotate' | 'handle.rotate.bottom_right_rotate' | 'handle.rotate.mobile_rotate' | 'handle.rotate.top_left_rotate' | 'handle.rotate.top_right_rotate' | 'help-menu.about' | 'help-menu.discord' | 'help-menu.github' | 'help-menu.import-tldr-file' | 'help-menu.keyboard-shortcuts' | 'help-menu.privacy' | 'help-menu.terms' | 'help-menu.title' | 'help-menu.twitter' | 'menu.accessibility' | 'menu.copy-as' | 'menu.edit' | 'menu.export-as' | 'menu.file' | 'menu.language' | 'menu.preferences' | 'menu.theme' | 'menu.title' | 'menu.view' | 'navigation-zone.minimap' | 'navigation-zone.title' | 'navigation-zone.toggle-minimap' | 'navigation-zone.zoom' | 'opacity-style.0.1' | 'opacity-style.0.25' | 'opacity-style.0.5' | 'opacity-style.0.75' | 'opacity-style.1' | 'page-menu.create-new-page' | 'page-menu.edit-done' | 'page-menu.edit-start' | 'page-menu.go-to-page' | 'page-menu.max-page-count-reached' | 'page-menu.new-page-initial-name' | 'page-menu.submenu.delete' | 'page-menu.submenu.duplicate-page' | 'page-menu.submenu.move-down' | 'page-menu.submenu.move-up' | 'page-menu.submenu.rename' | 'page-menu.submenu.title' | 'page-menu.title' | 'people-menu.anonymous-user' | 'people-menu.avatar-color' | 'people-menu.change-color' | 'people-menu.change-name' | 'people-menu.follow' | 'people-menu.following' | 'people-menu.invite' | 'people-menu.leading' | 'people-menu.title' | 'people-menu.user' | 'share-menu.copied' | 'share-menu.copy-link-note' | 'share-menu.copy-link' | 'share-menu.copy-readonly-link-note' | 'share-menu.copy-readonly-link' | 'share-menu.create-snapshot-link' | 'share-menu.creating-project' | 'share-menu.fork-note' | 'share-menu.offline-note' | 'share-menu.project-too-large' | 'share-menu.save-note' | 'share-menu.share-project' | 'share-menu.snapshot-link-note' | 'share-menu.title' | 'share-menu.upload-failed' | 'sharing.confirm-leave.cancel' | 'sharing.confirm-leave.description' | 'sharing.confirm-leave.dont-show-again' | 'sharing.confirm-leave.leave' | 'sharing.confirm-leave.title' | 'shortcuts-dialog.a11y' | 'shortcuts-dialog.collaboration' | 'shortcuts-dialog.edit' | 'shortcuts-dialog.file' | 'shortcuts-dialog.preferences' | 'shortcuts-dialog.text-formatting' | 'shortcuts-dialog.title' | 'shortcuts-dialog.tools' | 'shortcuts-dialog.transform' | 'shortcuts-dialog.view' | 'size-style.l' | 'size-style.m' | 'size-style.s' | 'size-style.xl' | 'spline-style.cubic' | 'spline-style.line' | 'status.offline' | 'style-panel.align' | 'style-panel.arrow-kind' | 'style-panel.arrowhead-end' | 'style-panel.arrowhead-start' | 'style-panel.arrowheads' | 'style-panel.color' | 'style-panel.dash' | 'style-panel.fill' | 'style-panel.font' | 'style-panel.geo' | 'style-panel.label-align' | 'style-panel.mixed' | 'style-panel.opacity' | 'style-panel.position' | 'style-panel.size' | 'style-panel.spline' | 'style-panel.title' | 'style-panel.vertical-align' | 'theme.dark' | 'theme.light' | 'theme.system' | 'toast.close' | 'toast.error.copy-fail.desc' | 'toast.error.copy-fail.title' | 'toast.error.export-fail.desc' | 'toast.error.export-fail.title' | 'toast.error' | 'toast.info' | 'toast.success' | 'toast.warning' | 'tool-panel.more' | 'tool-panel.title' | 'tool.arrow-down' | 'tool.arrow-left' | 'tool.arrow-right' | 'tool.arrow-up' | 'tool.arrow' | 'tool.aspect-ratio.circle' | 'tool.aspect-ratio.landscape' | 'tool.aspect-ratio.original' | 'tool.aspect-ratio.portrait' | 'tool.aspect-ratio.square' | 'tool.aspect-ratio.wide' | 'tool.aspect-ratio' | 'tool.bookmark' | 'tool.check-box' | 'tool.cloud' | 'tool.diamond' | 'tool.draw' | 'tool.ellipse' | 'tool.embed' | 'tool.eraser' | 'tool.flip-horz' | 'tool.flip-vert' | 'tool.frame' | 'tool.hand' | 'tool.heart' | 'tool.hexagon' | 'tool.highlight' | 'tool.image-crop' | 'tool.image-toolbar-title' | 'tool.image-zoom' | 'tool.laser' | 'tool.line' | 'tool.media-alt-text-confirm' | 'tool.media-alt-text-desc' | 'tool.media-alt-text' | 'tool.media' | 'tool.note' | 'tool.octagon' | 'tool.oval' | 'tool.pentagon' | 'tool.pointer-down' | 'tool.rectangle' | 'tool.replace-media' | 'tool.rhombus' | 'tool.rich-text-bold' | 'tool.rich-text-bulletList' | 'tool.rich-text-code' | 'tool.rich-text-header' | 'tool.rich-text-highlight' | 'tool.rich-text-italic' | 'tool.rich-text-link-remove' | 'tool.rich-text-link-visit' | 'tool.rich-text-link' | 'tool.rich-text-orderedList' | 'tool.rich-text-strikethrough' | 'tool.rich-text-toolbar-title' | 'tool.rotate-cw' | 'tool.select' | 'tool.star' | 'tool.text' | 'tool.trapezoid' | 'tool.triangle' | 'tool.x-box' | 'ui.checked' | 'ui.close' | 'ui.unchecked' | 'verticalAlign-style.end' | 'verticalAlign-style.middle' | 'verticalAlign-style.start' | 'vscode.file-open.backup-failed' | 'vscode.file-open.backup-saved' | 'vscode.file-open.backup' | 'vscode.file-open.desc' | 'vscode.file-open.dont-show-again' | 'vscode.file-open.open';
3960
4194
 
3961
4195
  /** @public */
3962
4196
  export declare interface TLUiTranslationProviderProps {
@@ -4083,12 +4317,23 @@ export declare function ToggleReduceMotionItem(): JSX_2.Element;
4083
4317
  /** @public @react */
4084
4318
  export declare function ToggleSnapModeItem(): JSX_2.Element;
4085
4319
 
4320
+ /** @public @react */
4321
+ export declare function ToggleToolLockedButton({ activeToolId }: ToggleToolLockedButtonProps): JSX_2.Element | null;
4322
+
4323
+ /** @public */
4324
+ export declare interface ToggleToolLockedButtonProps {
4325
+ activeToolId?: string;
4326
+ }
4327
+
4086
4328
  /** @public @react */
4087
4329
  export declare function ToggleToolLockItem(): JSX_2.Element;
4088
4330
 
4089
4331
  /** @public @react */
4090
4332
  export declare function ToggleTransparentBgMenuItem(): JSX_2.Element;
4091
4333
 
4334
+ /** @public @react */
4335
+ export declare function ToggleUiLabelsItem(): JSX_2.Element;
4336
+
4092
4337
  /** @public @react */
4093
4338
  export declare function ToggleWrapModeItem(): JSX_2.Element;
4094
4339
 
@@ -4322,6 +4567,9 @@ export declare function useShowCollaborationUi(): boolean;
4322
4567
  /** @public */
4323
4568
  export declare function useTldrawUiComponents(): TLUiComponents;
4324
4569
 
4570
+ /** @public */
4571
+ export declare function useTldrawUiOrientation(): TldrawUiOrientationContext;
4572
+
4325
4573
  /** @public */
4326
4574
  export declare function useToasts(): TLUiToastsContextType;
4327
4575
 
@@ -4345,6 +4593,12 @@ export declare function useTranslation(): (id?: Exclude<string, TLUiTranslationK
4345
4593
  /** @public */
4346
4594
  export declare function useUiEvents(): TLUiEventContextType;
4347
4595
 
4596
+ /**
4597
+ * Returns true if the number of UNLOCKED selected shapes is at least min or at most max.
4598
+ * @public
4599
+ */
4600
+ export declare function useUnlockedSelectedShapesCount(min?: number, max?: number): boolean | number;
4601
+
4348
4602
  /** @public */
4349
4603
  export declare interface VideoShapeOptions {
4350
4604
  /**