@inditextech/weave-sdk 3.8.0 → 3.8.1-SNAPSHOT.191.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.
package/dist/types.js CHANGED
@@ -17679,19 +17679,20 @@ function moveNodeToContainerNT(instance, node, containerToMove, originalNode, or
17679
17679
  node.rotation(nodeRotation);
17680
17680
  node.x(node.x() - (layerToMoveAttrs.containerOffsetX ?? 0));
17681
17681
  node.y(node.y() - (layerToMoveAttrs.containerOffsetY ?? 0));
17682
- node.movedToContainer(layerToMove);
17682
+ node.destroy();
17683
+ const newNode = node.clone();
17683
17684
  instance.emitEvent("onNodeMovedToContainer", {
17684
- node: node.clone(),
17685
+ node: newNode,
17685
17686
  container: layerToMove,
17686
17687
  originalNode,
17687
17688
  originalContainer
17688
17689
  });
17689
17690
  const nodeHandler = instance.getNodeHandler(node.getAttrs().nodeType);
17690
17691
  if (nodeHandler) {
17691
- node.setAttrs({ onMoveContainer: true });
17692
- const actualNode = nodeHandler.serialize(node);
17693
- instance.removeNodeNT(actualNode, { emitUserChangeEvent: false });
17694
- instance.addNodeNT(actualNode, layerToMoveAttrs.id, {
17692
+ const actualNodeState = nodeHandler.serialize(node);
17693
+ const newNodeState = nodeHandler.serialize(newNode);
17694
+ instance.removeNodeNT(actualNodeState, { emitUserChangeEvent: false });
17695
+ instance.addNodeNT(newNodeState, layerToMoveAttrs.id, {
17695
17696
  emitUserChangeEvent: false,
17696
17697
  overrideUserChangeType: WEAVE_NODE_CHANGE_TYPE.UPDATE
17697
17698
  });
@@ -17920,17 +17921,6 @@ function isIOS() {
17920
17921
  return /iPad|iPhone|iPod/.test(navigator.userAgent) || navigator.userAgent.includes("Mac") && "ontouchend" in document;
17921
17922
  }
17922
17923
  const isServer = () => typeof window === "undefined";
17923
- const getPositionRelativeToContainerOnPosition = (instance) => {
17924
- let position = instance.getStage().getRelativePointerPosition();
17925
- if (!position) return position;
17926
- const container = containerOverCursor(instance, [], position);
17927
- if (container) if (container.getAttrs().containerId) {
17928
- const containerNode = container.findOne(`#${container.getAttrs().containerId}`);
17929
- if (containerNode) position = containerNode?.getRelativePointerPosition();
17930
- } else position = container?.getRelativePointerPosition();
17931
- if (!position) return position;
17932
- return position;
17933
- };
17934
17924
  const canComposite = (node) => {
17935
17925
  const parent = node.getParent();
17936
17926
  return parent?.getClassName() === "Group" && parent?.getAttrs().nodeType !== "frame" && parent?.getAttrs().nodeId === void 0;
@@ -18611,12 +18601,10 @@ const WEAVE_GRID_LAYER_ID = "gridLayer";
18611
18601
  //#region src/plugins/stage-panning/constants.ts
18612
18602
  const WEAVE_STAGE_PANNING_KEY = "stagePanning";
18613
18603
  const WEAVE_STAGE_PANNING_THROTTLE_MS = 20;
18614
- const WEAVE_STAGE_PANNING_DEFAULT_CONFIG = {
18615
- edgePanOffset: 25,
18616
- edgePanMinSpeed: 2,
18617
- edgePanSpeed: 10,
18618
- edgePanMaxSpeed: 30
18619
- };
18604
+ const WEAVE_STAGE_PANNING_DEFAULT_CONFIG = { edgePan: {
18605
+ offset: 25,
18606
+ speed: 20
18607
+ } };
18620
18608
 
18621
18609
  //#endregion
18622
18610
  //#region src/plugins/nodes-multi-selection-feedback/constants.ts
@@ -18838,16 +18826,21 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18838
18826
  if (moved) this.getContextMenuPlugin()?.cancelLongPressTimer();
18839
18827
  this.triggerSelectedNodesEvent();
18840
18828
  if (this.getUsersPresencePlugin()) {
18841
- for (const node of tr.nodes()) this.getUsersPresencePlugin()?.setPresence(node.id(), {
18842
- x: node.x(),
18843
- y: node.y(),
18844
- width: node.width(),
18845
- height: node.height(),
18846
- scaleX: node.scaleX(),
18847
- scaleY: node.scaleY(),
18848
- rotation: node.rotation(),
18849
- strokeScaleEnabled: false
18850
- }, false);
18829
+ for (const node of tr.nodes()) {
18830
+ let parentId = node.getParent()?.id() ?? "";
18831
+ const parent = node.getParent();
18832
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
18833
+ this.getUsersPresencePlugin()?.setPresence(node.id(), parentId, {
18834
+ x: node.x(),
18835
+ y: node.y(),
18836
+ width: node.width(),
18837
+ height: node.height(),
18838
+ scaleX: node.scaleX(),
18839
+ scaleY: node.scaleY(),
18840
+ rotation: node.rotation(),
18841
+ strokeScaleEnabled: false
18842
+ }, false);
18843
+ }
18851
18844
  this.getUsersPresencePlugin()?.forceSendPresence();
18852
18845
  }
18853
18846
  };
@@ -18882,7 +18875,7 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18882
18875
  this.didMove = false;
18883
18876
  const stage$1 = this.instance.getStage();
18884
18877
  this.saveDragSelectedNodes();
18885
- if (this.getDragSelectedNodes().length > 1) this.setNodesOpacityOnDrag();
18878
+ this.setNodesOpacityOnDrag();
18886
18879
  selectedNodes = tr.nodes();
18887
18880
  if (isWheelMousePressed) {
18888
18881
  e.cancelBubble = true;
@@ -18935,10 +18928,15 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18935
18928
  clearContainerTargets(this.instance);
18936
18929
  const layerToMove = containerOverCursor(this.instance, selectedNodes);
18937
18930
  if (this.getUsersPresencePlugin() && this.dragInProcess) {
18938
- for (const node of selectedNodes) this.getUsersPresencePlugin()?.setPresence(node.id(), {
18939
- x: node.x(),
18940
- y: node.y()
18941
- }, false);
18931
+ for (const node of selectedNodes) {
18932
+ let parentId = node.getParent()?.id() ?? "";
18933
+ const parent = node.getParent();
18934
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
18935
+ this.getUsersPresencePlugin()?.setPresence(node.id(), parentId, {
18936
+ x: node.x(),
18937
+ y: node.y()
18938
+ }, false);
18939
+ }
18942
18940
  this.getUsersPresencePlugin()?.forceSendPresence();
18943
18941
  }
18944
18942
  if (layerToMove && !selectionContainsFrames) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
@@ -18952,7 +18950,6 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18952
18950
  if (!mainLayer) return;
18953
18951
  this.instance.getSelectionLayer()?.hitGraphEnabled(true);
18954
18952
  this.instance.getMainLayer()?.hitGraphEnabled(true);
18955
- if (this.getDragSelectedNodes().length > 1) this.restoreNodesOpacityOnDrag();
18956
18953
  if (!this.didMove) return;
18957
18954
  if (selectedNodes.length > 1) this.instance.releaseMutexLock();
18958
18955
  e.cancelBubble = true;
@@ -19691,11 +19688,18 @@ const COPY_PASTE_NODES_PLUGIN_STATE = {
19691
19688
  ["IDLE"]: "idle",
19692
19689
  ["PASTING"]: "pasting"
19693
19690
  };
19694
- const WEAVE_COPY_PASTE_CONFIG_DEFAULT = { paddingOnPaste: {
19695
- enabled: false,
19696
- paddingX: 0,
19697
- paddingY: 0
19698
- } };
19691
+ const WEAVE_COPY_PASTE_CONFIG_DEFAULT = {
19692
+ canPasteOnto: (node, atTarget) => {
19693
+ const targetType = atTarget.getAttrs().nodeType;
19694
+ if (targetType === "frame" && node.type === "frame") return false;
19695
+ return true;
19696
+ },
19697
+ paddingOnPaste: {
19698
+ enabled: false,
19699
+ paddingX: 0,
19700
+ paddingY: 0
19701
+ }
19702
+ };
19699
19703
 
19700
19704
  //#endregion
19701
19705
  //#region src/plugins/copy-paste-nodes/copy-paste-nodes.ts
@@ -19922,6 +19926,7 @@ var WeaveCopyPasteNodesPlugin = class extends WeavePlugin {
19922
19926
  }
19923
19927
  };
19924
19928
  this.instance.addEventListener("onNodeRenderedAdded", handleOnNodeAdded);
19929
+ const nodesToPaste = [];
19925
19930
  for (const element of Object.keys(this.toPaste.weave)) {
19926
19931
  const node = this.toPaste.weave[element].element;
19927
19932
  const posRelativeToSelection = this.toPaste.weave[element].posRelativeToSelection;
@@ -19962,12 +19967,22 @@ var WeaveCopyPasteNodesPlugin = class extends WeavePlugin {
19962
19967
  containerId = this.instance.getMainLayer()?.getAttrs().id ?? "";
19963
19968
  containerNode = this.instance.getMainLayer();
19964
19969
  }
19965
- if (containerId) {
19970
+ const canPasteNodeOntoTarget = this.config.canPasteOnto(node, containerNode);
19971
+ if (!canPasteNodeOntoTarget) throw new Error(`Cannot paste node ${node.key} onto target container: ${containerId}`, { cause: "InvalidPasteTarget" });
19972
+ if (containerId && canPasteNodeOntoTarget) {
19966
19973
  nodesToSelect.push(newNodeId);
19967
- this.instance.addNodeNT(node, containerId);
19974
+ nodesToPaste.push({
19975
+ node,
19976
+ containerId
19977
+ });
19968
19978
  }
19969
19979
  this.getStageGridPlugin()?.onRender();
19970
19980
  }
19981
+ for (const elementToPaste of nodesToPaste) {
19982
+ const { node, containerId } = elementToPaste;
19983
+ this.instance.addNodeNT(node, containerId);
19984
+ this.getStageGridPlugin()?.onRender();
19985
+ }
19971
19986
  });
19972
19987
  }
19973
19988
  async finishHandleCopy() {
@@ -20059,6 +20074,7 @@ var WeaveCopyPasteNodesPlugin = class extends WeavePlugin {
20059
20074
  }
20060
20075
  } catch (ex) {
20061
20076
  this.instance.emitEvent("onPaste", { error: ex });
20077
+ if (ex instanceof Error && ex.cause === "InvalidPasteTarget") return;
20062
20078
  }
20063
20079
  try {
20064
20080
  const items = await navigator.clipboard.read();
@@ -20167,7 +20183,6 @@ const augmentKonvaNodeClass = (config) => {
20167
20183
  Konva.Node.prototype.getRealClientRect = function(config$1) {
20168
20184
  return this.getClientRect(config$1);
20169
20185
  };
20170
- Konva.Node.prototype.movedToContainer = function() {};
20171
20186
  Konva.Node.prototype.updatePosition = function() {};
20172
20187
  Konva.Node.prototype.triggerCrop = function() {};
20173
20188
  Konva.Node.prototype.closeCrop = function() {};
@@ -20217,7 +20232,6 @@ var WeaveNode = class {
20217
20232
  "bottom-right"
20218
20233
  ];
20219
20234
  };
20220
- node.movedToContainer = function() {};
20221
20235
  node.updatePosition = function() {};
20222
20236
  node.resetCrop = function() {};
20223
20237
  node.handleMouseover = function() {};
@@ -20406,7 +20420,10 @@ var WeaveNode = class {
20406
20420
  const nodesEdgeSnappingPlugin = this.getNodesEdgeSnappingPlugin();
20407
20421
  if (nodesSelectionPlugin && this.isSelecting() && this.isNodeSelected(node$1)) nodesSelectionPlugin.getTransformer().forceUpdate();
20408
20422
  if (nodesEdgeSnappingPlugin && transforming && this.isSelecting() && this.isNodeSelected(node$1)) nodesEdgeSnappingPlugin.evaluateGuidelines(e);
20409
- this.getUsersPresencePlugin()?.setPresence(node$1.id(), {
20423
+ let parentId = node$1.getParent()?.id() ?? "";
20424
+ const parent = node$1.getParent();
20425
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
20426
+ this.getUsersPresencePlugin()?.setPresence(node$1.id(), parentId, {
20410
20427
  x: node$1.x(),
20411
20428
  y: node$1.y(),
20412
20429
  width: node$1.width(),
@@ -20464,10 +20481,7 @@ var WeaveNode = class {
20464
20481
  const nodeTarget = e.target;
20465
20482
  let isWheelMousePressed = false;
20466
20483
  if (e.evt.button === 1) isWheelMousePressed = true;
20467
- e.cancelBubble = true;
20468
20484
  this.getNodesSelectionFeedbackPlugin()?.hideSelectionHalo(nodeTarget);
20469
- this.getSelectionPlugin()?.saveDragSelectedNodes();
20470
- if (this.getSelectionPlugin()?.getDragSelectedNodes().length === 1) this.getSelectionPlugin()?.setNodesOpacityOnDrag();
20471
20485
  const canMove = nodeTarget?.canDrag() ?? false;
20472
20486
  if (!canMove) {
20473
20487
  nodeTarget.stopDrag();
@@ -20558,7 +20572,10 @@ var WeaveNode = class {
20558
20572
  }
20559
20573
  if (this.isSelecting() && this.getSelectionPlugin()?.getSelectedNodes().length === 1) {
20560
20574
  clearContainerTargets(this.instance);
20561
- this.getUsersPresencePlugin()?.setPresence(realNodeTarget.id(), {
20575
+ let parentId = realNodeTarget.getParent()?.id() ?? "";
20576
+ const parent = realNodeTarget.getParent();
20577
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
20578
+ this.getUsersPresencePlugin()?.setPresence(realNodeTarget.id(), parentId, {
20562
20579
  x: realNodeTarget.x(),
20563
20580
  y: realNodeTarget.y()
20564
20581
  });
@@ -20593,7 +20610,7 @@ var WeaveNode = class {
20593
20610
  startPosition = null;
20594
20611
  lockedAxis = null;
20595
20612
  isShiftPressed = false;
20596
- if (this.getSelectionPlugin()?.getDragSelectedNodes().length === 1) this.getSelectionPlugin()?.restoreNodesOpacityOnDrag();
20613
+ this.getSelectionPlugin()?.restoreNodesOpacityOnDrag();
20597
20614
  if (this.getSelectionPlugin()?.getSelectedNodes().length === 1) {
20598
20615
  this.instance.releaseMutexLock();
20599
20616
  this.getNodesSelectionFeedbackPlugin()?.showSelectionHalo(nodeTarget);
@@ -20771,7 +20788,6 @@ var WeaveNode = class {
20771
20788
  delete cleanedAttrs.mutexUserId;
20772
20789
  delete cleanedAttrs.draggable;
20773
20790
  delete cleanedAttrs.overridesMouseControl;
20774
- delete cleanedAttrs.onMoveContainer;
20775
20791
  delete cleanedAttrs.dragBoundFunc;
20776
20792
  return {
20777
20793
  key: attrs.id ?? "",
@@ -21397,45 +21413,24 @@ var WeaveTargetingManager = class {
21397
21413
  }
21398
21414
  getMousePointer(point) {
21399
21415
  this.logger.debug({ point }, "getMousePointer");
21400
- const stage = this.instance.getStage();
21401
21416
  const mainLayer = this.instance.getMainLayer();
21402
21417
  let relativeMousePointer = typeof point !== "undefined" ? point : mainLayer?.getRelativePointerPosition() ?? {
21403
21418
  x: 0,
21404
21419
  y: 0
21405
21420
  };
21406
- let measureContainer = mainLayer;
21407
- let container = mainLayer;
21408
21421
  const utilityLayer = this.instance.getUtilityLayer();
21409
21422
  if (utilityLayer) utilityLayer.visible(false);
21423
+ let containerAlt = containerOverCursor(this.instance, [], relativeMousePointer);
21424
+ if (!containerAlt) containerAlt = this.instance.getMainLayer();
21410
21425
  const nodesSelection = this.instance.getPlugin("nodesSelection");
21411
21426
  if (nodesSelection) nodesSelection.getTransformer().visible(false);
21412
- const dummyRect = new Konva.Rect({
21413
- width: 10,
21414
- height: 10,
21415
- x: relativeMousePointer.x,
21416
- y: relativeMousePointer.y
21417
- });
21418
- mainLayer?.add(dummyRect);
21419
- const intersectedNode = this.nodeIntersectsContainerElement(dummyRect);
21420
- if (intersectedNode) {
21421
- const containerOfNode = stage.findOne(`#${intersectedNode.getAttrs().containerId}`);
21422
- if (containerOfNode) {
21423
- container = intersectedNode;
21424
- measureContainer = containerOfNode;
21425
- }
21426
- }
21427
- if (typeof point === "undefined" && container?.getAttrs().nodeType !== "layer") relativeMousePointer = measureContainer?.getRelativePointerPosition() ?? relativeMousePointer;
21428
- if (typeof point === "undefined" && container?.getAttrs().nodeType === "layer") relativeMousePointer = measureContainer?.getRelativePointerPosition() ?? {
21429
- x: 0,
21430
- y: 0
21431
- };
21427
+ relativeMousePointer = containerAlt?.getRelativePointerPosition() ?? relativeMousePointer;
21432
21428
  if (utilityLayer) utilityLayer.visible(true);
21433
21429
  if (nodesSelection) nodesSelection.getTransformer().visible(true);
21434
- dummyRect.destroy();
21435
21430
  return {
21436
21431
  mousePoint: relativeMousePointer,
21437
- container,
21438
- measureContainer
21432
+ container: containerAlt,
21433
+ measureContainer: containerAlt
21439
21434
  };
21440
21435
  }
21441
21436
  getMousePointerRelativeToContainer(container) {
@@ -22024,7 +22019,7 @@ var WeaveRegisterManager = class {
22024
22019
 
22025
22020
  //#endregion
22026
22021
  //#region package.json
22027
- var version = "3.8.0";
22022
+ var version = "3.8.1-SNAPSHOT.191.1";
22028
22023
 
22029
22024
  //#endregion
22030
22025
  //#region src/managers/setup.ts
@@ -23464,7 +23459,7 @@ var Weave = class {
23464
23459
  this.moduleLogger.info("Start instance");
23465
23460
  if (!this.isServerSide()) {
23466
23461
  this.eventsController = new AbortController();
23467
- if (!window.weave) window.weave = this;
23462
+ window.weave = this;
23468
23463
  }
23469
23464
  this.emitEvent("onRoomLoaded", false);
23470
23465
  this.status = WEAVE_INSTANCE_STATUS.STARTING;
@@ -24455,7 +24450,6 @@ var WeaveLayerNode = class extends WeaveNode {
24455
24450
  delete cleanedAttrs.mutexUserId;
24456
24451
  delete cleanedAttrs.draggable;
24457
24452
  delete cleanedAttrs.overridesMouseControl;
24458
- delete cleanedAttrs.onMoveContainer;
24459
24453
  delete cleanedAttrs.dragBoundFunc;
24460
24454
  return {
24461
24455
  key: attrs.id ?? "",
@@ -24540,7 +24534,6 @@ var WeaveGroupNode = class extends WeaveNode {
24540
24534
  delete cleanedAttrs.mutexUserId;
24541
24535
  delete cleanedAttrs.draggable;
24542
24536
  delete cleanedAttrs.overridesMouseControl;
24543
- delete cleanedAttrs.onMoveContainer;
24544
24537
  delete cleanedAttrs.dragBoundFunc;
24545
24538
  return {
24546
24539
  key: attrs.id ?? "",
@@ -25329,7 +25322,6 @@ var WeaveTextNode = class extends WeaveNode {
25329
25322
  delete cleanedAttrs.measureMultilineText;
25330
25323
  delete cleanedAttrs.overridesMouseControl;
25331
25324
  delete cleanedAttrs.shouldUpdateOnTransform;
25332
- delete cleanedAttrs.onMoveContainer;
25333
25325
  delete cleanedAttrs.dragBoundFunc;
25334
25326
  return {
25335
25327
  key: attrs.id ?? "",
@@ -25721,13 +25713,14 @@ const WEAVE_IMAGE_CROP_ANCHOR_POSITION = {
25721
25713
  ["BOTTOM_CENTER"]: "bottom-center"
25722
25714
  };
25723
25715
  const WEAVE_IMAGE_DEFAULT_CONFIG = {
25716
+ cleanup: { intervalMs: 60 * 1e3 },
25724
25717
  performance: { cache: { enabled: false } },
25725
25718
  style: {
25726
25719
  placeholder: { fill: "#aaaaaa" },
25727
25720
  cursor: { loading: "wait" }
25728
25721
  },
25729
25722
  imageLoading: {
25730
- maxRetryAttempts: 15,
25723
+ maxRetryAttempts: 3,
25731
25724
  retryDelayMs: 2e3
25732
25725
  },
25733
25726
  crossOrigin: "anonymous",
@@ -26420,6 +26413,25 @@ var WeaveImageNode = class extends WeaveNode {
26420
26413
  this.imageTryoutAttempts = {};
26421
26414
  this.imageFallback = {};
26422
26415
  }
26416
+ setupNotUsedImagesCleanup() {
26417
+ const cleanupHandler = () => {
26418
+ this.notUsedImagesCleanup = null;
26419
+ const stage = this.instance.getStage();
26420
+ const nodesIds = Object.keys(this.imageState);
26421
+ for (const nodeId of nodesIds) {
26422
+ const node = stage.findOne(`#${nodeId}`);
26423
+ if (!node) {
26424
+ delete this.imageSource[nodeId];
26425
+ delete this.imageState[nodeId];
26426
+ delete this.imageTryoutAttempts[nodeId];
26427
+ delete this.imageFallback[nodeId];
26428
+ }
26429
+ }
26430
+ this.setupNotUsedImagesCleanup();
26431
+ };
26432
+ const bindedCleanupHandler = cleanupHandler.bind(this);
26433
+ if (!this.notUsedImagesCleanup) setTimeout(bindedCleanupHandler, this.config.cleanup.intervalMs);
26434
+ }
26423
26435
  preloadCursors() {
26424
26436
  return new Promise((resolve) => {
26425
26437
  (async () => {
@@ -26496,6 +26508,7 @@ var WeaveImageNode = class extends WeaveNode {
26496
26508
  this.instance.resolveAsyncElement(nodeId, WEAVE_IMAGE_NODE_TYPE);
26497
26509
  }
26498
26510
  onRender(props) {
26511
+ this.setupNotUsedImagesCleanup();
26499
26512
  const imageProperties = props.imageProperties;
26500
26513
  const imageProps = props;
26501
26514
  const { id } = imageProps;
@@ -26521,11 +26534,6 @@ var WeaveImageNode = class extends WeaveNode {
26521
26534
  if (this.isSelecting() && selectedNodes.includes(image)) return "grab";
26522
26535
  return "pointer";
26523
26536
  };
26524
- image.movedToContainer = () => {
26525
- const stage = this.instance.getStage();
26526
- const image$1 = stage.findOne(`#${id}`);
26527
- if (!image$1) return;
26528
- };
26529
26537
  if (this.config.cropMode.enabled) {
26530
26538
  image.triggerCrop = () => {
26531
26539
  this.triggerCrop(image, { cmdCtrl: { triggered: false } });
@@ -27237,8 +27245,6 @@ var WeaveImageNode = class extends WeaveNode {
27237
27245
  }
27238
27246
  onDestroy(nodeInstance) {
27239
27247
  const nodeId = nodeInstance.getAttrs().id ?? "";
27240
- const isMoveContainer = nodeInstance.getAttr("onMoveContainer");
27241
- nodeInstance.setAttr("onMoveContainer", void 0);
27242
27248
  const utilityLayer = this.instance.getUtilityLayer();
27243
27249
  const nodes = utilityLayer?.find(".cropMode") ?? [];
27244
27250
  nodes.forEach((n) => {
@@ -27248,12 +27254,6 @@ var WeaveImageNode = class extends WeaveNode {
27248
27254
  clearTimeout(this.imageTryoutIds[nodeId]);
27249
27255
  delete this.imageTryoutIds[nodeId];
27250
27256
  }
27251
- if (!isMoveContainer) {
27252
- delete this.imageSource[nodeId];
27253
- delete this.imageState[nodeId];
27254
- delete this.imageTryoutAttempts[nodeId];
27255
- delete this.imageFallback[nodeId];
27256
- }
27257
27257
  nodeInstance.destroy();
27258
27258
  }
27259
27259
  };
@@ -27800,7 +27800,6 @@ var WeaveFrameNode = class extends WeaveNode {
27800
27800
  delete cleanedAttrs.draggable;
27801
27801
  delete cleanedAttrs.onTargetEnter;
27802
27802
  delete cleanedAttrs.overridesMouseControl;
27803
- delete cleanedAttrs.onMoveContainer;
27804
27803
  delete cleanedAttrs.dragBoundFunc;
27805
27804
  return {
27806
27805
  key: realAttrs?.id ?? "",
@@ -28039,7 +28038,6 @@ var WeaveStrokeNode = class extends WeaveNode {
28039
28038
  delete cleanedAttrs.sceneFunc;
28040
28039
  delete cleanedAttrs.hitFunc;
28041
28040
  delete cleanedAttrs.overridesMouseControl;
28042
- delete cleanedAttrs.onMoveContainer;
28043
28041
  delete cleanedAttrs.dragBoundFunc;
28044
28042
  return {
28045
28043
  key: attrs.id ?? "",
@@ -29584,6 +29582,7 @@ var WeaveVideoNode = class extends WeaveNode {
29584
29582
  const videoIconGroup = video.findOne(`#${id}-video-icon-group`);
29585
29583
  if (!videoPlaceholder || !videoIconGroup) return;
29586
29584
  const realVideoPlaceholderURL = this.config.urlTransformer?.(videoProps.videoPlaceholderURL ?? "", video) ?? videoProps.videoPlaceholderURL;
29585
+ if (!this.videoPlaceholder) this.initialize();
29587
29586
  this.videoPlaceholder[id] = Konva.Util.createImageElement();
29588
29587
  this.videoPlaceholder[id].crossOrigin = this.config.crossOrigin;
29589
29588
  this.videoPlaceholder[id].src = realVideoPlaceholderURL;
@@ -31971,7 +31970,6 @@ var WeaveConnectorNode = class extends WeaveNode {
31971
31970
  delete cleanedAttrs.startInfoLoaded;
31972
31971
  delete cleanedAttrs.endInfoLoaded;
31973
31972
  delete cleanedAttrs.overridesMouseControl;
31974
- delete cleanedAttrs.onMoveContainer;
31975
31973
  delete cleanedAttrs.dragBoundFunc;
31976
31974
  return {
31977
31975
  key: attrs.id ?? "",
@@ -34430,7 +34428,7 @@ var WeaveImageToolAction = class extends WeaveAction {
34430
34428
  const dragProperties = this.instance.getDragProperties();
34431
34429
  if (dragProperties && dragId === WEAVE_IMAGE_TOOL_ACTION_NAME) {
34432
34430
  this.instance.getStage().setPointersPositions(e);
34433
- const position = getPositionRelativeToContainerOnPosition(this.instance);
34431
+ const position = this.instance.getStage().getRelativePointerPosition();
34434
34432
  if (!position) return;
34435
34433
  this.instance.triggerAction(WEAVE_IMAGE_TOOL_ACTION_NAME, {
34436
34434
  type: WEAVE_IMAGE_TOOL_UPLOAD_TYPE.IMAGE_URL,
@@ -34880,7 +34878,7 @@ var WeaveImagesToolAction = class extends WeaveAction {
34880
34878
  const dragProperties = this.instance.getDragProperties();
34881
34879
  if (dragProperties && dragId === WEAVE_IMAGES_TOOL_ACTION_NAME) {
34882
34880
  this.instance.getStage().setPointersPositions(e);
34883
- const position = getPositionRelativeToContainerOnPosition(this.instance);
34881
+ const position = this.instance.getStage().getRelativePointerPosition();
34884
34882
  if (!position) return;
34885
34883
  this.instance.triggerAction(WEAVE_IMAGES_TOOL_ACTION_NAME, {
34886
34884
  type: WEAVE_IMAGES_TOOL_UPLOAD_TYPE.IMAGE_URL,
@@ -36991,7 +36989,7 @@ var WeaveVideoToolAction = class extends WeaveAction {
36991
36989
  const dragProperties = this.instance.getDragProperties();
36992
36990
  if (dragProperties && dragId === VIDEO_TOOL_ACTION_NAME) {
36993
36991
  this.instance.getStage().setPointersPositions(e);
36994
- const position = getPositionRelativeToContainerOnPosition(this.instance);
36992
+ const position = this.instance.getStage().getRelativePointerPosition();
36995
36993
  this.instance.triggerAction(VIDEO_TOOL_ACTION_NAME, {
36996
36994
  videoId: dragProperties.videoId,
36997
36995
  videoParams: dragProperties.videoParams,
@@ -38299,13 +38297,12 @@ var WeaveStagePanningPlugin = class extends WeavePlugin {
38299
38297
  if (this.panEdgeTargets[e.target.getAttrs().id ?? ""] !== void 0) return;
38300
38298
  this.panEdgeTargets[e.target.getAttrs().id ?? ""] = e.target;
38301
38299
  if (this.stageScrollInterval !== void 0) return;
38300
+ const speed = this.config.edgePan.speed;
38302
38301
  this.stageScrollInterval = setInterval(() => {
38303
38302
  const pos = stage.getPointerPosition();
38304
- const offset = this.config.edgePanOffset;
38303
+ const offset = this.config.edgePan.offset;
38305
38304
  if (!pos) return;
38306
38305
  const { width, height } = stage.size();
38307
- const scale = stage.scaleX();
38308
- const speed = Math.max(this.config.edgePanMinSpeed, Math.min(this.config.edgePanMaxSpeed, this.config.edgePanSpeed / scale));
38309
38306
  let isNearLeft = false;
38310
38307
  let isNearRight = false;
38311
38308
  let isNearTop = false;
@@ -39315,7 +39312,11 @@ var WeaveUsersPresencePlugin = class extends WeavePlugin {
39315
39312
  const presenceInfo = userPresence[nodeId];
39316
39313
  if (this.config.getUser().id === presenceInfo.userId) continue;
39317
39314
  const nodeInstance = stage.findOne(`#${presenceInfo.nodeId}`);
39318
- if (nodeInstance) {
39315
+ if (!nodeInstance) continue;
39316
+ let parentId = nodeInstance.getParent()?.id() ?? "";
39317
+ const parent = nodeInstance.getParent();
39318
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
39319
+ if (nodeInstance && presenceInfo.parentId === parentId) {
39319
39320
  const newProps = {
39320
39321
  ...nodeInstance.getAttrs(),
39321
39322
  ...presenceInfo.attrs
@@ -39330,10 +39331,11 @@ var WeaveUsersPresencePlugin = class extends WeavePlugin {
39330
39331
  const store = this.instance.getStore();
39331
39332
  store.setAwarenessInfo(WEAVE_USER_PRESENCE_KEY, this.userPresence);
39332
39333
  }
39333
- setPresence(nodeId, attrs, forceUpdate = true) {
39334
+ setPresence(nodeId, parentId, attrs, forceUpdate = true) {
39334
39335
  const userInfo = this.config.getUser();
39335
39336
  this.userPresence[nodeId] = {
39336
39337
  userId: userInfo.id,
39338
+ parentId,
39337
39339
  nodeId,
39338
39340
  attrs
39339
39341
  };
@@ -40613,5 +40615,5 @@ var WeaveStageKeyboardMovePlugin = class extends WeavePlugin {
40613
40615
  };
40614
40616
 
40615
40617
  //#endregion
40616
- export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, CONNECTOR_TOOL_ACTION_NAME, CONNECTOR_TOOL_DEFAULT_CONFIG, CONNECTOR_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, ELLIPSE_TOOL_ACTION_NAME, ELLIPSE_TOOL_STATE, ERASER_TOOL_ACTION_NAME, ERASER_TOOL_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_DISTANCE_LINE_DEFAULT_CONFIG, GUIDE_ENTER_SNAPPING_TOLERANCE, GUIDE_EXIT_SNAPPING_TOLERANCE, GUIDE_HORIZONTAL_LINE_NAME, GUIDE_LINE_DEFAULT_CONFIG, GUIDE_LINE_DRAG_SNAPPING_THRESHOLD, GUIDE_LINE_NAME, GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD, GUIDE_ORIENTATION, GUIDE_VERTICAL_LINE_NAME, LINE_TOOL_ACTION_NAME, LINE_TOOL_DEFAULT_CONFIG, LINE_TOOL_STATE, MEASURE_TOOL_ACTION_NAME, MEASURE_TOOL_STATE, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NODE_SNAP_HORIZONTAL, NODE_SNAP_VERTICAL, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAGE_MINIMAP_DEFAULT_CONFIG, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, VIDEO_TOOL_ACTION_NAME, VIDEO_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_ARROW_TOOL_ACTION_NAME, WEAVE_ARROW_TOOL_STATE, WEAVE_COMMENTS_RENDERER_KEY, WEAVE_COMMENTS_TOOL_LAYER_ID, WEAVE_COMMENT_CREATE_ACTION, WEAVE_COMMENT_NODE_ACTION, WEAVE_COMMENT_NODE_DEFAULTS, WEAVE_COMMENT_NODE_TYPE, WEAVE_COMMENT_STATUS, WEAVE_COMMENT_TOOL_ACTION_NAME, WEAVE_COMMENT_TOOL_DEFAULT_CONFIG, WEAVE_COMMENT_TOOL_STATE, WEAVE_COMMENT_VIEW_ACTION, WEAVE_CONNECTOR_NODE_ANCHOR_ORIGIN, WEAVE_CONNECTOR_NODE_DECORATOR_TYPE, WEAVE_CONNECTOR_NODE_DEFAULT_CONFIG, WEAVE_CONNECTOR_NODE_LINE_ORIGIN, WEAVE_CONNECTOR_NODE_LINE_TYPE, WEAVE_CONNECTOR_NODE_TYPE, WEAVE_COPY_PASTE_CONFIG_DEFAULT, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_COPY_PASTE_PASTE_CATCHER_ID, WEAVE_COPY_PASTE_PASTE_MODES, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_DEFAULT_BACKGROUND_COLOR, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_CONFIG, WEAVE_GRID_DOT_TYPES, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGES_TOOL_ACTION_NAME, WEAVE_IMAGES_TOOL_DEFAULT_CONFIG, WEAVE_IMAGES_TOOL_STATE, WEAVE_IMAGES_TOOL_UPLOAD_TYPE, WEAVE_IMAGE_CROP_ANCHOR_POSITION, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_IMAGE_TOOL_ACTION_NAME, WEAVE_IMAGE_TOOL_CONFIG_DEFAULT, WEAVE_IMAGE_TOOL_STATE, WEAVE_IMAGE_TOOL_UPLOAD_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_DEFAULT_CONFIG, WEAVE_LINE_NODE_TYPE, WEAVE_MEASURE_NODE_DEFAULT_CONFIG, WEAVE_MEASURE_NODE_TYPE, WEAVE_MEASURE_TOOL_DEFAULT_CONFIG, WEAVE_NODES_DISTANCE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_EDGE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_LAYER_ID, WEAVE_NODES_SELECTION_DEFAULT_CONFIG, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_STAGE_DEFAULT_MODE, WEAVE_STAGE_DROP_AREA_KEY, WEAVE_STAGE_GRID_PLUGIN_KEY, WEAVE_STAGE_IMAGE_CROPPING_MODE, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_KEYBOARD_MOVE_ORIENTATION, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAGE_PANNING_THROTTLE_MS, WEAVE_STAGE_TEXT_EDITION_MODE, WEAVE_STAGE_ZOOM_DEFAULT_CONFIG, WEAVE_STAGE_ZOOM_KEY, WEAVE_STAGE_ZOOM_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_STROKE_SINGLE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_SINGLE_NODE_TIP_SIDE, WEAVE_STROKE_SINGLE_NODE_TIP_TYPE, WEAVE_STROKE_SINGLE_NODE_TYPE, WEAVE_STROKE_TOOL_ACTION_NAME, WEAVE_STROKE_TOOL_ACTION_NAME_ALIASES, WEAVE_STROKE_TOOL_DEFAULT_CONFIG, WEAVE_STROKE_TOOL_STATE, WEAVE_TEXT_NODE_DEFAULT_CONFIG, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_PRESENCE_CONFIG_DEFAULT_PROPS, WEAVE_USERS_PRESENCE_PLUGIN_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_PRESENCE_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveConnectorNode, WeaveConnectorToolAction, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImagesToolAction, WeaveLayerNode, WeaveLineNode, WeaveLineToolAction, WeaveMeasureNode, WeaveMeasureToolAction, WeaveMoveToolAction, WeaveNode, WeaveNodesDistanceSnappingPlugin, WeaveNodesEdgeSnappingPlugin, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveRenderer, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStore, WeaveStrokeNode, WeaveStrokeSingleNode, WeaveStrokeToolAction, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersPresencePlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, canComposite, clearContainerTargets, containerOverCursor, containsNodeDeep, defaultInitialState, downscaleImageFile, downscaleImageFromURL, getBoundingBox, getDownscaleRatio, getExportBoundingBox, getImageSizeFromFile, getJSONFromYjsBinary, getPositionRelativeToContainerOnPosition, getSelectedNodesMetadata, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, intersectArrays, isArray, isIOS, isInShadowDOM, isNodeInSelection, isObject, isServer, loadImageSource, mapJsonToYjsArray, mapJsonToYjsElements, mapJsonToYjsMap, memoize, mergeExceptArrays, moveNodeToContainer, moveNodeToContainerNT, resetScale, setupCanvasBackend, setupSkiaBackend, weavejsToYjsBinary };
40618
+ export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, CONNECTOR_TOOL_ACTION_NAME, CONNECTOR_TOOL_DEFAULT_CONFIG, CONNECTOR_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, ELLIPSE_TOOL_ACTION_NAME, ELLIPSE_TOOL_STATE, ERASER_TOOL_ACTION_NAME, ERASER_TOOL_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_DISTANCE_LINE_DEFAULT_CONFIG, GUIDE_ENTER_SNAPPING_TOLERANCE, GUIDE_EXIT_SNAPPING_TOLERANCE, GUIDE_HORIZONTAL_LINE_NAME, GUIDE_LINE_DEFAULT_CONFIG, GUIDE_LINE_DRAG_SNAPPING_THRESHOLD, GUIDE_LINE_NAME, GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD, GUIDE_ORIENTATION, GUIDE_VERTICAL_LINE_NAME, LINE_TOOL_ACTION_NAME, LINE_TOOL_DEFAULT_CONFIG, LINE_TOOL_STATE, MEASURE_TOOL_ACTION_NAME, MEASURE_TOOL_STATE, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NODE_SNAP_HORIZONTAL, NODE_SNAP_VERTICAL, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAGE_MINIMAP_DEFAULT_CONFIG, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, VIDEO_TOOL_ACTION_NAME, VIDEO_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_ARROW_TOOL_ACTION_NAME, WEAVE_ARROW_TOOL_STATE, WEAVE_COMMENTS_RENDERER_KEY, WEAVE_COMMENTS_TOOL_LAYER_ID, WEAVE_COMMENT_CREATE_ACTION, WEAVE_COMMENT_NODE_ACTION, WEAVE_COMMENT_NODE_DEFAULTS, WEAVE_COMMENT_NODE_TYPE, WEAVE_COMMENT_STATUS, WEAVE_COMMENT_TOOL_ACTION_NAME, WEAVE_COMMENT_TOOL_DEFAULT_CONFIG, WEAVE_COMMENT_TOOL_STATE, WEAVE_COMMENT_VIEW_ACTION, WEAVE_CONNECTOR_NODE_ANCHOR_ORIGIN, WEAVE_CONNECTOR_NODE_DECORATOR_TYPE, WEAVE_CONNECTOR_NODE_DEFAULT_CONFIG, WEAVE_CONNECTOR_NODE_LINE_ORIGIN, WEAVE_CONNECTOR_NODE_LINE_TYPE, WEAVE_CONNECTOR_NODE_TYPE, WEAVE_COPY_PASTE_CONFIG_DEFAULT, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_COPY_PASTE_PASTE_CATCHER_ID, WEAVE_COPY_PASTE_PASTE_MODES, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_DEFAULT_BACKGROUND_COLOR, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_CONFIG, WEAVE_GRID_DOT_TYPES, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGES_TOOL_ACTION_NAME, WEAVE_IMAGES_TOOL_DEFAULT_CONFIG, WEAVE_IMAGES_TOOL_STATE, WEAVE_IMAGES_TOOL_UPLOAD_TYPE, WEAVE_IMAGE_CROP_ANCHOR_POSITION, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_IMAGE_TOOL_ACTION_NAME, WEAVE_IMAGE_TOOL_CONFIG_DEFAULT, WEAVE_IMAGE_TOOL_STATE, WEAVE_IMAGE_TOOL_UPLOAD_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_DEFAULT_CONFIG, WEAVE_LINE_NODE_TYPE, WEAVE_MEASURE_NODE_DEFAULT_CONFIG, WEAVE_MEASURE_NODE_TYPE, WEAVE_MEASURE_TOOL_DEFAULT_CONFIG, WEAVE_NODES_DISTANCE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_EDGE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_LAYER_ID, WEAVE_NODES_SELECTION_DEFAULT_CONFIG, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_STAGE_DEFAULT_MODE, WEAVE_STAGE_DROP_AREA_KEY, WEAVE_STAGE_GRID_PLUGIN_KEY, WEAVE_STAGE_IMAGE_CROPPING_MODE, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_KEYBOARD_MOVE_ORIENTATION, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAGE_PANNING_THROTTLE_MS, WEAVE_STAGE_TEXT_EDITION_MODE, WEAVE_STAGE_ZOOM_DEFAULT_CONFIG, WEAVE_STAGE_ZOOM_KEY, WEAVE_STAGE_ZOOM_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_STROKE_SINGLE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_SINGLE_NODE_TIP_SIDE, WEAVE_STROKE_SINGLE_NODE_TIP_TYPE, WEAVE_STROKE_SINGLE_NODE_TYPE, WEAVE_STROKE_TOOL_ACTION_NAME, WEAVE_STROKE_TOOL_ACTION_NAME_ALIASES, WEAVE_STROKE_TOOL_DEFAULT_CONFIG, WEAVE_STROKE_TOOL_STATE, WEAVE_TEXT_NODE_DEFAULT_CONFIG, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_PRESENCE_CONFIG_DEFAULT_PROPS, WEAVE_USERS_PRESENCE_PLUGIN_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_PRESENCE_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveConnectorNode, WeaveConnectorToolAction, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImagesToolAction, WeaveLayerNode, WeaveLineNode, WeaveLineToolAction, WeaveMeasureNode, WeaveMeasureToolAction, WeaveMoveToolAction, WeaveNode, WeaveNodesDistanceSnappingPlugin, WeaveNodesEdgeSnappingPlugin, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveRenderer, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStore, WeaveStrokeNode, WeaveStrokeSingleNode, WeaveStrokeToolAction, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersPresencePlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, canComposite, clearContainerTargets, containerOverCursor, containsNodeDeep, defaultInitialState, downscaleImageFile, downscaleImageFromURL, getBoundingBox, getDownscaleRatio, getExportBoundingBox, getImageSizeFromFile, getJSONFromYjsBinary, getSelectedNodesMetadata, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, intersectArrays, isArray, isIOS, isInShadowDOM, isNodeInSelection, isObject, isServer, loadImageSource, mapJsonToYjsArray, mapJsonToYjsElements, mapJsonToYjsMap, memoize, mergeExceptArrays, moveNodeToContainer, moveNodeToContainerNT, resetScale, setupCanvasBackend, setupSkiaBackend, weavejsToYjsBinary };
40617
40619
  //# sourceMappingURL=types.js.map