@excalidraw/excalidraw 0.17.1-d2f67e6 → 0.17.1-e63dd02

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 (252) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/browser/dev/excalidraw-assets-dev/CascadiaCode-Regular-TMZI7IJ5.woff2 +0 -0
  3. package/dist/browser/dev/excalidraw-assets-dev/ComicShanns-Regular-6TOETDFT.woff2 +0 -0
  4. package/dist/browser/dev/excalidraw-assets-dev/Excalifont-Regular-CPKEUDVM.woff2 +0 -0
  5. package/dist/browser/dev/excalidraw-assets-dev/LiberationSans-Regular-ZQD73GJM.woff2 +0 -0
  6. package/dist/browser/dev/excalidraw-assets-dev/Virgil-Regular-YHAB2VGJ.woff2 +0 -0
  7. package/dist/browser/dev/excalidraw-assets-dev/{chunk-EM6LVGFW.js → chunk-IT7T3AIK.js} +23 -5
  8. package/dist/browser/dev/excalidraw-assets-dev/chunk-IT7T3AIK.js.map +7 -0
  9. package/dist/browser/dev/excalidraw-assets-dev/{chunk-B4UMSLQQ.js → chunk-RNHSD5AR.js} +7451 -2098
  10. package/dist/browser/dev/excalidraw-assets-dev/chunk-RNHSD5AR.js.map +7 -0
  11. package/dist/browser/dev/excalidraw-assets-dev/{dist-6QVAH5JA.js → dist-DNSPZDOZ.js} +31 -19
  12. package/dist/browser/dev/excalidraw-assets-dev/dist-DNSPZDOZ.js.map +7 -0
  13. package/dist/browser/dev/excalidraw-assets-dev/{en-AZFA5HJJ.js → en-XV7OZCPP.js} +6 -2
  14. package/dist/browser/dev/excalidraw-assets-dev/{image-V7E6IT6R.js → image-77HZYGLG.js} +2 -2
  15. package/dist/browser/dev/excalidraw-assets-dev/{image-O66MQ7WQ.css → image-WDHYGKKP.css} +1 -1
  16. package/dist/browser/dev/excalidraw-assets-dev/{image-O66MQ7WQ.css.map → image-WDHYGKKP.css.map} +2 -2
  17. package/dist/browser/dev/index.css +449 -114
  18. package/dist/browser/dev/index.css.map +3 -3
  19. package/dist/browser/dev/index.js +4143 -5956
  20. package/dist/browser/dev/index.js.map +4 -4
  21. package/dist/browser/prod/excalidraw-assets/CascadiaCode-Regular-TMZI7IJ5.woff2 +0 -0
  22. package/dist/browser/prod/excalidraw-assets/ComicShanns-Regular-6TOETDFT.woff2 +0 -0
  23. package/dist/browser/prod/excalidraw-assets/Excalifont-Regular-CPKEUDVM.woff2 +0 -0
  24. package/dist/browser/prod/excalidraw-assets/LiberationSans-Regular-ZQD73GJM.woff2 +0 -0
  25. package/dist/browser/prod/excalidraw-assets/Virgil-Regular-YHAB2VGJ.woff2 +0 -0
  26. package/dist/browser/prod/excalidraw-assets/chunk-OYEADJSR.js +63 -0
  27. package/dist/browser/prod/excalidraw-assets/{chunk-7DXALCB2.js → chunk-PDYFZJMS.js} +3 -3
  28. package/dist/browser/prod/excalidraw-assets/dist-NLUQPPQQ.js +7 -0
  29. package/dist/browser/prod/excalidraw-assets/en-YVAVVILW.js +1 -0
  30. package/dist/browser/prod/excalidraw-assets/image-X3GFZHNN.js +1 -0
  31. package/dist/browser/prod/index.css +1 -1
  32. package/dist/browser/prod/index.js +40 -50
  33. package/dist/dev/CascadiaCode-Regular-TMZI7IJ5.woff2 +0 -0
  34. package/dist/dev/ComicShanns-Regular-6TOETDFT.woff2 +0 -0
  35. package/dist/dev/Excalifont-Regular-CPKEUDVM.woff2 +0 -0
  36. package/dist/dev/LiberationSans-Regular-ZQD73GJM.woff2 +0 -0
  37. package/dist/dev/Virgil-Regular-YHAB2VGJ.woff2 +0 -0
  38. package/dist/dev/{en-EB2MBPAV.json → en-YNVBSAIL.json} +18 -4
  39. package/dist/dev/index.css +449 -114
  40. package/dist/dev/index.css.map +3 -3
  41. package/dist/dev/index.js +21626 -18122
  42. package/dist/dev/index.js.map +4 -4
  43. package/dist/excalidraw/actions/actionAddToLibrary.d.ts +9 -3
  44. package/dist/excalidraw/actions/actionBoundText.d.ts +6 -2
  45. package/dist/excalidraw/actions/actionCanvas.d.ts +36 -12
  46. package/dist/excalidraw/actions/actionClipboard.d.ts +22 -7
  47. package/dist/excalidraw/actions/actionDeleteSelected.d.ts +12 -5
  48. package/dist/excalidraw/actions/actionDeleteSelected.js +24 -5
  49. package/dist/excalidraw/actions/actionDuplicateSelection.js +1 -2
  50. package/dist/excalidraw/actions/actionElementLock.d.ts +6 -2
  51. package/dist/excalidraw/actions/actionExport.d.ts +27 -9
  52. package/dist/excalidraw/actions/actionFinalize.d.ts +6 -2
  53. package/dist/excalidraw/actions/actionFinalize.js +2 -2
  54. package/dist/excalidraw/actions/actionFlip.js +2 -2
  55. package/dist/excalidraw/actions/actionFrame.d.ts +12 -4
  56. package/dist/excalidraw/actions/actionGroup.d.ts +6 -2
  57. package/dist/excalidraw/actions/actionHistory.js +4 -4
  58. package/dist/excalidraw/actions/actionLinearEditor.d.ts +3 -1
  59. package/dist/excalidraw/actions/actionLinearEditor.js +3 -2
  60. package/dist/excalidraw/actions/actionLink.d.ts +3 -1
  61. package/dist/excalidraw/actions/actionMenu.d.ts +9 -3
  62. package/dist/excalidraw/actions/actionNavigate.d.ts +6 -2
  63. package/dist/excalidraw/actions/actionProperties.d.ts +411 -56
  64. package/dist/excalidraw/actions/actionProperties.js +383 -58
  65. package/dist/excalidraw/actions/actionSelectAll.d.ts +3 -1
  66. package/dist/excalidraw/actions/actionStyles.d.ts +3 -1
  67. package/dist/excalidraw/actions/actionStyles.js +3 -2
  68. package/dist/excalidraw/actions/actionToggleGridMode.d.ts +3 -1
  69. package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +3 -1
  70. package/dist/excalidraw/actions/actionToggleStats.d.ts +3 -1
  71. package/dist/excalidraw/actions/actionToggleViewMode.d.ts +3 -1
  72. package/dist/excalidraw/actions/actionToggleZenMode.d.ts +3 -1
  73. package/dist/excalidraw/actions/types.d.ts +1 -1
  74. package/dist/excalidraw/analytics.js +9 -7
  75. package/dist/excalidraw/appState.d.ts +1 -0
  76. package/dist/excalidraw/appState.js +9 -1
  77. package/dist/excalidraw/binaryheap.d.ts +12 -0
  78. package/dist/excalidraw/binaryheap.js +93 -0
  79. package/dist/excalidraw/change.d.ts +2 -1
  80. package/dist/excalidraw/change.js +6 -4
  81. package/dist/excalidraw/charts.js +0 -10
  82. package/dist/excalidraw/components/Actions.js +7 -5
  83. package/dist/excalidraw/components/App.d.ts +5 -9
  84. package/dist/excalidraw/components/App.js +218 -161
  85. package/dist/excalidraw/components/ButtonIcon.d.ts +15 -0
  86. package/dist/excalidraw/components/ButtonIcon.js +8 -0
  87. package/dist/excalidraw/components/ButtonIconSelect.js +2 -3
  88. package/dist/excalidraw/components/ButtonSeparator.d.ts +2 -0
  89. package/dist/excalidraw/components/ButtonSeparator.js +7 -0
  90. package/dist/excalidraw/components/ColorPicker/ColorPicker.js +47 -79
  91. package/dist/excalidraw/components/ColorPicker/Picker.js +1 -1
  92. package/dist/excalidraw/components/FontPicker/FontPicker.d.ts +21 -0
  93. package/dist/excalidraw/components/FontPicker/FontPicker.js +49 -0
  94. package/dist/excalidraw/components/FontPicker/FontPickerList.d.ts +25 -0
  95. package/dist/excalidraw/components/FontPicker/FontPickerList.js +119 -0
  96. package/dist/excalidraw/components/FontPicker/FontPickerTrigger.d.ts +7 -0
  97. package/dist/excalidraw/components/FontPicker/FontPickerTrigger.js +13 -0
  98. package/dist/excalidraw/components/FontPicker/keyboardNavHandlers.d.ts +14 -0
  99. package/dist/excalidraw/components/FontPicker/keyboardNavHandlers.js +38 -0
  100. package/dist/excalidraw/components/HelpDialog.js +1 -1
  101. package/dist/excalidraw/components/HintViewer.js +6 -3
  102. package/dist/excalidraw/components/PropertiesPopover.d.ts +15 -0
  103. package/dist/excalidraw/components/PropertiesPopover.js +31 -0
  104. package/dist/excalidraw/components/QuickSearch.d.ts +9 -0
  105. package/dist/excalidraw/components/QuickSearch.js +8 -0
  106. package/dist/excalidraw/components/ScrollableList.d.ts +9 -0
  107. package/dist/excalidraw/components/ScrollableList.js +8 -0
  108. package/dist/excalidraw/components/Stats/Angle.d.ts +7 -3
  109. package/dist/excalidraw/components/Stats/Angle.js +39 -31
  110. package/dist/excalidraw/components/Stats/Dimension.d.ts +6 -3
  111. package/dist/excalidraw/components/Stats/Dimension.js +51 -49
  112. package/dist/excalidraw/components/Stats/DragInput.d.ts +15 -6
  113. package/dist/excalidraw/components/Stats/DragInput.js +59 -26
  114. package/dist/excalidraw/components/Stats/FontSize.d.ts +8 -4
  115. package/dist/excalidraw/components/Stats/FontSize.js +39 -36
  116. package/dist/excalidraw/components/Stats/MultiAngle.d.ts +5 -3
  117. package/dist/excalidraw/components/Stats/MultiAngle.js +43 -34
  118. package/dist/excalidraw/components/Stats/MultiDimension.d.ts +5 -3
  119. package/dist/excalidraw/components/Stats/MultiDimension.js +101 -99
  120. package/dist/excalidraw/components/Stats/MultiFontSize.d.ts +6 -3
  121. package/dist/excalidraw/components/Stats/MultiFontSize.js +47 -32
  122. package/dist/excalidraw/components/Stats/MultiPosition.d.ts +3 -1
  123. package/dist/excalidraw/components/Stats/MultiPosition.js +52 -48
  124. package/dist/excalidraw/components/Stats/Position.d.ts +5 -1
  125. package/dist/excalidraw/components/Stats/Position.js +31 -29
  126. package/dist/excalidraw/components/Stats/index.js +5 -17
  127. package/dist/excalidraw/components/Stats/utils.d.ts +14 -3
  128. package/dist/excalidraw/components/Stats/utils.js +48 -9
  129. package/dist/excalidraw/components/TTDDialog/common.d.ts +2 -2
  130. package/dist/excalidraw/components/TTDDialog/common.js +3 -7
  131. package/dist/excalidraw/components/UserList.js +22 -22
  132. package/dist/excalidraw/components/canvases/StaticCanvas.js +1 -0
  133. package/dist/excalidraw/components/dropdownMenu/DropdownMenu.d.ts +12 -3
  134. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.d.ts +24 -4
  135. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.js +55 -14
  136. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContent.d.ts +2 -1
  137. package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContent.js +2 -2
  138. package/dist/excalidraw/components/dropdownMenu/common.d.ts +1 -1
  139. package/dist/excalidraw/components/dropdownMenu/common.js +3 -2
  140. package/dist/excalidraw/components/icons.d.ts +4 -0
  141. package/dist/excalidraw/components/icons.js +7 -0
  142. package/dist/excalidraw/components/main-menu/MainMenu.d.ts +12 -3
  143. package/dist/excalidraw/components/welcome-screen/WelcomeScreen.Center.js +2 -2
  144. package/dist/excalidraw/components/welcome-screen/WelcomeScreen.Hints.js +3 -3
  145. package/dist/excalidraw/constants.d.ts +17 -2
  146. package/dist/excalidraw/constants.js +21 -4
  147. package/dist/excalidraw/data/reconcile.js +18 -1
  148. package/dist/excalidraw/data/restore.js +55 -9
  149. package/dist/excalidraw/data/transform.js +8 -5
  150. package/dist/excalidraw/element/binding.d.ts +28 -9
  151. package/dist/excalidraw/element/binding.js +303 -71
  152. package/dist/excalidraw/element/collision.d.ts +1 -1
  153. package/dist/excalidraw/element/collision.js +4 -1
  154. package/dist/excalidraw/element/dragElements.d.ts +2 -2
  155. package/dist/excalidraw/element/dragElements.js +13 -3
  156. package/dist/excalidraw/element/embeddable.d.ts +3 -1
  157. package/dist/excalidraw/element/heading.d.ts +11 -0
  158. package/dist/excalidraw/element/heading.js +81 -0
  159. package/dist/excalidraw/element/index.d.ts +1 -1
  160. package/dist/excalidraw/element/index.js +1 -1
  161. package/dist/excalidraw/element/linearElementEditor.d.ts +21 -13
  162. package/dist/excalidraw/element/linearElementEditor.js +133 -56
  163. package/dist/excalidraw/element/newElement.d.ts +8 -3
  164. package/dist/excalidraw/element/newElement.js +15 -2
  165. package/dist/excalidraw/element/resizeElements.d.ts +4 -3
  166. package/dist/excalidraw/element/resizeElements.js +47 -23
  167. package/dist/excalidraw/element/routing.d.ts +13 -0
  168. package/dist/excalidraw/element/routing.js +641 -0
  169. package/dist/excalidraw/element/textElement.d.ts +3 -26
  170. package/dist/excalidraw/element/textElement.js +54 -110
  171. package/dist/excalidraw/element/textWysiwyg.js +39 -47
  172. package/dist/excalidraw/element/transformHandles.js +7 -2
  173. package/dist/excalidraw/element/typeChecks.d.ts +5 -2
  174. package/dist/excalidraw/element/typeChecks.js +17 -0
  175. package/dist/excalidraw/element/types.d.ts +12 -1
  176. package/dist/excalidraw/fonts/ExcalidrawFont.d.ts +21 -0
  177. package/dist/excalidraw/fonts/ExcalidrawFont.js +112 -0
  178. package/dist/excalidraw/fonts/index.d.ts +58 -0
  179. package/dist/excalidraw/fonts/index.js +240 -0
  180. package/dist/excalidraw/fonts/metadata.d.ts +36 -0
  181. package/dist/excalidraw/fonts/metadata.js +91 -0
  182. package/dist/excalidraw/fractionalIndex.d.ts +11 -4
  183. package/dist/excalidraw/fractionalIndex.js +38 -6
  184. package/dist/excalidraw/frame.d.ts +1 -1
  185. package/dist/excalidraw/frame.js +3 -3
  186. package/dist/excalidraw/history.d.ts +4 -3
  187. package/dist/excalidraw/history.js +8 -8
  188. package/dist/excalidraw/index.d.ts +1 -1
  189. package/dist/excalidraw/index.js +3 -3
  190. package/dist/excalidraw/locales/en.json +18 -4
  191. package/dist/excalidraw/math.d.ts +43 -0
  192. package/dist/excalidraw/math.js +110 -0
  193. package/dist/excalidraw/mermaid.js +4 -3
  194. package/dist/excalidraw/renderer/interactiveScene.js +33 -17
  195. package/dist/excalidraw/renderer/renderElement.d.ts +2 -0
  196. package/dist/excalidraw/renderer/renderElement.js +74 -54
  197. package/dist/excalidraw/renderer/staticSvgScene.js +2 -1
  198. package/dist/excalidraw/scene/Scene.js +9 -3
  199. package/dist/excalidraw/scene/Shape.js +56 -5
  200. package/dist/excalidraw/scene/comparisons.d.ts +1 -0
  201. package/dist/excalidraw/scene/comparisons.js +1 -1
  202. package/dist/excalidraw/scene/export.d.ts +2 -1
  203. package/dist/excalidraw/scene/export.js +33 -35
  204. package/dist/excalidraw/scene/types.d.ts +1 -4
  205. package/dist/excalidraw/shapes.d.ts +8 -0
  206. package/dist/excalidraw/shapes.js +57 -0
  207. package/dist/excalidraw/types.d.ts +8 -3
  208. package/dist/excalidraw/utils.d.ts +11 -1
  209. package/dist/excalidraw/utils.js +22 -0
  210. package/dist/prod/CascadiaCode-Regular-TMZI7IJ5.woff2 +0 -0
  211. package/dist/prod/ComicShanns-Regular-6TOETDFT.woff2 +0 -0
  212. package/dist/prod/Excalifont-Regular-CPKEUDVM.woff2 +0 -0
  213. package/dist/prod/LiberationSans-Regular-ZQD73GJM.woff2 +0 -0
  214. package/dist/prod/Virgil-Regular-YHAB2VGJ.woff2 +0 -0
  215. package/dist/prod/{en-EB2MBPAV.json → en-YNVBSAIL.json} +18 -4
  216. package/dist/prod/index.css +1 -1
  217. package/dist/prod/index.js +49 -53
  218. package/dist/utils/export.d.ts +2 -1
  219. package/dist/utils/export.js +2 -1
  220. package/dist/utils/geometry/geometry.d.ts +2 -1
  221. package/dist/utils/geometry/geometry.js +5 -1
  222. package/dist/utils/index.d.ts +1 -0
  223. package/dist/utils/index.js +1 -0
  224. package/history.ts +9 -2
  225. package/package.json +2 -2
  226. package/dist/browser/dev/Cascadia-CYPE3OJC.woff2 +0 -0
  227. package/dist/browser/dev/Virgil-UZN6MUT6.woff2 +0 -0
  228. package/dist/browser/dev/excalidraw-assets-dev/chunk-B4UMSLQQ.js.map +0 -7
  229. package/dist/browser/dev/excalidraw-assets-dev/chunk-EM6LVGFW.js.map +0 -7
  230. package/dist/browser/dev/excalidraw-assets-dev/dist-6QVAH5JA.js.map +0 -7
  231. package/dist/browser/prod/Cascadia-CYPE3OJC.woff2 +0 -0
  232. package/dist/browser/prod/Virgil-UZN6MUT6.woff2 +0 -0
  233. package/dist/browser/prod/excalidraw-assets/chunk-EGOLGOLD.js +0 -55
  234. package/dist/browser/prod/excalidraw-assets/dist-567JAXHK.js +0 -7
  235. package/dist/browser/prod/excalidraw-assets/en-6E7MYLWO.js +0 -1
  236. package/dist/browser/prod/excalidraw-assets/image-SI7BKULC.js +0 -1
  237. package/dist/dev/Cascadia-CYPE3OJC.woff2 +0 -0
  238. package/dist/dev/Virgil-UZN6MUT6.woff2 +0 -0
  239. package/dist/excalidraw/scene/Fonts.d.ts +0 -19
  240. package/dist/excalidraw/scene/Fonts.js +0 -66
  241. package/dist/prod/Cascadia-CYPE3OJC.woff2 +0 -0
  242. package/dist/prod/Virgil-UZN6MUT6.woff2 +0 -0
  243. /package/dist/browser/dev/{Assistant-Bold-ZDZZ6JHA.woff2 → excalidraw-assets-dev/Assistant-Bold-ZDZZ6JHA.woff2} +0 -0
  244. /package/dist/browser/dev/{Assistant-Medium-DZ25RZU3.woff2 → excalidraw-assets-dev/Assistant-Medium-DZ25RZU3.woff2} +0 -0
  245. /package/dist/browser/dev/{Assistant-Regular-PLF2XOGW.woff2 → excalidraw-assets-dev/Assistant-Regular-PLF2XOGW.woff2} +0 -0
  246. /package/dist/browser/dev/{Assistant-SemiBold-CZ5MX6FK.woff2 → excalidraw-assets-dev/Assistant-SemiBold-CZ5MX6FK.woff2} +0 -0
  247. /package/dist/browser/dev/excalidraw-assets-dev/{en-AZFA5HJJ.js.map → en-XV7OZCPP.js.map} +0 -0
  248. /package/dist/browser/dev/excalidraw-assets-dev/{image-V7E6IT6R.js.map → image-77HZYGLG.js.map} +0 -0
  249. /package/dist/browser/prod/{Assistant-Bold-ZDZZ6JHA.woff2 → excalidraw-assets/Assistant-Bold-ZDZZ6JHA.woff2} +0 -0
  250. /package/dist/browser/prod/{Assistant-Medium-DZ25RZU3.woff2 → excalidraw-assets/Assistant-Medium-DZ25RZU3.woff2} +0 -0
  251. /package/dist/browser/prod/{Assistant-Regular-PLF2XOGW.woff2 → excalidraw-assets/Assistant-Regular-PLF2XOGW.woff2} +0 -0
  252. /package/dist/browser/prod/{Assistant-SemiBold-CZ5MX6FK.woff2 → excalidraw-assets/Assistant-SemiBold-CZ5MX6FK.woff2} +0 -0
