tldraw 3.16.0-canary.5dac57cf9465 → 3.16.0-canary.6074088f67bd

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 (305) hide show
  1. package/dist-cjs/index.d.ts +170 -7
  2. package/dist-cjs/index.js +13 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/Tldraw.js +12 -2
  5. package/dist-cjs/lib/Tldraw.js.map +2 -2
  6. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  7. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  8. package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -4
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  11. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  13. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  14. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  15. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  16. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  17. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  18. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +18 -12
  19. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  21. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  22. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  23. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  24. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  25. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  26. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  27. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  28. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  29. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  30. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  31. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  32. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  33. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  35. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  36. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  37. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  38. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  39. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  40. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  41. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  42. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  43. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  44. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  45. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  46. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  47. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  48. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  49. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  50. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +10 -2
  51. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  52. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  53. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  54. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  55. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  56. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  57. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  58. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  59. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  60. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +1 -1
  61. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +2 -2
  62. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
  63. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  64. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -22
  65. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  66. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +188 -78
  67. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  68. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +1 -1
  69. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +2 -2
  70. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +15 -3
  71. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  72. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +155 -160
  73. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  74. package/dist-cjs/lib/ui/components/primitives/layout.js +30 -5
  75. package/dist-cjs/lib/ui/components/primitives/layout.js.map +2 -2
  76. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  77. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  78. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +154 -19
  80. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  81. package/dist-cjs/lib/ui/context/actions.js +16 -2
  82. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  83. package/dist-cjs/lib/ui/context/components.js +2 -0
  84. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  85. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  86. package/dist-cjs/lib/ui/hooks/useTools.js +94 -9
  87. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  88. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  89. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +1 -0
  90. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  91. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  92. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  93. package/dist-cjs/lib/ui/version.js +3 -3
  94. package/dist-cjs/lib/ui/version.js.map +1 -1
  95. package/dist-esm/index.d.mts +170 -7
  96. package/dist-esm/index.mjs +20 -3
  97. package/dist-esm/index.mjs.map +2 -2
  98. package/dist-esm/lib/Tldraw.mjs +14 -4
  99. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  100. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  101. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  102. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  103. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  104. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  105. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  106. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  107. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  108. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  109. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  110. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  111. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  112. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +19 -12
  113. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  114. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  115. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  116. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  117. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  118. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  119. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  120. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  121. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  122. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  123. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  124. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  125. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  126. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  127. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  128. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  129. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  130. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  131. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  132. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  133. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  134. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  135. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  136. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  137. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  138. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  139. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  140. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  141. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  142. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  143. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  144. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +10 -2
  145. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  146. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  147. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  148. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  149. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  150. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  151. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  152. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  153. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  154. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +1 -1
  155. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  156. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
  157. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  158. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -22
  159. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  160. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -80
  161. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  162. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +2 -1
  163. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  164. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +16 -4
  165. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  166. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +164 -162
  167. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  168. package/dist-esm/lib/ui/components/primitives/layout.mjs +31 -6
  169. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +2 -2
  170. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  171. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  172. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  173. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +162 -21
  174. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  175. package/dist-esm/lib/ui/context/actions.mjs +16 -2
  176. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  177. package/dist-esm/lib/ui/context/components.mjs +2 -0
  178. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  179. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  180. package/dist-esm/lib/ui/hooks/useTools.mjs +102 -10
  181. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  182. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +1 -0
  183. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  184. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  185. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  186. package/dist-esm/lib/ui/version.mjs +3 -3
  187. package/dist-esm/lib/ui/version.mjs.map +1 -1
  188. package/package.json +11 -34
  189. package/src/index.ts +13 -1
  190. package/src/lib/Tldraw.tsx +15 -2
  191. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  192. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  193. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  194. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +4 -3
  195. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +7 -6
  196. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  197. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  198. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  199. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  200. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  201. package/src/lib/shapes/frame/FrameShapeUtil.tsx +29 -14
  202. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  203. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  204. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  205. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  206. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  207. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  208. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  209. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  210. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  211. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  212. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  213. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  214. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  215. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  216. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  217. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  218. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  219. package/src/lib/ui/TldrawUi.tsx +33 -12
  220. package/src/lib/ui/assetUrls.ts +13 -10
  221. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +13 -2
  222. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  223. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  224. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  225. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  226. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +1 -1
  227. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
  228. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -24
  229. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +208 -56
  230. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +3 -2
  231. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +22 -5
  232. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +196 -184
  233. package/src/lib/ui/components/primitives/layout.tsx +79 -5
  234. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  235. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  236. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +221 -18
  237. package/src/lib/ui/context/actions.tsx +16 -2
  238. package/src/lib/ui/context/components.tsx +3 -0
  239. package/src/lib/ui/context/events.tsx +2 -1
  240. package/src/lib/ui/hooks/useTools.tsx +140 -10
  241. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +1 -0
  242. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +1 -0
  243. package/src/lib/ui/kbd-utils.ts +10 -3
  244. package/src/lib/ui/version.ts +3 -3
  245. package/src/lib/ui.css +349 -243
  246. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  247. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  248. package/src/test/A11y.test.tsx +3 -2
  249. package/src/test/ClickManager.test.ts +7 -6
  250. package/src/test/Editor.test.tsx +20 -19
  251. package/src/test/EraserTool.test.ts +184 -13
  252. package/src/test/HandTool.test.ts +10 -9
  253. package/src/test/HighlightShape.test.ts +2 -1
  254. package/src/test/SelectTool.test.ts +3 -2
  255. package/src/test/TLUserPreferences.test.ts +4 -3
  256. package/src/test/TestEditor.ts +13 -15
  257. package/src/test/TldrawEditor.test.tsx +11 -10
  258. package/src/test/ZoomTool.test.ts +7 -6
  259. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  260. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  261. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  262. package/src/test/arrows-megabus.test.tsx +5 -4
  263. package/src/test/bindings.test.tsx +24 -37
  264. package/src/test/bookmark-shapes.test.ts +1 -8
  265. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  266. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  267. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  268. package/src/test/commands/alignShapes.test.tsx +25 -24
  269. package/src/test/commands/animationSpeed.test.ts +2 -1
  270. package/src/test/commands/centerOnPoint.test.ts +3 -2
  271. package/src/test/commands/clipboard.test.ts +3 -2
  272. package/src/test/commands/createShapes.test.ts +2 -1
  273. package/src/test/commands/deleteShapes.test.ts +2 -1
  274. package/src/test/commands/distributeShapes.test.tsx +11 -10
  275. package/src/test/commands/getSvgString.test.ts +2 -1
  276. package/src/test/commands/packShapes.test.ts +5 -4
  277. package/src/test/commands/resizeShape.test.ts +2 -1
  278. package/src/test/commands/rotateShapes.test.ts +7 -6
  279. package/src/test/commands/setCamera.test.ts +4 -3
  280. package/src/test/commands/setCurrentPage.test.ts +3 -2
  281. package/src/test/commands/stackShapes.test.ts +11 -10
  282. package/src/test/commands/stretch.test.tsx +13 -12
  283. package/src/test/createDeepLink.test.tsx +2 -1
  284. package/src/test/cropping.test.ts +3 -2
  285. package/src/test/custom-clipping.test.ts +436 -0
  286. package/src/test/drawing.test.ts +2 -1
  287. package/src/test/flipShapes.test.ts +4 -3
  288. package/src/test/frames.test.ts +25 -24
  289. package/src/test/getCulledShapes.test.tsx +3 -2
  290. package/src/test/groups.test.tsx +1 -1
  291. package/src/test/handleDeepLink.test.tsx +2 -1
  292. package/src/test/maxShapes.test.ts +3 -2
  293. package/src/test/modifiers.test.ts +5 -4
  294. package/src/test/navigation.test.ts +12 -11
  295. package/src/test/panning.test.ts +2 -1
  296. package/src/test/perf/perf.test.ts +2 -1
  297. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  298. package/src/test/resizing.test.ts +39 -38
  299. package/src/test/select.test.tsx +4 -3
  300. package/src/test/selection-omnibus.test.ts +11 -10
  301. package/src/test/shapeutils.test.ts +4 -3
  302. package/src/test/translating.test.ts +9 -8
  303. package/tldraw.css +650 -533
  304. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  305. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
