@inditextech/weave-sdk 3.8.0 → 3.8.1-SNAPSHOT.194.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/sdk.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 ?? "",
@@ -21386,45 +21402,24 @@ var WeaveTargetingManager = class {
21386
21402
  }
21387
21403
  getMousePointer(point) {
21388
21404
  this.logger.debug({ point }, "getMousePointer");
21389
- const stage = this.instance.getStage();
21390
21405
  const mainLayer = this.instance.getMainLayer();
21391
21406
  let relativeMousePointer = typeof point !== "undefined" ? point : mainLayer?.getRelativePointerPosition() ?? {
21392
21407
  x: 0,
21393
21408
  y: 0
21394
21409
  };
21395
- let measureContainer = mainLayer;
21396
- let container = mainLayer;
21397
21410
  const utilityLayer = this.instance.getUtilityLayer();
21398
21411
  if (utilityLayer) utilityLayer.visible(false);
21412
+ let containerAlt = containerOverCursor(this.instance, [], relativeMousePointer);
21413
+ if (!containerAlt) containerAlt = this.instance.getMainLayer();
21399
21414
  const nodesSelection = this.instance.getPlugin("nodesSelection");
21400
21415
  if (nodesSelection) nodesSelection.getTransformer().visible(false);
21401
- const dummyRect = new Konva.Rect({
21402
- width: 10,
21403
- height: 10,
21404
- x: relativeMousePointer.x,
21405
- y: relativeMousePointer.y
21406
- });
21407
- mainLayer?.add(dummyRect);
21408
- const intersectedNode = this.nodeIntersectsContainerElement(dummyRect);
21409
- if (intersectedNode) {
21410
- const containerOfNode = stage.findOne(`#${intersectedNode.getAttrs().containerId}`);
21411
- if (containerOfNode) {
21412
- container = intersectedNode;
21413
- measureContainer = containerOfNode;
21414
- }
21415
- }
21416
- if (typeof point === "undefined" && container?.getAttrs().nodeType !== "layer") relativeMousePointer = measureContainer?.getRelativePointerPosition() ?? relativeMousePointer;
21417
- if (typeof point === "undefined" && container?.getAttrs().nodeType === "layer") relativeMousePointer = measureContainer?.getRelativePointerPosition() ?? {
21418
- x: 0,
21419
- y: 0
21420
- };
21416
+ relativeMousePointer = containerAlt?.getRelativePointerPosition() ?? relativeMousePointer;
21421
21417
  if (utilityLayer) utilityLayer.visible(true);
21422
21418
  if (nodesSelection) nodesSelection.getTransformer().visible(true);
21423
- dummyRect.destroy();
21424
21419
  return {
21425
21420
  mousePoint: relativeMousePointer,
21426
- container,
21427
- measureContainer
21421
+ container: containerAlt,
21422
+ measureContainer: containerAlt
21428
21423
  };
21429
21424
  }
