tldraw 3.16.0-canary.ffdf566dd0a8 → 3.16.0-internal.71f83a8a571b

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 (515) hide show
  1. package/dist-cjs/index.d.ts +348 -113
  2. package/dist-cjs/index.js +40 -14
  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/arrowLabel.js +6 -0
  13. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +3 -3
  14. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  15. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  16. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  17. package/dist-cjs/lib/shapes/arrow/elbow/elbowArrowSnapLines.js.map +1 -1
  18. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +4 -4
  19. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  21. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  22. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  23. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  24. package/dist-cjs/lib/shapes/frame/FrameShapeTool.js.map +1 -1
  25. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +20 -13
  26. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  27. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  28. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  29. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +2 -2
  30. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +2 -2
  31. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +3 -2
  32. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  33. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  34. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  35. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  36. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  37. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  38. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  39. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  40. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  41. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +6 -5
  42. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  43. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +4 -4
  44. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  45. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -3
  46. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  47. package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +2 -2
  48. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  49. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  50. package/dist-cjs/lib/shapes/shared/crop.js +1 -0
  51. package/dist-cjs/lib/shapes/shared/crop.js.map +2 -2
  52. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  53. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +3 -4
  54. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  55. package/dist-cjs/lib/shapes/shared/useEditableRichText.js.map +2 -2
  56. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
  57. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  58. package/dist-cjs/lib/shapes/text/PlainTextArea.js +2 -2
  59. package/dist-cjs/lib/shapes/text/PlainTextArea.js.map +2 -2
  60. package/dist-cjs/lib/shapes/text/RichTextArea.js +3 -3
  61. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  62. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  63. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  64. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  65. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  66. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  67. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  68. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  69. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  70. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +1 -1
  71. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  72. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  73. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  74. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  75. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  76. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  77. package/dist-cjs/lib/ui/components/A11y.js +1 -1
  78. package/dist-cjs/lib/ui/components/A11y.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  80. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  81. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  82. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  83. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  84. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  85. package/dist-cjs/lib/ui/components/EditLinkDialog.js +11 -1
  86. package/dist-cjs/lib/ui/components/EditLinkDialog.js.map +2 -2
  87. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  88. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  89. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  90. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  91. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  92. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  93. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  94. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  95. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +3 -2
  96. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  97. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  98. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  99. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  100. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  101. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +9 -4
  102. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  103. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +255 -316
  104. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  105. package/dist-cjs/lib/ui/components/{primitives/TldrawUiButtonPicker.js → StylePanel/StylePanelButtonPicker.js} +52 -56
  106. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
  107. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
  108. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
  109. package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +26 -25
  110. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
  111. package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +47 -43
  112. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
  113. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
  114. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
  115. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +3 -2
  116. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  117. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +39 -10
  118. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  119. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  120. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  121. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
  122. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
  123. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +3 -3
  124. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  125. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  126. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  127. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +2 -2
  128. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  129. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +11 -2
  130. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  131. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +2 -2
  132. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js.map +2 -2
  133. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  134. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  135. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +18 -5
  136. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  137. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +21 -4
  138. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  139. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +185 -158
  140. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  141. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  142. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  143. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  144. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  145. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  146. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +154 -20
  147. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  148. package/dist-cjs/lib/ui/context/actions.js +23 -10
  149. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  150. package/dist-cjs/lib/ui/context/components.js +2 -0
  151. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  152. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  153. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +1 -1
  154. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  155. package/dist-cjs/lib/ui/hooks/useExportAs.js +3 -2
  156. package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
  157. package/dist-cjs/lib/ui/hooks/useTools.js +94 -9
  158. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  159. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  160. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +4 -2
  161. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  162. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  163. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  164. package/dist-cjs/lib/ui/version.js +3 -3
  165. package/dist-cjs/lib/ui/version.js.map +1 -1
  166. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +1 -1
  167. package/dist-cjs/lib/utils/export/copyAs.js +1 -2
  168. package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
  169. package/dist-cjs/lib/utils/export/export.js +0 -20
  170. package/dist-cjs/lib/utils/export/export.js.map +2 -2
  171. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  172. package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
  173. package/dist-esm/index.d.mts +348 -113
  174. package/dist-esm/index.mjs +75 -29
  175. package/dist-esm/index.mjs.map +2 -2
  176. package/dist-esm/lib/Tldraw.mjs +14 -4
  177. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  178. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  179. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  180. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  181. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  182. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  183. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  184. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +6 -0
  185. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
  186. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  187. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  188. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  189. package/dist-esm/lib/shapes/arrow/elbow/elbowArrowSnapLines.mjs.map +1 -1
  190. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +5 -5
  191. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  192. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  193. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  194. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  195. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  196. package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs.map +1 -1
  197. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +21 -13
  198. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  199. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  200. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  201. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +3 -3
  202. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +2 -2
  203. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +4 -2
  204. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  205. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  206. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  207. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  208. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  209. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  210. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  211. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  212. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  213. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +7 -5
  214. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  215. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +5 -5
  216. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  217. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -3
  218. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  219. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
  220. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  221. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  222. package/dist-esm/lib/shapes/shared/crop.mjs +1 -0
  223. package/dist-esm/lib/shapes/shared/crop.mjs.map +2 -2
  224. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  225. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +4 -5
  226. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  227. package/dist-esm/lib/shapes/shared/useEditableRichText.mjs.map +2 -2
  228. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
  229. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  230. package/dist-esm/lib/shapes/text/PlainTextArea.mjs +3 -3
  231. package/dist-esm/lib/shapes/text/PlainTextArea.mjs.map +2 -2
  232. package/dist-esm/lib/shapes/text/RichTextArea.mjs +3 -4
  233. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  234. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  235. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  236. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  237. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  238. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  239. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  240. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  241. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  242. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +1 -1
  243. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  244. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  245. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  246. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  247. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  248. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  249. package/dist-esm/lib/ui/components/A11y.mjs +2 -2
  250. package/dist-esm/lib/ui/components/A11y.mjs.map +2 -2
  251. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  252. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  253. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  254. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  255. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  256. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  257. package/dist-esm/lib/ui/components/EditLinkDialog.mjs +11 -1
  258. package/dist-esm/lib/ui/components/EditLinkDialog.mjs.map +2 -2
  259. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  260. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  261. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  262. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  263. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  264. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  265. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  266. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  267. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +4 -3
  268. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  269. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  270. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  271. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  272. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  273. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +14 -5
  274. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  275. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +257 -320
  276. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  277. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +126 -0
  278. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
  279. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
  280. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
  281. package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +23 -22
  282. package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
  283. package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +44 -40
  284. package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
  285. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
  286. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
  287. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +3 -2
  288. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  289. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +39 -10
  290. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  291. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  292. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  293. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
  294. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
  295. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +3 -3
  296. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  297. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  298. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  299. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +2 -2
  300. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  301. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +12 -3
  302. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  303. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs +3 -3
  304. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs.map +2 -2
  305. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  306. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  307. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +18 -5
  308. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  309. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +21 -4
  310. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  311. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +195 -160
  312. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  313. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  314. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  315. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  316. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  317. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  318. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +162 -22
  319. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  320. package/dist-esm/lib/ui/context/actions.mjs +23 -10
  321. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  322. package/dist-esm/lib/ui/context/components.mjs +2 -0
  323. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  324. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  325. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +2 -2
  326. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  327. package/dist-esm/lib/ui/hooks/useExportAs.mjs +3 -2
  328. package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
  329. package/dist-esm/lib/ui/hooks/useTools.mjs +102 -10
  330. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  331. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +4 -2
  332. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  333. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  334. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  335. package/dist-esm/lib/ui/version.mjs +3 -3
  336. package/dist-esm/lib/ui/version.mjs.map +1 -1
  337. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +1 -1
  338. package/dist-esm/lib/utils/export/copyAs.mjs +1 -2
  339. package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
  340. package/dist-esm/lib/utils/export/export.mjs +0 -20
  341. package/dist-esm/lib/utils/export/export.mjs.map +2 -2
  342. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  343. package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
  344. package/package.json +11 -34
  345. package/src/index.ts +56 -22
  346. package/src/lib/Tldraw.tsx +15 -2
  347. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  348. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  349. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  350. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +6 -5
  351. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +48 -6
  352. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  353. package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
  354. package/src/lib/shapes/arrow/arrowTargetState.ts +1 -1
  355. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  356. package/src/lib/shapes/arrow/elbow/elbowArrowSnapLines.tsx +2 -2
  357. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +5 -5
  358. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  359. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  360. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  361. package/src/lib/shapes/frame/FrameShapeTool.ts +1 -1
  362. package/src/lib/shapes/frame/FrameShapeUtil.tsx +30 -14
  363. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  364. package/src/lib/shapes/frame/components/FrameLabelInput.tsx +3 -3
  365. package/src/lib/shapes/geo/GeoShapeUtil.tsx +4 -2
  366. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  367. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  368. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  369. package/src/lib/shapes/line/LineShapeUtil.test.tsx +8 -7
  370. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  371. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  372. package/src/lib/shapes/note/NoteShapeTool.test.ts +2 -1
  373. package/src/lib/shapes/note/NoteShapeUtil.tsx +10 -4
  374. package/src/lib/shapes/shared/HyperlinkButton.tsx +5 -5
  375. package/src/lib/shapes/shared/PlainTextLabel.tsx +2 -7
  376. package/src/lib/shapes/shared/RichTextLabel.tsx +2 -1
  377. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  378. package/src/lib/shapes/shared/crop.ts +1 -0
  379. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  380. package/src/lib/shapes/shared/useEditablePlainText.ts +12 -12
  381. package/src/lib/shapes/shared/useEditableRichText.ts +7 -3
  382. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
  383. package/src/lib/shapes/text/PlainTextArea.tsx +3 -3
  384. package/src/lib/shapes/text/RichTextArea.tsx +3 -4
  385. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  386. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  387. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  388. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  389. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  390. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +1 -1
  391. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  392. package/src/lib/ui/TldrawUi.tsx +33 -12
  393. package/src/lib/ui/assetUrls.ts +13 -10
  394. package/src/lib/ui/components/A11y.tsx +2 -2
  395. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  396. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  397. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  398. package/src/lib/ui/components/EditLinkDialog.tsx +16 -6
  399. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  400. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  401. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  402. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  403. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +5 -4
  404. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  405. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  406. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +27 -13
  407. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +260 -385
  408. package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +66 -50
  409. package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
  410. package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +31 -22
  411. package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
  412. package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
  413. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +5 -4
  414. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +33 -16
  415. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  416. package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
  417. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +5 -5
  418. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  419. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +2 -2
  420. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +8 -3
  421. package/src/lib/ui/components/primitives/TldrawUiInput.tsx +3 -3
  422. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  423. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +52 -32
  424. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +35 -9
  425. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +232 -180
  426. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  427. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  428. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  429. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +221 -19
  430. package/src/lib/ui/context/actions.tsx +23 -10
  431. package/src/lib/ui/context/components.tsx +3 -0
  432. package/src/lib/ui/context/events.tsx +2 -1
  433. package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
  434. package/src/lib/ui/hooks/useExportAs.ts +3 -2
  435. package/src/lib/ui/hooks/useTools.tsx +140 -10
  436. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +2 -0
  437. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +4 -2
  438. package/src/lib/ui/kbd-utils.ts +10 -3
  439. package/src/lib/ui/version.ts +3 -3
  440. package/src/lib/ui.css +381 -306
  441. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  442. package/src/lib/utils/excalidraw/putExcalidrawContent.ts +6 -6
  443. package/src/lib/utils/export/copyAs.ts +1 -24
  444. package/src/lib/utils/export/export.ts +0 -36
  445. package/src/lib/utils/export/exportAs.ts +1 -32
  446. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  447. package/src/test/A11y.test.tsx +3 -2
  448. package/src/test/ClickManager.test.ts +7 -6
  449. package/src/test/Editor.test.tsx +55 -27
  450. package/src/test/EraserTool.test.ts +184 -13
  451. package/src/test/HandTool.test.ts +10 -9
  452. package/src/test/HighlightShape.test.ts +2 -1
  453. package/src/test/SelectTool.test.ts +3 -2
  454. package/src/test/TLUserPreferences.test.ts +4 -3
  455. package/src/test/TestEditor.ts +13 -15
  456. package/src/test/TldrawEditor.test.tsx +26 -19
  457. package/src/test/ZoomTool.test.ts +7 -6
  458. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  459. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  460. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  461. package/src/test/arrows-megabus.test.tsx +5 -4
  462. package/src/test/bindings.test.tsx +24 -37
  463. package/src/test/bookmark-shapes.test.ts +1 -8
  464. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  465. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  466. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  467. package/src/test/commands/alignShapes.test.tsx +25 -24
  468. package/src/test/commands/animationSpeed.test.ts +2 -1
  469. package/src/test/commands/centerOnPoint.test.ts +3 -2
  470. package/src/test/commands/clipboard.test.ts +3 -2
  471. package/src/test/commands/createShapes.test.ts +2 -1
  472. package/src/test/commands/deleteShapes.test.ts +2 -1
  473. package/src/test/commands/distributeShapes.test.tsx +11 -10
  474. package/src/test/commands/getSvgString.test.ts +2 -1
  475. package/src/test/commands/packShapes.test.ts +5 -4
  476. package/src/test/commands/putContent.test.ts +1 -0
  477. package/src/test/commands/resizeShape.test.ts +2 -1
  478. package/src/test/commands/rotateShapes.test.ts +7 -6
  479. package/src/test/commands/setCamera.test.ts +4 -3
  480. package/src/test/commands/setCurrentPage.test.ts +3 -2
  481. package/src/test/commands/stackShapes.test.ts +11 -10
  482. package/src/test/commands/stretch.test.tsx +13 -12
  483. package/src/test/commands/updateShapes.test.ts +9 -5
  484. package/src/test/createDeepLink.test.tsx +2 -1
  485. package/src/test/cropping.test.ts +3 -2
  486. package/src/test/custom-clipping.test.ts +442 -0
  487. package/src/test/customSnapping.test.tsx +55 -41
  488. package/src/test/drawing.test.ts +2 -1
  489. package/src/test/flipShapes.test.ts +4 -3
  490. package/src/test/frames.test.ts +25 -24
  491. package/src/test/getCulledShapes.test.tsx +80 -4
  492. package/src/test/groups.test.tsx +5 -3
  493. package/src/test/handleDeepLink.test.tsx +2 -1
  494. package/src/test/maxShapes.test.ts +3 -2
  495. package/src/test/modifiers.test.ts +5 -4
  496. package/src/test/navigation.test.ts +12 -11
  497. package/src/test/panning.test.ts +2 -1
  498. package/src/test/perf/perf.test.ts +2 -1
  499. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  500. package/src/test/resizing.test.ts +39 -38
  501. package/src/test/select.test.tsx +4 -3
  502. package/src/test/selection-omnibus.test.ts +11 -10
  503. package/src/test/shapeutils.test.ts +4 -3
  504. package/src/test/translating.test.ts +11 -10
  505. package/tldraw.css +689 -598
  506. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  507. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
  508. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
  509. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
  510. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
  511. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
  512. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
  513. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +0 -115
  514. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
  515. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +0 -109
