tldraw 3.15.0-next.f1dfcef63951 → 3.16.0-next.c30b1b5e551a

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 (247) hide show
  1. package/dist-cjs/index.d.ts +161 -95
  2. package/dist-cjs/index.js +42 -31
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawImage.js +5 -2
  5. package/dist-cjs/lib/TldrawImage.js.map +3 -3
  6. package/dist-cjs/lib/canvas/TldrawCropHandles.js +1 -1
  7. package/dist-cjs/lib/canvas/TldrawCropHandles.js.map +2 -2
  8. package/dist-cjs/lib/canvas/TldrawHandles.js +1 -1
  9. package/dist-cjs/lib/canvas/TldrawHandles.js.map +2 -2
  10. package/dist-cjs/lib/canvas/TldrawOverlays.js +1 -1
  11. package/dist-cjs/lib/canvas/TldrawOverlays.js.map +2 -2
  12. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +279 -271
  13. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +2 -2
  14. package/dist-cjs/lib/defaultExternalContentHandlers.js +1 -0
  15. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  16. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +22 -36
  17. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +16 -4
  19. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +2 -2
  20. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +3 -0
  21. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
  22. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +5 -5
  23. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  24. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +15 -1
  25. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  26. package/dist-cjs/lib/shapes/shared/PathBuilder.js +21 -3
  27. package/dist-cjs/lib/shapes/shared/PathBuilder.js.map +2 -2
  28. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -0
  29. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  30. package/dist-cjs/lib/shapes/shared/RichTextLabel.js +1 -0
  31. package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +2 -2
  32. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +5 -11
  33. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/styles.js.map +2 -2
  35. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +43 -22
  36. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  37. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +2 -15
  38. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
  39. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +5 -0
  40. package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +2 -2
  41. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +8 -0
  42. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
  43. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +8 -0
  44. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
  45. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +8 -0
  46. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  47. package/dist-cjs/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.js.map +2 -2
  48. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +51 -1
  49. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +2 -2
  50. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +1 -0
  51. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  52. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +3 -4
  53. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  54. package/dist-cjs/lib/ui/components/Spinner.js +2 -25
  55. package/dist-cjs/lib/ui/components/Spinner.js.map +2 -2
  56. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +2 -1
  57. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  58. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  59. package/dist-cjs/lib/ui/components/menu-items.js +16 -0
  60. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  61. package/dist-cjs/lib/ui/components/primitives/Button/TldrawUiButtonIcon.js.map +2 -2
  62. package/dist-cjs/lib/ui/components/primitives/TldrawUiDialog.js +1 -1
  63. package/dist-cjs/lib/ui/components/primitives/TldrawUiDialog.js.map +2 -2
  64. package/dist-cjs/lib/ui/components/primitives/TldrawUiIcon.js +35 -1
  65. package/dist-cjs/lib/ui/components/primitives/TldrawUiIcon.js.map +2 -2
  66. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +6 -2
  67. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  68. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +1 -0
  69. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  70. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js.map +2 -2
  71. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +0 -2
  72. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  73. package/dist-cjs/lib/ui/context/actions.js +42 -8
  74. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  75. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  76. package/dist-cjs/lib/ui/hooks/menu-hooks.js.map +2 -2
  77. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +24 -7
  78. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  79. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +2 -2
  80. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +2 -2
  81. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  82. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  83. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +8 -0
  84. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  85. package/dist-cjs/lib/ui/kbd-utils.js +2 -1
  86. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  87. package/dist-cjs/lib/ui/version.js +3 -3
  88. package/dist-cjs/lib/ui/version.js.map +1 -1
  89. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js +1 -1
  90. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +2 -2
  91. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +3 -2
  92. package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +2 -2
  93. package/dist-esm/index.d.mts +161 -95
  94. package/dist-esm/index.mjs +154 -135
  95. package/dist-esm/index.mjs.map +2 -2
  96. package/dist-esm/lib/TldrawImage.mjs +5 -2
  97. package/dist-esm/lib/TldrawImage.mjs.map +2 -2
  98. package/dist-esm/lib/canvas/TldrawCropHandles.mjs +1 -1
  99. package/dist-esm/lib/canvas/TldrawCropHandles.mjs.map +2 -2
  100. package/dist-esm/lib/canvas/TldrawHandles.mjs +1 -1
  101. package/dist-esm/lib/canvas/TldrawHandles.mjs.map +2 -2
  102. package/dist-esm/lib/canvas/TldrawOverlays.mjs +1 -1
  103. package/dist-esm/lib/canvas/TldrawOverlays.mjs.map +2 -2
  104. package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +279 -271
  105. package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +2 -2
  106. package/dist-esm/lib/defaultExternalContentHandlers.mjs +1 -0
  107. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  108. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +24 -36
  109. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  110. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +19 -5
  111. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +2 -2
  112. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +3 -0
  113. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
  114. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +5 -5
  115. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  116. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +15 -1
  117. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  118. package/dist-esm/lib/shapes/shared/PathBuilder.mjs +22 -3
  119. package/dist-esm/lib/shapes/shared/PathBuilder.mjs.map +2 -2
  120. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -0
  121. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  122. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +1 -0
  123. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
  124. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +5 -11
  125. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  126. package/dist-esm/lib/styles.mjs.map +2 -2
  127. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +43 -22
  128. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  129. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +2 -15
  130. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
  131. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +5 -0
  132. package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +2 -2
  133. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +8 -0
  134. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
  135. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +8 -0
  136. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
  137. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +8 -0
  138. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  139. package/dist-esm/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.mjs.map +2 -2
  140. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +51 -1
  141. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +2 -2
  142. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +2 -0
  143. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  144. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +3 -4
  145. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  146. package/dist-esm/lib/ui/components/Spinner.mjs +3 -26
  147. package/dist-esm/lib/ui/components/Spinner.mjs.map +2 -2
  148. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +2 -1
  149. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  150. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  151. package/dist-esm/lib/ui/components/menu-items.mjs +16 -0
  152. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  153. package/dist-esm/lib/ui/components/primitives/Button/TldrawUiButtonIcon.mjs.map +2 -2
  154. package/dist-esm/lib/ui/components/primitives/TldrawUiDialog.mjs +1 -1
  155. package/dist-esm/lib/ui/components/primitives/TldrawUiDialog.mjs.map +2 -2
  156. package/dist-esm/lib/ui/components/primitives/TldrawUiIcon.mjs +36 -2
  157. package/dist-esm/lib/ui/components/primitives/TldrawUiIcon.mjs.map +2 -2
  158. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +6 -2
  159. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  160. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +1 -0
  161. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  162. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs.map +2 -2
  163. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +0 -2
  164. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  165. package/dist-esm/lib/ui/context/actions.mjs +42 -8
  166. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  167. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  168. package/dist-esm/lib/ui/hooks/menu-hooks.mjs.map +2 -2
  169. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +24 -7
  170. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  171. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +2 -2
  172. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +2 -2
  173. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  174. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +8 -0
  175. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  176. package/dist-esm/lib/ui/kbd-utils.mjs +2 -1
  177. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  178. package/dist-esm/lib/ui/version.mjs +3 -3
  179. package/dist-esm/lib/ui/version.mjs.map +1 -1
  180. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs +1 -1
  181. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +2 -2
  182. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +3 -2
  183. package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +2 -2
  184. package/package.json +4 -3
  185. package/src/index.ts +174 -160
  186. package/src/lib/TldrawImage.tsx +6 -2
  187. package/src/lib/canvas/TldrawCropHandles.tsx +3 -1
  188. package/src/lib/canvas/TldrawHandles.tsx +5 -1
  189. package/src/lib/canvas/TldrawOverlays.tsx +1 -1
  190. package/src/lib/canvas/TldrawSelectionForeground.tsx +5 -1
  191. package/src/lib/defaultExternalContentHandlers.ts +2 -1
  192. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +5 -5
  193. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +25 -39
  194. package/src/lib/shapes/arrow/arrowLabel.ts +23 -3
  195. package/src/lib/shapes/arrow/toolStates/Pointing.tsx +3 -0
  196. package/src/lib/shapes/frame/FrameShapeUtil.tsx +5 -7
  197. package/src/lib/shapes/line/LineShapeUtil.tsx +19 -2
  198. package/src/lib/shapes/shared/PathBuilder.test.tsx +1 -1
  199. package/src/lib/shapes/shared/PathBuilder.tsx +35 -1
  200. package/src/lib/shapes/shared/PlainTextLabel.tsx +1 -0
  201. package/src/lib/shapes/shared/RichTextLabel.tsx +1 -0
  202. package/src/lib/shapes/text/TextShapeUtil.tsx +5 -12
  203. package/src/lib/styles.tsx +3 -1
  204. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +54 -30
  205. package/src/lib/tools/SelectTool/childStates/Idle.ts +2 -24
  206. package/src/lib/tools/SelectTool/childStates/PointingShape.ts +7 -0
  207. package/src/lib/tools/SelectTool/childStates/Resizing.ts +12 -1
  208. package/src/lib/tools/SelectTool/childStates/Rotating.ts +11 -0
  209. package/src/lib/tools/SelectTool/childStates/Translating.ts +11 -0
  210. package/src/lib/tools/selection-logic/getHitShapeOnCanvasPointerDown.ts +1 -0
  211. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +40 -0
  212. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +2 -0
  213. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +3 -4
  214. package/src/lib/ui/components/Spinner.tsx +2 -24
  215. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +1 -0
  216. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +3 -1
  217. package/src/lib/ui/components/menu-items.tsx +17 -0
  218. package/src/lib/ui/components/primitives/Button/TldrawUiButtonIcon.tsx +2 -2
  219. package/src/lib/ui/components/primitives/TldrawUiDialog.tsx +1 -1
  220. package/src/lib/ui/components/primitives/TldrawUiIcon.tsx +41 -3
  221. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +6 -1
  222. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +4 -0
  223. package/src/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.tsx +2 -2
  224. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +3 -4
  225. package/src/lib/ui/context/actions.tsx +44 -9
  226. package/src/lib/ui/context/events.tsx +4 -2
  227. package/src/lib/ui/hooks/menu-hooks.ts +1 -0
  228. package/src/lib/ui/hooks/useClipboardEvents.ts +31 -10
  229. package/src/lib/ui/hooks/useKeyboardShortcuts.ts +3 -2
  230. package/src/lib/ui/hooks/useTools.tsx +2 -1
  231. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +8 -0
  232. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +8 -0
  233. package/src/lib/ui/kbd-utils.ts +2 -1
  234. package/src/lib/ui/version.ts +3 -3
  235. package/src/lib/ui.css +8 -22
  236. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +16 -2
  237. package/src/lib/utils/excalidraw/putExcalidrawContent.ts +1 -1
  238. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +24 -3
  239. package/src/lib/utils/tldr/buildFromV1Document.ts +2 -1
  240. package/src/test/Editor.test.tsx +68 -1
  241. package/src/test/SelectTool.test.ts +37 -11
  242. package/src/test/commands/clipboard.test.ts +1 -1
  243. package/src/test/commands/deletePage.test.ts +84 -1
  244. package/src/test/navigation.test.ts +254 -0
  245. package/src/test/shapeutils.test.ts +394 -45
  246. package/tldraw.css +29 -49
  247. package/src/test/editor.test.ts +0 -77
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
-
3
1
  import { Atom } from '@tldraw/editor';
