@excalidraw/common 0.18.0-a9ca16e → 0.18.0-abeeaeb

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 (184) hide show
  1. package/dist/dev/index.js +98 -75
  2. package/dist/dev/index.js.map +3 -3
  3. package/dist/prod/index.js +3 -3
  4. package/dist/types/common/src/colors.d.ts +15 -1
  5. package/dist/types/common/src/constants.d.ts +12 -7
  6. package/dist/types/common/src/keys.d.ts +2 -0
  7. package/dist/types/common/src/points.d.ts +1 -1
  8. package/dist/types/common/src/utils.d.ts +1 -43
  9. package/dist/types/element/src/Scene.d.ts +6 -4
  10. package/dist/types/element/src/align.d.ts +2 -2
  11. package/dist/types/element/src/arrowEndpointText.d.ts +49 -0
  12. package/dist/types/element/src/arrows/focus.d.ts +5 -2
  13. package/dist/types/element/src/binding.d.ts +17 -8
  14. package/dist/types/element/src/bounds.d.ts +22 -7
  15. package/dist/types/element/src/bucketFill.d.ts +110 -0
  16. package/dist/types/element/src/collision.d.ts +1 -1
  17. package/dist/types/element/src/comparisons.d.ts +5 -4
  18. package/dist/types/element/src/convertToShape.d.ts +23 -0
  19. package/dist/types/element/src/distribute.d.ts +2 -2
  20. package/dist/types/element/src/dragElements.d.ts +27 -0
  21. package/dist/types/element/src/duplicate.d.ts +4 -3
  22. package/dist/types/element/src/embeddable.d.ts +2 -2
  23. package/dist/types/element/src/flowchart.d.ts +7 -7
  24. package/dist/types/element/src/fractionalIndex.d.ts +2 -2
  25. package/dist/types/element/src/frame.d.ts +9 -8
  26. package/dist/types/element/src/groups.d.ts +9 -9
  27. package/dist/types/element/src/index.d.ts +4 -1
  28. package/dist/types/element/src/linearElementEditor.d.ts +17 -10
  29. package/dist/types/element/src/newElement.d.ts +14 -0
  30. package/dist/types/element/src/renderElement.d.ts +0 -3
  31. package/dist/types/element/src/resizeElements.d.ts +2 -2
  32. package/dist/types/element/src/selection.d.ts +6 -6
  33. package/dist/types/element/src/shape.d.ts +13 -1
  34. package/dist/types/element/src/sortElements.d.ts +10 -0
  35. package/dist/types/element/src/textElement.d.ts +12 -9
  36. package/dist/types/element/src/transform.d.ts +2 -2
  37. package/dist/types/element/src/typeChecks.d.ts +26 -25
  38. package/dist/types/element/src/types.d.ts +8 -1
  39. package/dist/types/element/src/utils.d.ts +1 -1
  40. package/dist/types/element/src/zindex.d.ts +2 -2
  41. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +45 -18
  42. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  43. package/dist/types/excalidraw/actions/actionBoundText.d.ts +30 -12
  44. package/dist/types/excalidraw/actions/actionCanvas.d.ts +167 -940
  45. package/dist/types/excalidraw/actions/actionClipboard.d.ts +30 -12
  46. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +15 -6
  47. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +47 -19
  48. package/dist/types/excalidraw/actions/{actionEmbeddable.d.ts → actionDeselect.d.ts} +29 -35
  49. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -3
  50. package/dist/types/excalidraw/actions/actionElementLink.d.ts +15 -6
  51. package/dist/types/excalidraw/actions/actionElementLock.d.ts +31 -13
  52. package/dist/types/excalidraw/actions/actionExport.d.ts +35 -17
  53. package/dist/types/excalidraw/actions/actionFrame.d.ts +57 -202
  54. package/dist/types/excalidraw/actions/actionGroup.d.ts +45 -27
  55. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +19 -8
  56. package/dist/types/excalidraw/actions/actionLink.d.ts +16 -7
  57. package/dist/types/excalidraw/actions/actionMenu.d.ts +15 -6
  58. package/dist/types/excalidraw/actions/actionProperties.d.ts +60 -30
  59. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +20 -11
  60. package/dist/types/excalidraw/actions/actionStyles.d.ts +15 -6
  61. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  62. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +16 -7
  63. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +19 -11
  64. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +16 -7
  65. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +16 -7
  66. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +19 -11
  67. package/dist/types/excalidraw/actions/actionToggleShapeSwitch.d.ts +1 -1
  68. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +16 -7
  69. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +17 -8
  70. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +16 -7
  71. package/dist/types/excalidraw/actions/index.d.ts +2 -2
  72. package/dist/types/excalidraw/actions/manager.d.ts +1 -0
  73. package/dist/types/excalidraw/actions/shortcuts.d.ts +1 -1
  74. package/dist/types/excalidraw/actions/types.d.ts +8 -4
  75. package/dist/types/excalidraw/{animated-trail.d.ts → animatedTrail.d.ts} +4 -3
  76. package/dist/types/excalidraw/appState.d.ts +13 -6
  77. package/dist/types/excalidraw/components/Actions.d.ts +17 -12
  78. package/dist/types/excalidraw/components/ActiveConfirmDialog.d.ts +1 -1
  79. package/dist/types/excalidraw/components/App.arrowText.d.ts +72 -0
  80. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  81. package/dist/types/excalidraw/components/App.cursor.d.ts +30 -0
  82. package/dist/types/excalidraw/components/App.d.ts +363 -66
  83. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  84. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  85. package/dist/types/excalidraw/components/App.viewport.d.ts +73 -0
  86. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +9 -3
  87. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  88. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +3 -1
  89. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -2
  90. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
  91. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  92. package/dist/types/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +1 -1
  93. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -1
  94. package/dist/types/excalidraw/components/ColorPicker/topPicksDnD.d.ts +31 -0
  95. package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -2
  96. package/dist/types/excalidraw/components/ConvertElementTypePopup.d.ts +2 -2
  97. package/dist/types/excalidraw/components/CursorHint.d.ts +46 -0
  98. package/dist/types/excalidraw/components/EyeDropper.d.ts +1 -1
  99. package/dist/types/excalidraw/components/{ToolButton.d.ts → IconButton.d.ts} +16 -19
  100. package/dist/types/excalidraw/components/Island.d.ts +7 -0
  101. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  102. package/dist/types/excalidraw/components/LayerUI.d.ts +5 -2
  103. package/dist/types/excalidraw/components/LibraryMenu.d.ts +1 -1
  104. package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
  105. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
  106. package/dist/types/excalidraw/components/MobileMenu.d.ts +4 -4
  107. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  108. package/dist/types/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
  109. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  110. package/dist/types/excalidraw/components/Popover.d.ts +1 -3
  111. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  112. package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
  113. package/dist/types/excalidraw/components/SearchMenu.d.ts +1 -1
  114. package/dist/types/excalidraw/components/Sidebar/Sidebar.d.ts +1 -1
  115. package/dist/types/excalidraw/components/Stats/Angle.d.ts +2 -2
  116. package/dist/types/excalidraw/components/Stats/Dimension.d.ts +2 -2
  117. package/dist/types/excalidraw/components/Stats/DragInput.d.ts +2 -2
  118. package/dist/types/excalidraw/components/Stats/MultiAngle.d.ts +2 -2
  119. package/dist/types/excalidraw/components/Stats/MultiDimension.d.ts +2 -2
  120. package/dist/types/excalidraw/components/Stats/MultiPosition.d.ts +2 -2
  121. package/dist/types/excalidraw/components/Stats/Position.d.ts +3 -3
  122. package/dist/types/excalidraw/components/Stats/utils.d.ts +1 -1
  123. package/dist/types/excalidraw/components/TTDDialog/TTDContext.d.ts +4 -4
  124. package/dist/types/excalidraw/components/TTDDialog/useTTDChatStorage.d.ts +3 -3
  125. package/dist/types/excalidraw/components/ToolPopover.d.ts +3 -6
  126. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  127. package/dist/types/excalidraw/components/Tools.d.ts +146 -0
  128. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  129. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  130. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +3 -1
  131. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +1 -0
  132. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
  133. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -1
  134. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  135. package/dist/types/excalidraw/components/hyperlink/helpers.d.ts +2 -2
  136. package/dist/types/excalidraw/components/icons.d.ts +6 -1
  137. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +8 -4
  138. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  139. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  140. package/dist/types/excalidraw/data/blob.d.ts +40 -22
  141. package/dist/types/excalidraw/data/index.d.ts +4 -4
  142. package/dist/types/excalidraw/data/json.d.ts +26 -17
  143. package/dist/types/excalidraw/data/library.d.ts +1 -1
  144. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  145. package/dist/types/excalidraw/eraser/index.d.ts +2 -3
  146. package/dist/types/excalidraw/hooks/useAppStateValue.d.ts +29 -0
  147. package/dist/types/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
  148. package/dist/types/excalidraw/{laser-trails.d.ts → laserTrails.d.ts} +5 -7
  149. package/dist/types/excalidraw/lasso/index.d.ts +2 -3
  150. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  151. package/dist/types/excalidraw/renderer/animation.d.ts +5 -1
  152. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +1 -3
  153. package/dist/types/excalidraw/scene/Renderer.d.ts +426 -19
  154. package/dist/types/excalidraw/scene/export.d.ts +3 -3
  155. package/dist/types/excalidraw/scene/index.d.ts +2 -2
  156. package/dist/types/excalidraw/scene/types.d.ts +4 -3
  157. package/dist/types/excalidraw/snapping.d.ts +7 -7
  158. package/dist/types/excalidraw/types.d.ts +415 -23
  159. package/dist/types/excalidraw/viewport.d.ts +275 -0
  160. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +2 -3
  161. package/dist/types/fractional-indexing/src/index.d.ts +29 -0
  162. package/dist/types/laser-pointer/src/index.d.ts +2 -0
  163. package/dist/types/laser-pointer/src/math.d.ts +16 -0
  164. package/dist/types/laser-pointer/src/simplify.d.ts +2 -0
  165. package/dist/types/laser-pointer/src/state.d.ts +36 -0
  166. package/dist/types/math/src/constants.d.ts +0 -1
  167. package/dist/types/math/src/curve.d.ts +4 -1
  168. package/dist/types/math/src/index.d.ts +1 -0
  169. package/dist/types/math/src/pca.d.ts +79 -0
  170. package/dist/types/math/src/point.d.ts +1 -0
  171. package/dist/types/math/src/polygon.d.ts +25 -1
  172. package/dist/types/utils/src/export.d.ts +3 -3
  173. package/dist/types/utils/src/index.d.ts +1 -2
  174. package/package.json +1 -1
  175. package/dist/types/excalidraw/animation-frame-handler.d.ts +0 -16
  176. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  177. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  178. package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -10
  179. package/dist/types/excalidraw/components/shapes.d.ts +0 -263
  180. package/dist/types/excalidraw/cursor.d.ts +0 -5
  181. package/dist/types/excalidraw/scene/scroll.d.ts +0 -18
  182. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
  183. package/dist/types/utils/src/bbox.d.ts +0 -9
  184. package/dist/types/utils/src/withinBounds.d.ts +0 -19