@@ -13,11 +13,13 @@ import { CSSProperties } from 'react';
13
13
  import { Editor } from '@tldraw/editor';
14
14
  import { Extension } from '@tiptap/core';
15
15
  import { Extensions } from '@tiptap/core';
16
+ import { ForwardRefExoticComponent } from 'react';
16
17
  import { Geometry2d } from '@tldraw/editor';
17
18
  import { Geometry2dFilters } from '@tldraw/editor';
18
19
  import { Geometry2dOptions } from '@tldraw/editor';
19
20
  import { Group2d } from '@tldraw/editor';
20
21
  import { HandleSnapGeometry } from '@tldraw/editor';
22
+ import { HTMLAttributes } from 'react';
21
23
  import { IndexKey } from '@tldraw/editor';
22
24
  import { JsonObject } from '@tldraw/editor';
23
25
  import { JSX as JSX_2 } from 'react/jsx-runtime';
@@ -37,6 +39,7 @@ import { ReadonlySharedStyleMap } from '@tldraw/editor';
37
39
  import { RecordProps } from '@tldraw/editor';
38
40
  import { Rectangle2d } from '@tldraw/editor';
39
41
  import { RecursivePartial } from '@tldraw/editor';
42
+ import { RefAttributes } from 'react';
40
43
  import { RefObject } from 'react';