4
2
  import { BaseBoxShapeTool } from '@tldraw/editor';
5
3
  import { BaseBoxShapeUtil } from '@tldraw/editor';
@@ -10,7 +8,6 @@ import { BindingOnShapeIsolateOptions } from '@tldraw/editor';
10
8
  import { BindingUtil } from '@tldraw/editor';
11
9
  import { Box } from '@tldraw/editor';
12
10
  import { Circle2d } from '@tldraw/editor';
13
- import { ClipboardEvent as ClipboardEvent_2 } from 'react';
14
11
  import { ComponentType } from 'react';
15
12
  import { CSSProperties } from 'react';
16
13
  import { Editor } from '@tldraw/editor';
@@ -30,7 +27,6 @@ import { MigrationSequence } from '@tldraw/editor';
30
27
  import { NamedExoticComponent } from 'react';
31
28
  import { Node as Node_2 } from '@tiptap/pm/model';
32
29
  import { PerfectDashTerminal } from '@tldraw/editor';
33
- import { PointerEvent as PointerEvent_2 } from 'react';
34
30
  import { Polygon2d } from '@tldraw/editor';
35
31
  import { Polyline2d } from '@tldraw/editor';
36
32
  import * as React_2 from 'react';
@@ -68,12 +64,15 @@ import { TLBookmarkShapeProps } from '@tldraw/editor';
68
64
  import { TLClickEventInfo } from '@tldraw/editor';