@@ -4,10 +4,20 @@ import { mutateElement } from "./mutateElement";
4
4
  import { getPerfectElementSize } from "./sizeHelpers";
5
5
  import { getBoundTextElement, getMinTextElementWidth } from "./textElement";
6
6
  import { getGridPoint } from "../math";
7
- import { isArrowElement, isFrameLikeElement, isTextElement, } from "./typeChecks";
7
+ import { isArrowElement, isElbowArrow, isFrameLikeElement, isTextElement, } from "./typeChecks";
8
8
  import { getFontString } from "../utils";
9
9
  import { TEXT_AUTOWRAP_THRESHOLD } from "../constants";
10
- export const dragSelectedElements = (pointerDownState, selectedElements, offset, appState, scene, snapOffset, gridSize) => {
10
+ export const dragSelectedElements = (pointerDownState, _selectedElements, offset, scene, snapOffset, gridSize) => {
11
+ if (_selectedElements.length === 1 &&
12
+ isArrowElement(_selectedElements[0]) &&
13
+ isElbowArrow(_selectedElements[0]) &&
14
+ (_selectedElements[0].startBinding || _selectedElements[0].endBinding)) {
15
+ return;
16
+ }
17
+ const selectedElements = _selectedElements.filter((el) => !(isArrowElement(el) &&
18
+ isElbowArrow(el) &&
19
+ el.startBinding &&
20
+ el.endBinding));
11
21
  // we do not want a frame and its elements to be selected at the same time
12
22
  // but when it happens (due to some bug), we want to avoid updating element
13
23
  // in the frame twice, hence the use of set
@@ -34,7 +44,7 @@ export const dragSelectedElements = (pointerDownState, selectedElements, offset,
34
44
  updateElementCoords(pointerDownState, textElement, adjustedOffset);
35
45
  }
36
46
  }
37
- updateBoundElements(element, scene.getElementsMapIncludingDeleted(), {
47
+ updateBoundElements(element, scene.getElementsMapIncludingDeleted(), scene, {
38
48
  simultaneouslyUpdated: Array.from(elementsToUpdate),
39
49
  });
40
50
  });
@@ -68,7 +68,9 @@ export declare const actionSetEmbeddableAsActiveTool: {
68
68
  currentItemTextAlign: string;
69
69
  currentItemStartArrowhead: import("./types").Arrowhead | null;
70
70
  currentItemEndArrowhead: import("./types").Arrowhead | null;
71
+ currentHoveredFontFamily: number | null;
71
72
  currentItemRoundness: import("./types").StrokeRoundness;
73
+ currentItemArrowType: "sharp" | "round" | "elbow";
72
74
  viewBackgroundColor: string;
73
75
  scrollX: number;
74
76
  scrollY: number;
@@ -81,7 +83,7 @@ export declare const actionSetEmbeddableAsActiveTool: {
81
83
  value: import("../types").NormalizedZoomValue;
82
84
  }>;
83
85
  openMenu: "canvas" | "shape" | null;
84
- openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
86
+ openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | null;
85
87
  openSidebar: {
86
88
  name: string;
87
89
  tab?: string | undefined;
@@ -0,0 +1,11 @@
1
+ import type { Point } from "../../utils/geometry/shape";
2
+ import type { ExcalidrawBindableElement } from "./types";
3
+ export declare const HEADING_RIGHT: Heading;
4
+ export declare const HEADING_DOWN: Heading;
5
+ export declare const HEADING_LEFT: Heading;
6
+ export declare const HEADING_UP: Heading;
7
+ export type Heading = [1, 0] | [0, 1] | [-1, 0] | [0, -1];
8
+ export declare const headingForDiamond: (a: Point, b: Point) => Heading;
9
+ export declare const vectorToHeading: (vec: Point) => Heading;
10
+ export declare const compareHeading: (a: Heading, b: Heading) => boolean;
11
+ export declare const headingForPointFromElement: (element: Readonly<ExcalidrawBindableElement>, aabb: readonly [minX: number, minY: number, maxX: number, maxY: number], point: readonly [number, number]) => Heading;
@@ -0,0 +1,81 @@
1
+ import { lineAngle } from "../../utils/geometry/geometry";
2
+ import { getCenterForBounds, PointInTriangle, rotatePoint, scalePointFromOrigin, } from "../math";
3
+ export const HEADING_RIGHT = [1, 0];
4
+ export const HEADING_DOWN = [0, 1];
5
+ export const HEADING_LEFT = [-1, 0];
6
+ export const HEADING_UP = [0, -1];
7
+ export const headingForDiamond = (a, b) => {
8
+ const angle = lineAngle([a, b]);
9
+ if (angle >= 315 || angle < 45) {
10
+ return HEADING_UP;
11
+ }
12
+ else if (angle >= 45 && angle < 135) {
13
+ return HEADING_RIGHT;
14
+ }
15
+ else if (angle >= 135 && angle < 225) {
16
+ return HEADING_DOWN;
17
+ }
18
+ return HEADING_LEFT;
19
+ };
20
+ export const vectorToHeading = (vec) => {
21
+ const [x, y] = vec;
22
+ const absX = Math.abs(x);
23
+ const absY = Math.abs(y);
24
+ if (x > absY) {
25
+ return HEADING_RIGHT;
26
+ }
27
+ else if (x <= -absY) {
28
+ return HEADING_LEFT;
29
+ }
30
+ else if (y > absX) {
31
+ return HEADING_DOWN;
32
+ }
33
+ return HEADING_UP;
34
+ };
35
+ export const compareHeading = (a, b) => a[0] === b[0] && a[1] === b[1];
36
+ // Gets the heading for the point by creating a bounding box around the rotated
37
+ // close fitting bounding box, then creating 4 search cones around the center of
38
+ // the external bbox.
39
+ export const headingForPointFromElement = (element, aabb, point) => {
40
+ const SEARCH_CONE_MULTIPLIER = 2;
41
+ const midPoint = getCenterForBounds(aabb);
42
+ if (element.type === "diamond") {
43
+ if (point[0] < element.x) {
44
+ return HEADING_LEFT;
45
+ }
46
+ else if (point[1] < element.y) {
47
+ return HEADING_UP;
48
+ }
49
+ else if (point[0] > element.x + element.width) {
50
+ return HEADING_RIGHT;
51
+ }
52
+ else if (point[1] > element.y + element.height) {
53
+ return HEADING_DOWN;
54
+ }
55
+ const top = rotatePoint(scalePointFromOrigin([element.x + element.width / 2, element.y], midPoint, SEARCH_CONE_MULTIPLIER), midPoint, element.angle);
56
+ const right = rotatePoint(scalePointFromOrigin([element.x + element.width, element.y + element.height / 2], midPoint, SEARCH_CONE_MULTIPLIER), midPoint, element.angle);
57
+ const bottom = rotatePoint(scalePointFromOrigin([element.x + element.width / 2, element.y + element.height], midPoint, SEARCH_CONE_MULTIPLIER), midPoint, element.angle);
58
+ const left = rotatePoint(scalePointFromOrigin([element.x, element.y + element.height / 2], midPoint, SEARCH_CONE_MULTIPLIER), midPoint, element.angle);
59
+ if (PointInTriangle(point, top, right, midPoint)) {
60
+ return headingForDiamond(top, right);
61
+ }
62
+ else if (PointInTriangle(point, right, bottom, midPoint)) {
63
+ return headingForDiamond(right, bottom);
64
+ }
65
+ else if (PointInTriangle(point, bottom, left, midPoint)) {
66
+ return headingForDiamond(bottom, left);
67
+ }
68
+ return headingForDiamond(left, top);
69
+ }
70
+ const topLeft = scalePointFromOrigin([aabb[0], aabb[1]], midPoint, SEARCH_CONE_MULTIPLIER);
71
+ const topRight = scalePointFromOrigin([aabb[2], aabb[1]], midPoint, SEARCH_CONE_MULTIPLIER);
72
+ const bottomLeft = scalePointFromOrigin([aabb[0], aabb[3]], midPoint, SEARCH_CONE_MULTIPLIER);
73
+ const bottomRight = scalePointFromOrigin([aabb[2], aabb[3]], midPoint, SEARCH_CONE_MULTIPLIER);
74
+ return PointInTriangle(point, topLeft, topRight, midPoint)
75
+ ? HEADING_UP
76
+ : PointInTriangle(point, topRight, bottomRight, midPoint)
77
+ ? HEADING_RIGHT
78
+ : PointInTriangle(point, bottomRight, bottomLeft, midPoint)
79
+ ? HEADING_DOWN
80
+ : HEADING_LEFT;
81
+ };
@@ -1,5 +1,5 @@
1
1
  import type { ExcalidrawElement, NonDeletedExcalidrawElement, NonDeleted } from "./types";
2
- export { newElement, newTextElement, refreshTextDimensions, newLinearElement, newImageElement, duplicateElement, } from "./newElement";
2
+ export { newElement, newTextElement, refreshTextDimensions, newLinearElement, newArrowElement, newImageElement, duplicateElement, } from "./newElement";
3
3
  export { getElementAbsoluteCoords, getElementBounds, getCommonBounds, getDiamondPoints, getArrowheadPoints, getClosestElementBounds, } from "./bounds";
4
4
  export { OMIT_SIDES_FOR_MULTIPLE_ELEMENTS, getTransformHandlesFromCoords, getTransformHandles, } from "./transformHandles";
5
5
  export { resizeTest, getCursorForResizingElement, getElementWithTransformHandleType, getTransformHandleTypeFromCoords, } from "./resizeTest";
@@ -1,6 +1,6 @@
1
1
  import { isInvisiblySmallElement } from "./sizeHelpers";
2
2
  import { isLinearElementType } from "./typeChecks";
3
- export { newElement, newTextElement, refreshTextDimensions, newLinearElement, newImageElement, duplicateElement, } from "./newElement";
3
+ export { newElement, newTextElement, refreshTextDimensions, newLinearElement, newArrowElement, newImageElement, duplicateElement, } from "./newElement";
4
4
  export { getElementAbsoluteCoords, getElementBounds, getCommonBounds, getDiamondPoints, getArrowheadPoints, getClosestElementBounds, } from "./bounds";
5
5
  export { OMIT_SIDES_FOR_MULTIPLE_ELEMENTS, getTransformHandlesFromCoords, getTransformHandles, } from "./transformHandles";
6
6
  export { resizeTest, getCursorForResizingElement, getElementWithTransformHandleType, getTransformHandleTypeFromCoords, } from "./resizeTest";
@@ -1,8 +1,9 @@
1
1
  /// <reference types="react" />
2
- import type { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement, ExcalidrawTextElementWithContainer, ElementsMap, NonDeletedSceneElementsMap } from "./types";
2
+ import type { NonDeleted, ExcalidrawLinearElement, ExcalidrawElement, PointBinding, ExcalidrawBindableElement, ExcalidrawTextElementWithContainer, ElementsMap, NonDeletedSceneElementsMap, OrderedExcalidrawElement } from "./types";
3
3
  import type { Bounds } from "./bounds";
4
- import type { Point, AppState, PointerCoords, InteractiveCanvasAppState, AppClassProperties } from "../types";
4
+ import type { Point, AppState, PointerCoords, InteractiveCanvasAppState } from "../types";
5
5
  import type { Store } from "../store";
6
+ import type Scene from "../scene/Scene";
6
7
  declare const editorMidPointsCache: {
7
8
  version: number | null;
8
9
  points: (Point | null)[];
@@ -18,6 +19,7 @@ export declare class LinearElementEditor {
18
19
  prevSelectedPointsIndices: readonly number[] | null;
19
20
  /** index */
20
21
  lastClickedPoint: number;
22
+ lastClickedIsEndPoint: boolean;
21
23
  origin: Readonly<{
22
24
  x: number;
23
25
  y: number;
@@ -51,8 +53,8 @@ export declare class LinearElementEditor {
51
53
  static handlePointDragging(event: PointerEvent, appState: AppState, scenePointerX: number, scenePointerY: number, maybeSuggestBinding: (element: NonDeleted<ExcalidrawLinearElement>, pointSceneCoords: {
52
54
  x: number;
53
55
  y: number;
54
- }[]) => void, linearElementEditor: LinearElementEditor, elementsMap: NonDeletedSceneElementsMap): boolean;
55
- static handlePointerUp(event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState, app: AppClassProperties): LinearElementEditor;
56
+ }[]) => void, linearElementEditor: LinearElementEditor, scene: Scene): boolean;
57
+ static handlePointerUp(event: PointerEvent, editingLinearElement: LinearElementEditor, appState: AppState, scene: Scene): LinearElementEditor;
56
58
  static getEditorMidPoints: (element: NonDeleted<ExcalidrawLinearElement>, elementsMap: ElementsMap, appState: InteractiveCanvasAppState) => (typeof editorMidPointsCache)["points"];
57
59
  static updateEditorMidPointsCache: (element: NonDeleted<ExcalidrawLinearElement>, elementsMap: ElementsMap, appState: InteractiveCanvasAppState) => void;
58
60
  static getSegmentMidpointHitCoords: (linearElementEditor: LinearElementEditor, scenePointer: {
@@ -65,13 +67,13 @@ export declare class LinearElementEditor {
65
67
  static handlePointerDown(event: React.PointerEvent<HTMLElement>, appState: AppState, store: Store, scenePointer: {
66
68
  x: number;
67
69
  y: number;
68
- }, linearElementEditor: LinearElementEditor, app: AppClassProperties): {
70
+ }, linearElementEditor: LinearElementEditor, scene: Scene): {
69
71
  didAddPoint: boolean;
70
72
  hitElement: NonDeleted<ExcalidrawElement> | null;
71
73
  linearElementEditor: LinearElementEditor | null;
72
74
  };
73
75
  static arePointsEqual(point1: Point | null, point2: Point | null): boolean;
74
- static handlePointerMove(event: React.PointerEvent<HTMLCanvasElement>, scenePointerX: number, scenePointerY: number, appState: AppState, elementsMap: ElementsMap): LinearElementEditor | null;
76
+ static handlePointerMove(event: React.PointerEvent<HTMLCanvasElement>, scenePointerX: number, scenePointerY: number, appState: AppState, scene: Scene): LinearElementEditor | null;
75
77
  /** scene coords */
76
78
  static getPointGlobalCoordinates(element: NonDeleted<ExcalidrawLinearElement>, point: Point, elementsMap: ElementsMap): readonly [number, number];
77
79
  /** scene coords */
@@ -92,7 +94,7 @@ export declare class LinearElementEditor {
92
94
  y: number;
93
95
  };
94
96
  static normalizePoints(element: NonDeleted<ExcalidrawLinearElement>): void;
95
- static duplicateSelectedPoints(appState: AppState, elementsMap: ElementsMap): false | {
97
+ static duplicateSelectedPoints(appState: AppState, scene: Scene): false | {
96
98
  appState: {
97
99
  editingLinearElement: {
98
100
  selectedPointsIndices: number[];
@@ -103,6 +105,7 @@ export declare class LinearElementEditor {
103
105
  prevSelectedPointsIndices: readonly number[] | null;
104
106
  /** index */
105
107
  lastClickedPoint: number;
108
+ lastClickedIsEndPoint: boolean;
106
109
  origin: Readonly<{
107
110
  x: number;
108
111
  y: number;
@@ -175,7 +178,9 @@ export declare class LinearElementEditor {
175
178
  currentItemTextAlign: string;
176
179
  currentItemStartArrowhead: import("./types").Arrowhead | null;
177
180
  currentItemEndArrowhead: import("./types").Arrowhead | null;
181
+ currentHoveredFontFamily: number | null;
178
182
  currentItemRoundness: import("./types").StrokeRoundness;
183
+ currentItemArrowType: "sharp" | "round" | "elbow";
179
184
  viewBackgroundColor: string;
180
185
  scrollX: number;
181
186
  scrollY: number;
@@ -188,7 +193,7 @@ export declare class LinearElementEditor {
188
193
  value: import("../types").NormalizedZoomValue;
189
194
  }>;
190
195
  openMenu: "canvas" | "shape" | null;
191
- openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
196
+ openPopup: "fontFamily" | "canvasBackground" | "elementBackground" | "elementStroke" | null;
192
197
  openSidebar: {
193
198
  name: string;
194
199
  tab?: string | undefined;
@@ -278,17 +283,20 @@ export declare class LinearElementEditor {
278
283
  followedBy: Set<import("../types").SocketId>;
279
284
  };
280
285
  };
281
- static deletePoints(element: NonDeleted<ExcalidrawLinearElement>, pointIndices: readonly number[]): void;
286
+ static deletePoints(element: NonDeleted<ExcalidrawLinearElement>, pointIndices: readonly number[], scene: Scene): void;
282
287
  static addPoints(element: NonDeleted<ExcalidrawLinearElement>, appState: AppState, targetPoints: {
283
288
  point: Point;
284
- }[]): void;
289
+ }[], scene: Scene): void;
285
290
  static movePoints(element: NonDeleted<ExcalidrawLinearElement>, targetPoints: {
286
291
  index: number;
287
292
  point: Point;
288
293
  isDragging?: boolean;
289
- }[], otherUpdates?: {
290
- startBinding?: PointBinding;
291
- endBinding?: PointBinding;
294
+ }[], scene: Scene, otherUpdates?: {
295
+ startBinding?: PointBinding | null;
296
+ endBinding?: PointBinding | null;
297
+ }, options?: {
298
+ changedElements?: Map<string, OrderedExcalidrawElement>;
299
+ isDragging?: boolean;
292
300
  }): void;
293
301
  static shouldAddMidpoint(linearElementEditor: LinearElementEditor, pointerCoords: PointerCoords, appState: AppState, elementsMap: ElementsMap): boolean;
294
302
  static addMidpoint(linearElementEditor: LinearElementEditor, pointerCoords: PointerCoords, appState: AppState, snapToGrid: boolean, elementsMap: ElementsMap): {