@inditextech/weave-sdk 0.61.0 → 0.62.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.cjs CHANGED
@@ -18009,7 +18009,23 @@ const WEAVE_NODES_SELECTION_DEFAULT_CONFIG = {
18009
18009
  },
18010
18010
  behaviors: {
18011
18011
  singleSelection: { enabled: true },
18012
- multipleSelection: { enabled: false }
18012
+ multipleSelection: { enabled: false },
18013
+ onMultipleSelection: () => {
18014
+ return {
18015
+ resizeEnabled: true,
18016
+ rotateEnabled: true,
18017
+ enabledAnchors: [
18018
+ "top-left",
18019
+ "top-center",
18020
+ "top-right",
18021
+ "middle-right",
18022
+ "middle-left",
18023
+ "bottom-left",
18024
+ "bottom-center",
18025
+ "bottom-right"
18026
+ ]
18027
+ };
18028
+ }
18013
18029
  }
18014
18030
  };
18015
18031
 
@@ -18208,8 +18224,12 @@ function getSelectedNodesMetadata(transformer) {
18208
18224
  nodes
18209
18225
  };
18210
18226
  }
18211
- function getTargetAndSkipNodes(instance, e) {
18227
+ function getTargetAndSkipNodes(instance, e, forceTransformer = false) {
18212
18228
  const nodesSelectionPlugin = instance.getPlugin("nodesSelection");
18229
+ if (!nodesSelectionPlugin) return {
18230
+ targetNode: void 0,
18231
+ skipNodes: []
18232
+ };
18213
18233
  let skipNodes = [];
18214
18234
  let node = void 0;
18215
18235
  if (e.type === "dragmove" && nodesSelectionPlugin && nodesSelectionPlugin.getTransformer().nodes().length === 1) {
@@ -18221,12 +18241,13 @@ function getTargetAndSkipNodes(instance, e) {
18221
18241
  node = nodesSelectionPlugin.getTransformer();
18222
18242
  skipNodes = [...nodes];
18223
18243
  }
18224
- if (e.type === "transform") {
18244
+ if (e.type === "transform" && nodesSelectionPlugin) {
18225
18245
  node = e.target;
18226
18246
  skipNodes.push(node.getAttrs().id ?? "");
18247
+ skipNodes.push(...nodesSelectionPlugin.getTransformer().nodes().map((node$1) => node$1.getAttrs().id ?? ""));
18227
18248
  }
18228
18249
  return {
18229
- targetNode: node,
18250
+ targetNode: forceTransformer ? nodesSelectionPlugin.getTransformer() : node,
18230
18251
  skipNodes
18231
18252
  };
18232
18253
  }
@@ -18860,7 +18881,7 @@ const WEAVE_NODES_EDGE_SNAPPING_PLUGIN_KEY = "nodesEdgeSnapping";
18860
18881
  const GUIDE_LINE_NAME = "guide-edge-snapping-line";
18861
18882
  const GUIDE_LINE_DEFAULT_CONFIG = {
18862
18883
  stroke: "#ff0000",
18863
- strokeWidth: 1,
18884
+ strokeWidth: .5,
18864
18885
  dash: []
18865
18886
  };
18866
18887
  const GUIDE_LINE_DRAG_SNAPPING_THRESHOLD = 3;
@@ -18883,7 +18904,7 @@ const GUIDE_VERTICAL_LINE_NAME = "guide-distance-snapping-vertical-line";
18883
18904
  const GUIDE_DISTANCE_LINE_DEFAULT_CONFIG = {
18884
18905
  line: {
18885
18906
  stroke: "#E12D3C",
18886
- strokeWidth: 1
18907
+ strokeWidth: .5
18887
18908
  },
18888
18909
  label: {
18889
18910
  linePadding: 10,
@@ -19516,7 +19537,7 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
19516
19537
  this.stopPanLoop();
19517
19538
  this.tr.nodes([...selectedNodes]);
19518
19539
  this.handleBehaviors();
19519
- this.triggerSelectedNodesEvent();
19540
+ this.handleMultipleSelectionBehavior();
19520
19541
  stage.container().tabIndex = 1;
19521
19542
  stage.container().focus();
19522
19543
  });
@@ -19527,6 +19548,12 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
19527
19548
  this.syncSelection();
19528
19549
  });
19529
19550
  }
19551
+ handleMultipleSelectionBehavior() {
19552
+ if (this.tr.nodes().length > 1 && this.config.behaviors?.onMultipleSelection) {
19553
+ const selectionBehavior = this.config.behaviors?.onMultipleSelection?.(this.tr.nodes());
19554
+ this.tr.setAttrs(selectionBehavior);
19555
+ }
19556
+ }
19530
19557
  syncSelection() {
19531
19558
  const newSelectedNodes = [];
19532
19559
  const actualSelectedNodes = this.tr.nodes();
@@ -19606,6 +19633,7 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
19606
19633
  areNodesSelected = true;
19607
19634
  }
19608
19635
  this.handleBehaviors();
