@excalidraw/element 0.18.0-c141960 → 0.18.0-c1dbbdf

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 (233) hide show
  1. package/dist/dev/index.js +2698 -954
  2. package/dist/dev/index.js.map +4 -4
  3. package/dist/prod/index.js +18 -18
  4. package/dist/types/common/debug.d.ts +21 -0
  5. package/dist/types/common/src/bounds.d.ts +10 -0
  6. package/dist/types/common/src/colors.d.ts +59 -39
  7. package/dist/types/common/src/constants.d.ts +17 -11
  8. package/dist/types/common/src/editorInterface.d.ts +1 -1
  9. package/dist/types/common/src/font-metadata.d.ts +1 -3
  10. package/dist/types/common/src/index.d.ts +2 -1
  11. package/dist/types/common/src/keys.d.ts +1 -1
  12. package/dist/types/common/src/utility-types.d.ts +0 -1
  13. package/dist/types/common/src/utils.d.ts +46 -38
  14. package/dist/types/element/src/Scene.d.ts +5 -3
  15. package/dist/types/element/src/arrows/focus.d.ts +27 -0
  16. package/dist/types/element/src/arrows/helpers.d.ts +5 -0
  17. package/dist/types/element/src/binding.d.ts +19 -12
  18. package/dist/types/element/src/bounds.d.ts +2 -10
  19. package/dist/types/element/src/collision.d.ts +4 -3
  20. package/dist/types/element/src/comparisons.d.ts +7 -7
  21. package/dist/types/element/src/distribute.d.ts +2 -1
  22. package/dist/types/element/src/dragElements.d.ts +3 -3
  23. package/dist/types/element/src/duplicate.d.ts +3 -3
  24. package/dist/types/element/src/elbowArrow.d.ts +2 -0
  25. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  26. package/dist/types/element/src/frame.d.ts +5 -1
  27. package/dist/types/element/src/heading.d.ts +2 -1
  28. package/dist/types/element/src/image.d.ts +1 -11
  29. package/dist/types/element/src/index.d.ts +3 -0
  30. package/dist/types/element/src/linearElementEditor.d.ts +6 -2
  31. package/dist/types/element/src/mutateElement.d.ts +5 -1
  32. package/dist/types/element/src/newElement.d.ts +6 -6
  33. package/dist/types/element/src/renderElement.d.ts +0 -6
  34. package/dist/types/element/src/resizeElements.d.ts +10 -10
  35. package/dist/types/element/src/resizeTest.d.ts +1 -1
  36. package/dist/types/element/src/selection.d.ts +3 -7
  37. package/dist/types/element/src/shape.d.ts +8 -7
  38. package/dist/types/element/src/textMeasurements.d.ts +1 -3
  39. package/dist/types/{excalidraw/data → element/src}/transform.d.ts +3 -3
  40. package/dist/types/element/src/transformHandles.d.ts +3 -23
  41. package/dist/types/element/src/typeChecks.d.ts +2 -4
  42. package/dist/types/element/src/types.d.ts +1 -1
  43. package/dist/types/element/src/utils.d.ts +8 -4
  44. package/dist/types/{common → element}/src/visualdebug.d.ts +20 -2
  45. package/dist/types/element/src/zindex.d.ts +1 -1
  46. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +92 -153
  47. package/dist/types/excalidraw/actions/actionAlign.d.ts +0 -1
  48. package/dist/types/excalidraw/actions/actionBoundText.d.ts +64 -105
  49. package/dist/types/excalidraw/actions/actionCanvas.d.ts +383 -618
  50. package/dist/types/excalidraw/actions/actionClipboard.d.ts +64 -105
  51. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +31 -52
  52. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +106 -169
  53. package/dist/types/excalidraw/actions/actionDistribute.d.ts +0 -1
  54. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +0 -1
  55. package/dist/types/excalidraw/actions/actionElementLink.d.ts +24 -49
  56. package/dist/types/excalidraw/actions/actionElementLock.d.ts +65 -106
  57. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +32 -53
  58. package/dist/types/excalidraw/actions/actionExport.d.ts +126 -211
  59. package/dist/types/excalidraw/actions/actionFinalize.d.ts +1 -2
  60. package/dist/types/excalidraw/actions/actionFlip.d.ts +0 -1
  61. package/dist/types/excalidraw/actions/actionFrame.d.ts +221 -338
  62. package/dist/types/excalidraw/actions/actionGroup.d.ts +68 -117
  63. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +134 -189
  64. package/dist/types/excalidraw/actions/actionLink.d.ts +32 -53
  65. package/dist/types/excalidraw/actions/actionMenu.d.ts +23 -48
  66. package/dist/types/excalidraw/actions/actionNavigate.d.ts +14 -17
  67. package/dist/types/excalidraw/actions/actionProperties.d.ts +79 -120
  68. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +34 -59
  69. package/dist/types/excalidraw/actions/actionStyles.d.ts +30 -51
  70. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +172 -0
  71. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +32 -53
  72. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +172 -0
  73. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +32 -53
  74. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +22 -47
  75. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +32 -53
  76. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +32 -53
  77. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +32 -53
  78. package/dist/types/excalidraw/actions/actionZindex.d.ts +0 -1
  79. package/dist/types/excalidraw/actions/index.d.ts +2 -0
  80. package/dist/types/excalidraw/actions/manager.d.ts +1 -1
  81. package/dist/types/excalidraw/actions/register.d.ts +2 -2
  82. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  83. package/dist/types/excalidraw/actions/types.d.ts +1 -1
  84. package/dist/types/excalidraw/appState.d.ts +12 -10
  85. package/dist/types/excalidraw/charts/charts.bar.d.ts +2 -0
  86. package/dist/types/excalidraw/charts/charts.constants.d.ts +48 -0
  87. package/dist/types/excalidraw/charts/charts.helpers.d.ts +32 -0
  88. package/dist/types/excalidraw/charts/charts.line.d.ts +2 -0
  89. package/dist/types/excalidraw/charts/charts.parse.d.ts +10 -0
  90. package/dist/types/excalidraw/charts/charts.radar.d.ts +2 -0
  91. package/dist/types/excalidraw/charts/charts.types.d.ts +18 -0
  92. package/dist/types/excalidraw/charts/index.d.ts +7 -0
  93. package/dist/types/excalidraw/clipboard.d.ts +11 -35
  94. package/dist/types/excalidraw/components/Actions.d.ts +1 -1
  95. package/dist/types/excalidraw/components/App.d.ts +43 -44
  96. package/dist/types/excalidraw/components/Card.d.ts +1 -3
  97. package/dist/types/excalidraw/components/ColorPicker/ColorInput.d.ts +2 -4
  98. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +0 -1
  99. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +0 -1
  100. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +0 -1
  101. package/dist/types/excalidraw/components/CommandPalette/types.d.ts +1 -2
  102. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
  103. package/dist/types/excalidraw/components/DarkModeToggle.d.ts +1 -1
  104. package/dist/types/excalidraw/components/DefaultSidebar.d.ts +9 -13
  105. package/dist/types/excalidraw/components/ElementLinkDialog.d.ts +1 -1
  106. package/dist/types/excalidraw/components/Ellipsify.d.ts +1 -2
  107. package/dist/types/excalidraw/components/ErrorDialog.d.ts +1 -1
  108. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -1
  109. package/dist/types/excalidraw/components/EyeDropper.d.ts +0 -1
  110. package/dist/types/excalidraw/components/FilledButton.d.ts +1 -0
  111. package/dist/types/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +0 -1
  112. package/dist/types/excalidraw/components/HelpDialog.d.ts +1 -1
  113. package/dist/types/excalidraw/components/InlineIcon.d.ts +2 -2
  114. package/dist/types/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
  115. package/dist/types/excalidraw/components/LibraryMenuHeaderContent.d.ts +1 -2
  116. package/dist/types/excalidraw/components/LibraryUnit.d.ts +2 -3
  117. package/dist/types/excalidraw/components/LoadingMessage.d.ts +0 -1
  118. package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -1
  119. package/dist/types/excalidraw/components/Modal.d.ts +0 -1
  120. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirm.d.ts +1 -1
  121. package/dist/types/excalidraw/components/PasteChartDialog.d.ts +4 -5
  122. package/dist/types/excalidraw/components/PropertiesPopover.d.ts +1 -1
  123. package/dist/types/excalidraw/components/RadioGroup.d.ts +0 -1
  124. package/dist/types/excalidraw/components/RadioSelection.d.ts +4 -4
  125. package/dist/types/excalidraw/components/ScrollableList.d.ts +0 -1
  126. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +15 -21
  127. package/dist/types/excalidraw/components/Sidebar/SidebarHeader.d.ts +1 -1
  128. package/dist/types/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -2
  129. package/dist/types/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -2
  130. package/dist/types/excalidraw/components/Sidebar/SidebarTabTriggers.d.ts +1 -2
  131. package/dist/types/excalidraw/components/Sidebar/SidebarTabs.d.ts +1 -2
  132. package/dist/types/excalidraw/components/Spinner.d.ts +4 -4
  133. package/dist/types/excalidraw/components/Stats/CanvasGrid.d.ts +0 -1
  134. package/dist/types/excalidraw/components/Stats/Collapsible.d.ts +0 -1
  135. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +0 -1
  136. package/dist/types/excalidraw/components/Stats/index.d.ts +7 -8
  137. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatHistoryMenu.d.ts +15 -0
  138. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatInterface.d.ts +23 -0
  139. package/dist/types/excalidraw/components/TTDDialog/Chat/ChatMessage.d.ts +14 -0
  140. package/dist/types/excalidraw/components/TTDDialog/Chat/TTDChatPanel.d.ts +27 -0
  141. package/dist/types/excalidraw/components/TTDDialog/Chat/index.d.ts +3 -0
  142. package/dist/types/excalidraw/components/TTDDialog/Chat/useChatAgent.d.ts +8 -0
  143. package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
  144. package/dist/types/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +3 -2
  145. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +13 -0
  146. package/dist/types/excalidraw/components/TTDDialog/TTDDialog.d.ts +12 -29
  147. package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
  148. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +5 -2
  149. package/dist/types/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +13 -9
  150. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTab.d.ts +1 -2
  151. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTrigger.d.ts +1 -2
  152. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTabTriggers.d.ts +1 -2
  153. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -1
  154. package/dist/types/excalidraw/components/TTDDialog/TTDPreviewPanel.d.ts +9 -0
  155. package/dist/types/excalidraw/components/TTDDialog/TTDWelcomeMessage.d.ts +1 -0
  156. package/dist/types/excalidraw/components/TTDDialog/TextToDiagram.d.ts +9 -0
  157. package/dist/types/excalidraw/components/TTDDialog/common.d.ts +16 -16
  158. package/dist/types/excalidraw/components/TTDDialog/hooks/useChatManagement.d.ts +13 -0
  159. package/dist/types/excalidraw/components/TTDDialog/hooks/useMermaidRenderer.d.ts +14 -0
  160. package/dist/types/excalidraw/components/TTDDialog/hooks/useTextGeneration.d.ts +7 -0
  161. package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
  162. package/dist/types/excalidraw/components/TTDDialog/types.d.ts +95 -0
  163. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +22 -0
  164. package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +24 -0
  165. package/dist/types/excalidraw/components/TTDDialog/utils/chat.d.ts +10 -0
  166. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
  167. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +10 -0
  168. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidValidation.d.ts +1 -0
  169. package/dist/types/excalidraw/components/Toast.d.ts +3 -3
  170. package/dist/types/excalidraw/components/Trans.d.ts +2 -2
  171. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +48 -38
  172. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuContent.d.ts +7 -6
  173. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuGroup.d.ts +3 -3
  174. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +13 -22
  175. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCheckbox.d.ts +5 -0
  176. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +5 -4
  177. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +0 -1
  178. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemCustom.d.ts +2 -2
  179. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemLink.d.ts +6 -6
  180. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSub.d.ts +23 -0
  181. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubContent.d.ts +8 -0
  182. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuSubTrigger.d.ts +12 -0
  183. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuTrigger.d.ts +3 -4
  184. package/dist/types/excalidraw/components/dropdownMenu/common.d.ts +2 -2
  185. package/dist/types/excalidraw/components/dropdownMenu/dropdownMenuUtils.d.ts +2 -0
  186. package/dist/types/excalidraw/components/hoc/withInternalFallback.d.ts +1 -1
  187. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +1 -1
  188. package/dist/types/excalidraw/components/icons.d.ts +22 -13
  189. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +2 -13
  190. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +19 -2
  191. package/dist/types/excalidraw/components/main-menu/MainMenu.d.ts +39 -32
  192. package/dist/types/excalidraw/components/shapes.d.ts +74 -1
  193. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +6 -6
  194. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +15 -16
  195. package/dist/types/excalidraw/data/blob.d.ts +323 -3
  196. package/dist/types/excalidraw/data/encode.d.ts +4 -4
  197. package/dist/types/excalidraw/data/encryption.d.ts +5 -5
  198. package/dist/types/excalidraw/data/filesystem.d.ts +2 -2
  199. package/dist/types/excalidraw/data/index.d.ts +3 -3
  200. package/dist/types/excalidraw/data/json.d.ts +160 -2
  201. package/dist/types/excalidraw/data/library.d.ts +24 -9
  202. package/dist/types/excalidraw/data/restore.d.ts +25 -10
  203. package/dist/types/excalidraw/editor-jotai.d.ts +11 -11
  204. package/dist/types/excalidraw/errors.d.ts +14 -0
  205. package/dist/types/excalidraw/hooks/useOutsideClick.d.ts +1 -2
  206. package/dist/types/excalidraw/hooks/useScrollPosition.d.ts +1 -2
  207. package/dist/types/excalidraw/i18n.d.ts +2 -2
  208. package/dist/types/excalidraw/index.d.ts +6 -4
  209. package/dist/types/excalidraw/renderer/helpers.d.ts +6 -4
  210. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +8 -6
  211. package/dist/types/excalidraw/scene/Renderer.d.ts +5 -2
  212. package/dist/types/excalidraw/scene/export.d.ts +2 -2
  213. package/dist/types/excalidraw/scene/scroll.d.ts +1 -6
  214. package/dist/types/excalidraw/scene/types.d.ts +7 -2
  215. package/dist/types/excalidraw/snapping.d.ts +5 -5
  216. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-bindings.d.ts +1 -1
  217. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-loader.d.ts +1 -1
  218. package/dist/types/excalidraw/subset/harfbuzz/harfbuzz-wasm.d.ts +1 -1
  219. package/dist/types/excalidraw/subset/woff2/woff2-loader.d.ts +2 -2
  220. package/dist/types/excalidraw/subset/woff2/woff2-wasm.d.ts +1 -1
  221. package/dist/types/excalidraw/types.d.ts +25 -14
  222. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -2
  223. package/dist/types/math/src/point.d.ts +6 -1
  224. package/dist/types/math/src/polygon.d.ts +2 -2
  225. package/dist/types/math/src/range.d.ts +1 -3
  226. package/dist/types/math/src/segment.d.ts +3 -3
  227. package/dist/types/math/src/types.d.ts +25 -1
  228. package/dist/types/utils/src/bbox.d.ts +1 -1
  229. package/dist/types/utils/src/export.d.ts +5 -5
  230. package/dist/types/utils/src/shape.d.ts +6 -6
  231. package/dist/types/utils/src/withinBounds.d.ts +2 -2
  232. package/package.json +9 -3
  233. package/dist/types/excalidraw/charts.d.ts +0 -27