@@ -853,6 +853,9 @@ export declare let defaultEditorAssetUrls: TLEditorAssetUrls;
853
853
  /** @public */
854
854
  export declare type DefaultEmbedDefinitionType = (typeof DEFAULT_EMBED_DEFINITIONS)[number]['type'];
855
855
 
856
+ /** @public @react */
857
+ export declare function DefaultFollowingIndicator(): JSX_2.Element | null;
858
+
856
859
  /** @public */
857
860
  export declare const DefaultFontFaces: TLDefaultFonts;
858
861
 
@@ -1017,6 +1020,11 @@ export declare function DefaultToolbarContent(): JSX_2.Element;
1017
1020
  /** @public */
1018
1021
  export declare interface DefaultToolbarProps {
1019
1022
  children?: ReactNode;
1023
+ orientation?: 'horizontal' | 'vertical';
1024
+ minItems?: number;
1025
+ minSizePx?: number;
1026
+ maxItems?: number;
1027
+ maxSizePx?: number;
1020
1028
  }
1021
1029
 
1022
1030
  /** @public */
@@ -1574,6 +1582,7 @@ export declare class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
1574
1582
  canEdit(): boolean;
1575
1583
  canResize(): boolean;
1576
1584
  canResizeChildren(): boolean;
1585
+ isExportBoundsContainer(): boolean;
1577
1586
  getDefaultProps(): TLFrameShape['props'];
