@dwelle/excalidraw 0.4.0-e1bdbb6 → 0.4.0-e587816

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 (240) hide show
  1. package/CHANGELOG.md +714 -0
  2. package/README.md +18 -1422
  3. package/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.js → vendor-d415b28e9024dee4bb1b.js} +2 -2
  4. package/dist/excalidraw-assets-dev/{vendor-e6df8519da951026ff69.js → vendor-a14cd58fa2db417e42b2.js} +6 -6
  5. package/dist/excalidraw.development.js +3257 -1444
  6. package/dist/excalidraw.production.min.js +1 -1
  7. package/dist/excalidraw.production.min.js.LICENSE.txt +20 -0
  8. package/main.js +1 -8
  9. package/package.json +9 -4
  10. package/types/actions/actionAddToLibrary.d.ts +124 -64
  11. package/types/actions/actionAlign.d.ts +33 -40
  12. package/types/actions/actionBoundText.d.ts +182 -25
  13. package/types/actions/actionCanvas.d.ts +754 -220
  14. package/types/actions/actionClipboard.d.ts +236 -115
  15. package/types/actions/actionDeleteSelected.d.ts +133 -72
  16. package/types/actions/actionDistribute.d.ts +11 -16
  17. package/types/actions/actionDuplicateSelection.d.ts +4 -7
  18. package/types/actions/actionElementLock.d.ts +271 -0
  19. package/types/actions/actionExport.d.ts +440 -277
  20. package/types/actions/actionFinalize.d.ts +85 -51
  21. package/types/actions/actionFlip.d.ts +8 -11
  22. package/types/actions/actionFrame.d.ts +423 -0
  23. package/types/actions/actionGroup.d.ts +252 -19
  24. package/types/actions/actionHistory.d.ts +1 -1
  25. package/types/actions/actionLinearEditor.d.ts +44 -24
  26. package/types/actions/actionMenu.d.ts +132 -79
  27. package/types/actions/actionNavigate.d.ts +2 -3
  28. package/types/actions/actionProperties.d.ts +569 -334
  29. package/types/actions/actionSelectAll.d.ts +123 -4
  30. package/types/actions/actionStyles.d.ts +46 -27
  31. package/types/actions/actionToggleGridMode.d.ts +46 -25
  32. package/types/actions/{actionToggleLock.d.ts → actionToggleObjectsSnapMode.d.ts} +56 -35
  33. package/types/actions/actionToggleStats.d.ts +45 -25
  34. package/types/actions/actionToggleViewMode.d.ts +46 -25
  35. package/types/actions/actionToggleZenMode.d.ts +46 -25
  36. package/types/actions/actionZindex.d.ts +16 -24
  37. package/types/actions/index.d.ts +2 -1
  38. package/types/actions/manager.d.ts +3 -2
  39. package/types/actions/shortcuts.d.ts +2 -1
  40. package/types/actions/types.d.ts +16 -13
  41. package/types/appState.d.ts +27 -28
  42. package/types/charts.d.ts +2 -2
  43. package/types/clients.d.ts +5 -6
  44. package/types/clipboard.d.ts +9 -3
  45. package/types/colors.d.ts +60 -5
  46. package/types/components/Actions.d.ts +7 -12
  47. package/types/components/ActiveConfirmDialog.d.ts +4 -0
  48. package/types/components/App.d.ts +102 -86
  49. package/types/components/Avatar.d.ts +1 -2
  50. package/types/components/BraveMeasureTextError.d.ts +2 -0
  51. package/types/components/Button.d.ts +16 -0
  52. package/types/components/ButtonIconSelect.d.ts +11 -3
  53. package/types/components/Card.d.ts +6 -0
  54. package/types/components/ColorPicker/ColorInput.d.ts +9 -0
  55. package/types/components/ColorPicker/ColorPicker.d.ts +19 -0
  56. package/types/components/ColorPicker/CustomColorList.d.ts +8 -0
  57. package/types/components/ColorPicker/HotkeyLabel.d.ts +8 -0
  58. package/types/components/ColorPicker/Picker.d.ts +18 -0
  59. package/types/components/ColorPicker/PickerColorList.d.ts +10 -0
  60. package/types/components/ColorPicker/PickerHeading.d.ts +5 -0
  61. package/types/components/ColorPicker/ShadeList.d.ts +8 -0
  62. package/types/components/ColorPicker/TopPicks.d.ts +9 -0
  63. package/types/components/ColorPicker/colorPickerUtils.d.ts +21 -0
  64. package/types/components/ColorPicker/keyboardNavHandlers.d.ts +20 -0
  65. package/types/components/ContextMenu.d.ts +9 -22
  66. package/types/components/DefaultSidebar.d.ts +29 -0
  67. package/types/components/Dialog.d.ts +3 -4
  68. package/types/components/ErrorDialog.d.ts +3 -2
  69. package/types/components/ExcalidrawLogo.d.ts +15 -0
  70. package/types/components/EyeDropper.d.ts +28 -0
  71. package/types/components/FilledButton.d.ts +17 -0
  72. package/types/components/FixedSideContainer.d.ts +1 -1
  73. package/types/components/HandButton.d.ts +10 -0
  74. package/types/components/HelpButton.d.ts +1 -2
  75. package/types/components/HintViewer.d.ts +4 -5
  76. package/types/components/HomeButton.d.ts +1 -1
  77. package/types/components/ImageExportDialog.d.ts +8 -13
  78. package/types/components/Island.d.ts +1 -1
  79. package/types/components/JSONExportDialog.d.ts +7 -5
  80. package/types/components/LaserTool/LaserPathManager.d.ts +28 -0
  81. package/types/components/LaserTool/LaserPointerButton.d.ts +10 -0
  82. package/types/components/LaserTool/LaserTool.d.ts +7 -0
  83. package/types/components/LayerUI.d.ts +11 -19
  84. package/types/components/LibraryMenu.d.ts +13 -14
  85. package/types/components/LibraryMenuBrowseButton.d.ts +2 -2
  86. package/types/components/LibraryMenuControlButtons.d.ts +9 -0
  87. package/types/components/LibraryMenuHeaderContent.d.ts +10 -5
  88. package/types/components/LibraryMenuItems.d.ts +6 -7
  89. package/types/components/LibraryMenuSection.d.ts +22 -0
  90. package/types/components/LibraryUnit.d.ts +6 -3
  91. package/types/components/LoadingMessage.d.ts +0 -1
  92. package/types/components/LockButton.d.ts +1 -2
  93. package/types/components/MobileMenu.d.ts +9 -15
  94. package/types/components/OverwriteConfirm/OverwriteConfirm.d.ts +17 -0
  95. package/types/components/OverwriteConfirm/OverwriteConfirmActions.d.ts +17 -0
  96. package/types/components/OverwriteConfirm/OverwriteConfirmState.d.ts +22 -0
  97. package/types/components/PasteChartDialog.d.ts +4 -5
  98. package/types/components/PenModeButton.d.ts +1 -1
  99. package/types/components/Popover.d.ts +1 -1
  100. package/types/components/ProjectName.d.ts +2 -1
  101. package/types/components/PublishLibrary.d.ts +2 -2
  102. package/types/components/RadioGroup.d.ts +12 -0
  103. package/types/components/Section.d.ts +1 -1
  104. package/types/components/Sidebar/Sidebar.d.ts +66 -63
  105. package/types/components/Sidebar/SidebarHeader.d.ts +6 -19
  106. package/types/components/Sidebar/SidebarTab.d.ts +8 -0
  107. package/types/components/Sidebar/SidebarTabTrigger.d.ts +9 -0
  108. package/types/components/Sidebar/SidebarTabTriggers.d.ts +6 -0
  109. package/types/components/Sidebar/SidebarTabs.d.ts +6 -0
  110. package/types/components/Sidebar/SidebarTrigger.d.ts +6 -0
  111. package/types/components/Sidebar/common.d.ts +24 -7
  112. package/types/components/Spinner.d.ts +2 -1
  113. package/types/components/Stack.d.ts +4 -3
  114. package/types/components/Stats.d.ts +3 -3
  115. package/types/components/Switch.d.ts +9 -0
  116. package/types/components/ToolButton.d.ts +6 -5
  117. package/types/components/Tooltip.d.ts +1 -1
  118. package/types/components/Trans.d.ts +9 -0
  119. package/types/components/UserList.d.ts +0 -2
  120. package/types/components/canvases/InteractiveCanvas.d.ts +27 -0
  121. package/types/components/canvases/StaticCanvas.d.ts +18 -0
  122. package/types/components/canvases/index.d.ts +3 -0
  123. package/types/components/dropdownMenu/DropdownMenu.d.ts +70 -0
  124. package/types/components/dropdownMenu/DropdownMenuContent.d.ts +15 -0
  125. package/types/components/dropdownMenu/DropdownMenuGroup.d.ts +11 -0
  126. package/types/components/dropdownMenu/DropdownMenuItem.d.ts +13 -0
  127. package/types/components/dropdownMenu/DropdownMenuItemContent.d.ts +6 -0
  128. package/types/components/dropdownMenu/DropdownMenuItemCustom.d.ts +7 -0
  129. package/types/components/dropdownMenu/DropdownMenuItemLink.d.ts +14 -0
  130. package/types/components/dropdownMenu/DropdownMenuSeparator.d.ts +5 -0
  131. package/types/components/dropdownMenu/DropdownMenuTrigger.d.ts +10 -0
  132. package/types/components/dropdownMenu/common.d.ts +6 -0
  133. package/types/components/dropdownMenu/dropdownMenuUtils.d.ts +3 -0
  134. package/types/components/footer/Footer.d.ts +12 -0
  135. package/types/components/footer/FooterCenter.d.ts +8 -0
  136. package/types/components/hoc/withInternalFallback.d.ts +4 -0
  137. package/types/components/icons.d.ts +17 -2
  138. package/types/components/live-collaboration/LiveCollaborationTrigger.d.ts +9 -0
  139. package/types/components/main-menu/DefaultItems.d.ts +47 -0
  140. package/types/components/main-menu/MainMenu.d.ts +64 -0
  141. package/types/components/welcome-screen/WelcomeScreen.Center.d.ts +57 -0
  142. package/types/components/welcome-screen/WelcomeScreen.Hints.d.ts +19 -0
  143. package/types/components/welcome-screen/WelcomeScreen.d.ts +84 -0
  144. package/types/constants.d.ts +105 -18
  145. package/types/context/tunnels.d.ts +19 -0
  146. package/types/context/ui-appState.d.ts +4 -0
  147. package/types/cursor.d.ts +5 -0
  148. package/types/data/blob.d.ts +5 -3
  149. package/types/data/encode.d.ts +1 -1
  150. package/types/data/filesystem.d.ts +2 -1
  151. package/types/data/index.d.ts +1 -1
  152. package/types/data/library.d.ts +3 -45
  153. package/types/data/restore.d.ts +10 -4
  154. package/types/data/transform.d.ts +73 -0
  155. package/types/data/types.d.ts +3 -5
  156. package/types/data/url.d.ts +7 -0
  157. package/types/element/Hyperlink.d.ts +57 -36
  158. package/types/element/binding.d.ts +4 -3
  159. package/types/element/bounds.d.ts +41 -10
  160. package/types/element/collision.d.ts +7 -7
  161. package/types/element/dragElements.d.ts +12 -2
  162. package/types/element/embeddable.d.ts +153 -0
  163. package/types/element/image.d.ts +11 -1
  164. package/types/element/index.d.ts +3 -2
  165. package/types/element/linearElementEditor.d.ts +77 -30
  166. package/types/element/mutateElement.d.ts +3 -2
  167. package/types/element/newElement.d.ts +48 -15
  168. package/types/element/resizeElements.d.ts +3 -3
  169. package/types/element/resizeTest.d.ts +2 -1
  170. package/types/element/showSelectedShapeActions.d.ts +2 -2
  171. package/types/element/sizeHelpers.d.ts +8 -1
  172. package/types/element/sortElements.d.ts +2 -0
  173. package/types/element/textElement.d.ts +57 -9
  174. package/types/element/textWysiwyg.d.ts +7 -2
  175. package/types/element/transformHandles.d.ts +15 -8
  176. package/types/element/typeChecks.d.ts +14 -2
  177. package/types/element/types.d.ts +66 -35
  178. package/types/emitter.d.ts +1 -2
  179. package/types/errors.d.ts +1 -1
  180. package/types/frame.d.ts +46 -0
  181. package/types/ga.d.ts +5 -5
  182. package/types/groups.d.ts +15 -11
  183. package/types/history.d.ts +3 -3
  184. package/types/hooks/useCreatePortalContainer.d.ts +4 -0
  185. package/types/hooks/useLibraryItemSvg.d.ts +11 -0
  186. package/types/hooks/useOutsideClick.d.ts +19 -2
  187. package/types/hooks/useScrollPosition.d.ts +1 -0
  188. package/types/hooks/useStable.d.ts +1 -0
  189. package/types/hooks/useTransition.d.ts +2 -0
  190. package/types/i18n.d.ts +11 -2
  191. package/types/jotai.d.ts +20 -108
  192. package/types/keys.d.ts +7 -4
  193. package/types/math.d.ts +7 -1
  194. package/types/packages/bbox.d.ts +11 -0
  195. package/types/packages/excalidraw/example/App.d.ts +7 -1
  196. package/types/packages/excalidraw/example/CustomFooter.d.ts +5 -0
  197. package/types/packages/excalidraw/example/MobileFooter.d.ts +5 -0
  198. package/types/packages/excalidraw/example/initialData.d.ts +182 -64
  199. package/types/packages/excalidraw/index.d.ts +22 -4
  200. package/types/packages/excalidraw/main.d.ts +3 -1
  201. package/types/packages/excalidraw/webpack.dev.config.d.ts +5 -2
  202. package/types/packages/excalidraw/webpack.prod.config.d.ts +3 -0
  203. package/types/packages/utils.d.ts +30 -24
  204. package/types/packages/withinBounds.d.ts +19 -0
  205. package/types/renderer/renderElement.d.ts +13 -22
  206. package/types/renderer/renderScene.d.ts +19 -29
  207. package/types/renderer/renderSnaps.d.ts +2 -0
  208. package/types/renderer/roundRect.d.ts +1 -1
  209. package/types/scene/Fonts.d.ts +21 -0
  210. package/types/scene/Renderer.d.ts +25 -0
  211. package/types/scene/Scene.d.ts +42 -5
  212. package/types/scene/Shape.d.ts +12 -0
  213. package/types/scene/ShapeCache.d.ts +20 -0
  214. package/types/scene/comparisons.d.ts +2 -4
  215. package/types/scene/export.d.ts +183 -10
  216. package/types/scene/index.d.ts +1 -1
  217. package/types/scene/scroll.d.ts +1 -1
  218. package/types/scene/scrollbars.d.ts +2 -6
  219. package/types/scene/selection.d.ts +27 -6
  220. package/types/scene/types.d.ts +70 -26
  221. package/types/snapping.d.ts +108 -0
  222. package/types/types.d.ts +227 -91
  223. package/types/utility-types.d.ts +24 -0
  224. package/types/utils.d.ts +75 -14
  225. package/types/zindex.d.ts +4 -4
  226. package/types/components/ActiveFile.d.ts +0 -7
  227. package/types/components/ClearCanvas.d.ts +0 -4
  228. package/types/components/CollabButton.d.ts +0 -6
  229. package/types/components/ColorPicker.d.ts +0 -14
  230. package/types/components/Footer.d.ts +0 -10
  231. package/types/components/LibraryButton.d.ts +0 -8
  232. package/types/components/MenuItem.d.ts +0 -11
  233. package/types/components/MenuUtils.d.ts +0 -1
  234. package/types/components/SingleLibraryItem.d.ts +0 -10
  235. package/types/components/WelcomeScreen.d.ts +0 -10
  236. package/types/components/WelcomeScreenDecor.d.ts +0 -6
  237. package/types/components/hoc/withUpstreamOverride.d.ts +0 -10
  238. /package/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.js.LICENSE.txt → vendor-d415b28e9024dee4bb1b.js.LICENSE.txt} +0 -0
  239. /package/types/packages/excalidraw/dist/excalidraw-assets/{vendor-2002fe1b8862917b36c1.d.ts → vendor-d415b28e9024dee4bb1b.d.ts} +0 -0
  240. /package/types/packages/excalidraw/dist/excalidraw-assets-dev/{vendor-e6df8519da951026ff69.d.ts → vendor-a14cd58fa2db417e42b2.d.ts} +0 -0