69
65
  import { TLContent } from '@tldraw/editor';
70
66
  import { TLCropInfo } from '@tldraw/editor';
67
+ import { TLDefaultColorStyle } from '@tldraw/editor';
71
68
  import { TLDefaultColorTheme } from '@tldraw/editor';
72
69
  import { TLDefaultColorThemeColor } from '@tldraw/editor';
70
+ import { TLDefaultDashStyle } from '@tldraw/editor';
73
71
  import { TLDefaultFillStyle } from '@tldraw/editor';
74
72
  import { TLDefaultFontStyle } from '@tldraw/editor';
75
73
  import { TLDefaultHorizontalAlignStyle } from '@tldraw/editor';
76
74
  import { TLDefaultSizeStyle } from '@tldraw/editor';
75
+ import { TLDefaultTextAlignStyle } from '@tldraw/editor';
77
76
  import { TLDefaultVerticalAlignStyle } from '@tldraw/editor';
78
77
  import { TLDragShapesOutInfo } from '@tldraw/editor';
79
78
  import { TLDragShapesOverInfo } from '@tldraw/editor';
@@ -93,6 +92,7 @@ import { TLFrameShape } from '@tldraw/editor';
93
92
  import { TLFrameShapeProps } from '@tldraw/editor';
94
93
  import { TLGeometryOpts } from '@tldraw/editor';
95
94
  import { TLGeoShape } from '@tldraw/editor';
95
+ import { TLGeoShapeGeoStyle } from '@tldraw/editor';
96
96
  import { TLGeoShapeProps } from '@tldraw/editor';
97
97
  import { TLHandle } from '@tldraw/editor';
98
98
  import { TLHandleDragInfo } from '@tldraw/editor';
@@ -106,8 +106,10 @@ import { TLImageShapeProps } from '@tldraw/editor';
106
106
  import { TLKeyboardEventInfo } from '@tldraw/editor';
107
107
  import { TLLineShape } from '@tldraw/editor';
108
108
  import { TLLineShapePoint } from '@tldraw/editor';
109
+ import { TLLineShapeSplineStyle } from '@tldraw/editor';
109
110
  import { TLNoteShape } from '@tldraw/editor';
110
111
  import { TLNoteShapeProps } from '@tldraw/editor';
112
+ import { TLOpacityType } from '@tldraw/editor';
111
113
  import { TLPageId } from '@tldraw/editor';
112
114
  import { TLParentId } from '@tldraw/editor';
113
115
  import { TLPointerEventInfo } from '@tldraw/editor';