package/dist/dev/index.js CHANGED
@@ -1356,6 +1356,8 @@ function validateWCAG2Parms(parms) {
1356
1356
  import { clamp } from "@excalidraw/math";
1357
1357
  import { degreesToRadians } from "@excalidraw/math";
1358
1358
  var DARK_MODE_COLORS_CACHE = typeof window !== "undefined" ? /* @__PURE__ */ new Map() : null;
1359
+ var DARK_MODE_FILTER_INVERT_PERCENT = 93;
1360
+ var DARK_MODE_FILTER_HUE_ROTATE_DEGREES = 180;
1359
1361
  function cssHueRotate(red, green, blue, degrees) {
1360
1362
  const r = red / 255;
1361
1363
  const g = green / 255;
@@ -1394,7 +1396,10 @@ var cssInvert = (r, g, b, percent) => {
1394
1396
  const invertedB = invertComponent(b);
1395
1397
  return { r: invertedR, g: invertedG, b: invertedB };
1396
1398
  };
1397
- var applyDarkModeFilter = (color) => {
1399
+ var applyDarkModeFilter = (color, enable = true) => {
1400
+ if (!enable) {
1401
+ return color;
1402
+ }
1398
1403
  const cached = DARK_MODE_COLORS_CACHE?.get(color);
1399
1404
  if (cached) {
1400
1405
  return cached;
@@ -1402,12 +1407,17 @@ var applyDarkModeFilter = (color) => {
1402
1407
  const tc = tinycolor(color);
1403
1408
  const alpha = tc.getAlpha();
1404
1409
  const rgb = tc.toRgb();
1405
- const inverted = cssInvert(rgb.r, rgb.g, rgb.b, 93);
1410
+ const inverted = cssInvert(
1411
+ rgb.r,
1412
+ rgb.g,
1413
+ rgb.b,
1414
+ DARK_MODE_FILTER_INVERT_PERCENT
1415
+ );
1406
1416
  const rotated = cssHueRotate(
1407
1417
  inverted.r,
1408
1418
  inverted.g,
1409
1419
  inverted.b,
1410
- 180
1420
+ DARK_MODE_FILTER_HUE_ROTATE_DEGREES
1411
1421
  );
1412
1422
  const result = rgbToHex2(rotated.r, rotated.g, rotated.b, alpha);
1413
1423
  if (DARK_MODE_COLORS_CACHE) {
@@ -1415,6 +1425,33 @@ var applyDarkModeFilter = (color) => {
1415
1425
  }
1416
1426
  return result;
1417
1427
  };
1428
+ var _reverseDarkModeInvert = (r, g, b) => {
1429
+ const p = DARK_MODE_FILTER_INVERT_PERCENT / 100;
1430
+ const denominator = 1 - 2 * p;
1431
+ const restore = (color) => Math.round(clamp((color - 255 * p) / denominator, 0, 255));
1432
+ return {
1433
+ r: restore(r),
1434
+ g: restore(g),
1435
+ b: restore(b)
1436
+ };
1437
+ };
1438
+ var removeDarkModeFilter = (color) => {
1439
+ const tc = tinycolor(color);
1440
+ const alpha = tc.getAlpha();
1441
+ const rgb = tc.toRgb();
1442
+ const rotatedBack = cssHueRotate(
1443
+ rgb.r,
1444
+ rgb.g,
1445
+ rgb.b,
1446
+ DARK_MODE_FILTER_HUE_ROTATE_DEGREES
1447
+ );
1448
+ const restored = _reverseDarkModeInvert(
1449
+ rotatedBack.r,
1450
+ rotatedBack.g,
1451
+ rotatedBack.b
1452
+ );
1453
+ return rgbToHex2(restored.r, restored.g, restored.b, alpha);
1454
+ };
1418
1455
  var pick = (source, keys) => {
1419
1456
  return keys.reduce((acc, key) => {
1420
1457
  if (key in source) {
@@ -1460,6 +1497,7 @@ var COMMON_ELEMENT_SHADES = pick(COLOR_PALETTE, [
1460
1497
  "orange",
1461
1498
  "red"
1462
1499
  ]);
1500
+ var COLOR_TOP_PICKS_SLOTS = 5;
1463
1501
  var DEFAULT_ELEMENT_STROKE_PICKS = [
1464
1502
  COLOR_PALETTE.black,
1465
1503
  COLOR_PALETTE.red[DEFAULT_ELEMENT_STROKE_COLOR_INDEX],
@@ -1474,6 +1512,13 @@ var DEFAULT_ELEMENT_BACKGROUND_PICKS = [
1474
1512
  COLOR_PALETTE.blue[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX],
1475
1513
  COLOR_PALETTE.yellow[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX]
1476
1514
  ];
1515
+ var BUCKET_FILL_BACKGROUND_PICKS = [
1516
+ COLOR_PALETTE.white,
1517
+ COLOR_PALETTE.red[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX],
1518
+ COLOR_PALETTE.green[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX],
1519
+ COLOR_PALETTE.blue[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX],
1520
+ COLOR_PALETTE.yellow[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX]
1521
+ ];
1477
1522
  var DEFAULT_CANVAS_BACKGROUND_PICKS = [
1478
1523
  COLOR_PALETTE.white,
1479
1524
  // radix slate2
@@ -1536,6 +1581,9 @@ var colorToHex = (color) => {
1536
1581
  var isTransparent = (color) => {
1537
1582
  return tinycolor(color).getAlpha() === 0;
1538
1583
  };
1584
+ var isOpaqueColor = (color) => {
1585
+ return tinycolor(color).getAlpha() === 1;
1586
+ };
1539
1587
  var COLOR_OUTLINE_CONTRAST_THRESHOLD = 240;
1540
1588
  var calculateContrast = (r, g, b) => {
1541
1589
  const yiq = (r * 299 + g * 587 + b * 114) / 1e3;
@@ -1836,8 +1884,10 @@ var DEFAULT_UI_OPTIONS = {
1836
1884
  var MAX_DECIMALS_FOR_SVG_EXPORT = 2;
1837
1885
  var EXPORT_SCALES = [1, 2, 3];
1838
1886
  var DEFAULT_EXPORT_PADDING = 10;
1839
- var DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT = 1440;
1840
- var MAX_ALLOWED_FILE_BYTES = 4 * 1024 * 1024;
1887
+ var DEFAULT_IMAGE_OPTIONS = {
1888
+ maxWidthOrHeight: 1440,
1889
+ maxFileSizeBytes: 4 * 1024 * 1024
1890
+ };
1841
1891
  var SVG_NS = "http://www.w3.org/2000/svg";
1842
1892
  var SVG_DOCUMENT_PREAMBLE = `<?xml version="1.0" standalone="no"?>
1843
1893
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
@@ -1861,6 +1911,7 @@ var TEXT_ALIGN = {
1861
1911
  RIGHT: "right"
1862
1912
  };
1863
1913
  var ELEMENT_READY_TO_ERASE_OPACITY = 20;
1914
+ var ELEMENT_PENDING_DRAW_SHAPE_OPACITY = 70;
1864
1915
  var DEFAULT_PROPORTIONAL_RADIUS = 0.25;
1865
1916
  var DEFAULT_ADAPTIVE_RADIUS = 32;
1866
1917
  var ROUNDNESS = {
@@ -1884,16 +1935,34 @@ var ROUGHNESS = {
1884
1935
  artist: 1,
1885
1936
  cartoonist: 2
1886
1937
  };
1938
+ var STROKE_WIDTH_KEYS = [
1939
+ "thin",
1940
+ "medium",
1941
+ "bold"
1942
+ ];
1887
1943
  var STROKE_WIDTH = {
1888
1944
  thin: 1,
1945
+ medium: 2,
1946
+ bold: 4,
1947
+ extraBold: 8
1948
+ // unused (may be introduced in the future)
1949
+ };
1950
+ var FREEDRAW_STROKE_WIDTH = {
1951
+ thin: 0.5,
1952
+ medium: 1,
1889
1953
  bold: 2,
1890
1954
  extraBold: 4
1955
+ // legacy (may be used again in the future)
1891
1956
  };
1957
+ var getStrokeWidthByKey = (elementType, strokeWidthKey) => {
1958
+ return elementType === "freedraw" ? FREEDRAW_STROKE_WIDTH[strokeWidthKey] : STROKE_WIDTH[strokeWidthKey];
1959
+ };
1960
+ var DEFAULT_ELEMENT_STROKE_WIDTH_KEY = "medium";
1892
1961
  var DEFAULT_ELEMENT_PROPS = {
1893
1962
  strokeColor: COLOR_PALETTE.black,
1894
1963
  backgroundColor: COLOR_PALETTE.transparent,
1895
1964
  fillStyle: "solid",
1896
- strokeWidth: 2,
1965
+ strokeWidth: STROKE_WIDTH[DEFAULT_ELEMENT_STROKE_WIDTH_KEY],
1897
1966
  strokeStyle: "solid",
1898
1967
  roughness: ROUGHNESS.artist,
1899
1968
  opacity: 100,
@@ -1926,7 +1995,9 @@ var TOOL_TYPE = {
1926
1995
  frame: "frame",
1927
1996
  magicframe: "magicframe",
1928
1997
  embeddable: "embeddable",
1929
- laser: "laser"
1998
+ laser: "laser",
1999
+ autoshape: "autoshape",
2000
+ bucketfill: "bucketfill"
1930
2001
  };
1931
2002
  var EDITOR_LS_KEYS = {
1932
2003
  OAI_API_KEY: "excalidraw-oai-api-key",
@@ -1957,6 +2028,8 @@ var BIND_MODE_TIMEOUT = 700;
1957
2028
  var MOBILE_ACTION_BUTTON_BG = {
1958
2029
  background: "var(--mobile-action-button-bg)"
1959
2030
  };
2031
+ var DEFAULT_STROKE_STREAMLINE = 0.5;
2032
+ var DEFAULT_STROKE_STREAMLINE_PRECISE = 0.2;
1960
2033
 
1961
2034
  // src/font-metadata.ts
1962
2035
  init_define_import_meta_env();
@@ -2286,6 +2359,7 @@ var KEYS = {
2286
2359
  SUBTRACT: "-",
2287
2360
  SLASH: "/",
2288
2361
  A: "a",
2362
+ B: "b",
2289
2363
  C: "c",
2290
2364
  D: "d",
2291
2365
  E: "e",
@@ -2337,6 +2411,7 @@ var shouldRotateWithDiscreteAngle = (event) => event.shiftKey;
2337
2411
  // src/points.ts
2338
2412
  init_define_import_meta_env();
2339
2413
  import {
2414
+ pointFrom,
2340
2415
  pointFromPair
2341
2416
  } from "@excalidraw/math";
2342
2417
  var getSizeFromPoints = (points) => {
@@ -2381,12 +2456,12 @@ var rescalePoints = (dimension, newSize, points, normalize) => {
2381
2456
  };
2382
2457
  var getGridPoint = (x, y, gridSize) => {
2383
2458
  if (gridSize) {
2384
- return [
2459
+ return pointFrom(
2385
2460
  Math.round(x / gridSize) * gridSize,
2386
2461
  Math.round(y / gridSize) * gridSize
2387
- ];
2462
+ );
2388
2463
  }
2389
- return [x, y];
2464
+ return pointFrom(x, y);
2390
2465
  };
2391
2466
 
2392
2467
  // src/promise-pool.ts
@@ -2570,67 +2645,6 @@ var throttleRAF = (fn) => {
2570
2645
  var easeOut = (k) => {
2571
2646
  return 1 - Math.pow(1 - k, 4);
2572
2647
  };
2573
- var easeOutInterpolate = (from, to, progress) => {
2574
- return (to - from) * easeOut(progress) + from;
2575
- };
2576
- var easeToValuesRAF = ({
2577
- fromValues,
2578
- toValues,
2579
- onStep,
2580
- duration = 250,
2581
- interpolateValue,
2582
- onStart,
2583
- onEnd,
2584
- onCancel
2585
- }) => {
2586
- let canceled = false;
2587
- let frameId = 0;
2588
- let startTime;
2589
- function step(timestamp) {
2590
- if (canceled) {
2591
- return;
2592
- }
2593
- if (startTime === void 0) {
2594
- startTime = timestamp;
2595
- onStart?.();
2596
- }
2597
- const elapsed = Math.min(timestamp - startTime, duration);
2598
- const factor = easeOut(elapsed / duration);
2599
- const newValues = {};
2600
- Object.keys(fromValues).forEach((key) => {
2601
- const _key = key;
2602
- const result = (toValues[_key] - fromValues[_key]) * factor + fromValues[_key];
2603
- newValues[_key] = result;
2604
- });
2605
- onStep(newValues);
2606
- if (elapsed < duration) {
2607
- const progress = elapsed / duration;
2608
- const newValues2 = {};
2609
- Object.keys(fromValues).forEach((key) => {
2610
- const _key = key;
2611
- const startValue = fromValues[_key];
2612
- const endValue = toValues[_key];
2613
- let result;
2614
- result = interpolateValue ? interpolateValue(startValue, endValue, progress, _key) : easeOutInterpolate(startValue, endValue, progress);
2615
- if (result == null) {
2616
- result = easeOutInterpolate(startValue, endValue, progress);
2617
- }
2618
- newValues2[_key] = result;
2619
- });
2620
- onStep(newValues2);
2621
- frameId = window.requestAnimationFrame(step);
2622
- } else {
2623
- onStep(toValues);
2624
- onEnd?.();
2625
- }
2626
- }
2627
- frameId = window.requestAnimationFrame(step);
2628
- return () => {
2629
- onCancel?.();
2630
- canceled = true;
2631
- window.cancelAnimationFrame(frameId);
2632
- };
2633
- };
2634
2648
  var chunk = (array, size) => {
2635
2649
  if (!array.length || size < 1) {
2636
2650
  return [];
@@ -2673,7 +2687,7 @@ var updateActiveTool = (appState, data) => {
2673
2687
  }
2674
2688
  return {
2675
2689
  ...appState.activeTool,
2676
- lastActiveTool: data.lastActiveToolBeforeEraser === void 0 ? appState.activeTool.lastActiveTool : data.lastActiveToolBeforeEraser,
2690
+ lastActiveTool: data.lastActiveTool === void 0 ? appState.activeTool.lastActiveTool : data.lastActiveTool,
2677
2691
  type: data.type,
2678
2692
  customType: null,
2679
2693
  locked: data.locked ?? appState.activeTool.locked,
@@ -3528,6 +3542,7 @@ export {
3528
3542
  AppEventBus,
3529
3543
  BIND_MODE_TIMEOUT,
3530
3544
  BOUND_TEXT_PADDING,
3545
+ BUCKET_FILL_BACKGROUND_PICKS,
3531
3546
  BinaryHeap,
3532
3547
  CANVAS_ONLY_ACTIONS,
3533
3548
  CANVAS_SEARCH_TAB,
@@ -3538,6 +3553,7 @@ export {
3538
3553
  COLOR_CHARCOAL_BLACK,
3539
3554
  COLOR_OUTLINE_CONTRAST_THRESHOLD,
3540
3555
  COLOR_PALETTE,
3556
+ COLOR_TOP_PICKS_SLOTS,
3541
3557
  COLOR_VOICE_CALL,
3542
3558
  COLOR_WHITE,
3543
3559
  CURSOR_TYPE,
@@ -3553,17 +3569,20 @@ export {
3553
3569
  DEFAULT_ELEMENT_STROKE_COLOR_INDEX,
3554
3570
  DEFAULT_ELEMENT_STROKE_COLOR_PALETTE,
3555
3571
  DEFAULT_ELEMENT_STROKE_PICKS,
3572
+ DEFAULT_ELEMENT_STROKE_WIDTH_KEY,
3556
3573
  DEFAULT_EXPORT_PADDING,
3557
3574
  DEFAULT_FILENAME,
3558
3575
  DEFAULT_FONT_FAMILY,
3559
3576
  DEFAULT_FONT_SIZE,
3560
3577
  DEFAULT_GRID_SIZE,
3561
3578
  DEFAULT_GRID_STEP,
3579
+ DEFAULT_IMAGE_OPTIONS,
3562
3580
  DEFAULT_LASER_COLOR,
3563
- DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,
3564
3581
  DEFAULT_PROPORTIONAL_RADIUS,
3565
3582
  DEFAULT_REDUCED_GLOBAL_ALPHA,
3566
3583
  DEFAULT_SIDEBAR,
3584
+ DEFAULT_STROKE_STREAMLINE,
3585
+ DEFAULT_STROKE_STREAMLINE_PRECISE,
3567
3586
  DEFAULT_TEXT_ALIGN,
3568
3587
  DEFAULT_TRANSFORM_HANDLE_SPACING,
3569
3588
  DEFAULT_UI_OPTIONS,
@@ -3574,6 +3593,7 @@ export {
3574
3593
  Debug,
3575
3594
  EDITOR_LS_KEYS,
3576
3595
  ELEMENT_LINK_KEY,
3596
+ ELEMENT_PENDING_DRAW_SHAPE_OPACITY,
3577
3597
  ELEMENT_READY_TO_ERASE_OPACITY,
3578
3598
  ELEMENT_SHIFT_TRANSLATE_AMOUNT,
3579
3599
  ELEMENT_TRANSLATE_AMOUNT,
@@ -3591,6 +3611,7 @@ export {
3591
3611
  FONT_METADATA,
3592
3612
  FONT_SIZES,
3593
3613
  FRAME_STYLE,
3614
+ FREEDRAW_STROKE_WIDTH,
3594
3615
  GOOGLE_FONTS_RANGES,
3595
3616
  HYPERLINK_TOOLTIP_DELAY,
3596
3617
  IDLE_THRESHOLD,
@@ -3603,7 +3624,6 @@ export {
3603
3624
  LINE_CONFIRM_THRESHOLD,
3604
3625
  LINE_POLYGON_POINT_MERGE_DISTANCE,
3605
3626
  LOCAL_FONT_PROTOCOL,
3606
- MAX_ALLOWED_FILE_BYTES,
3607
3627
  MAX_CUSTOM_COLORS_USED_IN_CANVAS,
3608
3628
  MAX_DECIMALS_FOR_SVG_EXPORT,
3609
3629
  MAX_ZOOM,
@@ -3635,6 +3655,7 @@ export {
3635
3655
  STATS_PANELS,
3636
3656
  STRING_MIME_TYPES,
3637
3657
  STROKE_WIDTH,
3658
+ STROKE_WIDTH_KEYS,
3638
3659
  SVG_DOCUMENT_PREAMBLE,
3639
3660
  SVG_NS,
3640
3661
  TAP_TWICE_TIMEOUT,
@@ -3675,7 +3696,6 @@ export {
3675
3696
  deriveStylesPanelMode,
3676
3697
  distance,
3677
3698
  easeOut,
3678
- easeToValuesRAF,
3679
3699
  escapeDoubleQuotes,
3680
3700
  exitFullScreen,
3681
3701
  findIndex,
@@ -3696,6 +3716,7 @@ export {
3696
3716
  getLineHeight,
3697
3717
  getNearestScrollableContainer,
3698
3718
  getSizeFromPoints,
3719
+ getStrokeWidthByKey,
3699
3720
  getSvgPathFromStroke,
3700
3721
  getUpdatedTimestamp,
3701
3722
  getVersion,
@@ -3719,6 +3740,7 @@ export {
3719
3740
  isLocalLink,
3720
3741
  isMemberOf,
3721
3742
  isMobileBreakpoint,
3743
+ isOpaqueColor,
3722
3744
  isPrimitive,
3723
3745
  isProdEnv,
3724
3746
  isPromiseLike,
@@ -3752,6 +3774,7 @@ export {
3752
3774
  randomId,
3753
3775
  randomInteger,
3754
3776
  reduceToCommonValue,
3777
+ removeDarkModeFilter,
3755
3778
  removeSelection,
3756
3779
  rescalePoints,
3757
3780
  reseed,