@@ -1,4 +1,5 @@
1
- import type { ElementsMap, ExcalidrawArrowElement, ExcalidrawElement, ExcalidrawLinearElement, ExcalidrawSelectionElement, ExcalidrawTextElement, OrderedExcalidrawElement } from "@excalidraw/element/types";
1
+ import { type CombineBrandsIfNeeded } from "@excalidraw/common";
2
+ import type { ElementsMap, ElementsMapOrArray, ExcalidrawElement, ExcalidrawSelectionElement, OrderedExcalidrawElement } from "@excalidraw/element/types";
2
3
  import type { AppState, BinaryFiles, LibraryItem } from "../types";
3
4
  import type { ImportedDataState } from "./types";
4
5
  type RestoredAppState = Omit<AppState, "offsetTop" | "offsetLeft" | "width" | "height">;
@@ -8,19 +9,33 @@ export type RestoredDataState = {
8
9
  appState: RestoredAppState;
9
10
  files: BinaryFiles;
10
11
  };
11
- export declare const restoreElement: (element: Exclude<ExcalidrawElement, ExcalidrawSelectionElement>, elementsMap: Readonly<ElementsMap>, opts?: {
12
+ export declare const restoreElement: (
13
+ /** element to be restored */
14
+ element: Exclude<ExcalidrawElement, ExcalidrawSelectionElement>,
15
+ /** all elements to be restored */
16
+ targetElementsMap: Readonly<ElementsMap>,
17
+ /** used for additional context */
18
+ existingElementsMap: Readonly<ElementsMap> | null | undefined, opts?: {
12
19
  deleteInvisibleElements?: boolean;
13
- }) => ExcalidrawLinearElement | import("@excalidraw/element/types").ExcalidrawRectangleElement | import("@excalidraw/element/types").ExcalidrawDiamondElement | import("@excalidraw/element/types").ExcalidrawEllipseElement | import("@excalidraw/element/types").ExcalidrawEmbeddableElement | import("@excalidraw/element/types").ExcalidrawIframeElement | import("@excalidraw/element/types").ExcalidrawImageElement | import("@excalidraw/element/types").ExcalidrawFrameElement | import("@excalidraw/element/types").ExcalidrawMagicFrameElement | ExcalidrawTextElement | import("@excalidraw/element/types").ExcalidrawFreeDrawElement | ExcalidrawArrowElement | null;
14
- export declare const restoreElements: (targetElements: ImportedDataState["elements"], localElements: readonly ExcalidrawElement[] | null | undefined, opts?: {
20
+ }) => typeof element | null;
21
+ export declare const restoreElements: <T extends ExcalidrawElement>(targetElements: readonly T[] | undefined | null,
22
+ /** used for additional context (e.g. repairing arrow bindings) */
23
+ existingElements: Readonly<ElementsMapOrArray> | null | undefined, opts?: {
15
24
  refreshDimensions?: boolean;
16
25
  repairBindings?: boolean;
17
26
  deleteInvisibleElements?: boolean;
18
- } | undefined) => OrderedExcalidrawElement[];
27
+ } | undefined) => CombineBrandsIfNeeded<T, OrderedExcalidrawElement>;
28
+ /**
29
+ * When replacing elements that may exist locally, this bumps their versions
30
+ * to the local version + 1. Mainly for later reconciliation to work properly.
31
+ *
32
+ * See https://github.com/excalidraw/excalidraw/issues/3795
33
+ *
34
+ * Generally use this on editor boundaries (importing from file etc.), though
35
+ * it does not apply universally (e.g. we don't want to do this for collab
36
+ * updates).
37
+ */
38
+ export declare const bumpElementVersions: <T extends ExcalidrawElement>(targetElements: readonly T[], localElements: Readonly<ElementsMapOrArray> | null | undefined) => T[];
19
39
  export declare const restoreAppState: (appState: ImportedDataState["appState"], localAppState: Partial<AppState> | null | undefined) => RestoredAppState;