41
44
  import { Result } from '@tldraw/editor';
42
45
  import { RichTextFontVisitorState } from '@tldraw/editor';
@@ -65,7 +68,6 @@ import { TLClickEventInfo } from '@tldraw/editor';
65
68
  import { TLContent } from '@tldraw/editor';
66
69
  import { TLCropInfo } from '@tldraw/editor';
67
70
  import { TLDefaultColorStyle } from '@tldraw/editor';
68
- import { TLDefaultColorTheme } from '@tldraw/editor';
69
71
  import { TLDefaultColorThemeColor } from '@tldraw/editor';
70
72
  import { TLDefaultDashStyle } from '@tldraw/editor';
71
73
  import { TLDefaultFillStyle } from '@tldraw/editor';
@@ -190,9 +192,6 @@ export declare class ArrowBindingUtil extends BindingUtil<TLArrowBinding> {
190
192
  /** @public @react */
191
193
  export declare function ArrowDownToolbarItem(): JSX_2.Element;
192
194
 
193
- /** @public @react */
194
- export declare function ArrowheadStylePickerSet({ styles }: StylePickerSetProps): JSX_2.Element | null;
195
-
196
195
  /** @public @react */
197
196
  export declare function ArrowLeftToolbarItem(): JSX_2.Element;
198
197
 
@@ -497,9 +496,6 @@ export declare function CloudToolbarItem(): JSX_2.Element;
497
496
  /** @public @react */
498
497
  export declare function ColorSchemeMenu(): JSX_2.Element;
499
498
 
500
- /** @public @react */
501
- export declare function CommonStylePickerSet({ styles, theme }: ThemeStylePickerSetProps): JSX_2.Element;
502
-
503
499
  /**
504
500
  * Contains the size within the given box size
505
501
  *
@@ -531,14 +527,6 @@ export declare function ConvertToEmbedMenuItem(): JSX_2.Element | null;
531
527
  */
532
528
  export declare function copyAs(editor: Editor, ids: TLShapeId[], opts: CopyAsOptions): Promise<void>;
533
529
 
534
- /**
535
- * @deprecated The format parameter is now part of the opts object.
536
- * @public
537
- */
538
- export declare function copyAs(editor: Editor, ids: TLShapeId[], format: TLCopyType, opts?: TLImageExportOptions & {
539
- format?: undefined;
540
- }): Promise<void>;
541
-
542
530
  /** @public @react */
543
531
  export declare function CopyAsMenuGroup(): JSX_2.Element;
544
532
 
@@ -850,6 +838,9 @@ export declare let defaultEditorAssetUrls: TLEditorAssetUrls;
850
838
  /** @public */
851
839
  export declare type DefaultEmbedDefinitionType = (typeof DEFAULT_EMBED_DEFINITIONS)[number]['type'];
852
840
 
841
+ /** @public @react */
842
+ export declare function DefaultFollowingIndicator(): JSX_2.Element | null;
843
+
853
844
  /** @public */
854
845
  export declare const DefaultFontFaces: TLDefaultFonts;
855
846
 
@@ -993,7 +984,7 @@ export declare function DefaultSharePanel(): JSX_2.Element;
993
984
  export declare const DefaultStylePanel: NamedExoticComponent<TLUiStylePanelProps>;
994
985
 
995
986
  /** @public @react */
996
- export declare function DefaultStylePanelContent({ styles }: TLUiStylePanelContentProps): JSX_2.Element | null;
987
+ export declare function DefaultStylePanelContent(): JSX_2.Element;
997
988
 
998
989
  /** @public @react */
999
990
  export declare const DefaultToasts: NamedExoticComponent<object>;
@@ -1014,6 +1005,11 @@ export declare function DefaultToolbarContent(): JSX_2.Element;
1014
1005
  /** @public */
1015
1006
  export declare interface DefaultToolbarProps {
1016
1007
  children?: ReactNode;
1008
+ orientation?: 'horizontal' | 'vertical';
1009
+ minItems?: number;
1010
+ minSizePx?: number;
1011
+ maxItems?: number;
1012
+ maxSizePx?: number;
1017
1013
  }
1018
1014
 
1019
1015
  /** @public */
@@ -1481,12 +1477,6 @@ export declare interface ExampleDialogProps {
1481
1477
  */
1482
1478
  export declare function exportAs(editor: Editor, ids: TLShapeId[], opts: ExportAsOptions): Promise<void>;
1483
1479
 
1484
- /**
1485
- * @deprecated The format & name parameters are now part of the opts object.
1486
- * @public
1487
- */
1488
- export declare function exportAs(editor: Editor, ids: TLShapeId[], format?: TLExportType, name?: string, opts?: TLImageExportOptions): Promise<void>;
1489
-
1490
1480
  /** @public */
1491
1481
  export declare interface ExportAsOptions extends TLImageExportOptions {
1492
1482
  /** {@inheritdoc @tldraw/editor#TLImageExportOptions.format} */
@@ -1498,23 +1488,6 @@ export declare interface ExportAsOptions extends TLImageExportOptions {
1498
1488
  /** @public @react */
1499
1489
  export declare function ExportFileContentSubMenu(): JSX_2.Element;
1500
1490
 
1501
- /**
1502
- * Export the given shapes as a blob.
1503
- * @param editor - The editor instance.
1504
- * @param ids - The ids of the shapes to export.
1505
- * @param format - The format to export as.
1506
- * @param opts - Rendering options.
1507
- * @returns A promise that resolves to a blob.
1508
- * @deprecated Use {@link @tldraw/editor#Editor.toImage} instead.
1509
- * @public
1510
- */
1511
- export declare function exportToBlob({ editor, ids, format, opts, }: {
1512
- editor: Editor;
1513
- format: TLExportType;
1514
- ids: TLShapeId[];
1515
- opts?: TLImageExportOptions;
1516
- }): Promise<Blob>;
1517
-
1518
1491
  /** @public @react */
1519
1492
  export declare function ExtrasGroup(): JSX_2.Element;
1520
1493
 
@@ -1555,7 +1528,7 @@ export declare interface FrameShapeOptions {
1555
1528
  export declare class FrameShapeTool extends BaseBoxShapeTool {
1556
1529
  static id: string;
1557
1530
  static initial: string;
1558
- shapeType: string;
1531
+ shapeType: "frame";
1559
1532
  onCreate(shape: null | TLShape): void;
1560
1533
  }
1561
1534
 
@@ -1571,6 +1544,7 @@ export declare class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
1571
1544
  canEdit(): boolean;
1572
1545
  canResize(): boolean;
1573
1546
  canResizeChildren(): boolean;
1547
+ isExportBoundsContainer(): boolean;
1574
1548
  getDefaultProps(): TLFrameShape['props'];
1575
1549
  getAriaDescriptor(shape: TLFrameShape): string;
1576
1550
  getGeometry(shape: TLFrameShape): Geometry2d;
@@ -1579,6 +1553,7 @@ export declare class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
1579
1553
  toSvg(shape: TLFrameShape, ctx: SvgExportContext): JSX_2.Element;
1580
1554
  indicator(shape: TLFrameShape): JSX_2.Element;
1581
1555
  providesBackgroundForChildren(): boolean;
1556
+ getClipPath(shape: TLFrameShape): Vec[];
1582
1557
  canReceiveNewChildrenOfType(shape: TLShape): boolean;
1583
1558
  onResize(shape: any, info: TLResizeInfo<any>): any;
1584
1559
  getInterpolatedProps(startShape: TLFrameShape, endShape: TLFrameShape, t: number): TLFrameShapeProps;
@@ -1727,9 +1702,6 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1727
1702
  getInterpolatedProps(startShape: TLGeoShape, endShape: TLGeoShape, t: number): TLGeoShapeProps;
1728
1703
  }
1729
1704
 
1730
- /** @public @react */
1731
- export declare function GeoStylePickerSet({ styles }: StylePickerSetProps): JSX_2.Element | null;
1732
-
1733
1705
  /** @public */
1734
1706
  export declare function getArrowBindings(editor: Editor, shape: TLArrowShape): TLArrowBindings;
1735
1707
 
@@ -1772,6 +1744,29 @@ export declare function getHitShapeOnCanvasPointerDown(editor: Editor, hitLabels
1772
1744
  /** @public */
1773
1745
  export declare function getMediaAssetInfoPartial(file: File, assetId: TLAssetId, isImageType: boolean, isVideoType: boolean, maxImageDimension?: number): Promise<TLImageAsset | TLVideoAsset>;
1774
1746
 
1747
+ /**
1748
+ * ## getStrokePoints
1749
+ *
1750
+ * Get an array of points as objects with an adjusted point, pressure, vector, distance, and
1751
+ * runningLength.
1752
+ *
1753
+ * @param points - An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is
1754
+ * optional in both cases.
1755
+ * @param options - An object with options.
1756
+ * @public
1757
+ */
1758
+ export declare function getStrokePoints(rawInputPoints: VecLike[], options?: StrokeOptions): StrokePoint[];
1759
+
1760
+ /**
1761
+ * Turn an array of stroke points into a path of quadradic curves.
1762
+ *
1763
+ * @param points - The stroke points returned from perfect-freehand
1764
+ * @param closed - Whether the shape is closed
1765
+ *
1766
+ * @public
1767
+ */
1768
+ export declare function getSvgPathFromStrokePoints(points: StrokePoint[], closed?: boolean): string;
1769
+
1775
1770
  /**
1776
1771
  * Original (uncropped) width and height of shape.
1777
1772
  *
@@ -1867,6 +1862,7 @@ export declare class ImageShapeUtil extends BaseBoxShapeUtil<TLImageShape> {
1867
1862
  static migrations: TLPropsMigrations;
1868
1863
  isAspectRatioLocked(): boolean;
1869
1864
  canCrop(): boolean;
1865
+ isExportBoundsContainer(): boolean;
1870
1866
  getDefaultProps(): TLImageShape['props'];
1871
1867
  getGeometry(shape: TLImageShape): Geometry2d;
1872
1868
  getAriaDescriptor(shape: TLImageShape): string;
@@ -2117,21 +2113,57 @@ export declare class NoteShapeUtil extends ShapeUtil<TLNoteShape> {
2117
2113
  /** @public @react */
2118
2114
  export declare function NoteToolbarItem(): JSX_2.Element;
2119
2115
 
2116
+ /**
2117
+ * Checks if a file is allowed to be uploaded. If it is not, it will show a toast explaining why to the user.
2118
+ *
2119
+ * @param file - The file to check
2120
+ * @param options - The options for the external content handler
2121
+ * @returns True if the file is allowed, false otherwise
2122
+ * @public
2123
+ */
2124
+ export declare function notifyIfFileNotAllowed(file: File, options: TLDefaultExternalContentHandlerOpts): boolean;
2125
+
2120
2126
  /** @public @react */
2121
2127
  export declare function OfflineIndicator(): JSX_2.Element;
2122
2128
 
2123
- /** @public @react */
2124
- export declare function OpacitySlider(): JSX_2.Element | null;
2129
+ /**
2130
+ * A helper method to use in {@link TLUiToolItem#onDragStart} to create a shape by dragging it from
2131
+ * the toolbar.
2132
+ * @public
2133
+ */
2134
+ export declare function onDragFromToolbarToCreateShape(editor: Editor, info: TLPointerEventInfo, opts: OnDragFromToolbarToCreateShapesOpts): void;
2135
+
2136
+ /**
2137
+ * Options for {@link onDragFromToolbarToCreateShape}.
2138
+ * @public
2139
+ */
2140
+ export declare interface OnDragFromToolbarToCreateShapesOpts {
2141
+ /**
2142
+ * Create the shape being dragged. You don't need to worry about positioning it, as it'll be
2143
+ * immediately updated with the correct position.
2144
+ */
2145
+ createShape(id: TLShapeId): void;
2146
+ /**
2147
+ * Called once the drag interaction has finished.
2148
+ */
2149
+ onDragEnd?(id: TLShapeId): void;
2150
+ }
2125
2151
 
2126
2152
  /** @public @react */
2127
2153
  export declare function OvalToolbarItem(): JSX_2.Element;
2128
2154
 
2129
2155
  /** @public @react */
2130
- export declare function OverflowingToolbar({ children }: OverflowingToolbarProps): JSX_2.Element;
2156
+ export declare function OverflowingToolbar({ children, orientation, sizingParentClassName, minItems, minSizePx, maxItems, maxSizePx, }: OverflowingToolbarProps): JSX_2.Element;
2131
2157
 
2132
2158
  /** @public */
2133
2159
  export declare interface OverflowingToolbarProps {
2134
2160
  children: React.ReactNode;
2161
+ orientation: 'horizontal' | 'vertical';
2162
+ sizingParentClassName: string;
2163
+ minItems: number;
2164
+ minSizePx: number;
2165
+ maxItems: number;
2166
+ maxSizePx: number;
2135
2167
  }
2136
2168
 
2137
2169
  /** @public @react */
@@ -2286,7 +2318,11 @@ export declare const PlainTextLabel: React_3.NamedExoticComponent<PlainTextLabel
2286
2318
  /** @public */
2287
2319
  export declare interface PlainTextLabelProps {
2288
2320
  shapeId: TLShapeId;
2289
- type: string;
2321
+ type: Extract<TLShape, {
2322
+ props: {
2323
+ text: string;
2324
+ };
2325
+ }>['type'];
2290
2326
  font: TLDefaultFontStyle;
2291
2327
  fontSize: number;
2292
2328
  lineHeight: number;
@@ -2428,7 +2464,11 @@ export declare const RichTextLabel: React_3.NamedExoticComponent<RichTextLabelPr
2428
2464
  /** @public */
2429
2465
  export declare interface RichTextLabelProps {
2430
2466
  shapeId: TLShapeId;
2431
- type: string;
2467
+ type: Extract<TLShape, {
2468
+ props: {
2469
+ richText: TLRichText;
2470
+ };
2471
+ }>['type'];
2432
2472
  font: TLDefaultFontStyle;
2433
2473
  fontSize: number;
2434
2474
  lineHeight: number;
@@ -2508,9 +2548,6 @@ export declare interface SolidPathBuilderOpts extends BasePathBuilderOpts {
2508
2548
 
2509
2549
  /* Excluded from this release type: Spinner */
2510
2550
 
2511
- /** @public @react */
2512
- export declare function SplineStylePickerSet({ styles }: StylePickerSetProps): JSX_2.Element | null;
2513
-
2514
2551
  /** @public @react */
2515
2552
  export declare function StackMenuItems(): JSX_2.Element;
2516
2553
 
@@ -2520,11 +2557,172 @@ export declare function StarToolbarItem(): JSX_2.Element;
2520
2557
  /** @public */
2521
2558
  export declare const STROKE_SIZES: Record<TLDefaultSizeStyle, number>;
2522
2559
 
2560
+ /**
2561
+ * The options object for `getStroke` or `getStrokePoints`.
2562
+ *
2563
+ * @public
2564
+ */
2565
+ export declare interface StrokeOptions {
2566
+ /** The base size (diameter) of the stroke. */
2567
+ size?: number;
2568
+ /** The effect of pressure on the stroke's size. */
2569
+ thinning?: number;
2570
+ /** How much to soften the stroke's edges. */
2571
+ smoothing?: number;
2572
+ streamline?: number;
2573
+ /** An easing function to apply to each point's pressure. */
2574
+ easing?(pressure: number): number;
2575
+ /** Whether to simulate pressure based on velocity. */
2576
+ simulatePressure?: boolean;
2577
+ /** Cap, taper and easing for the start of the line. */
2578
+ start?: {
2579
+ cap?: boolean;
2580
+ easing?(distance: number): number;
2581
+ taper?: boolean | number;
2582
+ };
2583
+ /** Cap, taper and easing for the end of the line. */
2584
+ end?: {
2585
+ cap?: boolean;
2586
+ easing?(distance: number): number;
2587
+ taper?: boolean | number;
2588
+ };
2589
+ /** Whether to handle the points as a completed stroke. */
2590
+ last?: boolean;
2591
+ }
2592
+
2593
+ /**
2594
+ * The points returned by `getStrokePoints`, and the input for `getStrokeOutlinePoints`
2595
+ *
2596
+ * @public
2597
+ */
2598
+ export declare interface StrokePoint {
2599
+ point: Vec;
2600
+ input: Vec;
2601
+ vector: Vec;
2602
+ pressure: number;
2603
+ distance: number;
2604
+ runningLength: number;
2605
+ radius: number;
2606
+ }
2607
+
2608
+ /** @public @react */
2609
+ export declare function StylePanelArrowheadPicker(): JSX_2.Element | null;
2610
+
2611
+ /** @public @react */
2612
+ export declare function StylePanelArrowKindPicker(): JSX_2.Element | null;
2613
+
2523
2614
  /** @public */
2524
- export declare interface StylePickerSetProps {
2615
+ export declare const StylePanelButtonPicker: <T extends string>(props: StylePanelButtonPickerProps<T>) => ReactElement;
2616
+
2617
+ /** @public */
2618
+ export declare interface StylePanelButtonPickerProps<T extends string> {
2619
+ title: string;
2620
+ uiType: string;
2621
+ style: StyleProp<T>;
2622
+ value: SharedStyle<T>;
2623
+ items: StyleValuesForUi<T>;
2624
+ onValueChange?(style: StyleProp<T>, value: T): void;
2625
+ onHistoryMark?(id: string): void;
2626
+ }
2627
+
2628
+ /** @public @react */
2629
+ export declare function StylePanelColorPicker(): JSX_2.Element | null;
2630
+
2631
+ /** @public */
2632
+ export declare interface StylePanelContext {
2633
+ styles: ReadonlySharedStyleMap;
2634
+ showUiLabels: boolean;
2635
+ onHistoryMark(id: string): void;
2636
+ onValueChange<T>(style: StyleProp<T>, value: T): void;
2637
+ }
2638
+
2639
+ /** @public @react */
2640
+ export declare function StylePanelContextProvider({ children, styles }: StylePanelContextProviderProps): JSX_2.Element;
2641
+
2642
+ /** @public */
2643
+ export declare interface StylePanelContextProviderProps {
2644
+ children: React.ReactNode;
2525
2645
  styles: ReadonlySharedStyleMap;
2526
2646
  }
2527
2647
 
2648
+ /** @public @react */
2649
+ export declare function StylePanelDashPicker(): JSX_2.Element | null;
2650
+
2651
+ /** @public @react */
2652
+ export declare const StylePanelDoubleDropdownPicker: <T extends string>(props: StylePanelDoubleDropdownPickerProps<T>) => React_2.JSX.Element;
2653
+
2654
+ /** @public */
2655
+ export declare interface StylePanelDoubleDropdownPickerProps<T extends string> {
2656
+ uiTypeA: string;
2657
+ uiTypeB: string;
2658
+ label: Exclude<string, TLUiTranslationKey> | TLUiTranslationKey;
2659
+ labelA: Exclude<string, TLUiTranslationKey> | TLUiTranslationKey;
2660
+ labelB: Exclude<string, TLUiTranslationKey> | TLUiTranslationKey;
2661
+ itemsA: StyleValuesForUi<T>;
2662
+ itemsB: StyleValuesForUi<T>;
2663
+ styleA: StyleProp<T>;
2664
+ styleB: StyleProp<T>;
2665
+ valueA: SharedStyle<T>;
2666
+ valueB: SharedStyle<T>;
2667
+ onValueChange?(style: StyleProp<T>, value: T): void;
2668
+ }
2669
+
2670
+ /** @public @react */
2671
+ export declare const StylePanelDropdownPicker: <T extends string>(props: StylePanelDropdownPickerProps<T>) => React_2.JSX.Element;
2672
+
2673
+ /** @public */
2674
+ export declare interface StylePanelDropdownPickerProps<T extends string> {
2675
+ id: string;
2676
+ label?: Exclude<string, TLUiTranslationKey> | TLUiTranslationKey;
2677
+ uiType: string;
2678
+ stylePanelType: string;
2679
+ style: StyleProp<T>;
2680
+ value: SharedStyle<T>;
2681
+ items: StyleValuesForUi<T>;
2682
+ type: 'icon' | 'menu' | 'tool';
2683
+ onValueChange?(style: StyleProp<T>, value: T): void;
2684
+ }
2685
+
2686
+ /** @public @react */
2687
+ export declare function StylePanelFillPicker(): JSX_2.Element | null;
2688
+
2689
+ /** @public @react */
2690
+ export declare function StylePanelFontPicker(): JSX_2.Element | null;
2691
+
2692
+ /** @public @react */
2693
+ export declare function StylePanelGeoShapePicker(): JSX_2.Element | null;
2694
+
2695
+ /** @public @react */
2696
+ export declare function StylePanelLabelAlignPicker(): JSX_2.Element | null;
2697
+
2698
+ /** @public @react */
2699
+ export declare function StylePanelOpacityPicker(): JSX_2.Element | null;
2700
+
2701
+ /** @public @react */
2702
+ export declare function StylePanelSection({ children }: StylePanelSectionProps): JSX_2.Element;
2703
+
2704
+ /** @public */
2705
+ export declare interface StylePanelSectionProps {
2706
+ children: React_3.ReactNode;
2707
+ }
2708
+
2709
+ /** @public @react */
2710
+ export declare function StylePanelSizePicker(): JSX_2.Element | null;
2711
+
2712
+ /** @public @react */
2713
+ export declare function StylePanelSplinePicker(): JSX_2.Element | null;
2714
+
2715
+ /** @public @react */
2716
+ export declare function StylePanelSubheading({ children }: StylePanelSubheadingProps): JSX_2.Element;
2717
+
2718
+ /** @public */
2719
+ export declare interface StylePanelSubheadingProps {
2720
+ children: React.ReactNode;
2721
+ }
2722
+
2723
+ /** @public @react */
2724
+ export declare function StylePanelTextAlignPicker(): JSX_2.Element | null;
2725
+
2528
2726
  /** @public */
2529
2727
  export declare type StyleValuesForUi<T> = readonly {
2530
2728
  readonly icon: string | TLUiIconJsx;
@@ -2564,12 +2762,6 @@ export declare interface TextAreaProps {
2564
2762
  */
2565
2763
  export declare const TextDirection: Extension<any, any>;
2566
2764
 
2567
- /**
2568
- * @deprecated Use `PlainTextLabel` instead.
2569
- * @public
2570
- */
2571
- export declare const TextLabel: React_3.NamedExoticComponent<PlainTextLabelProps>;
2572
-
2573
2765
  /** @public */
2574
2766
  export declare interface TextShapeOptions {
2575
2767
  /** How much addition padding should be added to the horizontal geometry of the shape when binding to an arrow? */
@@ -2647,18 +2839,9 @@ export declare class TextShapeUtil extends ShapeUtil<TLTextShape> {
2647
2839
  } | undefined;
2648
2840
  }
2649
2841
 
2650
- /** @public @react */
2651
- export declare function TextStylePickerSet({ theme, styles }: ThemeStylePickerSetProps): JSX_2.Element | null;
2652
-
2653
2842
  /** @public @react */
2654
2843
  export declare function TextToolbarItem(): JSX_2.Element;
2655
2844
 
2656
- /** @public */
2657
- export declare interface ThemeStylePickerSetProps {
2658
- styles: ReadonlySharedStyleMap;
2659
- theme: TLDefaultColorTheme;
2660
- }
2661
-
2662
2845
  /**
2663
2846
  * Default extensions for the TipTap editor.
2664
2847
  *
@@ -2915,8 +3098,12 @@ export declare function TldrawUiButtonIcon({ icon, small, invertIcon }: TLUiButt
2915
3098
  /** @public @react */
2916
3099
  export declare function TldrawUiButtonLabel({ children }: TLUiButtonLabelProps): JSX_2.Element;
2917
3100
 
2918
- /** @public */
2919
- export declare const TldrawUiButtonPicker: <T extends string>(props: TLUiButtonPickerProps<T>) => ReactElement;
3101
+ /**
3102
+ * A column, usually of UI controls like buttons, select dropdown, checkboxes, etc.
3103
+ *
3104
+ * @public @react
3105
+ */
3106
+ export declare const TldrawUiColumn: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
2920
3107
 
2921
3108
  /** @public @react */
2922
3109
  export declare function TldrawUiComponentsProvider({ overrides, children, }: TLUiComponentsProviderProps): JSX_2.Element;
@@ -2980,9 +3167,19 @@ export declare function TldrawUiDropdownMenuTrigger({ children, ...rest }: TLUiD
2980
3167
  /** @public @react */
2981
3168
  export declare function TldrawUiEventsProvider({ onEvent, children }: EventsProviderProps): JSX_2.Element;
2982
3169
 
3170
+ /**
3171
+ * A tight grid 4 elements wide, usually of UI controls like buttons, select dropdown, checkboxes,
3172
+ * etc.
3173
+ *
3174
+ * @public @react */
3175
+ export declare const TldrawUiGrid: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
3176
+
2983
3177
  /** @public @react */
2984
3178
  export declare const TldrawUiIcon: NamedExoticComponent<TLUiIconProps>;
2985
3179
 
3180
+ /** @public @react */
3181
+ export declare function TldrawUiInFrontOfTheCanvas(): JSX_2.Element;
3182
+
2986
3183
  /** @public @react */
2987
3184
  export declare const TldrawUiInput: React_2.ForwardRefExoticComponent<TLUiInputProps & React_2.RefAttributes<HTMLInputElement>>;
2988
3185
 
@@ -3005,7 +3202,7 @@ export declare function TldrawUiMenuContextProvider({ type, sourceId, children,
3005
3202
  export declare function TldrawUiMenuGroup({ id, label, className, children }: TLUiMenuGroupProps): boolean | JSX_2.Element | Iterable<ReactNode> | null | number | string | undefined;
3006
3203
 
3007
3204
  /** @public @react */
3008
- 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;
3205
+ 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;
3009
3206
 
3010
3207
  /** @public @react */
3011
3208
  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;
@@ -3013,8 +3210,24 @@ export declare function TldrawUiMenuSubmenu<Translation extends string = string>
3013
3210
  /** @public @react */
3014
3211
  export declare function TldrawUiMenuToolItem({ toolId, ...rest }: TLUiMenuToolItemProps): JSX_2.Element | null;
3015
3212
 
3213
+ /** @public */
3214
+ export declare interface TldrawUiOrientationContext {
3215
+ orientation: 'horizontal' | 'vertical';
3216
+ tooltipSide: 'bottom' | 'left' | 'right' | 'top';
3217
+ }
3218
+
3016
3219
  /** @public @react */
3017
- export declare function TldrawUiPopover({ id, children, onOpenChange, open }: TLUiPopoverProps): JSX_2.Element;
3220
+ export declare function TldrawUiOrientationProvider({ children, orientation, tooltipSide, }: TldrawUiOrientationProviderProps): JSX_2.Element;
3221
+
3222
+ /** @public */
3223
+ export declare interface TldrawUiOrientationProviderProps {
3224
+ children: ReactNode;
3225
+ orientation: 'horizontal' | 'vertical';
3226
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3227
+ }
3228
+
3229
+ /** @public @react */
3230
+ export declare function TldrawUiPopover({ id, children, onOpenChange, open, className }: TLUiPopoverProps): JSX_2.Element;
3018
3231
 
3019
3232
  /** @public @react */
3020
3233
  export declare function TldrawUiPopoverContent({ side, children, align, sideOffset, alignOffset, disableEscapeKeyDown, autoFocusFirstButton, }: TLUiPopoverContentProps): JSX_2.Element;
@@ -3044,6 +3257,13 @@ export declare interface TldrawUiProps extends TLUiContextProviderProps {
3044
3257
  assetUrls?: TLUiAssetUrlOverrides;
3045
3258
  }
3046
3259
 
3260
+ /**
3261
+ * A row, usually of UI controls like buttons, select dropdown, checkboxes, etc.
3262
+ *
3263
+ * @public @react
3264
+ */
3265
+ export declare const TldrawUiRow: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
3266
+
3047
3267
  /** @public @react */
3048
3268
  export declare const TldrawUiSlider: React_3.ForwardRefExoticComponent<TLUiSliderProps & React_3.RefAttributes<HTMLDivElement>>;
3049
3269
 
@@ -3057,13 +3277,13 @@ export declare const TldrawUiToolbar: React_3.ForwardRefExoticComponent<TLUiTool
3057
3277
  export declare const TldrawUiToolbarButton: React_3.ForwardRefExoticComponent<TLUiToolbarButtonProps & React_3.RefAttributes<HTMLButtonElement>>;
3058
3278
 
3059
3279
  /** @public @react */
3060
- export declare const TldrawUiToolbarToggleGroup: ({ children, className, type, ...props }: TLUiToolbarToggleGroupProps) => JSX_2.Element;
3280
+ export declare const TldrawUiToolbarToggleGroup: ({ children, className, type, asChild, ...props }: TLUiToolbarToggleGroupProps) => JSX_2.Element;
3061
3281
 
3062
3282
  /** @public @react */
3063
3283
  export declare const TldrawUiToolbarToggleItem: ({ children, className, type, value, tooltip, ...props }: TLUiToolbarToggleItemProps) => JSX_2.Element;
3064
3284
 
3065
3285
  /** @public @react */
3066
- export declare function TldrawUiTooltip({ children, content, side, sideOffset, disabled, }: TldrawUiTooltipProps): JSX_2.Element;
3286
+ export declare const TldrawUiTooltip: React_3.ForwardRefExoticComponent<TldrawUiTooltipProps & React_3.RefAttributes<HTMLButtonElement>>;
3067
3287
 
3068
3288
  /** @public */
3069
3289
  export declare interface TldrawUiTooltipProps {
@@ -3072,6 +3292,8 @@ export declare interface TldrawUiTooltipProps {
3072
3292
  side?: 'bottom' | 'left' | 'right' | 'top';
3073
3293
  sideOffset?: number;
3074
3294
  disabled?: boolean;
3295
+ showOnMobile?: boolean;
3296
+ delayDuration?: number;
3075
3297
  }
3076
3298
 
3077
3299
  /** @public @react */
@@ -3242,18 +3464,6 @@ export declare interface TLUiButtonLabelProps {
3242
3464
  children?: ReactNode;
3243
3465
  }
3244
3466
 
3245
- /** @public */
3246
- export declare interface TLUiButtonPickerProps<T extends string> {
3247
- title: string;
3248
- uiType: string;
3249
- style: StyleProp<T>;
3250
- value: SharedStyle<T>;
3251
- items: StyleValuesForUi<T>;
3252
- theme: TLDefaultColorTheme;
3253
- onValueChange(style: StyleProp<T>, value: T): void;
3254
- onHistoryMark?(id: string): void;
3255
- }
3256
-
3257
3467
  /** @public */
3258
3468
  export declare interface TLUiButtonProps extends React_2.HTMLAttributes<HTMLButtonElement> {
3259
3469
  disabled?: boolean;
@@ -3288,6 +3498,7 @@ export declare interface TLUiComponents {
3288
3498
  Dialogs?: ComponentType | null;
3289
3499
  Toasts?: ComponentType | null;
3290
3500
  A11y?: ComponentType | null;
3501
+ FollowingIndicator?: ComponentType | null;
3291
3502
  }
3292
3503
 
3293
3504
  /** @public */
@@ -3613,11 +3824,14 @@ export declare interface TLUiEventMap {
3613
3824
  'flatten-to-image': null;
3614
3825
  'a11y-repeat-shape-announce': null;
3615
3826
  'open-url': {
3616
- url: string;
3827
+ destinationUrl: string;
3617
3828
  };
3618
3829
  'open-context-menu': null;
3619
3830
  'adjust-shape-styles': null;
3620
3831
  'copy-link': null;
3832
+ 'drag-tool': {
3833
+ id: string;
3834
+ };
3621
3835
  'image-replace': null;
3622
3836
  'video-replace': null;
3623
3837
  'open-kbd-shortcuts': null;
@@ -3704,6 +3918,13 @@ export declare type TLUiKeyboardShortcutsDialogProps = TLUiDialogProps & {
3704
3918
  children?: ReactNode;
3705
3919
  };
3706
3920
 
3921
+ /** @public */
3922
+ export declare interface TLUiLayoutProps extends HTMLAttributes<HTMLDivElement> {
3923
+ children: ReactNode;
3924
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3925
+ asChild?: boolean;
3926
+ }
3927
+
3707
3928
  /** @public */
3708
3929
  export declare interface TLUiMainMenuProps {
3709
3930
  children?: ReactNode;
@@ -3743,7 +3964,7 @@ export declare interface TLUiMenuContextProviderProps {
3743
3964
  }
3744
3965
 
3745
3966
  /** @public */
3746
- export declare type TLUiMenuContextType = 'context-menu' | 'helper-buttons' | 'icons' | 'keyboard-shortcuts' | 'menu' | 'panel' | 'small-icons' | 'toolbar-overflow' | 'toolbar';
3967
+ export declare type TLUiMenuContextType = 'context-menu' | 'helper-buttons' | 'icons' | 'keyboard-shortcuts' | 'menu' | 'small-icons' | 'toolbar-overflow' | 'toolbar';
3747
3968
 
3748
3969
  /** @public */
3749
3970
  export declare interface TLUiMenuGroupProps<TranslationKey extends string = string> {
@@ -3803,6 +4024,10 @@ export declare interface TLUiMenuItemProps<TranslationKey extends string = strin
3803
4024
  * Whether the item is selected.
3804
4025
  */
3805
4026
  isSelected?: boolean;
4027
+ /**
4028
+ * The function to call when the item is dragged. If this is provided, the item will be draggable.
4029
+ */
4030
+ onDragStart?(source: TLUiEventSource, info: TLPointerEventInfo): void;
3806
4031
  }
3807
4032
 
3808
4033
  /** @public */
@@ -3848,6 +4073,7 @@ export declare interface TLUiPopoverProps {
3848
4073
  open?: boolean;
3849
4074
  children: React_3.ReactNode;
3850
4075
  onOpenChange?(isOpen: boolean): void;
4076
+ className?: string;
3851
4077
  }
3852
4078
 
3853
4079
  /** @public */
@@ -3873,19 +4099,15 @@ export declare interface TLUiSliderProps {
3873
4099
  label: string;
3874
4100
  title: string;
3875
4101
  onValueChange(value: number): void;
3876
- onHistoryMark(id: string): void;
4102
+ onHistoryMark?(id: string): void;
3877
4103
  'data-testid'?: string;
3878
4104
  ariaValueModifier?: number;
3879
4105
  }
3880
4106
 
3881
- /** @public */
3882
- export declare interface TLUiStylePanelContentProps {
3883
- styles: ReturnType<typeof useRelevantStyles>;
3884
- }
3885
-
3886
4107
  /** @public */
3887
4108
  export declare interface TLUiStylePanelProps {
3888
4109
  isMobile?: boolean;
4110
+ styles?: null | ReadonlySharedStyleMap;
3889
4111
  children?: ReactNode;
3890
4112
  }
3891
4113
 
@@ -3942,6 +4164,8 @@ export declare interface TLUiToolbarProps extends React_3.HTMLAttributes<HTMLDiv
3942
4164
  className?: string;
3943
4165
  dir?: 'ltr' | 'rtl';
3944
4166
  label: string;
4167
+ orientation?: 'grid' | 'horizontal' | 'vertical';
4168
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3945
4169
  }
3946
4170
 
3947
4171
  /** @public */
@@ -3952,6 +4176,7 @@ export declare interface TLUiToolbarToggleGroupProps extends React_3.HTMLAttribu
3952
4176
  value: any;
3953
4177
  defaultValue?: any;
3954
4178
  type: 'multiple' | 'single';
4179
+ asChild?: boolean;
3955
4180
  }
3956
4181
 
3957
4182
  /** @public */
@@ -3970,6 +4195,7 @@ export declare interface TLUiToolItem<TranslationKey extends string = string, Ic
3970
4195
  shortcutsLabel?: TranslationKey;
3971
4196
  icon: IconType | TLUiIconJsx;
3972
4197
  onSelect(source: TLUiEventSource): void;
4198
+ onDragStart?(source: TLUiEventSource, info: TLPointerEventInfo): void;
3973
4199
  /**
3974
4200
  * The keyboard shortcut for this tool. This is a string that can be a single key,
3975
4201
  * or a combination of keys.
@@ -4005,7 +4231,7 @@ export declare interface TLUiTranslation {
4005
4231
  export declare type TLUiTranslationContextType = TLUiTranslation;
4006
4232
 
4007
4233
  /** @public */
4008
- 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';
4234
+ 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-confirm' | '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';
4009
4235
 
4010
4236
  /** @public */
4011
4237
  export declare interface TLUiTranslationProviderProps {
@@ -4187,13 +4413,6 @@ export declare function useA11y(): TLUiA11yContextType;
4187
4413
  /** @public */
4188
4414
  export declare function useActions(): TLUiActionsContextType;
4189
4415
 
4190
- /**
4191
- * @deprecated Use {@link useImageOrVideoAsset} instead.
4192
- *
4193
- * @public
4194
- */
4195
- export declare const useAsset: typeof useImageOrVideoAsset;
4196
-
4197
4416
  /* Excluded from this release type: useAssetUrls */
4198
4417
 
4199
4418
  /** @public */
@@ -4248,7 +4467,11 @@ export declare function useDefaultHelpers(): {
4248
4467
  copy: (source: TLUiEventSource) => Promise<void>;
4249
4468
  copyAs: (ids: TLShapeId[], format?: TLCopyType) => void;
4250
4469
  cut: (source: TLUiEventSource) => Promise<void>;
4251
- exportAs: (ids: TLShapeId[], format: TLExportType | undefined, name: string | undefined) => void;
4470
+ exportAs: (ids: TLShapeId[], opts?: {
4471
+ format?: TLExportType;
4472
+ name?: string;
4473
+ scale?: number;
4474
+ }) => void;
4252
4475
  getEmbedDefinition: (url: string) => TLEmbedResult;
4253
4476
  insertMedia: () => Promise<void>;
4254
4477
  isMobile: boolean;
@@ -4265,12 +4488,16 @@ export declare function useDefaultHelpers(): {
4265
4488
  export declare function useDialogs(): TLUiDialogsContextType;
4266
4489
 
4267
4490
  /** @public */
4268
- export declare function useEditablePlainText(shapeId: TLShapeId, type: string, text?: string): {
4491
+ export declare function useEditablePlainText(shapeId: TLShapeId, type: Extract<TLShape, {
4492
+ props: {
4493
+ text: string;
4494
+ };
4495
+ }>['type'], text?: string): {
4269
4496
  handleBlur: () => void;
4270
4497
  handleChange: ({ plaintext }: {
4271
4498
  plaintext: string;
4272
4499
  }) => void;
4273
- handleDoubleClick: (e: any) => any;
4500
+ handleDoubleClick: (e: React_3.MouseEvent) => void;
4274
4501
  handleFocus: () => void;
4275
4502
  handleInputPointerDown: (e: React_3.PointerEvent) => void;
4276
4503
  handleKeyDown: (e: KeyboardEvent) => void;
@@ -4282,12 +4509,16 @@ export declare function useEditablePlainText(shapeId: TLShapeId, type: string, t
4282
4509
  };
4283
4510
 
4284
4511
  /** @public */
4285
- export declare function useEditableRichText(shapeId: TLShapeId, type: string, richText?: TLRichText): {
4512
+ export declare function useEditableRichText(shapeId: TLShapeId, type: Extract<TLShape, {
4513
+ props: {
4514
+ richText: TLRichText;
4515
+ };
4516
+ }>['type'], richText?: TLRichText): {
4286
4517
  handleBlur: () => void;
4287
4518
  handleChange: ({ richText }: {
4288
4519
  richText: TLRichText;
4289
4520
  }) => void;
4290
- handleDoubleClick: (e: any) => any;
4521
+ handleDoubleClick: (e: React.MouseEvent) => void;
4291
4522
  handleFocus: () => void;
4292
4523
  handleInputPointerDown: (e: React.PointerEvent) => void;
4293
4524
  handleKeyDown: (e: KeyboardEvent) => void;
@@ -4298,14 +4529,12 @@ export declare function useEditableRichText(shapeId: TLShapeId, type: string, ri
4298
4529
  rInput: RefObject<HTMLDivElement>;
4299
4530
  };
4300
4531
 
4301
- /**
4302
- * @deprecated Use `useEditablePlainText` instead.
4303
- * @public
4304
- */
4305
- export declare const useEditableText: typeof useEditablePlainText;
4306
-
4307
4532
  /** @public */
4308
- export declare function useExportAs(): (ids: TLShapeId[], format: TLExportType | undefined, name: string | undefined) => void;
4533
+ export declare function useExportAs(): (ids: TLShapeId[], opts?: {
4534
+ format?: TLExportType;
4535
+ name?: string;
4536
+ scale?: number;
4537
+ }) => void;
4309
4538
 
4310
4539
  /**
4311
4540
  * This is a handy helper hook that resolves an asset to an optimized URL for a given shape, or its
@@ -4379,9 +4608,15 @@ export declare const useSelectedShapesAnnouncer: () => void;
4379
4608
  /** @public */
4380
4609
  export declare function useShowCollaborationUi(): boolean;
4381
4610
 
4611
+ /** @public */
4612
+ export declare function useStylePanelContext(): StylePanelContext;
4613
+
4382
4614
  /** @public */
4383
4615
  export declare function useTldrawUiComponents(): TLUiComponents;
4384
4616
 
4617
+ /** @public */
4618
+ export declare function useTldrawUiOrientation(): TldrawUiOrientationContext;
4619
+
4385
4620
  /** @public */
4386
4621
  export declare function useToasts(): TLUiToastsContextType;
4387
4622