package/types/math.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Point, Zoom } from "./types";
2
- import { ExcalidrawLinearElement, NonDeleted } from "./element/types";
2
+ import { ExcalidrawElement, ExcalidrawLinearElement, NonDeleted } from "./element/types";
3
3
  export declare const rotate: (x1: number, y1: number, x2: number, y2: number, angle: number) => [number, number];
4
4
  export declare const rotatePoint: (point: readonly [number, number], center: readonly [number, number], angle: number) => [number, number];
5
5
  export declare const adjustXYWithRotation: (sides: {
@@ -17,7 +17,9 @@ export declare const distance2d: (x1: number, y1: number, x2: number, y2: number
17
17
  export declare const centerPoint: (a: readonly [number, number], b: readonly [number, number]) => readonly [number, number];
18
18
  export declare const isPathALoop: (points: ExcalidrawLinearElement["points"], zoomValue?: Zoom["value"]) => boolean;
19
19
  export declare const isPointInPolygon: (points: Point[], x: number, y: number) => boolean;
20
+ export declare const isPointWithinBounds: (p: readonly [number, number], q: readonly [number, number], r: readonly [number, number]) => boolean;
20
21
  export declare const getGridPoint: (x: number, y: number, gridSize: number | null) => [number, number];
22
+ export declare const getCornerRadius: (x: number, element: ExcalidrawElement) => number;
21
23
  export declare const getControlPointsForBezierCurve: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number]) => [number, number][] | null;
22
24
  export declare const getBezierXY: (p0: readonly [number, number], p1: readonly [number, number], p2: readonly [number, number], p3: readonly [number, number], t: number) => number[];
23
25
  export declare const getPointsInBezierCurve: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number]) => [number, number][];