20
- export declare const restore: (data: Pick<ImportedDataState, "appState" | "elements" | "files"> | null, localAppState: Partial<AppState> | null | undefined, localElements: readonly ExcalidrawElement[] | null | undefined, elementsConfig?: {
21
- refreshDimensions?: boolean;
22
- repairBindings?: boolean;
23
- deleteInvisibleElements?: boolean;
24
- }) => RestoredDataState;
25
40
  export declare const restoreLibraryItems: (libraryItems: ImportedDataState["libraryItems"], defaultStatus: LibraryItem["status"]) => LibraryItem[];
26
41
  export {};
@@ -7,8 +7,8 @@ export declare const useAtom: typeof import("jotai").useAtom, useSetAtom: typeof
7
7
  set: <Value_1, Args extends unknown[], Result>(atom: WritableAtom<Value_1, Args, Result>, ...args: Args) => Result;
8
8
  sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
9
9
  } | ({
10
- get: <Value_2>(atom: import("jotai").Atom<Value_2>) => Value_2;
11
- set: <Value_1_1, Args_1 extends unknown[], Result_1>(atom: WritableAtom<Value_1_1, Args_1, Result_1>, ...args: Args_1) => Result_1;
10
+ get: <Value>(atom: import("jotai").Atom<Value>) => Value;
11
+ set: <Value_1, Args extends unknown[], Result>(atom: WritableAtom<Value_1, Args, Result>, ...args: Args) => Result;
12
12
  sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
13
13
  } & {
14
14
  dev4_get_internal_weak_map: () => WeakMap<import("jotai").Atom<unknown>, {
@@ -19,21 +19,21 @@ export declare const useAtom: typeof import("jotai").useAtom, useSetAtom: typeof
19
19
  readonly l: Set<() => void>;
20
20
  readonly d: Set<import("jotai").Atom<unknown>>;
21
21
  readonly t: Set<import("jotai").Atom<unknown>>;
22
- u?: (() => void) | undefined;
23
- } | undefined;
22
+ u?: () => void;
23
+ };
24
24
  v?: unknown;
25
25
  e?: unknown;
26
26
  }>;
