@itisyang/excalidraw 0.18.0 → 0.18.1

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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  define_import_meta_env_default
3
- } from "./chunk-Y3BTNZQY.js";
3
+ } from "./chunk-ZYZ25BNE.js";
4
4
  import {
5
5
  __publicField
6
6
  } from "./chunk-XDFCUUT6.js";
@@ -5077,7 +5077,7 @@ var parseFileContents = async (blob) => {
5077
5077
  let contents;
5078
5078
  if (blob.type === MIME_TYPES6.png) {
5079
5079
  try {
5080
- return await (await import("./data/image-3J4DLBV6.js")).decodePngMetadata(blob);
5080
+ return await (await import("./data/image-WACQI5F2.js")).decodePngMetadata(blob);
5081
5081
  } catch (error) {
5082
5082
  if (error.message === "INVALID") {
5083
5083
  throw new ImageSceneDataError(
@@ -5511,4 +5511,4 @@ export {
5511
5511
  createFile,
5512
5512
  normalizeFile
5513
5513
  };
5514
- //# sourceMappingURL=chunk-LWYHXCPK.js.map
5514
+ //# sourceMappingURL=chunk-APTQZKPL.js.map
@@ -1,7 +1,7 @@
1
1
  // <define:import.meta.env>
2
- var define_import_meta_env_default = { MODE: "development", VITE_APP_BACKEND_V2_GET_URL: "https://json-dev.excalidraw.com/api/v2/", VITE_APP_BACKEND_V2_POST_URL: "https://json-dev.excalidraw.com/api/v2/post/", VITE_APP_LIBRARY_URL: "https://libraries.excalidraw.com", VITE_APP_LIBRARY_BACKEND: "https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries", VITE_APP_WS_SERVER_URL: "http://localhost:3002", VITE_APP_PLUS_LP: "https://plus.excalidraw.com", VITE_APP_PLUS_APP: "http://localhost:3000", VITE_APP_AI_BACKEND: "http://localhost:3016", VITE_APP_FIREBASE_CONFIG: '{"apiKey":"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8","authDomain":"excalidraw-oss-dev.firebaseapp.com","projectId":"excalidraw-oss-dev","storageBucket":"excalidraw-oss-dev.appspot.com","messagingSenderId":"664559512677","appId":"1:664559512677:web:a385181f2928d328a7aa8c"}', VITE_APP_DEV_DISABLE_LIVE_RELOAD: "", VITE_APP_ENABLE_TRACKING: "true", FAST_REFRESH: "false", VITE_APP_PORT: "3001", VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: "", VITE_APP_COLLAPSE_OVERLAY: "true", VITE_APP_ENABLE_ESLINT: "true", VITE_APP_ENABLE_PWA: "false", VITE_APP_PLUS_EXPORT_PUBLIC_KEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm2g5T+Rub6Kbf1Mf57t0\n7r2zeHuVg4dla3r5ryXMswtzz6x767octl6oLThn33mQsPSy3GKglFZoCTXJR4ij\nba8SxB04sL/N8eRrKja7TFWjCVtRwTTfyy771NYYNFVJclkxHyE5qw4m27crHF1y\nUNWEjuqNMi/lwAErS9fFa2oJlWyT8U7zzv/5kQREkxZI6y9v0AF3qcbsy2731FnD\ns9ChJvOUW9toIab2gsIdrKW8ZNpu084ZFVKb6LNjvIXI1Se4oMTHeszXzNptzlot\nkdxxjOoaQMAyfljFSot1F1FlU6MQlag7UnFGvFjRHN1JI5q4K+n3a67DX+TMyRqS\nHQIDAQAB", VITE_APP_DISABLE_PREVENT_UNLOAD: "", PKG_NAME: "@excalidraw/excalidraw", PKG_VERSION: "0.18.0", DEV: true };
2
+ var define_import_meta_env_default = { MODE: "development", VITE_APP_BACKEND_V2_GET_URL: "https://json-dev.excalidraw.com/api/v2/", VITE_APP_BACKEND_V2_POST_URL: "https://json-dev.excalidraw.com/api/v2/post/", VITE_APP_LIBRARY_URL: "https://libraries.excalidraw.com", VITE_APP_LIBRARY_BACKEND: "https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries", VITE_APP_WS_SERVER_URL: "http://localhost:3002", VITE_APP_PLUS_LP: "https://plus.excalidraw.com", VITE_APP_PLUS_APP: "http://localhost:3000", VITE_APP_AI_BACKEND: "http://localhost:3016", VITE_APP_FIREBASE_CONFIG: '{"apiKey":"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8","authDomain":"excalidraw-oss-dev.firebaseapp.com","projectId":"excalidraw-oss-dev","storageBucket":"excalidraw-oss-dev.appspot.com","messagingSenderId":"664559512677","appId":"1:664559512677:web:a385181f2928d328a7aa8c"}', VITE_APP_DEV_DISABLE_LIVE_RELOAD: "", VITE_APP_ENABLE_TRACKING: "true", FAST_REFRESH: "false", VITE_APP_PORT: "3001", VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: "", VITE_APP_COLLAPSE_OVERLAY: "true", VITE_APP_ENABLE_ESLINT: "true", VITE_APP_ENABLE_PWA: "false", VITE_APP_PLUS_EXPORT_PUBLIC_KEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm2g5T+Rub6Kbf1Mf57t0\n7r2zeHuVg4dla3r5ryXMswtzz6x767octl6oLThn33mQsPSy3GKglFZoCTXJR4ij\nba8SxB04sL/N8eRrKja7TFWjCVtRwTTfyy771NYYNFVJclkxHyE5qw4m27crHF1y\nUNWEjuqNMi/lwAErS9fFa2oJlWyT8U7zzv/5kQREkxZI6y9v0AF3qcbsy2731FnD\ns9ChJvOUW9toIab2gsIdrKW8ZNpu084ZFVKb6LNjvIXI1Se4oMTHeszXzNptzlot\nkdxxjOoaQMAyfljFSot1F1FlU6MQlag7UnFGvFjRHN1JI5q4K+n3a67DX+TMyRqS\nHQIDAQAB", VITE_APP_DISABLE_PREVENT_UNLOAD: "", PKG_NAME: "@itisyang/excalidraw", PKG_VERSION: "0.18.0", DEV: true };
3
3
 
4
4
  export {
5
5
  define_import_meta_env_default
6
6
  };
7
- //# sourceMappingURL=chunk-Y3BTNZQY.js.map
7
+ //# sourceMappingURL=chunk-ZYZ25BNE.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["<define:import.meta.env>"],
4
4
  "sourcesContent": [""],
5
- "mappings": ";AAAA,uCAAC,MAAO,eAAc,6BAA8B,2CAA0C,8BAA+B,gDAA+C,sBAAuB,oCAAmC,0BAA2B,gFAA+E,wBAAyB,yBAAwB,kBAAmB,+BAA8B,mBAAoB,yBAAwB,qBAAsB,yBAAwB,0BAA2B,mRAA0S,kCAAmC,IAAG,0BAA2B,QAAO,cAAe,SAAQ,eAAgB,QAAO,mDAAoD,IAAG,2BAA4B,QAAO,wBAAyB,QAAO,qBAAsB,SAAQ,iCAAkC,wZAAuZ,iCAAkC,IAAG,UAAW,0BAAyB,aAAc,UAAS,KAAM,KAAI;",
5
+ "mappings": ";AAAA,uCAAC,MAAO,eAAc,6BAA8B,2CAA0C,8BAA+B,gDAA+C,sBAAuB,oCAAmC,0BAA2B,gFAA+E,wBAAyB,yBAAwB,kBAAmB,+BAA8B,mBAAoB,yBAAwB,qBAAsB,yBAAwB,0BAA2B,mRAA0S,kCAAmC,IAAG,0BAA2B,QAAO,cAAe,SAAQ,eAAgB,QAAO,mDAAoD,IAAG,2BAA4B,QAAO,wBAAyB,QAAO,qBAAsB,SAAQ,iCAAkC,wZAAuZ,iCAAkC,IAAG,UAAW,wBAAuB,aAAc,UAAS,KAAM,KAAI;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import "../../chunk-Y3BTNZQY.js";
1
+ import "../../chunk-ZYZ25BNE.js";
2
2
  import "../../chunk-XDFCUUT6.js";
3
3
 
4
4
  // components/TTDDialog/CodeMirrorEditor.tsx
@@ -256,4 +256,4 @@ var CodeMirrorEditor_default = CodeMirrorEditor;
256
256
  export {
257
257
  CodeMirrorEditor_default as default
258
258
  };
259
- //# sourceMappingURL=CodeMirrorEditor-XRUBL3LG.js.map
259
+ //# sourceMappingURL=CodeMirrorEditor-FJPU3KZX.js.map
@@ -2,12 +2,12 @@ import {
2
2
  decodePngMetadata,
3
3
  encodePngMetadata,
4
4
  getTEXtChunk
5
- } from "../chunk-LWYHXCPK.js";
6
- import "../chunk-Y3BTNZQY.js";
5
+ } from "../chunk-APTQZKPL.js";
6
+ import "../chunk-ZYZ25BNE.js";
7
7
  import "../chunk-XDFCUUT6.js";
8
8
  export {
9
9
  decodePngMetadata,
10
10
  encodePngMetadata,
11
11
  getTEXtChunk
12
12
  };
13
- //# sourceMappingURL=image-3J4DLBV6.js.map
13
+ //# sourceMappingURL=image-WACQI5F2.js.map
package/dist/dev/index.js CHANGED
@@ -65,10 +65,10 @@ import {
65
65
  serializeAsJSON,
66
66
  serializeLibraryAsJSON,
67
67
  strokeRectWithRotation_simple
68
- } from "./chunk-LWYHXCPK.js";
68
+ } from "./chunk-APTQZKPL.js";
69
69
  import {
70
70
  define_import_meta_env_default
71
- } from "./chunk-Y3BTNZQY.js";
71
+ } from "./chunk-ZYZ25BNE.js";
72
72
  import {
73
73
  en_default
74
74
  } from "./chunk-PNUNMPKU.js";
@@ -225,7 +225,7 @@ import {
225
225
  deepCopyElement as deepCopyElement5,
226
226
  duplicateElements as duplicateElements3,
227
227
  hasBoundTextElement as hasBoundTextElement9,
228
- isArrowElement as isArrowElement14,
228
+ isArrowElement as isArrowElement15,
229
229
  isBindingElement as isBindingElement4,
230
230
  isBindingElementType,
231
231
  isBoundToContainer as isBoundToContainer9,
@@ -9487,7 +9487,7 @@ var exportCanvas = async (type, elements, appState, files, {
9487
9487
  let blob = canvasToBlob(tempCanvas);
9488
9488
  if (appState.exportEmbedScene) {
9489
9489
  blob = blob.then(
9490
- (blob2) => import("./data/image-3J4DLBV6.js").then(
9490
+ (blob2) => import("./data/image-WACQI5F2.js").then(
9491
9491
  ({ encodePngMetadata: encodePngMetadata2 }) => encodePngMetadata2({
9492
9492
  blob: blob2,
9493
9493
  metadata: serializeAsJSON(elements, appState, files, "local")
@@ -28086,7 +28086,7 @@ var TTDDialogInput = ({
28086
28086
  setShowSpinner(true);
28087
28087
  }
28088
28088
  }, SPINNER_DELAY_MS);
28089
- import("./components/TTDDialog/CodeMirrorEditor-XRUBL3LG.js").then((mod) => {
28089
+ import("./components/TTDDialog/CodeMirrorEditor-FJPU3KZX.js").then((mod) => {
28090
28090
  if (!cancelled) {
28091
28091
  setEditorState({ type: "ready", component: mod.default });
28092
28092
  }
@@ -30481,7 +30481,7 @@ import { elementsAreInSameGroup as elementsAreInSameGroup2 } from "@excalidraw/e
30481
30481
  // components/Stats/Angle.tsx
30482
30482
  import { degreesToRadians as degreesToRadians2, radiansToDegrees } from "@excalidraw/math";
30483
30483
  import { getBoundTextElement as getBoundTextElement10 } from "@excalidraw/element";
30484
- import { isArrowElement as isArrowElement11, isElbowArrow as isElbowArrow8 } from "@excalidraw/element";
30484
+ import { isArrowElement as isArrowElement12, isElbowArrow as isElbowArrow8 } from "@excalidraw/element";
30485
30485
  import { updateBindings as updateBindings3 } from "@excalidraw/element";
30486
30486
 
30487
30487
  // components/Stats/DragInput.tsx
@@ -30495,8 +30495,8 @@ import { CaptureUpdateAction as CaptureUpdateAction38 } from "@excalidraw/elemen
30495
30495
  import { pointFrom as pointFrom25, pointRotateRads as pointRotateRads16 } from "@excalidraw/math";
30496
30496
  import {
30497
30497
  getBoundTextElement as getBoundTextElement9,
30498
- isBindingElement as isBindingElement3,
30499
- unbindBindingElement
30498
+ isArrowElement as isArrowElement11,
30499
+ isBindingElement as isBindingElement3
30500
30500
  } from "@excalidraw/element";
30501
30501
  import { isFrameLikeElement as isFrameLikeElement11 } from "@excalidraw/element";
30502
30502
  import {
@@ -30507,6 +30507,26 @@ import {
30507
30507
  import { getFrameChildren as getFrameChildren5 } from "@excalidraw/element";
30508
30508
  import { updateBindings as updateBindings2 } from "@excalidraw/element";
30509
30509
  import { DRAGGING_THRESHOLD as DRAGGING_THRESHOLD2 } from "@excalidraw/common";
30510
+ var unbindArrowBindings = (element, scene) => {
30511
+ if (!isArrowElement11(element) || element.isDeleted)
30512
+ return;
30513
+ const elementsMap = scene.getNonDeletedElementsMap();
30514
+ for (const field of ["startBinding", "endBinding"]) {
30515
+ const binding = element[field];
30516
+ if (!binding)
30517
+ continue;
30518
+ const opposite = field === "startBinding" ? element.endBinding : element.startBinding;
30519
+ const boundElement = elementsMap.get(binding.elementId);
30520
+ if (boundElement && "boundElements" in boundElement && (!opposite || opposite.elementId !== binding.elementId)) {
30521
+ scene.mutateElement(boundElement, {
30522
+ boundElements: boundElement.boundElements?.filter(
30523
+ (be) => be.id !== element.id
30524
+ )
30525
+ });
30526
+ }
30527
+ scene.mutateElement(element, { [field]: null });
30528
+ }
30529
+ };
30510
30530
  var SMALLEST_DELTA = 0.01;
30511
30531
  var STEP_SIZE = 10;
30512
30532
  var isPropertyEditable = (element, property) => {
@@ -30530,8 +30550,7 @@ var moveElement = (newTopLeftX, newTopLeftY, originalElement, scene, appState, o
30530
30550
  if (Math.abs(newTopLeftX - originalElement.x) < DRAGGING_THRESHOLD2 && Math.abs(newTopLeftY - originalElement.y) < DRAGGING_THRESHOLD2) {
30531
30551
  return;
30532
30552
  }
30533
- unbindBindingElement(originalElement, "start", scene);
30534
- unbindBindingElement(originalElement, "end", scene);
30553
+ unbindArrowBindings(originalElement, scene);
30535
30554
  }
30536
30555
  const elementsMap = scene.getNonDeletedElementsMap();
30537
30556
  const latestElement = elementsMap.get(originalElement.id);
@@ -30908,7 +30927,7 @@ var handleDegreeChange = ({
30908
30927
  });
30909
30928
  updateBindings3(latestElement, scene, app.state);
30910
30929
  const boundTextElement2 = getBoundTextElement10(latestElement, elementsMap);
30911
- if (boundTextElement2 && !isArrowElement11(latestElement)) {
30930
+ if (boundTextElement2 && !isArrowElement12(latestElement)) {
30912
30931
  scene.mutateElement(boundTextElement2, { angle: nextAngle2 });
30913
30932
  }
30914
30933
  return;
@@ -30926,7 +30945,7 @@ var handleDegreeChange = ({
30926
30945
  });
30927
30946
  updateBindings3(latestElement, scene, app.state);
30928
30947
  const boundTextElement = getBoundTextElement10(latestElement, elementsMap);
30929
- if (boundTextElement && !isArrowElement11(latestElement)) {
30948
+ if (boundTextElement && !isArrowElement12(latestElement)) {
30930
30949
  scene.mutateElement(boundTextElement, { angle: nextAngle });
30931
30950
  }
30932
30951
  }
@@ -31340,7 +31359,7 @@ var FontSize_default = FontSize;
31340
31359
  // components/Stats/MultiAngle.tsx
31341
31360
  import { degreesToRadians as degreesToRadians3, radiansToDegrees as radiansToDegrees2 } from "@excalidraw/math";
31342
31361
  import { getBoundTextElement as getBoundTextElement12 } from "@excalidraw/element";
31343
- import { isArrowElement as isArrowElement12 } from "@excalidraw/element";
31362
+ import { isArrowElement as isArrowElement13 } from "@excalidraw/element";
31344
31363
  import { isInGroup as isInGroup2 } from "@excalidraw/element";
31345
31364
  import { jsx as jsx140 } from "react/jsx-runtime";
31346
31365
  var STEP_SIZE6 = 15;
@@ -31367,7 +31386,7 @@ var handleDegreeChange2 = ({
31367
31386
  angle: nextAngle
31368
31387
  });
31369
31388
  const boundTextElement = getBoundTextElement12(element, elementsMap);
31370
- if (boundTextElement && !isArrowElement12(element)) {
31389
+ if (boundTextElement && !isArrowElement13(element)) {
31371
31390
  scene.mutateElement(boundTextElement, { angle: nextAngle });
31372
31391
  }
31373
31392
  }
@@ -31392,7 +31411,7 @@ var handleDegreeChange2 = ({
31392
31411
  angle: nextAngle
31393
31412
  });
31394
31413
  const boundTextElement = getBoundTextElement12(latestElement, elementsMap);
31395
- if (boundTextElement && !isArrowElement12(latestElement)) {
31414
+ if (boundTextElement && !isArrowElement13(latestElement)) {
31396
31415
  scene.mutateElement(boundTextElement, { angle: nextAngle });
31397
31416
  }
31398
31417
  }
@@ -34801,7 +34820,7 @@ import {
34801
34820
  getTransformHandlesFromCoords,
34802
34821
  hasBoundingBox,
34803
34822
  hitElementItself as hitElementItself2,
34804
- isArrowElement as isArrowElement13,
34823
+ isArrowElement as isArrowElement14,
34805
34824
  isBindableElement as isBindableElement2,
34806
34825
  isElbowArrow as isElbowArrow9,
34807
34826
  isFrameLikeElement as isFrameLikeElement14,
@@ -36090,7 +36109,7 @@ var _renderInteractiveScene = ({
36090
36109
  renderLinearElementPointHighlight(context, appState, elementsMap);
36091
36110
  }
36092
36111
  }
36093
- if (isArrowElement13(selectedLinearElement)) {
36112
+ if (isArrowElement14(selectedLinearElement)) {
36094
36113
  renderFocusPointIndicator({
36095
36114
  arrow: selectedLinearElement,
36096
36115
  elementsMap: allElementsMap,
@@ -38795,7 +38814,7 @@ var App = class _App extends React46.Component {
38795
38814
  }
38796
38815
  if (isArrowKey2(event.key)) {
38797
38816
  bindOrUnbindBindingElements2(
38798
- this.scene.getSelectedElements(this.state).filter(isArrowElement14),
38817
+ this.scene.getSelectedElements(this.state).filter(isArrowElement15),
38799
38818
  this.scene,
38800
38819
  this.state
38801
38820
  );
@@ -39063,7 +39082,7 @@ var App = class _App extends React46.Component {
39063
39082
  const fontFamily = existingTextElement?.fontFamily || this.state.currentItemFontFamily;
39064
39083
  const lineHeight = existingTextElement?.lineHeight || getLineHeight6(fontFamily);
39065
39084
  const fontSize = this.state.currentItemFontSize;
39066
- if (!existingTextElement && shouldBindToContainer && container && !isArrowElement14(container)) {
39085
+ if (!existingTextElement && shouldBindToContainer && container && !isArrowElement15(container)) {
39067
39086
  const fontString = {
39068
39087
  fontSize,
39069
39088
  fontFamily
@@ -39112,7 +39131,7 @@ var App = class _App extends React46.Component {
39112
39131
  containerId: shouldBindToContainer ? container?.id : void 0,
39113
39132
  groupIds: container?.groupIds ?? [],
39114
39133
  lineHeight,
39115
- angle: container ? isArrowElement14(container) ? 0 : container.angle : 0,
39134
+ angle: container ? isArrowElement15(container) ? 0 : container.angle : 0,
39116
39135
  frameId: topLayerFrame ? topLayerFrame.id : null
39117
39136
  });
39118
39137
  if (!existingTextElement && shouldBindToContainer && container) {
@@ -39538,7 +39557,7 @@ var App = class _App extends React46.Component {
39538
39557
  const { lastCommittedPoint } = selectedLinearElement;
39539
39558
  setCursorForShape(this.interactiveCanvas, this.state);
39540
39559
  if (lastPoint === lastCommittedPoint) {
39541
- const hoveredElement = isArrowElement14(this.state.newElement) && isBindingEnabled2(this.state) && getHoveredElementForBinding2(
39560
+ const hoveredElement = isArrowElement15(this.state.newElement) && isBindingEnabled2(this.state) && getHoveredElementForBinding2(
39542
39561
  pointFrom31(scenePointerX, scenePointerY),
39543
39562
  this.scene.getNonDeletedElements(),
39544
39563
  this.scene.getNonDeletedElementsMap(),
@@ -44010,7 +44029,7 @@ var App = class _App extends React46.Component {
44010
44029
  elements[index],
44011
44030
  this.scene.getNonDeletedElementsMap()
44012
44031
  );
44013
- if (isArrowElement14(elements[index]) && hitElementItself3({
44032
+ if (isArrowElement15(elements[index]) && hitElementItself3({
44014
44033
  point: pointFrom31(x, y),
44015
44034
  element: elements[index],
44016
44035
  elementsMap: this.scene.getNonDeletedElementsMap(),
@@ -45613,7 +45632,7 @@ var App = class _App extends React46.Component {
45613
45632
  this.store.scheduleCapture();
45614
45633
  }
45615
45634
  if (pointerDownState.drag.hasOccurred && !this.state.selectedLinearElement || isResizing || isRotating || isCropping) {
45616
- const linearElements = this.scene.getSelectedElements(this.state).filter(isArrowElement14);
45635
+ const linearElements = this.scene.getSelectedElements(this.state).filter(isArrowElement15);
45617
45636
  bindOrUnbindBindingElements2(linearElements, this.scene, this.state);
45618
45637
  }
45619
45638
  if (activeTool.type === "laser") {