@inditextech/weave-sdk 2.2.0 → 2.3.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.node.js CHANGED
@@ -15008,7 +15008,6 @@ var require_lodash = __commonJS({ "../../node_modules/lodash/lodash.js"(exports,
15008
15008
  } else root$8._ = _;
15009
15009
  }).call(exports);
15010
15010
  } });
15011
- var import_lodash$1 = __toESM(require_lodash());
15012
15011
  var import_lodash = __toESM(require_lodash(), 1);
15013
15012
 
15014
15013
  //#endregion
@@ -15153,13 +15152,13 @@ var WeaveStore = class {
15153
15152
  node: JSON.parse(JSON.stringify(nodeInfo.node))
15154
15153
  });
15155
15154
  }
15156
- if (!this.isRoomLoaded && !(0, import_lodash$1.isEmpty)(this.state.weave)) {
15155
+ if (!this.isRoomLoaded && !(0, import_lodash.isEmpty)(this.state.weave)) {
15157
15156
  this.instance.setupRenderer();
15158
15157
  this.isRoomLoaded = true;
15159
15158
  this.emitOnRoomLoadedEvent();
15160
15159
  return;
15161
15160
  }
15162
- if (this.isRoomLoaded && !(0, import_lodash$1.isEmpty)(this.state.weave)) this.instance.render();
15161
+ if (this.isRoomLoaded && !(0, import_lodash.isEmpty)(this.state.weave)) this.instance.render();
15163
15162
  });
15164
15163
  }
15165
15164
  canUndoStateStep() {
@@ -15291,7 +15290,8 @@ const WEAVE_NODES_SELECTION_DEFAULT_CONFIG = {
15291
15290
  ]
15292
15291
  };
15293
15292
  }
15294
- }
15293
+ },
15294
+ style: { dragOpacity: .75 }
15295
15295
  };
15296
15296
 
15297
15297
  //#endregion
@@ -17602,7 +17602,7 @@ var require_mergeWith = __commonJS({ "../../node_modules/lodash/mergeWith.js"(ex
17602
17602
  });
17603
17603
  module.exports = mergeWith;
17604
17604
  } });
17605
- var import_mergeWith = __toESM(require_mergeWith());
17605
+ var import_mergeWith = __toESM(require_mergeWith(), 1);
17606
17606
 
17607
17607
  //#endregion
17608
17608
  //#region src/utils.ts
@@ -17617,7 +17617,7 @@ function resetScale(node) {
17617
17617
  }
17618
17618
  function clearContainerTargets(instance) {
17619
17619
  const containers = instance.getContainerNodes();
17620
- for (const container of containers) container.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
17620
+ for (const container of containers) container.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { node: void 0 });
17621
17621
  }
