@excalidraw/common 0.18.0-60b2758 → 0.18.0-699826

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 (114) hide show
  1. package/dist/dev/index.js +146 -24
  2. package/dist/dev/index.js.map +3 -3
  3. package/dist/prod/index.js +3 -3
  4. package/dist/types/common/src/appEventBus.d.ts +27 -0
  5. package/dist/types/common/src/colors.d.ts +13 -13
  6. package/dist/types/common/src/constants.d.ts +1 -2
  7. package/dist/types/common/src/index.d.ts +2 -0
  8. package/dist/types/common/src/utils.d.ts +1 -3
  9. package/dist/types/common/src/versionedSnapshotStore.d.ts +17 -0
  10. package/dist/types/element/src/Scene.d.ts +7 -3
  11. package/dist/types/element/src/arrowheads.d.ts +3 -0
  12. package/dist/types/element/src/binding.d.ts +3 -4
  13. package/dist/types/element/src/bounds.d.ts +22 -3
  14. package/dist/types/element/src/duplicate.d.ts +1 -0
  15. package/dist/types/element/src/elbowArrow.d.ts +2 -0
  16. package/dist/types/element/src/frame.d.ts +7 -6
  17. package/dist/types/element/src/index.d.ts +1 -0
  18. package/dist/types/element/src/linearElementEditor.d.ts +5 -2
  19. package/dist/types/element/src/mutateElement.d.ts +2 -0
  20. package/dist/types/element/src/selection.d.ts +8 -4
  21. package/dist/types/element/src/shape.d.ts +1 -1
  22. package/dist/types/element/src/textElement.d.ts +1 -1
  23. package/dist/types/element/src/textWrapping.d.ts +26 -0
  24. package/dist/types/element/src/typeChecks.d.ts +1 -0
  25. package/dist/types/element/src/types.d.ts +4 -1
  26. package/dist/types/element/src/utils.d.ts +2 -2
  27. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +17 -11
  28. package/dist/types/excalidraw/actions/actionBoundText.d.ts +13 -9
  29. package/dist/types/excalidraw/actions/actionCanvas.d.ts +139 -115
  30. package/dist/types/excalidraw/actions/actionClipboard.d.ts +12 -8
  31. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +6 -4
  32. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +19 -13
  33. package/dist/types/excalidraw/actions/actionDeselect.d.ts +159 -0
  34. package/dist/types/excalidraw/actions/actionElementLink.d.ts +6 -4
  35. package/dist/types/excalidraw/actions/actionElementLock.d.ts +12 -8
  36. package/dist/types/excalidraw/actions/actionEmbeddable.d.ts +6 -4
  37. package/dist/types/excalidraw/actions/actionExport.d.ts +100 -364
  38. package/dist/types/excalidraw/actions/actionFrame.d.ts +24 -16
  39. package/dist/types/excalidraw/actions/actionGroup.d.ts +15 -11
  40. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +6 -4
  41. package/dist/types/excalidraw/actions/actionLink.d.ts +6 -4
  42. package/dist/types/excalidraw/actions/actionMenu.d.ts +6 -4
  43. package/dist/types/excalidraw/actions/actionProperties.d.ts +15 -11
  44. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +7 -5
  45. package/dist/types/excalidraw/actions/actionStyles.d.ts +6 -3
  46. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +3 -3
  47. package/dist/types/excalidraw/actions/actionToggleArrowBinding.d.ts +172 -0
  48. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +6 -4
  49. package/dist/types/excalidraw/actions/actionToggleMidpointSnapping.d.ts +172 -0
  50. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +6 -4
  51. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +6 -4
  52. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +6 -4
  53. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +6 -4
  54. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +6 -4
  55. package/dist/types/excalidraw/actions/index.d.ts +3 -0
  56. package/dist/types/excalidraw/actions/types.d.ts +1 -1
  57. package/dist/types/excalidraw/{animated-trail.d.ts → animatedTrail.d.ts} +4 -3
  58. package/dist/types/excalidraw/appState.d.ts +30 -26
  59. package/dist/types/excalidraw/clipboard.d.ts +4 -5
  60. package/dist/types/excalidraw/components/App.d.ts +53 -14
  61. package/dist/types/excalidraw/components/AppStateObserver.d.ts +37 -0
  62. package/dist/types/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -2
  63. package/dist/types/excalidraw/components/IconPicker.d.ts +14 -9
  64. package/dist/types/excalidraw/components/Range.d.ts +10 -4
  65. package/dist/types/excalidraw/components/SVGLayer.d.ts +1 -1
  66. package/dist/types/excalidraw/components/TTDDialog/CodeMirrorEditor.d.ts +11 -0
  67. package/dist/types/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +3 -3
  68. package/dist/types/excalidraw/components/TTDDialog/TTDDialogOutput.d.ts +4 -1
  69. package/dist/types/excalidraw/components/TTDDialog/mermaid-lang-lite.d.ts +2 -0
  70. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidAutoFix.d.ts +1 -0
  71. package/dist/types/excalidraw/components/TTDDialog/utils/mermaidError.d.ts +10 -0
  72. package/dist/types/excalidraw/components/Toast.d.ts +8 -4
  73. package/dist/types/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -1
  74. package/dist/types/excalidraw/components/canvases/NewElementCanvas.d.ts +1 -0
  75. package/dist/types/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
  76. package/dist/types/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +2 -1
  77. package/dist/types/excalidraw/components/icons.d.ts +17 -8
  78. package/dist/types/excalidraw/components/main-menu/DefaultItems.d.ts +9 -3
  79. package/dist/types/excalidraw/components/shapes.d.ts +7 -0
  80. package/dist/types/excalidraw/data/blob.d.ts +159 -156
  81. package/dist/types/excalidraw/data/filesystem.d.ts +3 -5
  82. package/dist/types/excalidraw/data/index.d.ts +2 -3
  83. package/dist/types/excalidraw/data/json.d.ts +90 -80
  84. package/dist/types/excalidraw/data/resave.d.ts +7 -2
  85. package/dist/types/excalidraw/eraser/index.d.ts +2 -3
  86. package/dist/types/excalidraw/{laser-trails.d.ts → laserTrails.d.ts} +5 -7
  87. package/dist/types/excalidraw/lasso/index.d.ts +2 -3
  88. package/dist/types/excalidraw/renderer/animation.d.ts +4 -1
  89. package/dist/types/excalidraw/scene/Renderer.d.ts +425 -19
  90. package/dist/types/excalidraw/textAutoResizeHandle.d.ts +15 -0
  91. package/dist/types/excalidraw/types.d.ts +103 -8
  92. package/dist/types/excalidraw/wysiwyg/textWysiwyg.d.ts +5 -1
  93. package/dist/types/fractional-indexing/src/index.d.ts +29 -0
  94. package/dist/types/math/src/constants.d.ts +0 -1
  95. package/dist/types/math/src/curve.d.ts +4 -1
  96. package/dist/types/math/src/point.d.ts +2 -1
  97. package/dist/types/utils/src/index.d.ts +1 -2
  98. package/package.json +1 -1
  99. package/dist/types/excalidraw/animation-frame-handler.d.ts +0 -16
  100. package/dist/types/excalidraw/components/DiagramToCodePlugin/DiagramToCodePlugin.d.ts +0 -4
  101. package/dist/types/excalidraw/components/ExcalidrawLogo.d.ts +0 -15
  102. package/dist/types/excalidraw/components/InitializeApp.d.ts +0 -10
  103. package/dist/types/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +0 -8
  104. package/dist/types/excalidraw/components/TTDDialog/utils/TTDStreamFetch.d.ts +0 -24
  105. package/dist/types/excalidraw/components/footer/FooterCenter.d.ts +0 -8
  106. package/dist/types/excalidraw/components/live-collaboration/LiveCollaborationTrigger.d.ts +0 -11
  107. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Center.d.ts +0 -58
  108. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.Hints.d.ts +0 -19
  109. package/dist/types/excalidraw/components/welcome-screen/WelcomeScreen.d.ts +0 -84
  110. package/dist/types/excalidraw/data/reconcile.d.ts +0 -7
  111. package/dist/types/excalidraw/index.d.ts +0 -48
  112. package/dist/types/excalidraw/polyfill.d.ts +0 -2
  113. package/dist/types/utils/src/bbox.d.ts +0 -9
  114. package/dist/types/utils/src/withinBounds.d.ts +0 -19