@@ -352,7 +354,6 @@ export declare class ArrowShapeUtil extends ShapeUtil<TLArrowShape> {
352
354
  component(shape: TLArrowShape): JSX_2.Element | null;
353
355
  indicator(shape: TLArrowShape): JSX_2.Element | null;
354
356
  onEditStart(shape: TLArrowShape): void;
355
- onEditEnd(shape: TLArrowShape): void;
356
357
  toSvg(shape: TLArrowShape, ctx: SvgExportContext): JSX_2.Element;
357
358
  getCanvasSvgDefs(): TLShapeUtilCanvasSvgDef[];
358
359
  getInterpolatedProps(startShape: TLArrowShape, endShape: TLArrowShape, progress: number): TLArrowShapeProps;
@@ -403,7 +404,7 @@ export declare class BookmarkShapeUtil extends BaseBoxShapeUtil<TLBookmarkShape>
403
404
  index: IndexKey;
404
405
  isLocked: boolean;
405
406
  meta: JsonObject;
406
- opacity: number;
407
+ opacity: TLOpacityType;
407
408
  parentId: TLParentId;
408
409
  props: {
409
410
  assetId: null | TLAssetId;
@@ -422,7 +423,7 @@ export declare class BookmarkShapeUtil extends BaseBoxShapeUtil<TLBookmarkShape>
422
423
  index: IndexKey;
423
424
  isLocked: boolean;
424
425
  meta: JsonObject;
425
- opacity: number;
426
+ opacity: TLOpacityType;
426
427
  parentId: TLParentId;
427
428
  props: {
428
429
  assetId: null | TLAssetId;
@@ -1064,8 +1065,8 @@ export declare function DistributeMenuItems(): JSX_2.Element;
1064
1065
  * @public
1065
1066
  */
1066
1067
  export declare function downsizeImage(blob: Blob, width: number, height: number, opts?: {
1067
- quality?: number | undefined;
1068
- type?: string | undefined;
1068
+ quality?: number;
1069
+ type?: string;
1069
1070
  }): Promise<Blob>;
1070
1071
 
1071
1072
  /** @public */
@@ -1634,26 +1635,23 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1634
1635
  index: IndexKey;
1635
1636
  isLocked: boolean;
1636
1637
  meta: JsonObject;
1637
- opacity: number;
1638
+ opacity: TLOpacityType;
1638
1639
  parentId: TLParentId;
1639
1640
  props: {
1640
- align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start";
1641
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1642
- dash: "dashed" | "dotted" | "draw" | "solid";
1643
- fill: "fill" | "none" | "pattern" | "semi" | "solid";
1644
- font: "draw" | "mono" | "sans" | "serif";
1645
- geo: "arrow-down" | "arrow-left" | "arrow-right" | "arrow-up" | "check-box" | "cloud" | "diamond" | "ellipse" | "heart" | "hexagon" | "octagon" | "oval" | "pentagon" | "rectangle" | "rhombus-2" | "rhombus" | "star" | "trapezoid" | "triangle" | "x-box";
1641
+ align: TLDefaultHorizontalAlignStyle;
1642
+ color: TLDefaultColorStyle;
1643
+ dash: TLDefaultDashStyle;
1644
+ fill: TLDefaultFillStyle;
1645
+ font: TLDefaultFontStyle;
1646
+ geo: TLGeoShapeGeoStyle;
1646
1647
  growY: number;
1647
1648
  h: number;
1648
- labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1649
- richText: {
1650
- content: unknown[];
1651
- type: string;
1652
- };
1649
+ labelColor: TLDefaultColorStyle;
1650
+ richText: TLRichText;
1653
1651
  scale: number;
1654
- size: "l" | "m" | "s" | "xl";
1652
+ size: TLDefaultSizeStyle;
1655
1653
  url: string;
1656
- verticalAlign: "end" | "middle" | "start";
1654
+ verticalAlign: TLDefaultVerticalAlignStyle;
1657
1655
  w: number;
1658
1656
  };
1659
1657
  rotation: number;
@@ -1667,26 +1665,23 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1667
1665
  index: IndexKey;
1668
1666
  isLocked: boolean;
1669
1667
  meta: JsonObject;
1670
- opacity: number;
1668
+ opacity: TLOpacityType;
1671
1669
  parentId: TLParentId;
1672
1670
  props: {
1673
- align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start";
1674
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1675
- dash: "dashed" | "dotted" | "draw" | "solid";
1676
- fill: "fill" | "none" | "pattern" | "semi" | "solid";
1677
- font: "draw" | "mono" | "sans" | "serif";
1678
- geo: "arrow-down" | "arrow-left" | "arrow-right" | "arrow-up" | "check-box" | "cloud" | "diamond" | "ellipse" | "heart" | "hexagon" | "octagon" | "oval" | "pentagon" | "rectangle" | "rhombus-2" | "rhombus" | "star" | "trapezoid" | "triangle" | "x-box";
1671
+ align: TLDefaultHorizontalAlignStyle;
1672
+ color: TLDefaultColorStyle;
1673
+ dash: TLDefaultDashStyle;
1674
+ fill: TLDefaultFillStyle;
1675
+ font: TLDefaultFontStyle;
1676
+ geo: TLGeoShapeGeoStyle;
1679
1677
  growY: number;
1680
1678
  h: number;
1681
- labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1682
- richText: {
1683
- content: unknown[];
1684
- type: string;
1685
- };
1679
+ labelColor: TLDefaultColorStyle;
1680
+ richText: TLRichText;
1686
1681
  scale: number;
1687
- size: "l" | "m" | "s" | "xl";
1682
+ size: TLDefaultSizeStyle;
1688
1683
  url: string;
1689
- verticalAlign: "end" | "middle" | "start";
1684
+ verticalAlign: TLDefaultVerticalAlignStyle;
1690
1685
  w: number;
1691
1686
  };
1692
1687
  rotation: number;
@@ -1700,7 +1695,7 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1700
1695
  index: IndexKey;
1701
1696
  isLocked: boolean;
1702
1697
  meta: JsonObject;
1703
- opacity: number;
1698
+ opacity: TLOpacityType;
1704
1699
  parentId: TLParentId;
1705
1700
  props: {
1706
1701
  geo: "check-box";
@@ -1715,7 +1710,7 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1715
1710
  index: IndexKey;
1716
1711
  isLocked: boolean;
1717
1712
  meta: JsonObject;
1718
- opacity: number;
1713
+ opacity: TLOpacityType;
1719
1714
  parentId: TLParentId;
1720
1715
  props: {
1721
1716
  geo: "rectangle";
@@ -1744,6 +1739,9 @@ export declare function getArrowTerminalsInArrowSpace(editor: Editor, shape: TLA
1744
1739
  start: Vec;
1745
1740
  };
1746
1741
 
1742
+ /** @public */
1743
+ export declare function getAssetInfo(file: File, options: TLDefaultExternalContentHandlerOpts, assetId?: TLAssetId): Promise<TLImageAsset | TLVideoAsset>;
1744
+
1747
1745
  /** @public */
1748
1746
  export declare function getCropBox<T extends ShapeWithCrop>(shape: T, info: TLCropInfo<T>, opts?: CropBoxOptions): {
1749
1747
  id: TLShapeId;
@@ -1765,6 +1763,9 @@ export declare function getDefaultCrop(): TLShapeCrop;
1765
1763
  */
1766
1764
  export declare function getEmbedInfo(definitions: readonly TLEmbedDefinition[], inputUrl: string): TLEmbedResult;
1767
1765
 
1766
+ /** @public */
1767
+ export declare function getHitShapeOnCanvasPointerDown(editor: Editor, hitLabels?: boolean): TLShape | undefined;
1768
+
1768
1769
  /** @public */
1769
1770
  export declare function getMediaAssetInfoPartial(file: File, assetId: TLAssetId, isImageType: boolean, isVideoType: boolean, maxImageDimension?: number): Promise<TLImageAsset | TLVideoAsset>;
1770
1771
 
@@ -1801,6 +1802,9 @@ export declare class HandTool extends StateNode {
1801
1802
  /** @public @react */
1802
1803
  export declare function HandToolbarItem(): JSX_2.Element;
1803
1804
 
1805
+ /** @public @react */
1806
+ export declare function HeartToolbarItem(): JSX_2.Element;
1807
+
1804
1808
  /** @public @react */
1805
1809
  export declare function HexagonToolbarItem(): JSX_2.Element;
1806
1810
 
@@ -1933,11 +1937,11 @@ export declare class LineShapeUtil extends ShapeUtil<TLLineShape> {
1933
1937
  index: IndexKey;
1934
1938
  isLocked: boolean;
1935
1939
  meta: JsonObject;
1936
- opacity: number;
1940
+ opacity: TLOpacityType;
1937
1941
  parentId: TLParentId;
1938
1942
  props: {
1939
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1940
- dash: "dashed" | "dotted" | "draw" | "solid";
1943
+ color: TLDefaultColorStyle;
1944
+ dash: TLDefaultDashStyle;
1941
1945
  points: {
1942
1946
  [x: string]: {
1943
1947
  id: string;
@@ -1947,8 +1951,36 @@ export declare class LineShapeUtil extends ShapeUtil<TLLineShape> {
1947
1951
  } | TLLineShapePoint;
1948
1952
  };
1949
1953
  scale: number;
1950
- size: "l" | "m" | "s" | "xl";
1951
- spline: "cubic" | "line";
1954
+ size: TLDefaultSizeStyle;
1955
+ spline: TLLineShapeSplineStyle;
1956
+ };
1957
+ rotation: number;
1958
+ type: "line";
1959
+ typeName: "shape";
1960
+ x: number;
1961
+ y: number;
1962
+ };
1963
+ onHandleDragStart(shape: TLLineShape, { handle }: TLHandleDragInfo<TLLineShape>): {
1964
+ id: TLShapeId;
1965
+ index: IndexKey;
1966
+ isLocked: boolean;
1967
+ meta: JsonObject;
1968
+ opacity: TLOpacityType;
1969
+ parentId: TLParentId;
1970
+ props: {
1971
+ color: TLDefaultColorStyle;
1972
+ dash: TLDefaultDashStyle;
1973
+ points: {
1974
+ [x: string]: {
1975
+ id: IndexKey;
1976
+ index: IndexKey;
1977
+ x: number;
1978
+ y: number;
1979
+ } | TLLineShapePoint;
1980
+ };
1981
+ scale: number;
1982
+ size: TLDefaultSizeStyle;
1983
+ spline: TLLineShapeSplineStyle;
1952
1984
  };
1953
1985
  rotation: number;
1954
1986
  type: "line";
@@ -1968,6 +2000,9 @@ export declare function LineToolbarItem(): JSX_2.Element;
1968
2000
 
1969
2001
  /* Excluded from this release type: LineToPathBuilderCommand */
1970
2002
 
2003
+ /** @public @react */
2004
+ export declare function LockGroup(): JSX_2.Element;
2005
+
1971
2006
  /** @public @react */
1972
2007
  export declare function MiscMenuGroup(): JSX_2.Element;
1973
2008
 
@@ -2026,23 +2061,20 @@ export declare class NoteShapeUtil extends ShapeUtil<TLNoteShape> {
2026
2061
  index: IndexKey;
2027
2062
  isLocked: boolean;
2028
2063
  meta: JsonObject;
2029
- opacity: number;
2064
+ opacity: TLOpacityType;
2030
2065
  parentId: TLParentId;
2031
2066
  props: {
2032
- align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start";
2033
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2034
- font: "draw" | "mono" | "sans" | "serif";
2067
+ align: TLDefaultHorizontalAlignStyle;
2068
+ color: TLDefaultColorStyle;
2069
+ font: TLDefaultFontStyle;
2035
2070
  fontSizeAdjustment: number;
2036
2071
  growY: number;
2037
- labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2038
- richText: {
2039
- content: unknown[];
2040
- type: string;
2041
- };
2072
+ labelColor: TLDefaultColorStyle;
2073
+ richText: TLRichText;
2042
2074
  scale: number;
2043
- size: "l" | "m" | "s" | "xl";
2075
+ size: TLDefaultSizeStyle;
2044
2076
  url: string;
2045
- verticalAlign: "end" | "middle" | "start";
2077
+ verticalAlign: TLDefaultVerticalAlignStyle;
2046
2078
  };
2047
2079
  rotation: number;
2048
2080
  type: "note";
@@ -2055,23 +2087,20 @@ export declare class NoteShapeUtil extends ShapeUtil<TLNoteShape> {
2055
2087
  index: IndexKey;
2056
2088
  isLocked: boolean;
2057
2089
  meta: JsonObject;
2058
- opacity: number;
2090
+ opacity: TLOpacityType;
2059
2091
  parentId: TLParentId;
2060
2092
  props: {
2061
- align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start";
2062
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2063
- font: "draw" | "mono" | "sans" | "serif";
2093
+ align: TLDefaultHorizontalAlignStyle;
2094
+ color: TLDefaultColorStyle;
2095
+ font: TLDefaultFontStyle;
2064
2096
  fontSizeAdjustment: number;
2065
2097
  growY: number;
2066
- labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2067
- richText: {
2068
- content: unknown[];
2069
- type: string;
2070
- };
2098
+ labelColor: TLDefaultColorStyle;
2099
+ richText: TLRichText;
2071
2100
  scale: number;
2072
- size: "l" | "m" | "s" | "xl";
2101
+ size: TLDefaultSizeStyle;
2073
2102
  url: string;
2074
- verticalAlign: "end" | "middle" | "start";
2103
+ verticalAlign: TLDefaultVerticalAlignStyle;
2075
2104
  };
2076
2105
  rotation: number;
2077
2106
  type: "note";
@@ -2156,6 +2185,7 @@ export declare class PathBuilder {
2156
2185
  circularArcTo(radius: number, largeArcFlag: boolean, sweepFlag: boolean, x2: number, y2: number, opts?: PathBuilderCommandOpts): this;
2157
2186
  arcTo(rx: number, ry: number, largeArcFlag: boolean, sweepFlag: boolean, xAxisRotationRadians: number, x2: number, y2: number, opts?: PathBuilderCommandOpts): this;
2158
2187
  cubicBezierTo(x: number, y: number, cp1X: number, cp1Y: number, cp2X: number, cp2Y: number, opts?: PathBuilderCommandOpts): this;
2188
+ private cubicBezierToWithResolution;
2159
2189
  close(): this;
2160
2190
  toD(opts?: PathBuilderToDOpts): string;
2161
2191
  toSvg(opts: PathBuilderOpts): JSX_2.Element;
@@ -2494,7 +2524,7 @@ export declare interface StylePickerSetProps {
2494
2524
 
2495
2525
  /** @public */
2496
2526
  export declare type StyleValuesForUi<T> = readonly {
2497
- readonly icon: string;
2527
+ readonly icon: string | TLUiIconJsx;
2498
2528
  readonly value: T;
2499
2529
  }[];
2500
2530
 
@@ -2594,19 +2624,16 @@ export declare class TextShapeUtil extends ShapeUtil<TLTextShape> {
2594
2624
  index: IndexKey;
2595
2625
  isLocked: boolean;
2596
2626
  meta: JsonObject;
2597
- opacity: number;
2627
+ opacity: TLOpacityType;
2598
2628
  parentId: TLParentId;
2599
2629
  props: {
2600
2630
  autoSize: boolean;
2601
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2602
- font: "draw" | "mono" | "sans" | "serif";
2603
- richText: {
2604
- content: unknown[];
2605
- type: string;
2606
- };
2631
+ color: TLDefaultColorStyle;
2632
+ font: TLDefaultFontStyle;
2633
+ richText: TLRichText;
2607
2634
  scale: number;
2608
- size: "l" | "m" | "s" | "xl";
2609
- textAlign: "end" | "middle" | "start";
2635
+ size: TLDefaultSizeStyle;
2636
+ textAlign: TLDefaultTextAlignStyle;
2610
2637
  w: number;
2611
2638
  };
2612
2639
  rotation: number;
@@ -2754,6 +2781,17 @@ export declare interface TldrawBaseProps extends TldrawUiProps, TldrawEditorBase
2754
2781
  embeds?: TLEmbedDefinition[];
2755
2782
  }
2756
2783
 
2784
+ /** @public @react */
2785
+ export declare function TldrawCropHandles({ size, width, height, hideAlternateHandles, }: TldrawCropHandlesProps): JSX_2.Element;
2786
+
2787
+ /** @public */
2788
+ export declare interface TldrawCropHandlesProps {
2789
+ size: number;
2790
+ width: number;
2791
+ height: number;
2792
+ hideAlternateHandles: boolean;
2793
+ }
2794
+
2757
2795
  /** @public */
2758
2796
  export declare interface TldrawFile {
2759
2797
  tldrawFileFormatVersion: number;
@@ -3134,7 +3172,7 @@ export declare interface TLUiA11yContextType {
3134
3172
 
3135
3173
  /** @public */
3136
3174
  export declare interface TLUiActionItem<TransationKey extends string = string, IconType extends string = string> {
3137
- icon?: IconType;
3175
+ icon?: IconType | React_2.ReactElement;
3138
3176
  id: string;
3139
3177
  kbd?: string;
3140
3178
  label?: {
@@ -3142,6 +3180,7 @@ export declare interface TLUiActionItem<TransationKey extends string = string, I
3142
3180
  } | TransationKey;
3143
3181
  readonlyOk?: boolean;
3144
3182
  checkbox?: boolean;
3183
+ isRequiredA11yAction?: boolean;
3145
3184
  onSelect(source: TLUiEventSource): Promise<void> | void;
3146
3185
  }
3147
3186
 
@@ -3170,7 +3209,7 @@ export declare interface TLUiButtonCheckProps {
3170
3209
 
3171
3210
  /** @public */
3172
3211
  export declare interface TLUiButtonIconProps {
3173
- icon: string;
3212
+ icon: string | TLUiIconJsx;
3174
3213
  small?: boolean;
3175
3214
  invertIcon?: boolean;
3176
3215
  }
@@ -3484,8 +3523,12 @@ export declare interface TLUiEventMap {
3484
3523
  'delete-shapes': null;
3485
3524
  'select-all-shapes': null;
3486
3525
  'select-none-shapes': null;
3487
- 'rotate-ccw': null;
3488
- 'rotate-cw': null;
3526
+ 'rotate-ccw': {
3527
+ fine: boolean;
3528
+ };
3529
+ 'rotate-cw': {
3530
+ fine: boolean;
3531
+ };
3489
3532
  'zoom-in': {
3490
3533
  towardsCursor: boolean;
3491
3534
  };
@@ -3528,6 +3571,7 @@ export declare interface TLUiEventMap {
3528
3571
  'toggle-paste-at-cursor': null;
3529
3572
  'toggle-lock': null;
3530
3573
  'toggle-reduce-motion': null;
3574
+ 'toggle-keyboard-shortcuts': null;
3531
3575
  'toggle-edge-scrolling': null;
3532
3576
  'color-scheme': {
3533
3577
  value: string;
@@ -3552,6 +3596,7 @@ export declare interface TLUiEventMap {
3552
3596
  'copy-link': null;
3553
3597
  'image-replace': null;
3554
3598
  'video-replace': null;
3599
+ 'open-kbd-shortcuts': null;
3555
3600
  'rich-text': {
3556
3601
  operation: 'bold' | 'bulletList' | 'heading' | 'link-edit' | 'link-remove' | 'link-visit' | 'link' | 'strike';
3557
3602
  };
@@ -3571,9 +3616,12 @@ export declare interface TLUiHelpMenuProps {
3571
3616
  children?: ReactNode;
3572
3617
  }
3573
3618
 
3619
+ /** @public */
3620
+ export declare type TLUiIconJsx = ReactElement<React.HTMLAttributes<HTMLDivElement>>;
3621
+
3574
3622
  /** @public */
3575
3623
  export declare interface TLUiIconProps extends React.HTMLAttributes<HTMLDivElement> {
3576
- icon: Exclude<string, TLUiIconType> | TLUiIconType;
3624
+ icon: Exclude<string, TLUiIconType> | TLUiIconJsx | TLUiIconType;
3577
3625
  label: string;
3578
3626
  small?: boolean;
3579
3627
  color?: string;
@@ -3649,7 +3697,7 @@ export declare type TLUiMenuActionItemProps = {
3649
3697
 
3650
3698
  /** @public */
3651
3699
  export declare interface TLUiMenuCheckboxItemProps<TranslationKey extends string = string, IconType extends string = string> {
3652
- icon?: IconType;
3700
+ icon?: IconType | TLUiIconJsx;
3653
3701
  id: string;
3654
3702
  kbd?: string;
3655
3703
  title?: string;
@@ -3692,11 +3740,11 @@ export declare interface TLUiMenuItemProps<TranslationKey extends string = strin
3692
3740
  /**
3693
3741
  * The icon to display on the item. Icons are only shown in certain menu types.
3694
3742
  */
3695
- icon?: IconType;
3743
+ icon?: IconType | TLUiIconJsx;
3696
3744
  /**
3697
3745
  * An icon to display to the left of the menu item.
3698
3746
  */
3699
- iconLeft?: IconType;
3747
+ iconLeft?: IconType | TLUiIconJsx;
3700
3748
  /**
3701
3749
  * The keyboard shortcut to display on the item.
3702
3750
  */
@@ -3803,6 +3851,7 @@ export declare interface TLUiSliderProps {
3803
3851
  onValueChange(value: number): void;
3804
3852
  onHistoryMark(id: string): void;
3805
3853
  'data-testid'?: string;
3854
+ ariaValueModifier?: number;
3806
3855
  }
3807
3856
 
3808
3857
  /** @public */
@@ -3893,7 +3942,7 @@ export declare interface TLUiToolItem<TranslationKey extends string = string, Ic
3893
3942
  id: string;
3894
3943
  label: TranslationKey;
3895
3944
  shortcutsLabel?: TranslationKey;
3896
- icon: IconType;
3945
+ icon: IconType | TLUiIconJsx;
3897
3946
  onSelect(source: TLUiEventSource): void;
3898
3947
  /**
3899
3948
  * The keyboard shortcut for this tool. This is a string that can be a single key,
@@ -3930,7 +3979,7 @@ export declare interface TLUiTranslation {
3930
3979
  export declare type TLUiTranslationContextType = TLUiTranslation;
3931
3980
 
3932
3981
  /** @public */
3933
- 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.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.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-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';
3982
+ 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-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';
3934
3983
 
3935
3984
  /** @public */
3936
3985
  export declare interface TLUiTranslationProviderProps {
@@ -4042,6 +4091,9 @@ export declare function ToggleFocusModeItem(): JSX_2.Element;
4042
4091
  /** @public @react */
4043
4092
  export declare function ToggleGridItem(): JSX_2.Element;
4044
4093
 
4094
+ /** @public @react */
4095
+ export declare function ToggleKeyboardShortcutsItem(): JSX_2.Element;
4096
+
4045
4097
  /** @public @react */
4046
4098
  export declare function ToggleLockMenuItem(): JSX_2.Element | null;
4047
4099
 
@@ -4054,6 +4106,14 @@ export declare function ToggleReduceMotionItem(): JSX_2.Element;
4054
4106
  /** @public @react */
4055
4107
  export declare function ToggleSnapModeItem(): JSX_2.Element;
4056
4108
 
4109
+ /** @public @react */
4110
+ export declare function ToggleToolLockedButton({ activeToolId }: ToggleToolLockedButtonProps): JSX_2.Element | null;
4111
+
4112
+ /** @public */
4113
+ export declare interface ToggleToolLockedButtonProps {
4114
+ activeToolId?: string;
4115
+ }
4116
+
4057
4117
  /** @public @react */
4058
4118
  export declare function ToggleToolLockItem(): JSX_2.Element;
4059
4119
 
@@ -4149,10 +4209,10 @@ export declare function useDefaultColorTheme(): {
4149
4209
  /** @public */
4150
4210
  export declare function useDefaultHelpers(): {
4151
4211
  addDialog: (dialog: Omit<TLUiDialog, "id"> & {
4152
- id?: string | undefined;
4212
+ id?: string;
4153
4213
  }) => string;
4154
4214
  addToast: (toast: Omit<TLUiToast, "id"> & {
4155
- id?: string | undefined;
4215
+ id?: string;
4156
4216
  }) => string;
4157
4217
  clearDialogs: () => void;
4158
4218
  clearToasts: () => void;
@@ -4163,11 +4223,11 @@ export declare function useDefaultHelpers(): {
4163
4223
  getEmbedDefinition: (url: string) => TLEmbedResult;
4164
4224
  insertMedia: () => Promise<void>;
4165
4225
  isMobile: boolean;
4166
- msg: (id?: string | undefined) => string;
4167
- paste: (data: ClipboardItem[] | DataTransfer, source: TLUiEventSource, point?: VecLike | undefined) => Promise<void>;
4226
+ msg: (id?: Exclude<string, TLUiTranslationKey> | string) => string;
4227
+ paste: (data: ClipboardItem[] | DataTransfer, source: TLUiEventSource, point?: VecLike) => Promise<void>;
4168
4228
  printSelectionOrPages: () => Promise<void>;
4169
4229
  removeDialog: (id: string) => string;
4170
- removeToast: (id: string) => string;
4230
+ removeToast: (id: TLUiToast["id"]) => string;
4171
4231
  replaceImage: () => Promise<void>;
4172
4232
  replaceVideo: () => Promise<void>;
4173
4233
  };
@@ -4183,7 +4243,7 @@ export declare function useEditablePlainText(shapeId: TLShapeId, type: string, t
4183
4243
  }) => void;
4184
4244
  handleDoubleClick: (e: any) => any;
4185
4245
  handleFocus: () => void;
4186
- handleInputPointerDown: (e: React_3.PointerEvent<Element>) => void;
4246
+ handleInputPointerDown: (e: React_3.PointerEvent) => void;
4187
4247
  handleKeyDown: (e: KeyboardEvent) => void;
4188
4248
  handlePaste: (e: ClipboardEvent | React_3.ClipboardEvent<HTMLTextAreaElement>) => void;
4189
4249
  isEditing: boolean;
@@ -4200,9 +4260,9 @@ export declare function useEditableRichText(shapeId: TLShapeId, type: string, ri
4200
4260
  }) => void;
4201
4261
  handleDoubleClick: (e: any) => any;
4202
4262
  handleFocus: () => void;
4203
- handleInputPointerDown: (e: PointerEvent_2<Element>) => void;
4263
+ handleInputPointerDown: (e: React.PointerEvent) => void;
4204
4264
  handleKeyDown: (e: KeyboardEvent) => void;
4205
- handlePaste: (e: ClipboardEvent | ClipboardEvent_2<HTMLTextAreaElement>) => void;
4265
+ handlePaste: (e: ClipboardEvent | React.ClipboardEvent<HTMLTextAreaElement>) => void;
4206
4266
  isEditing: boolean;
4207
4267
  isEmpty: boolean | undefined;
4208
4268
  isReadyForEditing: boolean;
@@ -4316,6 +4376,12 @@ export declare function useTranslation(): (id?: Exclude<string, TLUiTranslationK
4316
4376
  /** @public */
4317
4377
  export declare function useUiEvents(): TLUiEventContextType;
4318
4378
 
4379
+ /**
4380
+ * Returns true if the number of UNLOCKED selected shapes is at least min or at most max.
4381
+ * @public
4382
+ */
4383
+ export declare function useUnlockedSelectedShapesCount(min?: number, max?: number): boolean | number;
4384
+
4319
4385
  /** @public */
4320
4386
  export declare interface VideoShapeOptions {
4321
4387
  /**
@@ -4361,7 +4427,7 @@ export declare class ZoomTool extends StateNode {
4361
4427
  static children(): TLStateNodeConstructor[];
4362
4428
  static isLockable: boolean;
4363
4429
  info: TLPointerEventInfo & {
4364
- onInteractionEnd?: string | undefined;
4430
+ onInteractionEnd?: string;
4365
4431
  };
4366
4432
  onEnter(info: TLPointerEventInfo & {
4367
4433
  onInteractionEnd: string;