17622
17622
  function containerOverCursor(instance, ignoreNodes, definedCursorPosition) {
17623
17623
  Konva.hitOnDragEnabled = true;
@@ -17643,6 +17643,8 @@ function moveNodeToContainer(instance, node, containerToMove, invalidOriginsType
17643
17643
  const stage = instance.getStage();
17644
17644
  const isLocked = instance.allNodesLocked([node]);
17645
17645
  if (isLocked) return false;
17646
+ const canMoveToLayer = containerToMove.canMoveToContainer(node);
17647
+ if (!canMoveToLayer) return false;
17646
17648
  let nodeActualContainer = node.getParent();
17647
17649
  if (nodeActualContainer.getAttrs().nodeId) {
17648
17650
  const realParent = stage.findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
@@ -17662,6 +17664,10 @@ function moveNodeToContainer(instance, node, containerToMove, invalidOriginsType
17662
17664
  node.x(node.x() - (layerToMoveAttrs.containerOffsetX ?? 0));
17663
17665
  node.y(node.y() - (layerToMoveAttrs.containerOffsetY ?? 0));
17664
17666
  node.movedToContainer(layerToMove);
17667
+ instance.emitEvent("onNodeMovedToContainer", {
17668
+ node: node.clone(),
17669
+ container: layerToMove
17670
+ });
17665
17671
  const nodeHandler = instance.getNodeHandler(node.getAttrs().nodeType);
17666
17672
  if (nodeHandler) {
17667
17673
  const actualNode = nodeHandler.serialize(node);
@@ -17903,6 +17909,16 @@ function mergeExceptArrays(object, source) {
17903
17909
  return void 0;
17904
17910
  });
17905
17911
  }
17912
+ function getStageClickPoint(instance, pointerPos) {
17913
+ const stage = instance.getStage();
17914
+ const scale = stage.scale();
17915
+ const position = stage.position();
17916
+ const stageClickPoint = {
17917
+ x: (pointerPos.x - position.x) / scale.x,
17918
+ y: (pointerPos.y - position.y) / scale.y
17919
+ };
17920
+ return stageClickPoint;
17921
+ }
17906
17922
 
17907
17923
  //#endregion
17908
17924
  //#region src/actions/selection-tool/constants.ts
@@ -18452,7 +18468,7 @@ var require_throttle = __commonJS({ "../../node_modules/lodash/throttle.js"(expo
18452
18468
  }
18453
18469
  module.exports = throttle;
18454
18470
  } });
18455
- var import_throttle = __toESM(require_throttle());
18471
+ var import_throttle = __toESM(require_throttle(), 1);
18456
18472
 
18457
18473
  //#endregion
18458
18474
  //#region src/nodes/stage/constants.ts
@@ -18717,6 +18733,13 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18717
18733
  };
18718
18734
  tr.on("transform", (0, import_throttle.default)(handleTransform, 50));
18719
18735
  tr.on("transformend", () => {
18736
+ if (tr.nodes().length > 1) {
18737
+ const nodes = tr.nodes();
18738
+ for (const node of nodes) {
18739
+ this.getNodesSelectionFeedbackPlugin()?.showSelectionHalo(node);
18740
+ this.getNodesSelectionFeedbackPlugin()?.updateSelectionHalo(node);
18741
+ }
18742
+ }
18720
18743
  this.triggerSelectedNodesEvent();
18721
18744
  });
18722
18745
  let initialPos = null;
@@ -18732,6 +18755,12 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18732
18755
  e.target.stopDrag();
18733
18756
  return;
18734
18757
  }
18758
+ const nodes = tr.nodes();
18759
+ if (nodes.length > 1) for (const node of nodes) {
18760
+ const originalNodeOpacity = node.getAttrs().opacity ?? 1;
18761
+ node.setAttr("dragStartOpacity", originalNodeOpacity);
18762
+ node.opacity(this.getDragOpacity());
18763
+ }
18735
18764
  e.cancelBubble = true;
18736
18765
  tr.forceUpdate();
18737
18766
  });
@@ -18762,7 +18791,7 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18762
18791
  if (this.isSelecting() && selectedNodes.length > 1) {
18763
18792
  clearContainerTargets(this.instance);
18764
18793
  const layerToMove = containerOverCursor(this.instance, selectedNodes);
18765
- if (layerToMove && !selectionContainsFrames) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
18794
+ if (layerToMove && !selectionContainsFrames) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { node: void 0 });
18766
18795
  }
18767
18796
  tr.forceUpdate();
18768
18797
  };