21430
21425
  getMousePointerRelativeToContainer(container) {
@@ -22013,7 +22008,7 @@ var WeaveRegisterManager = class {
22013
22008
 
22014
22009
  //#endregion
22015
22010
  //#region package.json
22016
- var version = "3.8.0";
22011
+ var version = "3.8.1-SNAPSHOT.194.1";
22017
22012
 
22018
22013
  //#endregion
22019
22014
  //#region src/managers/setup.ts
@@ -23453,7 +23448,7 @@ var Weave = class {
23453
23448
  this.moduleLogger.info("Start instance");
23454
23449
  if (!this.isServerSide()) {
23455
23450
  this.eventsController = new AbortController();
23456
- if (!window.weave) window.weave = this;
23451
+ window.weave = this;
23457
23452
  }
23458
23453
  this.emitEvent("onRoomLoaded", false);
23459
23454
  this.status = WEAVE_INSTANCE_STATUS.STARTING;
@@ -24444,7 +24439,6 @@ var WeaveLayerNode = class extends WeaveNode {
24444
24439
  delete cleanedAttrs.mutexUserId;
24445
24440
  delete cleanedAttrs.draggable;
24446
24441
  delete cleanedAttrs.overridesMouseControl;
24447
- delete cleanedAttrs.onMoveContainer;
24448
24442
  delete cleanedAttrs.dragBoundFunc;
24449
24443
  return {
24450
24444
  key: attrs.id ?? "",
@@ -24529,7 +24523,6 @@ var WeaveGroupNode = class extends WeaveNode {
24529
24523
  delete cleanedAttrs.mutexUserId;
24530
24524
  delete cleanedAttrs.draggable;
24531
24525
  delete cleanedAttrs.overridesMouseControl;
24532
- delete cleanedAttrs.onMoveContainer;
24533
24526
  delete cleanedAttrs.dragBoundFunc;
24534
24527
  return {
24535
24528
  key: attrs.id ?? "",
@@ -25318,7 +25311,6 @@ var WeaveTextNode = class extends WeaveNode {
25318
25311
  delete cleanedAttrs.measureMultilineText;
25319
25312
  delete cleanedAttrs.overridesMouseControl;
25320
25313
  delete cleanedAttrs.shouldUpdateOnTransform;
25321
- delete cleanedAttrs.onMoveContainer;
25322
25314
  delete cleanedAttrs.dragBoundFunc;
25323
25315
  return {
25324
25316
  key: attrs.id ?? "",
@@ -25710,13 +25702,14 @@ const WEAVE_IMAGE_CROP_ANCHOR_POSITION = {
25710
25702
  ["BOTTOM_CENTER"]: "bottom-center"
25711
25703
  };
25712
25704
  const WEAVE_IMAGE_DEFAULT_CONFIG = {
25705
+ cleanup: { intervalMs: 60 * 1e3 },
25713
25706
  performance: { cache: { enabled: false } },
25714
25707
  style: {
25715
25708
  placeholder: { fill: "#aaaaaa" },
25716
25709
  cursor: { loading: "wait" }
25717
25710
  },
25718
25711
  imageLoading: {
25719
- maxRetryAttempts: 15,
25712
+ maxRetryAttempts: 3,
25720
25713
  retryDelayMs: 2e3
25721
25714
  },
25722
25715
  crossOrigin: "anonymous",
@@ -26409,6 +26402,25 @@ var WeaveImageNode = class extends WeaveNode {
26409
26402
  this.imageTryoutAttempts = {};
26410
26403
  this.imageFallback = {};
26411
26404
  }
26405
+ setupNotUsedImagesCleanup() {
26406
+ const cleanupHandler = () => {
26407
+ this.notUsedImagesCleanup = null;
26408
+ const stage = this.instance.getStage();
26409
+ const nodesIds = Object.keys(this.imageState);
26410
+ for (const nodeId of nodesIds) {
26411
+ const node = stage.findOne(`#${nodeId}`);
26412
+ if (!node) {
26413
+ delete this.imageSource[nodeId];
26414
+ delete this.imageState[nodeId];
26415
+ delete this.imageTryoutAttempts[nodeId];
26416
+ delete this.imageFallback[nodeId];
26417
+ }
26418
+ }
26419
+ this.setupNotUsedImagesCleanup();
26420
+ };
26421
+ const bindedCleanupHandler = cleanupHandler.bind(this);
26422
+ if (!this.notUsedImagesCleanup) setTimeout(bindedCleanupHandler, this.config.cleanup.intervalMs);
26423
+ }
26412
26424
  preloadCursors() {
26413
26425
  return new Promise((resolve) => {
26414
26426
  (async () => {
@@ -26485,6 +26497,7 @@ var WeaveImageNode = class extends WeaveNode {
26485
26497
  this.instance.resolveAsyncElement(nodeId, WEAVE_IMAGE_NODE_TYPE);
26486
26498
  }
26487
26499
  onRender(props) {
26500
+ this.setupNotUsedImagesCleanup();
26488
26501
  const imageProperties = props.imageProperties;
26489
26502
  const imageProps = props;
26490
26503
  const { id } = imageProps;
@@ -26510,11 +26523,6 @@ var WeaveImageNode = class extends WeaveNode {
26510
26523
  if (this.isSelecting() && selectedNodes.includes(image)) return "grab";
26511
26524
  return "pointer";
26512
26525
  };
26513
- image.movedToContainer = () => {
26514
- const stage = this.instance.getStage();
26515
- const image$1 = stage.findOne(`#${id}`);
26516
- if (!image$1) return;
26517
- };
26518
26526
  if (this.config.cropMode.enabled) {
26519
26527
  image.triggerCrop = () => {
26520
26528
  this.triggerCrop(image, { cmdCtrl: { triggered: false } });
@@ -27226,8 +27234,6 @@ var WeaveImageNode = class extends WeaveNode {
27226
27234
  }
27227
27235
  onDestroy(nodeInstance) {
27228
27236
  const nodeId = nodeInstance.getAttrs().id ?? "";
27229
- const isMoveContainer = nodeInstance.getAttr("onMoveContainer");
27230
- nodeInstance.setAttr("onMoveContainer", void 0);
27231
27237
  const utilityLayer = this.instance.getUtilityLayer();
27232
27238
  const nodes = utilityLayer?.find(".cropMode") ?? [];
27233
27239
  nodes.forEach((n) => {
@@ -27237,12 +27243,6 @@ var WeaveImageNode = class extends WeaveNode {
27237
27243
  clearTimeout(this.imageTryoutIds[nodeId]);
27238
27244
  delete this.imageTryoutIds[nodeId];
27239
27245
  }
27240
- if (!isMoveContainer) {
27241
- delete this.imageSource[nodeId];
27242
- delete this.imageState[nodeId];
27243
- delete this.imageTryoutAttempts[nodeId];
27244
- delete this.imageFallback[nodeId];
27245
- }
27246
27246
  nodeInstance.destroy();
27247
27247
  }
27248
27248
  };
@@ -27789,7 +27789,6 @@ var WeaveFrameNode = class extends WeaveNode {
27789
27789
  delete cleanedAttrs.draggable;
27790
27790
  delete cleanedAttrs.onTargetEnter;
27791
27791
  delete cleanedAttrs.overridesMouseControl;
27792
- delete cleanedAttrs.onMoveContainer;
27793
27792
  delete cleanedAttrs.dragBoundFunc;
27794
27793
  return {
27795
27794
  key: realAttrs?.id ?? "",
@@ -28028,7 +28027,6 @@ var WeaveStrokeNode = class extends WeaveNode {
28028
28027
  delete cleanedAttrs.sceneFunc;
28029
28028
  delete cleanedAttrs.hitFunc;
28030
28029
  delete cleanedAttrs.overridesMouseControl;
28031
- delete cleanedAttrs.onMoveContainer;
28032
28030
  delete cleanedAttrs.dragBoundFunc;
28033
28031
  return {
28034
28032
  key: attrs.id ?? "",
@@ -29573,6 +29571,7 @@ var WeaveVideoNode = class extends WeaveNode {
29573
29571
  const videoIconGroup = video.findOne(`#${id}-video-icon-group`);
29574
29572
  if (!videoPlaceholder || !videoIconGroup) return;
29575
29573
  const realVideoPlaceholderURL = this.config.urlTransformer?.(videoProps.videoPlaceholderURL ?? "", video) ?? videoProps.videoPlaceholderURL;
29574
+ if (!this.videoPlaceholder) this.initialize();
29576
29575
  this.videoPlaceholder[id] = Konva.Util.createImageElement();
29577
29576
  this.videoPlaceholder[id].crossOrigin = this.config.crossOrigin;
29578
29577
  this.videoPlaceholder[id].src = realVideoPlaceholderURL;
@@ -31960,7 +31959,6 @@ var WeaveConnectorNode = class extends WeaveNode {
31960
31959
  delete cleanedAttrs.startInfoLoaded;
31961
31960
  delete cleanedAttrs.endInfoLoaded;
31962
31961
  delete cleanedAttrs.overridesMouseControl;
31963
- delete cleanedAttrs.onMoveContainer;
31964
31962
  delete cleanedAttrs.dragBoundFunc;
31965
31963
  return {
31966
31964
  key: attrs.id ?? "",
@@ -34419,7 +34417,7 @@ var WeaveImageToolAction = class extends WeaveAction {
34419
34417
  const dragProperties = this.instance.getDragProperties();
34420
34418
  if (dragProperties && dragId === WEAVE_IMAGE_TOOL_ACTION_NAME) {
34421
34419
  this.instance.getStage().setPointersPositions(e);
34422
- const position = getPositionRelativeToContainerOnPosition(this.instance);
34420
+ const position = this.instance.getStage().getRelativePointerPosition();
34423
34421
  if (!position) return;
34424
34422
  this.instance.triggerAction(WEAVE_IMAGE_TOOL_ACTION_NAME, {
34425
34423
  type: WEAVE_IMAGE_TOOL_UPLOAD_TYPE.IMAGE_URL,
@@ -34869,7 +34867,7 @@ var WeaveImagesToolAction = class extends WeaveAction {
34869
34867
  const dragProperties = this.instance.getDragProperties();
34870
34868
  if (dragProperties && dragId === WEAVE_IMAGES_TOOL_ACTION_NAME) {
34871
34869
  this.instance.getStage().setPointersPositions(e);
34872
- const position = getPositionRelativeToContainerOnPosition(this.instance);
34870
+ const position = this.instance.getStage().getRelativePointerPosition();
34873
34871
  if (!position) return;
34874
34872
  this.instance.triggerAction(WEAVE_IMAGES_TOOL_ACTION_NAME, {
34875
34873
  type: WEAVE_IMAGES_TOOL_UPLOAD_TYPE.IMAGE_URL,
@@ -36980,7 +36978,7 @@ var WeaveVideoToolAction = class extends WeaveAction {
36980
36978
  const dragProperties = this.instance.getDragProperties();
36981
36979
  if (dragProperties && dragId === VIDEO_TOOL_ACTION_NAME) {
36982
36980
  this.instance.getStage().setPointersPositions(e);
36983
- const position = getPositionRelativeToContainerOnPosition(this.instance);
36981
+ const position = this.instance.getStage().getRelativePointerPosition();
36984
36982
  this.instance.triggerAction(VIDEO_TOOL_ACTION_NAME, {
36985
36983
  videoId: dragProperties.videoId,
36986
36984
  videoParams: dragProperties.videoParams,
@@ -38242,13 +38240,12 @@ var WeaveStagePanningPlugin = class extends WeavePlugin {
38242
38240
  if (this.panEdgeTargets[e.target.getAttrs().id ?? ""] !== void 0) return;
38243
38241
  this.panEdgeTargets[e.target.getAttrs().id ?? ""] = e.target;
38244
38242
  if (this.stageScrollInterval !== void 0) return;
38243
+ const speed = this.config.edgePan.speed;
38245
38244
  this.stageScrollInterval = setInterval(() => {
38246
38245
  const pos = stage.getPointerPosition();
38247
- const offset = this.config.edgePanOffset;
38246
+ const offset = this.config.edgePan.offset;
38248
38247
  if (!pos) return;
38249
38248
  const { width, height } = stage.size();
38250
- const scale = stage.scaleX();
38251
- const speed = Math.max(this.config.edgePanMinSpeed, Math.min(this.config.edgePanMaxSpeed, this.config.edgePanSpeed / scale));
38252
38249
  let isNearLeft = false;
38253
38250
  let isNearRight = false;
38254
38251
  let isNearTop = false;
@@ -39258,7 +39255,11 @@ var WeaveUsersPresencePlugin = class extends WeavePlugin {
39258
39255
  const presenceInfo = userPresence[nodeId];
39259
39256
  if (this.config.getUser().id === presenceInfo.userId) continue;
39260
39257
  const nodeInstance = stage.findOne(`#${presenceInfo.nodeId}`);
39261
- if (nodeInstance) {
39258
+ if (!nodeInstance) continue;
39259
+ let parentId = nodeInstance.getParent()?.id() ?? "";
39260
+ const parent = nodeInstance.getParent();
39261
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
39262
+ if (nodeInstance && presenceInfo.parentId === parentId) {
39262
39263
  const newProps = {
39263
39264
  ...nodeInstance.getAttrs(),
39264
39265
  ...presenceInfo.attrs
@@ -39273,10 +39274,11 @@ var WeaveUsersPresencePlugin = class extends WeavePlugin {
39273
39274
  const store = this.instance.getStore();
39274
39275
  store.setAwarenessInfo(WEAVE_USER_PRESENCE_KEY, this.userPresence);
39275
39276
  }
39276
- setPresence(nodeId, attrs, forceUpdate = true) {
39277
+ setPresence(nodeId, parentId, attrs, forceUpdate = true) {
39277
39278
  const userInfo = this.config.getUser();
39278
39279
  this.userPresence[nodeId] = {
39279
39280
  userId: userInfo.id,
39281
+ parentId,
39280
39282
  nodeId,
39281
39283
  attrs
39282
39284
  };
@@ -40602,4 +40604,4 @@ function getJSONFromYjsBinary(actualState) {
40602
40604
  }
40603
40605
 
40604
40606
  //#endregion
40605
- 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, weavejsToYjsBinary };
40607
+ 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, weavejsToYjsBinary };