27
27
  dev4_get_mounted_atoms: () => Set<import("jotai").Atom<unknown>>;
28
28
  dev4_restore_atoms: (values: Iterable<readonly [import("jotai").Atom<unknown>, unknown]>) => void;
29
- }) | undefined;
29
+ });
30
30
  } | undefined) => {
31
- get: <Value_3>(atom: import("jotai").Atom<Value_3>) => Value_3;
32
- set: <Value_1_2, Args_2 extends unknown[], Result_2>(atom: WritableAtom<Value_1_2, Args_2, Result_2>, ...args: Args_2) => Result_2;
31
+ get: <Value>(atom: import("jotai").Atom<Value>) => Value;
32
+ set: <Value_1, Args extends unknown[], Result>(atom: WritableAtom<Value_1, Args, Result>, ...args: Args) => Result;
33
33
  sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
34
34
  } | ({
35
- get: <Value_4>(atom: import("jotai").Atom<Value_4>) => Value_4;
36
- set: <Value_1_3, Args_3 extends unknown[], Result_3>(atom: WritableAtom<Value_1_3, Args_3, Result_3>, ...args: Args_3) => Result_3;
35
+ get: <Value>(atom: import("jotai").Atom<Value>) => Value;
36
+ set: <Value_1, Args extends unknown[], Result>(atom: WritableAtom<Value_1, Args, Result>, ...args: Args) => Result;
37
37
  sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
38
38
  } & {
39
39
  dev4_get_internal_weak_map: () => WeakMap<import("jotai").Atom<unknown>, {
@@ -44,8 +44,8 @@ export declare const useAtom: typeof import("jotai").useAtom, useSetAtom: typeof
44
44
  readonly l: Set<() => void>;
45
45
  readonly d: Set<import("jotai").Atom<unknown>>;
46
46
  readonly t: Set<import("jotai").Atom<unknown>>;
47
- u?: (() => void) | undefined;
48
- } | undefined;
47
+ u?: () => void;
48
+ };
49
49
  v?: unknown;
50
50
  e?: unknown;
51
51
  }>;