@@ -18770,6 +18799,13 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18770
18799
  tr.on("dragend", (e) => {
18771
18800
  if (!this.didMove) return;
18772
18801
  e.cancelBubble = true;
18802
+ if (tr.nodes().length > 1) {
18803
+ const nodes$1 = tr.nodes();
18804
+ for (const node of nodes$1) {
18805
+ this.getNodesSelectionFeedbackPlugin()?.showSelectionHalo(node);
18806
+ this.getNodesSelectionFeedbackPlugin()?.updateSelectionHalo(node);
18807
+ }
18808
+ }
18773
18809
  this.instance.getCloningManager().cleanupClones();
18774
18810
  this.getStagePanningPlugin()?.cleanupEdgeMoveIntervals();
18775
18811
  const selectedNodes = tr.nodes();
@@ -18779,6 +18815,12 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18779
18815
  selectionContainsFrames = selectionContainsFrames || hasFrames(node);
18780
18816
  node.updatePosition(node.getAbsolutePosition());
18781
18817
  }
18818
+ const nodes = tr.nodes();
18819
+ if (nodes.length > 1) for (const node of nodes) {
18820
+ const dragStartOpacity = node.getAttr("dragStartOpacity") ?? 1;
18821
+ node.opacity(dragStartOpacity);
18822
+ node.setAttr("dragStartOpacity", void 0);
18823
+ }
18782
18824
  if (this.isSelecting() && tr.nodes().length > 1) {
18783
18825
  const actualCursor = stage.container().style.cursor;
18784
18826
  stage.container().style.cursor = "wait";
@@ -18789,17 +18831,29 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18789
18831
  const nodeUpdatePromise = (node) => {
18790
18832
  return new Promise((resolve) => {
18791
18833
  setTimeout(() => {
18792
- clearContainerTargets(this.instance);
18793
- const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
18794
- if (nodeHandler) this.instance.updateNode(nodeHandler.serialize(node));
18795
- let containerToMove = this.instance.getMainLayer();
18796
- if (layerToMove) containerToMove = layerToMove;
18797
- let moved = false;
18798
- if (containerToMove && !selectionContainsFrames) moved = moveNodeToContainer(this.instance, node, containerToMove);
18799
- if (containerToMove) containerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
18800
- if (!nodeHandler) return resolve();
18801
- toSelect.push(node.getAttrs().id ?? "");
18802
- if (!moved) toUpdate.push(nodeHandler.serialize(node));
18834
+ const isLockedToContainer = node.getAttrs().lockToContainer;
18835
+ if (!isLockedToContainer) {
18836
+ clearContainerTargets(this.instance);
18837
+ const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
18838
+ if (nodeHandler) this.instance.updateNode(nodeHandler.serialize(node));
18839
+ let containerToMove = this.instance.getMainLayer();
18840
+ if (layerToMove) containerToMove = layerToMove;
18841
+ let moved = false;
18842
+ if (containerToMove && !selectionContainsFrames) moved = moveNodeToContainer(this.instance, node, containerToMove);
18843
+ if (containerToMove) containerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { node: void 0 });
18844
+ if (!nodeHandler) return resolve();
18845
+ toSelect.push(node.getAttrs().id ?? "");
18846
+ if (!moved) toUpdate.push(nodeHandler.serialize(node));
18847
+ }
18848
+ if (isLockedToContainer) {
18849
+ clearContainerTargets(this.instance);
18850
+ toSelect.push(node.getAttrs().id ?? "");
18851
+ const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
18852
+ if (nodeHandler) this.instance.updateNode(nodeHandler.serialize(node));
18853
+ if (!nodeHandler) return resolve();
18854
+ toSelect.push(node.getAttrs().id ?? "");
18855
+ toUpdate.push(nodeHandler.serialize(node));
18856
+ }
18803
18857
  resolve();
18804
18858
  }, 0);
18805
18859
  });
@@ -18813,16 +18867,16 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18813
18867
  Promise.allSettled(promises).then((results) => {
18814
18868
  if (results.length > 0) this.instance.updateNodes(toUpdate);
18815
18869
  stage.container().style.cursor = actualCursor;
18870
+ setTimeout(() => {
18871
+ const finalSelectedNodes = [];
18872
+ toSelect.forEach((nodeId) => {
18873
+ const actNode = this.instance.getStage().findOne(`#${nodeId}`);
18874
+ if (actNode) finalSelectedNodes.push(actNode);
18875
+ });
18876
+ tr.nodes(finalSelectedNodes);
18877
+ tr.forceUpdate();
18878
+ }, 0);
18816
18879
  });
18817
- setTimeout(() => {
18818
- const finalSelectedNodes = [];
18819
- toSelect.forEach((nodeId) => {
18820
- const actNode = this.instance.getStage().findOne(`#${nodeId}`);
18821
- if (actNode) finalSelectedNodes.push(actNode);
18822
- });
18823
- tr.nodes(finalSelectedNodes);
18824
- tr.forceUpdate();
18825
- }, 0);
18826
18880
  }
18827
18881
  for (const node of selectedNodes) node.setAttrs({ isCloned: void 0 });
18828
18882
  tr.forceUpdate();
@@ -19425,6 +19479,9 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
19425
19479
  getSelectorConfig() {
19426
19480
  return this.config.selection;
19427
19481
  }
19482
+ getDragOpacity() {
19483
+ return this.config.style.dragOpacity;
19484
+ }
19428
19485
  };
19429
19486
 
19430
19487
  //#endregion
