@excalidraw/common 0.18.0-063e025 → 0.18.0-1118751

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 (154) hide show
  1. package/dist/dev/index.js +159 -17
  2. package/dist/dev/index.js.map +2 -2
  3. package/dist/prod/index.js +3 -3
  4. package/dist/types/common/src/colors.d.ts +22 -0
  5. package/dist/types/common/src/constants.d.ts +54 -0
  6. package/dist/types/common/src/keys.d.ts +4 -0
  7. package/dist/types/common/src/points.d.ts +1 -1
  8. package/dist/types/common/src/random.d.ts +7 -0
  9. package/dist/types/common/src/utils.d.ts +1 -1
  10. package/dist/types/element/src/Scene.d.ts +1 -1
  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 +15 -8
  14. package/dist/types/element/src/bucketFill.d.ts +110 -0
  15. package/dist/types/element/src/collision.d.ts +8 -5
  16. package/dist/types/element/src/comparisons.d.ts +7 -5
  17. package/dist/types/element/src/convertToShape.d.ts +23 -0
  18. package/dist/types/element/src/delta.d.ts +23 -1
  19. package/dist/types/element/src/dragElements.d.ts +27 -0
  20. package/dist/types/element/src/duplicate.d.ts +60 -0
  21. package/dist/types/element/src/flowchart.d.ts +10 -6
  22. package/dist/types/element/src/frame.d.ts +2 -2
  23. package/dist/types/element/src/groups.d.ts +1 -1
  24. package/dist/types/element/src/index.d.ts +4 -0
  25. package/dist/types/element/src/linearElementEditor.d.ts +17 -0
  26. package/dist/types/element/src/mutateElement.d.ts +1 -1
  27. package/dist/types/element/src/newElement.d.ts +37 -2
  28. package/dist/types/element/src/renderElement.d.ts +21 -4
  29. package/dist/types/element/src/selection.d.ts +1 -1
  30. package/dist/types/element/src/shape.d.ts +27 -1
  31. package/dist/types/element/src/sizeHelpers.d.ts +6 -0
  32. package/dist/types/element/src/sortElements.d.ts +10 -0
  33. package/dist/types/element/src/stickyNote.d.ts +183 -0
  34. package/dist/types/element/src/textElement.d.ts +7 -3
  35. package/dist/types/element/src/transform.d.ts +25 -6
  36. package/dist/types/element/src/typeChecks.d.ts +3 -2
  37. package/dist/types/element/src/types.d.ts +35 -6
  38. package/dist/types/element/src/utils.d.ts +15 -4
  39. package/dist/types/element/src/zindex.d.ts +1 -1
  40. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +48 -9
  41. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  42. package/dist/types/excalidraw/actions/actionBoundText.d.ts +32 -6
  43. package/dist/types/excalidraw/actions/actionCanvas.d.ts +177 -580
  44. package/dist/types/excalidraw/actions/actionClipboard.d.ts +32 -6
  45. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +16 -3
  46. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +50 -10
  47. package/dist/types/excalidraw/actions/actionDeselect.d.ts +13 -3
  48. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -2
  49. package/dist/types/excalidraw/actions/actionElementLink.d.ts +16 -3
  50. package/dist/types/excalidraw/actions/actionElementLock.d.ts +32 -6
  51. package/dist/types/excalidraw/actions/actionExport.d.ts +38 -12
  52. package/dist/types/excalidraw/actions/actionFinalize.d.ts +1 -0
  53. package/dist/types/excalidraw/actions/actionFrame.d.ts +99 -185
  54. package/dist/types/excalidraw/actions/actionGroup.d.ts +33 -7
  55. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +68 -4
  56. package/dist/types/excalidraw/actions/actionLink.d.ts +16 -3
  57. package/dist/types/excalidraw/actions/actionMenu.d.ts +16 -3
  58. package/dist/types/excalidraw/actions/actionProperties.d.ts +45 -12
  59. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +16 -3
  60. package/dist/types/excalidraw/actions/actionStyles.d.ts +17 -4
  61. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  62. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +16 -3
  63. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +16 -3
  64. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +16 -3
  65. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +16 -3
  66. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +16 -3
  67. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +16 -3
  68. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +17 -4
  69. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +16 -3
  70. package/dist/types/excalidraw/actions/colorTargets.d.ts +39 -0
  71. package/dist/types/excalidraw/actions/index.d.ts +1 -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 +5 -1
  75. package/dist/types/excalidraw/appState.d.ts +30 -9
  76. package/dist/types/excalidraw/components/Actions.d.ts +16 -10
  77. package/dist/types/excalidraw/components/App.arrowText.d.ts +104 -0
  78. package/dist/types/excalidraw/components/App.bucketFill.d.ts +48 -0
  79. package/dist/types/excalidraw/components/App.cursor.d.ts +38 -0
  80. package/dist/types/excalidraw/components/App.d.ts +468 -99
  81. package/dist/types/excalidraw/components/App.drawshape.d.ts +55 -0
  82. package/dist/types/excalidraw/components/App.duplicate.d.ts +51 -0
  83. package/dist/types/excalidraw/components/App.flowchart.d.ts +21 -0
  84. package/dist/types/excalidraw/components/App.pan.d.ts +54 -0
  85. package/dist/types/excalidraw/components/App.toolDrag.d.ts +63 -0
  86. package/dist/types/excalidraw/components/App.viewport.d.ts +73 -0
  87. package/dist/types/excalidraw/components/App.wheel.d.ts +26 -0
  88. package/dist/types/excalidraw/components/ColorPicker/ColorPicker.d.ts +8 -2
  89. package/dist/types/excalidraw/components/ColorPicker/CustomColorList.d.ts +3 -1
  90. package/dist/types/excalidraw/components/ColorPicker/Picker.d.ts +5 -1
  91. package/dist/types/excalidraw/components/ColorPicker/PickerColorList.d.ts +9 -2
  92. package/dist/types/excalidraw/components/ColorPicker/ShadeList.d.ts +4 -2
  93. package/dist/types/excalidraw/components/ColorPicker/TopPicks.d.ts +8 -1
  94. package/dist/types/excalidraw/components/ColorPicker/colorTopPicksDnD.d.ts +11 -0
  95. package/dist/types/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -1
  96. package/dist/types/excalidraw/components/FontPicker/FontPicker.d.ts +4 -1
  97. package/dist/types/excalidraw/components/FontPicker/FontPickerList.d.ts +6 -1
  98. package/dist/types/excalidraw/components/FontPicker/fontTopPicksDnD.d.ts +12 -0
  99. package/dist/types/excalidraw/components/IconButton.d.ts +48 -0
  100. package/dist/types/excalidraw/components/LaserPointerButton.d.ts +2 -4
  101. package/dist/types/excalidraw/components/LayerUI.d.ts +5 -2
  102. package/dist/types/excalidraw/components/LockButton.d.ts +3 -4
  103. package/dist/types/excalidraw/components/MagicButton.d.ts +0 -2
  104. package/dist/types/excalidraw/components/MobileMenu.d.ts +4 -4
  105. package/dist/types/excalidraw/components/MobileToolbar.d.ts +9 -0
  106. package/dist/types/excalidraw/components/PenModeButton.d.ts +2 -5
  107. package/dist/types/excalidraw/components/Popover.d.ts +1 -3
  108. package/dist/types/excalidraw/components/{ButtonIcon.d.ts → RadioButton.d.ts} +2 -5
  109. package/dist/types/excalidraw/components/ToolPopover.d.ts +3 -6
  110. package/dist/types/excalidraw/components/Toolbar.d.ts +11 -0
  111. package/dist/types/excalidraw/components/Tools.d.ts +151 -0
  112. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksContextMenu.d.ts +14 -0
  113. package/dist/types/excalidraw/components/TopPicksDnD/TopPicksTip.d.ts +11 -0
  114. package/dist/types/excalidraw/components/TopPicksDnD/topPicksDnD.d.ts +58 -0
  115. package/dist/types/excalidraw/components/UserList.d.ts +3 -2
  116. package/dist/types/excalidraw/components/ViewportStatusFrame/ViewportStatusFrame.d.ts +11 -0
  117. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -0
  118. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +2 -0
  119. package/dist/types/excalidraw/components/footer/Footer.d.ts +3 -1
  120. package/dist/types/excalidraw/components/icons.d.ts +5 -1
  121. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +2 -1
  122. package/dist/types/excalidraw/components/positionElementBesideCursor.d.ts +26 -0
  123. package/dist/types/excalidraw/components/shapeActionPredicates.d.ts +39 -0
  124. package/dist/types/excalidraw/data/blob.d.ts +44 -18
  125. package/dist/types/excalidraw/data/json.d.ts +22 -9
  126. package/dist/types/excalidraw/drawShapeTrail.d.ts +16 -0
  127. package/dist/types/excalidraw/fonts/Fonts.d.ts +3 -2
  128. package/dist/types/excalidraw/hooks/useTextEditorFocus.d.ts +5 -5
  129. package/dist/types/excalidraw/lasso/utils.d.ts +2 -0
  130. package/dist/types/excalidraw/renderOverrides.d.ts +9 -0
  131. package/dist/types/excalidraw/renderer/helpers.d.ts +25 -0
  132. package/dist/types/excalidraw/renderer/interactiveScene.d.ts +1 -1
  133. package/dist/types/excalidraw/scene/Renderer.d.ts +64 -2
  134. package/dist/types/excalidraw/scene/index.d.ts +1 -1
  135. package/dist/types/excalidraw/scene/types.d.ts +6 -1
  136. package/dist/types/excalidraw/types.d.ts +341 -21
  137. package/dist/types/excalidraw/viewport.d.ts +31 -66
  138. package/dist/types/laser-pointer/src/state.d.ts +1 -0
  139. package/dist/types/math/src/curve.d.ts +19 -12
  140. package/dist/types/math/src/index.d.ts +1 -0
  141. package/dist/types/math/src/pca.d.ts +79 -0
  142. package/dist/types/math/src/polygon.d.ts +25 -1
  143. package/dist/types/math/src/segment.d.ts +6 -0
  144. package/dist/types/utils/src/export.d.ts +1 -0
  145. package/dist/types/utils/src/shape.d.ts +2 -2
  146. package/package.json +1 -1
  147. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +0 -173
  148. package/dist/types/excalidraw/components/FollowMode/FollowMode.d.ts +0 -10
  149. package/dist/types/excalidraw/components/HandButton.d.ts +0 -10
  150. package/dist/types/excalidraw/components/MobileToolBar.d.ts +0 -10
  151. package/dist/types/excalidraw/components/ToolButton.d.ts +0 -49
  152. package/dist/types/excalidraw/components/shapes.d.ts +0 -270
  153. package/dist/types/excalidraw/cursor.d.ts +0 -5
  154. package/dist/types/excalidraw/scene/zoom.d.ts +0 -12
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;
@@ -1405,12 +1407,17 @@ var applyDarkModeFilter = (color, enable = true) => {
1405
1407
  const tc = tinycolor(color);
1406
1408
  const alpha = tc.getAlpha();
1407
1409
  const rgb = tc.toRgb();
1408
- 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
+ );
1409
1416
  const rotated = cssHueRotate(
1410
1417
  inverted.r,
1411
1418
  inverted.g,
1412
1419
  inverted.b,
1413
- 180
1420
+ DARK_MODE_FILTER_HUE_ROTATE_DEGREES
1414
1421
  );