@@ -26,4 +26,18 @@ export declare class WorkerInTheMainChunkError extends Error {
26
26
  export declare class ExcalidrawError extends Error {
27
27
  constructor(message: string);
28
28
  }
29
+ export declare class RequestError extends Error {
30
+ status: number;
31
+ data: any;
32
+ toObject(): {
33
+ name: string;
34
+ status: number;
35
+ message: string;
36
+ };
37
+ constructor({ message, status, data, }?: {
38
+ message?: string;
39
+ status?: number;
40
+ data?: any;
41
+ });
42
+ }
29
43
  export {};
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare function useOutsideClick<T extends HTMLElement>(ref: React.RefObject<T | null>,
3
2
  /** if performance is of concern, memoize the callback */
4
3
  callback: (event: Event & {
@@ -16,7 +15,7 @@ callback: (event: Event & {
16
15
  * Returning `undefined` will fallback to the default behavior.
17
16
  */
18
17
  isInside?: (event: Event & {
19
- target: HTMLElement;
18
+ target: T;
20
19
  },
21
20
  /** the element of the passed ref */
22
21
  container: T) => boolean | undefined): void;
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
- export declare const useScrollPosition: <T extends HTMLElement>(elementRef: import("react").RefObject<T | null>) => number;
1
+ export declare const useScrollPosition: <T extends HTMLElement>(elementRef: React.RefObject<T | null>) => number;
@@ -15,10 +15,10 @@ export declare const setLanguage: (lang: Language) => Promise<void>;
15
15
  export declare const getLanguage: () => Language;
16
16
  export declare const t: (path: NestedKeyOf<typeof fallbackLangData>, replacement?: {
17
17
  [key: string]: string | number;
18
- } | null | undefined, fallback?: string) => string;
18
+ } | null, fallback?: string) => string;
19
19
  export declare const useI18n: () => {
20
20
  t: (path: NestedKeyOf<typeof fallbackLangData>, replacement?: {
21
21
  [key: string]: string | number;
22
- } | null | undefined, fallback?: string) => string;
22
+ } | null, fallback?: string) => string;
23
23
  langCode: string;
24
24
  };
@@ -12,12 +12,11 @@ export { getSceneVersion, hashElementsVersion, hashString, getNonDeletedElements
12
12
  export { getTextFromElements } from "@excalidraw/element";
13
13
  export { isInvisiblySmallElement } from "@excalidraw/element";
14
14
  export { defaultLang, useI18n, languages } from "./i18n";
15
- export { restore, restoreAppState, restoreElement, restoreElements, restoreLibraryItems, } from "./data/restore";
15
+ export { restoreAppState, restoreElement, restoreElements, restoreLibraryItems, } from "./data/restore";
16
16
  export { reconcileElements } from "./data/reconcile";
17
17
  export { exportToCanvas, exportToBlob, exportToSvg, exportToClipboard, } from "@excalidraw/utils/export";
18
18
  export { serializeAsJSON, serializeLibraryAsJSON } from "./data/json";
19
19
  export { loadFromBlob, loadSceneOrLibraryFromBlob, loadLibraryFromBlob, } from "./data/blob";
20
- export { getFreeDrawSvgPath } from "@excalidraw/element";
21
20
  export { mergeLibraryItems, getLibraryItemsHash } from "./data/library";
22
21
  export { isLinearElement } from "@excalidraw/element";
23
22
  export { FONT_FAMILY, THEME, MIME_TYPES, ROUNDNESS, DEFAULT_LASER_COLOR, UserIdleState, normalizeLink, sceneCoordsToViewportCoords, viewportCoordsToSceneCoords, getFormFactor, } from "@excalidraw/common";
@@ -36,11 +35,14 @@ export { Stats } from "./components/Stats";
36
35
  export { DefaultSidebar } from "./components/DefaultSidebar";
37
36
  export { TTDDialog } from "./components/TTDDialog/TTDDialog";
38
37
  export { TTDDialogTrigger } from "./components/TTDDialog/TTDDialogTrigger";
38
+ export { TTDStreamFetch } from "./components/TTDDialog/utils/TTDStreamFetch";
39
+ export type { TTDPersistenceAdapter, SavedChat, SavedChats, } from "./components/TTDDialog/types";
39
40
  export { zoomToFitBounds } from "./actions/actionCanvas";
40
- export { convertToExcalidrawElements } from "./data/transform";
41
- export { getCommonBounds, getVisibleSceneBounds } from "@excalidraw/element";
41
+ export { getCommonBounds, getVisibleSceneBounds, convertToExcalidrawElements, } from "@excalidraw/element";
42
42
  export { elementsOverlappingBBox, isElementInsideBBox, elementPartiallyOverlapsWithOrContainsBBox, } from "@excalidraw/utils/withinBounds";
43
43
  export { DiagramToCodePlugin } from "./components/DiagramToCodePlugin/DiagramToCodePlugin";
44
44
  export { getDataURL } from "./data/blob";
45
45
  export { isElementLink } from "@excalidraw/element";
46
46
  export { setCustomTextMetricsProvider } from "@excalidraw/element";
47
+ export { CommandPalette } from "./components/CommandPalette/CommandPalette";
48
+ export { renderSpreadsheet, tryParseSpreadsheet, isSpreadsheetValidForChartType, } from "./charts";
@@ -7,8 +7,10 @@ export declare const bootstrapCanvas: ({ canvas, scale, normalizedWidth, normali
7
7
  scale: number;
8
8
  normalizedWidth: number;
9
9
  normalizedHeight: number;
10
- theme?: import("@excalidraw/element/types").Theme | undefined;
11
- isExporting?: boolean | undefined;
12
- viewBackgroundColor?: string | null | undefined;
10
+ theme?: AppState["theme"];
11
+ isExporting?: StaticCanvasRenderConfig["isExporting"];
12
+ viewBackgroundColor?: StaticCanvasAppState["viewBackgroundColor"];
13
13
  }) => CanvasRenderingContext2D;
14
- export declare const strokeRectWithRotation_simple: (context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, cx: number, cy: number, angle: number, fill?: boolean, radius?: number) => void;
14
+ export declare const strokeRectWithRotation_simple: (context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, cx: number, cy: number, angle: number, fill?: boolean,
15
+ /** should account for zoom */
16
+ radius?: number) => void;
@@ -1,12 +1,14 @@
1
1
  import { getScrollBars } from "../scene/scrollbars";
2
2
  import type { InteractiveSceneRenderConfig, RenderableElementsMap } from "../scene/types";
3
+ declare const _renderInteractiveScene: ({ app, canvas, elementsMap, visibleElements, selectedElements, allElementsMap, scale, appState, renderConfig, editorInterface, animationState, deltaTime, }: InteractiveSceneRenderConfig) => {
4
+ scrollBars?: ReturnType<typeof getScrollBars>;
5
+ atLeastOneVisibleElement: boolean;
6
+ elementsMap: RenderableElementsMap;
7
+ animationState?: typeof animationState;
8
+ };
3
9
  /**
4
10
  * Interactive scene is the ui-canvas where we render bounding boxes, selections
5
11
  * and other ui stuff.
6
12
  */
7
- export declare const renderInteractiveScene: <U extends ({ app, canvas, elementsMap, visibleElements, selectedElements, allElementsMap, scale, appState, renderConfig, editorInterface, animationState, deltaTime, }: InteractiveSceneRenderConfig) => {
8
- scrollBars?: import("../scene/types").ScrollBars | undefined;
9
- atLeastOneVisibleElement: boolean;
10
- elementsMap: RenderableElementsMap;
11
- animationState?: import("../scene/types").InteractiveSceneRenderAnimationState | undefined;
12
- }>(renderConfig: InteractiveSceneRenderConfig) => ReturnType<U>;
13
+ export declare const renderInteractiveScene: <U extends typeof _renderInteractiveScene>(renderConfig: InteractiveSceneRenderConfig) => ReturnType<U>;
14
+ export {};
@@ -1,11 +1,14 @@
1
1
  import type { ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
2
2
  import type { Scene } from "@excalidraw/element";
3
+ import type { RenderableElementsMap } from "./types";
3
4
  import type { AppState } from "../types";
4
5
  export declare class Renderer {
5
6
  private scene;
6
7
  constructor(scene: Scene);
7
8
  getRenderableElements: ((opts: {
8
- zoom: AppState["zoom"];
9
+ zoom: Readonly<{
10
+ value: import("../types").NormalizedZoomValue;
11
+ }>;
9
12
  offsetLeft: AppState["offsetLeft"];
10
13
  offsetTop: AppState["offsetTop"];
11
14
  scrollX: AppState["scrollX"];
@@ -18,7 +21,7 @@ export declare class Renderer {
18
21
  newElementId: ExcalidrawElement["id"] | undefined;
19
22
  sceneNonce: ReturnType<InstanceType<typeof Scene>["getSceneNonce"]>;
20
23
  }) => {
21
- elementsMap: Map<string, NonDeletedExcalidrawElement> & import("../../common/src/utility-types").MakeBrand<"NonDeletedElementsMap"> & import("../../common/src/utility-types").MakeBrand<"RenderableElementsMap">;
24
+ elementsMap: RenderableElementsMap;
22
25
  visibleElements: readonly NonDeletedExcalidrawElement[];
23
26
  }) & {
24
27
  clear: () => void;
@@ -2,9 +2,9 @@ import type { ExcalidrawFrameLikeElement, NonDeletedExcalidrawElement } from "@e
2
2
  import type { AppState, BinaryFiles } from "../types";
3
3
  export declare const exportToCanvas: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, files: BinaryFiles, { exportBackground, exportPadding, viewBackgroundColor, exportingFrame, }: {
4
4
  exportBackground: boolean;
5
- exportPadding?: number | undefined;
5
+ exportPadding?: number;
6
6
  viewBackgroundColor: string;
7
- exportingFrame?: ExcalidrawFrameLikeElement | null | undefined;
7
+ exportingFrame?: ExcalidrawFrameLikeElement | null;
8
8
  }, createCanvas?: (width: number, height: number) => {
9
9
  canvas: HTMLCanvasElement;
10
10
  scale: number;
@@ -7,12 +7,7 @@ export declare const centerScrollOn: ({ scenePoint, viewportDimensions, zoom, of
7
7
  width: number;
8
8
  };
9
9
  zoom: Zoom;
10
- offsets?: Partial<{
11
- top: number;
12
- right: number;
13
- bottom: number;
14
- left: number;
15
- }> | undefined;
10
+ offsets?: Offsets;
16
11
  }) => {
17
12
  scrollX: number;
18
13
  scrollY: number;
@@ -15,6 +15,7 @@ export type StaticCanvasRenderConfig = {
15
15
  embedsValidationStatus: EmbedsValidationStatus;
16
16
  elementsPendingErasure: ElementsPendingErasure;
17
17
  pendingFlowchartNodes: PendingExcalidrawElements | null;
18
+ theme: AppState["theme"];
18
19
  };
19
20
  export type SVGRenderConfig = {
20
21
  offsetX: number;
@@ -32,6 +33,7 @@ export type SVGRenderConfig = {
32
33
  * @default true
33
34
  */
34
35
  reuseImages: boolean;
36
+ theme: AppState["theme"];
35
37
  };
36
38
  export type InteractiveCanvasRenderConfig = {
37
39
  remoteSelectedElementIds: Map<ExcalidrawElement["id"], SocketId[]>;
@@ -115,14 +117,17 @@ export type ScrollBars = {
115
117
  deltaMultiplier: number;
116
118
  } | null;
117
119
  };
118
- export type ElementShape = Drawable | Drawable[] | null;
120
+ export type SVGPathString = string & {
121
+ __brand: "SVGPathString";
122
+ };
123
+ export type ElementShape = Drawable | Drawable[] | Path2D | (Drawable | SVGPathString)[] | null;
119
124
  export type ElementShapes = {
120
125
  rectangle: Drawable;
121
126
  ellipse: Drawable;
122
127
  diamond: Drawable;
123
128
  iframe: Drawable;
124
129
  embeddable: Drawable;
125
- freedraw: Drawable | null;
130
+ freedraw: (Drawable | SVGPathString)[];
126
131
  arrow: Drawable[];
127
132
  line: Drawable[];
128
133
  text: null;
@@ -1,6 +1,6 @@
1
1
  import { type GlobalPoint } from "@excalidraw/math";
2
2
  import type { InclusiveRange } from "@excalidraw/math";
3
- import type { Bounds } from "@excalidraw/element";
3
+ import type { Bounds } from "@excalidraw/common";
4
4
  import type { MaybeTransformHandleType } from "@excalidraw/element";
5
5
  import type { ElementsMap, ExcalidrawElement, NonDeletedExcalidrawElement } from "@excalidraw/element/types";
6
6
  import type { AppClassProperties, AppState, KeyboardModifiersObject } from "./types";
@@ -70,9 +70,9 @@ export declare const isSnappingEnabled: ({ event, app, selectedElements, }: {
70
70
  }) => boolean;
71
71
  export declare const areRoughlyEqual: (a: number, b: number, precision?: number) => boolean;
72
72
  export declare const getElementsCorners: (elements: ExcalidrawElement[], elementsMap: ElementsMap, { omitCenter, boundingBoxCorners, dragOffset, }?: {
73
- omitCenter?: boolean | undefined;
74
- boundingBoxCorners?: boolean | undefined;
75
- dragOffset?: Vector2D | undefined;
73
+ omitCenter?: boolean;
74
+ boundingBoxCorners?: boolean;
75
+ dragOffset?: Vector2D;
76
76
  }) => GlobalPoint[];
77
77
  export declare const getVisibleGaps: (elements: readonly NonDeletedExcalidrawElement[], selectedElements: ExcalidrawElement[], appState: AppState, elementsMap: ElementsMap) => {
78
78
  horizontalGaps: Gap[];
@@ -107,5 +107,5 @@ export declare const getSnapLinesAtPointer: (elements: readonly ExcalidrawElemen
107
107
  };
108
108
  snapLines: PointerSnapLine[];
109
109
  };
110
- export declare const isActiveToolNonLinearSnappable: (activeToolType: AppState["activeTool"]["type"]) => boolean;
110
+ export declare const isActiveToolNonLinearSnappable: (activeToolType: AppState["activeTool"]["type"]) => activeToolType is "text" | "rectangle" | "diamond" | "ellipse" | "image" | "frame" | "magicframe";
111
111
  export {};
@@ -38,7 +38,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38
38
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39
39
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40
40
  */
41
- declare function subset(hbSubsetWasm: any, heapu8: Uint8Array, font: ArrayBuffer, codePoints: ReadonlySet<number>): Uint8Array;
41
+ declare function subset(hbSubsetWasm: any, heapu8: Uint8Array, font: ArrayBuffer, codePoints: ReadonlySet<number>): Uint8Array<ArrayBuffer>;
42
42
  declare const _default: {
43
43
  subset: typeof subset;
44
44
  };
@@ -7,7 +7,7 @@
7
7
  * In the future consider separating common utils into a separate shared chunk.
8
8
  */
9
9
  declare const load: () => Promise<{
10
- subset: (fontBuffer: ArrayBuffer, codePoints: ReadonlySet<number>) => Uint8Array;
10
+ subset: (fontBuffer: ArrayBuffer, codePoints: ReadonlySet<number>) => Uint8Array<ArrayBuffer>;
11
11
  }>;
12
12
  declare const _default: () => ReturnType<typeof load>;
13
13
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: Uint8Array;
1
+ declare const _default: Uint8Array<ArrayBuffer>;
2
2
  export default _default;
@@ -7,8 +7,8 @@
7
7
  * In the future consider separating common utils into a separate shared chunk.
8
8
  */
9
9
  declare const load: () => Promise<{
10
- compress: (buffer: ArrayBuffer) => Uint8Array;
11
- decompress: (buffer: ArrayBuffer) => Uint8Array;
10
+ compress: (buffer: ArrayBuffer) => Uint8Array<ArrayBuffer>;
11
+ decompress: (buffer: ArrayBuffer) => Uint8Array<ArrayBuffer>;
12
12
  }>;
13
13
  declare const _default: () => ReturnType<typeof load>;
14
14
  export default _default;
@@ -1,2 +1,2 @@
1
- declare const _default: Uint8Array;
1
+ declare const _default: Uint8Array<ArrayBuffer>;
2
2
  export default _default;
@@ -1,9 +1,10 @@
1
1
  import type { IMAGE_MIME_TYPES, UserIdleState, throttleRAF, MIME_TYPES, EditorInterface } from "@excalidraw/common";
2
2
  import type { LinearElementEditor } from "@excalidraw/element";
3
3
  import type { MaybeTransformHandleType } from "@excalidraw/element";
4
- import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement, ExcalidrawNonSelectionElement, BindMode } from "@excalidraw/element/types";
4
+ import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, FontFamilyValues, FileId, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement, ExcalidrawNonSelectionElement, BindMode } from "@excalidraw/element/types";
5
5
  import type { Merge, MaybePromise, ValueOf, MakeBrand } from "@excalidraw/common/utility-types";
6
6
  import type { CaptureUpdateActionType, DurableIncrement, EphemeralIncrement } from "@excalidraw/element";
7
+ import type { GlobalPoint } from "@excalidraw/math";
7
8
  import type { Action } from "./actions/types";
8
9
  import type { Spreadsheet } from "./charts";
9
10
  import type { ClipboardData } from "./clipboard";
@@ -17,6 +18,7 @@ import type { Language } from "./i18n";
17
18
  import type { isOverScrollBars } from "./scene/scrollbars";
18
19
  import type React from "react";
19
20
  import type { JSX } from "react";
21
+ export type { App };
20
22
  export type SocketId = string & {
21
23
  _brand: "SocketId";
22
24
  };
@@ -128,6 +130,7 @@ export type StaticCanvasAppState = Readonly<_CommonCanvasAppState & {
128
130
  croppingElementId: AppState["croppingElementId"];
129
131
  }>;
130
132
  export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
133
+ activeTool: AppState["activeTool"];
131
134
  activeEmbeddable: AppState["activeEmbeddable"];
132
135
  selectionElement: AppState["selectionElement"];
133
136
  selectedGroupIds: AppState["selectedGroupIds"];
@@ -135,6 +138,7 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
135
138
  multiElement: AppState["multiElement"];
136
139
  newElement: AppState["newElement"];
137
140
  isBindingEnabled: AppState["isBindingEnabled"];
141
+ isMidpointSnappingEnabled: AppState["isMidpointSnappingEnabled"];
138
142
  suggestedBinding: AppState["suggestedBinding"];
139
143
  isRotating: AppState["isRotating"];
140
144
  elementsToHighlight: AppState["elementsToHighlight"];
@@ -150,6 +154,7 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
150
154
  frameRendering: AppState["frameRendering"];
151
155
  shouldCacheIgnoreZoom: AppState["shouldCacheIgnoreZoom"];
152
156
  exportScale: AppState["exportScale"];
157
+ currentItemArrowType: AppState["currentItemArrowType"];
153
158
  }>;
154
159
  export type ObservedAppState = ObservedStandaloneAppState & ObservedElementsAppState;
155
160
  export type ObservedStandaloneAppState = {
@@ -201,9 +206,20 @@ export interface AppState {
201
206
  * - set on pointer down, updated during pointer move
202
207
  */
203
208
  selectionElement: NonDeletedExcalidrawElement | null;
209
+ /**
210
+ * tracking current arrow binding editor state (takes into account
211
+ * `bindingPreference` and keyboard modifiers (ctrl/alt)
212
+ */
204
213
  isBindingEnabled: boolean;
214
+ /** user arrow binding preference */
215
+ bindingPreference: "enabled" | "disabled";
216
+ /** user preference whether arrow snap to midpoints while binding */
217
+ isMidpointSnappingEnabled: boolean;
205
218
  startBoundElement: NonDeleted<ExcalidrawBindableElement> | null;
206
- suggestedBinding: NonDeleted<ExcalidrawBindableElement> | null;
219
+ suggestedBinding: {
220
+ element: NonDeleted<ExcalidrawBindableElement>;
221
+ midPoint?: GlobalPoint;
222
+ } | null;
207
223
  frameToHighlight: NonDeleted<ExcalidrawFrameLikeElement> | null;
208
224
  frameRendering: {
209
225
  enabled: boolean;
@@ -278,6 +294,10 @@ export interface AppState {
278
294
  } | {
279
295
  name: "elementLinkSelector";
280
296
  sourceElementId: ExcalidrawElement["id"];
297
+ } | {
298
+ name: "charts";
299
+ data: Spreadsheet;
300
+ rawText: string;
281
301
  };
282
302
  /**
283
303
  * Reflects user preference for whether the default sidebar should be docked.
@@ -329,14 +349,6 @@ export interface AppState {
329
349
  /** bitmap. Use `STATS_PANELS` bit values */
330
350
  panels: number;
331
351
  };
332
- currentChartType: ChartType;
333
- pasteDialog: {
334
- shown: false;
335
- data: null;
336
- } | {
337
- shown: true;
338
- data: Spreadsheet;
339
- };
340
352
  showHyperlinkPopup: false | "info" | "editor";
341
353
  selectedLinearElement: LinearElementEditor | null;
342
354
  snapLines: readonly SnapLine[];
@@ -375,7 +387,7 @@ export type SearchMatch = {
375
387
  showOnCanvas: boolean;
376
388
  }[];
377
389
  };
378
- export type UIAppState = Omit<AppState, "suggestedBinding" | "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
390
+ export type UIAppState = Omit<AppState, "startBoundElement" | "cursorButton" | "scrollX" | "scrollY">;
379
391
  export type NormalizedZoomValue = number & {
380
392
  _brand: "normalizedZoom";
381
393
  };
@@ -515,8 +527,7 @@ export type UIOptions = Partial<{
515
527
  * Optionally control the editor form factor and desktop UI mode from the host app.
516
528
  * If not provided, we will take care of it internally.
517
529
  */
518
- formFactor?: EditorInterface["formFactor"];
519
- desktopUIMode?: EditorInterface["desktopUIMode"];
530
+ getFormFactor?: (editorWidth: number, editorHeight: number) => EditorInterface["formFactor"];
520
531
  /** @deprecated does nothing. Will be removed in 0.15 */
521
532
  welcomeScreen?: boolean;
522
533
  }>;
@@ -577,6 +588,7 @@ export type AppClassProperties = {
577
588
  onPointerUpEmitter: App["onPointerUpEmitter"];
578
589
  updateEditorAtom: App["updateEditorAtom"];
579
590
  onPointerDownEmitter: App["onPointerDownEmitter"];
591
+ lastPointerMoveCoords: App["lastPointerMoveCoords"];
580
592
  bindModeHandler: App["bindModeHandler"];
581
593
  };
582
594
  export type PointerDownState = Readonly<{
@@ -716,4 +728,3 @@ export type Offsets = Partial<{
716
728
  bottom: number;
717
729
  left: number;
718
730
  }>;
719
- export {};
@@ -9,7 +9,7 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
9
9
  * Note: `text`, which can be wrapped and therefore different from `originalText`,
10
10
  * is derived from `originalText`
11
11
  */
12
- onChange?: ((nextOriginalText: string) => void) | undefined;
12
+ onChange?: (nextOriginalText: string) => void;
13
13
  onSubmit: (data: {
14
14
  viaKeyboard: boolean;
15
15
  nextOriginalText: string;
@@ -19,6 +19,6 @@ export declare const textWysiwyg: ({ id, onChange, onSubmit, getViewportCoords,
19
19
  canvas: HTMLCanvasElement;
20
20
  excalidrawContainer: HTMLDivElement | null;
21
21
  app: App;
22
- autoSelect?: boolean | undefined;
22
+ autoSelect?: boolean;
23
23
  }) => SubmitHandler;
24
24
  export {};
@@ -1,4 +1,4 @@
1
- import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector } from "./types";
1
+ import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector, GlobalCoord, LocalCoord } from "./types";
2
2
  /**
3
3
  * Create a properly typed Point instance from the X and Y coordinates.
4
4
  *
@@ -7,6 +7,11 @@ import type { LocalPoint, GlobalPoint, Radians, Degrees, Vector } from "./types"
7
7
  * @returns The branded and created point
8
8
  */
9
9
  export declare function pointFrom<Point extends GlobalPoint | LocalPoint>(x: number, y: number): Point;
10
+ export declare function pointFrom<Coord extends GlobalCoord | LocalCoord>(coords: Coord): Coord extends GlobalCoord ? GlobalPoint : LocalPoint;
11
+ export declare function pointFrom<Point extends GlobalPoint | LocalPoint>(coords: {
12
+ x: number;
13
+ y: number;
14
+ }): Point;
10
15
  /**
11
16
  * Converts and remaps an array containing a pair of numbers to Point.
12
17
  *
@@ -1,6 +1,6 @@
1
1
  import type { GlobalPoint, LocalPoint, Polygon } from "./types";
2
2
  export declare function polygon<Point extends GlobalPoint | LocalPoint>(...points: Point[]): Polygon<Point>;
3
3
  export declare function polygonFromPoints<Point extends GlobalPoint | LocalPoint>(points: Point[]): Polygon<Point>;
4
- export declare const polygonIncludesPoint: <Point extends GlobalPoint | LocalPoint>(point: Point, polygon: Polygon<Point>) => boolean;
4
+ export declare const polygonIncludesPoint: <Point extends LocalPoint | GlobalPoint>(point: Point, polygon: Polygon<Point>) => boolean;
5
5
  export declare const polygonIncludesPointNonZero: <Point extends [number, number]>(point: Point, polygon: Point[]) => boolean;
6
- export declare const pointOnPolygon: <Point extends GlobalPoint | LocalPoint>(p: Point, poly: Polygon<Point>, threshold?: number) => boolean;
6
+ export declare const pointOnPolygon: <Point extends LocalPoint | GlobalPoint>(p: Point, poly: Polygon<Point>, threshold?: number) => boolean;
@@ -13,9 +13,7 @@ export declare function rangeInclusive(start: number, end: number): InclusiveRan
13
13
  * @param pair The number pair to convert to an inclusive range
14
14
  * @returns The new inclusive range
15
15
  */
16
- export declare function rangeInclusiveFromPair(pair: [start: number, end: number]): [number, number] & {
17
- _brand: "excalimath_degree";
18
- };
16
+ export declare function rangeInclusiveFromPair(pair: [start: number, end: number]): InclusiveRange;
19
17
  /**
20
18
  * Given two ranges, return if the two ranges overlap with each other e.g.
21
19
  * [1, 3] overlaps with [2, 4] while [1, 3] does not overlap with [4, 5].
@@ -21,14 +21,14 @@ export declare const isLineSegment: <Point extends GlobalPoint | LocalPoint>(seg
21
21
  * @param origin
22
22
  * @returns
23
23
  */
24
- export declare const lineSegmentRotate: <Point extends GlobalPoint | LocalPoint>(l: LineSegment<Point>, angle: Radians, origin?: Point | undefined) => LineSegment<Point>;
24
+ export declare const lineSegmentRotate: <Point extends LocalPoint | GlobalPoint>(l: LineSegment<Point>, angle: Radians, origin?: Point) => LineSegment<Point>;
25
25
  /**
26
26
  * Calculates the point two line segments with a definite start and end point
27
27
  * intersect at.
28
28
  */
29
29
  export declare const segmentsIntersectAt: <Point extends GlobalPoint | LocalPoint>(a: Readonly<LineSegment<Point>>, b: Readonly<LineSegment<Point>>) => Point | null;
30
- export declare const pointOnLineSegment: <Point extends GlobalPoint | LocalPoint>(point: Point, line: LineSegment<Point>, threshold?: number) => boolean;
31
- export declare const distanceToLineSegment: <Point extends GlobalPoint | LocalPoint>(point: Point, line: LineSegment<Point>) => number;
30
+ export declare const pointOnLineSegment: <Point extends LocalPoint | GlobalPoint>(point: Point, line: LineSegment<Point>, threshold?: number) => boolean;
31
+ export declare const distanceToLineSegment: <Point extends LocalPoint | GlobalPoint>(point: Point, line: LineSegment<Point>) => number;
32
32
  /**
33
33
  * Returns the intersection point of a segment and a line
34
34
  *
@@ -19,12 +19,24 @@ export type InclusiveRange = [number, number] & {
19
19
  _brand: "excalimath_degree";
20
20
  };
21
21
  /**
22
- * Represents a 2D position in world or canvas space. A
22
+ * Represents a 2D position in world/canvas/scene space. A
23
23
  * global coordinate.
24
24
  */
25
25
  export type GlobalPoint = [x: number, y: number] & {
26
26
  _brand: "excalimath__globalpoint";
27
27
  };
28
+ /**
29
+ * Represents a 2D position in world/canvas/scene space. A
30
+ * global coordinate.
31
+ *
32
+ * TODO remove this once we migrate the codebase to use Point tuples everywhere
33
+ */
34
+ export type GlobalCoord = {
35
+ x: number;
36
+ y: number;
37
+ } & {
38
+ _brand: "excalimath__globalcoord";
39
+ };
28
40
  /**
29
41
  * Represents a 2D position in whatever local space it's
30
42
  * needed. A local coordinate.
@@ -32,6 +44,18 @@ export type GlobalPoint = [x: number, y: number] & {
32
44
  export type LocalPoint = [x: number, y: number] & {
33
45
  _brand: "excalimath__localpoint";
34
46
  };
47
+ /**
48
+ * Represents a 2D position in whatever local space it's needed.
49
+ * A local coordinate.
50
+ *
51
+ * TODO remove this once we migrate the codebase to use Point tuples everywhere
52
+ */
53
+ export type LocalCoord = {
54
+ x: number;
55
+ y: number;
56
+ } & {
57
+ _brand: "excalimath__localcoord";
58
+ };
35
59
  /**
36
60
  * A line is an infinitely long object with no width, depth, or curvature.
37
61
  */