package/dist/dev/index.js CHANGED
@@ -1394,7 +1394,10 @@ var cssInvert = (r, g, b, percent) => {
1394
1394
  const invertedB = invertComponent(b);
1395
1395
  return { r: invertedR, g: invertedG, b: invertedB };
1396
1396
  };
1397
- var applyDarkModeFilter = (color) => {
1397
+ var applyDarkModeFilter = (color, enable = true) => {
1398
+ if (!enable) {
1399
+ return color;
1400
+ }
1398
1401
  const cached = DARK_MODE_COLORS_CACHE?.get(color);
1399
1402
  if (cached) {
1400
1403
  return cached;
@@ -1836,8 +1839,10 @@ var DEFAULT_UI_OPTIONS = {
1836
1839
  var MAX_DECIMALS_FOR_SVG_EXPORT = 2;
1837
1840
  var EXPORT_SCALES = [1, 2, 3];
1838
1841
  var DEFAULT_EXPORT_PADDING = 10;
1839
- var DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT = 1440;
1840
- var MAX_ALLOWED_FILE_BYTES = 4 * 1024 * 1024;
1842
+ var DEFAULT_IMAGE_OPTIONS = {
1843
+ maxWidthOrHeight: 1440,
1844
+ maxFileSizeBytes: 4 * 1024 * 1024
1845
+ };
1841
1846
  var SVG_NS = "http://www.w3.org/2000/svg";
1842
1847
  var SVG_DOCUMENT_PREAMBLE = `<?xml version="1.0" standalone="no"?>
1843
1848
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
@@ -2484,7 +2489,7 @@ var isInteractive = (target) => {
2484
2489
  return isInputLike(target) || target instanceof Element && !!target.closest("label, button");
2485
2490
  };
2486
2491
  var isWritableElement = (target) => target instanceof HTMLElement && target.dataset.type === "wysiwyg" || target instanceof HTMLBRElement || // newline in wysiwyg
2487
- target instanceof HTMLTextAreaElement || target instanceof HTMLInputElement && (target.type === "text" || target.type === "number" || target.type === "password" || target.type === "search");
2492
+ 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;
2488
2493
  var getFontFamilyString = ({
2489
2494
  fontFamily
2490
2495
  }) => {
@@ -2529,32 +2534,23 @@ var debounce = (fn, timeout) => {
2529
2534
  };
2530
2535
  return ret;
2531
2536
  };
2532
- var throttleRAF = (fn, opts) => {
2537
+ var throttleRAF = (fn) => {
2533
2538
  let timerId = null;
2534
2539
  let lastArgs = null;
2535
- let lastArgsTrailing = null;
2536
- const scheduleFunc = (args) => {
2540
+ const scheduleFunc = () => {
2537
2541
  timerId = window.requestAnimationFrame(() => {
2538
2542
  timerId = null;
2539
- fn(...args);
2543
+ const args = lastArgs;
2540
2544
  lastArgs = null;
2541
- if (lastArgsTrailing) {
2542
- lastArgs = lastArgsTrailing;
2543
- lastArgsTrailing = null;
2544
- scheduleFunc(lastArgs);
2545
+ if (args) {
2546
+ fn(...args);
2545
2547
  }
2546
2548
  });
2547
2549
  };
2548
2550
  const ret = (...args) => {
2549
- if (isTestEnv()) {
2550
- fn(...args);
2551
- return;
2552
- }
2553
2551
  lastArgs = args;
2554
2552
  if (timerId === null) {
2555
- scheduleFunc(lastArgs);
2556
- } else if (opts?.trailing) {
2557
- lastArgsTrailing = args;
2553
+ scheduleFunc();
2558
2554
  }
2559
2555
  };
2560
2556
  ret.flush = () => {
@@ -2563,12 +2559,12 @@ var throttleRAF = (fn, opts) => {
2563
2559
  timerId = null;
2564
2560
  }
2565
2561
  if (lastArgs) {
2566
- fn(...lastArgsTrailing || lastArgs);
2567
- lastArgs = lastArgsTrailing = null;
2562
+ fn(...lastArgs);
2563
+ lastArgs = null;
2568
2564
  }
2569
2565
  };
2570
2566
  ret.cancel = () => {
2571
- lastArgs = lastArgsTrailing = null;
2567
+ lastArgs = null;
2572
2568
  if (timerId !== null) {
2573
2569
  cancelAnimationFrame(timerId);
2574
2570
  timerId = null;
@@ -3236,6 +3232,131 @@ var Emitter = class {
3236
3232
  }
3237
3233
  };
3238
3234
 
3235
+ // src/appEventBus.ts
3236
+ init_define_import_meta_env();
3237
+ var AppEventBus = class {
3238
+ constructor(behavior) {
3239
+ this.behavior = behavior;
3240
+ }
3241
+ emitters = /* @__PURE__ */ new Map();
3242
+ lastPayload = /* @__PURE__ */ new Map();
3243
+ emittedOnce = /* @__PURE__ */ new Set();
3244
+ getEmitter(name) {
3245
+ let emitter = this.emitters.get(name);
3246
+ if (!emitter) {
3247
+ emitter = new Emitter();
3248
+ this.emitters.set(name, emitter);
3249
+ }
3250
+ return emitter;
3251
+ }
3252
+ toPromiseValue(args) {
3253
+ return args.length === 1 ? args[0] : args;
3254
+ }
3255
+ on(name, callback) {
3256
+ const eventBehavior = this.behavior[name];
3257
+ const cachedPayload = this.lastPayload.get(name);
3258
+ if (callback) {
3259
+ if (eventBehavior.replay === "last" && cachedPayload) {
3260
+ queueMicrotask(() => callback(...cachedPayload));
3261
+ if (eventBehavior.cardinality === "once") {
3262
+ return () => {
3263
+ };
3264
+ }
3265
+ }
3266
+ return this.getEmitter(name).on(callback);
3267
+ }
3268
+ if (eventBehavior.cardinality !== "once" || eventBehavior.replay !== "last") {
3269
+ throw new Error(`Event "${String(name)}" requires a callback`);
3270
+ }
3271
+ if (cachedPayload) {
3272
+ return Promise.resolve(this.toPromiseValue(cachedPayload));
3273
+ }
3274
+ return new Promise((resolve) => {
3275
+ this.getEmitter(name).once((...args) => {
3276
+ resolve(this.toPromiseValue(args));
3277
+ });
3278
+ });
3279
+ }
3280
+ emit(name, ...args) {
3281
+ const eventBehavior = this.behavior[name];
3282
+ if (!isProdEnv()) {
3283
+ if (eventBehavior.cardinality === "once") {
3284
+ if (this.emittedOnce.has(name)) {
3285
+ throw new Error(`Event "${String(name)}" can only be emitted once`);
3286
+ }
3287
+ this.emittedOnce.add(name);
3288
+ }
3289
+ }
3290
+ if (eventBehavior.replay === "last") {
3291
+ this.lastPayload.set(name, args);
3292
+ }
3293
+ try {
3294
+ this.getEmitter(name).trigger(...args);
3295
+ } finally {
3296
+ if (eventBehavior.cardinality === "once") {
3297
+ this.getEmitter(name).clear();
3298
+ }
3299
+ }
3300
+ }
3301
+ clear() {
3302
+ this.lastPayload.clear();
3303
+ this.emittedOnce.clear();
3304
+ for (const emitter of this.emitters.values()) {
3305
+ emitter.clear();
3306
+ }
3307
+ this.emitters.clear();
3308
+ }
3309
+ };
3310
+
3311
+ // src/versionedSnapshotStore.ts
3312
+ init_define_import_meta_env();
3313
+ var VersionedSnapshotStore = class {
3314
+ constructor(initialValue, isEqual = Object.is) {
3315
+ this.isEqual = isEqual;
3316
+ this.value = initialValue;
3317
+ }
3318
+ version = 0;
3319
+ value;
3320
+ waiters = /* @__PURE__ */ new Set();
3321
+ subscribers = /* @__PURE__ */ new Set();
3322
+ getSnapshot() {
3323
+ return { version: this.version, value: this.value };
3324
+ }
3325
+ set(nextValue) {
3326
+ if (this.isEqual(this.value, nextValue)) {
3327
+ return false;
3328
+ }
3329
+ this.value = nextValue;
3330
+ this.version += 1;
3331
+ const snapshot = this.getSnapshot();
3332
+ for (const subscriber of this.subscribers) {
3333
+ subscriber(snapshot);
3334
+ }
3335
+ for (const waiter of this.waiters) {
3336
+ waiter(snapshot);
3337
+ }
3338
+ this.waiters.clear();
3339
+ return true;
3340
+ }
3341
+ update(updater) {
3342
+ return this.set(updater(this.value));
3343
+ }
3344
+ subscribe(subscriber) {
3345
+ this.subscribers.add(subscriber);
3346
+ return () => {
3347
+ this.subscribers.delete(subscriber);
3348
+ };
3349
+ }
3350
+ pull(sinceVersion = -1) {
3351
+ if (this.version !== sinceVersion) {
3352
+ return Promise.resolve(this.getSnapshot());
3353
+ }
3354
+ return new Promise((resolve) => {
3355
+ this.waiters.add(resolve);
3356
+ });
3357
+ }
3358
+ };
3359
+
3239
3360
  // debug.ts
3240
3361
  init_define_import_meta_env();
3241
3362
  var lessPrecise = (num, precision = 5) => parseFloat(num.toPrecision(precision));
@@ -3409,6 +3530,7 @@ export {
3409
3530
  ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO,
3410
3531
  ARROW_LABEL_WIDTH_FRACTION,
3411
3532
  ARROW_TYPE,
3533
+ AppEventBus,
3412
3534
  BIND_MODE_TIMEOUT,
3413
3535
  BOUND_TEXT_PADDING,
3414
3536
  BinaryHeap,
@@ -3442,8 +3564,8 @@ export {
3442
3564
  DEFAULT_FONT_SIZE,
3443
3565
  DEFAULT_GRID_SIZE,
3444
3566
  DEFAULT_GRID_STEP,
3567
+ DEFAULT_IMAGE_OPTIONS,
3445
3568
  DEFAULT_LASER_COLOR,
3446
- DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,
3447
3569
  DEFAULT_PROPORTIONAL_RADIUS,
3448
3570
  DEFAULT_REDUCED_GLOBAL_ALPHA,
3449
3571
  DEFAULT_SIDEBAR,
@@ -3486,7 +3608,6 @@ export {
3486
3608
  LINE_CONFIRM_THRESHOLD,
3487
3609
  LINE_POLYGON_POINT_MERGE_DISTANCE,
3488
3610
  LOCAL_FONT_PROTOCOL,
3489
- MAX_ALLOWED_FILE_BYTES,
3490
3611
  MAX_CUSTOM_COLORS_USED_IN_CANVAS,
3491
3612
  MAX_DECIMALS_FOR_SVG_EXPORT,
3492
3613
  MAX_ZOOM,
@@ -3534,6 +3655,7 @@ export {
3534
3655
  VERSIONS,
3535
3656
  VERSION_TIMEOUT,
3536
3657
  VERTICAL_ALIGN,
3658
+ VersionedSnapshotStore,
3537
3659
  WINDOWS_EMOJI_FALLBACK_FONT,
3538
3660
  YOUTUBE_STATES,
3539
3661
  ZOOM_STEP,