19636
+ this.handleMultipleSelectionBehavior();
19609
19637
  if (areNodesSelected) {
19610
19638
  stage.container().tabIndex = 1;
19611
19639
  stage.container().focus();
@@ -22021,7 +22049,7 @@ var WeaveRegisterManager = class {
22021
22049
 
22022
22050
  //#endregion
22023
22051
  //#region package.json
22024
- var version = "0.61.0";
22052
+ var version = "0.62.1";
22025
22053
 
22026
22054
  //#endregion
22027
22055
  //#region src/managers/setup.ts
@@ -30575,7 +30603,7 @@ var WeaveNodesEdgeSnappingPlugin = class extends WeavePlugin {
30575
30603
  if (!utilityLayer) return;
30576
30604
  const { targetNode: node, skipNodes } = getTargetAndSkipNodes(this.instance, e);
30577
30605
  if (typeof node === "undefined") return;
30578
- const nodeParent = this.instance.getNodeContainer(node);
30606
+ const nodeParent = this.getSelectionParentNode(node);
30579
30607
  if (nodeParent === null) return;
30580
30608
  const stage = this.instance.getStage();
30581
30609
  const visibleNodes = getVisibleNodes(this.instance, stage, nodeParent, skipNodes, this.instance.getMainLayer());
@@ -30638,6 +30666,15 @@ var WeaveNodesEdgeSnappingPlugin = class extends WeavePlugin {
30638
30666
  }
30639
30667
  }
30640
30668
  }
30669
+ getSelectionParentNode(node) {
30670
+ let nodeParent = null;
30671
+ const nodesSelectionPlugin = this.instance.getPlugin("nodesSelection");
30672
+ if (nodesSelectionPlugin && nodesSelectionPlugin.getTransformer().nodes().length > 1) {
30673
+ if (nodesSelectionPlugin) nodeParent = this.instance.getNodeContainer(nodesSelectionPlugin.getTransformer().nodes()[0]);
30674
+ }
30675
+ if (nodesSelectionPlugin && nodesSelectionPlugin.getTransformer().nodes().length === 1) nodeParent = this.instance.getNodeContainer(node);
30676
+ return nodeParent;
30677
+ }
30641
30678
  cleanupGuidelines() {
30642
30679
  const utilityLayer = this.instance.getUtilityLayer();
30643
30680
  if (!this.enabled) return;
@@ -30738,7 +30775,7 @@ var WeaveNodesEdgeSnappingPlugin = class extends WeavePlugin {
30738
30775
  lineGuideStops.vertical.forEach((lineGuide) => {
30739
30776
  itemBounds.vertical.forEach((itemBound) => {
30740
30777
  const diff = Math.abs(lineGuide - itemBound.guide);
30741
- if (diff < this.dragSnappingThreshold && !resultMapV.has(itemBound.nodeId)) {
30778
+ if (diff < this.dragSnappingThreshold && !resultMapV.has(`${itemBound.snap}-${itemBound.offset}`) && type === "transform" || diff < this.dragSnappingThreshold && !resultMapV.has(itemBound.nodeId) && type !== "transform") {
30742
30779
  const guide = {
30743
30780
  nodeId: itemBound.nodeId,
30744
30781
  lineGuide,
@@ -30746,7 +30783,8 @@ var WeaveNodesEdgeSnappingPlugin = class extends WeavePlugin {
30746
30783
  snap: itemBound.snap,
30747
30784
  offset: itemBound.offset
30748
30785
  };
30749
- resultMapV.set(itemBound.nodeId, guide);
30786
+ if (type === "transform") resultMapV.set(`${itemBound.snap}-${itemBound.offset}`, guide);
30787
+ else resultMapV.set(itemBound.nodeId, guide);
30750
30788
  resultV.push(guide);
30751
30789
  }
30752
30790
  });
@@ -30754,7 +30792,7 @@ var WeaveNodesEdgeSnappingPlugin = class extends WeavePlugin {
30754
30792
  lineGuideStops.horizontal.forEach((lineGuide) => {
30755
30793
  itemBounds.horizontal.forEach((itemBound) => {
30756
30794
  const diff = Math.abs(lineGuide - itemBound.guide);
30757
- if (diff < this.dragSnappingThreshold && !resultMapH.has(itemBound.nodeId)) {
30795
+ if (diff < this.dragSnappingThreshold && !resultMapH.has(`${itemBound.snap}-${itemBound.offset}`) && type === "transform" || diff < this.dragSnappingThreshold && !resultMapH.has(itemBound.nodeId) && type !== "transform") {
30758
30796
  const guide = {
30759
30797
  nodeId: itemBound.nodeId,
30760
30798
  lineGuide,
@@ -30762,7 +30800,8 @@ var WeaveNodesEdgeSnappingPlugin = class extends WeavePlugin {
30762
30800
  snap: itemBound.snap,
30763
30801
  offset: itemBound.offset
30764
30802
  };
30765
- resultMapH.set(itemBound.nodeId, guide);
30803
+ if (type === "transform") resultMapH.set(`${itemBound.snap}-${itemBound.offset}`, guide);
30804
+ else resultMapH.set(itemBound.nodeId, guide);
30766
30805
  resultH.push(guide);
30767
30806
  }
30768
30807
  });
@@ -30816,41 +30855,61 @@ var WeaveNodesEdgeSnappingPlugin = class extends WeavePlugin {
30816
30855
  const utilityLayer = this.instance.getUtilityLayer();
30817
30856
  if (utilityLayer) guides.forEach((lg) => {
30818
30857
  if (lg.orientation === GUIDE_ORIENTATION.HORIZONTAL) {
30858
+ const transform = stage.getAbsoluteTransform().copy().invert();
30859
+ const left = transform.point({
30860
+ x: 0,
30861
+ y: 0
30862
+ });
30863
+ const right = transform.point({
30864
+ x: stage.width(),
30865
+ y: 0
30866
+ });
30819
30867
  const line = new konva.default.Line({
30820
30868
  ...this.guideLineConfig,
30821
30869
  strokeWidth: (this.guideLineConfig.strokeWidth ?? GUIDE_LINE_DEFAULT_CONFIG.strokeWidth) / stage.scaleX(),
30870
+ strokeScaleEnabled: true,
30822
30871
  dash: this.guideLineConfig.dash?.map((e) => e / stage.scaleX()),
30823
30872
  points: [
30824
- -6e3,
30873
+ left.x,
30825
30874
  0,
30826
- 6e3,
30875
+ right.x,
30827
30876
  0
30828
30877
  ],
30829
30878
  name: GUIDE_LINE_NAME
30830
30879
  });
30831
30880
  utilityLayer.add(line);
30832
30881
  line.absolutePosition({
30833
- x: 0,
30882
+ x: stage.x(),
30834
30883
  y: lg.lineGuide
30835
30884
  });
30836
30885
  }
30837
30886
  if (lg.orientation === GUIDE_ORIENTATION.VERTICAL) {
30887
+ const transform = stage.getAbsoluteTransform().copy().invert();
30888
+ const top = transform.point({
30889
+ x: 0,
30890
+ y: 0
30891
+ });
30892
+ const bottom = transform.point({
30893
+ x: 0,
30894
+ y: stage.height()
30895
+ });
30838
30896
  const line = new konva.default.Line({
30839
30897
  ...this.guideLineConfig,
30840
30898
  strokeWidth: (this.guideLineConfig.strokeWidth ?? GUIDE_LINE_DEFAULT_CONFIG.strokeWidth) / stage.scaleX(),
30899
+ strokeScaleEnabled: true,
30841
30900
  dash: this.guideLineConfig.dash?.map((e) => e / stage.scaleX()),
30842
30901
  points: [
30843
30902
  0,
30844
- -6e3,
30903
+ top.y,
30845
30904
  0,
30846
- 6e3
30905
+ bottom.y
30847
30906
  ],
30848
30907
  name: GUIDE_LINE_NAME
30849
30908
  });
30850
30909
  utilityLayer.add(line);
30851
30910
  line.absolutePosition({
30852
30911
  x: lg.lineGuide,
30853
- y: 0
30912
+ y: stage.y()
30854
30913
  });
30855
30914
  }
30856
30915
  });
@@ -30900,9 +30959,9 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
30900
30959
  const utilityLayer = this.instance.getUtilityLayer();
30901
30960
  if (!this.enabled) return;
30902
30961
  if (!utilityLayer) return;
30903
- const { targetNode: node, skipNodes } = getTargetAndSkipNodes(this.instance, e);
30962
+ const { targetNode: node, skipNodes } = getTargetAndSkipNodes(this.instance, e, true);
30904
30963
  if (typeof node === "undefined") return;
30905
- const nodeParent = this.instance.getNodeContainer(node);
30964
+ const nodeParent = this.getSelectionParentNode();
30906
30965
  if (nodeParent === null) return;
30907
30966
  const stage = this.instance.getStage();
30908
30967
  this.referenceLayer = nodeParent;
@@ -30919,12 +30978,42 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
30919
30978
  }
30920
30979
  getBoxClientRect(node) {
30921
30980
  const stage = this.instance.getStage();
30922
- return node.getClientRect({
30981
+ const realNode = node;
30982
+ if (node instanceof konva.default.Transformer) {
30983
+ let minX = Infinity;
30984
+ let minY = Infinity;
30985
+ let maxX = -Infinity;
30986
+ let maxY = -Infinity;
30987
+ node.nodes().forEach((node$1) => {
30988
+ const box = node$1.getClientRect({
30989
+ relativeTo: stage,
30990
+ skipStroke: true,
30991
+ skipShadow: true
30992
+ });
30993
+ minX = Math.min(minX, box.x);
30994
+ minY = Math.min(minY, box.y);
30995
+ maxX = Math.max(maxX, box.x + box.width);
30996
+ maxY = Math.max(maxY, box.y + box.height);
30997
+ });
30998
+ return {
30999
+ x: minX,
31000
+ y: minY,
31001
+ width: maxX - minX,
31002
+ height: maxY - minY
31003
+ };
31004
+ }
31005
+ return realNode.getClientRect({
30923
31006
  relativeTo: stage,
30924
31007
  skipStroke: true,
30925
31008
  skipShadow: true
30926
31009
  });
30927
31010
  }
31011
+ getSelectionParentNode() {
31012
+ let nodeParent = null;
31013
+ const nodesSelectionPlugin = this.instance.getPlugin("nodesSelection");
31014
+ if (nodesSelectionPlugin) nodeParent = this.instance.getNodeContainer(nodesSelectionPlugin.getTransformer().nodes()[0]);
31015
+ return nodeParent;
31016
+ }
30928
31017
  getPeers(intersectedNodes, targetNode, prev, next) {
30929
31018
  const peers = intersectedNodes.filter((int) => {
30930
31019
  if (prev && next) return int.to.getAttrs().id !== targetNode.getAttrs().id && int.from.getAttrs().id !== targetNode.getAttrs().id;
@@ -30965,7 +31054,7 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
30965
31054
  const center = (prevBox.x + prevBox.width + nextBox.x) / 2;
30966
31055
  const newX = center - box.width / 2;
30967
31056
  this.setNodeClientRectX(node, newX);
30968
- this.snapPositionX = node.x();
31057
+ this.snapPositionX = node instanceof konva.default.Transformer ? newX : node.x();
30969
31058
  this.currentSizeSnapHorizontal = NODE_SNAP_HORIZONTAL.CENTER;
30970
31059
  const newBox = this.getBoxClientRect(node);
30971
31060
  this.peerDistanceX = Math.round(newBox.x - (prevBox.x + prevBox.width));
@@ -30973,7 +31062,13 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
30973
31062
  if (this.currentSizeSnapHorizontal === NODE_SNAP_HORIZONTAL.CENTER && delta > this.exitSnappingTolerance) this.currentSizeSnapHorizontal = null;
30974
31063
  }
30975
31064
  if (this.currentSizeSnapHorizontal && this.peerDistanceX && this.snapPositionX) {
30976
- node.x(this.snapPositionX);
31065
+ if (node instanceof konva.default.Transformer) {
31066
+ const box$1 = this.getBoxClientRect(node);
31067
+ const dx = this.snapPositionX - box$1.x;
31068
+ node.nodes().forEach((n) => {
31069
+ n.x(n.x() + dx);
31070
+ });
31071
+ } else node.x(this.snapPositionX);
30977
31072
  const { intersectedNodesWithDistances: newHorizontalIntersectedNodes } = this.getHorizontallyIntersectingNodes(node, visibleNodes);
30978
31073
  this.drawSizeGuidesHorizontally(newHorizontalIntersectedNodes, this.peerDistanceX);
30979
31074
  return;
@@ -30984,7 +31079,7 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
30984
31079
  if (match) {
30985
31080
  const newX = prevBox.x + prevBox.width + match.distance;
30986
31081
  this.setNodeClientRectX(node, newX);
30987
- this.snapPositionX = node.x();
31082
+ this.snapPositionX = node instanceof konva.default.Transformer ? newX : node.x();
30988
31083
  this.currentSizeSnapHorizontal = NODE_SNAP_HORIZONTAL.LEFT;
30989
31084
  const newBox = this.getBoxClientRect(node);
30990
31085
  this.peerDistanceX = Math.round(newBox.x - (prevBox.x + prevBox.width));
@@ -30998,7 +31093,7 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
30998
31093
  if (match) {
30999
31094
  const newX = nextBox.x - match.distance - box.width;
31000
31095
  this.setNodeClientRectX(node, newX);
31001
- this.snapPositionX = node.x();
31096
+ this.snapPositionX = node instanceof konva.default.Transformer ? newX : node.x();
31002
31097
  const newBox = this.getBoxClientRect(node);
31003
31098
  this.peerDistanceX = Math.round(nextBox.x - (newBox.x + newBox.width));
31004
31099
  this.currentSizeSnapHorizontal = NODE_SNAP_HORIZONTAL.RIGHT;
@@ -31029,7 +31124,7 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31029
31124
  const center = (prevBox.y + prevBox.height + nextBox.y) / 2;
31030
31125
  const newY = center - box.height / 2;
31031
31126
  this.setNodeClientRectY(node, newY);
31032
- this.snapPositionY = node.y();
31127
+ this.snapPositionY = node instanceof konva.default.Transformer ? newY : node.y();
31033
31128
  this.currentSizeSnapVertical = NODE_SNAP_VERTICAL.MIDDLE;
31034
31129
  const newBox = this.getBoxClientRect(node);
31035
31130
  this.peerDistanceY = Math.round(newBox.y - (prevBox.y + prevBox.height));
@@ -31037,7 +31132,13 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31037
31132
  if (this.currentSizeSnapVertical === NODE_SNAP_VERTICAL.MIDDLE && delta > this.exitSnappingTolerance) this.currentSizeSnapVertical = null;
31038
31133
  }
31039
31134
  if (this.currentSizeSnapVertical && this.peerDistanceY && this.snapPositionY) {
31040
- node.y(this.snapPositionY);
31135
+ if (node instanceof konva.default.Transformer) {
31136
+ const box$1 = this.getBoxClientRect(node);
31137
+ const dy = this.snapPositionY - box$1.y;
31138
+ node.nodes().forEach((n) => {
31139
+ n.y(n.y() + dy);
31140
+ });
31141
+ } else node.y(this.snapPositionY);
31041
31142
  const { intersectedNodesWithDistances: newVerticalIntersectedNodes } = this.getVerticallyIntersectingNodes(node, visibleNodes);
31042
31143
  this.drawSizeGuidesVertically(newVerticalIntersectedNodes, this.peerDistanceY);
31043
31144
  return;
@@ -31048,7 +31149,7 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31048
31149
  if (match) {
31049
31150
  const newY = prevBox.y + prevBox.height + match.distance;
31050
31151
  this.setNodeClientRectY(node, newY);
31051
- this.snapPositionY = node.y();
31152
+ this.snapPositionY = node instanceof konva.default.Transformer ? newY : node.y();
31052
31153
  this.currentSizeSnapVertical = NODE_SNAP_VERTICAL.TOP;
31053
31154
  const newBox = this.getBoxClientRect(node);
31054
31155
  this.peerDistanceY = Math.round(newBox.y - (prevBox.y + prevBox.height));
@@ -31062,7 +31163,7 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31062
31163
  if (match) {
31063
31164
  const newY = nextBox.y - match.distance - box.height;
31064
31165
  this.setNodeClientRectY(node, newY);
31065
- this.snapPositionY = node.y();
31166
+ this.snapPositionY = node instanceof konva.default.Transformer ? newY : node.y();
31066
31167
  const newBox = this.getBoxClientRect(node);
31067
31168
  this.peerDistanceY = Math.round(nextBox.y - (newBox.y + newBox.height));
31068
31169
  this.currentSizeSnapVertical = NODE_SNAP_VERTICAL.BOTTOM;
@@ -31070,6 +31171,14 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31070
31171
  }
31071
31172
  }
31072
31173
  setNodeClientRectX(node, snappedClientX) {
31174
+ if (node instanceof konva.default.Transformer) {
31175
+ const box$1 = this.getBoxClientRect(node);
31176
+ const dx = snappedClientX - box$1.x;
31177
+ node.nodes().forEach((node$1) => {
31178
+ node$1.x(node$1.x() + dx);
31179
+ });
31180
+ return;
31181
+ } else node.x(snappedClientX);
31073
31182
  if (node.getParent()?.getType() === "Layer") {
31074
31183
  node.x(snappedClientX);
31075
31184
  return;
@@ -31093,6 +31202,14 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31093
31202
  });
31094
31203
  }
31095
31204
  setNodeClientRectY(node, snappedClientY) {
31205
+ if (node instanceof konva.default.Transformer) {
31206
+ const box$1 = this.getBoxClientRect(node);
31207
+ const dy = snappedClientY - box$1.y;
31208
+ node.nodes().forEach((node$1) => {
31209
+ node$1.y(node$1.y() + dy);
31210
+ });
31211
+ return;
31212
+ }
31096
31213
  if (node.getParent()?.getType() === "Layer") {
31097
31214
  node.y(snappedClientY);
31098
31215
  return;
@@ -31145,8 +31262,11 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31145
31262
  getVerticallyIntersectingNodes(targetNode, nodes) {
31146
31263
  const targetBox = this.getBoxClientRect(targetNode);
31147
31264
  const intersectedNodes = [];
31265
+ const nodesSelectionPlugin = this.instance.getPlugin("nodesSelection");
31266
+ let targetNodes = [targetNode.getAttrs().id ?? ""];
31267
+ if (nodesSelectionPlugin && nodesSelectionPlugin.getTransformer().nodes().length > 1) targetNodes = [targetNode.getAttrs().id ?? "", ...nodesSelectionPlugin.getTransformer().nodes().map((node) => node.getAttrs().id ?? "")];
31148
31268
  nodes.forEach((node) => {
31149
- if (node === targetNode || !node.isVisible()) return false;
31269
+ if (targetNodes.includes(node.getAttrs().id ?? "") || !node.isVisible()) return false;
31150
31270
  const box = this.getBoxClientRect(node);
31151
31271
  const horizontalOverlap = box.x + box.width > targetBox.x && box.x < targetBox.x + targetBox.width;
31152
31272
  if (horizontalOverlap) intersectedNodes.push(node);
@@ -31193,8 +31313,11 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31193
31313
  getHorizontallyIntersectingNodes(targetNode, nodes) {
31194
31314
  const targetBox = this.getBoxClientRect(targetNode);
31195
31315
  const intersectedNodes = [];
31316
+ const nodesSelectionPlugin = this.instance.getPlugin("nodesSelection");
31317
+ let targetNodes = [targetNode.getAttrs().id ?? ""];
31318
+ if (nodesSelectionPlugin && nodesSelectionPlugin.getTransformer().nodes().length > 1) targetNodes = [targetNode.getAttrs().id ?? "", ...nodesSelectionPlugin.getTransformer().nodes().map((node) => node.getAttrs().id ?? "")];
31196
31319
  nodes.forEach((node) => {
31197
- if (node === targetNode || !node.isVisible()) return false;
31320
+ if (targetNodes.includes(node.getAttrs().id ?? "") || !node.isVisible()) return false;
31198
31321
  const box = this.getBoxClientRect(node);
31199
31322
  const verticalOverlap = box.y + box.height > targetBox.y && box.y < targetBox.y + targetBox.height;
31200
31323
  if (verticalOverlap) intersectedNodes.push(node);
@@ -31322,7 +31445,7 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31322
31445
  ctx.lineTo(x2, y);
31323
31446
  ctx.closePath();
31324
31447
  ctx.strokeStyle = uiConfig.line.stroke;
31325
- ctx.lineWidth = uiConfig.line.strokeWidth;
31448
+ ctx.lineWidth = uiConfig.line.strokeWidth / (stage?.scaleX() ?? 1);
31326
31449
  ctx.setLineDash([]);
31327
31450
  ctx.stroke();
31328
31451
  ctx.closePath();
@@ -31358,7 +31481,7 @@ var WeaveNodesDistanceSnappingPlugin = class extends WeavePlugin {
31358
31481
  ctx.moveTo(x, y1);
31359
31482
  ctx.lineTo(x, y2);
31360
31483
  ctx.strokeStyle = uiConfig.line.stroke;
31361
- ctx.lineWidth = uiConfig.line.strokeWidth;
31484
+ ctx.lineWidth = uiConfig.line.strokeWidth / (stage?.scaleX() ?? 1);
31362
31485
  ctx.stroke();
31363
31486
  ctx.closePath();
31364
31487
  const worldMidX = x;
package/dist/sdk.d.cts CHANGED
@@ -3,15 +3,16 @@ import { Vector2d } from "konva/lib/types";
3
3
  import pino, { Logger } from "pino";
4
4
  import * as Y from "yjs";
5
5
  import { Doc } from "yjs";
6
- import * as konva_lib_Node0 from "konva/lib/Node";
7
6
  import * as konva_lib_Node1 from "konva/lib/Node";
8
7
  import * as konva_lib_Node2 from "konva/lib/Node";
9
8
  import * as konva_lib_Node3 from "konva/lib/Node";
9
+ import * as konva_lib_Node4 from "konva/lib/Node";
10
10
  import { KonvaEventObject } from "konva/lib/Node";
11
11
  import { Stage, StageConfig } from "konva/lib/Stage";
12
+ import * as konva_lib_shapes_Transformer0 from "konva/lib/shapes/Transformer";
12
13
  import { TransformerConfig } from "konva/lib/shapes/Transformer";
13
- import * as konva_lib_Group4 from "konva/lib/Group";
14
- import * as konva_lib_Layer5 from "konva/lib/Layer";
14
+ import * as konva_lib_Group5 from "konva/lib/Group";
15
+ import * as konva_lib_Layer6 from "konva/lib/Layer";
15
16
 
16
17
  //#region ../types/dist/types.d.ts
17
18
  //#region src/base/node.d.ts
@@ -261,6 +262,11 @@ declare abstract class WeavePlugin implements WeavePluginBase {
261
262
  type WeaveNodesSelectionPluginOnSelectionStateEvent = boolean;
262
263
  type WeaveNodesSelectionPluginOnNodesChangeEvent = WeaveSelection[];
263
264
  type WeaveNodesSelectionPluginOnStageSelectionEvent = undefined;
265
+ type WeaveNodesSelectionOnSelectionParams = {
266
+ resizeEnabled: boolean;
267
+ rotateEnabled: boolean;
268
+ enabledAnchors: string[];
269
+ };
264
270
  type WeaveNodesSelectionBehaviorsConfig = {
265
271
  singleSelection: {
266
272
  enabled: boolean;
@@ -268,6 +274,7 @@ type WeaveNodesSelectionBehaviorsConfig = {
268
274
  multipleSelection: {
269
275
  enabled: boolean;
270
276
  };
277
+ onMultipleSelection?: (selectedNodes: Konva.Node[]) => Partial<WeaveNodesSelectionOnSelectionParams>;
271
278
  };
272
279
  type WeaveNodesSelectionPanningOnSelectionConfig = {
273
280
  edgeThreshold: number;
@@ -414,6 +421,7 @@ declare class WeaveNodesEdgeSnappingPlugin extends WeavePlugin {
414
421
  setEnabled(enabled: boolean): void;
415
422
  deleteGuides(): void;
416
423
  evaluateGuidelines(e: KonvaEventObject<any>): void;
424
+ private getSelectionParentNode;
417
425
  cleanupGuidelines(): void;
418
426
  private initEvents;
419
427
  getLineGuideStops(nodes: Konva.Node[]): LineGuideStop;
@@ -513,6 +521,7 @@ declare class WeaveNodesDistanceSnappingPlugin extends WeavePlugin {
513
521
  deleteGuides(): void;
514
522
  evaluateGuidelines(e: KonvaEventObject<any>): void;
515
523
  private getBoxClientRect;
524
+ private getSelectionParentNode;
516
525
  private getPeers;
517
526
  private validateHorizontalSnapping;
518
527
  private validateVerticalSnapping;
@@ -587,6 +596,7 @@ declare class WeaveNodesSelectionPlugin extends WeavePlugin {
587
596
  private checkDoubleTap;
588
597
  private hideSelectorArea;
589
598
  private initEvents;
599
+ private handleMultipleSelectionBehavior;
590
600
  protected syncSelection(): void;
591
601
  protected getSelectionPlugin(): WeaveNodesSelectionPlugin | undefined;
592
602
  protected hideHoverState(): void;
@@ -913,11 +923,11 @@ declare function getSelectedNodesMetadata(transformer: Konva.Transformer): {
913
923
  height: number;
914
924
  nodes: string[];
915
925
  };
916
- declare function getTargetAndSkipNodes(instance: Weave, e: KonvaEventObject<any, any>): {
917
- targetNode: konva_lib_Node1.Node<konva_lib_Node0.NodeConfig> | undefined;
926
+ declare function getTargetAndSkipNodes(instance: Weave, e: KonvaEventObject<any, any>, forceTransformer?: boolean): {
927
+ targetNode: konva_lib_shapes_Transformer0.Transformer | konva_lib_Node2.Node<konva_lib_Node1.NodeConfig> | undefined;
918
928
  skipNodes: string[];
919
929
  };
920
- declare function getVisibleNodesInViewport(stage: Konva.Stage, referenceLayer: Konva.Layer | Konva.Group | undefined): konva_lib_Node3.Node<konva_lib_Node2.NodeConfig>[];
930
+ declare function getVisibleNodesInViewport(stage: Konva.Stage, referenceLayer: Konva.Layer | Konva.Group | undefined): konva_lib_Node4.Node<konva_lib_Node3.NodeConfig>[];
921
931
  declare function isInShadowDOM(el: DOMElement): boolean;
922
932
  declare function getTopmostShadowHost(el: DOMElement): ShadowRoot | null;
923
933
  declare function getVisibleNodes(instance: Weave, stage: Konva.Stage, nodeParent: Konva.Node, skipNodes: string[], referenceLayer: Konva.Layer | Konva.Group): Konva.Node[];
@@ -1751,7 +1761,7 @@ declare class WeaveCommentNode<T> extends WeaveNode {
1751
1761
  protected commentDomVisible: boolean;
1752
1762
  protected showResolved: boolean;
1753
1763
  constructor(params: WeaveCommentNodeParams<T>);
1754
- onRender(props: WeaveElementAttributes): konva_lib_Group4.Group;
1764
+ onRender(props: WeaveElementAttributes): konva_lib_Group5.Group;
1755
1765
  onUpdate(nodeInstance: WeaveElementInstance, nextProps: WeaveElementAttributes): void;
1756
1766
  onDestroy(nodeInstance: WeaveElementInstance): void;
1757
1767
  private expandNode;
@@ -2908,6 +2918,11 @@ declare const WEAVE_NODES_SELECTION_DEFAULT_CONFIG: {
2908
2918
  multipleSelection: {
2909
2919
  enabled: boolean;
2910
2920
  };
2921
+ onMultipleSelection: () => {
2922
+ resizeEnabled: boolean;
2923
+ rotateEnabled: boolean;
2924
+ enabledAnchors: string[];
2925
+ };
2911
2926
  };
2912
2927
  };
2913
2928
 
@@ -3245,7 +3260,7 @@ declare class WeaveCommentsRendererPlugin<T> extends WeavePlugin {
3245
3260
  private initCommentsLayer;
3246
3261
  deleteComments(): void;
3247
3262
  render(): void;
3248
- getCommentsLayer(): konva_lib_Layer5.Layer;
3263
+ getCommentsLayer(): konva_lib_Layer6.Layer;
3249
3264
  enable(): void;
3250
3265
  disable(): void;
3251
3266
  }
@@ -3259,5 +3274,5 @@ declare const WEAVE_COMMENTS_TOOL_LAYER_ID = "commentsLayer";
3259
3274
  //#endregion
3260
3275
  //# sourceMappingURL=constants.d.ts.map
3261
3276
 
3262
- export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, ARROW_TOOL_ACTION_NAME, ARROW_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, DistanceInfoH, DistanceInfoV, 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, Guide, GuideOrientation, GuideOrientationKeys, IMAGE_TOOL_ACTION_NAME, IMAGE_TOOL_STATE, ImageOptions, ImageProps, LineGuide, LineGuideStop, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NODE_SNAP_HORIZONTAL, NODE_SNAP_VERTICAL, NodeSnap, NodeSnapHorizontal, NodeSnapHorizontalKeys, NodeSnapKeys, NodeSnapVertical, NodeSnapVerticalKeys, NodeSnappingEdge, NodeSnappingEdges, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, PaddingOnPaste, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, TextSerializable, WEAVE_ARROW_NODE_TYPE, 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_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_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_COLOR, WEAVE_GRID_DEFAULT_DOT_MAX_DOTS_PER_AXIS, WEAVE_GRID_DEFAULT_MAJOR_DOT_RATIO, WEAVE_GRID_DEFAULT_MAJOR_EVERY, WEAVE_GRID_DEFAULT_MAJOR_LINE_RATIO, WEAVE_GRID_DEFAULT_ORIGIN_COLOR, WEAVE_GRID_DEFAULT_RADIUS, WEAVE_GRID_DEFAULT_SIZE, WEAVE_GRID_DEFAULT_STROKE, WEAVE_GRID_DEFAULT_TYPE, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_TYPE, WEAVE_NODES_DISTANCE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_EDGE_SNAPPING_PLUGIN_KEY, 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_GRID_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTERS_DEFAULT_PROPS, WEAVE_USER_POINTER_KEY, WEAVE_USER_SELECTION_KEY, Weave, WeaveAction, WeaveActionPropsChangeEvent, WeaveAlignNodesToolAction, WeaveAlignNodesToolActionAlignTo, WeaveAlignNodesToolActionAlignToKeys, WeaveAlignNodesToolActionState, WeaveAlignNodesToolActionStateKeys, WeaveAlignNodesToolActionTriggerParams, WeaveArrowNode, WeaveArrowNodeParams, WeaveArrowProperties, WeaveArrowToolAction, WeaveArrowToolActionOnAddedEvent, WeaveArrowToolActionOnAddingEvent, WeaveArrowToolActionState, WeaveArrowToolActionStateKeys, WeaveBrushToolAction, WeaveBrushToolActionOnAddedEvent, WeaveBrushToolActionOnAddingEvent, WeaveBrushToolActionParams, WeaveBrushToolActionProperties, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveCommentNode, WeaveCommentNodeAction, WeaveCommentNodeActionKeys, WeaveCommentNodeConfig, WeaveCommentNodeCreateAction, WeaveCommentNodeCreateActionKeys, WeaveCommentNodeModel, WeaveCommentNodeOnCreateCommentEvent, WeaveCommentNodeOnDragEndEvent, WeaveCommentNodeOnFinishCreateEvent, WeaveCommentNodeOnViewEvent, WeaveCommentNodeParams, WeaveCommentNodeStyle, WeaveCommentNodeViewAction, WeaveCommentNodeViewActionKeys, WeaveCommentStatus, WeaveCommentStatusKeys, WeaveCommentToolAction, WeaveCommentToolActionConfig, WeaveCommentToolActionParams, WeaveCommentToolActionState, WeaveCommentToolActionStateKeys, WeaveCommentToolModel, WeaveCommentToolStyle, WeaveCommentsRendererModel, WeaveCommentsRendererPlugin, WeaveCommentsRendererPluginConfig, WeaveCommentsRendererPluginParams, WeaveConnectedUserInfoKey, WeaveConnectedUsers, WeaveConnectedUsersChangeEvent, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginConfig, WeaveCopyPasteNodesPluginOnCopyEvent, WeaveCopyPasteNodesPluginOnPasteEvent, WeaveCopyPasteNodesPluginOnPasteExternalEvent, WeaveCopyPasteNodesPluginParams, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveCopyPastePasteMode, WeaveCopyPastePasteModeKeys, WeaveEllipseNode, WeaveEllipseNodeParams, WeaveEllipseProperties, WeaveEllipseToolAction, WeaveEllipseToolActionOnAddedEvent, WeaveEllipseToolActionOnAddingEvent, WeaveEllipseToolActionState, WeaveEllipseToolActionStateKeys, WeaveEraserToolAction, WeaveEraserToolActionState, WeaveEraserToolActionStateKeys, WeaveExportNodesActionParams, WeaveExportNodesToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeParams, WeaveFrameProperties, WeaveFrameToolAction, WeaveFrameToolActionOnAddedEvent, WeaveFrameToolActionOnAddingEvent, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolProps, WeaveGroupNode, WeaveGroupNodeParams, WeaveGroupProperties, WeaveImageCropEndType, WeaveImageCropEndTypeKeys, WeaveImageNode, WeaveImageNodeParams, WeaveImageOnCropEndEvent, WeaveImageOnCropStartEvent, WeaveImageProperties, WeaveImageToolAction, WeaveImageToolActionOnAddedEvent, WeaveImageToolActionOnAddingEvent, WeaveImageToolActionOnEndLoadImageEvent, WeaveImageToolActionOnStartLoadImageEvent, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveLineNodeParams, WeaveLineProperties, WeaveMoveToolAction, WeaveMoveToolActionParams, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesDistanceSnappingPlugin, WeaveNodesDistanceSnappingPluginConfig, WeaveNodesDistanceSnappingPluginParams, WeaveNodesDistanceSnappingUIConfig, WeaveNodesEdgeSnappingPlugin, WeaveNodesEdgeSnappingPluginConfig, WeaveNodesEdgeSnappingPluginParams, WeaveNodesSelectionBehaviorsConfig, WeaveNodesSelectionConfig, WeaveNodesSelectionPanningOnSelectionConfig, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginOnNodesChangeEvent, WeaveNodesSelectionPluginOnSelectionStateEvent, WeaveNodesSelectionPluginOnStageSelectionEvent, WeaveNodesSelectionPluginParams, WeavePasteModel, WeavePenToolAction, WeavePenToolActionOnAddedEvent, WeavePenToolActionOnAddingEvent, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePlugin, WeaveRectangleNode, WeaveRectangleNodeParams, WeaveRectangleProperties, WeaveRectangleToolAction, WeaveRectangleToolActionOnAddedEvent, WeaveRectangleToolActionOnAddingEvent, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveRegularPolygonNode, WeaveRegularPolygonNodeParams, WeaveRegularPolygonProperties, WeaveRegularPolygonToolAction, WeaveRegularPolygonToolActionOnAddedEvent, WeaveRegularPolygonToolActionOnAddingEvent, WeaveRegularPolygonToolActionState, WeaveRegularPolygonToolActionStateKeys, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginOnNodeContextMenuEvent, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropPluginOnStageDropEvent, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomPlugin, WeaveStageZoomPluginConfig, WeaveStageZoomPluginOnZoomChangeEvent, WeaveStageZoomPluginParams, WeaveStageZoomType, WeaveStageZoomTypeKeys, WeaveStarNode, WeaveStarNodeParams, WeaveStarProperties, WeaveStarToolAction, WeaveStarToolActionOnAddedEvent, WeaveStarToolActionOnAddingEvent, WeaveStarToolActionState, WeaveStarToolActionStateKeys, WeaveStore, WeaveStoreOnNodeChangeEvent, WeaveStoreOnRoomLoadedEvent, WeaveStoreOnStateChangeEvent, WeaveStoreOnUndoRedoChangeEvent, WeaveStrokeNode, WeaveStrokeNodeParams, WeaveStrokePoint, WeaveStrokeProperties, WeaveTextLayout, WeaveTextLayoutKeys, WeaveTextNode, WeaveTextNodeParams, WeaveTextProperties, WeaveTextToolAction, WeaveTextToolActionOnAddedEvent, WeaveTextToolActionOnAddingEvent, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUserPointersUIProperties, WeaveUserSelectionInfo, WeaveUserSelectionKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveUsersSelectionPlugin, WeaveUsersSelectionPluginConfig, WeaveUsersSelectionPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, clearContainerTargets, containerOverCursor, containsNodeDeep, getBoundingBox, getExportBoundingBox, getSelectedNodesMetadata, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, intersectArrays, isIOS, isInShadowDOM, isNodeInSelection, memoize, moveNodeToContainer, resetScale };
3277
+ export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, ARROW_TOOL_ACTION_NAME, ARROW_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, DistanceInfoH, DistanceInfoV, 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, Guide, GuideOrientation, GuideOrientationKeys, IMAGE_TOOL_ACTION_NAME, IMAGE_TOOL_STATE, ImageOptions, ImageProps, LineGuide, LineGuideStop, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NODE_SNAP_HORIZONTAL, NODE_SNAP_VERTICAL, NodeSnap, NodeSnapHorizontal, NodeSnapHorizontalKeys, NodeSnapKeys, NodeSnapVertical, NodeSnapVerticalKeys, NodeSnappingEdge, NodeSnappingEdges, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, PaddingOnPaste, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, TextSerializable, WEAVE_ARROW_NODE_TYPE, 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_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_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_COLOR, WEAVE_GRID_DEFAULT_DOT_MAX_DOTS_PER_AXIS, WEAVE_GRID_DEFAULT_MAJOR_DOT_RATIO, WEAVE_GRID_DEFAULT_MAJOR_EVERY, WEAVE_GRID_DEFAULT_MAJOR_LINE_RATIO, WEAVE_GRID_DEFAULT_ORIGIN_COLOR, WEAVE_GRID_DEFAULT_RADIUS, WEAVE_GRID_DEFAULT_SIZE, WEAVE_GRID_DEFAULT_STROKE, WEAVE_GRID_DEFAULT_TYPE, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_TYPE, WEAVE_NODES_DISTANCE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_EDGE_SNAPPING_PLUGIN_KEY, 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_GRID_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTERS_DEFAULT_PROPS, WEAVE_USER_POINTER_KEY, WEAVE_USER_SELECTION_KEY, Weave, WeaveAction, WeaveActionPropsChangeEvent, WeaveAlignNodesToolAction, WeaveAlignNodesToolActionAlignTo, WeaveAlignNodesToolActionAlignToKeys, WeaveAlignNodesToolActionState, WeaveAlignNodesToolActionStateKeys, WeaveAlignNodesToolActionTriggerParams, WeaveArrowNode, WeaveArrowNodeParams, WeaveArrowProperties, WeaveArrowToolAction, WeaveArrowToolActionOnAddedEvent, WeaveArrowToolActionOnAddingEvent, WeaveArrowToolActionState, WeaveArrowToolActionStateKeys, WeaveBrushToolAction, WeaveBrushToolActionOnAddedEvent, WeaveBrushToolActionOnAddingEvent, WeaveBrushToolActionParams, WeaveBrushToolActionProperties, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveCommentNode, WeaveCommentNodeAction, WeaveCommentNodeActionKeys, WeaveCommentNodeConfig, WeaveCommentNodeCreateAction, WeaveCommentNodeCreateActionKeys, WeaveCommentNodeModel, WeaveCommentNodeOnCreateCommentEvent, WeaveCommentNodeOnDragEndEvent, WeaveCommentNodeOnFinishCreateEvent, WeaveCommentNodeOnViewEvent, WeaveCommentNodeParams, WeaveCommentNodeStyle, WeaveCommentNodeViewAction, WeaveCommentNodeViewActionKeys, WeaveCommentStatus, WeaveCommentStatusKeys, WeaveCommentToolAction, WeaveCommentToolActionConfig, WeaveCommentToolActionParams, WeaveCommentToolActionState, WeaveCommentToolActionStateKeys, WeaveCommentToolModel, WeaveCommentToolStyle, WeaveCommentsRendererModel, WeaveCommentsRendererPlugin, WeaveCommentsRendererPluginConfig, WeaveCommentsRendererPluginParams, WeaveConnectedUserInfoKey, WeaveConnectedUsers, WeaveConnectedUsersChangeEvent, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginConfig, WeaveCopyPasteNodesPluginOnCopyEvent, WeaveCopyPasteNodesPluginOnPasteEvent, WeaveCopyPasteNodesPluginOnPasteExternalEvent, WeaveCopyPasteNodesPluginParams, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveCopyPastePasteMode, WeaveCopyPastePasteModeKeys, WeaveEllipseNode, WeaveEllipseNodeParams, WeaveEllipseProperties, WeaveEllipseToolAction, WeaveEllipseToolActionOnAddedEvent, WeaveEllipseToolActionOnAddingEvent, WeaveEllipseToolActionState, WeaveEllipseToolActionStateKeys, WeaveEraserToolAction, WeaveEraserToolActionState, WeaveEraserToolActionStateKeys, WeaveExportNodesActionParams, WeaveExportNodesToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeParams, WeaveFrameProperties, WeaveFrameToolAction, WeaveFrameToolActionOnAddedEvent, WeaveFrameToolActionOnAddingEvent, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolProps, WeaveGroupNode, WeaveGroupNodeParams, WeaveGroupProperties, WeaveImageCropEndType, WeaveImageCropEndTypeKeys, WeaveImageNode, WeaveImageNodeParams, WeaveImageOnCropEndEvent, WeaveImageOnCropStartEvent, WeaveImageProperties, WeaveImageToolAction, WeaveImageToolActionOnAddedEvent, WeaveImageToolActionOnAddingEvent, WeaveImageToolActionOnEndLoadImageEvent, WeaveImageToolActionOnStartLoadImageEvent, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveLineNodeParams, WeaveLineProperties, WeaveMoveToolAction, WeaveMoveToolActionParams, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesDistanceSnappingPlugin, WeaveNodesDistanceSnappingPluginConfig, WeaveNodesDistanceSnappingPluginParams, WeaveNodesDistanceSnappingUIConfig, WeaveNodesEdgeSnappingPlugin, WeaveNodesEdgeSnappingPluginConfig, WeaveNodesEdgeSnappingPluginParams, WeaveNodesSelectionBehaviorsConfig, WeaveNodesSelectionConfig, WeaveNodesSelectionOnSelectionParams, WeaveNodesSelectionPanningOnSelectionConfig, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginOnNodesChangeEvent, WeaveNodesSelectionPluginOnSelectionStateEvent, WeaveNodesSelectionPluginOnStageSelectionEvent, WeaveNodesSelectionPluginParams, WeavePasteModel, WeavePenToolAction, WeavePenToolActionOnAddedEvent, WeavePenToolActionOnAddingEvent, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePlugin, WeaveRectangleNode, WeaveRectangleNodeParams, WeaveRectangleProperties, WeaveRectangleToolAction, WeaveRectangleToolActionOnAddedEvent, WeaveRectangleToolActionOnAddingEvent, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveRegularPolygonNode, WeaveRegularPolygonNodeParams, WeaveRegularPolygonProperties, WeaveRegularPolygonToolAction, WeaveRegularPolygonToolActionOnAddedEvent, WeaveRegularPolygonToolActionOnAddingEvent, WeaveRegularPolygonToolActionState, WeaveRegularPolygonToolActionStateKeys, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginOnNodeContextMenuEvent, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropPluginOnStageDropEvent, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomPlugin, WeaveStageZoomPluginConfig, WeaveStageZoomPluginOnZoomChangeEvent, WeaveStageZoomPluginParams, WeaveStageZoomType, WeaveStageZoomTypeKeys, WeaveStarNode, WeaveStarNodeParams, WeaveStarProperties, WeaveStarToolAction, WeaveStarToolActionOnAddedEvent, WeaveStarToolActionOnAddingEvent, WeaveStarToolActionState, WeaveStarToolActionStateKeys, WeaveStore, WeaveStoreOnNodeChangeEvent, WeaveStoreOnRoomLoadedEvent, WeaveStoreOnStateChangeEvent, WeaveStoreOnUndoRedoChangeEvent, WeaveStrokeNode, WeaveStrokeNodeParams, WeaveStrokePoint, WeaveStrokeProperties, WeaveTextLayout, WeaveTextLayoutKeys, WeaveTextNode, WeaveTextNodeParams, WeaveTextProperties, WeaveTextToolAction, WeaveTextToolActionOnAddedEvent, WeaveTextToolActionOnAddingEvent, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUserPointersUIProperties, WeaveUserSelectionInfo, WeaveUserSelectionKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveUsersSelectionPlugin, WeaveUsersSelectionPluginConfig, WeaveUsersSelectionPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, clearContainerTargets, containerOverCursor, containsNodeDeep, getBoundingBox, getExportBoundingBox, getSelectedNodesMetadata, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, intersectArrays, isIOS, isInShadowDOM, isNodeInSelection, memoize, moveNodeToContainer, resetScale };
3263
3278
  //# sourceMappingURL=sdk.d.cts.map