@@ -25,3 +27,7 @@ export declare const getBezierCurveArcLengths: (element: NonDeleted<ExcalidrawLi
25
27
  export declare const getBezierCurveLength: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number]) => number;
26
28
  export declare const mapIntervalToBezierT: (element: NonDeleted<ExcalidrawLinearElement>, endPoint: readonly [number, number], interval: number) => number;
27
29
  export declare const arePointsEqual: (p1: readonly [number, number], p2: readonly [number, number]) => boolean;
30
+ export declare const isRightAngle: (angle: number) => boolean;
31
+ export declare const rangesOverlap: ([a0, a1]: [number, number], [b0, b1]: [number, number]) => boolean;
32
+ export declare const rangeIntersection: (rangeA: [number, number], rangeB: [number, number]) => [number, number] | null;
33
+ export declare const isValueInRange: (value: number, min: number, max: number) => boolean;
@@ -0,0 +1,11 @@
1
+ import { Bounds } from "../element/bounds";
2
+ import { Point } from "../types";
3
+ export type LineSegment = [Point, Point];
4
+ export declare function getBBox(line: LineSegment): Bounds;
5
+ export declare function crossProduct(a: Point, b: Point): number;
6
+ export declare function doBBoxesIntersect(a: Bounds, b: Bounds): boolean;
7
+ export declare function translate(a: Point, b: Point): Point;
8
+ export declare function isPointOnLine(l: LineSegment, p: Point): boolean;
9
+ export declare function isPointRightOfLine(l: LineSegment, p: Point): boolean;
10
+ export declare function isLineSegmentTouchingOrCrossingLine(a: LineSegment, b: LineSegment): boolean;
11
+ export declare function doLineSegmentsIntersect(a: LineSegment, b: LineSegment): boolean;
@@ -1,8 +1,14 @@
1
1
  import type * as TExcalidraw from "../index";