1578
1587
  getAriaDescriptor(shape: TLFrameShape): string;
1579
1588
  getGeometry(shape: TLFrameShape): Geometry2d;
@@ -1582,6 +1591,7 @@ export declare class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
1582
1591
  toSvg(shape: TLFrameShape, ctx: SvgExportContext): JSX_2.Element;
1583
1592
  indicator(shape: TLFrameShape): JSX_2.Element;
1584
1593
  providesBackgroundForChildren(): boolean;
1594
+ getClipPath(shape: TLFrameShape): Vec[];
1585
1595
  canReceiveNewChildrenOfType(shape: TLShape): boolean;
1586
1596
  onResize(shape: any, info: TLResizeInfo<any>): any;
1587
1597
  getInterpolatedProps(startShape: TLFrameShape, endShape: TLFrameShape, t: number): TLFrameShapeProps;
@@ -1775,6 +1785,29 @@ export declare function getHitShapeOnCanvasPointerDown(editor: Editor, hitLabels
1775
1785
  /** @public */
1776
1786
  export declare function getMediaAssetInfoPartial(file: File, assetId: TLAssetId, isImageType: boolean, isVideoType: boolean, maxImageDimension?: number): Promise<TLImageAsset | TLVideoAsset>;
1777
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
+
1778
1811
  /**
1779
1812
  * Original (uncropped) width and height of shape.
1780
1813
  *
@@ -1870,6 +1903,7 @@ export declare class ImageShapeUtil extends BaseBoxShapeUtil<TLImageShape> {
1870
1903
  static migrations: TLPropsMigrations;
1871
1904
  isAspectRatioLocked(): boolean;
1872
1905
  canCrop(): boolean;
1906
+ isExportBoundsContainer(): boolean;
1873
1907
  getDefaultProps(): TLImageShape['props'];
1874
1908
  getGeometry(shape: TLImageShape): Geometry2d;
1875
1909
  getAriaDescriptor(shape: TLImageShape): string;
@@ -2120,9 +2154,42 @@ export declare class NoteShapeUtil extends ShapeUtil<TLNoteShape> {
2120
2154
  /** @public @react */
2121
2155
  export declare function NoteToolbarItem(): JSX_2.Element;
2122
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
+
2123
2167
  /** @public @react */
2124
2168
  export declare function OfflineIndicator(): JSX_2.Element;
2125
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
+
2126
2193
  /** @public @react */
2127
2194
  export declare function OpacitySlider(): JSX_2.Element | null;
2128
2195
 
@@ -2130,11 +2197,17 @@ export declare function OpacitySlider(): JSX_2.Element | null;
2130
2197
  export declare function OvalToolbarItem(): JSX_2.Element;
2131
2198
 
2132
2199
  /** @public @react */
2133
- 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;
2134
2201
 
2135
2202
  /** @public */
2136
2203
  export declare interface OverflowingToolbarProps {
2137
2204
  children: React.ReactNode;
2205
+ orientation: 'horizontal' | 'vertical';
2206
+ sizingParentClassName: string;
2207
+ minItems: number;
2208
+ minSizePx: number;
2209
+ maxItems: number;
2210
+ maxSizePx: number;
2138
2211
  }
2139
2212
 
2140
2213
  /** @public @react */
@@ -2523,6 +2596,54 @@ export declare function StarToolbarItem(): JSX_2.Element;
2523
2596
  /** @public */
2524
2597
  export declare const STROKE_SIZES: Record<TLDefaultSizeStyle, number>;
2525
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
+
2526
2647
  /** @public */
2527
2648
  export declare interface StylePickerSetProps {
2528
2649
  styles: ReadonlySharedStyleMap;
@@ -2921,6 +3042,13 @@ export declare function TldrawUiButtonLabel({ children }: TLUiButtonLabelProps):
2921
3042
  /** @public */
2922
3043
  export declare const TldrawUiButtonPicker: <T extends string>(props: TLUiButtonPickerProps<T>) => ReactElement;
2923
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
+
2924
3052
  /** @public @react */
2925
3053
  export declare function TldrawUiComponentsProvider({ overrides, children, }: TLUiComponentsProviderProps): JSX_2.Element;
2926
3054
 
@@ -2993,6 +3121,9 @@ export declare const TldrawUiGrid: ForwardRefExoticComponent<TLUiLayoutProps & R
2993
3121
  /** @public @react */
2994
3122
  export declare const TldrawUiIcon: NamedExoticComponent<TLUiIconProps>;
2995
3123
 
3124
+ /** @public @react */
3125
+ export declare function TldrawUiInFrontOfTheCanvas(): JSX_2.Element;
3126
+
2996
3127
  /** @public @react */
2997
3128
  export declare const TldrawUiInput: React_2.ForwardRefExoticComponent<TLUiInputProps & React_2.RefAttributes<HTMLInputElement>>;
2998
3129
 
@@ -3015,7 +3146,7 @@ export declare function TldrawUiMenuContextProvider({ type, sourceId, children,
3015
3146
  export declare function TldrawUiMenuGroup({ id, label, className, children }: TLUiMenuGroupProps): boolean | JSX_2.Element | Iterable<ReactNode> | null | number | string | undefined;
3016
3147
 
3017
3148
  /** @public @react */
3018
- 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;
3019
3150
 
3020
3151
  /** @public @react */
3021
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;
@@ -3023,6 +3154,22 @@ export declare function TldrawUiMenuSubmenu<Translation extends string = string>
3023
3154
  /** @public @react */
3024
3155
  export declare function TldrawUiMenuToolItem({ toolId, ...rest }: TLUiMenuToolItemProps): JSX_2.Element | null;
3025
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
+
3026
3173
  /** @public @react */
3027
3174
  export declare function TldrawUiPopover({ id, children, onOpenChange, open, className }: TLUiPopoverProps): JSX_2.Element;
3028
3175
 
@@ -3080,7 +3227,7 @@ export declare const TldrawUiToolbarToggleGroup: ({ children, className, type, .
3080
3227
  export declare const TldrawUiToolbarToggleItem: ({ children, className, type, value, tooltip, ...props }: TLUiToolbarToggleItemProps) => JSX_2.Element;
3081
3228
 
3082
3229
  /** @public @react */
3083
- export declare function TldrawUiTooltip({ children, content, side, sideOffset, disabled, }: TldrawUiTooltipProps): JSX_2.Element;
3230
+ export declare const TldrawUiTooltip: React_3.ForwardRefExoticComponent<TldrawUiTooltipProps & React_3.RefAttributes<HTMLButtonElement>>;
3084
3231
 
3085
3232
  /** @public */
3086
3233
  export declare interface TldrawUiTooltipProps {
@@ -3089,6 +3236,8 @@ export declare interface TldrawUiTooltipProps {
3089
3236
  side?: 'bottom' | 'left' | 'right' | 'top';
3090
3237
  sideOffset?: number;
3091
3238
  disabled?: boolean;
3239
+ showOnMobile?: boolean;
3240
+ delayDuration?: number;
3092
3241
  }
3093
3242
 
3094
3243
  /** @public @react */
@@ -3305,6 +3454,7 @@ export declare interface TLUiComponents {
3305
3454
  Dialogs?: ComponentType | null;
3306
3455
  Toasts?: ComponentType | null;
3307
3456
  A11y?: ComponentType | null;
3457
+ FollowingIndicator?: ComponentType | null;
3308
3458
  }
3309
3459
 
3310
3460
  /** @public */
@@ -3630,11 +3780,14 @@ export declare interface TLUiEventMap {
3630
3780
  'flatten-to-image': null;
3631
3781
  'a11y-repeat-shape-announce': null;
3632
3782
  'open-url': {
3633
- url: string;
3783
+ destinationUrl: string;
3634
3784
  };
3635
3785
  'open-context-menu': null;
3636
3786
  'adjust-shape-styles': null;
3637
3787
  'copy-link': null;
3788
+ 'drag-tool': {
3789
+ id: string;
3790
+ };
3638
3791
  'image-replace': null;
3639
3792
  'video-replace': null;
3640
3793
  'open-kbd-shortcuts': null;
@@ -3724,6 +3877,7 @@ export declare type TLUiKeyboardShortcutsDialogProps = TLUiDialogProps & {
3724
3877
  /** @public */
3725
3878
  export declare interface TLUiLayoutProps extends HTMLAttributes<HTMLDivElement> {
3726
3879
  children: ReactNode;
3880
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3727
3881
  asChild?: boolean;
3728
3882
  }
3729
3883
 
@@ -3766,7 +3920,7 @@ export declare interface TLUiMenuContextProviderProps {
3766
3920
  }
3767
3921
 
3768
3922
  /** @public */
3769
- 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';
3770
3924
 
3771
3925
  /** @public */
3772
3926
  export declare interface TLUiMenuGroupProps<TranslationKey extends string = string> {
@@ -3826,6 +3980,10 @@ export declare interface TLUiMenuItemProps<TranslationKey extends string = strin
3826
3980
  * Whether the item is selected.
3827
3981
  */
3828
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;
3829
3987
  }
3830
3988
 
3831
3989
  /** @public */
@@ -3966,7 +4124,8 @@ export declare interface TLUiToolbarProps extends React_3.HTMLAttributes<HTMLDiv
3966
4124
  className?: string;
3967
4125
  dir?: 'ltr' | 'rtl';
3968
4126
  label: string;
3969
- orientation?: 'grid' | 'horizontal';
4127
+ orientation?: 'grid' | 'horizontal' | 'vertical';
4128
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3970
4129
  }
3971
4130
 
3972
4131
  /** @public */
@@ -3995,6 +4154,7 @@ export declare interface TLUiToolItem<TranslationKey extends string = string, Ic
3995
4154
  shortcutsLabel?: TranslationKey;
3996
4155
  icon: IconType | TLUiIconJsx;
3997
4156
  onSelect(source: TLUiEventSource): void;
4157
+ onDragStart?(source: TLUiEventSource, info: TLPointerEventInfo): void;
3998
4158
  /**
3999
4159
  * The keyboard shortcut for this tool. This is a string that can be a single key,
4000
4160
  * or a combination of keys.
@@ -4030,7 +4190,7 @@ export declare interface TLUiTranslation {
4030
4190
  export declare type TLUiTranslationContextType = TLUiTranslation;
4031
4191
 
4032
4192
  /** @public */
4033
- 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' | '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';
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';
4034
4194
 
4035
4195
  /** @public */
4036
4196
  export declare interface TLUiTranslationProviderProps {
@@ -4407,6 +4567,9 @@ export declare function useShowCollaborationUi(): boolean;
4407
4567
  /** @public */
4408
4568
  export declare function useTldrawUiComponents(): TLUiComponents;
4409
4569
 
4570
+ /** @public */
4571
+ export declare function useTldrawUiOrientation(): TldrawUiOrientationContext;
4572
+
4410
4573
  /** @public */
4411
4574
  export declare function useToasts(): TLUiToastsContextType;
4412
4575
 
package/dist-cjs/index.js CHANGED
@@ -64,6 +64,7 @@ __export(index_exports, {
64
64
  DefaultDebugMenu: () => import_DefaultDebugMenu.DefaultDebugMenu,
65
65
  DefaultDebugMenuContent: () => import_DefaultDebugMenuContent.DefaultDebugMenuContent,
66
66
  DefaultDialogs: () => import_Dialogs.DefaultDialogs,
67
+ DefaultFollowingIndicator: () => import_DefaultFollowingIndicator.DefaultFollowingIndicator,
67
68
  DefaultFontFaces: () => import_defaultFonts.DefaultFontFaces,
68
69
  DefaultHelpMenu: () => import_DefaultHelpMenu.DefaultHelpMenu,
69
70
  DefaultHelpMenuContent: () => import_DefaultHelpMenuContent.DefaultHelpMenuContent,
@@ -211,6 +212,7 @@ __export(index_exports, {
211
212
  TldrawUiButtonIcon: () => import_TldrawUiButtonIcon.TldrawUiButtonIcon,
212
213
  TldrawUiButtonLabel: () => import_TldrawUiButtonLabel.TldrawUiButtonLabel,
213
214
  TldrawUiButtonPicker: () => import_TldrawUiButtonPicker.TldrawUiButtonPicker,
215
+ TldrawUiColumn: () => import_layout.TldrawUiColumn,
214
216
  TldrawUiComponentsProvider: () => import_components.TldrawUiComponentsProvider,
215
217
  TldrawUiContextProvider: () => import_TldrawUiContextProvider.TldrawUiContextProvider,
216
218
  TldrawUiContextualToolbar: () => import_TldrawUiContextualToolbar.TldrawUiContextualToolbar,
@@ -232,6 +234,7 @@ __export(index_exports, {
232
234
  TldrawUiEventsProvider: () => import_events.TldrawUiEventsProvider,
233
235
  TldrawUiGrid: () => import_layout.TldrawUiGrid,
234
236
  TldrawUiIcon: () => import_TldrawUiIcon.TldrawUiIcon,
237
+ TldrawUiInFrontOfTheCanvas: () => import_TldrawUi.TldrawUiInFrontOfTheCanvas,
235
238
  TldrawUiInput: () => import_TldrawUiInput.TldrawUiInput,
236
239
  TldrawUiKbd: () => import_TldrawUiKbd.TldrawUiKbd,
237
240
  TldrawUiMenuActionCheckboxItem: () => import_TldrawUiMenuActionCheckboxItem.TldrawUiMenuActionCheckboxItem,
@@ -242,6 +245,7 @@ __export(index_exports, {
242
245
  TldrawUiMenuItem: () => import_TldrawUiMenuItem.TldrawUiMenuItem,
243
246
  TldrawUiMenuSubmenu: () => import_TldrawUiMenuSubmenu.TldrawUiMenuSubmenu,
244
247
  TldrawUiMenuToolItem: () => import_TldrawUiMenuToolItem.TldrawUiMenuToolItem,
248
+ TldrawUiOrientationProvider: () => import_layout.TldrawUiOrientationProvider,
245
249
  TldrawUiPopover: () => import_TldrawUiPopover.TldrawUiPopover,
246
250
  TldrawUiPopoverContent: () => import_TldrawUiPopover.TldrawUiPopoverContent,
247
251
  TldrawUiPopoverTrigger: () => import_TldrawUiPopover.TldrawUiPopoverTrigger,
@@ -322,7 +326,11 @@ __export(index_exports, {
322
326
  getEmbedInfo: () => import_embeds.getEmbedInfo,
323
327
  getHitShapeOnCanvasPointerDown: () => import_getHitShapeOnCanvasPointerDown.getHitShapeOnCanvasPointerDown,
324
328
  getMediaAssetInfoPartial: () => import_defaultExternalContentHandlers.getMediaAssetInfoPartial,
329
+ getStrokePoints: () => import_getStrokePoints.getStrokePoints,
330
+ getSvgPathFromStrokePoints: () => import_svg.getSvgPathFromStrokePoints,
325
331
  getUncroppedSize: () => import_crop.getUncroppedSize,
332
+ notifyIfFileNotAllowed: () => import_defaultExternalContentHandlers.notifyIfFileNotAllowed,
333
+ onDragFromToolbarToCreateShape: () => import_useTools.onDragFromToolbarToCreateShape,
326
334
  parseAndLoadDocument: () => import_file.parseAndLoadDocument,
327
335
  parseTldrawJsonFile: () => import_file.parseTldrawJsonFile,
328
336
  preloadFont: () => import_preload_font.preloadFont,
@@ -371,6 +379,7 @@ __export(index_exports, {
371
379
  useSelectedShapesAnnouncer: () => import_A11y.useSelectedShapesAnnouncer,
372
380
  useShowCollaborationUi: () => import_useCollaborationStatus.useShowCollaborationUi,
373
381
  useTldrawUiComponents: () => import_components.useTldrawUiComponents,
382
+ useTldrawUiOrientation: () => import_layout.useTldrawUiOrientation,
374
383
  useToasts: () => import_toasts.useToasts,
375
384
  useTools: () => import_useTools.useTools,
376
385
  useTranslation: () => import_useTranslation2.useTranslation,
@@ -384,6 +393,7 @@ var import_usePrefersReducedMotion = require("./lib/shapes/shared/usePrefersRedu
384
393
  var import_A11y = require("./lib/ui/components/A11y");
385
394
  var import_AccessibilityMenu = require("./lib/ui/components/AccessibilityMenu");
386
395
  var import_ColorSchemeMenu = require("./lib/ui/components/ColorSchemeMenu");
396
+ var import_DefaultFollowingIndicator = require("./lib/ui/components/DefaultFollowingIndicator");
387
397
  var import_Dialogs = require("./lib/ui/components/Dialogs");
388
398
  var import_layout = require("./lib/ui/components/primitives/layout");
389
399
  var import_TldrawUiMenuActionCheckboxItem = require("./lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem");
@@ -427,6 +437,8 @@ var import_NoteShapeUtil = require("./lib/shapes/note/NoteShapeUtil");
427
437
  var import_crop = require("./lib/shapes/shared/crop");
428
438
  var import_default_shape_constants = require("./lib/shapes/shared/default-shape-constants");
429
439
  var import_defaultFonts = require("./lib/shapes/shared/defaultFonts");
440
+ var import_getStrokePoints = require("./lib/shapes/shared/freehand/getStrokePoints");
441
+ var import_svg = require("./lib/shapes/shared/freehand/svg");
430
442
  var import_PlainTextLabel = require("./lib/shapes/shared/PlainTextLabel");
431
443
  var import_RichTextLabel = require("./lib/shapes/shared/RichTextLabel");
432
444
  var import_useDefaultColorTheme = require("./lib/shapes/shared/useDefaultColorTheme");
@@ -552,7 +564,7 @@ var import_buildFromV1Document = require("./lib/utils/tldr/buildFromV1Document")
552
564
  var import_file = require("./lib/utils/tldr/file");
553
565
  (0, import_editor.registerTldrawLibraryVersion)(
554
566
  "tldraw",
555
- "3.16.0-canary.5dac57cf9465",
567
+ "3.16.0-canary.6074088f67bd",
556
568
  "cjs"
557
569
  );
558
570
  //# sourceMappingURL=index.js.map