@@ -19924,6 +19981,9 @@ var WeaveNode = class {
19924
19981
  node.handleMouseout = function() {};
19925
19982
  node.handleSelectNode = function() {};
19926
19983
  node.handleDeselectNode = function() {};
19984
+ node.canMoveToContainer = function() {
19985
+ return true;
19986
+ };
19927
19987
  }
19928
19988
  isNodeSelected(ele) {
19929
19989
  const selectionPlugin = this.instance.getPlugin("nodesSelection");
@@ -19942,7 +20002,7 @@ var WeaveNode = class {
19942
20002
  setHoverState(node) {
19943
20003
  const selectionPlugin = this.getSelectionPlugin();
19944
20004
  if (!selectionPlugin) return;
19945
- if (selectionPlugin.isAreaSelecting()) {
20005
+ if (selectionPlugin.getSelectedNodes().length === 1 && node === selectionPlugin.getSelectedNodes()[0] || selectionPlugin.isAreaSelecting()) {
19946
20006
  this.hideHoverState();
19947
20007
  return;
19948
20008
  }
@@ -19986,7 +20046,7 @@ var WeaveNode = class {
19986
20046
  if (nodesSelectionPlugin && this.isSelecting() && this.isNodeSelected(node$1)) nodesSelectionPlugin.getTransformer().forceUpdate();
19987
20047
  if (nodesEdgeSnappingPlugin && transforming && this.isSelecting() && this.isNodeSelected(node$1)) nodesEdgeSnappingPlugin.evaluateGuidelines(e);
19988
20048
  };
19989
- node.on("transform", (0, import_lodash$1.throttle)(handleTransform, 100));
20049
+ node.on("transform", (0, import_lodash.throttle)(handleTransform, 100));
19990
20050
  node.on("transformend", (e) => {
19991
20051
  const node$1 = e.target;
19992
20052
  this.instance.emitEvent("onTransform", null);
@@ -19996,7 +20056,10 @@ var WeaveNode = class {
19996
20056
  if (nodesSnappingPlugin) nodesSnappingPlugin.cleanupGuidelines();
19997
20057
  if (nodesSelectionPlugin) nodesSelectionPlugin.getTransformer().forceUpdate();
19998
20058
  this.scaleReset(node$1);
19999
- this.getNodesSelectionFeedbackPlugin()?.hideSelectionHalo(node$1);
20059
+ if (this.getSelectionPlugin()?.getSelectedNodes().length === 1) {
20060
+ this.getNodesSelectionFeedbackPlugin()?.showSelectionHalo(node$1);
20061
+ this.getNodesSelectionFeedbackPlugin()?.updateSelectionHalo(node$1);
20062
+ }
20000
20063
  const nodeHandler = this.instance.getNodeHandler(node$1.getAttrs().nodeType);
20001
20064
  if (nodeHandler) this.instance.updateNode(nodeHandler.serialize(node$1));
20002
20065
  this.getNodesSelectionPlugin()?.getHoverTransformer().forceUpdate();
@@ -20032,6 +20095,10 @@ var WeaveNode = class {
20032
20095
  }
20033
20096
  const realNodeTarget = this.getRealSelectedNode(nodeTarget);
20034
20097
  if (realNodeTarget.getAttrs().isCloned) return;
20098
+ if (this.getNodesSelectionPlugin()?.getSelectedNodes().length === 1) {
20099
+ realNodeTarget.setAttr("dragStartOpacity", realNodeTarget.opacity());
20100
+ realNodeTarget.opacity(this.getNodesSelectionPlugin()?.getDragOpacity());
20101
+ }
20035
20102
  if (e.evt?.altKey) {
20036
20103
  nodeTarget.setAttrs({ isCloneOrigin: true });
20037
20104
  nodeTarget.setAttrs({ isCloned: false });
@@ -20075,13 +20142,16 @@ var WeaveNode = class {
20075
20142
  if (this.isSelecting() && this.getSelectionPlugin()?.getSelectedNodes().length === 1) {
20076
20143
  clearContainerTargets(this.instance);
20077
20144
  const layerToMove = containerOverCursor(this.instance, [realNodeTarget]);
20078
- if (layerToMove && !hasFrames(realNodeTarget) && realNodeTarget.isDragging()) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
20145
+ if (layerToMove && !hasFrames(realNodeTarget) && realNodeTarget.isDragging() && !realNodeTarget.getAttrs().lockToContainer) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { node: realNodeTarget });
20079
20146
  }
20080
20147
  };
20081
- node.on("dragmove", (0, import_lodash$1.throttle)(handleDragMove, 100));
20148
+ node.on("dragmove", (0, import_lodash.throttle)(handleDragMove, 100));
20082
20149
  node.on("dragend", (e) => {
20083
20150
  const nodeTarget = e.target;
20084
- this.getNodesSelectionFeedbackPlugin()?.hideSelectionHalo(nodeTarget);
20151
+ if (this.getSelectionPlugin()?.getSelectedNodes().length === 1) {
20152
+ this.getNodesSelectionFeedbackPlugin()?.showSelectionHalo(nodeTarget);
20153
+ this.getNodesSelectionFeedbackPlugin()?.updateSelectionHalo(nodeTarget);
20154
+ }
20085
20155
  e.cancelBubble = true;
20086
20156
  if (nodeTarget.getAttrs().isCloneOrigin && originalPosition) {
20087
20157
  nodeTarget.setAbsolutePosition(originalPosition);
@@ -20098,7 +20168,12 @@ var WeaveNode = class {
20098
20168
  }
20099
20169
  this.instance.emitEvent("onDrag", null);
20100
20170
  const realNodeTarget = this.getRealSelectedNode(nodeTarget);
20101
- if (this.isSelecting() && this.getSelectionPlugin()?.getSelectedNodes().length === 1) {
20171
+ if (this.getNodesSelectionPlugin()?.getSelectedNodes().length === 1) {
20172
+ const originalNodeOpacity = realNodeTarget.getAttr("dragStartOpacity") ?? 1;
20173
+ realNodeTarget.setAttrs({ opacity: originalNodeOpacity });
20174
+ realNodeTarget.setAttr("dragStartOpacity", void 0);
20175
+ }
20176
+ if (this.isSelecting() && this.getSelectionPlugin()?.getSelectedNodes().length === 1 && (realNodeTarget.getAttrs().lockToContainer === void 0 || !realNodeTarget.getAttrs().lockToContainer)) {
20102
20177
  clearContainerTargets(this.instance);
20103
20178
  const nodesEdgeSnappingPlugin = this.getNodesEdgeSnappingPlugin();
20104
20179
  const nodesDistanceSnappingPlugin = this.getNodesDistanceSnappingPlugin();
@@ -20110,9 +20185,17 @@ var WeaveNode = class {
20110
20185
  let moved = false;
20111
20186
  if (containerToMove && !hasFrames(node)) moved = moveNodeToContainer(this.instance, realNodeTarget, containerToMove);
20112
20187
  if (realNodeTarget.getAttrs().isCloned) this.instance.getCloningManager().removeClone(realNodeTarget);
20113
- if (containerToMove) containerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
20188
+ if (containerToMove) containerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { node: realNodeTarget });
20114
20189
  if (!moved) this.instance.updateNode(this.serialize(realNodeTarget));
20115
20190
  }
20191
+ if (this.isSelecting() && this.getSelectionPlugin()?.getSelectedNodes().length === 1 && realNodeTarget.getAttrs().lockToContainer) {
20192
+ clearContainerTargets(this.instance);
20193
+ const nodesEdgeSnappingPlugin = this.getNodesEdgeSnappingPlugin();
20194
+ const nodesDistanceSnappingPlugin = this.getNodesDistanceSnappingPlugin();
20195
+ if (nodesEdgeSnappingPlugin) nodesEdgeSnappingPlugin.cleanupGuidelines();
20196
+ if (nodesDistanceSnappingPlugin) nodesDistanceSnappingPlugin.cleanupGuidelines();
20197
+ this.instance.updateNode(this.serialize(realNodeTarget));
20198
+ }
20116
20199
  nodeTarget.setAttrs({ isCloned: void 0 });
20117
20200
  nodeTarget.setAttrs({ isCloneOrigin: void 0 });
20118
20201
  realNodeTarget.setAttrs({ isCloned: void 0 });
@@ -21758,7 +21841,7 @@ var WeaveRegisterManager = class {
21758
21841
 
21759
21842
  //#endregion
21760
21843
  //#region package.json
21761
- var version = "2.2.0";
21844
+ var version = "2.3.1";
21762
21845
 
21763
21846
  //#endregion
21764
21847
  //#region src/managers/setup.ts
@@ -22909,6 +22992,9 @@ var WeaveLayerNode = class extends WeaveNode {
22909
22992
  nodeType = WEAVE_LAYER_NODE_TYPE;
22910
22993
  onRender(props) {
22911
22994
  const layer = new Konva.Layer({ ...props });
22995
+ layer.canMoveToContainer = function() {
22996
+ return true;
22997
+ };
22912
22998
  return layer;
22913
22999
  }
22914
23000
  onUpdate(nodeInstance, nextProps) {
@@ -23304,7 +23390,7 @@ var WeaveTextNode = class extends WeaveNode {
23304
23390
  text.on("transformstart", (e) => {
23305
23391
  this.instance.emitEvent("onTransform", e.target);
23306
23392
  });
23307
- text.on("transform", (0, import_lodash$1.throttle)(handleTextTransform, 50));
23393
+ text.on("transform", (0, import_lodash.throttle)(handleTextTransform, 50));
23308
23394
  text.on("transformend", () => {
23309
23395
  this.instance.emitEvent("onTransform", null);
23310
23396
  });
@@ -24992,6 +25078,9 @@ var WeaveFrameNode = class extends WeaveNode {
24992
25078
  fill: onTargetEnterFill
24993
25079
  });
24994
25080
  });
25081
+ frame.canMoveToContainer = function() {
25082
+ return true;
25083
+ };
24995
25084
  return frame;
24996
25085
  }
24997
25086
  onUpdate(nodeInstance, nextProps) {
@@ -26599,7 +26688,7 @@ var WeaveStageZoomPlugin = class extends WeavePlugin {
26599
26688
  this.config.zoomSteps = [minimumZoom, ...this.config.zoomSteps];
26600
26689
  }
26601
26690
  };
26602
- mainLayer?.on("draw", (0, import_lodash$1.throttle)(handleDraw, 50));
26691
+ mainLayer?.on("draw", (0, import_lodash.throttle)(handleDraw, 50));
26603
26692
  this.setZoom(this.config.zoomSteps[this.actualStep]);
26604
26693
  }
26605
26694
  setZoom(scale, centered = true, pointer) {
@@ -29366,6 +29455,7 @@ const FRAME_TOOL_STATE = {
29366
29455
  //#region src/actions/frame-tool/frame-tool.ts
29367
29456
  var WeaveFrameToolAction = class extends WeaveAction {
29368
29457
  initialized = false;
29458
+ templateId = null;
29369
29459
  onPropsChange = void 0;
29370
29460
  onInit = void 0;
29371
29461
  constructor() {
@@ -29387,6 +29477,9 @@ var WeaveFrameToolAction = class extends WeaveAction {
29387
29477
  opacity: 1
29388
29478
  };
29389
29479
  }
29480
+ setTemplateToUse(templateId) {
29481
+ this.templateId = templateId;
29482
+ }
29390
29483
  setupEvents() {
29391
29484
  const stage = this.instance.getStage();
29392
29485
  window.addEventListener("keydown", (e) => {
@@ -29401,7 +29494,7 @@ var WeaveFrameToolAction = class extends WeaveAction {
29401
29494
  });
29402
29495
  stage.on("pointerclick", () => {
29403
29496
  if (this.state === FRAME_TOOL_STATE.IDLE) return;
29404
- if (this.state === FRAME_TOOL_STATE.ADDING) {
29497
+ if (this.state === FRAME_TOOL_STATE.ADDING && this.templateId === null) {
29405
29498
  this.handleAdding();
29406
29499
  return;
29407
29500
  }
@@ -29415,6 +29508,7 @@ var WeaveFrameToolAction = class extends WeaveAction {
29415
29508
  this.setCursor();
29416
29509
  this.setFocusStage();
29417
29510
  this.instance.emitEvent("onAddingFrame");
29511
+ this.templateId = null;
29418
29512
  this.frameId = null;
29419
29513
  this.clickPoint = null;
29420
29514
  this.setState(FRAME_TOOL_STATE.ADDING);
@@ -29464,6 +29558,7 @@ var WeaveFrameToolAction = class extends WeaveAction {
29464
29558
  this.frameId = null;
29465
29559
  this.container = void 0;
29466
29560
  this.clickPoint = null;
29561
+ this.templateId = null;
29467
29562
  this.setState(FRAME_TOOL_STATE.IDLE);
29468
29563
  }
29469
29564
  setCursor() {
@@ -30317,7 +30412,7 @@ var WeaveStageGridPlugin = class extends WeavePlugin {
30317
30412
  if (!this.enabled || !(this.isSpaceKeyPressed || this.isMouseMiddleButtonPressed || this.moveToolActive)) return;
30318
30413
  this.onRender();
30319
30414
  };
30320
- stage.on("pointermove", (0, import_lodash$1.throttle)(handleMouseMove, 50));
30415
+ stage.on("pointermove", (0, import_lodash.throttle)(handleMouseMove, 50));
30321
30416
  stage.on("pointermove", () => {
30322
30417
  if (this.enabled) this.onRender();
30323
30418
  });
@@ -30626,7 +30721,7 @@ var WeaveStagePanningPlugin = class extends WeavePlugin {
30626
30721
  lastPos = pos;
30627
30722
  this.instance.emitEvent("onStageMove");
30628
30723
  };
30629
- stage.on("pointermove", (0, import_lodash$1.throttle)(handleMouseMove, 50));
30724
+ stage.on("pointermove", (0, import_lodash.throttle)(handleMouseMove, 50));
30630
30725
  stage.on("pointerup", (e) => {
30631
30726
  this.pointers.delete(e.evt.pointerId);
30632
30727
  this.isMouseLeftButtonPressed = false;
@@ -30890,7 +30985,7 @@ var WeaveStageMinimapPlugin = class extends WeavePlugin {
30890
30985
  this.setupMinimap();
30891
30986
  }
30892
30987
  onInit() {
30893
- const throttledUpdateMinimap = (0, import_lodash$1.throttle)(async () => {
30988
+ const throttledUpdateMinimap = (0, import_lodash.throttle)(async () => {
30894
30989
  await this.updateMinimapContent();
30895
30990
  this.updateMinimapViewportReference();
30896
30991
  }, 100);
@@ -31074,9 +31169,7 @@ var WeaveNodesMultiSelectionFeedbackPlugin = class extends WeavePlugin {
31074
31169
  rotation: clone.rotation()
31075
31170
  };
31076
31171
  }
31077
- createSelectionHalo(node) {
31078
- const nodeId = node.getAttrs().id ?? "";
31079
- if (this.selectedHalos[nodeId]) return;
31172
+ getNodeInfo(node) {
31080
31173
  const info = this.getNodeRectInfo(node);
31081
31174
  if (info) {
31082
31175
  const parent = node.getParent();
@@ -31094,6 +31187,14 @@ var WeaveNodesMultiSelectionFeedbackPlugin = class extends WeavePlugin {
31094
31187
  info.y += realParent.y();
31095
31188
  }
31096
31189
  }
31190
+ }
31191
+ return info;
31192
+ }
31193
+ createSelectionHalo(node) {
31194
+ const nodeId = node.getAttrs().id ?? "";
31195
+ if (this.selectedHalos[nodeId]) return;
31196
+ const info = this.getNodeInfo(node);
31197
+ if (info) {
31097
31198
  this.selectedHalos[nodeId] = new Konva.Rect({
31098
31199
  id: `${nodeId}-selection-halo`,
31099
31200
  name: "selection-halo",
@@ -31118,6 +31219,30 @@ var WeaveNodesMultiSelectionFeedbackPlugin = class extends WeavePlugin {
31118
31219
  delete this.selectedHalos[nodeId];
31119
31220
  }
31120
31221
  }
31222
+ updateSelectionHalo(node) {
31223
+ const nodeId = node.getAttrs().id ?? "";
31224
+ if (!this.selectedHalos[nodeId]) return;
31225
+ const info = this.getNodeInfo(node);
31226
+ if (info) {
31227
+ const selectionLayer = this.instance.getSelectionLayer();
31228
+ if (!selectionLayer) return;
31229
+ const groupHalo = selectionLayer.findOne(`#${node.getAttrs().id}-selection-halo`);
31230
+ groupHalo?.setAttrs({
31231
+ x: info.x,
31232
+ y: info.y,
31233
+ width: info.width,
31234
+ height: info.height,
31235
+ rotation: info.rotation
31236
+ });
31237
+ }
31238
+ }
31239
+ showSelectionHalo(node) {
31240
+ const selectionLayer = this.instance.getSelectionLayer();
31241
+ if (selectionLayer) {
31242
+ const groupHalo = selectionLayer.findOne(`#${node.getAttrs().id}-selection-halo`);
31243
+ if (groupHalo) groupHalo.show();
31244
+ }
31245
+ }
31121
31246
  hideSelectionHalo(node) {
31122
31247
  const selectionLayer = this.instance.getSelectionLayer();
31123
31248
  if (selectionLayer) {
@@ -31183,7 +31308,7 @@ var WeaveConnectedUsersPlugin = class extends WeavePlugin {
31183
31308
  newConnectedUsers[userInformation.id] = userInformation;
31184
31309
  }
31185
31310
  }
31186
- if (!(0, import_lodash$1.isEqual)(this.connectedUsers, newConnectedUsers)) this.instance.emitEvent("onConnectedUsersChange", newConnectedUsers);
31311
+ if (!(0, import_lodash.isEqual)(this.connectedUsers, newConnectedUsers)) this.instance.emitEvent("onConnectedUsersChange", newConnectedUsers);
31187
31312
  this.connectedUsers = newConnectedUsers;
31188
31313
  });
31189
31314
  }
@@ -31431,7 +31556,7 @@ var WeaveUsersPointersPlugin = class extends WeavePlugin {
31431
31556
  for (let i = 0; i < inactiveUsers.length; i++) delete this.usersPointers[inactiveUsers[i]];
31432
31557
  this.renderPointers();
31433
31558
  });
31434
- const sendAwarenessUpdateThrottled = (0, import_lodash$1.throttle)(this.sendAwarenessUpdate.bind(this), this.config.awarenessThrottleMs);
31559
+ const sendAwarenessUpdateThrottled = (0, import_lodash.throttle)(this.sendAwarenessUpdate.bind(this), this.config.awarenessThrottleMs);
31435
31560
  stage.on("dragmove", () => {
31436
31561
  const mousePos = stage.getRelativePointerPosition();
31437
31562
  if (mousePos) sendAwarenessUpdateThrottled(mousePos);
@@ -32665,5 +32790,5 @@ if (typeof window === "undefined") {
32665
32790
  }
32666
32791
 
32667
32792
  //#endregion
32668
- 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, 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, IMAGE_TOOL_ACTION_NAME, IMAGE_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_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_DEFAULT_BACKGROUND_COLOR, 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_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_GRID_PLUGIN_KEY, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveNode, WeaveNodesDistanceSnappingPlugin, WeaveNodesEdgeSnappingPlugin, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStore, WeaveStrokeNode, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, canComposite, clearContainerTargets, containerOverCursor, containsNodeDeep, defaultInitialState, getBoundingBox, getExportBoundingBox, getPositionRelativeToContainerOnPosition, getSelectedNodesMetadata, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, intersectArrays, isIOS, isInShadowDOM, isNodeInSelection, isServer, memoize, mergeExceptArrays, moveNodeToContainer, resetScale, setupCanvasBackend, setupSkiaBackend };
32793
+ 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, 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, IMAGE_TOOL_ACTION_NAME, IMAGE_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_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_DEFAULT_BACKGROUND_COLOR, 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_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_GRID_PLUGIN_KEY, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveNode, WeaveNodesDistanceSnappingPlugin, WeaveNodesEdgeSnappingPlugin, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStore, WeaveStrokeNode, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, canComposite, clearContainerTargets, containerOverCursor, containsNodeDeep, defaultInitialState, getBoundingBox, getExportBoundingBox, getPositionRelativeToContainerOnPosition, getSelectedNodesMetadata, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, intersectArrays, isIOS, isInShadowDOM, isNodeInSelection, isServer, memoize, mergeExceptArrays, moveNodeToContainer, resetScale, setupCanvasBackend, setupSkiaBackend };
32669
32794
  //# sourceMappingURL=sdk.node.js.map