2
2
  import "./App.scss";
3
+ import { ExcalidrawImperativeAPI } from "../../../types";
3
4
  declare global {
4
5
  interface Window {
5
6
  ExcalidrawLib: typeof TExcalidraw;
6
7
  }
7
8
  }
8
- export default function App(): JSX.Element;
9
+ export interface AppProps {
10
+ appTitle: string;
11
+ useCustom: (api: ExcalidrawImperativeAPI | null, customArgs?: any[]) => void;
12
+ customArgs?: any[];
13
+ }
14
+ export default function App({ appTitle, useCustom, customArgs }: AppProps): JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { ExcalidrawImperativeAPI } from "../../../types";
2
+ declare const CustomFooter: ({ excalidrawAPI, }: {
3
+ excalidrawAPI: ExcalidrawImperativeAPI;
4
+ }) => JSX.Element;
5
+ export default CustomFooter;
@@ -0,0 +1,5 @@
1
+ import { ExcalidrawImperativeAPI } from "../../../types";
2
+ declare const MobileFooter: ({ excalidrawAPI, }: {
3
+ excalidrawAPI: ExcalidrawImperativeAPI;
4
+ }) => JSX.Element | null;
5
+ export default MobileFooter;
@@ -1,10 +1,42 @@
1
- declare namespace _default {
2
- const elements: ({
1
+ import { ExcalidrawElementSkeleton } from "../../../data/transform";
2
+ declare const _default: {
3
+ elements: ExcalidrawElementSkeleton[];
4
+ appState: {
5
+ viewBackgroundColor: string;
6
+ currentItemFontFamily: number;
7
+ };
8
+ scrollToContent: boolean;
9
+ libraryItems: ({
10
+ type: string;
11
+ x: number;
12
+ y: number;
13
+ strokeColor: string;
14
+ backgroundColor: string;
15
+ width: number;
16
+ height: number;
17
+ strokeSharpness: string;
18
+ points: number[][];
19
+ }[] | ({
20
+ type: string;
21
+ fillStyle: string;
22
+ strokeWidth: number;
23
+ strokeStyle: string;
24
+ x: number;
25
+ y: number;
26
+ strokeColor: string;
27
+ backgroundColor: string;
28
+ width: number;
29
+ height: number;
30
+ groupIds: string[];
31
+ points: number[][];
32
+ roughness?: undefined;
33
+ opacity?: undefined;
34
+ angle?: undefined;
35
+ seed?: undefined;
36
+ strokeSharpness?: undefined;
37
+ boundElementIds?: undefined;
38
+ } | {
3
39
  type: string;
4
- version: number;
5
- versionNonce: number;
6
- isDeleted: boolean;
7
- id: string;
8
40
  fillStyle: string;
9
41
  strokeWidth: number;
10
42
  strokeStyle: string;
@@ -18,48 +50,72 @@ declare namespace _default {
18
50
  width: number;
19
51
  height: number;
20
52
  seed: number;
21
- groupIds: never[];
22
- fileId?: undefined;
23
- strokeSharpness?: undefined;
24
- boundElements?: undefined;
25
- updated?: undefined;
26
- link?: undefined;
27
- status?: undefined;
28
- scale?: undefined;
53
+ groupIds: string[];
54
+ strokeSharpness: string;
55
+ points: number[][];
56
+ boundElementIds?: undefined;
29
57
  } | {
30
- fileId: string;
31
58
  type: string;
59
+ fillStyle: string;
60
+ strokeWidth: number;
61
+ strokeStyle: string;
62
+ roughness: number;
63
+ opacity: number;
64
+ angle: number;
32
65
  x: number;
33
66
  y: number;
67
+ strokeColor: string;
68
+ backgroundColor: string;
34
69
  width: number;
35
70
  height: number;
71
+ seed: number;
72
+ groupIds: string[];
73
+ strokeSharpness: string;
74
+ boundElementIds: string[];
75
+ points?: undefined;
76
+ } | {
77
+ type: string;
78
+ fillStyle: string;
79
+ strokeWidth: number;
80
+ strokeStyle: string;
81
+ roughness: number;
82
+ opacity: number;
36
83
  angle: number;
84
+ x: number;
85
+ y: number;
37
86
  strokeColor: string;
38
87
  backgroundColor: string;
88
+ width: number;
89
+ height: number;
90
+ seed: number;
91
+ groupIds: string[];
92
+ strokeSharpness: string;
93
+ points?: undefined;
94
+ boundElementIds?: undefined;
95
+ })[] | ({
96
+ type: string;
39
97
  fillStyle: string;
40
98
  strokeWidth: number;
41
99
  strokeStyle: string;
42
100
  roughness: number;
43
101
  opacity: number;
44
- groupIds: never[];
45
- strokeSharpness: string;
102
+ angle: number;
103
+ x: number;
104
+ y: number;
105
+ strokeColor: string;
106
+ backgroundColor: string;
107
+ width: number;
108
+ height: number;
46
109
  seed: number;
47
- version: number;
48
- versionNonce: number;
49
- isDeleted: boolean;
50
- boundElements: null;
51
- updated: number;
52
- link: null;
53
- status: string;
54
- scale: number[];
110
+ groupIds: string[];
111
+ strokeSharpness: string;
112
+ points: number[][];
113
+ version?: undefined;
114
+ versionNonce?: undefined;
115
+ isDeleted?: undefined;
55
116
  id?: undefined;
56
- })[];
57
- namespace appState {
58
- const viewBackgroundColor: string;
59
- const currentItemFontFamily: number;
60
- }
61
- const scrollToContent: boolean;
62
- const libraryItems: (({
117
+ boundElementIds?: undefined;
118
+ } | {
63
119
  type: string;
64
120
  version: number;
65
121
  versionNonce: number;
@@ -80,19 +136,10 @@ declare namespace _default {
80
136
  seed: number;
81
137
  groupIds: string[];
82
138
  strokeSharpness: string;
83
- boundElementIds: never[];
84
- startBinding: null;
85
- endBinding: null;
86
139
  points: number[][];
87
- lastCommittedPoint: null;
88
- startArrowhead: null;
89
- endArrowhead: null;
140
+ boundElementIds?: undefined;
90
141
  } | {
91
142
  type: string;
92
- version: number;
93
- versionNonce: number;
94
- isDeleted: boolean;
95
- id: string;
96
143
  fillStyle: string;
97
144
  strokeWidth: number;
98
145
  strokeStyle: string;
@@ -109,18 +156,13 @@ declare namespace _default {
109
156
  groupIds: string[];
110
157
  strokeSharpness: string;
111
158
  boundElementIds: string[];
112
- startBinding?: undefined;
113
- endBinding?: undefined;
114
159
  points?: undefined;
115
- lastCommittedPoint?: undefined;
116
- startArrowhead?: undefined;
117
- endArrowhead?: undefined;
160
+ version?: undefined;
161
+ versionNonce?: undefined;
162
+ isDeleted?: undefined;
163
+ id?: undefined;
118
164
  })[] | ({
119
165
  type: string;
120
- version: number;
121
- versionNonce: number;
122
- isDeleted: boolean;
123
- id: string;
124
166
  fillStyle: string;
125
167
  strokeWidth: number;
126
168
  strokeStyle: string;
@@ -136,17 +178,9 @@ declare namespace _default {
136
178
  seed: number;
137
179
  groupIds: string[];
138
180
  strokeSharpness: string;
139
- boundElementIds: string[];
140
181
  points?: undefined;
141
- lastCommittedPoint?: undefined;
142
- startArrowhead?: undefined;
143
- endArrowhead?: undefined;
144
182
  } | {
145
183
  type: string;
146
- version: number;
147
- versionNonce: number;
148
- isDeleted: boolean;
149
- id: string;
150
184
  fillStyle: string;
151
185
  strokeWidth: number;
152
186
  strokeStyle: string;
@@ -162,11 +196,95 @@ declare namespace _default {
162
196
  seed: number;
163
197
  groupIds: string[];
164
198
  strokeSharpness: string;
165
- boundElementIds: never[];
166
199
  points: number[][];
167
- lastCommittedPoint: null;
168
- startArrowhead: null;
169
- endArrowhead: null;
200
+ } | {
201
+ type: string;
202
+ fillStyle: string;
203
+ strokeWidth: number;
204
+ strokeStyle: string;
205
+ x: number;
206
+ y: number;
207
+ strokeColor: string;
208
+ backgroundColor: string;
209
+ width: number;
210
+ height: number;
211
+ groupIds: string[];
212
+ strokeSharpness: string;
213
+ points: number[][];
214
+ roughness?: undefined;
215
+ opacity?: undefined;
216
+ angle?: undefined;
217
+ seed?: undefined;
218
+ } | {
219
+ type: string;
220
+ fillStyle: string;
221
+ strokeWidth: number;
222
+ strokeStyle: string;
223
+ roughness: number;
224
+ opacity: number;
225
+ angle: number;
226
+ x: number;
227
+ y: number;
228
+ strokeColor: string;
229
+ backgroundColor: string;
230
+ width: number;
231
+ height: number;
232
+ groupIds: string[];
233
+ strokeSharpness: string;
234
+ points: number[][];
235
+ seed?: undefined;
236
+ } | {
237
+ type: string;
238
+ fillStyle: string;
239
+ strokeWidth: number;
240
+ strokeStyle: string;
241
+ opacity: number;
242
+ x: number;
243
+ y: number;
244
+ strokeColor: string;
245
+ backgroundColor: string;
246
+ width: number;
247
+ height: number;
248
+ seed: number;
249
+ groupIds: string[];
250
+ strokeSharpness: string;
251
+ points: number[][];
252
+ roughness?: undefined;
253
+ angle?: undefined;
254
+ })[] | ({
255
+ type: string;
256
+ fillStyle: string;
257
+ strokeWidth: number;
258
+ strokeStyle: string;
259
+ roughness: number;
260
+ opacity: number;
261
+ angle: number;
262
+ x: number;
263
+ y: number;
264
+ strokeColor: string;
265
+ backgroundColor: string;
266
+ width: number;
267
+ height: number;
268
+ seed: number;
269
+ groupIds: string[];
270
+ strokeSharpness: string;
271
+ } | {
272
+ type: string;
273
+ fillStyle: string;
274
+ strokeWidth: number;
275
+ strokeStyle: string;
276
+ x: number;
277
+ y: number;
278
+ strokeColor: string;
279
+ backgroundColor: string;
280
+ width: number;
281
+ height: number;
282
+ seed: number;
283
+ groupIds: string[];
284
+ strokeSharpness: string;
285
+ roughness?: undefined;
286
+ opacity?: undefined;
287
+ angle?: undefined;
170
288
  })[])[];
171
- }
289
+ };
172
290
  export default _default;
@@ -2,18 +2,36 @@ import React from "react";
2
2
  import "../../css/app.scss";
3
3
  import "../../css/styles.scss";
4
4
  import { ExcalidrawAPIRefValue, ExcalidrawProps } from "../../types";
5
- declare type PublicExcalidrawProps = Omit<ExcalidrawProps, "forwardedRef">;
5
+ import Footer from "../../components/footer/FooterCenter";
6
+ import MainMenu from "../../components/main-menu/MainMenu";
7
+ import WelcomeScreen from "../../components/welcome-screen/WelcomeScreen";
8
+ import LiveCollaborationTrigger from "../../components/live-collaboration/LiveCollaborationTrigger";
9
+ type PublicExcalidrawProps = Omit<ExcalidrawProps, "forwardedRef">;
6
10
  export declare const Excalidraw: React.MemoExoticComponent<React.ForwardRefExoticComponent<PublicExcalidrawProps & React.RefAttributes<ExcalidrawAPIRefValue>>>;
7
11
  export { getSceneVersion, isInvisiblySmallElement, getNonDeletedElements, } from "../../element";
8
- export { defaultLang, languages } from "../../i18n";
12
+ export { defaultLang, useI18n, languages } from "../../i18n";
9
13
  export { restore, restoreAppState, restoreElements, restoreLibraryItems, } from "../../data/restore";
10
- export { exportToCanvas, exportToBlob, exportToSvg, serializeAsJSON, serializeLibraryAsJSON, loadLibraryFromBlob, loadFromBlob, loadSceneOrLibraryFromBlob, getFreeDrawSvgPath, exportToClipboard, mergeLibraryItems, } from "../../packages/utils";
14
+ export { exportToBlob, exportToSvg, serializeAsJSON, serializeLibraryAsJSON, loadLibraryFromBlob, loadFromBlob, loadSceneOrLibraryFromBlob, getFreeDrawSvgPath, exportToClipboard, mergeLibraryItems, } from "../../packages/utils";
11
15
  export { isLinearElement } from "../../element/typeChecks";
12
- export { FONT_FAMILY, THEME, MIME_TYPES } from "../../constants";
16
+ export { FONT_FAMILY, THEME, MIME_TYPES, DEFAULT_LASER_COLOR, } from "../../constants";
13
17
  export { mutateElement, newElementWith, bumpVersion, } from "../../element/mutateElement";
14
18
  export { parseLibraryTokensFromUrl, useHandleLibrary, } from "../../data/library";
15
19
  export { sceneCoordsToViewportCoords, viewportCoordsToSceneCoords, } from "../../utils";
16
20
  export { Sidebar } from "../../components/Sidebar/Sidebar";
21
+ export { Button } from "../../components/Button";
22
+ export { Footer };
23
+ export { MainMenu };
24
+ export { useDevice } from "../../components/App";
25
+ export { WelcomeScreen };
26
+ export { LiveCollaborationTrigger };
27
+ export { DefaultSidebar } from "../../components/DefaultSidebar";
28
+ export { exportToCanvas } from "../../scene/export";
29
+ export { normalizeLink } from "../../data/url";
30
+ export { convertToExcalidrawElements } from "../../data/transform";
31
+ export { elementsOverlappingBBox, isElementInsideBBox, elementPartiallyOverlapsWithOrContainsBBox, } from "../withinBounds";
17
32
  export { getDefaultAppState, cleanAppStateForExport, clearAppStateForLocalStorage, } from "../../appState";
18
33
  export { jotaiScope, jotaiStore } from "../../jotai";
19
34
  export { libraryItemsAtom } from "../../data/library";
35
+ export * as icons from "../../components/icons";
36
+ export * as actions from "../../actions/index";
37
+ export { duplicateElements, duplicateElement } from "../../element/newElement";
@@ -1,2 +1,4 @@
1
- declare const _exports: any;
1
+ declare const _exports: {
2
+ ExcalidrawLib: {};
3
+ };
2
4
  export = _exports;
@@ -36,13 +36,16 @@ export namespace module {
36
36
  } | {
37
37
  test: RegExp;
38
38
  exclude: RegExp;
39
- use: {
39
+ use: ({
40
+ loader: string;
41
+ options?: undefined;
42
+ } | {
40
43
  loader: string;
41
44
  options: {
42
45
  transpileOnly: boolean;
43
46
  configFile: string;
44
47
  };
45
- }[];
48
+ })[];
46
49
  type?: undefined;
47
50
  } | {
48
51
  test: RegExp;
@@ -36,6 +36,9 @@ export namespace module {
36
36
  test: RegExp;
37
37
  exclude: RegExp;
38
38
  use: ({
39
+ loader: string;
40
+ options?: undefined;
41
+ } | {
39
42
  loader: string;
40
43
  options: {
41
44
  transpileOnly: boolean;
@@ -1,34 +1,40 @@
1
- import { AppState, BinaryFiles } from "../types";
2
- import { ExcalidrawElement, NonDeleted } from "../element/types";
1
+ import { ExportToCanvasConfig, ExportToCanvasData } from "../scene/export";
3
2
  import { MIME_TYPES } from "../constants";
4
3
  export { MIME_TYPES };
5
- declare type ExportOpts = {
6
- elements: readonly NonDeleted<ExcalidrawElement>[];
7
- appState?: Partial<Omit<AppState, "offsetTop" | "offsetLeft">>;
8
- files: BinaryFiles | null;
9
- maxWidthOrHeight?: number;
10
- getDimensions?: (width: number, height: number) => {
11
- width: number;
12
- height: number;
13
- scale?: number;
14
- };
15
- };
16
- export declare const exportToCanvas: ({ elements, appState, files, maxWidthOrHeight, getDimensions, exportPadding, }: ExportOpts & {
17
- exportPadding?: number | undefined;
18
- }) => Promise<HTMLCanvasElement>;
19
- export declare const exportToBlob: (opts: ExportOpts & {
4
+ type ExportToBlobConfig = ExportToCanvasConfig & {
20
5
  mimeType?: string;
21
6
  quality?: number;
7
+ };
8
+ type ExportToSvgConfig = Pick<ExportToCanvasConfig, "canvasBackgroundColor" | "padding" | "theme"> & {
22
9
  exportPadding?: number;
10
+ renderEmbeddables?: boolean;
11
+ };
12
+ export declare const exportToBlob: ({ data, config, }: {
13
+ data: ExportToCanvasData;
14
+ config?: ExportToBlobConfig | undefined;
23
15
  }) => Promise<Blob>;
24
- export declare const exportToSvg: ({ elements, appState, files, exportPadding, }: Omit<ExportOpts, "getDimensions"> & {
25
- exportPadding?: number | undefined;
16
+ export declare const exportToSvg: ({ data, config, }: {
17
+ data: ExportToCanvasData;
18
+ config?: ExportToSvgConfig | undefined;
26
19
  }) => Promise<SVGSVGElement>;
27
- export declare const exportToClipboard: (opts: ExportOpts & {
28
- mimeType?: string;
29
- quality?: number;
30
- type: "png" | "svg" | "json";
31
- }) => Promise<void>;
20
+ export declare const exportToCanvas: ({ data, config, }: {
21
+ data: ExportToCanvasData;
22
+ config?: ExportToCanvasConfig | undefined;
23
+ }) => Promise<HTMLCanvasElement>;
24
+ export declare const exportToClipboard: ({ type, data, config, }: {
25
+ data: ExportToCanvasData;
26
+ } & ({
27
+ type: "png";
28
+ config?: ExportToBlobConfig | undefined;
29
+ } | {
30
+ type: "svg";
31
+ config?: ExportToSvgConfig | undefined;
32
+ } | {
33
+ type: "json";
34
+ config?: undefined;
35
+ })) => Promise<void>;
36
+ export * from "./bbox";
37
+ export { elementsOverlappingBBox, isElementInsideBBox, elementPartiallyOverlapsWithOrContainsBBox, } from "./withinBounds";
32
38
  export { serializeAsJSON, serializeLibraryAsJSON } from "../data/json";
33
39
  export { loadFromBlob, loadSceneOrLibraryFromBlob, loadLibraryFromBlob, } from "../data/blob";
34
40
  export { getFreeDrawSvgPath } from "../renderer/renderElement";
@@ -0,0 +1,19 @@
1
+ import type { NonDeletedExcalidrawElement } from "../element/types";
2
+ import { Bounds } from "../element/bounds";
3
+ type Element = NonDeletedExcalidrawElement;
4
+ type Elements = readonly NonDeletedExcalidrawElement[];
5
+ export declare const isElementInsideBBox: (element: Element, bbox: Bounds, eitherDirection?: boolean) => boolean;
6
+ export declare const elementPartiallyOverlapsWithOrContainsBBox: (element: Element, bbox: Bounds) => boolean;
7
+ export declare const elementsOverlappingBBox: ({ elements, bounds, type, errorMargin, }: {
8
+ elements: Elements;
9
+ bounds: Bounds;
10
+ /** safety offset. Defaults to 0. */
11
+ errorMargin?: number | undefined;
12
+ /**
13
+ * - overlap: elements overlapping or inside bounds
14
+ * - contain: elements inside bounds or bounds inside elements
15
+ * - inside: elements inside bounds
16
+ **/
17
+ type: "overlap" | "contain" | "inside";
18
+ }) => NonDeletedExcalidrawElement[];
19
+ export {};
@@ -1,35 +1,26 @@
1
1
  import { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement, ExcalidrawFreeDrawElement } from "../element/types";
2
- import { RoughCanvas } from "roughjs/bin/canvas";
3
- import { Drawable, Options } from "roughjs/bin/core";
4
- import { RoughSVG } from "roughjs/bin/svg";
5
- import { RenderConfig } from "../scene/types";
6
- import { BinaryFiles, Zoom } from "../types";
2
+ import type { RoughCanvas } from "roughjs/bin/canvas";
3
+ import type { RoughSVG } from "roughjs/bin/svg";
4
+ import { StaticCanvasRenderConfig } from "../scene/types";
5
+ import { AppState, StaticCanvasAppState, BinaryFiles, InteractiveCanvasAppState } from "../types";
7
6
  export interface ExcalidrawElementWithCanvas {
8
7
  element: ExcalidrawElement | ExcalidrawTextElement;
9
8
  canvas: HTMLCanvasElement;
10
- theme: RenderConfig["theme"];
11
- canvasZoom: Zoom["value"];
9
+ theme: AppState["theme"];
10
+ scale: number;
11
+ zoomValue: AppState["zoom"]["value"];
12
12
  canvasOffsetX: number;
13
13
  canvasOffsetY: number;
14
+ boundTextElementVersion: number | null;
15
+ containingFrameOpacity: number;
14
16
  }
15
17
  export declare const DEFAULT_LINK_SIZE = 14;
16
- declare type ElementShape = Drawable | Drawable[] | null;
17
- declare type ElementShapes = {
18
- freedraw: Drawable | null;
19
- arrow: Drawable[];
20
- line: Drawable[];
21
- text: null;
22
- image: null;
23
- };
24
- export declare const getShapeForElement: <T extends ExcalidrawElement>(element: T) => T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] | undefined : Drawable | null | undefined;
25
- export declare const setShapeForElement: <T extends ExcalidrawElement>(element: T, shape: T["type"] extends keyof ElementShapes ? ElementShapes[T["type"]] : Drawable) => WeakMap<ExcalidrawElement, ElementShape>;
26
- export declare const invalidateShapeForElement: (element: ExcalidrawElement) => boolean;
18
+ export declare let elementWithCanvasCache: WeakMap<ExcalidrawElement, ExcalidrawElementWithCanvas>;
27
19
  export declare const clearRenderCache: () => void;
28
- export declare const generateRoughOptions: (element: ExcalidrawElement, continuousPath?: boolean) => Options;
29
- export declare const renderElement: (element: NonDeletedExcalidrawElement, rc: RoughCanvas, context: CanvasRenderingContext2D, renderConfig: RenderConfig) => void;
30
- export declare const renderElementToSvg: (element: NonDeletedExcalidrawElement, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, offsetX?: number, offsetY?: number, exportWithDarkMode?: boolean) => void;
20
+ export declare const renderSelectionElement: (element: NonDeletedExcalidrawElement, context: CanvasRenderingContext2D, appState: InteractiveCanvasAppState) => void;
21
+ export declare const renderElement: (element: NonDeletedExcalidrawElement, rc: RoughCanvas, context: CanvasRenderingContext2D, renderConfig: StaticCanvasRenderConfig, appState: StaticCanvasAppState) => void;
22
+ export declare const renderElementToSvg: (element: NonDeletedExcalidrawElement, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, offsetX: number, offsetY: number, exportWithDarkMode?: boolean, exportingFrameId?: string | null, renderEmbeddables?: boolean) => void;
31
23
  export declare let pathsCache: WeakMap<ExcalidrawFreeDrawElement, Path2D>;
32
24
  export declare function generateFreeDrawShape(element: ExcalidrawFreeDrawElement): Path2D;
33
25
  export declare function getFreeDrawPath2D(element: ExcalidrawFreeDrawElement): Path2D | undefined;
34
26
  export declare function getFreeDrawSvgPath(element: ExcalidrawFreeDrawElement): string;
35
- export {};
@@ -1,41 +1,31 @@
1
- import { RoughCanvas } from "roughjs/bin/canvas";
2
1
  import { RoughSVG } from "roughjs/bin/svg";
3
- import { AppState, BinaryFiles } from "../types";
2
+ import { BinaryFiles } from "../types";
4
3
  import { NonDeletedExcalidrawElement } from "../element/types";
5
- import { RenderConfig } from "../scene/types";
4
+ import { InteractiveSceneRenderConfig, StaticSceneRenderConfig } from "../scene/types";
5
+ import "canvas-roundrect-polyfill";
6
6
  export declare const DEFAULT_SPACING = 2;
7
- export declare const _renderScene: ({ elements, appState, scale, rc, canvas, renderConfig, }: {
8
- elements: readonly NonDeletedExcalidrawElement[];
9
- appState: AppState;
10
- scale: number;
11
- rc: RoughCanvas;
12
- canvas: HTMLCanvasElement;
13
- renderConfig: RenderConfig;
14
- }) => {
7
+ /**
8
+ * Interactive scene is the ui-canvas where we render boundinb boxes, selections
9
+ * and other ui stuff.
10
+ */
11
+ export declare const renderInteractiveScene: <U extends ({ canvas, elements, visibleElements, selectedElements, scale, appState, renderConfig, }: InteractiveSceneRenderConfig) => {
15
12
  atLeastOneVisibleElement: boolean;
16
- scrollBars?: undefined;
17
- } | {
18
- atLeastOneVisibleElement: boolean;
19
- scrollBars: import("../scene/types").ScrollBars | undefined;
20
- };
21
- /** renderScene throttled to animation framerate */
22
- export declare const renderScene: <T extends boolean = false>(config: {
23
13
  elements: readonly NonDeletedExcalidrawElement[];
24
- appState: AppState;
25
- scale: number;
26
- rc: RoughCanvas;
27
- canvas: HTMLCanvasElement;
28
- renderConfig: RenderConfig;
29
- callback?: ((data: ReturnType<typeof _renderScene>) => void) | undefined;
30
- }, throttle?: T | undefined) => T extends true ? void : {
31
- atLeastOneVisibleElement: boolean;
32
14
  scrollBars?: undefined;
33
15
  } | {
34
- atLeastOneVisibleElement: boolean;
35
16
  scrollBars: import("../scene/types").ScrollBars | undefined;
36
- };
37
- export declare const renderSceneToSvg: (elements: readonly NonDeletedExcalidrawElement[], rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, { offsetX, offsetY, exportWithDarkMode, }?: {
17
+ atLeastOneVisibleElement: boolean;
18
+ elements: readonly NonDeletedExcalidrawElement[];
19
+ }, T extends boolean = false>(renderConfig: InteractiveSceneRenderConfig, throttle?: T | undefined) => T extends true ? void : ReturnType<U>;
20
+ /**
21
+ * Static scene is the non-ui canvas where we render elements.
22
+ */
23
+ export declare const renderStaticScene: (renderConfig: StaticSceneRenderConfig, throttle?: boolean) => void;
24
+ export declare const cancelRender: () => void;
25
+ export declare const renderSceneToSvg: (elements: readonly NonDeletedExcalidrawElement[], rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, { offsetX, offsetY, exportWithDarkMode, exportingFrameId, renderEmbeddables, }?: {
38
26
  offsetX?: number | undefined;
39
27
  offsetY?: number | undefined;
40
28
  exportWithDarkMode?: boolean | undefined;
29
+ exportingFrameId?: string | null | undefined;
30
+ renderEmbeddables?: boolean | undefined;
41
31
  }) => void;
@@ -0,0 +1,2 @@
1
+ import { InteractiveCanvasAppState } from "../types";
2
+ export declare const renderSnaps: (context: CanvasRenderingContext2D, appState: InteractiveCanvasAppState) => void;
@@ -8,4 +8,4 @@
8
8
  * @param {Number} height The height of the rectangle
9
9
  * @param {Number} radius The corner radius
10
10
  */
11
- export declare const roundRect: (context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number) => void;
11
+ export declare const roundRect: (context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number, strokeColor?: string) => void;