1415
1422
  const result = rgbToHex2(rotated.r, rotated.g, rotated.b, alpha);
1416
1423
  if (DARK_MODE_COLORS_CACHE) {
@@ -1418,6 +1425,33 @@ var applyDarkModeFilter = (color, enable = true) => {
1418
1425
  }
1419
1426
  return result;
1420
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
+ };
1421
1455
  var pick = (source, keys) => {
1422
1456
  return keys.reduce((acc, key) => {
1423
1457
  if (key in source) {
@@ -1463,6 +1497,7 @@ var COMMON_ELEMENT_SHADES = pick(COLOR_PALETTE, [
1463
1497
  "orange",
1464
1498
  "red"
1465
1499
  ]);
1500
+ var COLOR_TOP_PICKS_SLOTS = 5;
1466
1501
  var DEFAULT_ELEMENT_STROKE_PICKS = [
1467
1502
  COLOR_PALETTE.black,
1468
1503
  COLOR_PALETTE.red[DEFAULT_ELEMENT_STROKE_COLOR_INDEX],
@@ -1477,6 +1512,22 @@ var DEFAULT_ELEMENT_BACKGROUND_PICKS = [
1477
1512
  COLOR_PALETTE.blue[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX],
1478
1513
  COLOR_PALETTE.yellow[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX]
1479
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
+ ];
1522
+ var DEFAULT_STICKY_NOTE_BG = "#ffdf6b";
1523
+ var STICKY_NOTE_STROKE_PICKS = DEFAULT_ELEMENT_STROKE_PICKS;
1524
+ var STICKY_NOTE_BACKGROUND_PICKS = [
1525
+ DEFAULT_STICKY_NOTE_BG,
1526
+ COLOR_PALETTE.pink[1],
1527
+ COLOR_PALETTE.green[1],
1528
+ COLOR_PALETTE.blue[1],
1529
+ COLOR_PALETTE.orange[1]
1530
+ ];
1480
1531
  var DEFAULT_CANVAS_BACKGROUND_PICKS = [
1481
1532
  COLOR_PALETTE.white,
1482
1533
  // radix slate2
@@ -1528,6 +1579,14 @@ var rgbToHex2 = (r, g, b, a) => {
1528
1579
  }
1529
1580
  return hex6;
1530
1581
  };
1582
+ var setColorAlpha = (color, alpha) => {
1583
+ const tc = tinycolor(color);
1584
+ if (!tc.isValid()) {
1585
+ return color;
1586
+ }
1587
+ const { r, g, b } = tc.toRgb();
1588
+ return rgbToHex2(r, g, b, alpha);
1589
+ };
1531
1590
  var colorToHex = (color) => {
1532
1591
  const tc = tinycolor(color);
1533
1592
  if (!tc.isValid()) {
@@ -1539,6 +1598,9 @@ var colorToHex = (color) => {
1539
1598
  var isTransparent = (color) => {
1540
1599
  return tinycolor(color).getAlpha() === 0;
1541
1600
  };
1601
+ var isOpaqueColor = (color) => {
1602
+ return tinycolor(color).getAlpha() === 1;
1603
+ };
1542
1604
  var COLOR_OUTLINE_CONTRAST_THRESHOLD = 240;
1543
1605
  var calculateContrast = (r, g, b) => {
1544
1606
  const yiq = (r * 299 + g * 587 + b * 114) / 1e3;
@@ -1629,6 +1691,7 @@ var EVENT = /* @__PURE__ */ ((EVENT2) => {
1629
1691
  EVENT2["POINTER_MOVE"] = "pointermove";
1630
1692
  EVENT2["POINTER_DOWN"] = "pointerdown";
1631
1693
  EVENT2["POINTER_UP"] = "pointerup";
1694
+ EVENT2["POINTER_CANCEL"] = "pointercancel";
1632
1695
  EVENT2["STATE_CHANGE"] = "statechange";
1633
1696
  EVENT2["WHEEL"] = "wheel";
1634
1697
  EVENT2["TOUCH_START"] = "touchstart";
@@ -1740,7 +1803,28 @@ var FRAME_STYLE = {
1740
1803
  };
1741
1804
  var MIN_FONT_SIZE = 1;
1742
1805
  var DEFAULT_FONT_SIZE = 20;
1806
+ var STICKY_NOTE_MIN_FONT_SIZE = 16;
1807
+ var STICKY_NOTE_MAX_FONT_SIZE = 512;
1808
+ var STICKY_NOTE_FALLBACK_FONT_SIZE = 28;
1809
+ var STICKY_NOTE_FONT_STEP = 2;
1810
+ var STICKY_NOTE_PADDING = 16;
1811
+ var STICKY_NOTE_FOOTER = {
1812
+ height: 20,
1813
+ fontSize: 12,
1814
+ fontFamily: "Helvetica, Arial, sans-serif",
1815
+ baselineFromBottom: 14,
1816
+ opacity: 1,
1817
+ minBodyWidthForYear: 80
1818
+ };
1819
+ var STICKY_NOTE_BODY_INSET_Y = STICKY_NOTE_PADDING * 2 + STICKY_NOTE_FOOTER.height;
1820
+ var DEFAULT_STICKY_NOTE_SIZE = 250;
1821
+ var STICKY_NOTE_MIN_SIZE = 75;
1822
+ var STICKY_NOTE_SHADOW_OFFSET = 3;
1823
+ var STICKY_NOTE_SHADOW_OPACITY = 0.16;
1824
+ var STICKY_NOTE_EDGE_SHADOW_WIDTH = 0.5;
1825
+ var STICKY_NOTE_EDGE_SHADOW_OPACITY = 0.08;
1743
1826
  var DEFAULT_FONT_FAMILY = FONT_FAMILY.Excalifont;
1827
+ var FONT_TOP_PICKS_SLOTS = 3;
1744
1828
  var DEFAULT_TEXT_ALIGN = "left";
1745
1829
  var DEFAULT_VERTICAL_ALIGN = "top";
1746
1830
  var DEFAULT_VERSION = "{version}";
@@ -1813,6 +1897,9 @@ var SCROLL_TIMEOUT = 100;
1813
1897
  var ZOOM_STEP = 0.1;
1814
1898
  var MIN_ZOOM = 0.1;
1815
1899
  var MAX_ZOOM = 30;
1900
+ var DEFAULT_ZOOM = Object.freeze({
1901
+ value: 1
1902
+ });
1816
1903
  var HYPERLINK_TOOLTIP_DELAY = 300;
1817
1904
  var IDLE_THRESHOLD = 6e4;
1818
1905
  var ACTIVE_THRESHOLD = 3e3;
@@ -1866,6 +1953,7 @@ var TEXT_ALIGN = {
1866
1953
  RIGHT: "right"
1867
1954
  };
1868
1955
  var ELEMENT_READY_TO_ERASE_OPACITY = 20;
1956
+ var ELEMENT_PENDING_DRAW_SHAPE_OPACITY = 70;
1869
1957
  var DEFAULT_PROPORTIONAL_RADIUS = 0.25;
1870
1958
  var DEFAULT_ADAPTIVE_RADIUS = 32;
1871
1959
  var ROUNDNESS = {
@@ -1948,8 +2036,11 @@ var TOOL_TYPE = {
1948
2036
  hand: "hand",
1949
2037
  frame: "frame",
1950
2038
  magicframe: "magicframe",
2039
+ stickynote: "stickynote",
1951
2040
  embeddable: "embeddable",
1952
- laser: "laser"
2041
+ laser: "laser",
2042
+ autoshape: "autoshape",
2043
+ bucketfill: "bucketfill"
1953
2044
  };
1954
2045
  var EDITOR_LS_KEYS = {
1955
2046
  OAI_API_KEY: "excalidraw-oai-api-key",
@@ -2311,6 +2402,7 @@ var KEYS = {
2311
2402
  SUBTRACT: "-",
2312
2403
  SLASH: "/",
2313
2404
  A: "a",
2405
+ B: "b",
2314
2406
  C: "c",
2315
2407
  D: "d",
2316
2408
  E: "e",
@@ -2319,6 +2411,7 @@ var KEYS = {
2319
2411
  H: "h",
2320
2412
  I: "i",
2321
2413
  L: "l",
2414
+ N: "n",
2322
2415
  O: "o",
2323
2416
  P: "p",
2324
2417
  Q: "q",
@@ -2362,6 +2455,7 @@ var shouldRotateWithDiscreteAngle = (event) => event.shiftKey;
2362
2455
  // src/points.ts
2363
2456
  init_define_import_meta_env();
2364
2457
  import {
2458
+ pointFrom,
2365
2459
  pointFromPair
2366
2460
  } from "@excalidraw/math";
2367
2461
  var getSizeFromPoints = (points) => {
@@ -2406,12 +2500,12 @@ var rescalePoints = (dimension, newSize, points, normalize) => {
2406
2500
  };
2407
2501
  var getGridPoint = (x, y, gridSize) => {
2408
2502
  if (gridSize) {
2409
- return [
2503
+ return pointFrom(
2410
2504
  Math.round(x / gridSize) * gridSize,
2411
2505
  Math.round(y / gridSize) * gridSize
2412
- ];
2506
+ );
2413
2507
  }
2414
- return [x, y];
2508
+ return pointFrom(x, y);
2415
2509
  };
2416
2510
 
2417
2511
  // src/promise-pool.ts
@@ -2502,14 +2596,25 @@ var getDateTime = () => {
2502
2596
  return `${year}-${month}-${day}-${hr}${min}`;
2503
2597
  };
2504
2598
  var capitalizeString = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2505
- var isToolIcon = (target) => target instanceof HTMLElement && target.className.includes("ToolIcon");
2506
- var isInputLike = (target) => target instanceof HTMLElement && target.dataset.type === "wysiwyg" || target instanceof HTMLBRElement || // newline in wysiwyg
2507
- target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement;
2599
+ var getTargetWindow = (target) => target?.ownerDocument?.defaultView ?? (typeof window === "undefined" ? null : window);
2600
+ var isToolIcon = (target) => {
2601
+ const targetWindow = getTargetWindow(target);
2602
+ return !!targetWindow && target instanceof targetWindow.HTMLElement && target.className.includes("ToolIcon");
2603
+ };
2604
+ var isInputLike = (target) => {
2605
+ const targetWindow = getTargetWindow(target);
2606
+ return !!targetWindow && (target instanceof targetWindow.HTMLElement && target.dataset.type === "wysiwyg" || target instanceof targetWindow.HTMLBRElement || // newline in wysiwyg
2607
+ target instanceof targetWindow.HTMLInputElement || target instanceof targetWindow.HTMLTextAreaElement || target instanceof targetWindow.HTMLSelectElement);
2608
+ };
2508
2609
  var isInteractive = (target) => {
2509
- return isInputLike(target) || target instanceof Element && !!target.closest("label, button");
2610
+ const targetWindow = getTargetWindow(target);
2611
+ return isInputLike(target) || !!targetWindow && target instanceof targetWindow.Element && !!target.closest("label, button");
2612
+ };
2613
+ var isWritableElement = (target) => {
2614
+ const targetWindow = getTargetWindow(target);
2615
+ return !!targetWindow && (target instanceof targetWindow.HTMLElement && target.dataset.type === "wysiwyg" || target instanceof targetWindow.HTMLBRElement || // newline in wysiwyg
2616
+ target instanceof targetWindow.HTMLTextAreaElement || target instanceof targetWindow.HTMLInputElement && (target.type === "text" || target.type === "number" || target.type === "password" || target.type === "search") || target instanceof targetWindow.HTMLElement && target.closest(".cm-editor") !== null);
2510
2617
  };
2511
- var isWritableElement = (target) => target instanceof HTMLElement && target.dataset.type === "wysiwyg" || target instanceof HTMLBRElement || // newline in wysiwyg
2512
- target instanceof HTMLTextAreaElement || target instanceof HTMLInputElement && (target.type === "text" || target.type === "number" || target.type === "password" || target.type === "search") || target instanceof HTMLElement && target.closest(".cm-editor") !== null;
2513
2618
  var getFontFamilyString = ({
2514
2619
  fontFamily
2515
2620
  }) => {
@@ -2637,7 +2742,7 @@ var updateActiveTool = (appState, data) => {
2637
2742
  }
2638
2743
  return {
2639
2744
  ...appState.activeTool,
2640
- lastActiveTool: data.lastActiveToolBeforeEraser === void 0 ? appState.activeTool.lastActiveTool : data.lastActiveToolBeforeEraser,
2745
+ lastActiveTool: data.lastActiveTool === void 0 ? appState.activeTool.lastActiveTool : data.lastActiveTool,
2641
2746
  type: data.type,
2642
2747
  customType: null,
2643
2748
  locked: data.locked ?? appState.activeTool.locked,
@@ -2764,19 +2869,21 @@ var supportsEmoji = () => {
2764
2869
  return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;
2765
2870
  };
2766
2871
  var getNearestScrollableContainer = (element) => {
2872
+ const ownerDocument = element.ownerDocument;
2873
+ const ownerWindow = ownerDocument.defaultView ?? window;
2767
2874
  let parent = element.parentElement;
2768
2875
  while (parent) {
2769
- if (parent === document.body) {
2770
- return document;
2876
+ if (parent === ownerDocument.body) {
2877
+ return ownerDocument;
2771
2878
  }
2772
- const { overflowY } = window.getComputedStyle(parent);
2879
+ const { overflowY } = ownerWindow.getComputedStyle(parent);
2773
2880
  const hasScrollableContent = parent.scrollHeight > parent.clientHeight;
2774
2881
  if (hasScrollableContent && (overflowY === "auto" || overflowY === "scroll" || overflowY === "overlay")) {
2775
2882
  return parent;
2776
2883
  }
2777
2884
  parent = parent.parentElement;
2778
2885
  }
2779
- return document;
2886
+ return ownerDocument;
2780
2887
  };
2781
2888
  var focusNearestParent = (element) => {
2782
2889
  let parent = element.parentElement;
@@ -3127,6 +3234,16 @@ var reseed = (seed) => {
3127
3234
  testIdBase = 0;
3128
3235
  };
3129
3236
  var randomId = () => isTestEnv() ? `id${testIdBase++}` : nanoid();
3237
+ var seededRandom = (seed) => {
3238
+ let value = seed >>> 0;
3239
+ return () => {
3240
+ value += 1831565813;
3241
+ let next = value;
3242
+ next = Math.imul(next ^ next >>> 15, next | 1);
3243
+ next ^= next + Math.imul(next ^ next >>> 7, next | 61);
3244
+ return ((next ^ next >>> 14) >>> 0) / 4294967296;
3245
+ };
3246
+ };
3130
3247
 
3131
3248
  // src/url.ts
3132
3249
  init_define_import_meta_env();
@@ -3492,6 +3609,7 @@ export {
3492
3609
  AppEventBus,
3493
3610
  BIND_MODE_TIMEOUT,
3494
3611
  BOUND_TEXT_PADDING,
3612
+ BUCKET_FILL_BACKGROUND_PICKS,
3495
3613
  BinaryHeap,
3496
3614
  CANVAS_ONLY_ACTIONS,
3497
3615
  CANVAS_SEARCH_TAB,
@@ -3502,6 +3620,7 @@ export {
3502
3620
  COLOR_CHARCOAL_BLACK,
3503
3621
  COLOR_OUTLINE_CONTRAST_THRESHOLD,
3504
3622
  COLOR_PALETTE,
3623
+ COLOR_TOP_PICKS_SLOTS,
3505
3624
  COLOR_VOICE_CALL,
3506
3625
  COLOR_WHITE,
3507
3626
  CURSOR_TYPE,
@@ -3529,6 +3648,8 @@ export {
3529
3648
  DEFAULT_PROPORTIONAL_RADIUS,
3530
3649
  DEFAULT_REDUCED_GLOBAL_ALPHA,
3531
3650
  DEFAULT_SIDEBAR,
3651
+ DEFAULT_STICKY_NOTE_BG,
3652
+ DEFAULT_STICKY_NOTE_SIZE,
3532
3653
  DEFAULT_STROKE_STREAMLINE,
3533
3654
  DEFAULT_STROKE_STREAMLINE_PRECISE,
3534
3655
  DEFAULT_TEXT_ALIGN,
@@ -3536,11 +3657,13 @@ export {
3536
3657
  DEFAULT_UI_OPTIONS,
3537
3658
  DEFAULT_VERSION,
3538
3659
  DEFAULT_VERTICAL_ALIGN,
3660
+ DEFAULT_ZOOM,
3539
3661
  DOUBLE_TAP_POSITION_THRESHOLD,
3540
3662
  DRAGGING_THRESHOLD,
3541
3663
  Debug,
3542
3664
  EDITOR_LS_KEYS,
3543
3665
  ELEMENT_LINK_KEY,
3666
+ ELEMENT_PENDING_DRAW_SHAPE_OPACITY,
3544
3667
  ELEMENT_READY_TO_ERASE_OPACITY,
3545
3668
  ELEMENT_SHIFT_TRANSLATE_AMOUNT,
3546
3669
  ELEMENT_TRANSLATE_AMOUNT,
@@ -3557,6 +3680,7 @@ export {
3557
3680
  FONT_FAMILY_GENERIC_FALLBACKS,
3558
3681
  FONT_METADATA,
3559
3682
  FONT_SIZES,
3683
+ FONT_TOP_PICKS_SLOTS,
3560
3684
  FRAME_STYLE,
3561
3685
  FREEDRAW_STROKE_WIDTH,
3562
3686
  GOOGLE_FONTS_RANGES,
@@ -3600,6 +3724,20 @@ export {
3600
3724
  SHIFT_LOCKING_ANGLE,
3601
3725
  SIDE_RESIZING_THRESHOLD,
3602
3726
  STATS_PANELS,
3727
+ STICKY_NOTE_BACKGROUND_PICKS,
3728
+ STICKY_NOTE_BODY_INSET_Y,
3729
+ STICKY_NOTE_EDGE_SHADOW_OPACITY,
3730
+ STICKY_NOTE_EDGE_SHADOW_WIDTH,
3731
+ STICKY_NOTE_FALLBACK_FONT_SIZE,
3732
+ STICKY_NOTE_FONT_STEP,
3733
+ STICKY_NOTE_FOOTER,
3734
+ STICKY_NOTE_MAX_FONT_SIZE,
3735
+ STICKY_NOTE_MIN_FONT_SIZE,
3736
+ STICKY_NOTE_MIN_SIZE,
3737
+ STICKY_NOTE_PADDING,
3738
+ STICKY_NOTE_SHADOW_OFFSET,
3739
+ STICKY_NOTE_SHADOW_OPACITY,
3740
+ STICKY_NOTE_STROKE_PICKS,
3603
3741
  STRING_MIME_TYPES,
3604
3742
  STROKE_WIDTH,
3605
3743
  STROKE_WIDTH_KEYS,
@@ -3687,6 +3825,7 @@ export {
3687
3825
  isLocalLink,
3688
3826
  isMemberOf,
3689
3827
  isMobileBreakpoint,
3828
+ isOpaqueColor,
3690
3829
  isPrimitive,
3691
3830
  isProdEnv,
3692
3831
  isPromiseLike,
@@ -3720,6 +3859,7 @@ export {
3720
3859
  randomId,
3721
3860
  randomInteger,
3722
3861
  reduceToCommonValue,
3862
+ removeDarkModeFilter,
3723
3863
  removeSelection,
3724
3864
  rescalePoints,
3725
3865
  reseed,
@@ -3727,7 +3867,9 @@ export {
3727
3867
  rgbToHex2 as rgbToHex,
3728
3868
  safelyParseJSON,
3729
3869
  sceneCoordsToViewportCoords,
3870
+ seededRandom,
3730
3871
  selectNode,
3872
+ setColorAlpha,
3731
3873
  setDateTimeForTests,
3732
3874
  setDesktopUIMode,
3733
3875
  setFeatureFlag,